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
--- a/node/cli/src/chain_spec.rs
+++ b/node/cli/src/chain_spec.rs
@@ -14,8 +14,6 @@
 // You should have received a copy of the GNU General Public License
 // along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
 
-use std::collections::BTreeMap;
-
 use default_runtime::WASM_BINARY;
 #[cfg(all(not(feature = "unique-runtime"), not(feature = "quartz-runtime")))]
 pub use opal_runtime as default_runtime;
@@ -24,7 +22,7 @@
 use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup};
 use sc_service::ChainType;
 use serde::{Deserialize, Serialize};
-use serde_json::map::Map;
+use serde_json::{json, map::Map};
 use sp_core::{sr25519, Pair, Public};
 use sp_runtime::traits::{IdentifyAccount, Verify};
 #[cfg(feature = "unique-runtime")]
@@ -142,184 +140,102 @@
 	AccountPublic::from(get_from_seed::<TPublic>(seed)).into_account()
 }
 
-#[cfg(not(feature = "unique-runtime"))]
-macro_rules! testnet_genesis {
-	(
-		$runtime:path,
-		$root_key:expr,
-		$initial_invulnerables:expr,
-		$endowed_accounts:expr,
-		$id:expr
-	) => {{
-		use $runtime::*;
-
-		RuntimeGenesisConfig {
-			system: Default::default(),
-			balances: BalancesConfig {
-				balances: $endowed_accounts
-					.iter()
-					.cloned()
-					// 1e13 UNQ
-					.map(|k| (k, 1 << 100))
-					.collect(),
-			},
-			sudo: SudoConfig {
-				key: Some($root_key),
-			},
-
-			vesting: VestingConfig { vesting: vec![] },
-			parachain_info: ParachainInfoConfig {
-				parachain_id: $id.into(),
-				..Default::default()
-			},
-			collator_selection: CollatorSelectionConfig {
-				invulnerables: $initial_invulnerables
-					.iter()
-					.cloned()
-					.map(|(acc, _)| acc)
-					.collect(),
-			},
-			session: SessionConfig {
-				keys: $initial_invulnerables
-					.into_iter()
-					.map(|(acc, aura)| {
-						(
-							acc.clone(),          // account id
-							acc,                  // validator id
-							SessionKeys { aura }, // session keys
-						)
-					})
-					.collect(),
-			},
-			evm: EVMConfig {
-				accounts: BTreeMap::new(),
-				..Default::default()
-			},
-			..Default::default()
+pub fn test_config(chain_id: &str, relay_chain: &str) -> DefaultChainSpec {
+	DefaultChainSpec::builder(
+		WASM_BINARY.expect("WASM binary was not build, please build it!"),
+		Extensions {
+			relay_chain: relay_chain.into(),
+			para_id: PARA_ID,
+		},
+	)
+	.with_id(&format!(
+		"{}_{}",
+		default_runtime::VERSION.spec_name,
+		chain_id
+	))
+	.with_name(&format!(
+		"{}{}",
+		default_runtime::VERSION.spec_name.to_uppercase(),
+		if cfg!(feature = "unique-runtime") {
+			""
+		} else {
+			" by UNIQUE"
 		}
-	}};
+	))
+	.with_properties(chain_properties())
+	.with_chain_type(ChainType::Development)
+	.with_genesis_config_patch(genesis_patch())
+	.build()
 }
 
-#[cfg(feature = "unique-runtime")]
-macro_rules! testnet_genesis {
-	(
-		$runtime:path,
-		$root_key:expr,
-		$initial_invulnerables:expr,
-		$endowed_accounts:expr,
-		$id:expr
-	) => {{
-		use $runtime::*;
+fn genesis_patch() -> serde_json::Value {
+	use default_runtime::*;
 
-		RuntimeGenesisConfig {
-			system: Default::default(),
-			balances: BalancesConfig {
-				balances: $endowed_accounts
-					.iter()
-					.cloned()
-					// 1e13 UNQ
-					.map(|k| (k, 1 << 100))
-					.collect(),
-			},
-			sudo: SudoConfig {
-				key: Some($root_key),
-			},
-			vesting: VestingConfig { vesting: vec![] },
-			parachain_info: ParachainInfoConfig {
-				parachain_id: $id.into(),
-				..Default::default()
-			},
-			aura: AuraConfig {
-				authorities: $initial_invulnerables
-					.into_iter()
-					.map(|(_, aura)| aura)
-					.collect(),
-			},
-			evm: EVMConfig {
-				accounts: BTreeMap::new(),
-				..Default::default()
-			},
-			..Default::default()
-		}
-	}};
-}
+	let invulnerables = ["Alice", "Bob"];
 
-pub fn development_config() -> DefaultChainSpec {
-	let mut properties = Map::new();
-	properties.insert("tokenSymbol".into(), default_runtime::TOKEN_SYMBOL.into());
-	properties.insert("tokenDecimals".into(), default_runtime::DECIMALS.into());
-	properties.insert(
-		"ss58Format".into(),
-		default_runtime::SS58Prefix::get().into(),
-	);
+	#[allow(unused_mut)]
+	let mut patch = json!({
+		"parachainInfo": {
+			"parachainId": PARA_ID,
+		},
 
-	DefaultChainSpec::from_genesis(
-		// Name
-		format!(
-			"{}{}",
-			default_runtime::VERSION.spec_name.to_uppercase(),
-			if cfg!(feature = "unique-runtime") {
-				""
-			} else {
-				" by UNIQUE"
-			}
-		)
-		.as_str(),
-		// ID
-		format!("{}_dev", default_runtime::VERSION.spec_name).as_str(),
-		ChainType::Local,
-		move || {
-			testnet_genesis!(
-				default_runtime,
-				// Sudo account
-				get_account_id_from_seed::<sr25519::Public>("Alice"),
-				[
+		"aura": {
+			"authorities": invulnerables.into_iter()
+				.map(|name| get_from_seed::<AuraId>(name))
+				.collect::<Vec<_>>(),
+		},
+
+		"session": {
+			"keys": invulnerables.into_iter()
+				.map(|name| {
+					let account = get_account_id_from_seed::<sr25519::Public>(name);
+					let aura = get_from_seed::<AuraId>(name);
+
 					(
-						get_account_id_from_seed::<sr25519::Public>("Alice"),
-						get_from_seed::<AuraId>("Alice"),
-					),
-					(
-						get_account_id_from_seed::<sr25519::Public>("Bob"),
-						get_from_seed::<AuraId>("Bob"),
-					),
-				],
-				// Pre-funded accounts
-				vec![
-					get_account_id_from_seed::<sr25519::Public>("Alice"),
-					get_account_id_from_seed::<sr25519::Public>("Bob"),
-					get_account_id_from_seed::<sr25519::Public>("Charlie"),
-					get_account_id_from_seed::<sr25519::Public>("Dave"),
-					get_account_id_from_seed::<sr25519::Public>("Eve"),
-					get_account_id_from_seed::<sr25519::Public>("Ferdie"),
-					get_account_id_from_seed::<sr25519::Public>("Alice//stash"),
-					get_account_id_from_seed::<sr25519::Public>("Bob//stash"),
-					get_account_id_from_seed::<sr25519::Public>("Charlie//stash"),
-					get_account_id_from_seed::<sr25519::Public>("Dave//stash"),
-					get_account_id_from_seed::<sr25519::Public>("Eve//stash"),
-					get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),
-				],
-				PARA_ID
-			)
+						/*   account id: */ account.clone(),
+						/* validator id: */ account,
+						/* session keys: */ SessionKeys { aura },
+					)
+				})
+				.collect::<Vec<_>>()
+		},
+
+		"sudo": {
+			"key": get_account_id_from_seed::<sr25519::Public>("Alice"),
 		},
-		// Bootnodes
-		vec![],
-		// Telemetry
-		None,
-		// Protocol ID
-		None,
-		None,
-		// Properties
-		Some(properties),
-		// Extensions
-		Extensions {
-			relay_chain: "rococo-dev".into(),
-			para_id: PARA_ID,
+
+		"balances": {
+			"balances": &[
+				get_account_id_from_seed::<sr25519::Public>("Alice"),
+				get_account_id_from_seed::<sr25519::Public>("Bob"),
+				get_account_id_from_seed::<sr25519::Public>("Charlie"),
+				get_account_id_from_seed::<sr25519::Public>("Dave"),
+				get_account_id_from_seed::<sr25519::Public>("Eve"),
+				get_account_id_from_seed::<sr25519::Public>("Ferdie"),
+				get_account_id_from_seed::<sr25519::Public>("Alice//stash"),
+				get_account_id_from_seed::<sr25519::Public>("Bob//stash"),
+				get_account_id_from_seed::<sr25519::Public>("Charlie//stash"),
+				get_account_id_from_seed::<sr25519::Public>("Dave//stash"),
+				get_account_id_from_seed::<sr25519::Public>("Eve//stash"),
+				get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),
+			].into_iter()
+			.map(|k| (k, /* ~1.2e+12 UNQ */ 1u128 << 100))
+			.collect::<Vec<_>>(),
 		},
-		WASM_BINARY.expect("WASM binary was not build, please build it!"),
-	)
+	});
+
+	#[cfg(feature = "unique-runtime")]
+	{
+		patch
+			.as_object_mut()
+			.expect("the genesis patch is always an object; qed")
+			.remove("session");
+	}
+
+	patch
 }
 
-pub fn local_testnet_config() -> DefaultChainSpec {
+fn chain_properties() -> sc_chain_spec::Properties {
 	let mut properties = Map::new();
 	properties.insert("tokenSymbol".into(), default_runtime::TOKEN_SYMBOL.into());
 	properties.insert("tokenDecimals".into(), default_runtime::DECIMALS.into());
@@ -328,68 +244,5 @@
 		default_runtime::SS58Prefix::get().into(),
 	);
 
-	DefaultChainSpec::from_genesis(
-		// Name
-		format!(
-			"{}{}",
-			default_runtime::VERSION.impl_name.to_uppercase(),
-			if cfg!(feature = "unique-runtime") {
-				""
-			} else {
-				" by UNIQUE"
-			}
-		)
-		.as_str(),
-		// ID
-		format!("{}_local", default_runtime::VERSION.spec_name).as_str(),
-		ChainType::Local,
-		move || {
-			testnet_genesis!(
-				default_runtime,
-				// Sudo account
-				get_account_id_from_seed::<sr25519::Public>("Alice"),
-				[
-					(
-						get_account_id_from_seed::<sr25519::Public>("Alice"),
-						get_from_seed::<AuraId>("Alice"),
-					),
-					(
-						get_account_id_from_seed::<sr25519::Public>("Bob"),
-						get_from_seed::<AuraId>("Bob"),
-					),
-				],
-				// Pre-funded accounts
-				vec![
-					get_account_id_from_seed::<sr25519::Public>("Alice"),
-					get_account_id_from_seed::<sr25519::Public>("Bob"),
-					get_account_id_from_seed::<sr25519::Public>("Charlie"),
-					get_account_id_from_seed::<sr25519::Public>("Dave"),
-					get_account_id_from_seed::<sr25519::Public>("Eve"),
-					get_account_id_from_seed::<sr25519::Public>("Ferdie"),
-					get_account_id_from_seed::<sr25519::Public>("Alice//stash"),
-					get_account_id_from_seed::<sr25519::Public>("Bob//stash"),
-					get_account_id_from_seed::<sr25519::Public>("Charlie//stash"),
-					get_account_id_from_seed::<sr25519::Public>("Dave//stash"),
-					get_account_id_from_seed::<sr25519::Public>("Eve//stash"),
-					get_account_id_from_seed::<sr25519::Public>("Ferdie//stash"),
-				],
-				PARA_ID
-			)
-		},
-		// Bootnodes
-		vec![],
-		// Telemetry
-		None,
-		// Protocol ID
-		None,
-		None,
-		// Properties
-		Some(properties),
-		// Extensions
-		Extensions {
-			relay_chain: "westend-local".into(),
-			para_id: PARA_ID,
-		},
-		WASM_BINARY.expect("WASM binary was not build, please build it!"),
-	)
+	properties
 }
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
before · runtime/opal/Cargo.toml
1################################################################################2# Package34[package]5authors = ['Unique Network <support@uniquenetwork.io>']6build = 'build.rs'7description = 'Opal Runtime'8edition = '2021'9homepage = 'https://unique.network'10license = 'GPLv3'11name = 'opal-runtime'12repository = 'https://github.com/UniqueNetwork/unique-chain'13version.workspace = true1415[package.metadata.docs.rs]16targets = ['x86_64-unknown-linux-gnu']1718[features]19default = ['opal-runtime', 'std']20limit-testing = ['pallet-unique/limit-testing', 'up-data-structs/limit-testing']21opal-runtime = [22	'app-promotion',23	'collator-selection',24	'foreign-assets',25	'governance',26	'pallet-test-utils',27	'preimage',28	'refungible',29]30pov-estimate = []31runtime-benchmarks = [32	"pallet-preimage/runtime-benchmarks",33	'cumulus-pallet-parachain-system/runtime-benchmarks',34	'parachains-common/runtime-benchmarks',35	'frame-benchmarking',36	'frame-support/runtime-benchmarks',37	'frame-system-benchmarking',38	'frame-system/runtime-benchmarks',39	'pallet-app-promotion/runtime-benchmarks',40	'pallet-balances/runtime-benchmarks',41	'pallet-collator-selection/runtime-benchmarks',42	'pallet-collective/runtime-benchmarks',43	'pallet-common/runtime-benchmarks',44	'pallet-configuration/runtime-benchmarks',45	'pallet-democracy/runtime-benchmarks',46	'pallet-ethereum/runtime-benchmarks',47	'pallet-evm-coder-substrate/runtime-benchmarks',48	'pallet-evm-migration/runtime-benchmarks',49	'pallet-foreign-assets/runtime-benchmarks',50	'pallet-fungible/runtime-benchmarks',51	'pallet-identity/runtime-benchmarks',52	'pallet-inflation/runtime-benchmarks',53	'pallet-maintenance/runtime-benchmarks',54	'pallet-membership/runtime-benchmarks',55	'pallet-nonfungible/runtime-benchmarks',56	'pallet-ranked-collective/runtime-benchmarks',57	'pallet-referenda/runtime-benchmarks',58	'pallet-refungible/runtime-benchmarks',59	'pallet-scheduler/runtime-benchmarks',60	'pallet-structure/runtime-benchmarks',61	'pallet-timestamp/runtime-benchmarks',62	'pallet-unique/runtime-benchmarks',63	'pallet-utility/runtime-benchmarks',64	'pallet-xcm/runtime-benchmarks',65	'pallet-message-queue/runtime-benchmarks',66	'polkadot-runtime-common/runtime-benchmarks',67	'sp-runtime/runtime-benchmarks',68	'staging-xcm-builder/runtime-benchmarks',69]70std = [71	'cumulus-pallet-aura-ext/std',72	'cumulus-pallet-parachain-system/std',73	'cumulus-pallet-xcm/std',74	'cumulus-pallet-xcmp-queue/std',75	'cumulus-primitives-aura/std',76	'cumulus-primitives-core/std',77	'cumulus-primitives-utility/std',78	'parachains-common/std',79	'frame-executive/std',80	'frame-support/std',81	'frame-system-rpc-runtime-api/std',82	'frame-system/std',83	'frame-try-runtime/std',84	'pallet-aura/std',85	'pallet-balances/std',86	'pallet-collective/std',87	'pallet-democracy/std',88	'pallet-gov-origins/std',89	'pallet-membership/std',90	'pallet-ranked-collective/std',91	'pallet-referenda/std',92	'pallet-scheduler/std',93	'parity-scale-codec/std',94	# 'pallet-contracts/std',95	# 'pallet-contracts-primitives/std',96	# 'pallet-contracts-rpc-runtime-api/std',97	# 'pallet-contract-helpers/std',98	"pallet-authorship/std",99	"pallet-preimage/std",100	"pallet-session/std",101	"pallet-state-trie-migration/std",102	"sp-consensus-aura/std",103	'app-promotion-rpc/std',104	'evm-coder/std',105	'fp-rpc/std',106	'fp-self-contained/std',107	'pallet-app-promotion/std',108	'pallet-balances-adapter/std',109	'pallet-base-fee/std',110	'pallet-charge-transaction/std',111	'pallet-collator-selection/std',112	'pallet-common/std',113	'pallet-configuration/std',114	'pallet-ethereum/std',115	'pallet-evm-coder-substrate/std',116	'pallet-evm-contract-helpers/std',117	'pallet-evm-migration/std',118	'pallet-evm-transaction-payment/std',119	'pallet-evm/std',120	'pallet-fungible/std',121	'pallet-identity/std',122	'pallet-inflation/std',123	'pallet-nonfungible/std',124	'pallet-refungible/std',125	'pallet-structure/std',126	'pallet-sudo/std',127	'pallet-timestamp/std',128	'pallet-transaction-payment-rpc-runtime-api/std',129	'pallet-transaction-payment/std',130	'pallet-treasury/std',131	'pallet-unique/std',132	'pallet-utility/std',133	'pallet-xcm/std',134	'pallet-message-queue/std',135	'polkadot-runtime-common/std',136	'serde',137	'sp-api/std',138	'sp-block-builder/std',139	'sp-core/std',140	'sp-inherents/std',141	'sp-io/std',142	'sp-offchain/std',143	'sp-runtime/std',144	'sp-session/std',145	'sp-std/std',146	'sp-storage/std',147	'sp-transaction-pool/std',148	'sp-version/std',149	'staging-parachain-info/std',150	'staging-xcm-builder/std',151	'staging-xcm-executor/std',152	'staging-xcm/std',153	'up-common/std',154	'up-data-structs/std',155	'up-pov-estimate-rpc/std',156	'up-rpc/std',157	'up-sponsorship/std',158159	"orml-traits/std",160	"orml-vesting/std",161	"orml-xcm-support/std",162	"orml-xtokens/std",163	"pallet-foreign-assets/std",164165	'pallet-maintenance/std',166	'pallet-test-utils?/std',167]168try-runtime = [169	"pallet-authorship/try-runtime",170	"pallet-collator-selection/try-runtime",171	"pallet-identity/try-runtime",172	"pallet-preimage/try-runtime",173	"pallet-session/try-runtime",174	"pallet-state-trie-migration/try-runtime",175	'cumulus-pallet-aura-ext/try-runtime',176	'cumulus-pallet-dmp-queue/try-runtime',177	'cumulus-pallet-parachain-system/try-runtime',178	'cumulus-pallet-xcm/try-runtime',179	'cumulus-pallet-xcmp-queue/try-runtime',180	'fp-self-contained/try-runtime',181	'frame-executive/try-runtime',182	'frame-support/try-runtime',183	'frame-system/try-runtime',184	'frame-try-runtime',185	'frame-try-runtime?/try-runtime',186	'orml-vesting/try-runtime',187	'orml-xtokens/try-runtime',188	'pallet-app-promotion/try-runtime',189	'pallet-aura/try-runtime',190	'pallet-balances-adapter/try-runtime',191	'pallet-balances/try-runtime',192	'pallet-base-fee/try-runtime',193	'pallet-charge-transaction/try-runtime',194	'pallet-collective/try-runtime',195	'pallet-collective/try-runtime',196	'pallet-common/try-runtime',197	'pallet-configuration/try-runtime',198	'pallet-democracy/try-runtime',199	'pallet-democracy/try-runtime',200	'pallet-ethereum/try-runtime',201	'pallet-evm-coder-substrate/try-runtime',202	'pallet-evm-contract-helpers/try-runtime',203	'pallet-evm-migration/try-runtime',204	'pallet-evm-transaction-payment/try-runtime',205	'pallet-evm/try-runtime',206	'pallet-foreign-assets/try-runtime',207	'pallet-fungible/try-runtime',208	'pallet-gov-origins/try-runtime',209	'pallet-inflation/try-runtime',210	'pallet-maintenance/try-runtime',211	'pallet-membership/try-runtime',212	'pallet-membership/try-runtime',213	'pallet-nonfungible/try-runtime',214	'pallet-ranked-collective/try-runtime',215	'pallet-referenda/try-runtime',216	'pallet-refungible/try-runtime',217	'pallet-scheduler/try-runtime',218	'pallet-scheduler/try-runtime',219	'pallet-structure/try-runtime',220	'pallet-sudo/try-runtime',221	'pallet-test-utils?/try-runtime',222	'pallet-timestamp/try-runtime',223	'pallet-transaction-payment/try-runtime',224	'pallet-treasury/try-runtime',225	'pallet-unique/try-runtime',226	'pallet-utility/try-runtime',227	'pallet-xcm/try-runtime',228	'pallet-message-queue/try-runtime',229	'polkadot-runtime-common/try-runtime',230	'staging-parachain-info/try-runtime',231]232233app-promotion = []234collator-selection = []235fast-inflation = []236foreign-assets = []237gov-test-timings = []238governance = []239lookahead = ['cumulus-pallet-parachain-system/parameterized-consensus-hook', 'pallet-aura/experimental']240preimage = []241refungible = []242session-test-timings = []243244################################################################################245# local dependencies246247[dependencies]248cumulus-pallet-aura-ext = { workspace = true }249cumulus-pallet-dmp-queue = { workspace = true }250cumulus-pallet-parachain-system = { workspace = true }251cumulus-pallet-xcm = { workspace = true }252cumulus-pallet-xcmp-queue = { workspace = true }253cumulus-primitives-aura = { workspace = true }254cumulus-primitives-core = { workspace = true }255cumulus-primitives-timestamp = { workspace = true }256cumulus-primitives-utility = { workspace = true }257parachains-common = { workspace = true }258frame-executive = { workspace = true }259frame-support = { workspace = true }260frame-system = { workspace = true }261frame-system-rpc-runtime-api = { workspace = true }262orml-traits = { workspace = true }263orml-vesting = { workspace = true }264orml-xcm-support = { workspace = true }265orml-xtokens = { workspace = true }266pallet-aura = { workspace = true }267pallet-authorship = { workspace = true }268pallet-balances = { features = ["insecure_zero_ed"], workspace = true }269pallet-preimage = { workspace = true }270pallet-session = { workspace = true }271pallet-state-trie-migration = { workspace = true }272pallet-sudo = { workspace = true }273pallet-timestamp = { workspace = true }274pallet-transaction-payment = { workspace = true }275pallet-transaction-payment-rpc-runtime-api = { workspace = true }276pallet-treasury = { workspace = true }277pallet-utility = { workspace = true }278pallet-xcm = { workspace = true }279pallet-message-queue = { workspace = true }280parity-scale-codec = { workspace = true }281polkadot-parachain-primitives = { workspace = true }282polkadot-runtime-common = { workspace = true }283smallvec = { workspace = true }284sp-api = { workspace = true }285sp-arithmetic = { workspace = true }286sp-block-builder = { workspace = true }287sp-consensus-aura = { workspace = true }288sp-core = { workspace = true }289sp-inherents = { workspace = true }290sp-io = { workspace = true }291sp-offchain = { workspace = true }292sp-runtime = { workspace = true }293sp-session = { workspace = true }294sp-std = { workspace = true }295sp-storage = { workspace = true }296sp-transaction-pool = { workspace = true }297sp-version = { workspace = true }298staging-parachain-info = { workspace = true }299staging-xcm = { workspace = true }300staging-xcm-builder = { workspace = true }301staging-xcm-executor = { workspace = true }302303app-promotion-rpc = { workspace = true }304derivative = { workspace = true }305evm-coder = { workspace = true }306fp-evm = { workspace = true }307fp-rpc = { workspace = true }308fp-self-contained = { workspace = true }309log = { workspace = true }310num_enum = { workspace = true }311pallet-app-promotion = { workspace = true }312pallet-balances-adapter = { workspace = true }313pallet-base-fee = { workspace = true }314pallet-charge-transaction = { workspace = true }315pallet-collator-selection = { workspace = true }316pallet-collective = { workspace = true }317pallet-common = { workspace = true }318pallet-configuration = { workspace = true }319pallet-democracy = { workspace = true }320pallet-ethereum = { workspace = true }321pallet-evm = { workspace = true }322pallet-evm-coder-substrate = { workspace = true }323pallet-evm-contract-helpers = { workspace = true }324pallet-evm-migration = { workspace = true }325pallet-evm-precompile-simple = { workspace = true }326pallet-evm-transaction-payment = { workspace = true }327pallet-foreign-assets = { workspace = true }328pallet-fungible = { workspace = true }329pallet-gov-origins = { workspace = true }330pallet-identity = { workspace = true }331pallet-inflation = { workspace = true }332pallet-maintenance = { workspace = true }333pallet-membership = { workspace = true }334pallet-nonfungible = { workspace = true }335pallet-ranked-collective = { workspace = true }336pallet-referenda = { workspace = true }337pallet-refungible = { workspace = true }338pallet-scheduler = { workspace = true }339pallet-structure = { workspace = true }340pallet-unique = { workspace = true }341precompile-utils-macro = { workspace = true }342scale-info = { workspace = true }343up-common = { workspace = true }344up-data-structs = { workspace = true }345up-pov-estimate-rpc = { workspace = true }346up-rpc = { workspace = true }347up-sponsorship = { workspace = true }348349################################################################################350# Optional dependencies351352frame-benchmarking = { workspace = true, optional = true }353frame-system-benchmarking = { workspace = true, optional = true }354frame-try-runtime = { workspace = true, optional = true }355serde = { workspace = true, optional = true }356357################################################################################358# Test dependencies359360pallet-test-utils = { workspace = true, optional = true }361362################################################################################363# Other Dependencies364365hex-literal = { workspace = true }366impl-trait-for-tuples = { workspace = true }367368[build-dependencies]369substrate-wasm-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 }