123456use 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};121314151617pub type ChainSpec = sc_service::GenericChainSpec<GenesisConfig>;181920pub 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;272829pub 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}353637pub 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() -> ChainSpec {42 ChainSpec::from_genesis(43 "Development",44 "dev",45 ChainType::Development,46 || {47 testnet_genesis(48 vec![authority_keys_from_seed("Alice")],49 get_account_id_from_seed::<sr25519::Public>("Alice"),50 vec![51 get_account_id_from_seed::<sr25519::Public>("Alice"),52 get_account_id_from_seed::<sr25519::Public>("Bob"),53 get_account_id_from_seed::<sr25519::Public>("Alice//stash"),54 get_account_id_from_seed::<sr25519::Public>("Bob//stash"),55 ],56 true,57 )58 },59 vec![],60 None,61 None,62 None,63 None,64 )65}6667pub fn local_testnet_config() -> ChainSpec {68 ChainSpec::from_genesis(69 "Local Testnet",70 "local_testnet",71 ChainType::Local,72 || {73 testnet_genesis(74 vec![75 authority_keys_from_seed("Alice"),76 authority_keys_from_seed("Bob"),77 ],78 get_account_id_from_seed::<sr25519::Public>("Alice"),79 vec![80 get_account_id_from_seed::<sr25519::Public>("Alice"),81 get_account_id_from_seed::<sr25519::Public>("Bob"),82 get_account_id_from_seed::<sr25519::Public>("Charlie"),83 get_account_id_from_seed::<sr25519::Public>("Dave"),84 get_account_id_from_seed::<sr25519::Public>("Eve"),85 get_account_id_from_seed::<sr25519::Public>("Ferdie"),86 get_account_id_from_seed::<sr25519::Public>("Alice//stash"),87 get_account_id_from_seed::<sr25519::Public>("Bob//stash"),88 get_account_id_from_seed::<sr25519::Public>("Charlie//stash"),89 get_account_id_from_seed::<sr25519::Public>("Dave//stash"),90 get_account_id_from_seed::<sr25519::Public>("Eve//stash"),91 get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),92 ],93 true,94 )95 },96 vec![],97 None,98 None,99 None,100 None,101 )102}103104fn testnet_genesis(105 initial_authorities: Vec<(AuraId, GrandpaId)>,106 root_key: AccountId,107 endowed_accounts: Vec<AccountId>,108 enable_println: bool,109) -> GenesisConfig {110 GenesisConfig {111 system: Some(SystemConfig {112 code: WASM_BINARY.to_vec(),113 changes_trie_config: Default::default(),114 }),115 balances: Some(BalancesConfig {116 balances: endowed_accounts117 .iter()118 .cloned()119 .map(|k| (k, 1 << 100))120 .collect(),121 }),122 aura: Some(AuraConfig {123 authorities: initial_authorities.iter().map(|x| (x.0.clone())).collect(),124 }),125 grandpa: Some(GrandpaConfig {126 authorities: initial_authorities127 .iter()128 .map(|x| (x.1.clone(), 1))129 .collect(),130 }),131 sudo: Some(SudoConfig { key: root_key }),132 nft: Some(NftConfig {133 collection: vec![(1, CollectionType { 134 owner: get_account_id_from_seed::<sr25519::Public>("Alice"),135 mode: CollectionMode::NFT(50),136 access: AccessMode::Normal,137 decimal_points: 0,138 name: vec!(),139 description: vec!(),140 token_prefix: vec!(),141 custom_data_size: 50,142 mint_mode: false,143 offchain_schema: vec!(),144 sponsor: get_account_id_from_seed::<sr25519::Public>("Alice"),145 unconfirmed_sponsor: get_account_id_from_seed::<sr25519::Public>("Alice"),146 })],147 nft_item_id: vec!(),148 fungible_item_id: vec!(),149 refungible_item_id: vec!(),150 }),151 contracts: Some(ContractsConfig {152 current_schedule: ContractsSchedule {153 enable_println,154 ..Default::default()155 },156 }),157 }158}