diff --git a/polkadot/Cargo.lock b/polkadot/Cargo.lock
index 12bff7ba035cc178e0539a9e34c776dd2625dcee..8c130152d96e041a9d6540962907eb2bcef49c45 100644
--- a/polkadot/Cargo.lock
+++ b/polkadot/Cargo.lock
@@ -287,7 +287,6 @@ dependencies = [
  "async-global-executor",
  "async-io",
  "async-lock",
- "async-process",
  "crossbeam-utils",
  "futures-channel",
  "futures-core",
@@ -415,6 +414,12 @@ version = "0.2.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b"
 
+[[package]]
+name = "base16ct"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce"
+
 [[package]]
 name = "base58"
 version = "0.2.0"
@@ -427,6 +432,12 @@ version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
 
+[[package]]
+name = "base64ct"
+version = "1.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "874f8444adcb4952a8bc51305c8be95c8ec8237bb0d2e78d2e039f771f8828a0"
+
 [[package]]
 name = "beef"
 version = "0.5.1"
@@ -439,14 +450,14 @@ dependencies = [
 [[package]]
 name = "beefy-gadget"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "beefy-primitives",
  "fnv",
  "futures 0.3.21",
  "log",
  "parity-scale-codec",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "sc-chain-spec",
  "sc-client-api",
  "sc-keystore",
@@ -468,7 +479,7 @@ dependencies = [
 [[package]]
 name = "beefy-gadget-rpc"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "beefy-gadget",
  "beefy-primitives",
@@ -479,7 +490,7 @@ dependencies = [
  "jsonrpc-pubsub",
  "log",
  "parity-scale-codec",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "sc-rpc",
  "sc-utils",
  "serde",
@@ -491,12 +502,12 @@ dependencies = [
 [[package]]
 name = "beefy-merkle-tree"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 
 [[package]]
 name = "beefy-primitives"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -549,9 +560,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
 [[package]]
 name = "bitvec"
-version = "0.20.4"
+version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848"
+checksum = "1489fcb93a5bb47da0462ca93ad252ad6af2145cce58d10d46a83931ba9f016b"
 dependencies = [
  "funty",
  "radium",
@@ -921,6 +932,17 @@ version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8"
 
+[[package]]
+name = "bzip2-sys"
+version = "0.1.11+1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+]
+
 [[package]]
 name = "cache-padded"
 version = "1.1.1"
@@ -1124,6 +1146,12 @@ dependencies = [
  "cache-padded",
 ]
 
+[[package]]
+name = "const-oid"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3"
+
 [[package]]
 name = "constant_time_eq"
 version = "0.1.5"
@@ -1327,6 +1355,18 @@ version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
 
+[[package]]
+name = "crypto-bigint"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03c6a1d5fa1de37e071642dfa44ec552ca5b299adb128fab16138e24b548fd21"
+dependencies = [
+ "generic-array 0.14.4",
+ "rand_core 0.6.3",
+ "subtle",
+ "zeroize",
+]
+
 [[package]]
 name = "crypto-common"
 version = "0.1.2"
@@ -1456,6 +1496,15 @@ dependencies = [
  "uuid",
 ]
 
+[[package]]
+name = "der"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c"
+dependencies = [
+ "const-oid",
+]
+
 [[package]]
 name = "derivative"
 version = "2.2.0"
@@ -1626,6 +1675,17 @@ version = "1.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ee2626afccd7561a06cf1367e2950c4718ea04565e20fb5029b6c7d8ad09abcf"
 
+[[package]]
+name = "ecdsa"
+version = "0.13.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0d69ae62e0ce582d56380743515fefaf1a8c70cec685d9677636d7e30ae9dc9"
+dependencies = [
+ "der",
+ "elliptic-curve",
+ "signature",
+]
+
 [[package]]
 name = "ed25519"
 version = "1.3.0"
@@ -1655,6 +1715,24 @@ version = "1.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
 
+[[package]]
+name = "elliptic-curve"
+version = "0.11.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25b477563c2bfed38a3b7a60964c49e058b2510ad3f12ba3483fd8f62c2306d6"
+dependencies = [
+ "base16ct",
+ "crypto-bigint",
+ "der",
+ "ff",
+ "generic-array 0.14.4",
+ "group",
+ "rand_core 0.6.3",
+ "sec1",
+ "subtle",
+ "zeroize",
+]
+
 [[package]]
 name = "encoding_rs"
 version = "0.8.30"
@@ -1843,6 +1921,16 @@ dependencies = [
  "web-sys",
 ]
 
+[[package]]
+name = "ff"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2958d04124b9f27f175eaeb9a9f383d026098aa837eadd8ba22c11f13a05b9e"
+dependencies = [
+ "rand_core 0.6.3",
+ "subtle",
+]
+
 [[package]]
 name = "file-per-thread-logger"
 version = "0.1.4"
@@ -1855,9 +1943,9 @@ dependencies = [
 
 [[package]]
 name = "finality-grandpa"
-version = "0.14.4"
+version = "0.15.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8ac3ff5224ef91f3c97e03eb1de2db82743427e91aaa5ac635f454f0b164f5a"
+checksum = "d9def033d8505edf199f6a5d07aa7e6d2d6185b164293b77f0efd108f4f3e11d"
 dependencies = [
  "either",
  "futures 0.3.21",
@@ -1936,7 +2024,7 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
 [[package]]
 name = "fork-tree"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "parity-scale-codec",
 ]
@@ -1954,7 +2042,7 @@ dependencies = [
 [[package]]
 name = "frame-benchmarking"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -1976,7 +2064,7 @@ dependencies = [
 [[package]]
 name = "frame-benchmarking-cli"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "Inflector",
  "chrono",
@@ -2003,7 +2091,7 @@ dependencies = [
 [[package]]
 name = "frame-election-provider-support"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -2017,7 +2105,7 @@ dependencies = [
 [[package]]
 name = "frame-executive"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -2032,9 +2120,9 @@ dependencies = [
 
 [[package]]
 name = "frame-metadata"
-version = "14.2.0"
+version = "15.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37ed5e5c346de62ca5c184b4325a6600d1eaca210666e4606fe4e449574978d0"
+checksum = "df6bb8542ef006ef0de09a5c4420787d79823c0ed7924225822362fd2bf2ff2d"
 dependencies = [
  "cfg-if 1.0.0",
  "parity-scale-codec",
@@ -2045,7 +2133,7 @@ dependencies = [
 [[package]]
 name = "frame-support"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "bitflags",
  "frame-metadata",
@@ -2074,7 +2162,7 @@ dependencies = [
 [[package]]
 name = "frame-support-procedural"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "Inflector",
  "frame-support-procedural-tools",
@@ -2086,7 +2174,7 @@ dependencies = [
 [[package]]
 name = "frame-support-procedural-tools"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-support-procedural-tools-derive",
  "proc-macro-crate 1.1.3",
@@ -2098,7 +2186,7 @@ dependencies = [
 [[package]]
 name = "frame-support-procedural-tools-derive"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2108,7 +2196,7 @@ dependencies = [
 [[package]]
 name = "frame-support-test"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-support",
  "frame-support-test-pallet",
@@ -2131,7 +2219,7 @@ dependencies = [
 [[package]]
 name = "frame-support-test-pallet"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -2142,7 +2230,7 @@ dependencies = [
 [[package]]
 name = "frame-system"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-support",
  "log",
@@ -2159,7 +2247,7 @@ dependencies = [
 [[package]]
 name = "frame-system-benchmarking"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -2174,7 +2262,7 @@ dependencies = [
 [[package]]
 name = "frame-system-rpc-runtime-api"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "parity-scale-codec",
  "sp-api",
@@ -2183,7 +2271,7 @@ dependencies = [
 [[package]]
 name = "frame-try-runtime"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-support",
  "sp-api",
@@ -2243,9 +2331,9 @@ checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
 
 [[package]]
 name = "funty"
-version = "1.1.0"
+version = "2.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7"
+checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
 
 [[package]]
 name = "futures"
@@ -2379,7 +2467,7 @@ dependencies = [
 [[package]]
 name = "generate-bags"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "chrono",
  "frame-election-provider-support",
@@ -2500,6 +2588,17 @@ dependencies = [
  "web-sys",
 ]
 
+[[package]]
+name = "group"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc5ac374b108929de78460075f3dc439fa66df9d8fc77e8f12caa5165fcf0c89"
+dependencies = [
+ "ff",
+ "rand_core 0.6.3",
+ "subtle",
+]
+
 [[package]]
 name = "h2"
 version = "0.3.11"
@@ -2825,9 +2924,9 @@ dependencies = [
 
 [[package]]
 name = "impl-codec"
-version = "0.5.1"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443"
+checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f"
 dependencies = [
  "parity-scale-codec",
 ]
@@ -3264,6 +3363,18 @@ dependencies = [
  "jsonrpsee-types 0.8.0",
 ]
 
+[[package]]
+name = "k256"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cc5937366afd3b38071f400d1ce5bd8b1d40b5083cc14e6f8dbcc4032a7f5bb"
+dependencies = [
+ "cfg-if 1.0.0",
+ "ecdsa",
+ "elliptic-curve",
+ "sec1",
+]
+
 [[package]]
 name = "keccak"
 version = "0.1.0"
@@ -3394,9 +3505,9 @@ dependencies = [
 
 [[package]]
 name = "kvdb"
-version = "0.10.0"
+version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "45a3f58dc069ec0e205a27f5b45920722a46faed802a0541538241af6228f512"
+checksum = "a301d8ecb7989d4a6e2c57a49baca77d353bdbf879909debe3f375fe25d61f86"
 dependencies = [
  "parity-util-mem",
  "smallvec",
@@ -3404,20 +3515,20 @@ dependencies = [
 
 [[package]]
 name = "kvdb-memorydb"
-version = "0.10.0"
+version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3b6b85fc643f5acd0bffb2cc8a6d150209379267af0d41db72170021841f9f5"
+checksum = "ece7e668abd21387aeb6628130a6f4c802787f014fa46bc83221448322250357"
 dependencies = [
  "kvdb",
  "parity-util-mem",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
 ]
 
 [[package]]
 name = "kvdb-rocksdb"
-version = "0.14.0"
+version = "0.15.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b1b6ea8f2536f504b645ad78419c8246550e19d2c3419a167080ce08edee35a"
+checksum = "a1e72a631a32527fafe22d0751c002e67d28173c49dcaecf79d1aaa323c520e9"
 dependencies = [
  "fs-swap",
  "kvdb",
@@ -3425,7 +3536,7 @@ dependencies = [
  "num_cpus",
  "owning_ref",
  "parity-util-mem",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "regex",
  "rocksdb",
  "smallvec",
@@ -3961,14 +4072,17 @@ dependencies = [
 
 [[package]]
 name = "librocksdb-sys"
-version = "6.20.3"
+version = "0.6.1+6.28.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c309a9d2470844aceb9a4a098cf5286154d20596868b75a6b36357d2bb9ca25d"
+checksum = "81bc587013734dadb7cf23468e531aa120788b87243648be42e2d3a072186291"
 dependencies = [
  "bindgen",
+ "bzip2-sys",
  "cc",
  "glob",
  "libc",
+ "libz-sys",
+ "tikv-jemalloc-sys",
 ]
 
 [[package]]
@@ -4227,12 +4341,12 @@ dependencies = [
 
 [[package]]
 name = "memory-db"
-version = "0.28.0"
+version = "0.29.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d505169b746dacf02f7d14d8c80b34edfd8212159c63d23c977739a0d960c626"
+checksum = "6566c70c1016f525ced45d7b7f97730a2bafb037c788211d0c186ef5b2189f0a"
 dependencies = [
  "hash-db",
- "hashbrown 0.11.2",
+ "hashbrown 0.12.0",
  "parity-util-mem",
 ]
 
@@ -4799,7 +4913,7 @@ checksum = "20448fd678ec04e6ea15bbe0476874af65e98a01515d667aa49f1434dc44ebf4"
 [[package]]
 name = "pallet-assets"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4813,7 +4927,7 @@ dependencies = [
 [[package]]
 name = "pallet-authority-discovery"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4829,7 +4943,7 @@ dependencies = [
 [[package]]
 name = "pallet-authorship"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4844,7 +4958,7 @@ dependencies = [
 [[package]]
 name = "pallet-babe"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4868,7 +4982,7 @@ dependencies = [
 [[package]]
 name = "pallet-bags-list"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-election-provider-support",
@@ -4888,7 +5002,7 @@ dependencies = [
 [[package]]
 name = "pallet-bags-list-remote-tests"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-election-provider-support",
  "frame-support",
@@ -4908,7 +5022,7 @@ dependencies = [
 [[package]]
 name = "pallet-balances"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4923,7 +5037,7 @@ dependencies = [
 [[package]]
 name = "pallet-beefy"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "beefy-primitives",
  "frame-support",
@@ -4939,14 +5053,14 @@ dependencies = [
 [[package]]
 name = "pallet-beefy-mmr"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "beefy-merkle-tree",
  "beefy-primitives",
  "frame-support",
  "frame-system",
  "hex",
- "libsecp256k1",
+ "k256",
  "log",
  "pallet-beefy",
  "pallet-mmr",
@@ -4964,7 +5078,7 @@ dependencies = [
 [[package]]
 name = "pallet-bounties"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5048,7 +5162,7 @@ dependencies = [
 [[package]]
 name = "pallet-collective"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5065,7 +5179,7 @@ dependencies = [
 [[package]]
 name = "pallet-democracy"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5081,7 +5195,7 @@ dependencies = [
 [[package]]
 name = "pallet-election-provider-multi-phase"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-election-provider-support",
@@ -5104,7 +5218,7 @@ dependencies = [
 [[package]]
 name = "pallet-elections-phragmen"
 version = "5.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5122,7 +5236,7 @@ dependencies = [
 [[package]]
 name = "pallet-gilt"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5137,7 +5251,7 @@ dependencies = [
 [[package]]
 name = "pallet-grandpa"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5160,7 +5274,7 @@ dependencies = [
 [[package]]
 name = "pallet-identity"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "enumflags2",
  "frame-benchmarking",
@@ -5176,7 +5290,7 @@ dependencies = [
 [[package]]
 name = "pallet-im-online"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5196,7 +5310,7 @@ dependencies = [
 [[package]]
 name = "pallet-indices"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5213,7 +5327,7 @@ dependencies = [
 [[package]]
 name = "pallet-membership"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5230,7 +5344,7 @@ dependencies = [
 [[package]]
 name = "pallet-mmr"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "ckb-merkle-mountain-range",
  "frame-benchmarking",
@@ -5248,7 +5362,7 @@ dependencies = [
 [[package]]
 name = "pallet-mmr-primitives"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -5264,7 +5378,7 @@ dependencies = [
 [[package]]
 name = "pallet-mmr-rpc"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "jsonrpc-core",
  "jsonrpc-core-client",
@@ -5281,7 +5395,7 @@ dependencies = [
 [[package]]
 name = "pallet-multisig"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5296,7 +5410,7 @@ dependencies = [
 [[package]]
 name = "pallet-nicks"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -5310,7 +5424,7 @@ dependencies = [
 [[package]]
 name = "pallet-offences"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -5327,7 +5441,7 @@ dependencies = [
 [[package]]
 name = "pallet-offences-benchmarking"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-election-provider-support",
@@ -5350,7 +5464,7 @@ dependencies = [
 [[package]]
 name = "pallet-preimage"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5366,7 +5480,7 @@ dependencies = [
 [[package]]
 name = "pallet-proxy"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5381,7 +5495,7 @@ dependencies = [
 [[package]]
 name = "pallet-recovery"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -5395,7 +5509,7 @@ dependencies = [
 [[package]]
 name = "pallet-scheduler"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5411,7 +5525,7 @@ dependencies = [
 [[package]]
 name = "pallet-session"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -5432,7 +5546,7 @@ dependencies = [
 [[package]]
 name = "pallet-session-benchmarking"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5448,7 +5562,7 @@ dependencies = [
 [[package]]
 name = "pallet-society"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -5462,7 +5576,7 @@ dependencies = [
 [[package]]
 name = "pallet-staking"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-election-provider-support",
@@ -5485,7 +5599,7 @@ dependencies = [
 [[package]]
 name = "pallet-staking-reward-curve"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "proc-macro-crate 1.1.3",
  "proc-macro2",
@@ -5496,7 +5610,7 @@ dependencies = [
 [[package]]
 name = "pallet-staking-reward-fn"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "log",
  "sp-arithmetic",
@@ -5505,7 +5619,7 @@ dependencies = [
 [[package]]
 name = "pallet-sudo"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -5519,7 +5633,7 @@ dependencies = [
 [[package]]
 name = "pallet-timestamp"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5537,7 +5651,7 @@ dependencies = [
 [[package]]
 name = "pallet-tips"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5556,7 +5670,7 @@ dependencies = [
 [[package]]
 name = "pallet-transaction-payment"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -5573,7 +5687,7 @@ dependencies = [
 [[package]]
 name = "pallet-transaction-payment-rpc"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "jsonrpc-core",
  "jsonrpc-core-client",
@@ -5590,7 +5704,7 @@ dependencies = [
 [[package]]
 name = "pallet-transaction-payment-rpc-runtime-api"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "pallet-transaction-payment",
  "parity-scale-codec",
@@ -5601,7 +5715,7 @@ dependencies = [
 [[package]]
 name = "pallet-treasury"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5618,7 +5732,7 @@ dependencies = [
 [[package]]
 name = "pallet-utility"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5634,7 +5748,7 @@ dependencies = [
 [[package]]
 name = "pallet-vesting"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5714,9 +5828,9 @@ dependencies = [
 
 [[package]]
 name = "parity-scale-codec"
-version = "2.3.1"
+version = "3.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909"
+checksum = "2a7f3fcf5e45fc28b84dcdab6b983e77f197ec01f325a33f404ba6855afd1070"
 dependencies = [
  "arrayvec 0.7.2",
  "bitvec",
@@ -5728,9 +5842,9 @@ dependencies = [
 
 [[package]]
 name = "parity-scale-codec-derive"
-version = "2.3.1"
+version = "3.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27"
+checksum = "2c6e626dc84025ff56bf1476ed0e30d10c84d7f89a475ef46ebabee1095a8fba"
 dependencies = [
  "proc-macro-crate 1.1.3",
  "proc-macro2",
@@ -5760,15 +5874,15 @@ dependencies = [
 
 [[package]]
 name = "parity-util-mem"
-version = "0.10.2"
+version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f4cb4e169446179cbc6b8b6320cc9fca49bd2e94e8db25f25f200a8ea774770"
+checksum = "c32561d248d352148124f036cac253a644685a21dc9fea383eb4907d7bd35a8f"
 dependencies = [
  "cfg-if 1.0.0",
- "hashbrown 0.11.2",
+ "hashbrown 0.12.0",
  "impl-trait-for-tuples",
  "parity-util-mem-derive",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "primitive-types",
  "smallvec",
  "tikv-jemalloc-ctl",
@@ -6027,6 +6141,17 @@ version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
 
+[[package]]
+name = "pkcs8"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0"
+dependencies = [
+ "der",
+ "spki",
+ "zeroize",
+]
+
 [[package]]
 name = "pkg-config"
 version = "0.3.22"
@@ -7626,9 +7751,9 @@ dependencies = [
 
 [[package]]
 name = "primitive-types"
-version = "0.10.1"
+version = "0.11.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373"
+checksum = "e28720988bff275df1f51b171e1b2a18c30d194c4d2b61defdacecd625a5d94a"
 dependencies = [
  "fixed-hash",
  "impl-codec",
@@ -7823,9 +7948,9 @@ dependencies = [
 
 [[package]]
 name = "radium"
-version = "0.6.2"
+version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb"
+checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09"
 
 [[package]]
 name = "rand"
@@ -8072,7 +8197,7 @@ dependencies = [
 [[package]]
 name = "remote-externalities"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "env_logger 0.9.0",
  "jsonrpsee 0.8.0",
@@ -8164,9 +8289,9 @@ dependencies = [
 
 [[package]]
 name = "rocksdb"
-version = "0.17.0"
+version = "0.18.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a62eca5cacf2c8261128631bed9f045598d40bfbe4b29f5163f0f802f8f44a7"
+checksum = "620f4129485ff1a7128d184bc687470c21c7951b64779ebc9cfdad3dcd920290"
 dependencies = [
  "libc",
  "librocksdb-sys",
@@ -8419,7 +8544,7 @@ dependencies = [
 [[package]]
 name = "sc-allocator"
 version = "4.1.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "log",
  "sp-core",
@@ -8430,7 +8555,7 @@ dependencies = [
 [[package]]
 name = "sc-authority-discovery"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "async-trait",
  "futures 0.3.21",
@@ -8457,7 +8582,7 @@ dependencies = [
 [[package]]
 name = "sc-basic-authorship"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "futures 0.3.21",
  "futures-timer",
@@ -8480,7 +8605,7 @@ dependencies = [
 [[package]]
 name = "sc-block-builder"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "parity-scale-codec",
  "sc-client-api",
@@ -8496,7 +8621,7 @@ dependencies = [
 [[package]]
 name = "sc-chain-spec"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "impl-trait-for-tuples",
  "memmap2 0.5.0",
@@ -8513,7 +8638,7 @@ dependencies = [
 [[package]]
 name = "sc-chain-spec-derive"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "proc-macro-crate 1.1.3",
  "proc-macro2",
@@ -8524,7 +8649,7 @@ dependencies = [
 [[package]]
 name = "sc-cli"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "chrono",
  "clap",
@@ -8562,14 +8687,14 @@ dependencies = [
 [[package]]
 name = "sc-client-api"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "fnv",
  "futures 0.3.21",
  "hash-db",
  "log",
  "parity-scale-codec",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "sc-executor",
  "sc-transaction-pool-api",
  "sc-utils",
@@ -8590,7 +8715,7 @@ dependencies = [
 [[package]]
 name = "sc-client-db"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "hash-db",
  "kvdb",
@@ -8600,7 +8725,7 @@ dependencies = [
  "log",
  "parity-db",
  "parity-scale-codec",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "sc-client-api",
  "sc-state-db",
  "sp-arithmetic",
@@ -8615,14 +8740,14 @@ dependencies = [
 [[package]]
 name = "sc-consensus"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "async-trait",
  "futures 0.3.21",
  "futures-timer",
  "libp2p",
  "log",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "sc-client-api",
  "sc-utils",
  "serde",
@@ -8639,7 +8764,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-babe"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "async-trait",
  "fork-tree",
@@ -8650,7 +8775,7 @@ dependencies = [
  "num-rational 0.2.4",
  "num-traits",
  "parity-scale-codec",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "rand 0.7.3",
  "retain_mut",
  "sc-client-api",
@@ -8682,7 +8807,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-babe-rpc"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "futures 0.3.21",
  "jsonrpc-core",
@@ -8706,7 +8831,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-epochs"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "fork-tree",
  "parity-scale-codec",
@@ -8719,7 +8844,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-slots"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "async-trait",
  "futures 0.3.21",
@@ -8744,7 +8869,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-uncles"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "sc-client-api",
  "sp-authorship",
@@ -8755,13 +8880,13 @@ dependencies = [
 [[package]]
 name = "sc-executor"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "lazy_static",
  "libsecp256k1",
  "lru 0.6.6",
  "parity-scale-codec",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "sc-executor-common",
  "sc-executor-wasmi",
  "sc-executor-wasmtime",
@@ -8783,7 +8908,7 @@ dependencies = [
 [[package]]
 name = "sc-executor-common"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "environmental",
  "parity-scale-codec",
@@ -8800,7 +8925,7 @@ dependencies = [
 [[package]]
 name = "sc-executor-wasmi"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "log",
  "parity-scale-codec",
@@ -8816,7 +8941,7 @@ dependencies = [
 [[package]]
 name = "sc-executor-wasmtime"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "cfg-if 1.0.0",
  "libc",
@@ -8834,7 +8959,7 @@ dependencies = [
 [[package]]
 name = "sc-finality-grandpa"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "ahash",
  "async-trait",
@@ -8845,7 +8970,7 @@ dependencies = [
  "futures-timer",
  "log",
  "parity-scale-codec",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "rand 0.8.5",
  "sc-block-builder",
  "sc-chain-spec",
@@ -8873,7 +8998,7 @@ dependencies = [
 [[package]]
 name = "sc-finality-grandpa-rpc"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "finality-grandpa",
  "futures 0.3.21",
@@ -8897,7 +9022,7 @@ dependencies = [
 [[package]]
 name = "sc-informant"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "ansi_term",
  "futures 0.3.21",
@@ -8914,11 +9039,11 @@ dependencies = [
 [[package]]
 name = "sc-keystore"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "async-trait",
  "hex",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "serde_json",
  "sp-application-crypto",
  "sp-core",
@@ -8929,9 +9054,8 @@ dependencies = [
 [[package]]
 name = "sc-network"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
- "async-std",
  "async-trait",
  "asynchronous-codec 0.5.0",
  "bitflags",
@@ -8950,7 +9074,7 @@ dependencies = [
  "log",
  "lru 0.7.2",
  "parity-scale-codec",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "pin-project 1.0.10",
  "prost",
  "prost-build",
@@ -8979,7 +9103,7 @@ dependencies = [
 [[package]]
 name = "sc-network-gossip"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "ahash",
  "futures 0.3.21",
@@ -8996,7 +9120,7 @@ dependencies = [
 [[package]]
 name = "sc-offchain"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "bytes 1.1.0",
  "fnv",
@@ -9008,7 +9132,7 @@ dependencies = [
  "num_cpus",
  "once_cell",
  "parity-scale-codec",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "rand 0.7.3",
  "sc-client-api",
  "sc-network",
@@ -9024,7 +9148,7 @@ dependencies = [
 [[package]]
 name = "sc-peerset"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "futures 0.3.21",
  "libp2p",
@@ -9037,7 +9161,7 @@ dependencies = [
 [[package]]
 name = "sc-proposer-metrics"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "log",
  "substrate-prometheus-endpoint",
@@ -9046,7 +9170,7 @@ dependencies = [
 [[package]]
 name = "sc-rpc"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "futures 0.3.21",
  "hash-db",
@@ -9054,7 +9178,7 @@ dependencies = [
  "jsonrpc-pubsub",
  "log",
  "parity-scale-codec",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "sc-block-builder",
  "sc-chain-spec",
  "sc-client-api",
@@ -9077,7 +9201,7 @@ dependencies = [
 [[package]]
 name = "sc-rpc-api"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "futures 0.3.21",
  "jsonrpc-core",
@@ -9086,7 +9210,7 @@ dependencies = [
  "jsonrpc-pubsub",
  "log",
  "parity-scale-codec",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "sc-chain-spec",
  "sc-transaction-pool-api",
  "serde",
@@ -9102,7 +9226,7 @@ dependencies = [
 [[package]]
 name = "sc-rpc-server"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "futures 0.3.21",
  "jsonrpc-core",
@@ -9119,7 +9243,7 @@ dependencies = [
 [[package]]
 name = "sc-service"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "async-trait",
  "directories",
@@ -9132,7 +9256,7 @@ dependencies = [
  "log",
  "parity-scale-codec",
  "parity-util-mem",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "pin-project 1.0.10",
  "rand 0.7.3",
  "sc-block-builder",
@@ -9183,13 +9307,13 @@ dependencies = [
 [[package]]
 name = "sc-state-db"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "log",
  "parity-scale-codec",
  "parity-util-mem",
  "parity-util-mem-derive",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "sc-client-api",
  "sp-core",
 ]
@@ -9197,7 +9321,7 @@ dependencies = [
 [[package]]
 name = "sc-sync-state-rpc"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "jsonrpc-core",
  "jsonrpc-core-client",
@@ -9218,13 +9342,13 @@ dependencies = [
 [[package]]
 name = "sc-telemetry"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "chrono",
  "futures 0.3.21",
  "libp2p",
  "log",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "pin-project 1.0.10",
  "rand 0.7.3",
  "serde",
@@ -9236,7 +9360,7 @@ dependencies = [
 [[package]]
 name = "sc-tracing"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "ansi_term",
  "atty",
@@ -9245,7 +9369,7 @@ dependencies = [
  "libc",
  "log",
  "once_cell",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "regex",
  "rustc-hash",
  "sc-client-api",
@@ -9267,7 +9391,7 @@ dependencies = [
 [[package]]
 name = "sc-tracing-proc-macro"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "proc-macro-crate 1.1.3",
  "proc-macro2",
@@ -9278,7 +9402,7 @@ dependencies = [
 [[package]]
 name = "sc-transaction-pool"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "futures 0.3.21",
  "futures-timer",
@@ -9286,7 +9410,7 @@ dependencies = [
  "log",
  "parity-scale-codec",
  "parity-util-mem",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "retain_mut",
  "sc-client-api",
  "sc-transaction-pool-api",
@@ -9305,7 +9429,7 @@ dependencies = [
 [[package]]
 name = "sc-transaction-pool-api"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "futures 0.3.21",
  "log",
@@ -9318,20 +9442,20 @@ dependencies = [
 [[package]]
 name = "sc-utils"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "futures 0.3.21",
  "futures-timer",
  "lazy_static",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "prometheus",
 ]
 
 [[package]]
 name = "scale-info"
-version = "1.0.0"
+version = "2.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c55b744399c25532d63a0d2789b109df8d46fc93752d46b0782991a931a782f"
+checksum = "0563970d79bcbf3c537ce3ad36d859b30d36fc5b190efd227f1f7a84d7cf0d42"
 dependencies = [
  "bitvec",
  "cfg-if 1.0.0",
@@ -9343,9 +9467,9 @@ dependencies = [
 
 [[package]]
 name = "scale-info-derive"
-version = "1.0.0"
+version = "2.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baeb2780690380592f86205aa4ee49815feb2acad8c2f59e6dd207148c3f1fcd"
+checksum = "b7805950c36512db9e3251c970bb7ac425f326716941862205d612ab3b5e46e2"
 dependencies = [
  "proc-macro-crate 1.1.3",
  "proc-macro2",
@@ -9413,6 +9537,19 @@ dependencies = [
  "untrusted",
 ]
 
+[[package]]
+name = "sec1"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08da66b8b0965a5555b6bd6639e68ccba85e1e2506f5fbb089e93f8a04e1a2d1"
+dependencies = [
+ "der",
+ "generic-array 0.14.4",
+ "pkcs8",
+ "subtle",
+ "zeroize",
+]
+
 [[package]]
 name = "secrecy"
 version = "0.8.0"
@@ -9669,6 +9806,9 @@ name = "signature"
 version = "1.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "02658e48d89f2bec991f9a78e69cfa4c316f8d6a6c4ec12fae1aeb263d486788"
+dependencies = [
+ "rand_core 0.6.3",
+]
 
 [[package]]
 name = "simba"
@@ -9778,7 +9918,7 @@ dependencies = [
 [[package]]
 name = "sp-api"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "hash-db",
  "log",
@@ -9795,7 +9935,7 @@ dependencies = [
 [[package]]
 name = "sp-api-proc-macro"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "blake2 0.10.2",
  "proc-macro-crate 1.1.3",
@@ -9807,7 +9947,7 @@ dependencies = [
 [[package]]
 name = "sp-application-crypto"
 version = "5.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -9820,7 +9960,7 @@ dependencies = [
 [[package]]
 name = "sp-arithmetic"
 version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "integer-sqrt",
  "num-traits",
@@ -9835,7 +9975,7 @@ dependencies = [
 [[package]]
 name = "sp-authority-discovery"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -9848,7 +9988,7 @@ dependencies = [
 [[package]]
 name = "sp-authorship"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "async-trait",
  "parity-scale-codec",
@@ -9860,7 +10000,7 @@ dependencies = [
 [[package]]
 name = "sp-block-builder"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "parity-scale-codec",
  "sp-api",
@@ -9872,13 +10012,13 @@ dependencies = [
 [[package]]
 name = "sp-blockchain"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "futures 0.3.21",
  "log",
  "lru 0.7.2",
  "parity-scale-codec",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "sp-api",
  "sp-consensus",
  "sp-database",
@@ -9890,7 +10030,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "async-trait",
  "futures 0.3.21",
@@ -9909,7 +10049,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus-babe"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "async-trait",
  "merlin",
@@ -9932,7 +10072,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus-slots"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -9946,7 +10086,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus-vrf"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "parity-scale-codec",
  "schnorrkel",
@@ -9958,7 +10098,7 @@ dependencies = [
 [[package]]
 name = "sp-core"
 version = "5.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "base58",
  "bitflags",
@@ -9978,7 +10118,7 @@ dependencies = [
  "num-traits",
  "parity-scale-codec",
  "parity-util-mem",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "primitive-types",
  "rand 0.7.3",
  "regex",
@@ -10003,7 +10143,7 @@ dependencies = [
 [[package]]
 name = "sp-core-hashing"
 version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "blake2 0.10.2",
  "byteorder",
@@ -10017,7 +10157,7 @@ dependencies = [
 [[package]]
 name = "sp-core-hashing-proc-macro"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -10028,16 +10168,16 @@ dependencies = [
 [[package]]
 name = "sp-database"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "kvdb",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
 ]
 
 [[package]]
 name = "sp-debug-derive"
 version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -10047,7 +10187,7 @@ dependencies = [
 [[package]]
 name = "sp-externalities"
 version = "0.11.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "environmental",
  "parity-scale-codec",
@@ -10058,7 +10198,7 @@ dependencies = [
 [[package]]
 name = "sp-finality-grandpa"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "finality-grandpa",
  "log",
@@ -10076,7 +10216,7 @@ dependencies = [
 [[package]]
 name = "sp-inherents"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "async-trait",
  "impl-trait-for-tuples",
@@ -10090,14 +10230,14 @@ dependencies = [
 [[package]]
 name = "sp-io"
 version = "5.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "futures 0.3.21",
  "hash-db",
  "libsecp256k1",
  "log",
  "parity-scale-codec",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "sp-core",
  "sp-externalities",
  "sp-keystore",
@@ -10114,7 +10254,7 @@ dependencies = [
 [[package]]
 name = "sp-keyring"
 version = "5.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "lazy_static",
  "sp-core",
@@ -10125,13 +10265,13 @@ dependencies = [
 [[package]]
 name = "sp-keystore"
 version = "0.11.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "async-trait",
  "futures 0.3.21",
  "merlin",
  "parity-scale-codec",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "schnorrkel",
  "serde",
  "sp-core",
@@ -10142,7 +10282,7 @@ dependencies = [
 [[package]]
 name = "sp-maybe-compressed-blob"
 version = "4.1.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "thiserror",
  "zstd",
@@ -10151,7 +10291,7 @@ dependencies = [
 [[package]]
 name = "sp-npos-elections"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -10166,7 +10306,7 @@ dependencies = [
 [[package]]
 name = "sp-npos-elections-solution-type"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "proc-macro-crate 1.1.3",
  "proc-macro2",
@@ -10177,7 +10317,7 @@ dependencies = [
 [[package]]
 name = "sp-offchain"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "sp-api",
  "sp-core",
@@ -10187,7 +10327,7 @@ dependencies = [
 [[package]]
 name = "sp-panic-handler"
 version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "backtrace",
  "lazy_static",
@@ -10197,7 +10337,7 @@ dependencies = [
 [[package]]
 name = "sp-rpc"
 version = "5.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "rustc-hash",
  "serde",
@@ -10207,7 +10347,7 @@ dependencies = [
 [[package]]
 name = "sp-runtime"
 version = "5.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "either",
  "hash256-std-hasher",
@@ -10229,7 +10369,7 @@ dependencies = [
 [[package]]
 name = "sp-runtime-interface"
 version = "5.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "impl-trait-for-tuples",
  "parity-scale-codec",
@@ -10246,7 +10386,7 @@ dependencies = [
 [[package]]
 name = "sp-runtime-interface-proc-macro"
 version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "Inflector",
  "proc-macro-crate 1.1.3",
@@ -10258,7 +10398,7 @@ dependencies = [
 [[package]]
 name = "sp-serializer"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "serde",
  "serde_json",
@@ -10267,7 +10407,7 @@ dependencies = [
 [[package]]
 name = "sp-session"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -10281,7 +10421,7 @@ dependencies = [
 [[package]]
 name = "sp-staking"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -10292,13 +10432,13 @@ dependencies = [
 [[package]]
 name = "sp-state-machine"
 version = "0.11.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "hash-db",
  "log",
  "num-traits",
  "parity-scale-codec",
- "parking_lot 0.11.2",
+ "parking_lot 0.12.0",
  "rand 0.7.3",
  "smallvec",
  "sp-core",
@@ -10315,12 +10455,12 @@ dependencies = [
 [[package]]
 name = "sp-std"
 version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 
 [[package]]
 name = "sp-storage"
 version = "5.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "impl-serde",
  "parity-scale-codec",
@@ -10333,7 +10473,7 @@ dependencies = [
 [[package]]
 name = "sp-tasks"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "log",
  "sp-core",
@@ -10346,7 +10486,7 @@ dependencies = [
 [[package]]
 name = "sp-timestamp"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "async-trait",
  "futures-timer",
@@ -10362,7 +10502,7 @@ dependencies = [
 [[package]]
 name = "sp-tracing"
 version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "parity-scale-codec",
  "sp-std",
@@ -10374,7 +10514,7 @@ dependencies = [
 [[package]]
 name = "sp-transaction-pool"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "sp-api",
  "sp-runtime",
@@ -10383,7 +10523,7 @@ dependencies = [
 [[package]]
 name = "sp-transaction-storage-proof"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "async-trait",
  "log",
@@ -10399,7 +10539,7 @@ dependencies = [
 [[package]]
 name = "sp-trie"
 version = "5.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "hash-db",
  "memory-db",
@@ -10414,7 +10554,7 @@ dependencies = [
 [[package]]
 name = "sp-version"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "impl-serde",
  "parity-scale-codec",
@@ -10431,7 +10571,7 @@ dependencies = [
 [[package]]
 name = "sp-version-proc-macro"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "parity-scale-codec",
  "proc-macro2",
@@ -10442,7 +10582,7 @@ dependencies = [
 [[package]]
 name = "sp-wasm-interface"
 version = "5.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "impl-trait-for-tuples",
  "log",
@@ -10458,6 +10598,16 @@ version = "0.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
 
+[[package]]
+name = "spki"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27"
+dependencies = [
+ "base64ct",
+ "der",
+]
+
 [[package]]
 name = "ss58-registry"
 version = "1.12.0"
@@ -10632,7 +10782,7 @@ dependencies = [
 [[package]]
 name = "substrate-build-script-utils"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "platforms",
 ]
@@ -10640,7 +10790,7 @@ dependencies = [
 [[package]]
 name = "substrate-frame-rpc-system"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "frame-system-rpc-runtime-api",
  "futures 0.3.21",
@@ -10662,9 +10812,8 @@ dependencies = [
 [[package]]
 name = "substrate-prometheus-endpoint"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
- "async-std",
  "futures-util",
  "hyper",
  "log",
@@ -10676,7 +10825,7 @@ dependencies = [
 [[package]]
 name = "substrate-test-client"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "async-trait",
  "futures 0.3.21",
@@ -10702,7 +10851,7 @@ dependencies = [
 [[package]]
 name = "substrate-test-utils"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "futures 0.3.21",
  "substrate-test-utils-derive",
@@ -10712,7 +10861,7 @@ dependencies = [
 [[package]]
 name = "substrate-test-utils-derive"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "proc-macro-crate 1.1.3",
  "proc-macro2",
@@ -10723,7 +10872,7 @@ dependencies = [
 [[package]]
 name = "substrate-wasm-builder"
 version = "5.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "ansi_term",
  "build-helper",
@@ -11342,7 +11491,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642"
 [[package]]
 name = "try-runtime-cli"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#42b2d623d058197aebc3c737fb44fbbf278a85b4"
+source = "git+https://github.com/paritytech/substrate?branch=master#c22fce5a311beede13479c9a00cca85d823b6b00"
 dependencies = [
  "clap",
  "jsonrpsee 0.4.1",
@@ -11409,7 +11558,7 @@ version = "1.6.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4ee73e6e4924fe940354b8d4d98cad5231175d615cd855b758adc658c0aac6a0"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if 0.1.10",
  "digest 0.10.2",
  "rand 0.8.5",
  "static_assertions",
@@ -12214,9 +12363,12 @@ dependencies = [
 
 [[package]]
 name = "wyz"
-version = "0.2.0"
+version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214"
+checksum = "30b31594f29d27036c383b53b59ed3476874d518f0efb151b27a4c275141390e"
+dependencies = [
+ "tap",
+]
 
 [[package]]
 name = "x25519-dalek"
diff --git a/polkadot/Cargo.toml b/polkadot/Cargo.toml
index 491c587242690eb19ef6d052616fc3abd9b43262..190a3ca2f87a677993d8f6929600c1ab1ea8b9c5 100644
--- a/polkadot/Cargo.toml
+++ b/polkadot/Cargo.toml
@@ -15,7 +15,7 @@ readme = "README.md"
 [dependencies]
 polkadot-cli = { path = "cli", features = [ "kusama-native", "westend-native", "rococo-native" ]  }
 color-eyre = { version = "0.6.0", default-features = false }
-parity-util-mem = { version = "*", default-features = false, features = ["jemalloc-global"] }
+parity-util-mem = { version = "0.11.0", default-features = false, features = ["jemalloc-global"] }
 
 [dev-dependencies]
 assert_cmd = "2.0.4"
diff --git a/polkadot/bridges/bin/millau/runtime/src/lib.rs b/polkadot/bridges/bin/millau/runtime/src/lib.rs
index d698df0f47ed4f808ed0e9d94cc9a63fb9952bee..97fe4d49bc5f119dcd5e23cbf9e049b27761bfa2 100644
--- a/polkadot/bridges/bin/millau/runtime/src/lib.rs
+++ b/polkadot/bridges/bin/millau/runtime/src/lib.rs
@@ -21,8 +21,6 @@
 #![recursion_limit = "256"]
 // Runtime-generated enums
 #![allow(clippy::large_enum_variant)]
-// Runtime-generated DecodeLimit::decode_all_With_depth_limit
-#![allow(clippy::unnecessary_mut_passed)]
 // From construct_runtime macro
 #![allow(clippy::from_over_into)]
 
diff --git a/polkadot/bridges/bin/rialto/runtime/src/lib.rs b/polkadot/bridges/bin/rialto/runtime/src/lib.rs
index 0d48b96c65483797697ea61a3286ab4d01359f7d..75f7eabe8d27ab8a7187c6fb0e86f11ed806d5ae 100644
--- a/polkadot/bridges/bin/rialto/runtime/src/lib.rs
+++ b/polkadot/bridges/bin/rialto/runtime/src/lib.rs
@@ -21,8 +21,6 @@
 #![recursion_limit = "256"]
 // Runtime-generated enums
 #![allow(clippy::large_enum_variant)]
-// Runtime-generated DecodeLimit::decode_all_With_depth_limit
-#![allow(clippy::unnecessary_mut_passed)]
 // From construct_runtime macro
 #![allow(clippy::from_over_into)]
 
diff --git a/polkadot/bridges/bin/runtime-common/Cargo.toml b/polkadot/bridges/bin/runtime-common/Cargo.toml
index 4e693f05451c97de2d7452c9e3137976393dc0f6..c7885f617482bd34d1d31b93250f341f0204c64a 100644
--- a/polkadot/bridges/bin/runtime-common/Cargo.toml
+++ b/polkadot/bridges/bin/runtime-common/Cargo.toml
@@ -8,10 +8,10 @@ repository = "https://github.com/paritytech/parity-bridges-common/"
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false, features = ["derive"] }
+codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] }
 ed25519-dalek = { version = "1.0", default-features = false, optional = true }
 hash-db = { version = "0.15.2", default-features = false }
-scale-info = { version = "1.0", default-features = false, features = ["derive"] }
+scale-info = { version = "2.0.0", default-features = false, features = ["derive"] }
 
 # Bridge dependencies
 
diff --git a/polkadot/bridges/modules/dispatch/Cargo.toml b/polkadot/bridges/modules/dispatch/Cargo.toml
index 1d91d0a0509420ecb0fea19cbe4c0e84003101c5..f6d9ff457f5a971385fd7031107d5a2bb6156566 100644
--- a/polkadot/bridges/modules/dispatch/Cargo.toml
+++ b/polkadot/bridges/modules/dispatch/Cargo.toml
@@ -7,9 +7,9 @@ edition = "2018"
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false }
+codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false }
 log = { version = "0.4.14", default-features = false }
-scale-info = { version = "1.0", default-features = false, features = ["derive"] }
+scale-info = { version = "2.0.0", default-features = false, features = ["derive"] }
 
 # Bridge dependencies
 
diff --git a/polkadot/bridges/modules/grandpa/Cargo.toml b/polkadot/bridges/modules/grandpa/Cargo.toml
index 01195abe89e16435dfd6cd7c9fce164e1c86103d..5f4057ceb099755fc71e1ec28668244df813c9fc 100644
--- a/polkadot/bridges/modules/grandpa/Cargo.toml
+++ b/polkadot/bridges/modules/grandpa/Cargo.toml
@@ -8,11 +8,11 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false }
-finality-grandpa = { version = "0.14.0", default-features = false }
+codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false }
+finality-grandpa = { version = "0.15.0", default-features = false }
 log = { version = "0.4.14", default-features = false }
 num-traits = { version = "0.2", default-features = false }
-scale-info = { version = "1.0", default-features = false, features = ["derive"] }
+scale-info = { version = "2.0.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0", optional = true }
 
 # Bridge Dependencies
diff --git a/polkadot/bridges/modules/messages/Cargo.toml b/polkadot/bridges/modules/messages/Cargo.toml
index b48bdc5c0ffd092838ec00bc21bac7b3ad880a57..ef7bf5535543ac69ddf37c0d4cc7524f5605e75f 100644
--- a/polkadot/bridges/modules/messages/Cargo.toml
+++ b/polkadot/bridges/modules/messages/Cargo.toml
@@ -7,11 +7,11 @@ edition = "2018"
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 
 [dependencies]
-bitvec = { version = "0.20", default-features = false, features = ["alloc"] }
-codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false }
+bitvec = { version = "1.0.0", default-features = false, features = ["alloc"] }
+codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false }
 log = { version = "0.4.14", default-features = false }
 num-traits = { version = "0.2", default-features = false }
-scale-info = { version = "1.0", default-features = false, features = ["derive"] }
+scale-info = { version = "2.0.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.101", optional = true, features = ["derive"] }
 
 # Bridge dependencies
diff --git a/polkadot/bridges/modules/messages/src/mock.rs b/polkadot/bridges/modules/messages/src/mock.rs
index ef5081472279b374bc4b147164a97f8a13f038c0..01b51e6dda3af40d96e060e5ab00b7952bfd8be4 100644
--- a/polkadot/bridges/modules/messages/src/mock.rs
+++ b/polkadot/bridges/modules/messages/src/mock.rs
@@ -530,7 +530,7 @@ pub fn unrewarded_relayer(
 			begin,
 			end,
 			dispatch_results: if end >= begin {
-				bitvec![Msb0, u8; 1; (end - begin + 1) as _]
+				bitvec![u8, Msb0; 1; (end - begin + 1) as _]
 			} else {
 				Default::default()
 			},
diff --git a/polkadot/bridges/modules/messages/src/outbound_lane.rs b/polkadot/bridges/modules/messages/src/outbound_lane.rs
index c05437596db82af9f4ca4d3bacae457aa32c58dc..cfdc81acc315b807288a320acb80bddd14b4da88 100644
--- a/polkadot/bridges/modules/messages/src/outbound_lane.rs
+++ b/polkadot/bridges/modules/messages/src/outbound_lane.rs
@@ -260,7 +260,7 @@ mod tests {
 		DeliveredMessages {
 			begin: *nonces.start(),
 			end: *nonces.end(),
-			dispatch_results: bitvec![Msb0, u8; 1; (nonces.end() - nonces.start() + 1) as _],
+			dispatch_results: bitvec![u8, Msb0; 1; (nonces.end() - nonces.start() + 1) as _],
 		}
 	}
 
diff --git a/polkadot/bridges/primitives/chain-kusama/src/lib.rs b/polkadot/bridges/primitives/chain-kusama/src/lib.rs
index 9a6eb66d22865be745cf65c15e85a7ebd2252667..c01f5691d4080867bb9241968ef365d1b4935523 100644
--- a/polkadot/bridges/primitives/chain-kusama/src/lib.rs
+++ b/polkadot/bridges/primitives/chain-kusama/src/lib.rs
@@ -17,8 +17,6 @@
 #![cfg_attr(not(feature = "std"), no_std)]
 // RuntimeApi generated functions
 #![allow(clippy::too_many_arguments)]
-// Runtime-generated DecodeLimit::decode_all_with_depth_limit
-#![allow(clippy::unnecessary_mut_passed)]
 
 use bp_messages::{LaneId, MessageDetails, MessageNonce, UnrewardedRelayersState};
 use frame_support::weights::{
diff --git a/polkadot/bridges/primitives/chain-millau/src/lib.rs b/polkadot/bridges/primitives/chain-millau/src/lib.rs
index 0092f7092bc0d309c2d2af0cf425633338f586e6..f86430fe9b236f969b2133e33e16170fccec3c75 100644
--- a/polkadot/bridges/primitives/chain-millau/src/lib.rs
+++ b/polkadot/bridges/primitives/chain-millau/src/lib.rs
@@ -17,8 +17,6 @@
 #![cfg_attr(not(feature = "std"), no_std)]
 // RuntimeApi generated functions
 #![allow(clippy::too_many_arguments)]
-// Runtime-generated DecodeLimit::decode_all_With_depth_limit
-#![allow(clippy::unnecessary_mut_passed)]
 
 mod millau_hash;
 
diff --git a/polkadot/bridges/primitives/chain-polkadot/src/lib.rs b/polkadot/bridges/primitives/chain-polkadot/src/lib.rs
index 26bad1ea8656d1e441b18a6712ca99c55e8a3e97..2e2bdaa90cb5a87b615bd4e2cb8d1be0937c50f0 100644
--- a/polkadot/bridges/primitives/chain-polkadot/src/lib.rs
+++ b/polkadot/bridges/primitives/chain-polkadot/src/lib.rs
@@ -17,8 +17,6 @@
 #![cfg_attr(not(feature = "std"), no_std)]
 // RuntimeApi generated functions
 #![allow(clippy::too_many_arguments)]
-// Runtime-generated DecodeLimit::decode_all_with_depth_limit
-#![allow(clippy::unnecessary_mut_passed)]
 
 use bp_messages::{LaneId, MessageDetails, MessageNonce, UnrewardedRelayersState};
 use frame_support::weights::{
diff --git a/polkadot/bridges/primitives/chain-rialto-parachain/src/lib.rs b/polkadot/bridges/primitives/chain-rialto-parachain/src/lib.rs
index 826f6d39bd7f73b9d04578d34715c25e5cc530af..70da878ff9076c389398d2e5d5b25f24ee61f753 100644
--- a/polkadot/bridges/primitives/chain-rialto-parachain/src/lib.rs
+++ b/polkadot/bridges/primitives/chain-rialto-parachain/src/lib.rs
@@ -17,8 +17,6 @@
 #![cfg_attr(not(feature = "std"), no_std)]
 // RuntimeApi generated functions
 #![allow(clippy::too_many_arguments)]
-// Runtime-generated DecodeLimit::decode_all_With_depth_limit
-#![allow(clippy::unnecessary_mut_passed)]
 
 use bp_runtime::Chain;
 use frame_support::{
diff --git a/polkadot/bridges/primitives/chain-rialto/src/lib.rs b/polkadot/bridges/primitives/chain-rialto/src/lib.rs
index 6c4e48301e3bbd6abbadffb0985245d2d605e84d..30269a65b821298293d07ca45c0455cede1a9ba1 100644
--- a/polkadot/bridges/primitives/chain-rialto/src/lib.rs
+++ b/polkadot/bridges/primitives/chain-rialto/src/lib.rs
@@ -17,8 +17,6 @@
 #![cfg_attr(not(feature = "std"), no_std)]
 // RuntimeApi generated functions
 #![allow(clippy::too_many_arguments)]
-// Runtime-generated DecodeLimit::decode_all_With_depth_limit
-#![allow(clippy::unnecessary_mut_passed)]
 
 use bp_messages::{LaneId, MessageDetails, MessageNonce, UnrewardedRelayersState};
 use bp_runtime::Chain;
diff --git a/polkadot/bridges/primitives/chain-rococo/Cargo.toml b/polkadot/bridges/primitives/chain-rococo/Cargo.toml
index 6e1189b05f3635d9b4fbd8c0e965ea35b2fda3f8..3fc52783045b2356585f8bf7231e5e895400372e 100644
--- a/polkadot/bridges/primitives/chain-rococo/Cargo.toml
+++ b/polkadot/bridges/primitives/chain-rococo/Cargo.toml
@@ -7,7 +7,7 @@ edition = "2018"
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 
 [dependencies]
-parity-scale-codec = { version = "2.2.0", default-features = false, features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"] }
 smallvec = "1.7"
 
 # Bridge Dependencies
diff --git a/polkadot/bridges/primitives/chain-rococo/src/lib.rs b/polkadot/bridges/primitives/chain-rococo/src/lib.rs
index 55741952c5c3e51cc9e7709544668c16c764a71a..8cd22eef60958efa7e0bc667d8b612b6bb81f8ac 100644
--- a/polkadot/bridges/primitives/chain-rococo/src/lib.rs
+++ b/polkadot/bridges/primitives/chain-rococo/src/lib.rs
@@ -17,8 +17,6 @@
 #![cfg_attr(not(feature = "std"), no_std)]
 // RuntimeApi generated functions
 #![allow(clippy::too_many_arguments)]
-// Runtime-generated DecodeLimit::decode_all_with_depth_limit
-#![allow(clippy::unnecessary_mut_passed)]
 
 use bp_messages::{LaneId, MessageDetails, MessageNonce, UnrewardedRelayersState};
 use frame_support::weights::{
diff --git a/polkadot/bridges/primitives/chain-westend/src/lib.rs b/polkadot/bridges/primitives/chain-westend/src/lib.rs
index 8beb897f59a15b8b22deeb88fd6099147aab98a9..7c9b2b65debaafec4e34f692744949f837eb4754 100644
--- a/polkadot/bridges/primitives/chain-westend/src/lib.rs
+++ b/polkadot/bridges/primitives/chain-westend/src/lib.rs
@@ -17,8 +17,6 @@
 #![cfg_attr(not(feature = "std"), no_std)]
 // RuntimeApi generated functions
 #![allow(clippy::too_many_arguments)]
-// Runtime-generated DecodeLimit::decode_all_with_depth_limit
-#![allow(clippy::unnecessary_mut_passed)]
 
 use bp_messages::{LaneId, MessageDetails, MessageNonce, UnrewardedRelayersState};
 use frame_support::weights::{
diff --git a/polkadot/bridges/primitives/chain-wococo/Cargo.toml b/polkadot/bridges/primitives/chain-wococo/Cargo.toml
index d99783695ad313828e2dd4c4f259233c39b99ed5..d781de91dfcb6f3fdc698cb0c488a95fbb5de707 100644
--- a/polkadot/bridges/primitives/chain-wococo/Cargo.toml
+++ b/polkadot/bridges/primitives/chain-wococo/Cargo.toml
@@ -7,7 +7,7 @@ edition = "2018"
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 
 [dependencies]
-parity-scale-codec = { version = "2.2.0", default-features = false, features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"] }
 
 # Bridge Dependencies
 bp-messages = { path = "../messages", default-features = false }
diff --git a/polkadot/bridges/primitives/chain-wococo/src/lib.rs b/polkadot/bridges/primitives/chain-wococo/src/lib.rs
index fe2ce3a309a6bf6ab6ab16bf2390980472a8511b..d071cf8279ea62383fd9a72f315f8a8334baffa7 100644
--- a/polkadot/bridges/primitives/chain-wococo/src/lib.rs
+++ b/polkadot/bridges/primitives/chain-wococo/src/lib.rs
@@ -17,8 +17,6 @@
 #![cfg_attr(not(feature = "std"), no_std)]
 // RuntimeApi generated functions
 #![allow(clippy::too_many_arguments)]
-// Runtime-generated DecodeLimit::decode_all_with_depth_limit
-#![allow(clippy::unnecessary_mut_passed)]
 
 use bp_messages::{LaneId, MessageDetails, MessageNonce, UnrewardedRelayersState};
 use sp_std::prelude::*;
diff --git a/polkadot/bridges/primitives/header-chain/Cargo.toml b/polkadot/bridges/primitives/header-chain/Cargo.toml
index 76b710247f746c0358791a9e7f714dd18eec7bb9..447f67c8df28ae4727c00ef5df0f3df4428aea16 100644
--- a/polkadot/bridges/primitives/header-chain/Cargo.toml
+++ b/polkadot/bridges/primitives/header-chain/Cargo.toml
@@ -7,9 +7,9 @@ edition = "2018"
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false }
-finality-grandpa = { version = "0.14.0", default-features = false }
-scale-info = { version = "1.0", default-features = false, features = ["derive"] }
+codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false }
+finality-grandpa = { version = "0.15.0", default-features = false }
+scale-info = { version = "2.0.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0", optional = true }
 
 # Substrate Dependencies
diff --git a/polkadot/bridges/primitives/message-dispatch/Cargo.toml b/polkadot/bridges/primitives/message-dispatch/Cargo.toml
index 9897b3199781db61b2e3dd98698b272cd92a4f8e..ed2e90accd572d3b74918efbeaf2c917207fe42a 100644
--- a/polkadot/bridges/primitives/message-dispatch/Cargo.toml
+++ b/polkadot/bridges/primitives/message-dispatch/Cargo.toml
@@ -8,8 +8,8 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 
 [dependencies]
 bp-runtime = { path = "../runtime", default-features = false }
-codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false }
-scale-info = { version = "1.0", default-features = false, features = ["derive"] }
+codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false }
+scale-info = { version = "2.0.0", default-features = false, features = ["derive"] }
 
 # Substrate Dependencies
 
diff --git a/polkadot/bridges/primitives/messages/Cargo.toml b/polkadot/bridges/primitives/messages/Cargo.toml
index 31ec46222cd890aa2a3e13a3724937c3e2e1cfc9..1271ce616c949ad4abc4f443214878821684db7b 100644
--- a/polkadot/bridges/primitives/messages/Cargo.toml
+++ b/polkadot/bridges/primitives/messages/Cargo.toml
@@ -7,10 +7,10 @@ edition = "2018"
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 
 [dependencies]
-bitvec = { version = "0.20", default-features = false, features = ["alloc"] }
-codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false, features = ["derive", "bit-vec"] }
+bitvec = { version = "1.0.0", default-features = false, features = ["alloc"] }
+codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive", "bit-vec"] }
 impl-trait-for-tuples = "0.2"
-scale-info = { version = "1.0", default-features = false, features = ["bit-vec", "derive"] }
+scale-info = { version = "2.0.0", default-features = false, features = ["bit-vec", "derive"] }
 serde = { version = "1.0", optional = true, features = ["derive"] }
 
 # Bridge dependencies
diff --git a/polkadot/bridges/primitives/messages/src/lib.rs b/polkadot/bridges/primitives/messages/src/lib.rs
index abefe8d789b8754d91edfac6aafdeb4c07d0c49c..e657214a7a9c77feb9c2d402158fb6a3223d39d6 100644
--- a/polkadot/bridges/primitives/messages/src/lib.rs
+++ b/polkadot/bridges/primitives/messages/src/lib.rs
@@ -19,8 +19,6 @@
 #![cfg_attr(not(feature = "std"), no_std)]
 // RuntimeApi generated functions
 #![allow(clippy::too_many_arguments)]
-// Generated by `DecodeLimit::decode_with_depth_limit`
-#![allow(clippy::unnecessary_mut_passed)]
 
 use bitvec::prelude::*;
 use bp_runtime::messages::DispatchFeePayment;
@@ -193,7 +191,7 @@ pub struct MessageDetails<OutboundMessageFee> {
 }
 
 /// Bit vector of message dispatch results.
-pub type DispatchResultsBitVec = BitVec<Msb0, u8>;
+pub type DispatchResultsBitVec = BitVec<u8, Msb0>;
 
 /// Unrewarded relayer entry stored in the inbound lane data.
 ///
@@ -227,7 +225,11 @@ impl DeliveredMessages {
 		DeliveredMessages {
 			begin: nonce,
 			end: nonce,
-			dispatch_results: bitvec![Msb0, u8; if dispatch_result { 1 } else { 0 }],
+			dispatch_results: if dispatch_result {
+				bitvec![u8, Msb0; 1]
+			} else {
+				bitvec![u8, Msb0; 0]
+			},
 		}
 	}
 
@@ -367,7 +369,7 @@ mod tests {
 							messages: DeliveredMessages::new(i as _, true),
 						};
 						entry.messages.dispatch_results = bitvec![
-							Msb0, u8;
+							u8, Msb0;
 							1;
 							(messages_count / relayer_entries) as _
 						];
@@ -393,7 +395,7 @@ mod tests {
 	#[test]
 	fn message_dispatch_result_works() {
 		let delivered_messages =
-			DeliveredMessages { begin: 100, end: 150, dispatch_results: bitvec![Msb0, u8; 1; 151] };
+			DeliveredMessages { begin: 100, end: 150, dispatch_results: bitvec![u8, Msb0; 1; 151] };
 
 		assert!(!delivered_messages.contains_message(99));
 		assert!(delivered_messages.contains_message(100));
diff --git a/polkadot/bridges/primitives/polkadot-core/Cargo.toml b/polkadot/bridges/primitives/polkadot-core/Cargo.toml
index f05edd0d91ba3cfb68927ebbae037fcf1c71d6a3..31d2d20b9b9defe12d2b94ae13de34e7140cd30b 100644
--- a/polkadot/bridges/primitives/polkadot-core/Cargo.toml
+++ b/polkadot/bridges/primitives/polkadot-core/Cargo.toml
@@ -7,8 +7,8 @@ edition = "2018"
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 
 [dependencies]
-parity-scale-codec = { version = "2.2.0", default-features = false, features = ["derive"] }
-scale-info = { version = "1.0", default-features = false, features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"] }
+scale-info = { version = "2.0.0", default-features = false, features = ["derive"] }
 
 # Bridge Dependencies
 
diff --git a/polkadot/bridges/primitives/runtime/Cargo.toml b/polkadot/bridges/primitives/runtime/Cargo.toml
index 7cc165fb4e9c418519b6fb6b8013572f312b4d66..aa80dab056def778d8c774ea97ffa91f355d206c 100644
--- a/polkadot/bridges/primitives/runtime/Cargo.toml
+++ b/polkadot/bridges/primitives/runtime/Cargo.toml
@@ -7,10 +7,10 @@ edition = "2018"
 license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false }
+codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false }
 hash-db = { version = "0.15.2", default-features = false }
 num-traits = { version = "0.2", default-features = false }
-scale-info = { version = "1.0", default-features = false, features = ["derive"] }
+scale-info = { version = "2.0.0", default-features = false, features = ["derive"] }
 
 # Substrate Dependencies
 
diff --git a/polkadot/bridges/primitives/test-utils/Cargo.toml b/polkadot/bridges/primitives/test-utils/Cargo.toml
index 95121c60993a7e675f56fdb92cc6021f5b4b7761..97d260c7a7a590ae64116e2aa24456d318d159e7 100644
--- a/polkadot/bridges/primitives/test-utils/Cargo.toml
+++ b/polkadot/bridges/primitives/test-utils/Cargo.toml
@@ -7,9 +7,9 @@ license = "GPL-3.0-or-later WITH Classpath-exception-2.0"
 
 [dependencies]
 bp-header-chain = { path = "../header-chain", default-features = false  }
-codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false }
+codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false }
 ed25519-dalek = { version = "1.0", default-features = false, features = ["u64_backend"] }
-finality-grandpa = { version = "0.14.4", default-features = false }
+finality-grandpa = { version = "0.15.0", default-features = false }
 sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 sp-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false  }
 sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
diff --git a/polkadot/core-primitives/Cargo.toml b/polkadot/core-primitives/Cargo.toml
index bf5572fca5eaa636ab565ddabf2b26278f1c7f0d..9c8e44141aa1e880026b4e7204d824938f147eb4 100644
--- a/polkadot/core-primitives/Cargo.toml
+++ b/polkadot/core-primitives/Cargo.toml
@@ -8,9 +8,9 @@ edition = "2021"
 sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
-scale-info = { version = "1.0", default-features = false, features = ["derive"] }
-parity-scale-codec = { version = "2.3.1", default-features = false, features = [ "derive" ] }
-parity-util-mem = { version = "0.10.0", default-features = false, optional = true }
+scale-info = { version = "2.0.0", default-features = false, features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = [ "derive" ] }
+parity-util-mem = { version = "0.11.0", default-features = false, optional = true }
 
 [features]
 default = [ "std" ]
diff --git a/polkadot/erasure-coding/Cargo.toml b/polkadot/erasure-coding/Cargo.toml
index 7fe2023364f07560893a34d210b16fd84c64e819..565e834468faf33e0141121e3d559c83f400ad68 100644
--- a/polkadot/erasure-coding/Cargo.toml
+++ b/polkadot/erasure-coding/Cargo.toml
@@ -8,7 +8,7 @@ edition = "2021"
 polkadot-primitives = { path = "../primitives" }
 polkadot-node-primitives = { package = "polkadot-node-primitives", path = "../node/primitives" }
 novelpoly = { package = "reed-solomon-novelpoly", version = "1.0.0" }
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["std", "derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["std", "derive"] }
 sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" }
 trie = { package = "sp-trie", git = "https://github.com/paritytech/substrate", branch = "master" }
 thiserror = "1.0.30"
diff --git a/polkadot/node/collation-generation/Cargo.toml b/polkadot/node/collation-generation/Cargo.toml
index d1d62569f9154a5030a26c852ef89b01dfb87fb8..14e0547841962f8aa2cee567239822a97cf38173 100644
--- a/polkadot/node/collation-generation/Cargo.toml
+++ b/polkadot/node/collation-generation/Cargo.toml
@@ -15,7 +15,7 @@ polkadot-primitives = { path = "../../primitives" }
 sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" }
 sp-maybe-compressed-blob  = { git = "https://github.com/paritytech/substrate", branch = "master" }
 thiserror = "1.0.30"
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["bit-vec", "derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["bit-vec", "derive"] }
 
 [dev-dependencies]
 polkadot-node-subsystem-test-helpers = { path = "../subsystem-test-helpers" }
diff --git a/polkadot/node/core/approval-voting/Cargo.toml b/polkadot/node/core/approval-voting/Cargo.toml
index e14b547058fd06578b3ce5cd0c8d192f6c8cc4cb..cd9eb2c601caba9b66df8dfff7e722684405784c 100644
--- a/polkadot/node/core/approval-voting/Cargo.toml
+++ b/polkadot/node/core/approval-voting/Cargo.toml
@@ -7,13 +7,13 @@ edition = "2021"
 [dependencies]
 futures = "0.3.21"
 futures-timer = "3.0.2"
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["bit-vec", "derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["bit-vec", "derive"] }
 tracing = "0.1.31"
-bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] }
+bitvec = { version = "1.0.0", default-features = false, features = ["alloc"] }
 lru = "0.7"
 merlin = "2.0"
 schnorrkel = "0.9.1"
-kvdb = "0.10.0"
+kvdb = "0.11.0"
 derive_more = "0.99.17"
 
 polkadot-node-subsystem = { path = "../../subsystem" }
@@ -38,5 +38,5 @@ sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" }
 sp-consensus-babe = { git = "https://github.com/paritytech/substrate", branch = "master" }
 polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers" }
 assert_matches = "1.4.0"
-kvdb-memorydb = "0.10.0"
+kvdb-memorydb = "0.11.0"
 test-helpers = { package = "polkadot-primitives-test-helpers", path = "../../../primitives/test-helpers" }
diff --git a/polkadot/node/core/approval-voting/src/approval_checking.rs b/polkadot/node/core/approval-voting/src/approval_checking.rs
index d41bee800d2d60dc7ee9d94956aebeac100aab40..99af51b11867a4782b7b14cdcaf765917502d50e 100644
--- a/polkadot/node/core/approval-voting/src/approval_checking.rs
+++ b/polkadot/node/core/approval-voting/src/approval_checking.rs
@@ -129,7 +129,7 @@ pub fn check_approval(
 			let n_assigned = assigned_mask.count_ones();
 
 			// Filter the amount of assigned validators by those which have approved.
-			assigned_mask &= approvals.iter().by_val();
+			assigned_mask &= approvals;
 			let n_approved = assigned_mask.count_ones();
 
 			// note: the process of computing `required` only chooses `exact` if
@@ -326,7 +326,7 @@ fn filled_tranche_iterator<'a>(
 ///  - if `tick` >  `clock_drift`: the value is equal to `tick` + `no_show_duration`.
 fn count_no_shows(
 	assignments: &[(ValidatorIndex, Tick)],
-	approvals: &BitSlice<BitOrderLsb0, u8>,
+	approvals: &BitSlice<u8, BitOrderLsb0>,
 	clock_drift: Tick,
 	block_tick: Tick,
 	no_show_duration: Tick,
@@ -367,7 +367,7 @@ fn count_no_shows(
 /// Determine the amount of tranches of assignments needed to determine approval of a candidate.
 pub fn tranches_to_approve(
 	approval_entry: &ApprovalEntry,
-	approvals: &BitSlice<BitOrderLsb0, u8>,
+	approvals: &BitSlice<u8, BitOrderLsb0>,
 	tranche_now: DelayTranche,
 	block_tick: Tick,
 	no_show_duration: Tick,
@@ -501,7 +501,7 @@ mod tests {
 			candidate: dummy_candidate_receipt(dummy_hash()),
 			session: 0,
 			block_assignments: BTreeMap::default(),
-			approvals: bitvec![BitOrderLsb0, u8; 0; 10],
+			approvals: bitvec![u8, BitOrderLsb0; 0; 10],
 		}
 		.into();
 
@@ -524,7 +524,7 @@ mod tests {
 					assignments: (5..10).map(|i| (ValidatorIndex(i), 0.into())).collect(),
 				},
 			],
-			assignments: bitvec![BitOrderLsb0, u8; 1; 10],
+			assignments: bitvec![u8, BitOrderLsb0; 1; 10],
 			our_assignment: None,
 			our_approval_sig: None,
 			backing_group: GroupIndex(0),
@@ -573,7 +573,7 @@ mod tests {
 			candidate: dummy_candidate_receipt(dummy_hash()),
 			session: 0,
 			block_assignments: BTreeMap::default(),
-			approvals: bitvec![BitOrderLsb0, u8; 0; 10],
+			approvals: bitvec![u8, BitOrderLsb0; 0; 10],
 		}
 		.into();
 
@@ -596,7 +596,7 @@ mod tests {
 					assignments: (6..10).map(|i| (ValidatorIndex(i), 0.into())).collect(),
 				},
 			],
-			assignments: bitvec![BitOrderLsb0, u8; 1; 10],
+			assignments: bitvec![u8, BitOrderLsb0; 1; 10],
 			our_assignment: None,
 			our_approval_sig: None,
 			backing_group: GroupIndex(0),
@@ -649,7 +649,7 @@ mod tests {
 
 		let mut approval_entry: ApprovalEntry = approval_db::v1::ApprovalEntry {
 			tranches: Vec::new(),
-			assignments: bitvec![BitOrderLsb0, u8; 0; 5],
+			assignments: bitvec![u8, BitOrderLsb0; 0; 5],
 			our_assignment: None,
 			our_approval_sig: None,
 			backing_group: GroupIndex(0),
@@ -665,7 +665,7 @@ mod tests {
 
 		approval_entry.import_assignment(2, ValidatorIndex(4), block_tick + 2);
 
-		let approvals = bitvec![BitOrderLsb0, u8; 1; 5];
+		let approvals = bitvec![u8, BitOrderLsb0; 1; 5];
 
 		assert_eq!(
 			tranches_to_approve(
@@ -693,7 +693,7 @@ mod tests {
 
 		let mut approval_entry: ApprovalEntry = approval_db::v1::ApprovalEntry {
 			tranches: Vec::new(),
-			assignments: bitvec![BitOrderLsb0, u8; 0; 10],
+			assignments: bitvec![u8, BitOrderLsb0; 0; 10],
 			our_assignment: None,
 			our_approval_sig: None,
 			backing_group: GroupIndex(0),
@@ -704,7 +704,7 @@ mod tests {
 		approval_entry.import_assignment(0, ValidatorIndex(0), block_tick);
 		approval_entry.import_assignment(1, ValidatorIndex(2), block_tick);
 
-		let approvals = bitvec![BitOrderLsb0, u8; 0; 10];
+		let approvals = bitvec![u8, BitOrderLsb0; 0; 10];
 
 		let tranche_now = 2;
 		assert_eq!(
@@ -733,7 +733,7 @@ mod tests {
 
 		let mut approval_entry: ApprovalEntry = approval_db::v1::ApprovalEntry {
 			tranches: Vec::new(),
-			assignments: bitvec![BitOrderLsb0, u8; 0; 10],
+			assignments: bitvec![u8, BitOrderLsb0; 0; 10],
 			our_assignment: None,
 			our_approval_sig: None,
 			backing_group: GroupIndex(0),
@@ -746,7 +746,7 @@ mod tests {
 
 		approval_entry.import_assignment(1, ValidatorIndex(2), block_tick);
 
-		let mut approvals = bitvec![BitOrderLsb0, u8; 0; 10];
+		let mut approvals = bitvec![u8, BitOrderLsb0; 0; 10];
 		approvals.set(0, true);
 		approvals.set(1, true);
 
@@ -778,7 +778,7 @@ mod tests {
 
 		let mut approval_entry: ApprovalEntry = approval_db::v1::ApprovalEntry {
 			tranches: Vec::new(),
-			assignments: bitvec![BitOrderLsb0, u8; 0; n_validators],
+			assignments: bitvec![u8, BitOrderLsb0; 0; n_validators],
 			our_assignment: None,
 			our_approval_sig: None,
 			backing_group: GroupIndex(0),
@@ -792,7 +792,7 @@ mod tests {
 		approval_entry.import_assignment(1, ValidatorIndex(2), block_tick);
 		approval_entry.import_assignment(1, ValidatorIndex(3), block_tick);
 
-		let mut approvals = bitvec![BitOrderLsb0, u8; 0; n_validators];
+		let mut approvals = bitvec![u8, BitOrderLsb0; 0; n_validators];
 		approvals.set(0, true);
 		approvals.set(1, true);
 		// skip 2
@@ -845,7 +845,7 @@ mod tests {
 
 		let mut approval_entry: ApprovalEntry = approval_db::v1::ApprovalEntry {
 			tranches: Vec::new(),
-			assignments: bitvec![BitOrderLsb0, u8; 0; n_validators],
+			assignments: bitvec![u8, BitOrderLsb0; 0; n_validators],
 			our_assignment: None,
 			our_approval_sig: None,
 			backing_group: GroupIndex(0),
@@ -862,7 +862,7 @@ mod tests {
 		approval_entry.import_assignment(2, ValidatorIndex(4), block_tick + no_show_duration + 2);
 		approval_entry.import_assignment(2, ValidatorIndex(5), block_tick + no_show_duration + 2);
 
-		let mut approvals = bitvec![BitOrderLsb0, u8; 0; n_validators];
+		let mut approvals = bitvec![u8, BitOrderLsb0; 0; n_validators];
 		approvals.set(0, true);
 		approvals.set(1, true);
 		// skip 2
@@ -936,7 +936,7 @@ mod tests {
 
 		let mut approval_entry: ApprovalEntry = approval_db::v1::ApprovalEntry {
 			tranches: Vec::new(),
-			assignments: bitvec![BitOrderLsb0, u8; 0; n_validators],
+			assignments: bitvec![u8, BitOrderLsb0; 0; n_validators],
 			our_assignment: None,
 			our_approval_sig: None,
 			backing_group: GroupIndex(0),
@@ -953,7 +953,7 @@ mod tests {
 		approval_entry.import_assignment(2, ValidatorIndex(4), block_tick + no_show_duration + 2);
 		approval_entry.import_assignment(2, ValidatorIndex(5), block_tick + no_show_duration + 2);
 
-		let mut approvals = bitvec![BitOrderLsb0, u8; 0; n_validators];
+		let mut approvals = bitvec![u8, BitOrderLsb0; 0; n_validators];
 		approvals.set(0, true);
 		approvals.set(1, true);
 		// skip 2
@@ -1033,7 +1033,7 @@ mod tests {
 			candidate: dummy_candidate_receipt(dummy_hash()),
 			session: 0,
 			block_assignments: BTreeMap::default(),
-			approvals: bitvec![BitOrderLsb0, u8; 0; 3],
+			approvals: bitvec![u8, BitOrderLsb0; 0; 3],
 		}
 		.into();
 
@@ -1049,7 +1049,7 @@ mod tests {
 					assignments: (2..5).map(|i| (ValidatorIndex(i), 1.into())).collect(),
 				},
 			],
-			assignments: bitvec![BitOrderLsb0, u8; 1; 3],
+			assignments: bitvec![u8, BitOrderLsb0; 1; 3],
 			our_assignment: None,
 			our_approval_sig: None,
 			backing_group: GroupIndex(0),
@@ -1057,7 +1057,7 @@ mod tests {
 		}
 		.into();
 
-		let approvals = bitvec![BitOrderLsb0, u8; 0; 3];
+		let approvals = bitvec![u8, BitOrderLsb0; 0; 3];
 
 		let tranche_now = 10;
 		assert_eq!(
@@ -1099,7 +1099,7 @@ mod tests {
 				backing_group: GroupIndex(0),
 				our_assignment: None,
 				our_approval_sig: None,
-				assignments: bitvec![BitOrderLsb0, u8; 0; 3],
+				assignments: bitvec![u8, BitOrderLsb0; 0; 3],
 				approved: false,
 			}
 			.into();
@@ -1137,7 +1137,7 @@ mod tests {
 		let n_validators = 4;
 		let block_tick = 20;
 
-		let mut approvals = bitvec![BitOrderLsb0, u8; 0; n_validators];
+		let mut approvals = bitvec![u8, BitOrderLsb0; 0; n_validators];
 		for &v_index in &test.approvals {
 			approvals.set(v_index, true);
 		}
diff --git a/polkadot/node/core/approval-voting/src/approval_db/v1/mod.rs b/polkadot/node/core/approval-voting/src/approval_db/v1/mod.rs
index bcc01717d885a57bc4387bb0f9ee5716b6dc0a71..82b98d4c90290ec7244f08cf294f34207fc3dd03 100644
--- a/polkadot/node/core/approval-voting/src/approval_db/v1/mod.rs
+++ b/polkadot/node/core/approval-voting/src/approval_db/v1/mod.rs
@@ -140,7 +140,7 @@ pub struct StoredBlockRange(pub BlockNumber, pub BlockNumber);
 pub struct Tick(u64);
 
 /// Convenience type definition
-pub type Bitfield = BitVec<BitOrderLsb0, u8>;
+pub type Bitfield = BitVec<u8, BitOrderLsb0>;
 
 /// The database config.
 #[derive(Debug, Clone, Copy)]
diff --git a/polkadot/node/core/approval-voting/src/approval_db/v1/tests.rs b/polkadot/node/core/approval-voting/src/approval_db/v1/tests.rs
index e3cb17001a814e1b66ea58f38fcdc19e78e834fa..bbf6f3a639eb21f326fd5ac9ea8486e99c247607 100644
--- a/polkadot/node/core/approval-voting/src/approval_db/v1/tests.rs
+++ b/polkadot/node/core/approval-voting/src/approval_db/v1/tests.rs
@@ -37,8 +37,8 @@ fn make_db() -> (DbBackend, Arc<dyn KeyValueDB>) {
 	(DbBackend::new(db_writer.clone(), TEST_CONFIG), db_writer)
 }
 
-fn make_bitvec(len: usize) -> BitVec<BitOrderLsb0, u8> {
-	bitvec::bitvec![BitOrderLsb0, u8; 0; len]
+fn make_bitvec(len: usize) -> BitVec<u8, BitOrderLsb0> {
+	bitvec::bitvec![u8, BitOrderLsb0; 0; len]
 }
 
 fn make_block_entry(
diff --git a/polkadot/node/core/approval-voting/src/import.rs b/polkadot/node/core/approval-voting/src/import.rs
index 1d382096f78547e9c41ed0ea9f8c8d32338424c8..99b8c7024c6baacfbd651ffc892faa9a28b94a1e 100644
--- a/polkadot/node/core/approval-voting/src/import.rs
+++ b/polkadot/node/core/approval-voting/src/import.rs
@@ -463,9 +463,9 @@ pub(crate) async fn handle_new_head(
 					block_hash = ?block_hash,
 					"Insta-approving all candidates",
 				);
-				bitvec::bitvec![BitOrderLsb0, u8; 1; num_candidates]
+				bitvec::bitvec![u8, BitOrderLsb0; 1; num_candidates]
 			} else {
-				let mut result = bitvec::bitvec![BitOrderLsb0, u8; 0; num_candidates];
+				let mut result = bitvec::bitvec![u8, BitOrderLsb0; 0; num_candidates];
 				for (i, &(_, _, _, backing_group)) in included_candidates.iter().enumerate() {
 					let backing_group_size =
 						validator_group_lens.get(backing_group.0 as usize).copied().unwrap_or(0);
diff --git a/polkadot/node/core/approval-voting/src/lib.rs b/polkadot/node/core/approval-voting/src/lib.rs
index 688c7185a4644ceaa6198d69d12d7c04aeb6a141..c5c681e8eff4dda1c65332cf6fe17b4e2ab28670 100644
--- a/polkadot/node/core/approval-voting/src/lib.rs
+++ b/polkadot/node/core/approval-voting/src/lib.rs
@@ -1257,7 +1257,7 @@ async fn handle_approved_ancestor(
 
 	let mut block_descriptions = Vec::new();
 
-	let mut bits: BitVec<Lsb0, u8> = Default::default();
+	let mut bits: BitVec<u8, Lsb0> = Default::default();
 	for (i, block_hash) in std::iter::once(target).chain(ancestry).enumerate() {
 		// Block entries should be present as the assumption is that
 		// nothing here is finalized. If we encounter any missing block
@@ -1344,7 +1344,7 @@ async fn handle_approved_ancestor(
 								let n_approvals = c_entry
 									.approvals()
 									.iter()
-									.by_val()
+									.by_vals()
 									.enumerate()
 									.filter(|(i, approved)| {
 										*approved && a_entry.is_assigned(ValidatorIndex(*i as _))
diff --git a/polkadot/node/core/approval-voting/src/ops.rs b/polkadot/node/core/approval-voting/src/ops.rs
index f142ac6b49c5aeae794507365b63a16cec2b1af5..ad81a2638d5b1f45a0e2a260fd8641e3ca02033a 100644
--- a/polkadot/node/core/approval-voting/src/ops.rs
+++ b/polkadot/node/core/approval-voting/src/ops.rs
@@ -242,7 +242,7 @@ pub fn add_block_entry(
 						candidate,
 						session,
 						block_assignments: BTreeMap::new(),
-						approvals: bitvec::bitvec![BitOrderLsb0, u8; 0; n_validators],
+						approvals: bitvec::bitvec![u8, BitOrderLsb0; 0; n_validators],
 					}
 				});
 
@@ -253,7 +253,7 @@ pub fn add_block_entry(
 					backing_group,
 					our_assignment.map(|v| v.into()),
 					None,
-					bitvec::bitvec![BitOrderLsb0, u8; 0; n_validators],
+					bitvec::bitvec![u8, BitOrderLsb0; 0; n_validators],
 					false,
 				),
 			);
diff --git a/polkadot/node/core/approval-voting/src/persisted_entries.rs b/polkadot/node/core/approval-voting/src/persisted_entries.rs
index f5be1a5d88524b866fa144a36fb60d2c9782652f..ce56bf1a06bb0ac023c686085f2262bdd7d4ab16 100644
--- a/polkadot/node/core/approval-voting/src/persisted_entries.rs
+++ b/polkadot/node/core/approval-voting/src/persisted_entries.rs
@@ -80,7 +80,7 @@ pub struct ApprovalEntry {
 	our_assignment: Option<OurAssignment>,
 	our_approval_sig: Option<ValidatorSignature>,
 	// `n_validators` bits.
-	assignments: BitVec<BitOrderLsb0, u8>,
+	assignments: BitVec<u8, BitOrderLsb0>,
 	approved: bool,
 }
 
@@ -92,7 +92,7 @@ impl ApprovalEntry {
 		our_assignment: Option<OurAssignment>,
 		our_approval_sig: Option<ValidatorSignature>,
 		// `n_validators` bits.
-		assignments: BitVec<BitOrderLsb0, u8>,
+		assignments: BitVec<u8, BitOrderLsb0>,
 		approved: bool,
 	) -> Self {
 		Self { tranches, backing_group, our_assignment, our_approval_sig, assignments, approved }
@@ -163,9 +163,9 @@ impl ApprovalEntry {
 
 	// Produce a bitvec indicating the assignments of all validators up to and
 	// including `tranche`.
-	pub fn assignments_up_to(&self, tranche: DelayTranche) -> BitVec<BitOrderLsb0, u8> {
+	pub fn assignments_up_to(&self, tranche: DelayTranche) -> BitVec<u8, BitOrderLsb0> {
 		self.tranches.iter().take_while(|e| e.tranche <= tranche).fold(
-			bitvec::bitvec![BitOrderLsb0, u8; 0; self.assignments.len()],
+			bitvec::bitvec![u8, BitOrderLsb0; 0; self.assignments.len()],
 			|mut a, e| {
 				for &(v, _) in &e.assignments {
 					a.set(v.0 as _, true);
@@ -253,12 +253,12 @@ pub struct CandidateEntry {
 	// Assignments are based on blocks, so we need to track assignments separately
 	// based on the block we are looking at.
 	pub block_assignments: BTreeMap<Hash, ApprovalEntry>,
-	pub approvals: BitVec<BitOrderLsb0, u8>,
+	pub approvals: BitVec<u8, BitOrderLsb0>,
 }
 
 impl CandidateEntry {
 	/// Access the bit-vec of approvals.
-	pub fn approvals(&self) -> &BitSlice<BitOrderLsb0, u8> {
+	pub fn approvals(&self) -> &BitSlice<u8, BitOrderLsb0> {
 		&self.approvals
 	}
 
@@ -336,7 +336,7 @@ pub struct BlockEntry {
 	// A bitfield where the i'th bit corresponds to the i'th candidate in `candidates`.
 	// The i'th bit is `true` iff the candidate has been approved in the context of this
 	// block. The block can be considered approved if the bitfield has all bits set to `true`.
-	pub approved_bitfield: BitVec<BitOrderLsb0, u8>,
+	pub approved_bitfield: BitVec<u8, BitOrderLsb0>,
 	pub children: Vec<Hash>,
 }
 
diff --git a/polkadot/node/core/av-store/Cargo.toml b/polkadot/node/core/av-store/Cargo.toml
index 29f3bba9dc912ac5a8421c52c02bf1984e0c3b88..832be04ea8e88503b114f8f2df7c24c11a8f4abc 100644
--- a/polkadot/node/core/av-store/Cargo.toml
+++ b/polkadot/node/core/av-store/Cargo.toml
@@ -7,12 +7,12 @@ edition = "2021"
 [dependencies]
 futures = "0.3.21"
 futures-timer = "3.0.2"
-kvdb = "0.10.0"
+kvdb = "0.11.0"
 thiserror = "1.0.30"
 tracing = "0.1.31"
-bitvec = "0.20.1"
+bitvec = "1.0.0"
 
-parity-scale-codec = { version = "2.3.1", features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", features = ["derive"] }
 erasure = { package = "polkadot-erasure-coding", path = "../../../erasure-coding" }
 polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" }
 polkadot-node-subsystem-util = { path = "../../subsystem-util" }
@@ -24,7 +24,7 @@ polkadot-node-primitives = { path = "../../primitives" }
 log = "0.4.13"
 env_logger = "0.9.0"
 assert_matches = "1.4.0"
-kvdb-memorydb = "0.10.0"
+kvdb-memorydb = "0.11.0"
 
 sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" }
 polkadot-node-subsystem-util = { path = "../../subsystem-util" }
diff --git a/polkadot/node/core/av-store/src/lib.rs b/polkadot/node/core/av-store/src/lib.rs
index 74f14a9ceb5fd85e1a91ae87b82ae254f72dfa15..7b5a736447f0f6a7c82c5a7358d2fd1d380b09ad 100644
--- a/polkadot/node/core/av-store/src/lib.rs
+++ b/polkadot/node/core/av-store/src/lib.rs
@@ -148,7 +148,7 @@ enum State {
 struct CandidateMeta {
 	state: State,
 	data_available: bool,
-	chunks_stored: BitVec<BitOrderLsb0, u8>,
+	chunks_stored: BitVec<u8, BitOrderLsb0>,
 }
 
 fn query_inner<D: Decode>(
@@ -727,7 +727,7 @@ fn note_block_backed(
 		let meta = CandidateMeta {
 			state: State::Unavailable(now.into()),
 			data_available: false,
-			chunks_stored: bitvec::bitvec![BitOrderLsb0, u8; 0; n_validators],
+			chunks_stored: bitvec::bitvec![u8, BitOrderLsb0; 0; n_validators],
 		};
 
 		let prune_at = now + pruning_config.keep_unavailable_for;
@@ -1210,7 +1210,7 @@ fn store_available_data(
 	}
 
 	meta.data_available = true;
-	meta.chunks_stored = bitvec::bitvec![BitOrderLsb0, u8; 1; n_validators];
+	meta.chunks_stored = bitvec::bitvec![u8, BitOrderLsb0; 1; n_validators];
 
 	write_meta(&mut tx, &subsystem.config, &candidate_hash, &meta);
 	write_available_data(&mut tx, &subsystem.config, &candidate_hash, &available_data);
diff --git a/polkadot/node/core/av-store/src/tests.rs b/polkadot/node/core/av-store/src/tests.rs
index da34fca5fa5f51932f840889a4c548c42b257465..3a7d45888982333085d508b9d4ff59cd717d4b09 100644
--- a/polkadot/node/core/av-store/src/tests.rs
+++ b/polkadot/node/core/av-store/src/tests.rs
@@ -291,7 +291,7 @@ fn store_chunk_works() {
 				&candidate_hash,
 				&CandidateMeta {
 					data_available: false,
-					chunks_stored: bitvec::bitvec![BitOrderLsb0, u8; 0; n_validators],
+					chunks_stored: bitvec::bitvec![u8, BitOrderLsb0; 0; n_validators],
 					state: State::Unavailable(BETimestamp(0)),
 				},
 			);
@@ -364,7 +364,7 @@ fn query_chunk_checks_meta() {
 				&CandidateMeta {
 					data_available: false,
 					chunks_stored: {
-						let mut v = bitvec::bitvec![BitOrderLsb0, u8; 0; n_validators];
+						let mut v = bitvec::bitvec![u8, BitOrderLsb0; 0; n_validators];
 						v.set(validator_index.0 as usize, true);
 						v
 					},
@@ -528,7 +528,7 @@ fn query_all_chunks_works() {
 					&candidate_hash_2,
 					&CandidateMeta {
 						data_available: false,
-						chunks_stored: bitvec::bitvec![BitOrderLsb0, u8; 0; n_validators as _],
+						chunks_stored: bitvec::bitvec![u8, BitOrderLsb0; 0; n_validators as _],
 						state: State::Unavailable(BETimestamp(0)),
 					},
 				);
diff --git a/polkadot/node/core/backing/Cargo.toml b/polkadot/node/core/backing/Cargo.toml
index c5a02c0df538bd07caa3e4da4d5e519f6f13afa9..c490501abb0088f64812ec4d587750ccbd108d26 100644
--- a/polkadot/node/core/backing/Cargo.toml
+++ b/polkadot/node/core/backing/Cargo.toml
@@ -13,7 +13,7 @@ polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsys
 polkadot-node-subsystem-util = { path = "../../subsystem-util" }
 erasure-coding = { package = "polkadot-erasure-coding", path = "../../../erasure-coding" }
 statement-table = { package = "polkadot-statement-table", path = "../../../statement-table" }
-bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] }
+bitvec = { version = "1.0.0", default-features = false, features = ["alloc"] }
 tracing = "0.1.31"
 thiserror = "1.0.30"
 
diff --git a/polkadot/node/core/backing/src/tests.rs b/polkadot/node/core/backing/src/tests.rs
index c72386171a97f398c0704cf5205e424ff2c75d39..68602189dcd7cbdd75c7c8d1ce64ae964a87f62d 100644
--- a/polkadot/node/core/backing/src/tests.rs
+++ b/polkadot/node/core/backing/src/tests.rs
@@ -752,7 +752,7 @@ fn backing_works_while_validation_ongoing() {
 			.contains(&ValidityAttestation::Explicit(signed_c.signature().clone())));
 		assert_eq!(
 			candidates[0].validator_indices,
-			bitvec::bitvec![bitvec::order::Lsb0, u8; 1, 0, 1, 1],
+			bitvec::bitvec![u8, bitvec::order::Lsb0; 1, 0, 1, 1],
 		);
 
 		virtual_overseer
@@ -1484,7 +1484,7 @@ fn candidate_backing_reorders_votes() {
 	let backed = table_attested_to_backed(attested, &table_context).unwrap();
 
 	let expected_bitvec = {
-		let mut validator_indices = BitVec::<bitvec::order::Lsb0, u8>::with_capacity(6);
+		let mut validator_indices = BitVec::<u8, bitvec::order::Lsb0>::with_capacity(6);
 		validator_indices.resize(6, false);
 
 		validator_indices.set(1, true);
diff --git a/polkadot/node/core/candidate-validation/Cargo.toml b/polkadot/node/core/candidate-validation/Cargo.toml
index e6035670f496f8a5d9303604139b13e5b575ff94..4400226557bab08dc33b315f06765b759a01be40 100644
--- a/polkadot/node/core/candidate-validation/Cargo.toml
+++ b/polkadot/node/core/candidate-validation/Cargo.toml
@@ -10,7 +10,7 @@ futures = "0.3.21"
 tracing = "0.1.31"
 
 sp-maybe-compressed-blob = { package = "sp-maybe-compressed-blob", git = "https://github.com/paritytech/substrate", branch = "master" }
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["bit-vec", "derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["bit-vec", "derive"] }
 
 polkadot-primitives = { path = "../../../primitives" }
 polkadot-parachain = { path = "../../../parachain" }
diff --git a/polkadot/node/core/chain-api/Cargo.toml b/polkadot/node/core/chain-api/Cargo.toml
index 85629724fd66f3c5a03700587d9ccd0c60a8624e..82b4a4ede4c0c51025df628b477d06bba9eac0e5 100644
--- a/polkadot/node/core/chain-api/Cargo.toml
+++ b/polkadot/node/core/chain-api/Cargo.toml
@@ -17,7 +17,7 @@ sc-consensus-babe = { git = "https://github.com/paritytech/substrate", branch =
 [dev-dependencies]
 futures = { version = "0.3.21", features = ["thread-pool"] }
 maplit = "1.0.2"
-parity-scale-codec = "2.3.1"
+parity-scale-codec = "3.0.0"
 polkadot-node-primitives = { path = "../../primitives" }
 polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers" }
 sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" }
diff --git a/polkadot/node/core/chain-selection/Cargo.toml b/polkadot/node/core/chain-selection/Cargo.toml
index 33ff8e37db2b32b88c93961ffe5b852ca5e8b82a..2d55fa71ccaba8c2bf652ccd57bb3d1ef7090a78 100644
--- a/polkadot/node/core/chain-selection/Cargo.toml
+++ b/polkadot/node/core/chain-selection/Cargo.toml
@@ -13,13 +13,13 @@ polkadot-primitives = { path = "../../../primitives" }
 polkadot-node-primitives = { path = "../../primitives" }
 polkadot-node-subsystem = { path = "../../subsystem" }
 polkadot-node-subsystem-util = { path = "../../subsystem-util" }
-kvdb = "0.10.0"
+kvdb = "0.11.0"
 thiserror = "1.0.30"
-parity-scale-codec = "2"
+parity-scale-codec = "3.0.0"
 
 [dev-dependencies]
 polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers" }
 sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" }
-parking_lot = "0.12"
+parking_lot = "0.12.0"
 assert_matches = "1"
-kvdb-memorydb = "0.10.0"
+kvdb-memorydb = "0.11.0"
diff --git a/polkadot/node/core/dispute-coordinator/Cargo.toml b/polkadot/node/core/dispute-coordinator/Cargo.toml
index 680875f38a1718da06ac448b702c680e9f63e510..5dcc3d35b03e8ca70bbe2f47f1722d99ab9120a8 100644
--- a/polkadot/node/core/dispute-coordinator/Cargo.toml
+++ b/polkadot/node/core/dispute-coordinator/Cargo.toml
@@ -7,8 +7,8 @@ edition = "2021"
 [dependencies]
 futures = "0.3.21"
 tracing = "0.1.31"
-parity-scale-codec = "2"
-kvdb = "0.10.0"
+parity-scale-codec = "3.0.0"
+kvdb = "0.11.0"
 thiserror = "1.0.30"
 lru = "0.7.2"
 
@@ -20,7 +20,7 @@ polkadot-node-subsystem-util = { path = "../../subsystem-util" }
 sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" }
 
 [dev-dependencies]
-kvdb-memorydb = "0.10.0"
+kvdb-memorydb = "0.11.0"
 polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers" }
 sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" }
 sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" }
diff --git a/polkadot/node/core/provisioner/Cargo.toml b/polkadot/node/core/provisioner/Cargo.toml
index 0941712645537487edf6345623e6cddda8ddc9bf..df03f1d90583f304e3001a5161bc2218464c2234 100644
--- a/polkadot/node/core/provisioner/Cargo.toml
+++ b/polkadot/node/core/provisioner/Cargo.toml
@@ -5,7 +5,7 @@ authors = ["Parity Technologies <admin@parity.io>"]
 edition = "2021"
 
 [dependencies]
-bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] }
+bitvec = { version = "1.0.0", default-features = false, features = ["alloc"] }
 futures = "0.3.21"
 tracing = "0.1.31"
 thiserror = "1.0.30"
diff --git a/polkadot/node/core/provisioner/src/lib.rs b/polkadot/node/core/provisioner/src/lib.rs
index 8789098693fef96748d8bcf8bb2840c1e89b5904..d761844007d8c5026ce74978394145386e9ed65e 100644
--- a/polkadot/node/core/provisioner/src/lib.rs
+++ b/polkadot/node/core/provisioner/src/lib.rs
@@ -291,7 +291,7 @@ impl ProvisionerJob {
 	}
 }
 
-type CoreAvailability = BitVec<bitvec::order::Lsb0, u8>;
+type CoreAvailability = BitVec<u8, bitvec::order::Lsb0>;
 
 /// The provisioner is the subsystem best suited to choosing which specific
 /// backed candidates and availability bitfields should be assembled into the
diff --git a/polkadot/node/core/provisioner/src/tests.rs b/polkadot/node/core/provisioner/src/tests.rs
index 9e0af0c3a79bc85142d5aeb08de4cf60b698b4a1..d4552743252ce5614de3519d37bdb109723e6baf 100644
--- a/polkadot/node/core/provisioner/src/tests.rs
+++ b/polkadot/node/core/provisioner/src/tests.rs
@@ -10,7 +10,7 @@ pub fn occupied_core(para_id: u32) -> CoreState {
 		occupied_since: 100_u32,
 		time_out_at: 200_u32,
 		next_up_on_time_out: None,
-		availability: bitvec![bitvec::order::Lsb0, u8; 0; 32],
+		availability: bitvec![u8, bitvec::order::Lsb0; 0; 32],
 		candidate_descriptor: dummy_candidate_descriptor(dummy_hash()),
 		candidate_hash: Default::default(),
 	})
@@ -31,7 +31,7 @@ where
 }
 
 pub fn default_bitvec(n_cores: usize) -> CoreAvailability {
-	bitvec![bitvec::order::Lsb0, u8; 0; n_cores]
+	bitvec![u8, bitvec::order::Lsb0; 0; n_cores]
 }
 
 pub fn scheduled_core(id: u32) -> ScheduledCore {
diff --git a/polkadot/node/core/pvf/Cargo.toml b/polkadot/node/core/pvf/Cargo.toml
index 217fe431d73af2ac049d9e1cf0788af687f0a8cc..cb7cf82bb2ccdc6b0c2e1b0bc6bbc575a1d0e432 100644
--- a/polkadot/node/core/pvf/Cargo.toml
+++ b/polkadot/node/core/pvf/Cargo.toml
@@ -19,7 +19,7 @@ slotmap = "1.0"
 tracing = "0.1.31"
 pin-project = "1.0.9"
 rand = "0.8.5"
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"] }
 polkadot-parachain = { path = "../../../parachain" }
 polkadot-core-primitives = { path = "../../../core-primitives" }
 polkadot-node-subsystem-util = { path = "../../subsystem-util"}
diff --git a/polkadot/node/core/runtime-api/Cargo.toml b/polkadot/node/core/runtime-api/Cargo.toml
index 9a2892c5ac760755223cef2f16d39200cef39d97..14bdb9f630caa9b0010d19a4f8c5576531545e08 100644
--- a/polkadot/node/core/runtime-api/Cargo.toml
+++ b/polkadot/node/core/runtime-api/Cargo.toml
@@ -8,7 +8,7 @@ edition = "2021"
 futures = "0.3.21"
 tracing = "0.1.31"
 memory-lru = "0.1.0"
-parity-util-mem = { version = "0.10.0", default-features = false }
+parity-util-mem = { version = "0.11.0", default-features = false }
 
 sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" }
 sp-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master" }
diff --git a/polkadot/node/jaeger/Cargo.toml b/polkadot/node/jaeger/Cargo.toml
index b9a6d32722cf52eebdf48166eea0eede014d0c56..640a729f07743a4a1a3642e94ce5bfb372f33fa1 100644
--- a/polkadot/node/jaeger/Cargo.toml
+++ b/polkadot/node/jaeger/Cargo.toml
@@ -16,4 +16,4 @@ sc-network = { git = "https://github.com/paritytech/substrate", branch = "master
 sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" }
 thiserror = "1.0.30"
 log = "0.4.13"
-parity-scale-codec = { version = "2.3.1", default-features = false }
+parity-scale-codec = { version = "3.0.0", default-features = false }
diff --git a/polkadot/node/malus/Cargo.toml b/polkadot/node/malus/Cargo.toml
index ced05ca9cec96de1123973b72cb67a0b31f89c85..87cba72ced371431fdb149dd133c765a70c3b2fb 100644
--- a/polkadot/node/malus/Cargo.toml
+++ b/polkadot/node/malus/Cargo.toml
@@ -23,7 +23,7 @@ polkadot-node-core-backing = { path = "../core/backing" }
 polkadot-node-primitives = { path = "../primitives" }
 polkadot-primitives = { path = "../../primitives" }
 polkadot-node-core-pvf = { path = "../core/pvf" }
-parity-util-mem = { version = "0.10.0", default-features = false, features = ["jemalloc-global"] }
+parity-util-mem = { version = "0.11.0", default-features = false, features = ["jemalloc-global"] }
 color-eyre = { version = "0.6.0", default-features = false }
 assert_matches = "1.5"
 async-trait = "0.1.52"
diff --git a/polkadot/node/metrics/Cargo.toml b/polkadot/node/metrics/Cargo.toml
index 814b3cb75fb1da08a3eea86f15b863be7cd4638a..a9dd0d1338f92793b6a7fabc1a46c742853edbec 100644
--- a/polkadot/node/metrics/Cargo.toml
+++ b/polkadot/node/metrics/Cargo.toml
@@ -18,7 +18,7 @@ sc-cli = { git = "https://github.com/paritytech/substrate", branch = "master" }
 
 substrate-prometheus-endpoint = { git = "https://github.com/paritytech/substrate", branch = "master" }
 sc-tracing = { git = "https://github.com/paritytech/substrate", branch = "master" }
-codec = { package = "parity-scale-codec", version = "2.2.0" }
+codec = { package = "parity-scale-codec", version = "3.0.0" }
 primitives = { package = "polkadot-primitives", path = "../../primitives/" }
 bs58 = { version = "0.4.0", features = ["alloc"] }
 log = "0.4.13"
diff --git a/polkadot/node/network/availability-distribution/Cargo.toml b/polkadot/node/network/availability-distribution/Cargo.toml
index 1aaa1b497b500d841146632f696264d992b2e1e4..57cde892cb90dafde7bdaf1cb1939be788ddf4a9 100644
--- a/polkadot/node/network/availability-distribution/Cargo.toml
+++ b/polkadot/node/network/availability-distribution/Cargo.toml
@@ -7,7 +7,7 @@ edition = "2021"
 [dependencies]
 futures = "0.3.21"
 tracing = "0.1.31"
-parity-scale-codec = { version = "2.3.1", features = ["std"] }
+parity-scale-codec = { version = "3.0.0", features = ["std"] }
 polkadot-primitives = { path = "../../../primitives" }
 polkadot-erasure-coding = { path = "../../../erasure-coding" }
 polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" }
diff --git a/polkadot/node/network/availability-recovery/Cargo.toml b/polkadot/node/network/availability-recovery/Cargo.toml
index e0696e17f8b27cc4afc30bf0e043d16e7be95614..0ac9ce789091a02360a2c420d710298f0a245acb 100644
--- a/polkadot/node/network/availability-recovery/Cargo.toml
+++ b/polkadot/node/network/availability-recovery/Cargo.toml
@@ -17,7 +17,7 @@ polkadot-node-primitives = { path = "../../primitives" }
 polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" }
 polkadot-node-subsystem-util = { path = "../../subsystem-util" }
 polkadot-node-network-protocol = { path = "../../network/protocol" }
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"] }
 sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" }
 
 [dev-dependencies]
diff --git a/polkadot/node/network/bitfield-distribution/Cargo.toml b/polkadot/node/network/bitfield-distribution/Cargo.toml
index 2b19e0a5bbafe382131be9b48a7165fba73c3222..9e4916c6feeef73c8f07d214e36dbce128fdc1c2 100644
--- a/polkadot/node/network/bitfield-distribution/Cargo.toml
+++ b/polkadot/node/network/bitfield-distribution/Cargo.toml
@@ -14,7 +14,7 @@ polkadot-node-network-protocol = { path = "../../network/protocol" }
 
 [dev-dependencies]
 polkadot-node-subsystem-test-helpers = { path = "../../subsystem-test-helpers" }
-bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] }
+bitvec = { version = "1.0.0", default-features = false, features = ["alloc"] }
 sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" }
 sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master" }
 sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" }
diff --git a/polkadot/node/network/bitfield-distribution/src/tests.rs b/polkadot/node/network/bitfield-distribution/src/tests.rs
index 94b200a4a853108569848a5d24c96238ce6776ec..049b04ca6a0f7f0046b0ab9de810e9101028ebe7 100644
--- a/polkadot/node/network/bitfield-distribution/src/tests.rs
+++ b/polkadot/node/network/bitfield-distribution/src/tests.rs
@@ -124,7 +124,7 @@ fn receive_invalid_signature() {
 	let validator_1 = SyncCryptoStore::sr25519_generate_new(&*keystore, ValidatorId::ID, None)
 		.expect("key created");
 
-	let payload = AvailabilityBitfield(bitvec![bitvec::order::Lsb0, u8; 1u8; 32]);
+	let payload = AvailabilityBitfield(bitvec![u8, bitvec::order::Lsb0; 1u8; 32]);
 	let invalid_signed = executor::block_on(Signed::<AvailabilityBitfield>::sign(
 		&keystore,
 		payload.clone(),
@@ -236,7 +236,7 @@ fn receive_invalid_validator_index() {
 
 	state.peer_views.insert(peer_b.clone(), view![hash_a]);
 
-	let payload = AvailabilityBitfield(bitvec![bitvec::order::Lsb0, u8; 1u8; 32]);
+	let payload = AvailabilityBitfield(bitvec![u8, bitvec::order::Lsb0; 1u8; 32]);
 	let signed = executor::block_on(Signed::<AvailabilityBitfield>::sign(
 		&keystore,
 		payload,
@@ -294,7 +294,7 @@ fn receive_duplicate_messages() {
 		state_with_view(our_view![hash_a, hash_b], hash_a.clone());
 
 	// create a signed message by validator 0
-	let payload = AvailabilityBitfield(bitvec![bitvec::order::Lsb0, u8; 1u8; 32]);
+	let payload = AvailabilityBitfield(bitvec![u8, bitvec::order::Lsb0; 1u8; 32]);
 	let signed_bitfield = executor::block_on(Signed::<AvailabilityBitfield>::sign(
 		&keystore,
 		payload,
@@ -403,7 +403,7 @@ fn do_not_relay_message_twice() {
 		state_with_view(our_view![hash], hash.clone());
 
 	// create a signed message by validator 0
-	let payload = AvailabilityBitfield(bitvec![bitvec::order::Lsb0, u8; 1u8; 32]);
+	let payload = AvailabilityBitfield(bitvec![u8, bitvec::order::Lsb0; 1u8; 32]);
 	let signed_bitfield = executor::block_on(Signed::<AvailabilityBitfield>::sign(
 		&keystore,
 		payload,
@@ -507,7 +507,7 @@ fn changing_view() {
 		state_with_view(our_view![hash_a, hash_b], hash_a.clone());
 
 	// create a signed message by validator 0
-	let payload = AvailabilityBitfield(bitvec![bitvec::order::Lsb0, u8; 1u8; 32]);
+	let payload = AvailabilityBitfield(bitvec![u8, bitvec::order::Lsb0; 1u8; 32]);
 	let signed_bitfield = executor::block_on(Signed::<AvailabilityBitfield>::sign(
 		&keystore,
 		payload,
@@ -655,7 +655,7 @@ fn do_not_send_message_back_to_origin() {
 	let (mut state, signing_context, keystore, validator) = state_with_view(our_view![hash], hash);
 
 	// create a signed message by validator 0
-	let payload = AvailabilityBitfield(bitvec![bitvec::order::Lsb0, u8; 1u8; 32]);
+	let payload = AvailabilityBitfield(bitvec![u8, bitvec::order::Lsb0; 1u8; 32]);
 	let signed_bitfield = executor::block_on(Signed::<AvailabilityBitfield>::sign(
 		&keystore,
 		payload,
diff --git a/polkadot/node/network/bridge/Cargo.toml b/polkadot/node/network/bridge/Cargo.toml
index 33bd223ca9917a3ddc5d0f32168d8b4a04896b08..77332645d88017d9a13444b73a41f4f08063d291 100644
--- a/polkadot/node/network/bridge/Cargo.toml
+++ b/polkadot/node/network/bridge/Cargo.toml
@@ -9,7 +9,7 @@ async-trait = "0.1.52"
 futures = "0.3.21"
 tracing = "0.1.31"
 polkadot-primitives = { path = "../../../primitives" }
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"] }
 sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" }
 sp-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" }
 polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" }
diff --git a/polkadot/node/network/collator-protocol/Cargo.toml b/polkadot/node/network/collator-protocol/Cargo.toml
index 08a9c30093ed0fadcacf6f656df0bd51d6a66e23..e2220c8404e7bf8dd85516eeb0507b05efbbebfb 100644
--- a/polkadot/node/network/collator-protocol/Cargo.toml
+++ b/polkadot/node/network/collator-protocol/Cargo.toml
@@ -30,7 +30,7 @@ assert_matches = "1.4.0"
 sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", features = ["std"] }
 sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "master" }
 sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" }
-parity-scale-codec = { version = "2.3.1", features = ["std"]  }
+parity-scale-codec = { version = "3.0.0", features = ["std"] }
 
 polkadot-subsystem-testhelpers = { package = "polkadot-node-subsystem-test-helpers", path = "../../subsystem-test-helpers" }
 polkadot-primitives-test-helpers = { path = "../../../primitives/test-helpers" }
diff --git a/polkadot/node/network/dispute-distribution/Cargo.toml b/polkadot/node/network/dispute-distribution/Cargo.toml
index e80a1d9333bb92de901d311fa2bf098d238a7c05..b2bb685a418420d8306bebc6d6f93c0166386350 100644
--- a/polkadot/node/network/dispute-distribution/Cargo.toml
+++ b/polkadot/node/network/dispute-distribution/Cargo.toml
@@ -8,7 +8,7 @@ edition = "2021"
 futures = "0.3.21"
 tracing = "0.1.31"
 derive_more = "0.99.17"
-parity-scale-codec = { version = "2.3.1", features = ["std"] }
+parity-scale-codec = { version = "3.0.0", features = ["std"] }
 polkadot-primitives = { path = "../../../primitives" }
 polkadot-erasure-coding = { path = "../../../erasure-coding" }
 polkadot-subsystem = { package = "polkadot-node-subsystem", path = "../../subsystem" }
diff --git a/polkadot/node/network/protocol/Cargo.toml b/polkadot/node/network/protocol/Cargo.toml
index a80b6cf27543eb56406963445954d01a1c87a15a..95f8e530f49c9d52b4473e478c1d2cd87aa31bfa 100644
--- a/polkadot/node/network/protocol/Cargo.toml
+++ b/polkadot/node/network/protocol/Cargo.toml
@@ -10,7 +10,7 @@ async-trait = "0.1.52"
 polkadot-primitives = { path = "../../../primitives" }
 polkadot-node-primitives = { path = "../../primitives" }
 polkadot-node-jaeger = { path = "../../jaeger" }
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"] }
 sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" }
 sc-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master" }
 strum = { version = "0.24", features = ["derive"] }
diff --git a/polkadot/node/network/statement-distribution/Cargo.toml b/polkadot/node/network/statement-distribution/Cargo.toml
index 8c0fa635036222598711f9b65ceea09e9934d961..5982393364ccdef70c12abec347efb6c4a396f60 100644
--- a/polkadot/node/network/statement-distribution/Cargo.toml
+++ b/polkadot/node/network/statement-distribution/Cargo.toml
@@ -17,7 +17,7 @@ polkadot-node-subsystem-util = { path = "../../subsystem-util" }
 polkadot-node-network-protocol = { path = "../../network/protocol" }
 arrayvec = "0.5.2"
 indexmap = "1.8.0"
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"] }
 derive_more = "0.99.17"
 thiserror = "1.0.30"
 
diff --git a/polkadot/node/overseer/Cargo.toml b/polkadot/node/overseer/Cargo.toml
index 40ee0955f8a46c839a8187b60a65f080e98031b5..b32e3d63c830ebbded5254da4e9fb379b30d2c06 100644
--- a/polkadot/node/overseer/Cargo.toml
+++ b/polkadot/node/overseer/Cargo.toml
@@ -18,7 +18,7 @@ polkadot-primitives = { path = "../../primitives" }
 polkadot-overseer-gen = { path = "./overseer-gen" }
 tracing = "0.1.31"
 lru = "0.7"
-parity-util-mem = { version = ">= 0.10.1", default-features = false }
+parity-util-mem = { version = "0.11.0", default-features = false }
 
 [dev-dependencies]
 metered-channel = { path = "../metered-channel" }
diff --git a/polkadot/node/primitives/Cargo.toml b/polkadot/node/primitives/Cargo.toml
index a56f1ba56f8e0cd05f806cf402e35674b0f3e17d..de5a09cb4de6c7d5b3eaf1ec81ba0f9020752a57 100644
--- a/polkadot/node/primitives/Cargo.toml
+++ b/polkadot/node/primitives/Cargo.toml
@@ -9,7 +9,7 @@ description = "Primitives types for the Node-side"
 bounded-vec = "0.5"
 futures = "0.3.21"
 polkadot-primitives = { path = "../../primitives" }
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"] }
 sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" }
 sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master" }
 sp-consensus-vrf = { git = "https://github.com/paritytech/substrate", branch = "master" }
diff --git a/polkadot/node/service/Cargo.toml b/polkadot/node/service/Cargo.toml
index 771c2614a4d820fe225e3b4c45f61b482a82d44b..6e233a4a4119df3d67a738412918f0d6987dd494 100644
--- a/polkadot/node/service/Cargo.toml
+++ b/polkadot/node/service/Cargo.toml
@@ -66,8 +66,8 @@ hex-literal = "0.3.4"
 tracing = "0.1.31"
 serde = { version = "1.0.136", features = ["derive"] }
 thiserror = "1.0.30"
-kvdb = "0.10.0"
-kvdb-rocksdb = { version = "0.14.0", optional = true }
+kvdb = "0.11.0"
+kvdb-rocksdb = { version = "0.15.1", optional = true }
 async-trait = "0.1.52"
 lru = "0.7"
 
diff --git a/polkadot/node/subsystem-util/Cargo.toml b/polkadot/node/subsystem-util/Cargo.toml
index 1bb8eea0199135aae28e57132d1f090218fc01bd..a9d3b69ac6bb0715fd0e96973c4ad95ef9e07101 100644
--- a/polkadot/node/subsystem-util/Cargo.toml
+++ b/polkadot/node/subsystem-util/Cargo.toml
@@ -9,7 +9,7 @@ description = "Subsystem traits and message definitions"
 async-trait = "0.1.52"
 futures = "0.3.21"
 itertools = "0.10"
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"] }
 pin-project = "1.0.9"
 rand = "0.8.5"
 thiserror = "1.0.30"
diff --git a/polkadot/node/test/client/Cargo.toml b/polkadot/node/test/client/Cargo.toml
index 3077304889305fb4c7f172294e001aab2788f27c..a79e99bcd99cf9452b310f0d063423d7671a8f19 100644
--- a/polkadot/node/test/client/Cargo.toml
+++ b/polkadot/node/test/client/Cargo.toml
@@ -5,7 +5,7 @@ authors = ["Parity Technologies <admin@parity.io>"]
 edition = "2021"
 
 [dependencies]
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"] }
 
 # Polkadot dependencies
 polkadot-test-runtime = { path = "../../../runtime/test-runtime" }
diff --git a/polkadot/node/zombienet-backchannel/Cargo.toml b/polkadot/node/zombienet-backchannel/Cargo.toml
index 8616c063fd08e57b281a3e4cb3a2d8ca38d0ccaf..147d6498f08fe9321f397c5cbbf22abd9194d589 100644
--- a/polkadot/node/zombienet-backchannel/Cargo.toml
+++ b/polkadot/node/zombienet-backchannel/Cargo.toml
@@ -14,7 +14,7 @@ url = "2.0.0"
 tokio-tungstenite = "0.17"
 futures-util = "0.3.21"
 lazy_static = "1.4.0"
-parity-scale-codec = { version = "2.3.1", features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", features = ["derive"] }
 reqwest = "0.11"
 thiserror = "1.0.30"
 tracing = "0.1.31"
diff --git a/polkadot/parachain/Cargo.toml b/polkadot/parachain/Cargo.toml
index 266a19ead253a8423ab3ba201b897be0e85e064f..05eadce5b725457714fab2d0d3887d6335362ae5 100644
--- a/polkadot/parachain/Cargo.toml
+++ b/polkadot/parachain/Cargo.toml
@@ -9,9 +9,9 @@ edition = "2021"
 # note: special care is taken to avoid inclusion of `sp-io` externals when compiling
 # this crate for WASM. This is critical to avoid forcing all parachain WASM into implementing
 # various unnecessary Substrate-specific endpoints.
-parity-scale-codec = { version = "2.0.0", default-features = false, features = [ "derive" ] }
-parity-util-mem = { version = "0.10.0", default-features = false, optional = true }
-scale-info = { version = "1.0", default-features = false, features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = [ "derive" ] }
+parity-util-mem = { version = "0.11.0", default-features = false, optional = true }
+scale-info = { version = "2.0.0", default-features = false, features = ["derive"] }
 sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 sp-core = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
diff --git a/polkadot/parachain/test-parachains/Cargo.toml b/polkadot/parachain/test-parachains/Cargo.toml
index d587c30292d39e7a9a066144f680dadef9aca5a5..52f5ee5a35f0c5e71c71c0b918aa8e4aab94540a 100644
--- a/polkadot/parachain/test-parachains/Cargo.toml
+++ b/polkadot/parachain/test-parachains/Cargo.toml
@@ -7,7 +7,7 @@ edition = "2021"
 
 [dependencies]
 tiny-keccak = "2.0.2"
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"] }
 
 adder = { package = "test-parachain-adder", path = "adder" }
 halt = { package = "test-parachain-halt", path = "halt" }
diff --git a/polkadot/parachain/test-parachains/adder/Cargo.toml b/polkadot/parachain/test-parachains/adder/Cargo.toml
index 7bd3272a486142e9bd7ebde0087b442aa0055e1a..99e84d3dcb40139faf0dc11ff5fe571657a3906a 100644
--- a/polkadot/parachain/test-parachains/adder/Cargo.toml
+++ b/polkadot/parachain/test-parachains/adder/Cargo.toml
@@ -8,7 +8,7 @@ build = "build.rs"
 
 [dependencies]
 parachain = { package = "polkadot-parachain", path = "../../", default-features = false, features = [ "wasm-api" ] }
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"] }
 sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 tiny-keccak = { version = "2.0.2", features = ["keccak"] }
 dlmalloc = { version = "0.2.3", features = [ "global" ] }
diff --git a/polkadot/parachain/test-parachains/adder/collator/Cargo.toml b/polkadot/parachain/test-parachains/adder/collator/Cargo.toml
index 495710f3f7c9ad25e0cc8a7f1a5e9bb565e37db9..672b82f61d50f558eb811b5510de4fbb93e507aa 100644
--- a/polkadot/parachain/test-parachains/adder/collator/Cargo.toml
+++ b/polkadot/parachain/test-parachains/adder/collator/Cargo.toml
@@ -14,7 +14,7 @@ name = "adder_collator_puppet_worker"
 path = "bin/puppet_worker.rs"
 
 [dependencies]
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"] }
 clap = { version = "3.1", features = ["derive"] }
 futures = "0.3.21"
 futures-timer = "3.0.2"
diff --git a/polkadot/primitives/Cargo.toml b/polkadot/primitives/Cargo.toml
index 30581eb307fc946887e517297919aa6663ab11ba..cc4178b28ad421a1011c3965e5094192f01bf166 100644
--- a/polkadot/primitives/Cargo.toml
+++ b/polkadot/primitives/Cargo.toml
@@ -6,8 +6,8 @@ edition = "2021"
 
 [dependencies]
 serde = { version = "1.0.136", optional = true, features = ["derive"] }
-scale-info = { version = "1.0", default-features = false, features = ["bit-vec", "derive"] }
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["bit-vec", "derive"] }
+scale-info = { version = "2.0.0", default-features = false, features = ["bit-vec", "derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["bit-vec", "derive"] }
 primitives = { package = "sp-core", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 inherents = { package = "sp-inherents", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 application-crypto = { package = "sp-application-crypto", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
@@ -24,10 +24,10 @@ runtime_primitives = { package = "sp-runtime", git = "https://github.com/parityt
 polkadot-parachain = { path = "../parachain", default-features = false }
 polkadot-core-primitives = { path = "../core-primitives", default-features = false }
 trie = { package = "sp-trie", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
-bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] }
+bitvec = { version = "1.0.0", default-features = false, features = ["alloc"] }
 frame-system = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 hex-literal = "0.3.4"
-parity-util-mem = { version = "0.10.0", default-features = false, optional = true }
+parity-util-mem = { version = "0.11.0", default-features = false, optional = true }
 
 [features]
 default = ["std"]
diff --git a/polkadot/primitives/src/v0.rs b/polkadot/primitives/src/v0.rs
index 76f9230aaa12e9c28958c89908eb806980ccc2c0..c4751babd35bebee7896b51af40b7ea47f81fa40 100644
--- a/polkadot/primitives/src/v0.rs
+++ b/polkadot/primitives/src/v0.rs
@@ -797,7 +797,7 @@ pub struct AttestedCandidate {
 	/// Validity attestations.
 	pub validity_votes: Vec<ValidityAttestation>,
 	/// Indices of the corresponding validity votes.
-	pub validator_indices: BitVec<bitvec::order::Lsb0, u8>,
+	pub validator_indices: BitVec<u8, bitvec::order::Lsb0>,
 }
 
 impl AttestedCandidate {
diff --git a/polkadot/primitives/src/v1/mod.rs b/polkadot/primitives/src/v1/mod.rs
index 9e06a82fa4c86aa44dc701b81f4788862a377024..e6281c20decf448df8f2a6db933be9139d7d2e10 100644
--- a/polkadot/primitives/src/v1/mod.rs
+++ b/polkadot/primitives/src/v1/mod.rs
@@ -545,10 +545,10 @@ impl CandidateCommitments {
 ///
 /// Every bit refers to an availability core index.
 #[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, TypeInfo)]
-pub struct AvailabilityBitfield(pub BitVec<bitvec::order::Lsb0, u8>);
+pub struct AvailabilityBitfield(pub BitVec<u8, bitvec::order::Lsb0>);
 
-impl From<BitVec<bitvec::order::Lsb0, u8>> for AvailabilityBitfield {
-	fn from(inner: BitVec<bitvec::order::Lsb0, u8>) -> Self {
+impl From<BitVec<u8, bitvec::order::Lsb0>> for AvailabilityBitfield {
+	fn from(inner: BitVec<u8, bitvec::order::Lsb0>) -> Self {
 		AvailabilityBitfield(inner)
 	}
 }
@@ -574,7 +574,7 @@ pub struct BackedCandidate<H = Hash> {
 	/// The validity votes themselves, expressed as signatures.
 	pub validity_votes: Vec<ValidityAttestation>,
 	/// The indices of the validators within the group, expressed as a bitfield.
-	pub validator_indices: BitVec<bitvec::order::Lsb0, u8>,
+	pub validator_indices: BitVec<u8, bitvec::order::Lsb0>,
 }
 
 impl<H> BackedCandidate<H> {
@@ -810,7 +810,7 @@ pub struct OccupiedCore<H = Hash, N = BlockNumber> {
 	/// validators has attested to availability on-chain. A 2/3+ majority of `1` bits means that
 	/// this will be available.
 	#[cfg_attr(feature = "std", ignore_malloc_size_of = "outside type")]
-	pub availability: BitVec<bitvec::order::Lsb0, u8>,
+	pub availability: BitVec<u8, bitvec::order::Lsb0>,
 	/// The group assigned to distribute availability pieces of this candidate.
 	pub group_responsible: GroupIndex,
 	/// The hash of the candidate occupying the core.
@@ -1331,9 +1331,9 @@ pub type CheckedMultiDisputeStatementSet = Vec<CheckedDisputeStatementSet>;
 #[derive(Encode, Decode, Clone, RuntimeDebug, PartialEq, TypeInfo)]
 pub struct DisputeState<N = BlockNumber> {
 	/// A bitfield indicating all validators for the candidate.
-	pub validators_for: BitVec<bitvec::order::Lsb0, u8>, // one bit per validator.
+	pub validators_for: BitVec<u8, bitvec::order::Lsb0>, // one bit per validator.
 	/// A bitfield indicating all validators against the candidate.
-	pub validators_against: BitVec<bitvec::order::Lsb0, u8>, // one bit per validator.
+	pub validators_against: BitVec<u8, bitvec::order::Lsb0>, // one bit per validator.
 	/// The block number at which the dispute started on-chain.
 	pub start: N,
 	/// The block number at which the dispute concluded on-chain.
diff --git a/polkadot/runtime/common/Cargo.toml b/polkadot/runtime/common/Cargo.toml
index 1d9a7b31d2afd740b1f6ba6e141b6dd1884e168a..545f25360b56e5c8d84dcc1d5ae2cc23f14f6698 100644
--- a/polkadot/runtime/common/Cargo.toml
+++ b/polkadot/runtime/common/Cargo.toml
@@ -6,11 +6,11 @@ edition = "2021"
 
 [dependencies]
 impl-trait-for-tuples = "0.2.2"
-bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] }
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] }
+bitvec = { version = "1.0.0", default-features = false, features = ["alloc"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"] }
 log = { version = "0.4.13", default-features = false }
 rustc-hex = { version = "2.1.0", default-features = false }
-scale-info = { version = "1.0", default-features = false, features = ["derive"] }
+scale-info = { version = "2.0.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.136", default-features = false }
 serde_derive = { version = "1.0.117", optional = true }
 static_assertions = "1.1.0"
diff --git a/polkadot/runtime/common/slot_range_helper/Cargo.toml b/polkadot/runtime/common/slot_range_helper/Cargo.toml
index 0f86e308a161e0dc65d4a04051cab78b949c6c39..7ad83a6a039f4c5360f06b2ef726007e946b7230 100644
--- a/polkadot/runtime/common/slot_range_helper/Cargo.toml
+++ b/polkadot/runtime/common/slot_range_helper/Cargo.toml
@@ -7,7 +7,7 @@ edition = "2021"
 [dependencies]
 paste = "1.0"
 enumn = "0.1.3"
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"] }
 sp-std = { package = "sp-std", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 
diff --git a/polkadot/runtime/kusama/Cargo.toml b/polkadot/runtime/kusama/Cargo.toml
index f705e28c816afae95ea03a4368d12c2b4623a023..947015c581cf9b62bb910d6b1061fab8eeafc519 100644
--- a/polkadot/runtime/kusama/Cargo.toml
+++ b/polkadot/runtime/kusama/Cargo.toml
@@ -6,9 +6,9 @@ edition = "2021"
 build = "build.rs"
 
 [dependencies]
-bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] }
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive", "max-encoded-len"] }
-scale-info = { version = "1.0", default-features = false, features = ["derive"] }
+bitvec = { version = "1.0.0", default-features = false, features = ["alloc"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive", "max-encoded-len"] }
+scale-info = { version = "2.0.0", default-features = false, features = ["derive"] }
 log = { version = "0.4.14", default-features = false }
 rustc-hex = { version = "2.1.0", default-features = false }
 serde = { version = "1.0.136", default-features = false }
diff --git a/polkadot/runtime/metrics/Cargo.toml b/polkadot/runtime/metrics/Cargo.toml
index 48e84a4a16eee3d926c953285ad38ad956b465f4..981d3d9ae98e3910bd83dfb59cd258f2e80783ed 100644
--- a/polkadot/runtime/metrics/Cargo.toml
+++ b/polkadot/runtime/metrics/Cargo.toml
@@ -7,7 +7,7 @@ edition = "2021"
 [dependencies]
 sp-std = { package = "sp-std", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false}
 sp-tracing = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
-parity-scale-codec = { version = "2.3.1", default-features = false }
+parity-scale-codec = { version = "3.0.0", default-features = false }
 primitives = { package = "polkadot-primitives", path = "../../primitives", default-features = false }
 
 bs58 = { version = "0.4.0", default-features = false, features = ["alloc"] }
diff --git a/polkadot/runtime/parachains/Cargo.toml b/polkadot/runtime/parachains/Cargo.toml
index 35880d339c1eeb7d8bd5ba541d55771ee6640bea..da8a4e979201e5346b0cb2d318d358bdcca11849 100644
--- a/polkadot/runtime/parachains/Cargo.toml
+++ b/polkadot/runtime/parachains/Cargo.toml
@@ -5,11 +5,11 @@ authors = ["Parity Technologies <admin@parity.io>"]
 edition = "2021"
 
 [dependencies]
-bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] }
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] }
+bitvec = { version = "1.0.0", default-features = false, features = ["alloc"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"] }
 log = { version = "0.4.14", default-features = false }
 rustc-hex = { version = "2.1.0", default-features = false }
-scale-info = { version = "1.0", default-features = false, features = ["derive"] }
+scale-info = { version = "2.0.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.136", features = [ "derive" ], optional = true }
 derive_more = "0.99.17"
 bitflags = "1.3.2"
diff --git a/polkadot/runtime/parachains/src/builder.rs b/polkadot/runtime/parachains/src/builder.rs
index e1a1e88cf29f6a29e47c3c5a0ee305e46bdf431b..2cfd27ec946137be9bfae3666a817fd7079b4d0e 100644
--- a/polkadot/runtime/parachains/src/builder.rs
+++ b/polkadot/runtime/parachains/src/builder.rs
@@ -257,7 +257,7 @@ impl<T: paras_inherent::Config> BenchBuilder<T> {
 		group_idx: GroupIndex,
 		core_idx: CoreIndex,
 		candidate_hash: CandidateHash,
-		availability_votes: BitVec<BitOrderLsb0, u8>,
+		availability_votes: BitVec<u8, BitOrderLsb0>,
 	) -> inclusion::CandidatePendingAvailability<T::Hash, T::BlockNumber> {
 		inclusion::CandidatePendingAvailability::<T::Hash, T::BlockNumber>::new(
 			core_idx,                          // core
@@ -280,7 +280,7 @@ impl<T: paras_inherent::Config> BenchBuilder<T> {
 		para_id: ParaId,
 		core_idx: CoreIndex,
 		group_idx: GroupIndex,
-		availability_votes: BitVec<BitOrderLsb0, u8>,
+		availability_votes: BitVec<u8, BitOrderLsb0>,
 		candidate_hash: CandidateHash,
 	) {
 		let candidate_availability = Self::candidate_availability_mock(
@@ -304,7 +304,7 @@ impl<T: paras_inherent::Config> BenchBuilder<T> {
 	/// Create an `AvailabilityBitfield` where `concluding` is a map where each key is a core index
 	/// that is concluding and `cores` is the total number of cores in the system.
 	fn availability_bitvec(concluding: &BTreeMap<u32, u32>, cores: u32) -> AvailabilityBitfield {
-		let mut bitfields = bitvec::bitvec![bitvec::order::Lsb0, u8; 0; 0];
+		let mut bitfields = bitvec::bitvec![u8, bitvec::order::Lsb0; 0; 0];
 		for i in 0..cores {
 			if concluding.get(&(i as u32)).is_some() {
 				bitfields.push(true);
@@ -373,9 +373,9 @@ impl<T: paras_inherent::Config> BenchBuilder<T> {
 	}
 
 	/// Create a bitvec of `validators` length with all yes votes.
-	fn validator_availability_votes_yes(validators: usize) -> BitVec<bitvec::order::Lsb0, u8> {
+	fn validator_availability_votes_yes(validators: usize) -> BitVec<u8, bitvec::order::Lsb0> {
 		// every validator confirms availability.
-		bitvec::bitvec![bitvec::order::Lsb0, u8; 1; validators as usize]
+		bitvec::bitvec![u8, bitvec::order::Lsb0; 1; validators as usize]
 	}
 
 	/// Setup session 1 and create `self.validators_map` and `self.validators`.
@@ -565,7 +565,7 @@ impl<T: paras_inherent::Config> BenchBuilder<T> {
 				BackedCandidate::<T::Hash> {
 					candidate,
 					validity_votes,
-					validator_indices: bitvec::bitvec![bitvec::order::Lsb0, u8; 1; group_validators.len()],
+					validator_indices: bitvec::bitvec![u8, bitvec::order::Lsb0; 1; group_validators.len()],
 				}
 			})
 			.collect()
diff --git a/polkadot/runtime/parachains/src/disputes.rs b/polkadot/runtime/parachains/src/disputes.rs
index b723d4a4ab1310a5a476f96a0414dbedef298a28..a938046b888d350e83b9cec2eadaa709f1c6cb93 100644
--- a/polkadot/runtime/parachains/src/disputes.rs
+++ b/polkadot/runtime/parachains/src/disputes.rs
@@ -530,11 +530,7 @@ impl DisputeStateFlags {
 		let supermajority_threshold = supermajority_threshold(n);
 
 		let mut flags = DisputeStateFlags::default();
-		let all_participants = {
-			let mut a = state.validators_for.clone();
-			*a |= state.validators_against.iter().by_val();
-			a
-		};
+		let all_participants = state.validators_for.clone() | state.validators_against.clone();
 		if all_participants.count_ones() > byzantine_threshold {
 			flags |= DisputeStateFlags::CONFIRMED;
 		}
@@ -567,7 +563,7 @@ struct ImportSummary<BlockNumber> {
 	// Validators to slash for being (wrongly) on the FOR side.
 	slash_for: Vec<ValidatorIndex>,
 	// New participants in the dispute.
-	new_participants: bitvec::vec::BitVec<BitOrderLsb0, u8>,
+	new_participants: bitvec::vec::BitVec<u8, BitOrderLsb0>,
 	// Difference in state flags from previous.
 	new_flags: DisputeStateFlags,
 }
@@ -597,14 +593,14 @@ struct ImportUndo {
 struct DisputeStateImporter<BlockNumber> {
 	state: DisputeState<BlockNumber>,
 	now: BlockNumber,
-	new_participants: bitvec::vec::BitVec<BitOrderLsb0, u8>,
+	new_participants: bitvec::vec::BitVec<u8, BitOrderLsb0>,
 	pre_flags: DisputeStateFlags,
 }
 
 impl<BlockNumber: Clone> DisputeStateImporter<BlockNumber> {
 	fn new(state: DisputeState<BlockNumber>, now: BlockNumber) -> Self {
 		let pre_flags = DisputeStateFlags::from_state(&state);
-		let new_participants = bitvec::bitvec![BitOrderLsb0, u8; 0; state.validators_for.len()];
+		let new_participants = bitvec::bitvec![u8, BitOrderLsb0; 0; state.validators_for.len()];
 
 		DisputeStateImporter { state, now, new_participants, pre_flags }
 	}
@@ -675,16 +671,10 @@ impl<BlockNumber: Clone> DisputeStateImporter<BlockNumber> {
 					.collect()
 			},
 			(false, true) => {
-				let prev_participants = {
-					// all participants
-					let mut a = self.state.validators_for.clone();
-					*a |= self.state.validators_against.iter().by_val();
-
-					// which are not new participants
-					*a &= self.new_participants.iter().by_val().map(|b| !b);
-
-					a
-				};
+				// all participants, which are not new participants
+				let prev_participants = (self.state.validators_for.clone() |
+					self.state.validators_against.clone()) &
+					!self.new_participants.clone();
 
 				prev_participants
 					.iter_ones()
@@ -942,8 +932,8 @@ impl<T: Config> Pallet<T> {
 				dispute_state
 			} else {
 				DisputeState {
-					validators_for: bitvec![BitOrderLsb0, u8; 0; n_validators],
-					validators_against: bitvec![BitOrderLsb0, u8; 0; n_validators],
+					validators_for: bitvec![u8, BitOrderLsb0; 0; n_validators],
+					validators_against: bitvec![u8, BitOrderLsb0; 0; n_validators],
 					start: now,
 					concluded_at: None,
 				}
@@ -1106,8 +1096,8 @@ impl<T: Config> Pallet<T> {
 				(
 					true,
 					DisputeState {
-						validators_for: bitvec![BitOrderLsb0, u8; 0; n_validators],
-						validators_against: bitvec![BitOrderLsb0, u8; 0; n_validators],
+						validators_for: bitvec![u8, BitOrderLsb0; 0; n_validators],
+						validators_against: bitvec![u8, BitOrderLsb0; 0; n_validators],
 						start: now,
 						concluded_at: None,
 					},
@@ -1271,10 +1261,10 @@ fn has_supermajority_against<BlockNumber>(dispute: &DisputeState<BlockNumber>) -
 fn decrement_spam<BlockNumber>(
 	spam_slots: &mut [u32],
 	dispute: &DisputeState<BlockNumber>,
-) -> bitvec::vec::BitVec<BitOrderLsb0, u8> {
+) -> bitvec::vec::BitVec<u8, BitOrderLsb0> {
 	let byzantine_threshold = byzantine_threshold(spam_slots.len());
 
-	let participating = dispute.validators_for.clone() | dispute.validators_against.iter().by_val();
+	let participating = dispute.validators_for.clone() | dispute.validators_against.clone();
 	let decrement_spam = participating.count_ones() <= byzantine_threshold;
 	for validator_index in participating.iter_ones() {
 		if decrement_spam {
diff --git a/polkadot/runtime/parachains/src/disputes/tests.rs b/polkadot/runtime/parachains/src/disputes/tests.rs
index 5a00cfa8f4bc3b165491bc9e1f7f0349a9620c60..d05cda5758c20e8b0c5b8d4b4d083ce2d1f99885 100644
--- a/polkadot/runtime/parachains/src/disputes/tests.rs
+++ b/polkadot/runtime/parachains/src/disputes/tests.rs
@@ -105,8 +105,8 @@ fn test_contains_duplicates_in_sorted_iter() {
 fn test_dispute_state_flag_from_state() {
 	assert_eq!(
 		DisputeStateFlags::from_state(&DisputeState {
-			validators_for: bitvec![BitOrderLsb0, u8; 0, 0, 0, 0, 0, 0, 0, 0],
-			validators_against: bitvec![BitOrderLsb0, u8; 0, 0, 0, 0, 0, 0, 0, 0],
+			validators_for: bitvec![u8, BitOrderLsb0; 0, 0, 0, 0, 0, 0, 0, 0],
+			validators_against: bitvec![u8, BitOrderLsb0; 0, 0, 0, 0, 0, 0, 0, 0],
 			start: 0,
 			concluded_at: None,
 		}),
@@ -115,8 +115,8 @@ fn test_dispute_state_flag_from_state() {
 
 	assert_eq!(
 		DisputeStateFlags::from_state(&DisputeState {
-			validators_for: bitvec![BitOrderLsb0, u8; 1, 1, 1, 1, 1, 0, 0],
-			validators_against: bitvec![BitOrderLsb0, u8; 0, 0, 0, 0, 0, 0, 0],
+			validators_for: bitvec![u8, BitOrderLsb0; 1, 1, 1, 1, 1, 0, 0],
+			validators_against: bitvec![u8, BitOrderLsb0; 0, 0, 0, 0, 0, 0, 0],
 			start: 0,
 			concluded_at: None,
 		}),
@@ -125,8 +125,8 @@ fn test_dispute_state_flag_from_state() {
 
 	assert_eq!(
 		DisputeStateFlags::from_state(&DisputeState {
-			validators_for: bitvec![BitOrderLsb0, u8; 0, 0, 0, 0, 0, 0, 0],
-			validators_against: bitvec![BitOrderLsb0, u8; 1, 1, 1, 1, 1, 0, 0],
+			validators_for: bitvec![u8, BitOrderLsb0; 0, 0, 0, 0, 0, 0, 0],
+			validators_against: bitvec![u8, BitOrderLsb0; 1, 1, 1, 1, 1, 0, 0],
 			start: 0,
 			concluded_at: None,
 		}),
@@ -138,8 +138,8 @@ fn test_dispute_state_flag_from_state() {
 fn test_import_new_participant_spam_inc() {
 	let mut importer = DisputeStateImporter::new(
 		DisputeState {
-			validators_for: bitvec![BitOrderLsb0, u8; 1, 0, 0, 0, 0, 0, 0, 0],
-			validators_against: bitvec![BitOrderLsb0, u8; 0, 0, 0, 0, 0, 0, 0, 0],
+			validators_for: bitvec![u8, BitOrderLsb0; 1, 0, 0, 0, 0, 0, 0, 0],
+			validators_against: bitvec![u8, BitOrderLsb0; 0, 0, 0, 0, 0, 0, 0, 0],
 			start: 0,
 			concluded_at: None,
 		},
@@ -165,8 +165,8 @@ fn test_import_new_participant_spam_inc() {
 	assert_eq!(
 		summary.state,
 		DisputeState {
-			validators_for: bitvec![BitOrderLsb0, u8; 1, 0, 1, 0, 0, 0, 0, 0],
-			validators_against: bitvec![BitOrderLsb0, u8; 1, 0, 1, 0, 0, 0, 0, 0],
+			validators_for: bitvec![u8, BitOrderLsb0; 1, 0, 1, 0, 0, 0, 0, 0],
+			validators_against: bitvec![u8, BitOrderLsb0; 1, 0, 1, 0, 0, 0, 0, 0],
 			start: 0,
 			concluded_at: None,
 		},
@@ -174,15 +174,15 @@ fn test_import_new_participant_spam_inc() {
 	assert_eq!(summary.spam_slot_changes, vec![(ValidatorIndex(2), SpamSlotChange::Inc)]);
 	assert!(summary.slash_for.is_empty());
 	assert!(summary.slash_against.is_empty());
-	assert_eq!(summary.new_participants, bitvec![BitOrderLsb0, u8; 0, 0, 1, 0, 0, 0, 0, 0]);
+	assert_eq!(summary.new_participants, bitvec![u8, BitOrderLsb0; 0, 0, 1, 0, 0, 0, 0, 0]);
 }
 
 #[test]
 fn test_import_prev_participant_spam_dec_confirmed() {
 	let mut importer = DisputeStateImporter::new(
 		DisputeState {
-			validators_for: bitvec![BitOrderLsb0, u8; 1, 0, 0, 0, 0, 0, 0, 0],
-			validators_against: bitvec![BitOrderLsb0, u8; 0, 1, 0, 0, 0, 0, 0, 0],
+			validators_for: bitvec![u8, BitOrderLsb0; 1, 0, 0, 0, 0, 0, 0, 0],
+			validators_against: bitvec![u8, BitOrderLsb0; 0, 1, 0, 0, 0, 0, 0, 0],
 			start: 0,
 			concluded_at: None,
 		},
@@ -195,8 +195,8 @@ fn test_import_prev_participant_spam_dec_confirmed() {
 	assert_eq!(
 		summary.state,
 		DisputeState {
-			validators_for: bitvec![BitOrderLsb0, u8; 1, 0, 1, 0, 0, 0, 0, 0],
-			validators_against: bitvec![BitOrderLsb0, u8; 0, 1, 0, 0, 0, 0, 0, 0],
+			validators_for: bitvec![u8, BitOrderLsb0; 1, 0, 1, 0, 0, 0, 0, 0],
+			validators_against: bitvec![u8, BitOrderLsb0; 0, 1, 0, 0, 0, 0, 0, 0],
 			start: 0,
 			concluded_at: None,
 		},
@@ -207,7 +207,7 @@ fn test_import_prev_participant_spam_dec_confirmed() {
 	);
 	assert!(summary.slash_for.is_empty());
 	assert!(summary.slash_against.is_empty());
-	assert_eq!(summary.new_participants, bitvec![BitOrderLsb0, u8; 0, 0, 1, 0, 0, 0, 0, 0]);
+	assert_eq!(summary.new_participants, bitvec![u8, BitOrderLsb0; 0, 0, 1, 0, 0, 0, 0, 0]);
 	assert_eq!(summary.new_flags, DisputeStateFlags::CONFIRMED);
 }
 
@@ -215,8 +215,8 @@ fn test_import_prev_participant_spam_dec_confirmed() {
 fn test_import_prev_participant_spam_dec_confirmed_slash_for() {
 	let mut importer = DisputeStateImporter::new(
 		DisputeState {
-			validators_for: bitvec![BitOrderLsb0, u8; 1, 0, 0, 0, 0, 0, 0, 0],
-			validators_against: bitvec![BitOrderLsb0, u8; 0, 1, 0, 0, 0, 0, 0, 0],
+			validators_for: bitvec![u8, BitOrderLsb0; 1, 0, 0, 0, 0, 0, 0, 0],
+			validators_against: bitvec![u8, BitOrderLsb0; 0, 1, 0, 0, 0, 0, 0, 0],
 			start: 0,
 			concluded_at: None,
 		},
@@ -234,8 +234,8 @@ fn test_import_prev_participant_spam_dec_confirmed_slash_for() {
 	assert_eq!(
 		summary.state,
 		DisputeState {
-			validators_for: bitvec![BitOrderLsb0, u8; 1, 0, 1, 0, 0, 0, 0, 0],
-			validators_against: bitvec![BitOrderLsb0, u8; 0, 1, 1, 1, 1, 1, 1, 0],
+			validators_for: bitvec![u8, BitOrderLsb0; 1, 0, 1, 0, 0, 0, 0, 0],
+			validators_against: bitvec![u8, BitOrderLsb0; 0, 1, 1, 1, 1, 1, 1, 0],
 			start: 0,
 			concluded_at: Some(0),
 		},
@@ -246,7 +246,7 @@ fn test_import_prev_participant_spam_dec_confirmed_slash_for() {
 	);
 	assert_eq!(summary.slash_for, vec![ValidatorIndex(0), ValidatorIndex(2)]);
 	assert!(summary.slash_against.is_empty());
-	assert_eq!(summary.new_participants, bitvec![BitOrderLsb0, u8; 0, 0, 1, 1, 1, 1, 1, 0]);
+	assert_eq!(summary.new_participants, bitvec![u8, BitOrderLsb0; 0, 0, 1, 1, 1, 1, 1, 0]);
 	assert_eq!(
 		summary.new_flags,
 		DisputeStateFlags::CONFIRMED | DisputeStateFlags::AGAINST_SUPERMAJORITY,
@@ -257,8 +257,8 @@ fn test_import_prev_participant_spam_dec_confirmed_slash_for() {
 fn test_import_slash_against() {
 	let mut importer = DisputeStateImporter::new(
 		DisputeState {
-			validators_for: bitvec![BitOrderLsb0, u8; 1, 0, 1, 0, 0, 0, 0, 0],
-			validators_against: bitvec![BitOrderLsb0, u8; 0, 1, 0, 0, 0, 0, 0, 0],
+			validators_for: bitvec![u8, BitOrderLsb0; 1, 0, 1, 0, 0, 0, 0, 0],
+			validators_against: bitvec![u8, BitOrderLsb0; 0, 1, 0, 0, 0, 0, 0, 0],
 			start: 0,
 			concluded_at: None,
 		},
@@ -275,8 +275,8 @@ fn test_import_slash_against() {
 	assert_eq!(
 		summary.state,
 		DisputeState {
-			validators_for: bitvec![BitOrderLsb0, u8; 1, 0, 1, 1, 1, 0, 1, 1],
-			validators_against: bitvec![BitOrderLsb0, u8; 0, 1, 0, 0, 0, 1, 0, 0],
+			validators_for: bitvec![u8, BitOrderLsb0; 1, 0, 1, 1, 1, 0, 1, 1],
+			validators_against: bitvec![u8, BitOrderLsb0; 0, 1, 0, 0, 0, 1, 0, 0],
 			start: 0,
 			concluded_at: Some(0),
 		},
@@ -284,7 +284,7 @@ fn test_import_slash_against() {
 	assert!(summary.spam_slot_changes.is_empty());
 	assert!(summary.slash_for.is_empty());
 	assert_eq!(summary.slash_against, vec![ValidatorIndex(1), ValidatorIndex(5)]);
-	assert_eq!(summary.new_participants, bitvec![BitOrderLsb0, u8; 0, 0, 0, 1, 1, 1, 1, 1]);
+	assert_eq!(summary.new_participants, bitvec![u8, BitOrderLsb0; 0, 0, 0, 1, 1, 1, 1, 1]);
 	assert_eq!(summary.new_flags, DisputeStateFlags::FOR_SUPERMAJORITY);
 }
 
@@ -1021,8 +1021,8 @@ fn test_provide_multi_dispute_success_and_other() {
 					5,
 					candidate_hash.clone(),
 					DisputeState {
-						validators_for: bitvec![BitOrderLsb0, u8; 0, 0, 0, 0, 0, 1, 0],
-						validators_against: bitvec![BitOrderLsb0, u8; 1, 1, 1, 0, 1, 0, 1],
+						validators_for: bitvec![u8, BitOrderLsb0; 0, 0, 0, 0, 0, 1, 0],
+						validators_against: bitvec![u8, BitOrderLsb0; 1, 1, 1, 0, 1, 0, 1],
 						start: 6,
 						concluded_at: Some(6), // 5 vote against
 					}
@@ -1031,8 +1031,8 @@ fn test_provide_multi_dispute_success_and_other() {
 					3,
 					candidate_hash.clone(),
 					DisputeState {
-						validators_for: bitvec![BitOrderLsb0, u8; 1, 1, 0, 1, 1, 0, 1],
-						validators_against: bitvec![BitOrderLsb0, u8; 0, 0, 1, 0, 0, 1, 0],
+						validators_for: bitvec![u8, BitOrderLsb0; 1, 1, 0, 1, 1, 0, 1],
+						validators_against: bitvec![u8, BitOrderLsb0; 0, 0, 1, 0, 0, 1, 0],
 						start: 6,
 						concluded_at: Some(6), // 5 vote for
 					}
@@ -1041,8 +1041,8 @@ fn test_provide_multi_dispute_success_and_other() {
 					4,
 					candidate_hash.clone(),
 					DisputeState {
-						validators_for: bitvec![BitOrderLsb0, u8; 0, 0, 0, 1, 0, 0, 0],
-						validators_against: bitvec![BitOrderLsb0, u8; 0, 0, 1, 0, 0, 0, 0],
+						validators_for: bitvec![u8, BitOrderLsb0; 0, 0, 0, 1, 0, 0, 0],
+						validators_against: bitvec![u8, BitOrderLsb0; 0, 0, 1, 0, 0, 0, 0],
 						start: 6,
 						concluded_at: None,
 					}
@@ -1154,8 +1154,8 @@ fn test_revert_and_freeze_merges() {
 fn test_has_supermajority_against() {
 	assert_eq!(
 		has_supermajority_against(&DisputeState {
-			validators_for: bitvec![BitOrderLsb0, u8; 1, 1, 0, 0, 0, 0, 0, 0],
-			validators_against: bitvec![BitOrderLsb0, u8; 1, 1, 1, 1, 1, 0, 0, 0],
+			validators_for: bitvec![u8, BitOrderLsb0; 1, 1, 0, 0, 0, 0, 0, 0],
+			validators_against: bitvec![u8, BitOrderLsb0; 1, 1, 1, 1, 1, 0, 0, 0],
 			start: 0,
 			concluded_at: None,
 		}),
@@ -1164,8 +1164,8 @@ fn test_has_supermajority_against() {
 
 	assert_eq!(
 		has_supermajority_against(&DisputeState {
-			validators_for: bitvec![BitOrderLsb0, u8; 1, 1, 0, 0, 0, 0, 0, 0],
-			validators_against: bitvec![BitOrderLsb0, u8; 1, 1, 1, 1, 1, 1, 0, 0],
+			validators_for: bitvec![u8, BitOrderLsb0; 1, 1, 0, 0, 0, 0, 0, 0],
+			validators_against: bitvec![u8, BitOrderLsb0; 1, 1, 1, 1, 1, 1, 0, 0],
 			start: 0,
 			concluded_at: None,
 		}),
@@ -1180,23 +1180,23 @@ fn test_decrement_spam() {
 	// Test confirm is no-op
 	let mut spam_slots = original_spam_slots.clone();
 	let dispute_state_confirm = DisputeState {
-		validators_for: bitvec![BitOrderLsb0, u8; 1, 1, 0, 0, 0, 0, 0, 0],
-		validators_against: bitvec![BitOrderLsb0, u8; 1, 0, 1, 0, 0, 0, 0, 0],
+		validators_for: bitvec![u8, BitOrderLsb0; 1, 1, 0, 0, 0, 0, 0, 0],
+		validators_against: bitvec![u8, BitOrderLsb0; 1, 0, 1, 0, 0, 0, 0, 0],
 		start: 0,
 		concluded_at: None,
 	};
 	assert_eq!(DisputeStateFlags::from_state(&dispute_state_confirm), DisputeStateFlags::CONFIRMED);
 	assert_eq!(
 		decrement_spam(spam_slots.as_mut(), &dispute_state_confirm),
-		bitvec![BitOrderLsb0, u8; 1, 1, 1, 0, 0, 0, 0, 0],
+		bitvec![u8, BitOrderLsb0; 1, 1, 1, 0, 0, 0, 0, 0],
 	);
 	assert_eq!(spam_slots, original_spam_slots);
 
 	// Test not confirm is decreasing spam
 	let mut spam_slots = original_spam_slots.clone();
 	let dispute_state_no_confirm = DisputeState {
-		validators_for: bitvec![BitOrderLsb0, u8; 1, 0, 0, 0, 0, 0, 0, 0],
-		validators_against: bitvec![BitOrderLsb0, u8; 1, 0, 1, 0, 0, 0, 0, 0],
+		validators_for: bitvec![u8, BitOrderLsb0; 1, 0, 0, 0, 0, 0, 0, 0],
+		validators_against: bitvec![u8, BitOrderLsb0; 1, 0, 1, 0, 0, 0, 0, 0],
 		start: 0,
 		concluded_at: None,
 	};
@@ -1206,7 +1206,7 @@ fn test_decrement_spam() {
 	);
 	assert_eq!(
 		decrement_spam(spam_slots.as_mut(), &dispute_state_no_confirm),
-		bitvec![BitOrderLsb0, u8; 1, 0, 1, 0, 0, 0, 0, 0],
+		bitvec![u8, BitOrderLsb0; 1, 0, 1, 0, 0, 0, 0, 0],
 	);
 	assert_eq!(spam_slots, vec![0, 1, 1, 3, 4, 5, 6, 7]);
 }
@@ -2090,8 +2090,8 @@ fn filter_removes_concluded_ancient() {
 			&1,
 			&candidate_hash_a,
 			DisputeState {
-				validators_for: bitvec![BitOrderLsb0, u8; 0; 4],
-				validators_against: bitvec![BitOrderLsb0, u8; 1; 4],
+				validators_for: bitvec![u8, BitOrderLsb0; 0; 4],
+				validators_against: bitvec![u8, BitOrderLsb0; 1; 4],
 				start: 0,
 				concluded_at: Some(0),
 			},
@@ -2101,8 +2101,8 @@ fn filter_removes_concluded_ancient() {
 			&1,
 			&candidate_hash_b,
 			DisputeState {
-				validators_for: bitvec![BitOrderLsb0, u8; 0; 4],
-				validators_against: bitvec![BitOrderLsb0, u8; 1; 4],
+				validators_for: bitvec![u8, BitOrderLsb0; 0; 4],
+				validators_against: bitvec![u8, BitOrderLsb0; 1; 4],
 				start: 0,
 				concluded_at: Some(1),
 			},
diff --git a/polkadot/runtime/parachains/src/inclusion/mod.rs b/polkadot/runtime/parachains/src/inclusion/mod.rs
index 5ec6b807a38d9b4eec55e1bb822cf83f369823c6..ecf5b7c94af861a4c03be4995a37021b26a835bc 100644
--- a/polkadot/runtime/parachains/src/inclusion/mod.rs
+++ b/polkadot/runtime/parachains/src/inclusion/mod.rs
@@ -78,9 +78,9 @@ pub struct CandidatePendingAvailability<H, N> {
 	/// The candidate descriptor.
 	descriptor: CandidateDescriptor<H>,
 	/// The received availability votes. One bit per validator.
-	availability_votes: BitVec<BitOrderLsb0, u8>,
+	availability_votes: BitVec<u8, BitOrderLsb0>,
 	/// The backers of the candidate pending availability.
-	backers: BitVec<BitOrderLsb0, u8>,
+	backers: BitVec<u8, BitOrderLsb0>,
 	/// The block number of the relay-parent of the receipt.
 	relay_parent_number: N,
 	/// The block number of the relay-chain block this was backed in.
@@ -91,7 +91,7 @@ pub struct CandidatePendingAvailability<H, N> {
 
 impl<H, N> CandidatePendingAvailability<H, N> {
 	/// Get the availability votes on the candidate.
-	pub(crate) fn availability_votes(&self) -> &BitVec<BitOrderLsb0, u8> {
+	pub(crate) fn availability_votes(&self) -> &BitVec<u8, BitOrderLsb0> {
 		&self.availability_votes
 	}
 
@@ -120,8 +120,8 @@ impl<H, N> CandidatePendingAvailability<H, N> {
 		core: CoreIndex,
 		hash: CandidateHash,
 		descriptor: CandidateDescriptor<H>,
-		availability_votes: BitVec<BitOrderLsb0, u8>,
-		backers: BitVec<BitOrderLsb0, u8>,
+		availability_votes: BitVec<u8, BitOrderLsb0>,
+		backers: BitVec<u8, BitOrderLsb0>,
 		relay_parent_number: N,
 		backed_in_number: N,
 		backing_group: GroupIndex,
@@ -544,7 +544,7 @@ impl<T: Config> Pallet<T> {
 				}
 
 				let para_id = backed_candidate.descriptor().para_id;
-				let mut backers = bitvec::bitvec![BitOrderLsb0, u8; 0; validators.len()];
+				let mut backers = bitvec::bitvec![u8, BitOrderLsb0; 0; validators.len()];
 
 				for (i, assignment) in scheduled[skip..].iter().enumerate() {
 					check_assignment_in_order(assignment)?;
@@ -649,8 +649,8 @@ impl<T: Config> Pallet<T> {
 			let para_id = candidate.descriptor().para_id;
 
 			// initialize all availability votes to 0.
-			let availability_votes: BitVec<BitOrderLsb0, u8> =
-				bitvec::bitvec![BitOrderLsb0, u8; 0; validators.len()];
+			let availability_votes: BitVec<u8, BitOrderLsb0> =
+				bitvec::bitvec![u8, BitOrderLsb0; 0; validators.len()];
 
 			Self::deposit_event(Event::<T>::CandidateBacked(
 				candidate.candidate.to_plain(),
@@ -721,8 +721,8 @@ impl<T: Config> Pallet<T> {
 	fn enact_candidate(
 		relay_parent_number: T::BlockNumber,
 		receipt: CommittedCandidateReceipt<T::Hash>,
-		backers: BitVec<BitOrderLsb0, u8>,
-		availability_votes: BitVec<BitOrderLsb0, u8>,
+		backers: BitVec<u8, BitOrderLsb0>,
+		availability_votes: BitVec<u8, BitOrderLsb0>,
 		core_index: CoreIndex,
 		backing_group: GroupIndex,
 	) -> Weight {
diff --git a/polkadot/runtime/parachains/src/inclusion/tests.rs b/polkadot/runtime/parachains/src/inclusion/tests.rs
index d64fadf8aecb455b39b85a693215d7b0af5aa113..cd6b968ddcd12ee41eefcfe3f51810d242b3c598 100644
--- a/polkadot/runtime/parachains/src/inclusion/tests.rs
+++ b/polkadot/runtime/parachains/src/inclusion/tests.rs
@@ -113,7 +113,7 @@ pub(crate) async fn back_candidate(
 	signing_context: &SigningContext,
 	kind: BackingKind,
 ) -> BackedCandidate {
-	let mut validator_indices = bitvec::bitvec![BitOrderLsb0, u8; 0; group.len()];
+	let mut validator_indices = bitvec::bitvec![u8, BitOrderLsb0; 0; group.len()];
 	let threshold = minimum_backing_votes(group.len());
 
 	let signing = match kind {
@@ -201,18 +201,18 @@ pub(crate) fn expected_bits() -> usize {
 }
 
 fn default_bitfield() -> AvailabilityBitfield {
-	AvailabilityBitfield(bitvec::bitvec![BitOrderLsb0, u8; 0; expected_bits()])
+	AvailabilityBitfield(bitvec::bitvec![u8, BitOrderLsb0; 0; expected_bits()])
 }
 
-fn default_availability_votes() -> BitVec<BitOrderLsb0, u8> {
-	bitvec::bitvec![BitOrderLsb0, u8; 0; ParasShared::active_validator_keys().len()]
+fn default_availability_votes() -> BitVec<u8, BitOrderLsb0> {
+	bitvec::bitvec![u8, BitOrderLsb0; 0; ParasShared::active_validator_keys().len()]
 }
 
-fn default_backing_bitfield() -> BitVec<BitOrderLsb0, u8> {
-	bitvec::bitvec![BitOrderLsb0, u8; 0; ParasShared::active_validator_keys().len()]
+fn default_backing_bitfield() -> BitVec<u8, BitOrderLsb0> {
+	bitvec::bitvec![u8, BitOrderLsb0; 0; ParasShared::active_validator_keys().len()]
 }
 
-fn backing_bitfield(v: &[usize]) -> BitVec<BitOrderLsb0, u8> {
+fn backing_bitfield(v: &[usize]) -> BitVec<u8, BitOrderLsb0> {
 	let mut b = default_backing_bitfield();
 	for i in v {
 		b.set(*i, true);
diff --git a/polkadot/runtime/parachains/src/paras/mod.rs b/polkadot/runtime/parachains/src/paras/mod.rs
index 26b70b42bdbf0678de9f7c9d9f4277fc4e2f2df7..fc35b80c7a63a1362404270970b235cba84730c5 100644
--- a/polkadot/runtime/parachains/src/paras/mod.rs
+++ b/polkadot/runtime/parachains/src/paras/mod.rs
@@ -339,8 +339,8 @@ struct PvfCheckActiveVoteState<BlockNumber> {
 	// makes a vote. Once a 1 is set for either of the vectors, that validator cannot vote anymore.
 	// Since the active validator set changes each session, the bit vectors are reinitialized as
 	// well: zeroed and resized so that each validator gets its own bit.
-	votes_accept: BitVec<BitOrderLsb0, u8>,
-	votes_reject: BitVec<BitOrderLsb0, u8>,
+	votes_accept: BitVec<u8, BitOrderLsb0>,
+	votes_reject: BitVec<u8, BitOrderLsb0>,
 
 	/// The number of session changes this PVF vote has observed. Therefore, this number is
 	/// increased at each session boundary. When created, it is initialized with 0.
@@ -359,8 +359,8 @@ impl<BlockNumber> PvfCheckActiveVoteState<BlockNumber> {
 		causes.push(cause);
 		Self {
 			created_at: now,
-			votes_accept: bitvec::bitvec![BitOrderLsb0, u8; 0; n_validators],
-			votes_reject: bitvec::bitvec![BitOrderLsb0, u8; 0; n_validators],
+			votes_accept: bitvec::bitvec![u8, BitOrderLsb0; 0; n_validators],
+			votes_reject: bitvec::bitvec![u8, BitOrderLsb0; 0; n_validators],
 			age: 0,
 			causes,
 		}
diff --git a/polkadot/runtime/parachains/src/paras_inherent/mod.rs b/polkadot/runtime/parachains/src/paras_inherent/mod.rs
index 92abf8263fbfc771c9430bc2a5ae7687c108c78b..bbc8b59803cdc226faf37572f04bd098c4dc28ab 100644
--- a/polkadot/runtime/parachains/src/paras_inherent/mod.rs
+++ b/polkadot/runtime/parachains/src/paras_inherent/mod.rs
@@ -81,10 +81,10 @@ const LOG_TARGET: &str = "runtime::inclusion-inherent";
 /// A bitfield concerning concluded disputes for candidates
 /// associated to the core index equivalent to the bit position.
 #[derive(Default, PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, TypeInfo)]
-pub(crate) struct DisputedBitfield(pub(crate) BitVec<bitvec::order::Lsb0, u8>);
+pub(crate) struct DisputedBitfield(pub(crate) BitVec<u8, bitvec::order::Lsb0>);
 
-impl From<BitVec<bitvec::order::Lsb0, u8>> for DisputedBitfield {
-	fn from(inner: BitVec<bitvec::order::Lsb0, u8>) -> Self {
+impl From<BitVec<u8, bitvec::order::Lsb0>> for DisputedBitfield {
+	fn from(inner: BitVec<u8, bitvec::order::Lsb0>) -> Self {
 		Self(inner)
 	}
 }
@@ -93,7 +93,7 @@ impl From<BitVec<bitvec::order::Lsb0, u8>> for DisputedBitfield {
 impl DisputedBitfield {
 	/// Create a new bitfield, where each bit is set to `false`.
 	pub fn zeros(n: usize) -> Self {
-		Self::from(BitVec::<bitvec::order::Lsb0, u8>::repeat(false, n))
+		Self::from(BitVec::<u8, bitvec::order::Lsb0>::repeat(false, n))
 	}
 }
 
@@ -964,7 +964,7 @@ pub(crate) fn sanitize_bitfields<T: crate::inclusion::Config>(
 		return vec![]
 	}
 
-	let all_zeros = BitVec::<bitvec::order::Lsb0, u8>::repeat(false, expected_bits);
+	let all_zeros = BitVec::<u8, bitvec::order::Lsb0>::repeat(false, expected_bits);
 	let signing_context = SigningContext { parent_hash, session_index };
 	for unchecked_bitfield in unchecked_bitfields {
 		// Find and skip invalid bitfields.
diff --git a/polkadot/runtime/parachains/src/paras_inherent/tests.rs b/polkadot/runtime/parachains/src/paras_inherent/tests.rs
index e8ff10b5ed991530fde696d5d3c74da4b3ad41fb..eed7ebebbcfa938aadb3e8a7bceeb8ac42aa4be4 100644
--- a/polkadot/runtime/parachains/src/paras_inherent/tests.rs
+++ b/polkadot/runtime/parachains/src/paras_inherent/tests.rs
@@ -925,10 +925,10 @@ mod sanitizers {
 		let validator_public = validator_pubkeys(&validators);
 
 		let unchecked_bitfields = [
-			BitVec::<Lsb0, u8>::repeat(true, expected_bits),
-			BitVec::<Lsb0, u8>::repeat(true, expected_bits),
+			BitVec::<u8, Lsb0>::repeat(true, expected_bits),
+			BitVec::<u8, Lsb0>::repeat(true, expected_bits),
 			{
-				let mut bv = BitVec::<Lsb0, u8>::repeat(false, expected_bits);
+				let mut bv = BitVec::<u8, Lsb0>::repeat(false, expected_bits);
 				bv.set(expected_bits - 1, true);
 				bv
 			},
diff --git a/polkadot/runtime/parachains/src/ump.rs b/polkadot/runtime/parachains/src/ump.rs
index 344b0f7d439f26859d7ba6214a1d91053b7bc8b4..10a16bb0a143163d47392f3c3e0773a50769cf1d 100644
--- a/polkadot/runtime/parachains/src/ump.rs
+++ b/polkadot/runtime/parachains/src/ump.rs
@@ -89,7 +89,7 @@ fn upward_message_id(data: &[u8]) -> MessageId {
 impl<XcmExecutor: xcm::latest::ExecuteXcm<C::Call>, C: Config> UmpSink for XcmSink<XcmExecutor, C> {
 	fn process_upward_message(
 		origin: ParaId,
-		data: &[u8],
+		mut data: &[u8],
 		max_weight: Weight,
 	) -> Result<Weight, (MessageId, Weight)> {
 		use parity_scale_codec::DecodeLimit;
@@ -101,7 +101,7 @@ impl<XcmExecutor: xcm::latest::ExecuteXcm<C::Call>, C: Config> UmpSink for XcmSi
 		let id = upward_message_id(&data[..]);
 		let maybe_msg = VersionedXcm::<C::Call>::decode_all_with_depth_limit(
 			xcm::MAX_XCM_DECODE_DEPTH,
-			&mut &data[..],
+			&mut data,
 		)
 		.map(Xcm::<C::Call>::try_from);
 		match maybe_msg {
diff --git a/polkadot/runtime/polkadot/Cargo.toml b/polkadot/runtime/polkadot/Cargo.toml
index 4e04f7dbbbed0bde917dcd42a85482981ba2458c..2b6b8b9d2d3872266ced25a4d78c593460d1dfe8 100644
--- a/polkadot/runtime/polkadot/Cargo.toml
+++ b/polkadot/runtime/polkadot/Cargo.toml
@@ -6,9 +6,9 @@ edition = "2021"
 build = "build.rs"
 
 [dependencies]
-bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] }
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive", "max-encoded-len"] }
-scale-info = { version = "1.0", default-features = false, features = ["derive"] }
+bitvec = { version = "1.0.0", default-features = false, features = ["alloc"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive", "max-encoded-len"] }
+scale-info = { version = "2.0.0", default-features = false, features = ["derive"] }
 log = { version = "0.4.14", default-features = false }
 rustc-hex = { version = "2.1.0", default-features = false }
 serde = { version = "1.0.136", default-features = false }
diff --git a/polkadot/runtime/rococo/Cargo.toml b/polkadot/runtime/rococo/Cargo.toml
index 078883434f2f7fa814bd8da26fa637dd7f53a1f9..f8cd82099235a0cdcded4bdf238fa5e83e4df407 100644
--- a/polkadot/runtime/rococo/Cargo.toml
+++ b/polkadot/runtime/rococo/Cargo.toml
@@ -6,8 +6,8 @@ edition = "2021"
 build = "build.rs"
 
 [dependencies]
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive", "max-encoded-len"] }
-scale-info = { version = "1.0", default-features = false, features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive", "max-encoded-len"] }
+scale-info = { version = "2.0.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.136", default-features = false }
 serde_derive = { version = "1.0.117", optional = true }
 smallvec = "1.8.0"
diff --git a/polkadot/runtime/test-runtime/Cargo.toml b/polkadot/runtime/test-runtime/Cargo.toml
index d8ef280a57ee0908b4442a080fef80aa6db88d08..732b11a2b075e28ef1813bceabaaa8d8523fbbf5 100644
--- a/polkadot/runtime/test-runtime/Cargo.toml
+++ b/polkadot/runtime/test-runtime/Cargo.toml
@@ -6,11 +6,11 @@ edition = "2021"
 build = "build.rs"
 
 [dependencies]
-bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] }
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] }
+bitvec = { version = "1.0.0", default-features = false, features = ["alloc"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"] }
 log = { version = "0.4.14", default-features = false }
 rustc-hex = { version = "2.1.0", default-features = false }
-scale-info = { version = "1.0", default-features = false, features = ["derive"] }
+scale-info = { version = "2.0.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.136", default-features = false }
 serde_derive = { version = "1.0.117", optional = true }
 smallvec = "1.8.0"
diff --git a/polkadot/runtime/westend/Cargo.toml b/polkadot/runtime/westend/Cargo.toml
index 402f8d7b490f18646a0ad894fae02d847f1c547e..355375e63147e060911cd2b549b4d6c888b30e00 100644
--- a/polkadot/runtime/westend/Cargo.toml
+++ b/polkadot/runtime/westend/Cargo.toml
@@ -6,9 +6,9 @@ edition = "2021"
 build = "build.rs"
 
 [dependencies]
-bitvec = { version = "0.20.1", default-features = false, features = ["alloc"] }
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive", "max-encoded-len"] }
-scale-info = { version = "1.0", default-features = false, features = ["derive"] }
+bitvec = { version = "1.0.0", default-features = false, features = ["alloc"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive", "max-encoded-len"] }
+scale-info = { version = "2.0.0", default-features = false, features = ["derive"] }
 log = { version = "0.4.14", default-features = false }
 rustc-hex = { version = "2.1.0", default-features = false }
 serde = { version = "1.0.136", default-features = false }
diff --git a/polkadot/statement-table/Cargo.toml b/polkadot/statement-table/Cargo.toml
index 1c1d22ea608d0fdefa1835edceedc4253c34e12f..52b1875146a6da50f471023776fcb139455f886a 100644
--- a/polkadot/statement-table/Cargo.toml
+++ b/polkadot/statement-table/Cargo.toml
@@ -5,6 +5,6 @@ authors = ["Parity Technologies <admin@parity.io>"]
 edition = "2021"
 
 [dependencies]
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"] }
 sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" }
 primitives = { package = "polkadot-primitives", path = "../primitives" }
diff --git a/polkadot/utils/staking-miner/Cargo.toml b/polkadot/utils/staking-miner/Cargo.toml
index d73dfa9c6d9432d12eb7d440d8f649a0fbee8db8..811772e265ae722a7d7341e24cee96fd916d6420 100644
--- a/polkadot/utils/staking-miner/Cargo.toml
+++ b/polkadot/utils/staking-miner/Cargo.toml
@@ -5,8 +5,8 @@ authors = ["Parity Technologies <admin@parity.io>"]
 edition = "2021"
 
 [dependencies]
+codec = { package = "parity-scale-codec", version = "3.0.0" }
 clap = { version = "3.1", features = ["derive", "env"] }
-codec = { package = "parity-scale-codec", version = "2.0.0" }
 tracing-subscriber = { version = "0.3.9", features = ["env-filter"]   }
 jsonrpsee = { version = "0.8", features = ["ws-client", "macros"] }
 log = "0.4.11"
diff --git a/polkadot/xcm/Cargo.toml b/polkadot/xcm/Cargo.toml
index fa26804f7c1e316e14bca1afca59035edfdca308..9cc64e0f098090a9a2ef4454e7ec1c1bd0ec2d90 100644
--- a/polkadot/xcm/Cargo.toml
+++ b/polkadot/xcm/Cargo.toml
@@ -7,8 +7,8 @@ edition = "2021"
 
 [dependencies]
 impl-trait-for-tuples = "0.2.2"
-parity-scale-codec = { version = "2.3.1", default-features = false, features = [ "derive" ] }
-scale-info = { version = "1.0", default-features = false, features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = [ "derive" ] }
+scale-info = { version = "2.0.0", default-features = false, features = ["derive"] }
 derivative = {version = "2.2.0", default-features = false, features = [ "use_core" ] }
 log = { version = "0.4.14", default-features = false }
 xcm-procedural = { path = "procedural" }
diff --git a/polkadot/xcm/pallet-xcm-benchmarks/Cargo.toml b/polkadot/xcm/pallet-xcm-benchmarks/Cargo.toml
index bc73e2ef0c2bd69e17ab969c25de64cd17d76e6f..14a819041cfbe1341149c5c5458246f0dcc065fe 100644
--- a/polkadot/xcm/pallet-xcm-benchmarks/Cargo.toml
+++ b/polkadot/xcm/pallet-xcm-benchmarks/Cargo.toml
@@ -8,8 +8,8 @@ version = "0.9.17"
 targets = ["x86_64-unknown-linux-gnu"]
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false }
-scale-info = { version = "1.0", default-features = false, features = ["derive"] }
+codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false }
+scale-info = { version = "2.0.0", default-features = false, features = ["derive"] }
 frame-support = { default-features = false, branch = "master", git = "https://github.com/paritytech/substrate" }
 frame-system = { default-features = false, branch = "master", git = "https://github.com/paritytech/substrate" }
 sp-runtime = { default-features = false, branch = "master", git = "https://github.com/paritytech/substrate" }
diff --git a/polkadot/xcm/pallet-xcm/Cargo.toml b/polkadot/xcm/pallet-xcm/Cargo.toml
index bb1dff9bc2145bf112b236f905fbbcb2d0b57f97..ecaad0e71e194f54f84e2b8f6bf82c2bd71b180c 100644
--- a/polkadot/xcm/pallet-xcm/Cargo.toml
+++ b/polkadot/xcm/pallet-xcm/Cargo.toml
@@ -5,8 +5,8 @@ name = "pallet-xcm"
 version = "0.9.17"
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"] }
-scale-info = { version = "1.0", default-features = false, features = ["derive"] }
+codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false, features = ["derive"] }
+scale-info = { version = "2.0.0", default-features = false, features = ["derive"] }
 serde = { version = "1.0.136", optional = true, features = ["derive"] }
 log = { version = "0.4.14", default-features = false }
 
diff --git a/polkadot/xcm/xcm-builder/Cargo.toml b/polkadot/xcm/xcm-builder/Cargo.toml
index 3929e885e80f21f0f91486af85237eced3a361f3..3178e46bd8bec733b17f270f10c6a676a7ea93cb 100644
--- a/polkadot/xcm/xcm-builder/Cargo.toml
+++ b/polkadot/xcm/xcm-builder/Cargo.toml
@@ -6,8 +6,8 @@ description = "Tools & types for building with XCM and its executor."
 version = "0.9.17"
 
 [dependencies]
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] }
-scale-info = { version = "1.0", default-features = false, features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"] }
+scale-info = { version = "2.0.0", default-features = false, features = ["derive"] }
 xcm = { path = "..", default-features = false }
 xcm-executor = { path = "../xcm-executor", default-features = false }
 sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
diff --git a/polkadot/xcm/xcm-executor/Cargo.toml b/polkadot/xcm/xcm-executor/Cargo.toml
index aca64b8d9017b1f7d542782a968f1c12359572b1..abb96ef2e632801ad1c301bcfb4adc05a338bd1c 100644
--- a/polkadot/xcm/xcm-executor/Cargo.toml
+++ b/polkadot/xcm/xcm-executor/Cargo.toml
@@ -7,7 +7,7 @@ version = "0.9.17"
 
 [dependencies]
 impl-trait-for-tuples = "0.2.2"
-parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] }
+parity-scale-codec = { version = "3.0.0", default-features = false, features = ["derive"] }
 xcm = { path = "..", default-features = false }
 sp-std = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 sp-io = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
diff --git a/polkadot/xcm/xcm-simulator/Cargo.toml b/polkadot/xcm/xcm-simulator/Cargo.toml
index 5a7801987ac23f51c934080f9c929267fc2a97c3..7236af8fbc90202208e2fdd5f919810a99758b5f 100644
--- a/polkadot/xcm/xcm-simulator/Cargo.toml
+++ b/polkadot/xcm/xcm-simulator/Cargo.toml
@@ -6,7 +6,7 @@ description = "Test kit to simulate cross-chain message passing and XCM executio
 edition = "2021"
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "2.0.0" }
+codec = { package = "parity-scale-codec", version = "3.0.0" }
 paste = "1.0.6"
 
 frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" }
diff --git a/polkadot/xcm/xcm-simulator/example/Cargo.toml b/polkadot/xcm/xcm-simulator/example/Cargo.toml
index 3f0a85650bd8c8207c3817054525393ce9b5f8f7..1ec8601ea2c7f952853a35d9b8c4b091aa4c47a9 100644
--- a/polkadot/xcm/xcm-simulator/example/Cargo.toml
+++ b/polkadot/xcm/xcm-simulator/example/Cargo.toml
@@ -6,8 +6,8 @@ description = "Examples of xcm-simulator usage."
 edition = "2021"
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "2.0.0" }
-scale-info = { version = "1.0", features = ["derive"] }
+codec = { package = "parity-scale-codec", version = "3.0.0" }
+scale-info = { version = "2.0.0", features = ["derive"] }
 
 frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" }
 frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" }
diff --git a/polkadot/xcm/xcm-simulator/fuzzer/Cargo.toml b/polkadot/xcm/xcm-simulator/fuzzer/Cargo.toml
index e3c6935ccbbfbe18774b62c1911f1767c2ebc3dc..a2ae6a42958def0cf55a0ffa545a1aec69f250e5 100644
--- a/polkadot/xcm/xcm-simulator/fuzzer/Cargo.toml
+++ b/polkadot/xcm/xcm-simulator/fuzzer/Cargo.toml
@@ -6,9 +6,9 @@ description = "Examples of xcm-simulator usage."
 edition = "2021"
 
 [dependencies]
-codec = { package = "parity-scale-codec", version = "2.0.0" }
+codec = { package = "parity-scale-codec", version = "3.0.0" }
 honggfuzz = "0.5.54"
-scale-info = { version = "1.0", features = ["derive"] }
+scale-info = { version = "2.0.0", features = ["derive"] }
 
 frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" }
 frame-support = { git = "https://github.com/paritytech/substrate", branch = "master" }
diff --git a/polkadot/xcm/xcm-simulator/fuzzer/src/fuzz.rs b/polkadot/xcm/xcm-simulator/fuzzer/src/fuzz.rs
index 643fca7037823cb415e0f2198038c17d1a3ad59d..4da7de2f3d1b7f13ce607f18b3ecdec59ff2c8be 100644
--- a/polkadot/xcm/xcm-simulator/fuzzer/src/fuzz.rs
+++ b/polkadot/xcm/xcm-simulator/fuzzer/src/fuzz.rs
@@ -104,9 +104,9 @@ pub fn relay_ext() -> sp_io::TestExternalities {
 pub type RelayChainPalletXcm = pallet_xcm::Pallet<relay_chain::Runtime>;
 pub type ParachainPalletXcm = pallet_xcm::Pallet<parachain::Runtime>;
 
-fn run_one_input(data: &[u8]) {
+fn run_one_input(mut data: &[u8]) {
 	MockNet::reset();
-	if let Ok(m) = Xcm::decode_all_with_depth_limit(MAX_XCM_DECODE_DEPTH, data) {
+	if let Ok(m) = Xcm::decode_all_with_depth_limit(MAX_XCM_DECODE_DEPTH, &mut data) {
 		#[cfg(not(fuzzing))]
 		{
 			println!("Executing message {:?}", m);