From c69b749290cd022eea0de66f37e4abfd6c361b70 Mon Sep 17 00:00:00 2001
From: Squirrel <gilescope@gmail.com>
Date: Wed, 26 Jan 2022 11:11:03 +0000
Subject: [PATCH] Add safe_xcm_version to Genesis Specs (#743) (#904)

* Add safe_xcm_version to Genesis Specs (#743)

* add safe_xcm_version to genesis specs

* cargo +nightly fmt

* Point to xcm latest version

Co-authored-by: Alexander Popiak <alexander.popiak@parity.io>
---
 cumulus/Cargo.lock                                |  2 ++
 cumulus/parachain-template/node/Cargo.toml        |  1 +
 cumulus/parachain-template/node/src/chain_spec.rs |  6 ++++++
 cumulus/parachain-template/runtime/src/lib.rs     |  2 +-
 cumulus/polkadot-parachains/Cargo.toml            |  1 +
 .../rococo-parachain/Cargo.toml                   |  1 +
 .../rococo-parachain/src/lib.rs                   |  2 +-
 cumulus/polkadot-parachains/src/chain_spec.rs     | 15 +++++++++++++++
 cumulus/polkadot-parachains/statemine/Cargo.toml  |  1 +
 cumulus/polkadot-parachains/statemine/src/lib.rs  |  2 +-
 cumulus/polkadot-parachains/statemint/Cargo.toml  |  1 +
 cumulus/polkadot-parachains/statemint/src/lib.rs  |  2 +-
 cumulus/polkadot-parachains/westmint/Cargo.toml   |  1 +
 cumulus/polkadot-parachains/westmint/src/lib.rs   |  2 +-
 14 files changed, 34 insertions(+), 5 deletions(-)

diff --git a/cumulus/Cargo.lock b/cumulus/Cargo.lock
index eb4ca303306..26b70fd243b 100644
--- a/cumulus/Cargo.lock
+++ b/cumulus/Cargo.lock
@@ -6200,6 +6200,7 @@ dependencies = [
  "substrate-frame-rpc-system",
  "substrate-prometheus-endpoint",
  "try-runtime-cli",
+ "xcm",
 ]
 
 [[package]]
@@ -6853,6 +6854,7 @@ dependencies = [
  "tempfile",
  "try-runtime-cli",
  "westmint-runtime",
+ "xcm",
 ]
 
 [[package]]
diff --git a/cumulus/parachain-template/node/Cargo.toml b/cumulus/parachain-template/node/Cargo.toml
index 12c10a7a629..10a6e4744a3 100644
--- a/cumulus/parachain-template/node/Cargo.toml
+++ b/cumulus/parachain-template/node/Cargo.toml
@@ -96,3 +96,4 @@ polkadot-cli = { git = "https://github.com/paritytech/polkadot", branch = "maste
 polkadot-parachain = { git = "https://github.com/paritytech/polkadot", branch = "master" }
 polkadot-primitives = { git = "https://github.com/paritytech/polkadot", branch = "master" }
 polkadot-service = { git = "https://github.com/paritytech/polkadot", branch = "master" }
+xcm = { git = "https://github.com/paritytech/polkadot", default-features = false, branch = "master" }
diff --git a/cumulus/parachain-template/node/src/chain_spec.rs b/cumulus/parachain-template/node/src/chain_spec.rs
index 46b5841631e..afb760685c6 100644
--- a/cumulus/parachain-template/node/src/chain_spec.rs
+++ b/cumulus/parachain-template/node/src/chain_spec.rs
@@ -10,6 +10,9 @@ use sp_runtime::traits::{IdentifyAccount, Verify};
 pub type ChainSpec =
 	sc_service::GenericChainSpec<parachain_template_runtime::GenesisConfig, Extensions>;
 
+/// The default XCM version to set in genesis config.
+const SAFE_XCM_VERSION: u32 = xcm::prelude::XCM_VERSION;
+
 /// Helper function to generate a crypto pair from seed
 pub fn get_public_from_seed<TPublic: Public>(seed: &str) -> <TPublic::Pair as Pair>::Public {
 	TPublic::Pair::from_string(&format!("//{}", seed), None)
@@ -211,5 +214,8 @@ fn testnet_genesis(
 		aura: Default::default(),
 		aura_ext: Default::default(),
 		parachain_system: Default::default(),
+		polkadot_xcm: parachain_template_runtime::PolkadotXcmConfig {
+			safe_xcm_version: Some(SAFE_XCM_VERSION),
+		},
 	}
 }
diff --git a/cumulus/parachain-template/runtime/src/lib.rs b/cumulus/parachain-template/runtime/src/lib.rs
index 944933f42cd..1020d64a60b 100644
--- a/cumulus/parachain-template/runtime/src/lib.rs
+++ b/cumulus/parachain-template/runtime/src/lib.rs
@@ -620,7 +620,7 @@ construct_runtime!(
 
 		// XCM helpers.
 		XcmpQueue: cumulus_pallet_xcmp_queue::{Pallet, Call, Storage, Event<T>} = 30,
-		PolkadotXcm: pallet_xcm::{Pallet, Call, Event<T>, Origin} = 31,
+		PolkadotXcm: pallet_xcm::{Pallet, Call, Event<T>, Origin, Config} = 31,
 		CumulusXcm: cumulus_pallet_xcm::{Pallet, Event<T>, Origin} = 32,
 		DmpQueue: cumulus_pallet_dmp_queue::{Pallet, Call, Storage, Event<T>} = 33,
 
diff --git a/cumulus/polkadot-parachains/Cargo.toml b/cumulus/polkadot-parachains/Cargo.toml
index 6b6294952e8..d0d7c68c952 100644
--- a/cumulus/polkadot-parachains/Cargo.toml
+++ b/cumulus/polkadot-parachains/Cargo.toml
@@ -84,6 +84,7 @@ polkadot-primitives = { git = "https://github.com/paritytech/polkadot", branch =
 polkadot-service = { git = "https://github.com/paritytech/polkadot", branch = "master" }
 polkadot-cli = { git = "https://github.com/paritytech/polkadot", branch = "master" }
 polkadot-parachain = { git = "https://github.com/paritytech/polkadot", branch = "master" }
+xcm = { git = "https://github.com/paritytech/polkadot", branch = "master" }
 
 [build-dependencies]
 substrate-build-script-utils = { git = "https://github.com/paritytech/substrate", branch = "master" }
diff --git a/cumulus/polkadot-parachains/rococo-parachain/Cargo.toml b/cumulus/polkadot-parachains/rococo-parachain/Cargo.toml
index e42f1612c80..7ac9a3c8e97 100644
--- a/cumulus/polkadot-parachains/rococo-parachain/Cargo.toml
+++ b/cumulus/polkadot-parachains/rococo-parachain/Cargo.toml
@@ -89,6 +89,7 @@ std = [
 	"pallet-sudo/std",
 	"pallet-transaction-payment/std",
 	"pallet-transaction-payment-rpc-runtime-api/std",
+	"pallet-xcm/std",
 	"parachain-info/std",
 	"parachains-common/std",
 	"cumulus-pallet-aura-ext/std",
diff --git a/cumulus/polkadot-parachains/rococo-parachain/src/lib.rs b/cumulus/polkadot-parachains/rococo-parachain/src/lib.rs
index 218d5ff5d6a..a9e0ec48201 100644
--- a/cumulus/polkadot-parachains/rococo-parachain/src/lib.rs
+++ b/cumulus/polkadot-parachains/rococo-parachain/src/lib.rs
@@ -531,7 +531,7 @@ construct_runtime! {
 
 		// XCM helpers.
 		XcmpQueue: cumulus_pallet_xcmp_queue::{Pallet, Call, Storage, Event<T>} = 50,
-		PolkadotXcm: pallet_xcm::{Pallet, Call, Event<T>, Origin} = 51,
+		PolkadotXcm: pallet_xcm::{Pallet, Call, Event<T>, Origin, Config} = 51,
 		CumulusXcm: cumulus_pallet_xcm::{Pallet, Call, Event<T>, Origin} = 52,
 		DmpQueue: cumulus_pallet_dmp_queue::{Pallet, Call, Storage, Event<T>} = 53,
 
diff --git a/cumulus/polkadot-parachains/src/chain_spec.rs b/cumulus/polkadot-parachains/src/chain_spec.rs
index c0ea6163431..7bd8cdb8c54 100644
--- a/cumulus/polkadot-parachains/src/chain_spec.rs
+++ b/cumulus/polkadot-parachains/src/chain_spec.rs
@@ -34,6 +34,9 @@ pub type ShellChainSpec = sc_service::GenericChainSpec<shell_runtime::GenesisCon
 pub type SeedlingChainSpec =
 	sc_service::GenericChainSpec<seedling_runtime::GenesisConfig, Extensions>;
 
+/// The default XCM version to set in genesis config.
+const SAFE_XCM_VERSION: u32 = xcm::prelude::XCM_VERSION;
+
 /// Helper function to generate a crypto pair from seed
 pub fn get_from_seed<TPublic: Public>(seed: &str) -> <TPublic::Pair as Pair>::Public {
 	TPublic::Pair::from_string(&format!("//{}", seed), None)
@@ -189,6 +192,9 @@ fn testnet_genesis(
 		aura: rococo_parachain_runtime::AuraConfig { authorities: initial_authorities },
 		aura_ext: Default::default(),
 		parachain_system: Default::default(),
+		polkadot_xcm: rococo_parachain_runtime::PolkadotXcmConfig {
+			safe_xcm_version: Some(SAFE_XCM_VERSION),
+		},
 	}
 }
 
@@ -454,6 +460,9 @@ fn statemint_genesis(
 		aura: Default::default(),
 		aura_ext: Default::default(),
 		parachain_system: Default::default(),
+		polkadot_xcm: statemint_runtime::PolkadotXcmConfig {
+			safe_xcm_version: Some(SAFE_XCM_VERSION),
+		},
 	}
 }
 
@@ -638,6 +647,9 @@ fn statemine_genesis(
 		aura: Default::default(),
 		aura_ext: Default::default(),
 		parachain_system: Default::default(),
+		polkadot_xcm: statemine_runtime::PolkadotXcmConfig {
+			safe_xcm_version: Some(SAFE_XCM_VERSION),
+		},
 	}
 }
 
@@ -817,5 +829,8 @@ fn westmint_genesis(
 		aura: Default::default(),
 		aura_ext: Default::default(),
 		parachain_system: Default::default(),
+		polkadot_xcm: westmint_runtime::PolkadotXcmConfig {
+			safe_xcm_version: Some(SAFE_XCM_VERSION),
+		},
 	}
 }
diff --git a/cumulus/polkadot-parachains/statemine/Cargo.toml b/cumulus/polkadot-parachains/statemine/Cargo.toml
index 18f3b6c4e30..9bb1ce05e2b 100644
--- a/cumulus/polkadot-parachains/statemine/Cargo.toml
+++ b/cumulus/polkadot-parachains/statemine/Cargo.toml
@@ -141,6 +141,7 @@ std = [
 	"pallet-transaction-payment-rpc-runtime-api/std",
 	"pallet-uniques/std",
 	"pallet-utility/std",
+	"pallet-xcm/std",
 	"parachain-info/std",
 	"cumulus-pallet-aura-ext/std",
 	"pallet-asset-tx-payment/std",
diff --git a/cumulus/polkadot-parachains/statemine/src/lib.rs b/cumulus/polkadot-parachains/statemine/src/lib.rs
index 21d509441cd..25dac6a5d50 100644
--- a/cumulus/polkadot-parachains/statemine/src/lib.rs
+++ b/cumulus/polkadot-parachains/statemine/src/lib.rs
@@ -737,7 +737,7 @@ construct_runtime!(
 
 		// XCM helpers.
 		XcmpQueue: cumulus_pallet_xcmp_queue::{Pallet, Call, Storage, Event<T>} = 30,
-		PolkadotXcm: pallet_xcm::{Pallet, Call, Storage, Event<T>, Origin} = 31,
+		PolkadotXcm: pallet_xcm::{Pallet, Call, Storage, Event<T>, Origin, Config} = 31,
 		CumulusXcm: cumulus_pallet_xcm::{Pallet, Event<T>, Origin} = 32,
 		DmpQueue: cumulus_pallet_dmp_queue::{Pallet, Call, Storage, Event<T>} = 33,
 
diff --git a/cumulus/polkadot-parachains/statemint/Cargo.toml b/cumulus/polkadot-parachains/statemint/Cargo.toml
index cddf2624ae3..4d7875bf99a 100644
--- a/cumulus/polkadot-parachains/statemint/Cargo.toml
+++ b/cumulus/polkadot-parachains/statemint/Cargo.toml
@@ -141,6 +141,7 @@ std = [
 	"pallet-transaction-payment-rpc-runtime-api/std",
 	"pallet-uniques/std",
 	"pallet-utility/std",
+	"pallet-xcm/std",
 	"parachain-info/std",
 	"cumulus-pallet-aura-ext/std",
 	"pallet-asset-tx-payment/std",
diff --git a/cumulus/polkadot-parachains/statemint/src/lib.rs b/cumulus/polkadot-parachains/statemint/src/lib.rs
index a7a2305088b..0648e43df07 100644
--- a/cumulus/polkadot-parachains/statemint/src/lib.rs
+++ b/cumulus/polkadot-parachains/statemint/src/lib.rs
@@ -750,7 +750,7 @@ construct_runtime!(
 
 		// XCM helpers.
 		XcmpQueue: cumulus_pallet_xcmp_queue::{Pallet, Call, Storage, Event<T>} = 30,
-		PolkadotXcm: pallet_xcm::{Pallet, Call, Storage, Event<T>, Origin} = 31,
+		PolkadotXcm: pallet_xcm::{Pallet, Call, Storage, Event<T>, Origin, Config} = 31,
 		CumulusXcm: cumulus_pallet_xcm::{Pallet, Event<T>, Origin} = 32,
 		DmpQueue: cumulus_pallet_dmp_queue::{Pallet, Call, Storage, Event<T>} = 33,
 
diff --git a/cumulus/polkadot-parachains/westmint/Cargo.toml b/cumulus/polkadot-parachains/westmint/Cargo.toml
index 99a9fbda784..25cd4f59ce2 100644
--- a/cumulus/polkadot-parachains/westmint/Cargo.toml
+++ b/cumulus/polkadot-parachains/westmint/Cargo.toml
@@ -139,6 +139,7 @@ std = [
 	"pallet-transaction-payment-rpc-runtime-api/std",
 	"pallet-uniques/std",
 	"pallet-utility/std",
+	"pallet-xcm/std",
 	"parachain-info/std",
 	"cumulus-pallet-aura-ext/std",
 	"pallet-asset-tx-payment/std",
diff --git a/cumulus/polkadot-parachains/westmint/src/lib.rs b/cumulus/polkadot-parachains/westmint/src/lib.rs
index c7145497bba..665897a8a09 100644
--- a/cumulus/polkadot-parachains/westmint/src/lib.rs
+++ b/cumulus/polkadot-parachains/westmint/src/lib.rs
@@ -722,7 +722,7 @@ construct_runtime!(
 
 		// XCM helpers.
 		XcmpQueue: cumulus_pallet_xcmp_queue::{Pallet, Call, Storage, Event<T>} = 30,
-		PolkadotXcm: pallet_xcm::{Pallet, Call, Storage, Event<T>, Origin} = 31,
+		PolkadotXcm: pallet_xcm::{Pallet, Call, Storage, Event<T>, Origin, Config} = 31,
 		CumulusXcm: cumulus_pallet_xcm::{Pallet, Event<T>, Origin} = 32,
 		DmpQueue: cumulus_pallet_dmp_queue::{Pallet, Call, Storage, Event<T>} = 33,
 
-- 
GitLab