partner_chains_demo_node/
staging.rs1use crate::chain_spec::get_account_id_from_seed;
2use crate::chain_spec::*;
3use authority_selection_inherents::CommitteeMember;
4use partner_chains_demo_runtime::{
5 AccountId, AuraConfig, BalancesConfig, GovernedMapConfig, GrandpaConfig,
6 NativeTokenManagementConfig, RuntimeGenesisConfig, SessionCommitteeManagementConfig,
7 SessionConfig, SidechainConfig, SudoConfig, SystemConfig, TestHelperPalletConfig,
8};
9use sc_service::ChainType;
10use sidechain_domain::*;
11use sp_core::bytes::from_hex;
12use sp_core::{ed25519, sr25519};
13use std::str::FromStr;
14
15pub fn authority_keys(
16 aura_pub_key: &str,
17 grandpa_pub_key: &str,
18 sidechain_pub_key: &str,
19) -> AuthorityKeys {
20 let aura_pk = sr25519::Public::from_raw(from_hex(aura_pub_key).unwrap().try_into().unwrap());
21 let granda_pk =
22 ed25519::Public::from_raw(from_hex(grandpa_pub_key).unwrap().try_into().unwrap());
23 let sidechain_pk = sidechain_domain::SidechainPublicKey(from_hex(sidechain_pub_key).unwrap());
24
25 let session_keys = (aura_pk, granda_pk).into();
26 AuthorityKeys { session: session_keys, cross_chain: sidechain_pk.try_into().unwrap() }
27}
28
29pub fn staging_initial_authorities() -> Vec<AuthorityKeys> {
30 vec![
31 authority_keys(
33 "0xba94651de6279a38a416b97b9720c3df76224435e951ac73e9e302a4ee9fcf73",
34 "0xdde2501588713ddad5daf5a898c19d82cd591609c9184679868640c8cfe8287d",
35 "0x03b827f4da9711bab7292e5695576a841a4d20af9a07b1ba7a230168d2a78e9df4",
36 ),
37 authority_keys(
39 "0x36128fff2acc04f206ccaf4e9f8e9995998efced29075a58b7d76d3735c21208",
40 "0x8f9a9856a27cc114ce85b64f41144f0c907c4bd8b3102b083b52b6b61aff6c47",
41 "0x02ef5bcd94d54a18ad199559782cd72ac3ccd850976aaaafbca8f9d2625afbf7c4",
42 ),
43 authority_keys(
45 "0x9a32d3896a56e822321f7bc915befc8ce112c5d67e3c6497295bd3d7b020f94c",
46 "0x4f3c0ecc6dc474f27ad7967f5cdbd50da047ffedbc91b65f5cd247515489c98f",
47 "0x02f2762ab6e1a125dc03908a7b738f8023d13763f28a11d7633c6c8bc463478430",
48 ),
49 authority_keys(
51 "0xc41992b8eb2f3a8a6c46211df584827f9eeb0175e2c75e1242392262b55b6874",
52 "0x34b71fdad96431bf115350d8ad21eec07a2b154ff32dc31125f988e308bebea8",
53 "0x025e19f82c5e2bac5e8869d49ff26359e442628bc5cfa38eeb5275f43d04015da8",
54 ),
55 authority_keys(
57 "0x500d7ff6d903c85db5ee5624df9510c2a085cf30da260166bd370010d0bdc97a",
58 "0xa04d74c1539550876d04e4d2de4e0531087c3b6810ce96ddc16d78ccf4ac4f11",
59 "0x03f38a062a4b372c045c1dddc4fe98a2c9cb1d6eec8bf02f973fd29b1096cd8155",
60 ),
61 ]
62}
63pub fn staging_endowed_accounts() -> Vec<AccountId> {
64 vec![
65 AccountId::from_str("0xba94651de6279a38a416b97b9720c3df76224435e951ac73e9e302a4ee9fcf73")
66 .unwrap(),
67 AccountId::from_str("0x36128fff2acc04f206ccaf4e9f8e9995998efced29075a58b7d76d3735c21208")
68 .unwrap(),
69 AccountId::from_str("0x9a32d3896a56e822321f7bc915befc8ce112c5d67e3c6497295bd3d7b020f94c")
70 .unwrap(),
71 AccountId::from_str("0xc41992b8eb2f3a8a6c46211df584827f9eeb0175e2c75e1242392262b55b6874")
72 .unwrap(),
73 AccountId::from_str("0x500d7ff6d903c85db5ee5624df9510c2a085cf30da260166bd370010d0bdc97a")
74 .unwrap(),
75 AccountId::from_str("0xc2a8354c3928ffacf21eb8b2c3e6bceda9d54b0e2ce10f48fe8b9afafb7d8a3a")
76 .unwrap(),
77 AccountId::from_str("0x22c9f9d51022b7ad2204131e6268ab079c84bcdb44a4c6907affed5779da9c7b")
78 .unwrap(),
79 staging_sudo_key(),
80 AccountId::from_str("5F1N52dZx48UpXNLtcCzSMHZEroqQDuYKfidg46Tp37SjPcE").unwrap(),
83 AccountId::from_str("5C7C2Z5sWbytvHpuLTvzKunnnRwQxft1jiqrLD5rhucQ5S9X").unwrap(),
85 ]
86}
87
88pub fn staging_sudo_key() -> AccountId {
89 get_account_id_from_seed::<sr25519::Public>(
90 "assist draw loud island six improve van gas slam urban penalty lyrics",
91 )
92}
93
94pub fn staging_config() -> Result<ChainSpec, envy::Error> {
95 Ok(ChainSpec::builder(runtime_wasm(), None)
96 .with_name("Staging")
97 .with_id("staging")
98 .with_chain_type(ChainType::Local)
99 .with_genesis_config(staging_genesis(
100 staging_initial_authorities(),
102 Some(staging_sudo_key()),
104 staging_endowed_accounts(),
106 true,
107 )?)
108 .build())
109}
110
111pub fn staging_genesis(
113 initial_authorities: Vec<AuthorityKeys>,
114 root_key: Option<AccountId>,
115 endowed_accounts: Vec<AccountId>,
116 _enable_println: bool,
117) -> Result<serde_json::Value, envy::Error> {
118 let config = RuntimeGenesisConfig {
119 system: SystemConfig { ..Default::default() },
120 balances: BalancesConfig {
121 balances: endowed_accounts.iter().cloned().map(|k| (k, 1 << 60)).collect(),
123 dev_accounts: None,
124 },
125 aura: AuraConfig { authorities: vec![] },
126 grandpa: GrandpaConfig { authorities: vec![], ..Default::default() },
127 sudo: SudoConfig {
128 key: root_key,
130 },
131 transaction_payment: Default::default(),
132 session: SessionConfig {
133 initial_validators: initial_authorities
134 .iter()
135 .map(|authority_keys| {
136 (authority_keys.cross_chain.clone().into(), authority_keys.session.clone())
137 })
138 .collect(),
139 },
140 sidechain: SidechainConfig {
141 genesis_utxo: sp_sidechain::read_genesis_utxo_from_env_with_defaults()?,
142 ..Default::default()
143 },
144 pallet_session: Default::default(),
145 session_committee_management: SessionCommitteeManagementConfig {
146 initial_authorities: initial_authorities
147 .into_iter()
148 .map(|keys| CommitteeMember::permissioned(keys.cross_chain, keys.session))
149 .collect(),
150 main_chain_scripts: sp_session_validator_management::MainChainScripts::read_from_env()?,
151 },
152 native_token_management: NativeTokenManagementConfig {
153 main_chain_scripts: Some(sp_native_token_management::MainChainScripts::read_from_env()?),
154 ..Default::default()
155 },
156 governed_map: GovernedMapConfig {
157 main_chain_scripts: Some(Default::default()),
158 ..Default::default()
159 },
160 test_helper_pallet: TestHelperPalletConfig {
161 participation_data_release_period: 30,
162 ..Default::default()
163 },
164 };
165
166 Ok(serde_json::to_value(config).expect("Genesis config must be serialized correctly"))
167}