git.delta.rocks / unique-network / refs/commits / e3f5fcba47ee

difftreelog

source

node/cli/src/chain_spec.rs6.3 KiBsourcehistory
1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//56use cumulus_primitives_core::ParaId;7use unique_runtime::*;8use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup};9use sc_service::ChainType;10use sp_core::{sr25519, Pair, Public};11use sp_runtime::traits::{IdentifyAccount, Verify};12use std::collections::BTreeMap;1314use serde::{Deserialize, Serialize};15use serde_json::map::Map;1617/// Specialized `ChainSpec`. This is a specialization of the general Substrate ChainSpec type.18pub type ChainSpec = sc_service::GenericChainSpec<unique_runtime::GenesisConfig, Extensions>;1920/// Helper function to generate a crypto pair from seed21pub fn get_from_seed<TPublic: Public>(seed: &str) -> <TPublic::Pair as Pair>::Public {22	TPublic::Pair::from_string(&format!("//{}", seed), None)23		.expect("static values are valid; qed")24		.public()25}2627/// The extensions for the [`ChainSpec`].28#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, ChainSpecGroup, ChainSpecExtension)]29#[serde(deny_unknown_fields)]30pub struct Extensions {31	/// The relay chain of the Parachain.32	pub relay_chain: String,33	/// The id of the Parachain.34	pub para_id: u32,35}3637impl Extensions {38	/// Try to get the extension from the given `ChainSpec`.39	pub fn try_get(chain_spec: &dyn sc_service::ChainSpec) -> Option<&Self> {40		sc_chain_spec::get_extension(chain_spec.extensions())41	}42}4344type AccountPublic = <Signature as Verify>::Signer;4546/// Helper function to generate an account ID from seed47pub fn get_account_id_from_seed<TPublic: Public>(seed: &str) -> AccountId48where49	AccountPublic: From<<TPublic::Pair as Pair>::Public>,50{51	AccountPublic::from(get_from_seed::<TPublic>(seed)).into_account()52}5354pub fn development_config() -> ChainSpec {55	let mut properties = Map::new();56	properties.insert("tokenSymbol".into(), "OPL".into());57	properties.insert("tokenDecimals".into(), 15.into());58	properties.insert("ss58Format".into(), 42.into());5960	ChainSpec::from_genesis(61		// Name62		"Development",63		// ID64		"dev",65		ChainType::Local,66		move || {67			testnet_genesis(68				// Sudo account69				get_account_id_from_seed::<sr25519::Public>("Alice"),70				vec![71					get_from_seed::<AuraId>("Alice"),72					get_from_seed::<AuraId>("Bob"),73				],74				// Pre-funded accounts75				vec![76					get_account_id_from_seed::<sr25519::Public>("Alice"),77					get_account_id_from_seed::<sr25519::Public>("Bob"),78				],79				1000.into(),80			)81		},82		// Bootnodes83		vec![],84		// Telemetry85		None,86		// Protocol ID87		None,88		None,89		// Properties90		Some(properties),91		// Extensions92		Extensions {93			relay_chain: "rococo-dev".into(),94			para_id: 1000,95		},96	)97}9899pub fn local_testnet_rococo_config() -> ChainSpec {100	ChainSpec::from_genesis(101		// Name102		"Local Testnet",103		// ID104		"local_testnet",105		ChainType::Local,106		move || {107			testnet_genesis(108				// Sudo account109				get_account_id_from_seed::<sr25519::Public>("Alice"),110				vec![111					get_from_seed::<AuraId>("Alice"),112					get_from_seed::<AuraId>("Bob"),113				],114				// Pre-funded accounts115				vec![116					get_account_id_from_seed::<sr25519::Public>("Alice"),117					get_account_id_from_seed::<sr25519::Public>("Bob"),118					get_account_id_from_seed::<sr25519::Public>("Charlie"),119					get_account_id_from_seed::<sr25519::Public>("Dave"),120					get_account_id_from_seed::<sr25519::Public>("Eve"),121					get_account_id_from_seed::<sr25519::Public>("Ferdie"),122					get_account_id_from_seed::<sr25519::Public>("Alice//stash"),123					get_account_id_from_seed::<sr25519::Public>("Bob//stash"),124					get_account_id_from_seed::<sr25519::Public>("Charlie//stash"),125					get_account_id_from_seed::<sr25519::Public>("Dave//stash"),126					get_account_id_from_seed::<sr25519::Public>("Eve//stash"),127					get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),128				],129				1000.into(),130			)131		},132		// Bootnodes133		vec![],134		// Telemetry135		None,136		// Protocol ID137		None,138		None,139		// Properties140		None,141		// Extensions142		Extensions {143			relay_chain: "rococo-local".into(),144			para_id: 1000,145		},146	)147}148149pub fn local_testnet_westend_config() -> ChainSpec {150	ChainSpec::from_genesis(151		// Name152		"Local Testnet",153		// ID154		"local_testnet",155		ChainType::Local,156		move || {157			testnet_genesis(158				// Sudo account159				get_account_id_from_seed::<sr25519::Public>("Alice"),160				vec![161					get_from_seed::<AuraId>("Alice"),162					get_from_seed::<AuraId>("Bob"),163					get_from_seed::<AuraId>("Charlie"),164					get_from_seed::<AuraId>("Dave"),165					get_from_seed::<AuraId>("Eve"),166				],167				// Pre-funded accounts168				vec![169					get_account_id_from_seed::<sr25519::Public>("Alice"),170					get_account_id_from_seed::<sr25519::Public>("Bob"),171					get_account_id_from_seed::<sr25519::Public>("Charlie"),172					get_account_id_from_seed::<sr25519::Public>("Dave"),173					get_account_id_from_seed::<sr25519::Public>("Eve"),174					get_account_id_from_seed::<sr25519::Public>("Ferdie"),175					get_account_id_from_seed::<sr25519::Public>("Alice//stash"),176					get_account_id_from_seed::<sr25519::Public>("Bob//stash"),177					get_account_id_from_seed::<sr25519::Public>("Charlie//stash"),178					get_account_id_from_seed::<sr25519::Public>("Dave//stash"),179					get_account_id_from_seed::<sr25519::Public>("Eve//stash"),180					get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),181				],182				1000.into(),183			)184		},185		// Bootnodes186		vec![],187		// Telemetry188		None,189		// Protocol ID190		None,191		None,192		// Properties193		None,194		// Extensions195		Extensions {196			relay_chain: "westend-local".into(),197			para_id: 1000,198		},199	)200}201202fn testnet_genesis(203	root_key: AccountId,204	initial_authorities: Vec<AuraId>,205	endowed_accounts: Vec<AccountId>,206	id: ParaId,207) -> GenesisConfig {208	GenesisConfig {209		system: unique_runtime::SystemConfig {210			code: unique_runtime::WASM_BINARY211				.expect("WASM binary was not build, please build it!")212				.to_vec(),213		},214		balances: BalancesConfig {215			balances: endowed_accounts216				.iter()217				.cloned()218				// 1e13 UNQ219				.map(|k| (k, 1 << 100))220				.collect(),221		},222		treasury: Default::default(),223		sudo: SudoConfig {224			key: Some(root_key),225		},226		vesting: VestingConfig { vesting: vec![] },227		parachain_info: unique_runtime::ParachainInfoConfig { parachain_id: id },228		parachain_system: Default::default(),229		aura: unique_runtime::AuraConfig {230			authorities: initial_authorities,231		},232		aura_ext: Default::default(),233		evm: EVMConfig {234			accounts: BTreeMap::new(),235		},236		ethereum: EthereumConfig {},237	}238}