diff --git a/polkadot/Cargo.toml b/polkadot/Cargo.toml
index 32c11fe9dc6ec0126711f97ca6554b7cd80acba6..491c587242690eb19ef6d052616fc3abd9b43262 100644
--- a/polkadot/Cargo.toml
+++ b/polkadot/Cargo.toml
@@ -8,7 +8,7 @@ description = "Implementation of a `https://polkadot.network` node in Rust based
 license = "GPL-3.0-only"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 rust-version = "1.57.0" # custom profiles
 readme = "README.md"
 
diff --git a/polkadot/bridges/bin/runtime-common/src/messages_benchmarking.rs b/polkadot/bridges/bin/runtime-common/src/messages_benchmarking.rs
index 217560e114344c61e502d888d92f130e09732db2..de2d0cd1cb600c83bb78b9e7fe8a948966e38b7f 100644
--- a/polkadot/bridges/bin/runtime-common/src/messages_benchmarking.rs
+++ b/polkadot/bridges/bin/runtime-common/src/messages_benchmarking.rs
@@ -35,7 +35,7 @@ use pallet_bridge_messages::benchmarking::{
 use sp_core::Hasher;
 use sp_runtime::traits::Header;
 use sp_std::prelude::*;
-use sp_trie::{record_all_keys, trie_types::TrieDBMut, Layout, MemoryDB, Recorder, TrieMut};
+use sp_trie::{record_all_keys, trie_types::TrieDBMutV1, LayoutV1, MemoryDB, Recorder, TrieMut};
 
 /// Generate ed25519 signature to be used in
 /// `pallet_brdige_call_dispatch::CallOrigin::TargetAccount`.
@@ -102,7 +102,7 @@ where
 	let mut root = Default::default();
 	let mut mdb = MemoryDB::default();
 	{
-		let mut trie = TrieDBMut::<H>::new(&mut mdb, &mut root);
+		let mut trie = TrieDBMutV1::<H>::new(&mut mdb, &mut root);
 
 		// insert messages
 		for nonce in params.message_nonces.clone() {
@@ -131,7 +131,7 @@ where
 
 	// generate storage proof to be delivered to This chain
 	let mut proof_recorder = Recorder::<H::Out>::new();
-	record_all_keys::<Layout<H>, _>(&mdb, &root, &mut proof_recorder)
+	record_all_keys::<LayoutV1<H>, _>(&mdb, &root, &mut proof_recorder)
 		.map_err(|_| "record_all_keys has failed")
 		.expect("record_all_keys should not fail in benchmarks");
 	let storage_proof = proof_recorder.drain().into_iter().map(|n| n.data.to_vec()).collect();
@@ -175,7 +175,7 @@ where
 	let mut root = Default::default();
 	let mut mdb = MemoryDB::default();
 	{
-		let mut trie = TrieDBMut::<H>::new(&mut mdb, &mut root);
+		let mut trie = TrieDBMutV1::<H>::new(&mut mdb, &mut root);
 		trie.insert(&storage_key, &params.inbound_lane_data.encode())
 			.map_err(|_| "TrieMut::insert has failed")
 			.expect("TrieMut::insert should not fail in benchmarks");
@@ -184,7 +184,7 @@ where
 
 	// generate storage proof to be delivered to This chain
 	let mut proof_recorder = Recorder::<H::Out>::new();
-	record_all_keys::<Layout<H>, _>(&mdb, &root, &mut proof_recorder)
+	record_all_keys::<LayoutV1<H>, _>(&mdb, &root, &mut proof_recorder)
 		.map_err(|_| "record_all_keys has failed")
 		.expect("record_all_keys should not fail in benchmarks");
 	let storage_proof = proof_recorder.drain().into_iter().map(|n| n.data.to_vec()).collect();
@@ -209,11 +209,11 @@ fn grow_trie<H: Hasher>(mut root: H::Out, mdb: &mut MemoryDB<H>, trie_size: Proo
 		ProofSize::HasExtraNodes(size) => (8, 1, size),
 	};
 
-	let mut key_index = 0;
+	let mut key_index = 0u32;
 	loop {
 		// generate storage proof to be delivered to This chain
 		let mut proof_recorder = Recorder::<H::Out>::new();
-		record_all_keys::<Layout<H>, _>(mdb, &root, &mut proof_recorder)
+		record_all_keys::<LayoutV1<H>, _>(mdb, &root, &mut proof_recorder)
 			.map_err(|_| "record_all_keys has failed")
 			.expect("record_all_keys should not fail in benchmarks");
 		let size: usize = proof_recorder.drain().into_iter().map(|n| n.data.len()).sum();
@@ -221,7 +221,7 @@ fn grow_trie<H: Hasher>(mut root: H::Out, mdb: &mut MemoryDB<H>, trie_size: Proo
 			return root
 		}
 
-		let mut trie = TrieDBMut::<H>::from_existing(mdb, &mut root)
+		let mut trie = TrieDBMutV1::<H>::from_existing(mdb, &mut root)
 			.map_err(|_| "TrieDBMut::from_existing has failed")
 			.expect("TrieDBMut::from_existing should not fail in benchmarks");
 		for _ in 0..iterations {
diff --git a/polkadot/cli/Cargo.toml b/polkadot/cli/Cargo.toml
index 366258a017f9a21e041fe1b2af41558e0595a362..88b6ed53ea2e0786a7694841471eb8bd0f4ef298 100644
--- a/polkadot/cli/Cargo.toml
+++ b/polkadot/cli/Cargo.toml
@@ -3,7 +3,7 @@ name = "polkadot-cli"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
 description = "Polkadot Relay-chain Client Node"
-edition = "2018"
+edition = "2021"
 
 [package.metadata.wasm-pack.profile.release]
 # `wasm-opt` has some problems on Linux, see
diff --git a/polkadot/core-primitives/Cargo.toml b/polkadot/core-primitives/Cargo.toml
index bb7c809c65fdfcbde81e4c28b9a33e2f5e3b5e2f..bf5572fca5eaa636ab565ddabf2b26278f1c7f0d 100644
--- a/polkadot/core-primitives/Cargo.toml
+++ b/polkadot/core-primitives/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-core-primitives"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
diff --git a/polkadot/erasure-coding/Cargo.toml b/polkadot/erasure-coding/Cargo.toml
index cd5853df5033c565b7a81e2886fac82204385fa8..7fe2023364f07560893a34d210b16fd84c64e819 100644
--- a/polkadot/erasure-coding/Cargo.toml
+++ b/polkadot/erasure-coding/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-erasure-coding"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 polkadot-primitives = { path = "../primitives" }
diff --git a/polkadot/erasure-coding/fuzzer/Cargo.toml b/polkadot/erasure-coding/fuzzer/Cargo.toml
index 13812ab76bd7aa49443b13db0ef33c587291467d..d531c42d4289c6380524043fe5f1786055895c84 100644
--- a/polkadot/erasure-coding/fuzzer/Cargo.toml
+++ b/polkadot/erasure-coding/fuzzer/Cargo.toml
@@ -2,7 +2,7 @@
 name = "erasure_coding_fuzzer"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 polkadot-erasure-coding = { path = ".." }
diff --git a/polkadot/node/client/Cargo.toml b/polkadot/node/client/Cargo.toml
index 3ebd65de8ab1112ff29a3dc14cfc3a6a9dabf08b..2f10ff290eabb7b8b476a2f994cb261c87a0bff2 100644
--- a/polkadot/node/client/Cargo.toml
+++ b/polkadot/node/client/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-client"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master" }
diff --git a/polkadot/node/collation-generation/Cargo.toml b/polkadot/node/collation-generation/Cargo.toml
index 09cc647e441c85272070f98eed13044e193d86e0..d1d62569f9154a5030a26c852ef89b01dfb87fb8 100644
--- a/polkadot/node/collation-generation/Cargo.toml
+++ b/polkadot/node/collation-generation/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-node-collation-generation"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 futures = "0.3.21"
diff --git a/polkadot/node/core/approval-voting/Cargo.toml b/polkadot/node/core/approval-voting/Cargo.toml
index a328dec18d50b47c747664c9cb020d1579ee2535..e14b547058fd06578b3ce5cd0c8d192f6c8cc4cb 100644
--- a/polkadot/node/core/approval-voting/Cargo.toml
+++ b/polkadot/node/core/approval-voting/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-node-core-approval-voting"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 futures = "0.3.21"
diff --git a/polkadot/node/core/av-store/Cargo.toml b/polkadot/node/core/av-store/Cargo.toml
index 4c79fc9fcff567a9bd28a8b7f6e95ca3641f2e4a..29f3bba9dc912ac5a8421c52c02bf1984e0c3b88 100644
--- a/polkadot/node/core/av-store/Cargo.toml
+++ b/polkadot/node/core/av-store/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-node-core-av-store"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 futures = "0.3.21"
diff --git a/polkadot/node/core/backing/Cargo.toml b/polkadot/node/core/backing/Cargo.toml
index 0bc7ff04c1c31310a9edf787cb799c0172bed494..c5a02c0df538bd07caa3e4da4d5e519f6f13afa9 100644
--- a/polkadot/node/core/backing/Cargo.toml
+++ b/polkadot/node/core/backing/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-node-core-backing"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 futures = "0.3.21"
diff --git a/polkadot/node/core/bitfield-signing/Cargo.toml b/polkadot/node/core/bitfield-signing/Cargo.toml
index 60501a3137a790c7611965f8218fee4baf5c68be..820c12afabcfdfd1a504d25ec39dccfb260c215c 100644
--- a/polkadot/node/core/bitfield-signing/Cargo.toml
+++ b/polkadot/node/core/bitfield-signing/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-node-core-bitfield-signing"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 futures = "0.3.21"
diff --git a/polkadot/node/core/candidate-validation/Cargo.toml b/polkadot/node/core/candidate-validation/Cargo.toml
index ab0fbccf126860f7ce4d9cbe632722bc71ce7522..e6035670f496f8a5d9303604139b13e5b575ff94 100644
--- a/polkadot/node/core/candidate-validation/Cargo.toml
+++ b/polkadot/node/core/candidate-validation/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-node-core-candidate-validation"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 async-trait = "0.1.52"
diff --git a/polkadot/node/core/chain-api/Cargo.toml b/polkadot/node/core/chain-api/Cargo.toml
index ecac94abcb460cf7136f463bbc71754196293115..85629724fd66f3c5a03700587d9ccd0c60a8624e 100644
--- a/polkadot/node/core/chain-api/Cargo.toml
+++ b/polkadot/node/core/chain-api/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-node-core-chain-api"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 futures = "0.3.21"
diff --git a/polkadot/node/core/chain-selection/Cargo.toml b/polkadot/node/core/chain-selection/Cargo.toml
index 38544cf0574ce92eb74ede6546d19ddc06cb49b7..33ff8e37db2b32b88c93961ffe5b852ca5e8b82a 100644
--- a/polkadot/node/core/chain-selection/Cargo.toml
+++ b/polkadot/node/core/chain-selection/Cargo.toml
@@ -3,7 +3,7 @@ name = "polkadot-node-core-chain-selection"
 description = "Chain Selection Subsystem"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 futures = "0.3.21"
diff --git a/polkadot/node/core/dispute-coordinator/Cargo.toml b/polkadot/node/core/dispute-coordinator/Cargo.toml
index 686441352bbe69d525605c5a6e470a1c76741e95..680875f38a1718da06ac448b702c680e9f63e510 100644
--- a/polkadot/node/core/dispute-coordinator/Cargo.toml
+++ b/polkadot/node/core/dispute-coordinator/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-node-core-dispute-coordinator"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 futures = "0.3.21"
diff --git a/polkadot/node/core/parachains-inherent/Cargo.toml b/polkadot/node/core/parachains-inherent/Cargo.toml
index a050d4a6974e20f191db1314de9baf5b01d7e6b6..6652d34ab0e897858d27b5dbc646044ff88242a7 100644
--- a/polkadot/node/core/parachains-inherent/Cargo.toml
+++ b/polkadot/node/core/parachains-inherent/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-node-core-parachains-inherent"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 futures = "0.3.21"
diff --git a/polkadot/node/core/provisioner/Cargo.toml b/polkadot/node/core/provisioner/Cargo.toml
index 1fbe9f83bef8928ec64530c371ec5fbf6acd28b6..0941712645537487edf6345623e6cddda8ddc9bf 100644
--- a/polkadot/node/core/provisioner/Cargo.toml
+++ b/polkadot/node/core/provisioner/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-node-core-provisioner"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] }
diff --git a/polkadot/node/core/pvf-checker/Cargo.toml b/polkadot/node/core/pvf-checker/Cargo.toml
index efb3b1d2ac0a305e7621038e5e848e0d410c5983..875323e909df80efe2fb260a6dece4d6c100a15a 100644
--- a/polkadot/node/core/pvf-checker/Cargo.toml
+++ b/polkadot/node/core/pvf-checker/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-node-core-pvf-checker"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 futures = "0.3.21"
diff --git a/polkadot/node/core/pvf/Cargo.toml b/polkadot/node/core/pvf/Cargo.toml
index ee486b3c66dd2b8ca523701324ca8ca153165188..217fe431d73af2ac049d9e1cf0788af687f0a8cc 100644
--- a/polkadot/node/core/pvf/Cargo.toml
+++ b/polkadot/node/core/pvf/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-node-core-pvf"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [[bin]]
 name = "puppet_worker"
diff --git a/polkadot/node/core/runtime-api/Cargo.toml b/polkadot/node/core/runtime-api/Cargo.toml
index 143d7b5dca9ab0c2c7a1a16d221f6ca64d0fee2b..9a2892c5ac760755223cef2f16d39200cef39d97 100644
--- a/polkadot/node/core/runtime-api/Cargo.toml
+++ b/polkadot/node/core/runtime-api/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-node-core-runtime-api"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 futures = "0.3.21"
diff --git a/polkadot/node/jaeger/Cargo.toml b/polkadot/node/jaeger/Cargo.toml
index d7a16098c190e45e25776ab34967e161a0e15f2d..b9a6d32722cf52eebdf48166eea0eede014d0c56 100644
--- a/polkadot/node/jaeger/Cargo.toml
+++ b/polkadot/node/jaeger/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-node-jaeger"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 description = "Polkadot Jaeger primitives"
 
 [dependencies]
diff --git a/polkadot/node/malus/Cargo.toml b/polkadot/node/malus/Cargo.toml
index 68e6b82f7e9a27316696d3da67ea13f26ed83f4e..ced05ca9cec96de1123973b72cb67a0b31f89c85 100644
--- a/polkadot/node/malus/Cargo.toml
+++ b/polkadot/node/malus/Cargo.toml
@@ -4,7 +4,7 @@ description = "Misbehaving nodes for local testnets, system and Simnet tests."
 license = "GPL-3.0-only"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 readme = "README.md"
 publish = false
 
@@ -13,7 +13,7 @@ name = "malus"
 path = "src/malus.rs"
 
 [dependencies]
-polkadot-cli = { path = "../../cli", default-features = false, features = ["cli", "malus"] }
+polkadot-cli = { path = "../../cli", default-features = false, features = ["cli", "malus", "polkadot-native"] }
 polkadot-node-subsystem = { path = "../subsystem" }
 polkadot-node-subsystem-util = { path = "../subsystem-util" }
 polkadot-node-subsystem-types = { path = "../subsystem-types" }
diff --git a/polkadot/node/metered-channel/Cargo.toml b/polkadot/node/metered-channel/Cargo.toml
index 2d21321130b7585f153e866318082d4bacdaf4e1..06b390b4ac786d8b099b1c97002b332cf0763bef 100644
--- a/polkadot/node/metered-channel/Cargo.toml
+++ b/polkadot/node/metered-channel/Cargo.toml
@@ -2,7 +2,7 @@
 name = "metered-channel"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 description = "Channels with attached Meters"
 
 [dependencies]
diff --git a/polkadot/node/metrics/Cargo.toml b/polkadot/node/metrics/Cargo.toml
index b41ae13c538666bf119182a78a3156abdd53dd68..814b3cb75fb1da08a3eea86f15b863be7cd4638a 100644
--- a/polkadot/node/metrics/Cargo.toml
+++ b/polkadot/node/metrics/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-node-metrics"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 description = "Subsystem metric helpers"
 
 [dependencies]
diff --git a/polkadot/node/network/approval-distribution/Cargo.toml b/polkadot/node/network/approval-distribution/Cargo.toml
index 83e62866376782e0a4f3e9bbc673a4758d8d7c0e..be488999c8f86392d6ea8591a5d179328f8a6e26 100644
--- a/polkadot/node/network/approval-distribution/Cargo.toml
+++ b/polkadot/node/network/approval-distribution/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-approval-distribution"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 polkadot-node-primitives = { path = "../../primitives" }
diff --git a/polkadot/node/network/availability-distribution/Cargo.toml b/polkadot/node/network/availability-distribution/Cargo.toml
index 41e8d4d4019513efd2a14ae29a62baab4028805f..1aaa1b497b500d841146632f696264d992b2e1e4 100644
--- a/polkadot/node/network/availability-distribution/Cargo.toml
+++ b/polkadot/node/network/availability-distribution/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-availability-distribution"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 futures = "0.3.21"
diff --git a/polkadot/node/network/availability-recovery/Cargo.toml b/polkadot/node/network/availability-recovery/Cargo.toml
index 70756fefdab836f3cd6878bf4c99981e0703a2da..e0696e17f8b27cc4afc30bf0e043d16e7be95614 100644
--- a/polkadot/node/network/availability-recovery/Cargo.toml
+++ b/polkadot/node/network/availability-recovery/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-availability-recovery"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 futures = "0.3.21"
diff --git a/polkadot/node/network/bitfield-distribution/Cargo.toml b/polkadot/node/network/bitfield-distribution/Cargo.toml
index 346a26353cb1e61757f54b9a2ca8117ab266ffe7..2b19e0a5bbafe382131be9b48a7165fba73c3222 100644
--- a/polkadot/node/network/bitfield-distribution/Cargo.toml
+++ b/polkadot/node/network/bitfield-distribution/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-availability-bitfield-distribution"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 futures = "0.3.21"
diff --git a/polkadot/node/network/bridge/Cargo.toml b/polkadot/node/network/bridge/Cargo.toml
index 4062d463b8a7415b0b87444340d9cd08897f7b27..33bd223ca9917a3ddc5d0f32168d8b4a04896b08 100644
--- a/polkadot/node/network/bridge/Cargo.toml
+++ b/polkadot/node/network/bridge/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-network-bridge"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 async-trait = "0.1.52"
diff --git a/polkadot/node/network/collator-protocol/Cargo.toml b/polkadot/node/network/collator-protocol/Cargo.toml
index 21ec6620cbf4759a3473e52eb896cf8eb7a6ca6b..08a9c30093ed0fadcacf6f656df0bd51d6a66e23 100644
--- a/polkadot/node/network/collator-protocol/Cargo.toml
+++ b/polkadot/node/network/collator-protocol/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-collator-protocol"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 always-assert = "0.1.2"
diff --git a/polkadot/node/network/dispute-distribution/Cargo.toml b/polkadot/node/network/dispute-distribution/Cargo.toml
index 7c2f0436d6da8b3c9e75db3a9739a56f3fb4396b..e80a1d9333bb92de901d311fa2bf098d238a7c05 100644
--- a/polkadot/node/network/dispute-distribution/Cargo.toml
+++ b/polkadot/node/network/dispute-distribution/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-dispute-distribution"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 futures = "0.3.21"
diff --git a/polkadot/node/network/gossip-support/Cargo.toml b/polkadot/node/network/gossip-support/Cargo.toml
index 221f6de7bd2be35f5c0f844fb45cb68c31cb0752..4de7f8d4d118c59436c032f1d29eeede3523719a 100644
--- a/polkadot/node/network/gossip-support/Cargo.toml
+++ b/polkadot/node/network/gossip-support/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-gossip-support"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master" }
diff --git a/polkadot/node/network/protocol/Cargo.toml b/polkadot/node/network/protocol/Cargo.toml
index 17cb28969cb819d0d6a65161fa9ec443cadac6b4..a80b6cf27543eb56406963445954d01a1c87a15a 100644
--- a/polkadot/node/network/protocol/Cargo.toml
+++ b/polkadot/node/network/protocol/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-node-network-protocol"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 description = "Primitives types for the Node-side"
 
 [dependencies]
diff --git a/polkadot/node/network/statement-distribution/Cargo.toml b/polkadot/node/network/statement-distribution/Cargo.toml
index 4a3a06a25a96f33ef8aa3c32644728bbd0c3ca3c..8c0fa635036222598711f9b65ceea09e9934d961 100644
--- a/polkadot/node/network/statement-distribution/Cargo.toml
+++ b/polkadot/node/network/statement-distribution/Cargo.toml
@@ -3,7 +3,7 @@ name = "polkadot-statement-distribution"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
 description = "Statement Distribution Subsystem"
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 futures = "0.3.21"
diff --git a/polkadot/node/overseer/Cargo.toml b/polkadot/node/overseer/Cargo.toml
index 33f391271bed4f22cae38b886b047975a87b7e9d..40ee0955f8a46c839a8187b60a65f080e98031b5 100644
--- a/polkadot/node/overseer/Cargo.toml
+++ b/polkadot/node/overseer/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-overseer"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 client = { package = "sc-client-api", git = "https://github.com/paritytech/substrate", branch = "master" }
diff --git a/polkadot/node/overseer/overseer-gen/Cargo.toml b/polkadot/node/overseer/overseer-gen/Cargo.toml
index c3e8e147edaedafcb303b5f513843ce1888c2bbd..24cdf8eb014f89a05efacb78aafe4bea56ea934b 100644
--- a/polkadot/node/overseer/overseer-gen/Cargo.toml
+++ b/polkadot/node/overseer/overseer-gen/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-overseer-gen"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 description = "Generate an overseer including builder pattern and message wrapper from a single struct."
 
 [dependencies]
diff --git a/polkadot/node/overseer/overseer-gen/proc-macro/Cargo.toml b/polkadot/node/overseer/overseer-gen/proc-macro/Cargo.toml
index 3a68d8b6322828bb14c52b5a438fd0d5ef73f26a..786728aa98e6054ae96edf58dc2e543c66b00ee3 100644
--- a/polkadot/node/overseer/overseer-gen/proc-macro/Cargo.toml
+++ b/polkadot/node/overseer/overseer-gen/proc-macro/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-overseer-gen-proc-macro"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 description = "Generate an overseer including builder pattern and message wrapper from a single annotated struct definition."
 
 [package.metadata.docs.rs]
diff --git a/polkadot/node/overseer/src/tests.rs b/polkadot/node/overseer/src/tests.rs
index 77145f0dc06f1ca86c51380ba5144a13dab5a3c0..761cb970cd1dac8489050cc439ebc095de861c5a 100644
--- a/polkadot/node/overseer/src/tests.rs
+++ b/polkadot/node/overseer/src/tests.rs
@@ -47,7 +47,6 @@ use sp_core::crypto::Pair as _;
 use super::*;
 
 fn block_info_to_pair(blocks: impl IntoIterator<Item = BlockInfo>) -> Vec<(Hash, BlockNumber)> {
-	use std::iter::FromIterator;
 	Vec::from_iter(
 		blocks
 			.into_iter()
diff --git a/polkadot/node/primitives/Cargo.toml b/polkadot/node/primitives/Cargo.toml
index 96af76f07c4dd629c9ba059e60e5cd6426f1fe44..a56f1ba56f8e0cd05f806cf402e35674b0f3e17d 100644
--- a/polkadot/node/primitives/Cargo.toml
+++ b/polkadot/node/primitives/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-node-primitives"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 description = "Primitives types for the Node-side"
 
 [dependencies]
diff --git a/polkadot/node/service/Cargo.toml b/polkadot/node/service/Cargo.toml
index b06b59339e8bd8e75871fdb77531908ee9c1ffda..771c2614a4d820fe225e3b4c45f61b482a82d44b 100644
--- a/polkadot/node/service/Cargo.toml
+++ b/polkadot/node/service/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-service"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 # Substrate Client
diff --git a/polkadot/node/service/src/overseer.rs b/polkadot/node/service/src/overseer.rs
index 4b4d9682e0def59a37a59cadca5d5c6e4365870b..63e086de8c61f574de425f05106771f97238df25 100644
--- a/polkadot/node/service/src/overseer.rs
+++ b/polkadot/node/service/src/overseer.rs
@@ -178,7 +178,6 @@ where
 	Spawner: 'static + SpawnNamed + Clone + Unpin,
 {
 	use polkadot_node_subsystem_util::metrics::Metrics;
-	use std::iter::FromIterator;
 
 	let metrics = <OverseerMetrics as MetricsTrait>::register(registry)?;
 
diff --git a/polkadot/node/subsystem-test-helpers/Cargo.toml b/polkadot/node/subsystem-test-helpers/Cargo.toml
index 5a5408bc5984989fabcfbc299f8ba8e26850124d..141c4d23c1e98a0bd761215a858e683f77ad86c3 100644
--- a/polkadot/node/subsystem-test-helpers/Cargo.toml
+++ b/polkadot/node/subsystem-test-helpers/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-node-subsystem-test-helpers"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 description = "Subsystem traits and message definitions"
 
 [dependencies]
diff --git a/polkadot/node/subsystem-types/Cargo.toml b/polkadot/node/subsystem-types/Cargo.toml
index a0e6586c3fd505b5b19ce4db9c4fc00dd184eec3..4a020a923ca428aaef944562452272cf51890293 100644
--- a/polkadot/node/subsystem-types/Cargo.toml
+++ b/polkadot/node/subsystem-types/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-node-subsystem-types"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 description = "Subsystem traits and message definitions"
 
 [dependencies]
diff --git a/polkadot/node/subsystem-util/Cargo.toml b/polkadot/node/subsystem-util/Cargo.toml
index 7b2596a5ac25c50d8cd727966fa8c3b7153194d5..1bb8eea0199135aae28e57132d1f090218fc01bd 100644
--- a/polkadot/node/subsystem-util/Cargo.toml
+++ b/polkadot/node/subsystem-util/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-node-subsystem-util"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 description = "Subsystem traits and message definitions"
 
 [dependencies]
diff --git a/polkadot/node/subsystem-util/src/lib.rs b/polkadot/node/subsystem-util/src/lib.rs
index bf120c945f02cfb40e97e3377eeb1da520d1dbd1..2f07aa9389a3de57756133aee502225fc77c1ff2 100644
--- a/polkadot/node/subsystem-util/src/lib.rs
+++ b/polkadot/node/subsystem-util/src/lib.rs
@@ -250,8 +250,6 @@ pub async fn sign(
 	key: &ValidatorId,
 	data: &[u8],
 ) -> Result<Option<ValidatorSignature>, KeystoreError> {
-	use std::convert::TryInto;
-
 	let signature =
 		CryptoStore::sign_with(&**keystore, ValidatorId::ID, &key.into(), &data).await?;
 
diff --git a/polkadot/node/subsystem/Cargo.toml b/polkadot/node/subsystem/Cargo.toml
index 1dc1e208b87f7b8c77c3fba3f42512788e81a108..3f960bcb8b92c49bd2fe987de23af90d3bf58102 100644
--- a/polkadot/node/subsystem/Cargo.toml
+++ b/polkadot/node/subsystem/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-node-subsystem"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 description = "Subsystem traits and message definitions and the generated overseer"
 
 [dependencies]
diff --git a/polkadot/node/test/client/Cargo.toml b/polkadot/node/test/client/Cargo.toml
index e8f404ed870c3d9d6b4bcc9beba5a874f8595ecf..3077304889305fb4c7f172294e001aab2788f27c 100644
--- a/polkadot/node/test/client/Cargo.toml
+++ b/polkadot/node/test/client/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-test-client"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] }
diff --git a/polkadot/node/test/performance-test/Cargo.toml b/polkadot/node/test/performance-test/Cargo.toml
index bd5a5be241d3d157e27e9fb59d618b267f6949ea..0c43a1c45f2eb14003300797af1edb14cabf7cec 100644
--- a/polkadot/node/test/performance-test/Cargo.toml
+++ b/polkadot/node/test/performance-test/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-performance-test"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 thiserror = "1.0.30"
diff --git a/polkadot/node/test/service/Cargo.toml b/polkadot/node/test/service/Cargo.toml
index 526d02bb62163557a83fe92b69c67853d2d9ca6f..a8577723817489b88590e962a9eb4fbab833a724 100644
--- a/polkadot/node/test/service/Cargo.toml
+++ b/polkadot/node/test/service/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-test-service"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 futures = "0.3.21"
diff --git a/polkadot/parachain/Cargo.toml b/polkadot/parachain/Cargo.toml
index 1cf1801f4a242482ba5b1b2b924d8a993fac07f0..266a19ead253a8423ab3ba201b897be0e85e064f 100644
--- a/polkadot/parachain/Cargo.toml
+++ b/polkadot/parachain/Cargo.toml
@@ -3,7 +3,7 @@ name = "polkadot-parachain"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
 description = "Types and utilities for creating and working with parachains"
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 # note: special care is taken to avoid inclusion of `sp-io` externals when compiling
diff --git a/polkadot/parachain/src/primitives.rs b/polkadot/parachain/src/primitives.rs
index df2b338ca6fa7dafe660eca4044b6406775aec82..b7de1d0ada33b13bc02f317c140597ae601cc13f 100644
--- a/polkadot/parachain/src/primitives.rs
+++ b/polkadot/parachain/src/primitives.rs
@@ -158,7 +158,6 @@ impl From<u32> for Id {
 
 impl From<usize> for Id {
 	fn from(x: usize) -> Self {
-		use sp_std::convert::TryInto;
 		// can't panic, so need to truncate
 		let x = x.try_into().unwrap_or(u32::MAX);
 		Id(x)
diff --git a/polkadot/parachain/test-parachains/Cargo.toml b/polkadot/parachain/test-parachains/Cargo.toml
index fc769e898dfb631deb6436088e480d528e7f7561..d587c30292d39e7a9a066144f680dadef9aca5a5 100644
--- a/polkadot/parachain/test-parachains/Cargo.toml
+++ b/polkadot/parachain/test-parachains/Cargo.toml
@@ -3,7 +3,7 @@ name = "test-parachains"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
 description = "Integration tests using the test-parachains"
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 tiny-keccak = "2.0.2"
diff --git a/polkadot/parachain/test-parachains/adder/Cargo.toml b/polkadot/parachain/test-parachains/adder/Cargo.toml
index 781c278935845842a3d42c0366b2cc6b6e8d47c8..7bd3272a486142e9bd7ebde0087b442aa0055e1a 100644
--- a/polkadot/parachain/test-parachains/adder/Cargo.toml
+++ b/polkadot/parachain/test-parachains/adder/Cargo.toml
@@ -3,7 +3,7 @@ name = "test-parachain-adder"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
 description = "Test parachain which adds to a number as its state transition"
-edition = "2018"
+edition = "2021"
 build = "build.rs"
 
 [dependencies]
diff --git a/polkadot/parachain/test-parachains/adder/collator/Cargo.toml b/polkadot/parachain/test-parachains/adder/collator/Cargo.toml
index 3c6f49bfd40977aa64b3cd0aaceeba2582e94cbe..495710f3f7c9ad25e0cc8a7f1a5e9bb565e37db9 100644
--- a/polkadot/parachain/test-parachains/adder/collator/Cargo.toml
+++ b/polkadot/parachain/test-parachains/adder/collator/Cargo.toml
@@ -3,7 +3,7 @@ name = "test-parachain-adder-collator"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
 description = "Collator for the adder test parachain"
-edition = "2018"
+edition = "2021"
 
 [[bin]]
 name = "adder-collator"
diff --git a/polkadot/parachain/test-parachains/halt/Cargo.toml b/polkadot/parachain/test-parachains/halt/Cargo.toml
index a79f1773c7efb6ad629dc07dec1ebf2debba1424..2b99fd41d886c7a1142ca224490ae74ab7a36cee 100644
--- a/polkadot/parachain/test-parachains/halt/Cargo.toml
+++ b/polkadot/parachain/test-parachains/halt/Cargo.toml
@@ -3,7 +3,7 @@ name = "test-parachain-halt"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
 description = "Test parachain which executes forever"
-edition = "2018"
+edition = "2021"
 build = "build.rs"
 
 [dependencies]
diff --git a/polkadot/primitives/Cargo.toml b/polkadot/primitives/Cargo.toml
index faf41737c0f9a83d3871bd3a460a279e92d23bdb..30581eb307fc946887e517297919aa6663ab11ba 100644
--- a/polkadot/primitives/Cargo.toml
+++ b/polkadot/primitives/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-primitives"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 serde = { version = "1.0.136", optional = true, features = ["derive"] }
diff --git a/polkadot/rpc/Cargo.toml b/polkadot/rpc/Cargo.toml
index 28ca97b49608c67368be6a52881f93dfde2f078e..a0a059544bd1ec3b0bcc62c126ca9f6c3964a8b5 100644
--- a/polkadot/rpc/Cargo.toml
+++ b/polkadot/rpc/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-rpc"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 jsonrpc-core = "18.0.0"
diff --git a/polkadot/runtime/common/Cargo.toml b/polkadot/runtime/common/Cargo.toml
index da760b960c87d91ff5b1d246c75825cdef194887..1d9a7b31d2afd740b1f6ba6e141b6dd1884e168a 100644
--- a/polkadot/runtime/common/Cargo.toml
+++ b/polkadot/runtime/common/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-runtime-common"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 impl-trait-for-tuples = "0.2.2"
diff --git a/polkadot/runtime/common/slot_range_helper/Cargo.toml b/polkadot/runtime/common/slot_range_helper/Cargo.toml
index d728f7f7b1f4fb7ba110975a3540b116e387e95d..0f86e308a161e0dc65d4a04051cab78b949c6c39 100644
--- a/polkadot/runtime/common/slot_range_helper/Cargo.toml
+++ b/polkadot/runtime/common/slot_range_helper/Cargo.toml
@@ -2,7 +2,7 @@
 name = "slot-range-helper"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 paste = "1.0"
diff --git a/polkadot/runtime/kusama/Cargo.toml b/polkadot/runtime/kusama/Cargo.toml
index 3615191879e5dbec025d83536273f70b2d747a63..f705e28c816afae95ea03a4368d12c2b4623a023 100644
--- a/polkadot/runtime/kusama/Cargo.toml
+++ b/polkadot/runtime/kusama/Cargo.toml
@@ -2,7 +2,7 @@
 name = "kusama-runtime"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 build = "build.rs"
 
 [dependencies]
diff --git a/polkadot/runtime/metrics/Cargo.toml b/polkadot/runtime/metrics/Cargo.toml
index 14aefaa2626fd427a0936cdbe948e048d4b81cb5..48e84a4a16eee3d926c953285ad38ad956b465f4 100644
--- a/polkadot/runtime/metrics/Cargo.toml
+++ b/polkadot/runtime/metrics/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-runtime-metrics"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 sp-std = { package = "sp-std", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false}
diff --git a/polkadot/runtime/parachains/Cargo.toml b/polkadot/runtime/parachains/Cargo.toml
index 028b749452d9b12d6bc3a9a702e927a63478e451..35880d339c1eeb7d8bd5ba541d55771ee6640bea 100644
--- a/polkadot/runtime/parachains/Cargo.toml
+++ b/polkadot/runtime/parachains/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-runtime-parachains"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] }
diff --git a/polkadot/runtime/polkadot/Cargo.toml b/polkadot/runtime/polkadot/Cargo.toml
index f8f5a5d915bb0cb12e92176e51a09b066156d3ac..4e04f7dbbbed0bde917dcd42a85482981ba2458c 100644
--- a/polkadot/runtime/polkadot/Cargo.toml
+++ b/polkadot/runtime/polkadot/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-runtime"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 build = "build.rs"
 
 [dependencies]
diff --git a/polkadot/runtime/rococo/Cargo.toml b/polkadot/runtime/rococo/Cargo.toml
index ac92aeeb2b518f9b9a0e8fc691e6f8ff6b77ffa6..078883434f2f7fa814bd8da26fa637dd7f53a1f9 100644
--- a/polkadot/runtime/rococo/Cargo.toml
+++ b/polkadot/runtime/rococo/Cargo.toml
@@ -2,7 +2,7 @@
 name = "rococo-runtime"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 build = "build.rs"
 
 [dependencies]
diff --git a/polkadot/runtime/test-runtime/Cargo.toml b/polkadot/runtime/test-runtime/Cargo.toml
index 45b434f0baa554ef43bdbe9634aff199463430af..d8ef280a57ee0908b4442a080fef80aa6db88d08 100644
--- a/polkadot/runtime/test-runtime/Cargo.toml
+++ b/polkadot/runtime/test-runtime/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-test-runtime"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 build = "build.rs"
 
 [dependencies]
@@ -129,4 +129,5 @@ std = [
 	"runtime-common/std",
 	"log/std",
 	"frame-election-provider-support/std",
+	"pallet-sudo/std",
 ]
diff --git a/polkadot/runtime/westend/Cargo.toml b/polkadot/runtime/westend/Cargo.toml
index 37ad7429b4d0cd85005e27967893b04161e226bf..402f8d7b490f18646a0ad894fae02d847f1c547e 100644
--- a/polkadot/runtime/westend/Cargo.toml
+++ b/polkadot/runtime/westend/Cargo.toml
@@ -2,7 +2,7 @@
 name = "westend-runtime"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 build = "build.rs"
 
 [dependencies]
diff --git a/polkadot/statement-table/Cargo.toml b/polkadot/statement-table/Cargo.toml
index d4f95908775bb078d4332a125d7bb2fcf9a46d16..1c1d22ea608d0fdefa1835edceedc4253c34e12f 100644
--- a/polkadot/statement-table/Cargo.toml
+++ b/polkadot/statement-table/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-statement-table"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] }
diff --git a/polkadot/utils/generate-bags/Cargo.toml b/polkadot/utils/generate-bags/Cargo.toml
index 82a455fbdbe8d5543b5156bcdfb909de2519eeb4..36320e15a36acff8cb65d3a6e74755c00f517ad6 100644
--- a/polkadot/utils/generate-bags/Cargo.toml
+++ b/polkadot/utils/generate-bags/Cargo.toml
@@ -2,7 +2,7 @@
 name = "polkadot-voter-bags"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 clap = { version = "3.1", features = ["derive"] }
diff --git a/polkadot/utils/remote-ext-tests/bags-list/Cargo.toml b/polkadot/utils/remote-ext-tests/bags-list/Cargo.toml
index ff4cd45ec64357e258c683b8fd63fbe9ec9723c7..14511e7292cc0479aca18530a7c86e52b9ae39cd 100644
--- a/polkadot/utils/remote-ext-tests/bags-list/Cargo.toml
+++ b/polkadot/utils/remote-ext-tests/bags-list/Cargo.toml
@@ -2,7 +2,7 @@
 name = "remote-ext-tests-bags-list"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 polkadot-runtime = { version = "0.9.17", path = "../../../runtime/polkadot" }
diff --git a/polkadot/utils/staking-miner/Cargo.toml b/polkadot/utils/staking-miner/Cargo.toml
index 8126c84e1a394a3cf01b7bd4464ce4e0b6e97243..d73dfa9c6d9432d12eb7d440d8f649a0fbee8db8 100644
--- a/polkadot/utils/staking-miner/Cargo.toml
+++ b/polkadot/utils/staking-miner/Cargo.toml
@@ -2,7 +2,7 @@
 name = "staking-miner"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 clap = { version = "3.1", features = ["derive", "env"] }
diff --git a/polkadot/xcm/Cargo.toml b/polkadot/xcm/Cargo.toml
index 560df741b1b56735aeacb564bce52d74cc6c5c75..fa26804f7c1e316e14bca1afca59035edfdca308 100644
--- a/polkadot/xcm/Cargo.toml
+++ b/polkadot/xcm/Cargo.toml
@@ -3,7 +3,7 @@ name = "xcm"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
 description = "The basic XCM datastructures."
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 impl-trait-for-tuples = "0.2.2"
diff --git a/polkadot/xcm/pallet-xcm-benchmarks/Cargo.toml b/polkadot/xcm/pallet-xcm-benchmarks/Cargo.toml
index 0cc3c4bb0202c31543dc1a0809699e207c638274..bc73e2ef0c2bd69e17ab969c25de64cd17d76e6f 100644
--- a/polkadot/xcm/pallet-xcm-benchmarks/Cargo.toml
+++ b/polkadot/xcm/pallet-xcm-benchmarks/Cargo.toml
@@ -1,7 +1,7 @@
 [package]
 name = "pallet-xcm-benchmarks"
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 version = "0.9.17"
 
 [package.metadata.docs.rs]
diff --git a/polkadot/xcm/pallet-xcm/Cargo.toml b/polkadot/xcm/pallet-xcm/Cargo.toml
index b497f3a10f1147f706a494e2be9ab924b9435423..bb1dff9bc2145bf112b236f905fbbcb2d0b57f97 100644
--- a/polkadot/xcm/pallet-xcm/Cargo.toml
+++ b/polkadot/xcm/pallet-xcm/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 name = "pallet-xcm"
 version = "0.9.17"
 
diff --git a/polkadot/xcm/procedural/Cargo.toml b/polkadot/xcm/procedural/Cargo.toml
index cbe7bea685dbe189a20dc855a26de64bc6e3392c..02de4fbba9847288f528631f6b5c50877bf68c94 100644
--- a/polkadot/xcm/procedural/Cargo.toml
+++ b/polkadot/xcm/procedural/Cargo.toml
@@ -2,7 +2,7 @@
 authors = ["Parity Technologies <admin@parity.io>"]
 name = "xcm-procedural"
 version = "0.1.0"
-edition = "2018"
+edition = "2021"
 
 [lib]
 proc-macro = true
diff --git a/polkadot/xcm/xcm-builder/Cargo.toml b/polkadot/xcm/xcm-builder/Cargo.toml
index 36be7d2e41d56ee42cd3755ba2cd6916db907614..3929e885e80f21f0f91486af85237eced3a361f3 100644
--- a/polkadot/xcm/xcm-builder/Cargo.toml
+++ b/polkadot/xcm/xcm-builder/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 name = "xcm-builder"
 description = "Tools & types for building with XCM and its executor."
 version = "0.9.17"
diff --git a/polkadot/xcm/xcm-executor/Cargo.toml b/polkadot/xcm/xcm-executor/Cargo.toml
index ac4f1fea5172bde0f889da652b9717c1ef19b2e0..aca64b8d9017b1f7d542782a968f1c12359572b1 100644
--- a/polkadot/xcm/xcm-executor/Cargo.toml
+++ b/polkadot/xcm/xcm-executor/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 name = "xcm-executor"
 description = "An abstract and configurable XCM message executor."
 version = "0.9.17"
diff --git a/polkadot/xcm/xcm-executor/integration-tests/Cargo.toml b/polkadot/xcm/xcm-executor/integration-tests/Cargo.toml
index 89ad1713ab8d5766d10cbf85088641faa36aa8f0..ffa1523bfda81c1baf18df130d4594c2b7efe0dd 100644
--- a/polkadot/xcm/xcm-executor/integration-tests/Cargo.toml
+++ b/polkadot/xcm/xcm-executor/integration-tests/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 authors = ["Parity Technologies <admin@parity.io>"]
-edition = "2018"
+edition = "2021"
 name = "xcm-executor-integration-tests"
 description = "Integration tests for the XCM Executor"
 version = "0.9.17"
diff --git a/polkadot/xcm/xcm-simulator/Cargo.toml b/polkadot/xcm/xcm-simulator/Cargo.toml
index e3904603b90e54b6773e69ac2b6d5160a3491bfc..5a7801987ac23f51c934080f9c929267fc2a97c3 100644
--- a/polkadot/xcm/xcm-simulator/Cargo.toml
+++ b/polkadot/xcm/xcm-simulator/Cargo.toml
@@ -3,7 +3,7 @@ name = "xcm-simulator"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
 description = "Test kit to simulate cross-chain message passing and XCM execution"
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "2.0.0" }
diff --git a/polkadot/xcm/xcm-simulator/example/Cargo.toml b/polkadot/xcm/xcm-simulator/example/Cargo.toml
index e4348c838df4ec1e316b2410c998d48b93251986..3f0a85650bd8c8207c3817054525393ce9b5f8f7 100644
--- a/polkadot/xcm/xcm-simulator/example/Cargo.toml
+++ b/polkadot/xcm/xcm-simulator/example/Cargo.toml
@@ -3,7 +3,7 @@ name = "xcm-simulator-example"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
 description = "Examples of xcm-simulator usage."
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "2.0.0" }
diff --git a/polkadot/xcm/xcm-simulator/fuzzer/Cargo.toml b/polkadot/xcm/xcm-simulator/fuzzer/Cargo.toml
index c6b0552d0768ce3a68e39bbb8f1917cbbca6513b..e3c6935ccbbfbe18774b62c1911f1767c2ebc3dc 100644
--- a/polkadot/xcm/xcm-simulator/fuzzer/Cargo.toml
+++ b/polkadot/xcm/xcm-simulator/fuzzer/Cargo.toml
@@ -3,7 +3,7 @@ name = "xcm-simulator-fuzzer"
 version = "0.9.17"
 authors = ["Parity Technologies <admin@parity.io>"]
 description = "Examples of xcm-simulator usage."
-edition = "2018"
+edition = "2021"
 
 [dependencies]
 codec = { package = "parity-scale-codec", version = "2.0.0" }