difftreelog
revert chain_spec.rs
in: master
1 file changed
node/cli/src/chain_spec.rsdiffbeforeafterboth1//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 nft_runtime::*;8use nft_data_structs::*;9use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup};10use sc_service::ChainType;11use sp_core::{sr25519, Pair, Public};12use sp_runtime::traits::{IdentifyAccount, Verify};13use std::collections::BTreeMap;1415use serde::{Deserialize, Serialize};16use serde_json::map::Map;1718/// Specialized `ChainSpec`. This is a specialization of the general Substrate ChainSpec type.19pub type ChainSpec = sc_service::GenericChainSpec<nft_runtime::GenesisConfig, Extensions>;2021/// Helper function to generate a crypto pair from seed22pub fn get_from_seed<TPublic: Public>(seed: &str) -> <TPublic::Pair as Pair>::Public {23 TPublic::Pair::from_string(&format!("//{}", seed), None)24 .expect("static values are valid; qed")25 .public()26}2728/// The extensions for the [`ChainSpec`].29#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, ChainSpecGroup, ChainSpecExtension)]30#[serde(deny_unknown_fields)]31pub struct Extensions {32 /// The relay chain of the Parachain.33 pub relay_chain: String,34 /// The id of the Parachain.35 pub para_id: u32,36}3738impl Extensions {39 /// Try to get the extension from the given `ChainSpec`.40 pub fn try_get(chain_spec: &dyn sc_service::ChainSpec) -> Option<&Self> {41 sc_chain_spec::get_extension(chain_spec.extensions())42 }43}4445type AccountPublic = <Signature as Verify>::Signer;4647/// Helper function to generate an account ID from seed48pub fn get_account_id_from_seed<TPublic: Public>(seed: &str) -> AccountId49where50 AccountPublic: From<<TPublic::Pair as Pair>::Public>,51{52 AccountPublic::from(get_from_seed::<TPublic>(seed)).into_account()53}5455pub fn development_config(id: ParaId) -> ChainSpec {56 let mut properties = Map::new();57 properties.insert("tokenSymbol".into(), "testUNQ".into());58 properties.insert("tokenDecimals".into(), 15.into());59 properties.insert("ss58Format".into(), 42.into()); // Generic Substrate wildcard (SS58 checksum preimage)6061 ChainSpec::from_genesis(62 // Name63 "Development",64 // ID65 "dev",66 ChainType::Local,67 move || {68 testnet_genesis(69 // Sudo account70 get_account_id_from_seed::<sr25519::Public>("Alice"),71 vec![72 get_from_seed::<AuraId>("Alice"),73 get_from_seed::<AuraId>("Bob"),74 ],75 // Pre-funded accounts76 vec![77 get_account_id_from_seed::<sr25519::Public>("Alice"),78 get_account_id_from_seed::<sr25519::Public>("Bob"),79 ],80 id,81 )82 },83 // Bootnodes84 vec![],85 // Telemetry86 None,87 // Protocol ID88 None,89 // Properties90 Some(properties),91 // Extensions92 Extensions {93 relay_chain: "rococo-dev".into(),94 para_id: id.into(),95 },96 )97}9899pub fn rococo_local_testnet_config(id: ParaId) -> ChainSpec {100 ChainSpec::from_genesis(101 // Name102 "Unique Testnet @ Rococo Local",103 // ID104 "unique_testnet_rococo",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 id,130 )131 },132 // Bootnodes133 vec![],134 // Telemetry135 None,136 // Protocol ID137 None,138 // Properties139 None,140 // Extensions141 Extensions {142 relay_chain: "rococo-local".into(),143 para_id: id.into(),144 },145 )146}147148pub fn westend_local_testnet_config(id: ParaId) -> ChainSpec {149 let mut properties = Map::new();150 properties.insert("tokenSymbol".into(), "OPLW".into());151 properties.insert("tokenDecimals".into(), 15.into());152 properties.insert("ss58Format".into(), 42.into()); // Generic Substrate wildcard (SS58 checksum preimage)153 154 ChainSpec::from_genesis(155 // Name156 "Unique Testnet @ Westend Local",157 // ID158 "unique_testnet_westend",159 ChainType::Local,160 move || {161 testnet_genesis(162 // Sudo account163 get_account_id_from_seed::<sr25519::Public>("Alice"),164 vec![165 get_from_seed::<AuraId>("Alice"),166 get_from_seed::<AuraId>("Bob"),167 get_from_seed::<AuraId>("Charlie"),168 get_from_seed::<AuraId>("Dave"),169 get_from_seed::<AuraId>("Eve"),170 ],171 // Pre-funded accounts172 vec![173 get_account_id_from_seed::<sr25519::Public>("Alice"),174 get_account_id_from_seed::<sr25519::Public>("Bob"),175 get_account_id_from_seed::<sr25519::Public>("Charlie"),176 get_account_id_from_seed::<sr25519::Public>("Dave"),177 get_account_id_from_seed::<sr25519::Public>("Eve"),178 get_account_id_from_seed::<sr25519::Public>("Ferdie"),179 get_account_id_from_seed::<sr25519::Public>("Alice//stash"),180 get_account_id_from_seed::<sr25519::Public>("Bob//stash"),181 get_account_id_from_seed::<sr25519::Public>("Charlie//stash"),182 get_account_id_from_seed::<sr25519::Public>("Dave//stash"),183 get_account_id_from_seed::<sr25519::Public>("Eve//stash"),184 get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),185 ],186 id,187 )188 },189 // Bootnodes190 vec![],191 // Telemetry192 None,193 // Protocol ID194 None,195 // Properties196 Some(properties),197 // Extensions198 Extensions {199 relay_chain: "westend-local".into(),200 para_id: id.into(),201 },202 )203}204205fn testnet_genesis(206 root_key: AccountId,207 initial_authorities: Vec<AuraId>,208 endowed_accounts: Vec<AccountId>,209 id: ParaId,210) -> GenesisConfig {211 let vested_accounts = vec![get_account_id_from_seed::<sr25519::Public>("Bob")];212213 GenesisConfig {214 system: nft_runtime::SystemConfig {215 code: nft_runtime::WASM_BINARY216 .expect("WASM binary was not build, please build it!")217 .to_vec(),218 changes_trie_config: Default::default(),219 },220 balances: BalancesConfig {221 balances: endowed_accounts222 .iter()223 .cloned()224 .map(|k| (k, 1 << 70))225 .collect(),226 },227 treasury: Default::default(),228 sudo: SudoConfig { key: root_key },229 vesting: VestingConfig {230 vesting: vested_accounts231 .iter()232 .cloned()233 .map(|k| (k, 1000, 100, 1 << 98))234 .collect(),235 },236 nft: NftConfig {237 collection_id: vec![(238 1,239 Collection {240 owner: get_account_id_from_seed::<sr25519::Public>("Alice"),241 mode: CollectionMode::NFT,242 access: AccessMode::Normal,243 decimal_points: 0,244 name: vec![],245 description: vec![],246 token_prefix: vec![],247 mint_mode: false,248 offchain_schema: vec![],249 schema_version: SchemaVersion::default(),250 sponsorship: SponsorshipState::Confirmed(get_account_id_from_seed::<251 sr25519::Public,252 >("Alice")),253 const_on_chain_schema: vec![],254 variable_on_chain_schema: vec![],255 limits: CollectionLimits::default(),256 meta_update_permission: MetaUpdatePermission::ItemOwner,257 transfers_enabled: true,258 },259 )],260 nft_item_id: vec![],261 fungible_item_id: vec![],262 refungible_item_id: vec![],263 },264 parachain_info: nft_runtime::ParachainInfoConfig { parachain_id: id },265 aura: nft_runtime::AuraConfig {266 authorities: initial_authorities,267 },268 aura_ext: Default::default(),269 evm: EVMConfig {270 accounts: BTreeMap::new(),271 },272 ethereum: EthereumConfig {},273 }274}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 nft_runtime::*;8use nft_data_structs::*;9use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup};10use sc_service::ChainType;11use sp_core::{sr25519, Pair, Public};12use sp_runtime::traits::{IdentifyAccount, Verify};13use std::collections::BTreeMap;1415use serde::{Deserialize, Serialize};16use serde_json::map::Map;1718/// Specialized `ChainSpec`. This is a specialization of the general Substrate ChainSpec type.19pub type ChainSpec = sc_service::GenericChainSpec<nft_runtime::GenesisConfig, Extensions>;2021/// Helper function to generate a crypto pair from seed22pub fn get_from_seed<TPublic: Public>(seed: &str) -> <TPublic::Pair as Pair>::Public {23 TPublic::Pair::from_string(&format!("//{}", seed), None)24 .expect("static values are valid; qed")25 .public()26}2728/// The extensions for the [`ChainSpec`].29#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, ChainSpecGroup, ChainSpecExtension)]30#[serde(deny_unknown_fields)]31pub struct Extensions {32 /// The relay chain of the Parachain.33 pub relay_chain: String,34 /// The id of the Parachain.35 pub para_id: u32,36}3738impl Extensions {39 /// Try to get the extension from the given `ChainSpec`.40 pub fn try_get(chain_spec: &dyn sc_service::ChainSpec) -> Option<&Self> {41 sc_chain_spec::get_extension(chain_spec.extensions())42 }43}4445type AccountPublic = <Signature as Verify>::Signer;4647/// Helper function to generate an account ID from seed48pub fn get_account_id_from_seed<TPublic: Public>(seed: &str) -> AccountId49where50 AccountPublic: From<<TPublic::Pair as Pair>::Public>,51{52 AccountPublic::from(get_from_seed::<TPublic>(seed)).into_account()53}5455pub fn development_config(id: ParaId) -> ChainSpec {56 let mut properties = Map::new();57 properties.insert("tokenSymbol".into(), "testUNQ".into());58 properties.insert("tokenDecimals".into(), 15.into());59 properties.insert("ss58Format".into(), 42.into()); // Generic Substrate wildcard (SS58 checksum preimage)6061 ChainSpec::from_genesis(62 // Name63 "Development",64 // ID65 "dev",66 ChainType::Local,67 move || {68 testnet_genesis(69 // Sudo account70 get_account_id_from_seed::<sr25519::Public>("Alice"),71 vec![72 get_from_seed::<AuraId>("Alice"),73 get_from_seed::<AuraId>("Bob"),74 ],75 // Pre-funded accounts76 vec![77 get_account_id_from_seed::<sr25519::Public>("Alice"),78 get_account_id_from_seed::<sr25519::Public>("Bob"),79 ],80 id,81 )82 },83 // Bootnodes84 vec![],85 // Telemetry86 None,87 // Protocol ID88 None,89 // Properties90 Some(properties),91 // Extensions92 Extensions {93 relay_chain: "rococo-dev".into(),94 para_id: id.into(),95 },96 )97}9899pub fn local_testnet_config(id: ParaId) -> 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 id,130 )131 },132 // Bootnodes133 vec![],134 // Telemetry135 None,136 // Protocol ID137 None,138 // Properties139 None,140 // Extensions141 Extensions {142 relay_chain: "rococo-local".into(),143 para_id: id.into(),144 },145 )146}147148fn testnet_genesis(149 root_key: AccountId,150 initial_authorities: Vec<AuraId>,151 endowed_accounts: Vec<AccountId>,152 id: ParaId,153) -> GenesisConfig {154 let vested_accounts = vec![get_account_id_from_seed::<sr25519::Public>("Bob")];155156 GenesisConfig {157 system: nft_runtime::SystemConfig {158 code: nft_runtime::WASM_BINARY159 .expect("WASM binary was not build, please build it!")160 .to_vec(),161 changes_trie_config: Default::default(),162 },163 balances: BalancesConfig {164 balances: endowed_accounts165 .iter()166 .cloned()167 .map(|k| (k, 1 << 70))168 .collect(),169 },170 treasury: Default::default(),171 sudo: SudoConfig { key: root_key },172 vesting: VestingConfig {173 vesting: vested_accounts174 .iter()175 .cloned()176 .map(|k| (k, 1000, 100, 1 << 98))177 .collect(),178 },179 nft: NftConfig {180 collection_id: vec![(181 1,182 Collection {183 owner: get_account_id_from_seed::<sr25519::Public>("Alice"),184 mode: CollectionMode::NFT,185 access: AccessMode::Normal,186 decimal_points: 0,187 name: vec![],188 description: vec![],189 token_prefix: vec![],190 mint_mode: false,191 offchain_schema: vec![],192 schema_version: SchemaVersion::default(),193 sponsorship: SponsorshipState::Confirmed(get_account_id_from_seed::<194 sr25519::Public,195 >("Alice")),196 const_on_chain_schema: vec![],197 variable_on_chain_schema: vec![],198 limits: CollectionLimits::default(),199 meta_update_permission: MetaUpdatePermission::ItemOwner,200 transfers_enabled: true,201 },202 )],203 nft_item_id: vec![],204 fungible_item_id: vec![],205 refungible_item_id: vec![],206 },207 parachain_info: nft_runtime::ParachainInfoConfig { parachain_id: id },208 aura: nft_runtime::AuraConfig {209 authorities: initial_authorities,210 },211 aura_ext: Default::default(),212 evm: EVMConfig {213 accounts: BTreeMap::new(),214 },215 ethereum: EthereumConfig {},216 }217}