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

difftreelog

source

node/src/chain_spec.rs6.6 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 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};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<nft_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(id: ParaId) -> ChainSpec {55	let mut properties = Map::new();56	properties.insert("tokenSymbol".into(), "testUNQ".into());57	properties.insert("tokenDecimals".into(), 15.into());58	properties.insert("ss58Format".into(), 42.into()); // Generic Substrate wildcard (SS58 checksum preimage)5960	ChainSpec::from_genesis(61		// Name62		"Development",63		// ID64		"dev",65		ChainType::Local,66		move || testnet_genesis(67			// Sudo account68			get_account_id_from_seed::<sr25519::Public>("Alice"),69			vec![70				get_from_seed::<AuraId>("Alice"),71				get_from_seed::<AuraId>("Bob"),72			],73			// Pre-funded accounts74			vec![75				get_account_id_from_seed::<sr25519::Public>("Alice"),76				get_account_id_from_seed::<sr25519::Public>("Bob"),77			],78			id,79		),80		// Bootnodes81		vec![],82		// Telemetry83		None,84		// Protocol ID85		None,86		// Properties87		Some(properties),88		// Extensions89		Extensions {90			relay_chain: "rococo-dev".into(),91			para_id: id.into(),92		},93	)94}9596pub fn local_testnet_config(id: ParaId) -> ChainSpec {97	ChainSpec::from_genesis(98		// Name99		"Local Testnet",100		// ID101		"local_testnet",102		ChainType::Local,103		move || testnet_genesis(104			// Sudo account105			get_account_id_from_seed::<sr25519::Public>("Alice"),106			vec![107				get_from_seed::<AuraId>("Alice"),108				get_from_seed::<AuraId>("Bob"),109			],110			// Pre-funded accounts111			vec![112				get_account_id_from_seed::<sr25519::Public>("Alice"),113				get_account_id_from_seed::<sr25519::Public>("Bob"),114				get_account_id_from_seed::<sr25519::Public>("Charlie"),115				get_account_id_from_seed::<sr25519::Public>("Dave"),116				get_account_id_from_seed::<sr25519::Public>("Eve"),117				get_account_id_from_seed::<sr25519::Public>("Ferdie"),118				get_account_id_from_seed::<sr25519::Public>("Alice//stash"),119				get_account_id_from_seed::<sr25519::Public>("Bob//stash"),120				get_account_id_from_seed::<sr25519::Public>("Charlie//stash"),121				get_account_id_from_seed::<sr25519::Public>("Dave//stash"),122				get_account_id_from_seed::<sr25519::Public>("Eve//stash"),123				get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),124			],125			id,126		),127		// Bootnodes128		vec![],129		// Telemetry130		None,131		// Protocol ID132		None,133		// Properties134		None,135		// Extensions136		Extensions {137			relay_chain: "rococo-local".into(),138			para_id: id.into(),139		},140	)141}142143fn testnet_genesis(144    root_key: AccountId,145	initial_authorities: Vec<AuraId>,146    endowed_accounts: Vec<AccountId>,147	id: ParaId,148) -> GenesisConfig {149150	let vested_accounts = vec![151		get_account_id_from_seed::<sr25519::Public>("Bob"),152	];153154    GenesisConfig {155		system: nft_runtime::SystemConfig {156			code: nft_runtime::WASM_BINARY157				.expect("WASM binary was not build, please build it!")158				.to_vec(),159			changes_trie_config: Default::default(),160		},161        pallet_balances: BalancesConfig {162            balances: endowed_accounts163                .iter()164                .cloned()165                .map(|k| (k, 1 << 70))166                .collect(),167        },168		pallet_treasury: Default::default(),169		pallet_sudo: SudoConfig { key: root_key },170		pallet_vesting: VestingConfig {171            vesting: vested_accounts172                .iter()173                .cloned()174                .map(|k| (k, 1000, 100, 1 << 98))175                .collect(),176        },177        pallet_nft: NftConfig {178            collection_id: vec![(179                1,180                Collection {181                    owner: get_account_id_from_seed::<sr25519::Public>("Alice"),182                    mode: CollectionMode::NFT,183                    access: AccessMode::Normal,184                    decimal_points: 0,185                    name: vec![],186                    description: vec![],187                    token_prefix: vec![],188                    mint_mode: false,189					offchain_schema: vec![],190					schema_version: SchemaVersion::default(),191                    sponsorship: SponsorshipState::Confirmed(get_account_id_from_seed::<sr25519::Public>("Alice")),192                    const_on_chain_schema: vec![],193					variable_on_chain_schema: vec![],194					limits: CollectionLimits::default()195                },196            )],197            nft_item_id: vec![],198            fungible_item_id: vec![],199            refungible_item_id: vec![],200            chain_limit: ChainLimits {201                collection_numbers_limit: 100000,202                account_token_ownership_limit: 1000000,203                collections_admins_limit: 5,204                custom_data_limit: 2048,205                nft_sponsor_transfer_timeout: 15,206                fungible_sponsor_transfer_timeout: 15,207				refungible_sponsor_transfer_timeout: 15,208				offchain_schema_limit: 1024,209				variable_on_chain_schema_limit: 1024,210				const_on_chain_schema_limit: 1024,211            },212        },213		parachain_info: nft_runtime::ParachainInfoConfig { parachain_id: id },214		pallet_aura: nft_runtime::AuraConfig {215			authorities: initial_authorities,216		},217		cumulus_pallet_aura_ext: Default::default(),218		pallet_evm: EVMConfig {219			accounts: BTreeMap::new(),220		},221		pallet_ethereum: EthereumConfig {},222    }223}