git.delta.rocks / unique-network / refs/commits / 4eced78a47cf

difftreelog

source

node/src/chain_spec.rs4.8 KiBsourcehistory
1use nft_runtime::{2    AccountId, AuraConfig, BalancesConfig, GenesisConfig, GrandpaConfig, Signature, SudoConfig,3    SystemConfig, WASM_BINARY,4};5use nft_runtime::{ContractsConfig, ContractsSchedule};6use sc_service::ChainType;7use sp_consensus_aura::sr25519::AuthorityId as AuraId;8use sp_core::{sr25519, Pair, Public};9use sp_finality_grandpa::AuthorityId as GrandpaId;10use sp_runtime::traits::{IdentifyAccount, Verify};1112// Note this is the URL for the telemetry server13//const STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/";1415/// Specialized `ChainSpec`. This is a specialization of the general Substrate ChainSpec type.16pub type ChainSpec = sc_service::GenericChainSpec<GenesisConfig>;1718/// Helper function to generate a crypto pair from seed19pub fn get_from_seed<TPublic: Public>(seed: &str) -> <TPublic::Pair as Pair>::Public {20    TPublic::Pair::from_string(&format!("//{}", seed), None)21        .expect("static values are valid; qed")22        .public()23}2425type AccountPublic = <Signature as Verify>::Signer;2627/// Helper function to generate an account ID from seed28pub fn get_account_id_from_seed<TPublic: Public>(seed: &str) -> AccountId29where30    AccountPublic: From<<TPublic::Pair as Pair>::Public>,31{32    AccountPublic::from(get_from_seed::<TPublic>(seed)).into_account()33}3435/// Helper function to generate an authority key for Aura36pub fn authority_keys_from_seed(s: &str) -> (AuraId, GrandpaId) {37    (get_from_seed::<AuraId>(s), get_from_seed::<GrandpaId>(s))38}3940pub fn development_config() -> ChainSpec {41    ChainSpec::from_genesis(42        "Development",43        "dev",44        ChainType::Development,45        || {46            testnet_genesis(47                vec![authority_keys_from_seed("Alice")],48                get_account_id_from_seed::<sr25519::Public>("Alice"),49                vec![50                    get_account_id_from_seed::<sr25519::Public>("Alice"),51                    get_account_id_from_seed::<sr25519::Public>("Bob"),52                    get_account_id_from_seed::<sr25519::Public>("Alice//stash"),53                    get_account_id_from_seed::<sr25519::Public>("Bob//stash"),54                ],55                true,56            )57        },58        vec![],59        None,60        None,61        None,62        None,63    )64}6566pub fn local_testnet_config() -> ChainSpec {67    ChainSpec::from_genesis(68        "Local Testnet",69        "local_testnet",70        ChainType::Local,71        || {72            testnet_genesis(73                vec![74                    authority_keys_from_seed("Alice"),75                    authority_keys_from_seed("Bob"),76                ],77                get_account_id_from_seed::<sr25519::Public>("Alice"),78                vec![79                    get_account_id_from_seed::<sr25519::Public>("Alice"),80                    get_account_id_from_seed::<sr25519::Public>("Bob"),81                    get_account_id_from_seed::<sr25519::Public>("Charlie"),82                    get_account_id_from_seed::<sr25519::Public>("Dave"),83                    get_account_id_from_seed::<sr25519::Public>("Eve"),84                    get_account_id_from_seed::<sr25519::Public>("Ferdie"),85                    get_account_id_from_seed::<sr25519::Public>("Alice//stash"),86                    get_account_id_from_seed::<sr25519::Public>("Bob//stash"),87                    get_account_id_from_seed::<sr25519::Public>("Charlie//stash"),88                    get_account_id_from_seed::<sr25519::Public>("Dave//stash"),89                    get_account_id_from_seed::<sr25519::Public>("Eve//stash"),90                    get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),91                ],92                true,93            )94        },95        vec![],96        None,97        None,98        None,99        None,100    )101}102103fn testnet_genesis(104    initial_authorities: Vec<(AuraId, GrandpaId)>,105    root_key: AccountId,106    endowed_accounts: Vec<AccountId>,107    enable_println: bool,108) -> GenesisConfig {109    GenesisConfig {110        system: Some(SystemConfig {111            code: WASM_BINARY.to_vec(),112            changes_trie_config: Default::default(),113        }),114        balances: Some(BalancesConfig {115            balances: endowed_accounts116                .iter()117                .cloned()118                .map(|k| (k, 1 << 100))119                .collect(),120        }),121        aura: Some(AuraConfig {122            authorities: initial_authorities.iter().map(|x| (x.0.clone())).collect(),123        }),124        grandpa: Some(GrandpaConfig {125            authorities: initial_authorities126                .iter()127                .map(|x| (x.1.clone(), 1))128                .collect(),129        }),130        sudo: Some(SudoConfig { key: root_key }),131        contracts: Some(ContractsConfig {132            current_schedule: ContractsSchedule {133                enable_println,134                ..Default::default()135            },136        }),137    }138}