partner_chains_demo_node/
template_chain_spec.rs

1use crate::chain_spec::*;
2use partner_chains_demo_runtime::{
3	AuraConfig, BalancesConfig, BridgeConfig, GovernedMapConfig, GrandpaConfig,
4	RuntimeGenesisConfig, SessionCommitteeManagementConfig, SessionConfig, SidechainConfig,
5	SudoConfig, SystemConfig, TestHelperPalletConfig,
6};
7use sc_service::ChainType;
8
9/// Produces template chain spec for Partner Chains.
10/// This code should be run by `partner-chains-node wizards chain-spec`, to produce JSON chain spec file.
11/// `initial_validators` fields should be updated by the `partner-chains-node wizards chain-spec`.
12/// Add and modify other fields of `ChainSpec` accordingly to the needs of your chain.
13pub fn chain_spec() -> Result<ChainSpec, envy::Error> {
14	let genesis_utxo = sp_sidechain::read_genesis_utxo_from_env_with_defaults()?;
15	let runtime_genesis_config = RuntimeGenesisConfig {
16		system: SystemConfig { ..Default::default() },
17		balances: BalancesConfig {
18			// Update if any endowed accounts are required.
19			balances: vec![],
20			dev_accounts: None,
21		},
22		aura: AuraConfig { authorities: vec![] },
23		grandpa: GrandpaConfig { authorities: vec![], ..Default::default() },
24		sudo: SudoConfig {
25			// No sudo account by default, please update with your preferences.
26			key: None,
27		},
28		transaction_payment: Default::default(),
29		session: SessionConfig {
30			// Initial validators are meant to be updated in the chain spec file, so it is empty here.
31			initial_validators: vec![],
32		},
33		sidechain: SidechainConfig { genesis_utxo, ..Default::default() },
34		pallet_session: Default::default(),
35		session_committee_management: SessionCommitteeManagementConfig {
36			// Same as SessionConfig
37			initial_authorities: vec![],
38			main_chain_scripts: sp_session_validator_management::MainChainScripts::read_from_env()?,
39		},
40		governed_map: GovernedMapConfig {
41			main_chain_scripts: Some(sp_governed_map::MainChainScriptsV1::read_from_env()?),
42			..Default::default()
43		},
44		test_helper_pallet: TestHelperPalletConfig {
45			participation_data_release_period: 30,
46			..Default::default()
47		},
48		bridge: BridgeConfig {
49			main_chain_scripts: Some(sp_partner_chains_bridge::MainChainScripts::read_from_env()?),
50			initial_checkpoint: Some(genesis_utxo),
51			..Default::default()
52		},
53	};
54	let genesis_json = serde_json::to_value(runtime_genesis_config)
55		.expect("Genesis config must be serialized correctly");
56	Ok(ChainSpec::builder(runtime_wasm(), None)
57		.with_name("Partner Chains Template")
58		.with_id("partner_chains_template")
59		.with_chain_type(ChainType::Live)
60		.with_genesis_config(genesis_json)
61		.build())
62}