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

difftreelog

source

node/src/chain_spec.rs6.5 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 sc_chain_spec::{ChainSpecExtension, ChainSpecGroup};9use sc_service::ChainType;10use sp_core::{sr25519, Pair, Public};11use sp_runtime::traits::{IdentifyAccount, Verify};1213use serde::{Deserialize, Serialize};14use serde_json::map::Map;1516/// Specialized `ChainSpec`. This is a specialization of the general Substrate ChainSpec type.17pub type ChainSpec = sc_service::GenericChainSpec<nft_runtime::GenesisConfig, Extensions>;1819/// Helper function to generate a crypto pair from seed20pub fn get_from_seed<TPublic: Public>(seed: &str) -> <TPublic::Pair as Pair>::Public {21    TPublic::Pair::from_string(&format!("//{}", seed), None)22        .expect("static values are valid; qed")23        .public()24}2526/// The extensions for the [`ChainSpec`].27#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, ChainSpecGroup, ChainSpecExtension)]28#[serde(deny_unknown_fields)]29pub struct Extensions {30	/// The relay chain of the Parachain.31	pub relay_chain: String,32	/// The id of the Parachain.33	pub para_id: u32,34}3536impl Extensions {37	/// Try to get the extension from the given `ChainSpec`.38	pub fn try_get(chain_spec: &dyn sc_service::ChainSpec) -> Option<&Self> {39		sc_chain_spec::get_extension(chain_spec.extensions())40	}41}4243type AccountPublic = <Signature as Verify>::Signer;4445/// Helper function to generate an account ID from seed46pub fn get_account_id_from_seed<TPublic: Public>(seed: &str) -> AccountId47where48    AccountPublic: From<<TPublic::Pair as Pair>::Public>,49{50    AccountPublic::from(get_from_seed::<TPublic>(seed)).into_account()51}5253pub fn development_config(id: ParaId) -> ChainSpec {54	let mut properties = Map::new();55	properties.insert("tokenSymbol".into(), "testUNQ".into());56	properties.insert("tokenDecimals".into(), 15.into());57	properties.insert("ss58Format".into(), 42.into()); // Generic Substrate wildcard (SS58 checksum preimage)5859	ChainSpec::from_genesis(60		// Name61		"Development",62		// ID63		"dev",64		ChainType::Local,65		move || testnet_genesis(66			// Sudo account67			get_account_id_from_seed::<sr25519::Public>("Alice"),68			vec![69				get_from_seed::<AuraId>("Alice"),70				get_from_seed::<AuraId>("Bob"),71			],72			// Pre-funded accounts73			vec![74				get_account_id_from_seed::<sr25519::Public>("Alice"),75				get_account_id_from_seed::<sr25519::Public>("Bob"),76			],77			id,78		),79		// Bootnodes80		vec![],81		// Telemetry82		None,83		// Protocol ID84		None,85		// Properties86		Some(properties),87		// Extensions88		Extensions {89			relay_chain: "rococo-dev".into(),90			para_id: id.into(),91		},92	)93}9495pub fn local_testnet_config(id: ParaId) -> ChainSpec {96	ChainSpec::from_genesis(97		// Name98		"Local Testnet",99		// ID100		"local_testnet",101		ChainType::Local,102		move || testnet_genesis(103			// Sudo account104			get_account_id_from_seed::<sr25519::Public>("Alice"),105			vec![106				get_from_seed::<AuraId>("Alice"),107				get_from_seed::<AuraId>("Bob"),108			],109			// Pre-funded accounts110			vec![111				get_account_id_from_seed::<sr25519::Public>("Alice"),112				get_account_id_from_seed::<sr25519::Public>("Bob"),113				get_account_id_from_seed::<sr25519::Public>("Charlie"),114				get_account_id_from_seed::<sr25519::Public>("Dave"),115				get_account_id_from_seed::<sr25519::Public>("Eve"),116				get_account_id_from_seed::<sr25519::Public>("Ferdie"),117				get_account_id_from_seed::<sr25519::Public>("Alice//stash"),118				get_account_id_from_seed::<sr25519::Public>("Bob//stash"),119				get_account_id_from_seed::<sr25519::Public>("Charlie//stash"),120				get_account_id_from_seed::<sr25519::Public>("Dave//stash"),121				get_account_id_from_seed::<sr25519::Public>("Eve//stash"),122				get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),123			],124			id,125		),126		// Bootnodes127		vec![],128		// Telemetry129		None,130		// Protocol ID131		None,132		// Properties133		None,134		// Extensions135		Extensions {136			relay_chain: "rococo-local".into(),137			para_id: id.into(),138		},139	)140}141142fn testnet_genesis(143    root_key: AccountId,144	initial_authorities: Vec<AuraId>,145    endowed_accounts: Vec<AccountId>,146	id: ParaId,147) -> GenesisConfig {148149	let vested_accounts = vec![150		get_account_id_from_seed::<sr25519::Public>("Bob"),151	];152153    GenesisConfig {154		system: nft_runtime::SystemConfig {155			code: nft_runtime::WASM_BINARY156				.expect("WASM binary was not build, please build it!")157				.to_vec(),158			changes_trie_config: Default::default(),159		},160        pallet_balances: BalancesConfig {161            balances: endowed_accounts162                .iter()163                .cloned()164                .map(|k| (k, 1 << 100))165                .collect(),166        },167		pallet_treasury: Default::default(),168		pallet_sudo: SudoConfig { key: root_key },169		pallet_vesting: VestingConfig {170            vesting: vested_accounts171                .iter()172                .cloned()173                .map(|k| (k, 1000, 100, 1 << 98))174                .collect(),175        },176        pallet_nft: NftConfig {177            collection_id: vec![(178                1,179                Collection {180                    owner: get_account_id_from_seed::<sr25519::Public>("Alice"),181                    mode: CollectionMode::NFT,182                    access: AccessMode::Normal,183                    decimal_points: 0,184                    name: vec![],185                    description: vec![],186                    token_prefix: vec![],187                    mint_mode: false,188					offchain_schema: vec![],189					schema_version: SchemaVersion::default(),190                    sponsorship: SponsorshipState::Confirmed(get_account_id_from_seed::<sr25519::Public>("Alice")),191                    const_on_chain_schema: vec![],192					variable_on_chain_schema: vec![],193					limits: CollectionLimits::default()194                },195            )],196            nft_item_id: vec![],197            fungible_item_id: vec![],198            refungible_item_id: vec![],199            chain_limit: ChainLimits {200                collection_numbers_limit: 100000,201                account_token_ownership_limit: 1000000,202                collections_admins_limit: 5,203                custom_data_limit: 2048,204                nft_sponsor_transfer_timeout: 15,205                fungible_sponsor_transfer_timeout: 15,206				refungible_sponsor_transfer_timeout: 15,207				offchain_schema_limit: 1024,208				variable_on_chain_schema_limit: 1024,209				const_on_chain_schema_limit: 1024,210            },211        },212		parachain_info: nft_runtime::ParachainInfoConfig { parachain_id: id },213		pallet_aura: nft_runtime::AuraConfig {214			authorities: initial_authorities,215		},216		cumulus_pallet_aura_ext: Default::default(),217    }218}