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![(134 1,135 CollectionType {136 owner: get_account_id_from_seed::<sr25519::Public>("Alice"),137 mode: CollectionMode::NFT(50),138 access: AccessMode::Normal,139 decimal_points: 0,140 name: vec![],141 description: vec![],142 token_prefix: vec![],143 custom_data_size: 50,144 mint_mode: false,145 offchain_schema: vec![],146 sponsor: get_account_id_from_seed::<sr25519::Public>("Alice"),147 unconfirmed_sponsor: get_account_id_from_seed::<sr25519::Public>("Alice"),148 },149 )],150 nft_item_id: vec![],151 fungible_item_id: vec![],152 refungible_item_id: vec![],153 chain_limit: ChainLimits {154 collection_numbers_limit: 10,155 account_token_ownership_limit: 10,156 collections_admins_limit: 5,157 custom_data_limit: 2048,158 nft_sponsor_transfer_timeout: 15,159 fungible_sponsor_transfer_timeout: 15,160 refungible_sponsor_transfer_timeout: 15,161 },162 }),163 contracts: Some(ContractsConfig {164 current_schedule: ContractsSchedule {165 enable_println,166 ..Default::default()167 },168 }),169 }170}