git.delta.rocks / unique-network / refs/commits / 7ca598f7f6b8

difftreelog

fix use ChainSpecBuilder

Daniel Shiposha2024-05-27parent: #078678e.patch.diff
in: master

8 files changed

modifiedCargo.lockdiffbeforeafterboth
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -6380,6 +6380,7 @@
  "sp-block-builder",
  "sp-consensus-aura",
  "sp-core",
+ "sp-genesis-builder",
  "sp-inherents",
  "sp-io",
  "sp-offchain",
@@ -10261,6 +10262,7 @@
  "sp-block-builder",
  "sp-consensus-aura",
  "sp-core",
+ "sp-genesis-builder",
  "sp-inherents",
  "sp-io",
  "sp-offchain",
@@ -15134,6 +15136,7 @@
  "sp-block-builder",
  "sp-consensus-aura",
  "sp-core",
+ "sp-genesis-builder",
  "sp-inherents",
  "sp-io",
  "sp-offchain",
modifiedCargo.tomldiffbeforeafterboth
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -181,6 +181,7 @@
 sp-trie = { default-features = false, version = "32.0.0" }
 sp-version = { default-features = false, version = "32.0.0" }
 sp-weights = { default-features = false, version = "30.0.0" }
+sp-genesis-builder = { default-features = false, version = "0.10.0" }
 staging-parachain-info = { default-features = false, version = "0.10.0" }
 staging-xcm = { default-features = false, version = "10.0.0" }
 staging-xcm-builder = { default-features = false, version = "10.0.0" }
@@ -217,4 +218,5 @@
 log = { version = "0.4.20", default-features = false }
 num_enum = { version = "0.7.0", default-features = false }
 serde = { default-features = false, features = ['derive'], version = "1.0.188" }
+serde_json = "1"
 smallvec = "1.11.1"
modifiednode/cli/src/chain_spec.rsdiffbeforeafterboth
14// You should have received a copy of the GNU General Public License14// You should have received a copy of the GNU General Public License
15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
16
17use std::collections::BTreeMap;
1816
19use default_runtime::WASM_BINARY;17use default_runtime::WASM_BINARY;
20#[cfg(all(not(feature = "unique-runtime"), not(feature = "quartz-runtime")))]18#[cfg(all(not(feature = "unique-runtime"), not(feature = "quartz-runtime")))]
24use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup};22use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup};
25use sc_service::ChainType;23use sc_service::ChainType;
26use serde::{Deserialize, Serialize};24use serde::{Deserialize, Serialize};
27use serde_json::map::Map;25use serde_json::{json, map::Map};
28use sp_core::{sr25519, Pair, Public};26use sp_core::{sr25519, Pair, Public};
29use sp_runtime::traits::{IdentifyAccount, Verify};27use sp_runtime::traits::{IdentifyAccount, Verify};
30#[cfg(feature = "unique-runtime")]28#[cfg(feature = "unique-runtime")]
142 AccountPublic::from(get_from_seed::<TPublic>(seed)).into_account()140 AccountPublic::from(get_from_seed::<TPublic>(seed)).into_account()
143}141}
144142
145#[cfg(not(feature = "unique-runtime"))]
146macro_rules! testnet_genesis {
147 (
148 $runtime:path,
149 $root_key:expr,143pub fn test_config(chain_id: &str, relay_chain: &str) -> DefaultChainSpec {
150 $initial_invulnerables:expr,
151 $endowed_accounts:expr,
152 $id:expr
153 ) => {{
154 use $runtime::*;
155
156 RuntimeGenesisConfig {
157 system: Default::default(),144 DefaultChainSpec::builder(
145 WASM_BINARY.expect("WASM binary was not build, please build it!"),
158 balances: BalancesConfig {146 Extensions {
159 balances: $endowed_accounts147 relay_chain: relay_chain.into(),
160 .iter()
161 .cloned()
162 // 1e13 UNQ
163 .map(|k| (k, 1 << 100))
164 .collect(),148 para_id: PARA_ID,
165 },149 },
166 sudo: SudoConfig {150 )
167 key: Some($root_key),
168 },
169
170 vesting: VestingConfig { vesting: vec![] },151 .with_id(&format!(
171 parachain_info: ParachainInfoConfig {152 "{}_{}",
153 default_runtime::VERSION.spec_name,
154 chain_id
155 ))
172 parachain_id: $id.into(),156 .with_name(&format!(
157 "{}{}",
173 ..Default::default()158 default_runtime::VERSION.spec_name.to_uppercase(),
174 },
175 collator_selection: CollatorSelectionConfig {
176 invulnerables: $initial_invulnerables
177 .iter()
178 .cloned()159 if cfg!(feature = "unique-runtime") {
160 ""
161 } else {
162 " by UNIQUE"
163 }
164 ))
179 .map(|(acc, _)| acc)165 .with_properties(chain_properties())
180 .collect(),166 .with_chain_type(ChainType::Development)
181 },
182 session: SessionConfig {
183 keys: $initial_invulnerables
184 .into_iter()167 .with_genesis_config_patch(genesis_patch())
185 .map(|(acc, aura)| {
186 (
187 acc.clone(), // account id
188 acc, // validator id
189 SessionKeys { aura }, // session keys
190 )
191 })
192 .collect(),168 .build()
193 },
194 evm: EVMConfig {
195 accounts: BTreeMap::new(),
196 ..Default::default()
197 },
198 ..Default::default()
199 }
200 }};169}
201}
202
203#[cfg(feature = "unique-runtime")]
204macro_rules! testnet_genesis {
205 (
206 $runtime:path,
207 $root_key:expr,
208 $initial_invulnerables:expr,
209 $endowed_accounts:expr,
210 $id:expr
211 ) => {{
212 use $runtime::*;
213
214 RuntimeGenesisConfig {
215 system: Default::default(),
216 balances: BalancesConfig {
217 balances: $endowed_accounts
218 .iter()
219 .cloned()
220 // 1e13 UNQ
221 .map(|k| (k, 1 << 100))
222 .collect(),
223 },
224 sudo: SudoConfig {
225 key: Some($root_key),
226 },
227 vesting: VestingConfig { vesting: vec![] },
228 parachain_info: ParachainInfoConfig {
229 parachain_id: $id.into(),
230 ..Default::default()
231 },
232 aura: AuraConfig {
233 authorities: $initial_invulnerables
234 .into_iter()
235 .map(|(_, aura)| aura)
236 .collect(),
237 },
238 evm: EVMConfig {
239 accounts: BTreeMap::new(),
240 ..Default::default()
241 },
242 ..Default::default()
243 }
244 }};
245}
246170
247pub fn development_config() -> DefaultChainSpec {171fn genesis_patch() -> serde_json::Value {
248 let mut properties = Map::new();
249 properties.insert("tokenSymbol".into(), default_runtime::TOKEN_SYMBOL.into());172 use default_runtime::*;
173
250 properties.insert("tokenDecimals".into(), default_runtime::DECIMALS.into());174 let invulnerables = ["Alice", "Bob"];
251 properties.insert(175
252 "ss58Format".into(),
253 default_runtime::SS58Prefix::get().into(),
254 );
255
256 DefaultChainSpec::from_genesis(
257 // Name
258 format!(
259 "{}{}",
260 default_runtime::VERSION.spec_name.to_uppercase(),
261 if cfg!(feature = "unique-runtime") {
262 ""
263 } else {
264 " by UNIQUE"
265 }
266 )
267 .as_str(),
268 // ID
269 format!("{}_dev", default_runtime::VERSION.spec_name).as_str(),176 #[allow(unused_mut)]
270 ChainType::Local,
271 move || {
272 testnet_genesis!(177 let mut patch = json!({
178 "parachainInfo": {
273 default_runtime,179 "parachainId": PARA_ID,
274 // Sudo account180 },
181
182 "aura": {
183 "authorities": invulnerables.into_iter()
275 get_account_id_from_seed::<sr25519::Public>("Alice"),184 .map(|name| get_from_seed::<AuraId>(name))
276 [185 .collect::<Vec<_>>(),
186 },
187
188 "session": {
189 "keys": invulnerables.into_iter()
277 (190 .map(|name| {
278 get_account_id_from_seed::<sr25519::Public>("Alice"),191 let account = get_account_id_from_seed::<sr25519::Public>(name);
279 get_from_seed::<AuraId>("Alice"),192 let aura = get_from_seed::<AuraId>(name);
193
194 (
195 /* account id: */ account.clone(),
196 /* validator id: */ account,
197 /* session keys: */ SessionKeys { aura },
198 )
280 ),199 })
281 (200 .collect::<Vec<_>>()
201 },
202
203 "sudo": {
282 get_account_id_from_seed::<sr25519::Public>("Bob"),204 "key": get_account_id_from_seed::<sr25519::Public>("Alice"),
283 get_from_seed::<AuraId>("Bob"),
284 ),
285 ],205 },
286 // Pre-funded accounts206
207 "balances": {
287 vec![208 "balances": &[
288 get_account_id_from_seed::<sr25519::Public>("Alice"),209 get_account_id_from_seed::<sr25519::Public>("Alice"),
289 get_account_id_from_seed::<sr25519::Public>("Bob"),210 get_account_id_from_seed::<sr25519::Public>("Bob"),
290 get_account_id_from_seed::<sr25519::Public>("Charlie"),211 get_account_id_from_seed::<sr25519::Public>("Charlie"),
297 get_account_id_from_seed::<sr25519::Public>("Dave//stash"),218 get_account_id_from_seed::<sr25519::Public>("Dave//stash"),
298 get_account_id_from_seed::<sr25519::Public>("Eve//stash"),219 get_account_id_from_seed::<sr25519::Public>("Eve//stash"),
299 get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),220 get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),
300 ],221 ].into_iter()
301 PARA_ID222 .map(|k| (k, /* ~1.2e+12 UNQ */ 1u128 << 100))
223 .collect::<Vec<_>>(),
224 },
302 )225 });
303 },226
304 // Bootnodes227 #[cfg(feature = "unique-runtime")]
305 vec![],228 {
306 // Telemetry229 patch
307 None,230 .as_object_mut()
308 // Protocol ID231 .expect("the genesis patch is always an object; qed")
309 None,232 .remove("session");
310 None,233 }
311 // Properties234
312 Some(properties),235 patch
313 // Extensions236}
314 Extensions {
315 relay_chain: "rococo-dev".into(),
316 para_id: PARA_ID,
317 },
318 WASM_BINARY.expect("WASM binary was not build, please build it!"),
319 )
320}
321237
322pub fn local_testnet_config() -> DefaultChainSpec {238fn chain_properties() -> sc_chain_spec::Properties {
323 let mut properties = Map::new();239 let mut properties = Map::new();
324 properties.insert("tokenSymbol".into(), default_runtime::TOKEN_SYMBOL.into());240 properties.insert("tokenSymbol".into(), default_runtime::TOKEN_SYMBOL.into());
325 properties.insert("tokenDecimals".into(), default_runtime::DECIMALS.into());241 properties.insert("tokenDecimals".into(), default_runtime::DECIMALS.into());
328 default_runtime::SS58Prefix::get().into(),244 default_runtime::SS58Prefix::get().into(),
329 );245 );
330246
331 DefaultChainSpec::from_genesis(
332 // Name
333 format!(
334 "{}{}",
335 default_runtime::VERSION.impl_name.to_uppercase(),
336 if cfg!(feature = "unique-runtime") {
337 ""
338 } else {
339 " by UNIQUE"
340 }
341 )
342 .as_str(),
343 // ID
344 format!("{}_local", default_runtime::VERSION.spec_name).as_str(),
345 ChainType::Local,
346 move || {
347 testnet_genesis!(
348 default_runtime,
349 // Sudo account
350 get_account_id_from_seed::<sr25519::Public>("Alice"),
351 [
352 (
353 get_account_id_from_seed::<sr25519::Public>("Alice"),
354 get_from_seed::<AuraId>("Alice"),
355 ),
356 (
357 get_account_id_from_seed::<sr25519::Public>("Bob"),
358 get_from_seed::<AuraId>("Bob"),
359 ),
360 ],
361 // Pre-funded accounts
362 vec![
363 get_account_id_from_seed::<sr25519::Public>("Alice"),
364 get_account_id_from_seed::<sr25519::Public>("Bob"),
365 get_account_id_from_seed::<sr25519::Public>("Charlie"),
366 get_account_id_from_seed::<sr25519::Public>("Dave"),
367 get_account_id_from_seed::<sr25519::Public>("Eve"),
368 get_account_id_from_seed::<sr25519::Public>("Ferdie"),
369 get_account_id_from_seed::<sr25519::Public>("Alice//stash"),
370 get_account_id_from_seed::<sr25519::Public>("Bob//stash"),
371 get_account_id_from_seed::<sr25519::Public>("Charlie//stash"),
372 get_account_id_from_seed::<sr25519::Public>("Dave//stash"),
373 get_account_id_from_seed::<sr25519::Public>("Eve//stash"),
374 get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),
375 ],
376 PARA_ID
377 )
378 },
379 // Bootnodes
380 vec![],
381 // Telemetry
382 None,
383 // Protocol ID
384 None,
385 None,
386 // Properties
387 Some(properties),247 properties
388 // Extensions
389 Extensions {
390 relay_chain: "westend-local".into(),
391 para_id: PARA_ID,
392 },
393 WASM_BINARY.expect("WASM binary was not build, please build it!"),
394 )
395}248}
396249
modifiednode/cli/src/command.rsdiffbeforeafterboth
--- a/node/cli/src/command.rs
+++ b/node/cli/src/command.rs
@@ -49,9 +49,7 @@
 use crate::{
 	chain_spec::{self, RuntimeIdentification, ServiceId, ServiceIdentification},
 	cli::{Cli, RelayChainCli, Subcommand},
-	service::{
-		new_partial, start_dev_node, start_node, OpalRuntimeExecutor, ParachainHostFunctions,
-	},
+	service::{new_partial, start_dev_node, start_node, OpalRuntimeExecutor},
 };
 
 macro_rules! no_runtime_err {
@@ -65,8 +63,8 @@
 
 fn load_spec(id: &str) -> std::result::Result<Box<dyn sc_service::ChainSpec>, String> {
 	Ok(match id {
-		"dev" => Box::new(chain_spec::development_config()),
-		"" | "local" => Box::new(chain_spec::local_testnet_config()),
+		"dev" => Box::new(chain_spec::test_config("dev", "rococo-dev")),
+		"" | "local" => Box::new(chain_spec::test_config("local", "westend-local")),
 		path => {
 			let path = std::path::PathBuf::from(path);
 			#[allow(clippy::redundant_clone)]
@@ -352,6 +350,8 @@
 			use frame_benchmarking_cli::{BenchmarkCmd, SUBSTRATE_REFERENCE_HARDWARE};
 			use polkadot_cli::Block;
 
+			use crate::service::ParachainHostFunctions;
+
 			type Header = <Block as sp_runtime::traits::Block>::Header;
 			type Hasher = <Header as sp_runtime::traits::Header>::Hashing;
 
@@ -403,7 +403,7 @@
 			use std::{future::Future, pin::Pin};
 
 			use polkadot_cli::Block;
-			use sc_executor::{sp_wasm_interface::ExtendedHostFunctions, NativeExecutionDispatch};
+			use sc_executor::NativeExecutionDispatch;
 			use try_runtime_cli::block_building_info::timestamp_with_aura_info;
 
 			let runner = cli.create_runner(cmd)?;
modifiedruntime/common/runtime_apis.rsdiffbeforeafterboth
--- a/runtime/common/runtime_apis.rs
+++ b/runtime/common/runtime_apis.rs
@@ -43,6 +43,7 @@
 			ApplyExtrinsicResult, DispatchError, ExtrinsicInclusionMode,
 		};
 		use frame_support::{
+			genesis_builder_helper::{build_config, create_default_config},
 			pallet_prelude::Weight,
 			traits::OnFinalize,
 		};
@@ -710,6 +711,16 @@
 					)
 				}
 			}
+
+			impl sp_genesis_builder::GenesisBuilder<Block> for Runtime {
+				fn create_default_config() -> Vec<u8> {
+					create_default_config::<RuntimeGenesisConfig>()
+				}
+
+				fn build_config(config: Vec<u8>) -> sp_genesis_builder::Result {
+					build_config::<RuntimeGenesisConfig>(config)
+				}
+			}
 		}
 	}
 }
modifiedruntime/opal/Cargo.tomldiffbeforeafterboth
--- a/runtime/opal/Cargo.toml
+++ b/runtime/opal/Cargo.toml
@@ -146,6 +146,7 @@
 	'sp-storage/std',
 	'sp-transaction-pool/std',
 	'sp-version/std',
+	'sp-genesis-builder/std',
 	'staging-parachain-info/std',
 	'staging-xcm-builder/std',
 	'staging-xcm-executor/std',
@@ -295,6 +296,7 @@
 sp-storage = { workspace = true }
 sp-transaction-pool = { workspace = true }
 sp-version = { workspace = true }
+sp-genesis-builder = { workspace = true }
 staging-parachain-info = { workspace = true }
 staging-xcm = { workspace = true }
 staging-xcm-builder = { workspace = true }
modifiedruntime/quartz/Cargo.tomldiffbeforeafterboth
--- a/runtime/quartz/Cargo.toml
+++ b/runtime/quartz/Cargo.toml
@@ -145,6 +145,7 @@
 	'sp-std/std',
 	'sp-transaction-pool/std',
 	'sp-version/std',
+	'sp-genesis-builder/std',
 	'staging-parachain-info/std',
 	'staging-xcm-builder/std',
 	'staging-xcm-executor/std',
@@ -283,6 +284,7 @@
 sp-storage = { workspace = true }
 sp-transaction-pool = { workspace = true }
 sp-version = { workspace = true }
+sp-genesis-builder = { workspace = true }
 staging-parachain-info = { workspace = true }
 staging-xcm = { workspace = true }
 staging-xcm-builder = { workspace = true }
modifiedruntime/unique/Cargo.tomldiffbeforeafterboth
--- a/runtime/unique/Cargo.toml
+++ b/runtime/unique/Cargo.toml
@@ -143,6 +143,7 @@
 	'sp-std/std',
 	'sp-transaction-pool/std',
 	'sp-version/std',
+	'sp-genesis-builder/std',
 	'staging-parachain-info/std',
 	'staging-xcm-builder/std',
 	'staging-xcm-executor/std',
@@ -287,6 +288,7 @@
 sp-storage = { workspace = true }
 sp-transaction-pool = { workspace = true }
 sp-version = { workspace = true }
+sp-genesis-builder = { workspace = true }
 staging-parachain-info = { workspace = true }
 staging-xcm = { workspace = true }
 staging-xcm-builder = { workspace = true }