git.delta.rocks / unique-network / refs/commits / 3950758e00c3

difftreelog

source

node/src/chain_spec.rs6.3 KiBsourcehistory
1// use nft_runtime::{2//     AccountId, AuraConfig, BalancesConfig, GenesisConfig, GrandpaConfig, Signature, SudoConfig,3//     SystemConfig, WASM_BINARY,4// };5// use nft_runtime::{ContractsConfig, ContractsSchedule, NftConfig, CollectionType};6use nft_runtime::*;7use sc_service::ChainType;8use sp_consensus_aura::sr25519::AuthorityId as AuraId;9use sp_core::{sr25519, Pair, Public};10use sp_finality_grandpa::AuthorityId as GrandpaId;11use sp_runtime::traits::{IdentifyAccount, Verify};1213// Note this is the URL for the telemetry server14//const STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/";1516/// Specialized `ChainSpec`. This is a specialization of the general Substrate ChainSpec type.17pub type ChainSpec = sc_service::GenericChainSpec<GenesisConfig>;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}2526type AccountPublic = <Signature as Verify>::Signer;2728/// Helper function to generate an account ID from seed29pub fn get_account_id_from_seed<TPublic: Public>(seed: &str) -> AccountId30where31    AccountPublic: From<<TPublic::Pair as Pair>::Public>,32{33    AccountPublic::from(get_from_seed::<TPublic>(seed)).into_account()34}3536/// Helper function to generate an authority key for Aura37pub fn authority_keys_from_seed(s: &str) -> (AuraId, GrandpaId) {38    (get_from_seed::<AuraId>(s), get_from_seed::<GrandpaId>(s))39}4041pub fn development_config() -> Result<ChainSpec, String> {42	let wasm_binary = WASM_BINARY.ok_or("Development wasm binary not available".to_string())?;4344	Ok(ChainSpec::from_genesis(45		// Name46		"Development",47		// ID48		"dev",49		ChainType::Development,50		move || testnet_genesis(51			wasm_binary,52			// Initial PoA authorities53			vec![54				authority_keys_from_seed("Alice"),55			],56			// Sudo account57			get_account_id_from_seed::<sr25519::Public>("Alice"),58			// Pre-funded accounts59			vec![60				get_account_id_from_seed::<sr25519::Public>("Alice"),61				get_account_id_from_seed::<sr25519::Public>("Bob"),62				get_account_id_from_seed::<sr25519::Public>("Alice//stash"),63				get_account_id_from_seed::<sr25519::Public>("Bob//stash"),64			],65			true,66		),67		// Bootnodes68		vec![],69		// Telemetry70		None,71		// Protocol ID72		None,73		// Properties74		None,75		// Extensions76		None,77	))78}7980pub fn local_testnet_config() -> Result<ChainSpec, String> {81	let wasm_binary = WASM_BINARY.ok_or("Development wasm binary not available".to_string())?;8283	Ok(ChainSpec::from_genesis(84		// Name85		"Local Testnet",86		// ID87		"local_testnet",88		ChainType::Local,89		move || testnet_genesis(90			wasm_binary,91			// Initial PoA authorities92			vec![93				authority_keys_from_seed("Alice"),94				authority_keys_from_seed("Bob"),95			],96			// Sudo account97			get_account_id_from_seed::<sr25519::Public>("Alice"),98			// Pre-funded accounts99			vec![100				get_account_id_from_seed::<sr25519::Public>("Alice"),101				get_account_id_from_seed::<sr25519::Public>("Bob"),102				get_account_id_from_seed::<sr25519::Public>("Charlie"),103				get_account_id_from_seed::<sr25519::Public>("Dave"),104				get_account_id_from_seed::<sr25519::Public>("Eve"),105				get_account_id_from_seed::<sr25519::Public>("Ferdie"),106				get_account_id_from_seed::<sr25519::Public>("Alice//stash"),107				get_account_id_from_seed::<sr25519::Public>("Bob//stash"),108				get_account_id_from_seed::<sr25519::Public>("Charlie//stash"),109				get_account_id_from_seed::<sr25519::Public>("Dave//stash"),110				get_account_id_from_seed::<sr25519::Public>("Eve//stash"),111				get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),112			],113			true,114		),115		// Bootnodes116		vec![],117		// Telemetry118		None,119		// Protocol ID120		None,121		// Properties122		None,123		// Extensions124		None,125	))126}127128fn testnet_genesis(129    wasm_binary: &[u8],130    initial_authorities: Vec<(AuraId, GrandpaId)>,131    root_key: AccountId,132    endowed_accounts: Vec<AccountId>,133    enable_println: bool,134) -> GenesisConfig {135    GenesisConfig {136        system: Some(SystemConfig {137            code: wasm_binary.to_vec(),138            changes_trie_config: Default::default(),139        }),140        pallet_balances: Some(BalancesConfig {141            balances: endowed_accounts142                .iter()143                .cloned()144                .map(|k| (k, 1 << 100))145                .collect(),146        }),147        pallet_aura: Some(AuraConfig {148            authorities: initial_authorities.iter().map(|x| (x.0.clone())).collect(),149        }),150        pallet_grandpa: Some(GrandpaConfig {151            authorities: initial_authorities152                .iter()153                .map(|x| (x.1.clone(), 1))154                .collect(),155        }),156        pallet_sudo: Some(SudoConfig { key: root_key }),157        pallet_nft: Some(NftConfig {158            collection: vec![(159                1,160                CollectionType {161                    owner: get_account_id_from_seed::<sr25519::Public>("Alice"),162                    mode: CollectionMode::NFT,163                    access: AccessMode::Normal,164                    decimal_points: 0,165                    name: vec![],166                    description: vec![],167                    token_prefix: vec![],168                    mint_mode: false,169                    offchain_schema: vec![],170                    sponsor: get_account_id_from_seed::<sr25519::Public>("Alice"),171                    unconfirmed_sponsor: get_account_id_from_seed::<sr25519::Public>("Alice"),172                    const_on_chain_schema: vec![],173                    variable_on_chain_schema: vec![]174                },175            )],176            nft_item_id: vec![],177            fungible_item_id: vec![],178            refungible_item_id: vec![],179            chain_limit: ChainLimits {180                collection_numbers_limit: 10,181                account_token_ownership_limit: 10,182                collections_admins_limit: 5,183                custom_data_limit: 2048,184                nft_sponsor_transfer_timeout: 15,185                fungible_sponsor_transfer_timeout: 15,186                refungible_sponsor_transfer_timeout: 15,187            },188        }),189        pallet_contracts: Some(ContractsConfig {190            current_schedule: ContractsSchedule {191                enable_println,192                ..Default::default()193            },194        }),195    }196}