partner_chains_demo_node/
chain_spec.rs1use partner_chains_cli::CreateChainSpecConfig;
2use partner_chains_demo_runtime::{
3 AccountId, CrossChainPublic, Signature, WASM_BINARY, opaque::SessionKeys,
4};
5use sc_service::ChainType;
6use sidechain_slots::SlotsPerEpoch;
7use sp_core::{Pair, Public};
8use sp_runtime::traits::{IdentifyAccount, Verify};
9
10pub type ChainSpec = sc_service::GenericChainSpec;
11
12#[derive(Clone, Debug, PartialEq)]
13pub struct AuthorityKeys {
14 pub session: SessionKeys,
15 pub cross_chain: CrossChainPublic,
16}
17
18pub fn get_from_seed<TPublic: Public>(seed: &str) -> <TPublic::Pair as Pair>::Public {
20 TPublic::Pair::from_string(seed, None)
21 .expect("static values are valid; qed")
22 .public()
23}
24
25type AccountPublic = <Signature as Verify>::Signer;
26
27pub fn get_account_id_from_seed<TPublic: Public>(seed: &str) -> AccountId
28where
29 AccountPublic: From<<TPublic::Pair as Pair>::Public>,
30{
31 AccountPublic::from(get_from_seed::<TPublic>(seed)).into_account()
32}
33
34pub fn runtime_wasm() -> &'static [u8] {
35 WASM_BINARY.expect("Runtime wasm not available")
36}
37
38pub fn pc_create_chain_spec(config: &CreateChainSpecConfig<SessionKeys>) -> serde_json::Value {
42 let runtime_genesis_config = partner_chains_demo_runtime::RuntimeGenesisConfig {
43 system: partner_chains_demo_runtime::SystemConfig::default(),
44 balances: partner_chains_demo_runtime::BalancesConfig::default(),
45 aura: partner_chains_demo_runtime::AuraConfig::default(),
46 grandpa: partner_chains_demo_runtime::GrandpaConfig::default(),
47 sudo: partner_chains_demo_runtime::SudoConfig::default(),
48 transaction_payment: Default::default(),
49 session: config.pallet_partner_chains_session_config(),
50 sidechain: config.pallet_sidechain_config(SlotsPerEpoch::default()),
51 pallet_session: Default::default(),
52 session_committee_management: config.pallet_session_validator_management_config(),
53 native_token_management: config.native_token_management_config(),
54 governed_map: config.governed_map_config(),
55 test_helper_pallet: partner_chains_demo_runtime::TestHelperPalletConfig {
56 participation_data_release_period: 30,
57 ..Default::default()
58 },
59 };
60 let genesis_json = serde_json::to_value(runtime_genesis_config)
61 .expect("Genesis config must be serialized correctly");
62 let chain_spec = ChainSpec::builder(runtime_wasm(), None)
63 .with_name("Partner Chains Demo")
64 .with_id("partner_chains_demo")
65 .with_chain_type(ChainType::Live)
66 .with_genesis_config(genesis_json)
67 .build();
68 let raw = false;
69 let chain_spec_str = chain_spec.as_json(raw).expect("Chain spec serialization can not fail");
70 serde_json::from_str(&chain_spec_str).unwrap()
71}