From f4ec9b034127224acfcd6a1a8300a2c0af58a5cd Mon Sep 17 00:00:00 2001
From: Qinxuan Chen <koushiro.cqx@gmail.com>
Date: Tue, 25 Jan 2022 18:58:17 +0800
Subject: [PATCH] Companion for substrate#10632 (#4689)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Companion for substrate#10632

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* cargo format

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Fix bags-list

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Update Substrate

* Fix

Signed-off-by: koushiro <koushiro.cqx@gmail.com>

* Fix bridges test

* FMT

Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>
Co-authored-by: Bastian Köcher <info@kchr.de>
---
 polkadot/Cargo.lock                           | 445 +++++++++---------
 polkadot/bridges/modules/dispatch/src/lib.rs  |   5 +-
 polkadot/cli/Cargo.toml                       |  30 +-
 polkadot/cli/src/cli.rs                       |  35 +-
 polkadot/node/malus/Cargo.toml                |   4 +-
 polkadot/node/malus/src/malus.rs              |  20 +-
 .../test-parachains/adder/collator/Cargo.toml |   2 +-
 .../test-parachains/adder/collator/src/cli.rs |  24 +-
 polkadot/utils/generate-bags/Cargo.toml       |   3 +-
 polkadot/utils/generate-bags/src/main.rs      |  32 +-
 .../remote-ext-tests/bags-list/Cargo.toml     |   6 +-
 .../remote-ext-tests/bags-list/src/main.rs    |  41 +-
 polkadot/utils/staking-miner/Cargo.toml       |   2 +-
 polkadot/utils/staking-miner/src/main.rs      |  44 +-
 14 files changed, 335 insertions(+), 358 deletions(-)

diff --git a/polkadot/Cargo.lock b/polkadot/Cargo.lock
index 408649f8ff2..59fb7793a2b 100644
--- a/polkadot/Cargo.lock
+++ b/polkadot/Cargo.lock
@@ -439,7 +439,7 @@ dependencies = [
 [[package]]
 name = "beefy-gadget"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "beefy-primitives",
  "fnv",
@@ -468,7 +468,7 @@ dependencies = [
 [[package]]
 name = "beefy-gadget-rpc"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "beefy-gadget",
  "beefy-primitives",
@@ -492,12 +492,12 @@ dependencies = [
 [[package]]
 name = "beefy-merkle-tree"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 
 [[package]]
 name = "beefy-primitives"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -1052,17 +1052,32 @@ dependencies = [
 
 [[package]]
 name = "clap"
-version = "2.34.0"
+version = "3.0.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
+checksum = "12e8611f9ae4e068fa3e56931fded356ff745e70987ff76924a6e0ab1c8ef2e3"
 dependencies = [
- "ansi_term",
  "atty",
  "bitflags",
+ "clap_derive",
+ "indexmap",
+ "lazy_static",
+ "os_str_bytes",
  "strsim",
+ "termcolor",
  "textwrap",
- "unicode-width",
- "vec_map",
+]
+
+[[package]]
+name = "clap_derive"
+version = "3.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "517358c28fcef6607bf6f76108e02afad7e82297d132a6b846dcc1fc3efcd153"
+dependencies = [
+ "heck 0.4.0",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn",
 ]
 
 [[package]]
@@ -1624,7 +1639,7 @@ version = "0.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7c5f0096a91d210159eceb2ff5e1c4da18388a170e1e3ce948aac9c8fdbbf595"
 dependencies = [
- "heck",
+ "heck 0.3.3",
  "proc-macro2",
  "quote",
  "syn",
@@ -1893,7 +1908,7 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
 [[package]]
 name = "fork-tree"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "parity-scale-codec",
 ]
@@ -1911,7 +1926,7 @@ dependencies = [
 [[package]]
 name = "frame-benchmarking"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -1932,10 +1947,11 @@ dependencies = [
 [[package]]
 name = "frame-benchmarking-cli"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "Inflector",
  "chrono",
+ "clap",
  "frame-benchmarking",
  "frame-support",
  "handlebars",
@@ -1952,13 +1968,12 @@ dependencies = [
  "sp-keystore",
  "sp-runtime",
  "sp-state-machine",
- "structopt",
 ]
 
 [[package]]
 name = "frame-election-provider-support"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -1972,7 +1987,7 @@ dependencies = [
 [[package]]
 name = "frame-executive"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -2000,7 +2015,7 @@ dependencies = [
 [[package]]
 name = "frame-support"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "bitflags",
  "frame-metadata",
@@ -2029,7 +2044,7 @@ dependencies = [
 [[package]]
 name = "frame-support-procedural"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "Inflector",
  "frame-support-procedural-tools",
@@ -2041,7 +2056,7 @@ dependencies = [
 [[package]]
 name = "frame-support-procedural-tools"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-support-procedural-tools-derive",
  "proc-macro-crate 1.1.0",
@@ -2053,7 +2068,7 @@ dependencies = [
 [[package]]
 name = "frame-support-procedural-tools-derive"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2063,7 +2078,7 @@ dependencies = [
 [[package]]
 name = "frame-support-test"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-support",
  "frame-support-test-pallet",
@@ -2086,7 +2101,7 @@ dependencies = [
 [[package]]
 name = "frame-support-test-pallet"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -2097,7 +2112,7 @@ dependencies = [
 [[package]]
 name = "frame-system"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-support",
  "log",
@@ -2114,7 +2129,7 @@ dependencies = [
 [[package]]
 name = "frame-system-benchmarking"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -2129,7 +2144,7 @@ dependencies = [
 [[package]]
 name = "frame-system-rpc-runtime-api"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "parity-scale-codec",
  "sp-api",
@@ -2138,7 +2153,7 @@ dependencies = [
 [[package]]
 name = "frame-try-runtime"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-support",
  "sp-api",
@@ -2334,7 +2349,7 @@ dependencies = [
 [[package]]
 name = "generate-bags"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "chrono",
  "frame-election-provider-support",
@@ -2344,7 +2359,6 @@ dependencies = [
  "num-format",
  "pallet-staking",
  "sp-io",
- "structopt",
 ]
 
 [[package]]
@@ -2522,6 +2536,12 @@ dependencies = [
  "unicode-segmentation",
 ]
 
+[[package]]
+name = "heck"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
+
 [[package]]
 name = "hermit-abi"
 version = "0.1.19"
@@ -4419,7 +4439,7 @@ dependencies = [
 [[package]]
 name = "node-primitives"
 version = "2.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-system",
  "parity-scale-codec",
@@ -4638,6 +4658,15 @@ dependencies = [
  "num-traits",
 ]
 
+[[package]]
+name = "os_str_bytes"
+version = "6.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64"
+dependencies = [
+ "memchr",
+]
+
 [[package]]
 name = "output_vt100"
 version = "0.1.2"
@@ -4665,7 +4694,7 @@ checksum = "2386b4ebe91c2f7f51082d4cefa145d030e33a1842a96b12e4885cc3c01f7a55"
 [[package]]
 name = "pallet-assets"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4679,7 +4708,7 @@ dependencies = [
 [[package]]
 name = "pallet-authority-discovery"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4695,7 +4724,7 @@ dependencies = [
 [[package]]
 name = "pallet-authorship"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4710,7 +4739,7 @@ dependencies = [
 [[package]]
 name = "pallet-babe"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4734,7 +4763,7 @@ dependencies = [
 [[package]]
 name = "pallet-bags-list"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-election-provider-support",
@@ -4754,9 +4783,8 @@ dependencies = [
 [[package]]
 name = "pallet-bags-list-remote-tests"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
- "clap",
  "frame-election-provider-support",
  "frame-support",
  "frame-system",
@@ -4769,14 +4797,13 @@ dependencies = [
  "sp-std",
  "sp-storage",
  "sp-tracing",
- "structopt",
  "tokio",
 ]
 
 [[package]]
 name = "pallet-balances"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4791,7 +4818,7 @@ dependencies = [
 [[package]]
 name = "pallet-beefy"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "beefy-primitives",
  "frame-support",
@@ -4807,7 +4834,7 @@ dependencies = [
 [[package]]
 name = "pallet-beefy-mmr"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "beefy-merkle-tree",
  "beefy-primitives",
@@ -4832,7 +4859,7 @@ dependencies = [
 [[package]]
 name = "pallet-bounties"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4916,7 +4943,7 @@ dependencies = [
 [[package]]
 name = "pallet-collective"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4933,7 +4960,7 @@ dependencies = [
 [[package]]
 name = "pallet-democracy"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4949,7 +4976,7 @@ dependencies = [
 [[package]]
 name = "pallet-election-provider-multi-phase"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-election-provider-support",
@@ -4973,7 +5000,7 @@ dependencies = [
 [[package]]
 name = "pallet-elections-phragmen"
 version = "5.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4991,7 +5018,7 @@ dependencies = [
 [[package]]
 name = "pallet-gilt"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5006,7 +5033,7 @@ dependencies = [
 [[package]]
 name = "pallet-grandpa"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5029,7 +5056,7 @@ dependencies = [
 [[package]]
 name = "pallet-identity"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "enumflags2",
  "frame-benchmarking",
@@ -5045,7 +5072,7 @@ dependencies = [
 [[package]]
 name = "pallet-im-online"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5065,7 +5092,7 @@ dependencies = [
 [[package]]
 name = "pallet-indices"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5082,7 +5109,7 @@ dependencies = [
 [[package]]
 name = "pallet-membership"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5099,7 +5126,7 @@ dependencies = [
 [[package]]
 name = "pallet-mmr"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "ckb-merkle-mountain-range",
  "frame-benchmarking",
@@ -5117,7 +5144,7 @@ dependencies = [
 [[package]]
 name = "pallet-mmr-primitives"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -5133,7 +5160,7 @@ dependencies = [
 [[package]]
 name = "pallet-mmr-rpc"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "jsonrpc-core",
  "jsonrpc-core-client",
@@ -5150,7 +5177,7 @@ dependencies = [
 [[package]]
 name = "pallet-multisig"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5165,7 +5192,7 @@ dependencies = [
 [[package]]
 name = "pallet-nicks"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -5179,7 +5206,7 @@ dependencies = [
 [[package]]
 name = "pallet-offences"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -5196,7 +5223,7 @@ dependencies = [
 [[package]]
 name = "pallet-offences-benchmarking"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-election-provider-support",
@@ -5219,7 +5246,7 @@ dependencies = [
 [[package]]
 name = "pallet-preimage"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5235,7 +5262,7 @@ dependencies = [
 [[package]]
 name = "pallet-proxy"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5250,7 +5277,7 @@ dependencies = [
 [[package]]
 name = "pallet-recovery"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -5264,7 +5291,7 @@ dependencies = [
 [[package]]
 name = "pallet-scheduler"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5280,7 +5307,7 @@ dependencies = [
 [[package]]
 name = "pallet-session"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -5301,7 +5328,7 @@ dependencies = [
 [[package]]
 name = "pallet-session-benchmarking"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5317,7 +5344,7 @@ dependencies = [
 [[package]]
 name = "pallet-society"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -5331,7 +5358,7 @@ dependencies = [
 [[package]]
 name = "pallet-staking"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-election-provider-support",
@@ -5354,7 +5381,7 @@ dependencies = [
 [[package]]
 name = "pallet-staking-reward-curve"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "proc-macro-crate 1.1.0",
  "proc-macro2",
@@ -5365,7 +5392,7 @@ dependencies = [
 [[package]]
 name = "pallet-staking-reward-fn"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "log",
  "sp-arithmetic",
@@ -5374,7 +5401,7 @@ dependencies = [
 [[package]]
 name = "pallet-sudo"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -5388,7 +5415,7 @@ dependencies = [
 [[package]]
 name = "pallet-timestamp"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5406,7 +5433,7 @@ dependencies = [
 [[package]]
 name = "pallet-tips"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5425,7 +5452,7 @@ dependencies = [
 [[package]]
 name = "pallet-transaction-payment"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -5442,7 +5469,7 @@ dependencies = [
 [[package]]
 name = "pallet-transaction-payment-rpc"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "jsonrpc-core",
  "jsonrpc-core-client",
@@ -5459,7 +5486,7 @@ dependencies = [
 [[package]]
 name = "pallet-transaction-payment-rpc-runtime-api"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "pallet-transaction-payment",
  "parity-scale-codec",
@@ -5470,7 +5497,7 @@ dependencies = [
 [[package]]
 name = "pallet-treasury"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5487,7 +5514,7 @@ dependencies = [
 [[package]]
 name = "pallet-utility"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5503,7 +5530,7 @@ dependencies = [
 [[package]]
 name = "pallet-vesting"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -6003,6 +6030,7 @@ dependencies = [
 name = "polkadot-cli"
 version = "0.9.13"
 dependencies = [
+ "clap",
  "frame-benchmarking-cli",
  "futures 0.3.19",
  "log",
@@ -6015,7 +6043,6 @@ dependencies = [
  "sc-tracing",
  "sp-core",
  "sp-trie",
- "structopt",
  "substrate-build-script-utils",
  "thiserror",
  "try-runtime-cli",
@@ -7215,6 +7242,7 @@ version = "0.9.13"
 dependencies = [
  "assert_matches",
  "async-trait",
+ "clap",
  "color-eyre",
  "futures 0.3.19",
  "futures-timer",
@@ -7232,7 +7260,6 @@ dependencies = [
  "polkadot-primitives",
  "sp-core",
  "sp-keystore",
- "structopt",
  "tracing",
 ]
 
@@ -7361,11 +7388,11 @@ dependencies = [
 name = "polkadot-voter-bags"
 version = "0.9.0"
 dependencies = [
+ "clap",
  "generate-bags",
  "kusama-runtime",
  "polkadot-runtime",
  "sp-io",
- "structopt",
  "westend-runtime",
 ]
 
@@ -7558,7 +7585,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "62941722fb675d463659e49c4f3fe1fe792ff24fe5bbaa9c08cd3b98a1c354f5"
 dependencies = [
  "bytes 1.1.0",
- "heck",
+ "heck 0.3.3",
  "itertools",
  "lazy_static",
  "log",
@@ -7888,7 +7915,6 @@ dependencies = [
  "polkadot-runtime-constants",
  "sp-core",
  "sp-tracing",
- "structopt",
  "tokio",
  "westend-runtime",
  "westend-runtime-constants",
@@ -7897,7 +7923,7 @@ dependencies = [
 [[package]]
 name = "remote-externalities"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "env_logger 0.9.0",
  "jsonrpsee",
@@ -8220,7 +8246,7 @@ dependencies = [
 [[package]]
 name = "sc-allocator"
 version = "4.1.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "log",
  "sp-core",
@@ -8231,7 +8257,7 @@ dependencies = [
 [[package]]
 name = "sc-authority-discovery"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "async-trait",
  "derive_more",
@@ -8258,7 +8284,7 @@ dependencies = [
 [[package]]
 name = "sc-basic-authorship"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "futures 0.3.19",
  "futures-timer",
@@ -8281,7 +8307,7 @@ dependencies = [
 [[package]]
 name = "sc-block-builder"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "parity-scale-codec",
  "sc-client-api",
@@ -8297,7 +8323,7 @@ dependencies = [
 [[package]]
 name = "sc-chain-spec"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "impl-trait-for-tuples",
  "memmap2 0.5.0",
@@ -8314,7 +8340,7 @@ dependencies = [
 [[package]]
 name = "sc-chain-spec-derive"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "proc-macro-crate 1.1.0",
  "proc-macro2",
@@ -8325,9 +8351,10 @@ dependencies = [
 [[package]]
 name = "sc-cli"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "chrono",
+ "clap",
  "fdlimit",
  "futures 0.3.19",
  "hex",
@@ -8354,7 +8381,6 @@ dependencies = [
  "sp-panic-handler",
  "sp-runtime",
  "sp-version",
- "structopt",
  "thiserror",
  "tiny-bip39",
  "tokio",
@@ -8363,7 +8389,7 @@ dependencies = [
 [[package]]
 name = "sc-client-api"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "fnv",
  "futures 0.3.19",
@@ -8391,7 +8417,7 @@ dependencies = [
 [[package]]
 name = "sc-client-db"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "hash-db",
  "kvdb",
@@ -8416,7 +8442,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "async-trait",
  "futures 0.3.19",
@@ -8440,7 +8466,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-babe"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "async-trait",
  "derive_more",
@@ -8483,7 +8509,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-babe-rpc"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "derive_more",
  "futures 0.3.19",
@@ -8507,7 +8533,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-epochs"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "fork-tree",
  "parity-scale-codec",
@@ -8520,7 +8546,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-slots"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "async-trait",
  "futures 0.3.19",
@@ -8545,7 +8571,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-uncles"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "sc-client-api",
  "sp-authorship",
@@ -8556,7 +8582,7 @@ dependencies = [
 [[package]]
 name = "sc-executor"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "lazy_static",
  "libsecp256k1",
@@ -8584,7 +8610,7 @@ dependencies = [
 [[package]]
 name = "sc-executor-common"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "derive_more",
  "environmental",
@@ -8602,7 +8628,7 @@ dependencies = [
 [[package]]
 name = "sc-executor-wasmi"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "log",
  "parity-scale-codec",
@@ -8618,7 +8644,7 @@ dependencies = [
 [[package]]
 name = "sc-executor-wasmtime"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "cfg-if 1.0.0",
  "libc",
@@ -8636,7 +8662,7 @@ dependencies = [
 [[package]]
 name = "sc-finality-grandpa"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "async-trait",
  "derive_more",
@@ -8674,7 +8700,7 @@ dependencies = [
 [[package]]
 name = "sc-finality-grandpa-rpc"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "derive_more",
  "finality-grandpa",
@@ -8698,7 +8724,7 @@ dependencies = [
 [[package]]
 name = "sc-informant"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "ansi_term",
  "futures 0.3.19",
@@ -8715,7 +8741,7 @@ dependencies = [
 [[package]]
 name = "sc-keystore"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "async-trait",
  "derive_more",
@@ -8730,7 +8756,7 @@ dependencies = [
 [[package]]
 name = "sc-network"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "async-std",
  "async-trait",
@@ -8781,7 +8807,7 @@ dependencies = [
 [[package]]
 name = "sc-network-gossip"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "futures 0.3.19",
  "futures-timer",
@@ -8797,7 +8823,7 @@ dependencies = [
 [[package]]
 name = "sc-offchain"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "bytes 1.1.0",
  "fnv",
@@ -8825,7 +8851,7 @@ dependencies = [
 [[package]]
 name = "sc-peerset"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "futures 0.3.19",
  "libp2p",
@@ -8838,7 +8864,7 @@ dependencies = [
 [[package]]
 name = "sc-proposer-metrics"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "log",
  "substrate-prometheus-endpoint",
@@ -8847,7 +8873,7 @@ dependencies = [
 [[package]]
 name = "sc-rpc"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "futures 0.3.19",
  "hash-db",
@@ -8878,7 +8904,7 @@ dependencies = [
 [[package]]
 name = "sc-rpc-api"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "futures 0.3.19",
  "jsonrpc-core",
@@ -8903,7 +8929,7 @@ dependencies = [
 [[package]]
 name = "sc-rpc-server"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "futures 0.3.19",
  "jsonrpc-core",
@@ -8920,7 +8946,7 @@ dependencies = [
 [[package]]
 name = "sc-service"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "async-trait",
  "directories",
@@ -8984,7 +9010,7 @@ dependencies = [
 [[package]]
 name = "sc-state-db"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "log",
  "parity-scale-codec",
@@ -8998,7 +9024,7 @@ dependencies = [
 [[package]]
 name = "sc-sync-state-rpc"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "jsonrpc-core",
  "jsonrpc-core-client",
@@ -9020,7 +9046,7 @@ dependencies = [
 [[package]]
 name = "sc-telemetry"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "chrono",
  "futures 0.3.19",
@@ -9038,7 +9064,7 @@ dependencies = [
 [[package]]
 name = "sc-tracing"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "ansi_term",
  "atty",
@@ -9069,7 +9095,7 @@ dependencies = [
 [[package]]
 name = "sc-tracing-proc-macro"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "proc-macro-crate 1.1.0",
  "proc-macro2",
@@ -9080,7 +9106,7 @@ dependencies = [
 [[package]]
 name = "sc-transaction-pool"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "futures 0.3.19",
  "futures-timer",
@@ -9107,7 +9133,7 @@ dependencies = [
 [[package]]
 name = "sc-transaction-pool-api"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "derive_more",
  "futures 0.3.19",
@@ -9121,7 +9147,7 @@ dependencies = [
 [[package]]
 name = "sc-utils"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "futures 0.3.19",
  "futures-timer",
@@ -9550,7 +9576,7 @@ dependencies = [
 [[package]]
 name = "sp-api"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "hash-db",
  "log",
@@ -9567,7 +9593,7 @@ dependencies = [
 [[package]]
 name = "sp-api-proc-macro"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "blake2-rfc",
  "proc-macro-crate 1.1.0",
@@ -9579,7 +9605,7 @@ dependencies = [
 [[package]]
 name = "sp-application-crypto"
 version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -9592,7 +9618,7 @@ dependencies = [
 [[package]]
 name = "sp-arithmetic"
 version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "integer-sqrt",
  "num-traits",
@@ -9607,7 +9633,7 @@ dependencies = [
 [[package]]
 name = "sp-authority-discovery"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -9620,7 +9646,7 @@ dependencies = [
 [[package]]
 name = "sp-authorship"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "async-trait",
  "parity-scale-codec",
@@ -9632,7 +9658,7 @@ dependencies = [
 [[package]]
 name = "sp-block-builder"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "parity-scale-codec",
  "sp-api",
@@ -9644,7 +9670,7 @@ dependencies = [
 [[package]]
 name = "sp-blockchain"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "futures 0.3.19",
  "log",
@@ -9662,7 +9688,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "async-trait",
  "futures 0.3.19",
@@ -9681,7 +9707,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus-babe"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "async-trait",
  "merlin",
@@ -9704,7 +9730,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus-slots"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -9716,7 +9742,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus-vrf"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "parity-scale-codec",
  "schnorrkel",
@@ -9728,7 +9754,7 @@ dependencies = [
 [[package]]
 name = "sp-core"
 version = "4.1.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "base58",
  "bitflags",
@@ -9776,7 +9802,7 @@ dependencies = [
 [[package]]
 name = "sp-core-hashing"
 version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "blake2-rfc",
  "byteorder",
@@ -9789,7 +9815,7 @@ dependencies = [
 [[package]]
 name = "sp-core-hashing-proc-macro"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -9800,7 +9826,7 @@ dependencies = [
 [[package]]
 name = "sp-database"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "kvdb",
  "parking_lot",
@@ -9809,7 +9835,7 @@ dependencies = [
 [[package]]
 name = "sp-debug-derive"
 version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -9819,7 +9845,7 @@ dependencies = [
 [[package]]
 name = "sp-externalities"
 version = "0.10.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "environmental",
  "parity-scale-codec",
@@ -9830,7 +9856,7 @@ dependencies = [
 [[package]]
 name = "sp-finality-grandpa"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "finality-grandpa",
  "log",
@@ -9848,7 +9874,7 @@ dependencies = [
 [[package]]
 name = "sp-inherents"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "async-trait",
  "impl-trait-for-tuples",
@@ -9862,7 +9888,7 @@ dependencies = [
 [[package]]
 name = "sp-io"
 version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "futures 0.3.19",
  "hash-db",
@@ -9886,7 +9912,7 @@ dependencies = [
 [[package]]
 name = "sp-keyring"
 version = "4.1.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "lazy_static",
  "sp-core",
@@ -9897,7 +9923,7 @@ dependencies = [
 [[package]]
 name = "sp-keystore"
 version = "0.10.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "async-trait",
  "derive_more",
@@ -9914,7 +9940,7 @@ dependencies = [
 [[package]]
 name = "sp-maybe-compressed-blob"
 version = "4.1.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "zstd",
 ]
@@ -9922,7 +9948,7 @@ dependencies = [
 [[package]]
 name = "sp-npos-elections"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -9937,7 +9963,7 @@ dependencies = [
 [[package]]
 name = "sp-npos-elections-solution-type"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "proc-macro-crate 1.1.0",
  "proc-macro2",
@@ -9948,7 +9974,7 @@ dependencies = [
 [[package]]
 name = "sp-offchain"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "sp-api",
  "sp-core",
@@ -9958,7 +9984,7 @@ dependencies = [
 [[package]]
 name = "sp-panic-handler"
 version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "backtrace",
  "lazy_static",
@@ -9968,7 +9994,7 @@ dependencies = [
 [[package]]
 name = "sp-rpc"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "rustc-hash",
  "serde",
@@ -9978,7 +10004,7 @@ dependencies = [
 [[package]]
 name = "sp-runtime"
 version = "4.1.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "either",
  "hash256-std-hasher",
@@ -10000,7 +10026,7 @@ dependencies = [
 [[package]]
 name = "sp-runtime-interface"
 version = "4.1.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "impl-trait-for-tuples",
  "parity-scale-codec",
@@ -10017,7 +10043,7 @@ dependencies = [
 [[package]]
 name = "sp-runtime-interface-proc-macro"
 version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "Inflector",
  "proc-macro-crate 1.1.0",
@@ -10029,7 +10055,7 @@ dependencies = [
 [[package]]
 name = "sp-serializer"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "serde",
  "serde_json",
@@ -10038,7 +10064,7 @@ dependencies = [
 [[package]]
 name = "sp-session"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -10052,7 +10078,7 @@ dependencies = [
 [[package]]
 name = "sp-staking"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "parity-scale-codec",
  "scale-info",
@@ -10063,7 +10089,7 @@ dependencies = [
 [[package]]
 name = "sp-state-machine"
 version = "0.10.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "hash-db",
  "log",
@@ -10086,12 +10112,12 @@ dependencies = [
 [[package]]
 name = "sp-std"
 version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 
 [[package]]
 name = "sp-storage"
 version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "impl-serde",
  "parity-scale-codec",
@@ -10104,7 +10130,7 @@ dependencies = [
 [[package]]
 name = "sp-tasks"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "log",
  "sp-core",
@@ -10117,7 +10143,7 @@ dependencies = [
 [[package]]
 name = "sp-timestamp"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "async-trait",
  "futures-timer",
@@ -10133,7 +10159,7 @@ dependencies = [
 [[package]]
 name = "sp-tracing"
 version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "parity-scale-codec",
  "sp-std",
@@ -10145,7 +10171,7 @@ dependencies = [
 [[package]]
 name = "sp-transaction-pool"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "sp-api",
  "sp-runtime",
@@ -10154,7 +10180,7 @@ dependencies = [
 [[package]]
 name = "sp-transaction-storage-proof"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "async-trait",
  "log",
@@ -10170,7 +10196,7 @@ dependencies = [
 [[package]]
 name = "sp-trie"
 version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "hash-db",
  "memory-db",
@@ -10185,7 +10211,7 @@ dependencies = [
 [[package]]
 name = "sp-version"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "impl-serde",
  "parity-scale-codec",
@@ -10202,7 +10228,7 @@ dependencies = [
 [[package]]
 name = "sp-version-proc-macro"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "parity-scale-codec",
  "proc-macro2",
@@ -10213,7 +10239,7 @@ dependencies = [
 [[package]]
 name = "sp-wasm-interface"
 version = "4.1.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "impl-trait-for-tuples",
  "log",
@@ -10231,9 +10257,9 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
 
 [[package]]
 name = "ss58-registry"
-version = "1.10.0"
+version = "1.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c83f0afe7e571565ef9aae7b0e4fb30fcaec4ebb9aea2f00489b772782aa03a4"
+checksum = "8319f44e20b42e5c11b88b1ad4130c35fe2974665a007b08b02322070177136a"
 dependencies = [
  "Inflector",
  "proc-macro2",
@@ -10253,6 +10279,7 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
 name = "staking-miner"
 version = "0.9.13"
 dependencies = [
+ "clap",
  "env_logger 0.9.0",
  "frame-election-provider-support",
  "frame-support",
@@ -10278,7 +10305,6 @@ dependencies = [
  "sp-npos-elections",
  "sp-runtime",
  "sp-version",
- "structopt",
  "sub-tokens",
  "thiserror",
  "tokio",
@@ -10331,33 +10357,9 @@ dependencies = [
 
 [[package]]
 name = "strsim"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
-
-[[package]]
-name = "structopt"
-version = "0.3.25"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "40b9788f4202aa75c240ecc9c15c65185e6a39ccdeb0fd5d008b98825464c87c"
-dependencies = [
- "clap",
- "lazy_static",
- "structopt-derive",
-]
-
-[[package]]
-name = "structopt-derive"
-version = "0.4.18"
+version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0"
-dependencies = [
- "heck",
- "proc-macro-error",
- "proc-macro2",
- "quote",
- "syn",
-]
+checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
 
 [[package]]
 name = "strum"
@@ -10383,7 +10385,7 @@ version = "0.22.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "339f799d8b549e3744c7ac7feb216383e4005d94bdb22561b3ab8f3b808ae9fb"
 dependencies = [
- "heck",
+ "heck 0.3.3",
  "proc-macro2",
  "quote",
  "syn",
@@ -10395,7 +10397,7 @@ version = "0.23.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5bb0dc7ee9c15cea6199cde9a127fa16a4c5819af85395457ad72d68edc85a38"
 dependencies = [
- "heck",
+ "heck 0.3.3",
  "proc-macro2",
  "quote",
  "rustversion",
@@ -10426,7 +10428,7 @@ dependencies = [
 [[package]]
 name = "substrate-build-script-utils"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "platforms",
 ]
@@ -10434,7 +10436,7 @@ dependencies = [
 [[package]]
 name = "substrate-frame-rpc-system"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "frame-system-rpc-runtime-api",
  "futures 0.3.19",
@@ -10456,7 +10458,7 @@ dependencies = [
 [[package]]
 name = "substrate-prometheus-endpoint"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "async-std",
  "derive_more",
@@ -10470,7 +10472,7 @@ dependencies = [
 [[package]]
 name = "substrate-test-client"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "async-trait",
  "futures 0.3.19",
@@ -10496,7 +10498,7 @@ dependencies = [
 [[package]]
 name = "substrate-test-utils"
 version = "4.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "futures 0.3.19",
  "substrate-test-utils-derive",
@@ -10506,7 +10508,7 @@ dependencies = [
 [[package]]
 name = "substrate-test-utils-derive"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "proc-macro-crate 1.1.0",
  "proc-macro2",
@@ -10517,7 +10519,7 @@ dependencies = [
 [[package]]
 name = "substrate-wasm-builder"
 version = "5.0.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
  "ansi_term",
  "build-helper",
@@ -10616,6 +10618,7 @@ dependencies = [
 name = "test-parachain-adder-collator"
 version = "0.9.13"
 dependencies = [
+ "clap",
  "futures 0.3.19",
  "futures-timer",
  "log",
@@ -10632,7 +10635,6 @@ dependencies = [
  "sc-service",
  "sp-core",
  "sp-keyring",
- "structopt",
  "substrate-test-utils",
  "test-parachain-adder",
  "tokio",
@@ -10669,12 +10671,9 @@ dependencies = [
 
 [[package]]
 name = "textwrap"
-version = "0.11.0"
+version = "0.14.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
-dependencies = [
- "unicode-width",
-]
+checksum = "0066c8d12af8b5acd21e00547c3797fde4e8677254a7ee429176ccebbe93dd80"
 
 [[package]]
 name = "thiserror"
@@ -11083,8 +11082,9 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642"
 [[package]]
 name = "try-runtime-cli"
 version = "0.10.0-dev"
-source = "git+https://github.com/paritytech/substrate?branch=master#94dfe152e61e42cd27844a65165cfdedde5232eb"
+source = "git+https://github.com/paritytech/substrate?branch=master#511e8c860aa448c6899f884eebe64131a65300b8"
 dependencies = [
+ "clap",
  "jsonrpsee",
  "log",
  "parity-scale-codec",
@@ -11101,7 +11101,6 @@ dependencies = [
  "sp-runtime",
  "sp-state-machine",
  "sp-version",
- "structopt",
  "zstd",
 ]
 
@@ -11209,12 +11208,6 @@ version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b"
 
-[[package]]
-name = "unicode-width"
-version = "0.1.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
-
 [[package]]
 name = "unicode-xid"
 version = "0.2.2"
@@ -11312,12 +11305,6 @@ version = "0.2.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
 
-[[package]]
-name = "vec_map"
-version = "0.8.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
-
 [[package]]
 name = "version_check"
 version = "0.9.3"
diff --git a/polkadot/bridges/modules/dispatch/src/lib.rs b/polkadot/bridges/modules/dispatch/src/lib.rs
index b6af8367f55..6765cd86604 100644
--- a/polkadot/bridges/modules/dispatch/src/lib.rs
+++ b/polkadot/bridges/modules/dispatch/src/lib.rs
@@ -649,11 +649,12 @@ mod tests {
 	fn should_fail_on_weight_mismatch() {
 		new_test_ext().execute_with(|| {
 			let id = [0; 4];
-			let call = Call::System(frame_system::Call::remark { remark: vec![1, 2, 3] });
+			let call =
+				Call::System(frame_system::Call::remark_with_event { remark: vec![1, 2, 3] });
 			let call_weight = call.get_dispatch_info().weight;
 			let mut message = prepare_root_message(call);
 			message.weight = 7;
-			assert!(call_weight != 7, "needed for test to actually trigger a weight mismatch");
+			assert!(call_weight > 7, "needed for test to actually trigger a weight mismatch");
 
 			System::set_block_number(1);
 			let result = Dispatch::dispatch(
diff --git a/polkadot/cli/Cargo.toml b/polkadot/cli/Cargo.toml
index 6acd85bc421..903e89dc907 100644
--- a/polkadot/cli/Cargo.toml
+++ b/polkadot/cli/Cargo.toml
@@ -14,9 +14,9 @@ wasm-opt = false
 crate-type = ["cdylib", "rlib"]
 
 [dependencies]
+clap = { version = "3.0", features = ["derive"], optional = true }
 log = "0.4.13"
 thiserror = "1.0.30"
-structopt = { version = "0.3.25", optional = true }
 futures = "0.3.19"
 
 service = { package = "polkadot-service", path = "../node/service", default-features = false, optional = true }
@@ -39,11 +39,11 @@ sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master",
 substrate-build-script-utils = { git = "https://github.com/paritytech/substrate", branch = "master" }
 
 [features]
-default = [ "wasmtime", "db", "cli", "full-node", "trie-memory-tracker", "polkadot-native" ]
-wasmtime = [ "sc-cli/wasmtime" ]
-db = [ "service/db" ]
+default = ["wasmtime", "db", "cli", "full-node", "trie-memory-tracker", "polkadot-native"]
+wasmtime = ["sc-cli/wasmtime"]
+db = ["service/db"]
 cli = [
-	"structopt",
+	"clap",
 	"sc-cli",
 	"sc-service",
 	"sc-tracing",
@@ -52,19 +52,19 @@ cli = [
 	"polkadot-node-core-pvf",
 	"polkadot-performance-test",
 ]
-runtime-benchmarks = [ "service/runtime-benchmarks", "polkadot-node-metrics/runtime-benchmarks" ]
-trie-memory-tracker = [ "sp-trie/memory-tracker" ]
-full-node = [ "service/full-node" ]
-try-runtime = [ "service/try-runtime" ]
-fast-runtime = [ "service/fast-runtime" ]
+runtime-benchmarks = ["service/runtime-benchmarks", "polkadot-node-metrics/runtime-benchmarks"]
+trie-memory-tracker = ["sp-trie/memory-tracker"]
+full-node = ["service/full-node"]
+try-runtime = ["service/try-runtime"]
+fast-runtime = ["service/fast-runtime"]
 
 # Configure the native runtimes to use. Polkadot is enabled by default.
 #
 # Validators require the native runtime currently
-polkadot-native = [ "service/polkadot-native" ]
-kusama-native = [ "service/kusama-native" ]
-westend-native = [ "service/westend-native" ]
-rococo-native = [ "service/rococo-native" ]
+polkadot-native = ["service/polkadot-native"]
+kusama-native = ["service/kusama-native"]
+westend-native = ["service/westend-native"]
+rococo-native = ["service/rococo-native"]
 
-malus = [ "full-node", "service/malus" ]
+malus = ["full-node", "service/malus"]
 runtime-metrics = ["service/runtime-metrics", "polkadot-node-metrics/runtime-metrics"]
diff --git a/polkadot/cli/src/cli.rs b/polkadot/cli/src/cli.rs
index 68b172892e1..b24665ed448 100644
--- a/polkadot/cli/src/cli.rs
+++ b/polkadot/cli/src/cli.rs
@@ -16,10 +16,10 @@
 
 //! Polkadot CLI library.
 
-use structopt::StructOpt;
+use clap::{AppSettings, Parser};
 
 #[allow(missing_docs)]
-#[derive(Debug, StructOpt)]
+#[derive(Debug, Parser)]
 pub enum Subcommand {
 	/// Build a chain specification.
 	BuildSpec(sc_cli::BuildSpecCmd),
@@ -43,15 +43,15 @@ pub enum Subcommand {
 	Revert(sc_cli::RevertCmd),
 
 	#[allow(missing_docs)]
-	#[structopt(name = "prepare-worker", setting = structopt::clap::AppSettings::Hidden)]
+	#[clap(name = "prepare-worker", setting = AppSettings::Hidden)]
 	PvfPrepareWorker(ValidationWorkerCommand),
 
 	#[allow(missing_docs)]
-	#[structopt(name = "execute-worker", setting = structopt::clap::AppSettings::Hidden)]
+	#[clap(name = "execute-worker", setting = AppSettings::Hidden)]
 	PvfExecuteWorker(ValidationWorkerCommand),
 
 	/// The custom benchmark subcommand benchmarking runtime pallets.
-	#[structopt(name = "benchmark", about = "Benchmark runtime pallets.")]
+	#[clap(name = "benchmark", about = "Benchmark runtime pallets.")]
 	Benchmark(frame_benchmarking_cli::BenchmarkCmd),
 
 	/// Runs performance checks such as PVF compilation in order to measure machine
@@ -67,33 +67,34 @@ pub enum Subcommand {
 	TryRuntime,
 
 	/// Key management CLI utilities
+	#[clap(subcommand)]
 	Key(sc_cli::KeySubcommand),
 }
 
 #[allow(missing_docs)]
-#[derive(Debug, StructOpt)]
+#[derive(Debug, Parser)]
 pub struct ValidationWorkerCommand {
 	/// The path to the validation host's socket.
 	pub socket_path: String,
 }
 
 #[allow(missing_docs)]
-#[derive(Debug, StructOpt)]
+#[derive(Debug, Parser)]
 pub struct RunCmd {
 	#[allow(missing_docs)]
-	#[structopt(flatten)]
+	#[clap(flatten)]
 	pub base: sc_cli::RunCmd,
 
 	/// Force using Kusama native runtime.
-	#[structopt(long = "force-kusama")]
+	#[clap(long = "force-kusama")]
 	pub force_kusama: bool,
 
 	/// Force using Westend native runtime.
-	#[structopt(long = "force-westend")]
+	#[clap(long = "force-westend")]
 	pub force_westend: bool,
 
 	/// Force using Rococo native runtime.
-	#[structopt(long = "force-rococo")]
+	#[clap(long = "force-rococo")]
 	pub force_rococo: bool,
 
 	/// Setup a GRANDPA scheduled voting pause.
@@ -102,26 +103,26 @@ pub struct RunCmd {
 	/// blocks). After the given block number is finalized the GRANDPA voter
 	/// will temporarily stop voting for new blocks until the given delay has
 	/// elapsed (i.e. until a block at height `pause_block + delay` is imported).
-	#[structopt(long = "grandpa-pause", number_of_values(2))]
+	#[clap(long = "grandpa-pause", number_of_values(2))]
 	pub grandpa_pause: Vec<u32>,
 
 	/// Enable the BEEFY gadget (only on Rococo or Wococo for now).
-	#[structopt(long)]
+	#[clap(long)]
 	pub beefy: bool,
 
 	/// Add the destination address to the jaeger agent.
 	///
 	/// Must be valid socket address, of format `IP:Port`
 	/// commonly `127.0.0.1:6831`.
-	#[structopt(long)]
+	#[clap(long)]
 	pub jaeger_agent: Option<std::net::SocketAddr>,
 }
 
 #[allow(missing_docs)]
-#[derive(Debug, StructOpt)]
+#[derive(Debug, Parser)]
 pub struct Cli {
-	#[structopt(subcommand)]
+	#[clap(subcommand)]
 	pub subcommand: Option<Subcommand>,
-	#[structopt(flatten)]
+	#[clap(flatten)]
 	pub run: RunCmd,
 }
diff --git a/polkadot/node/malus/Cargo.toml b/polkadot/node/malus/Cargo.toml
index 3aef9ebe067..6e70902fc5c 100644
--- a/polkadot/node/malus/Cargo.toml
+++ b/polkadot/node/malus/Cargo.toml
@@ -13,7 +13,7 @@ name = "malus"
 path = "src/malus.rs"
 
 [dependencies]
-polkadot-cli = { path = "../../cli", default-features = false, features = [ "cli", "malus" ]  }
+polkadot-cli = { path = "../../cli", default-features = false, features = ["cli", "malus"] }
 polkadot-node-subsystem = { path = "../subsystem" }
 polkadot-node-subsystem-util = { path = "../subsystem-util" }
 polkadot-node-subsystem-types = { path = "../subsystem-types" }
@@ -26,9 +26,9 @@ polkadot-node-core-pvf = { path = "../core/pvf" }
 parity-util-mem = { version = "0.10.0", default-features = false, features = ["jemalloc-global"] }
 color-eyre = { version = "0.5.11", default-features = false }
 assert_matches = "1.5"
-structopt = "0.3.25"
 async-trait = "0.1.52"
 sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" }
+clap = { version = "3.0", features = ["derive"] }
 futures = "0.3.19"
 futures-timer = "3.0.2"
 tracing = "0.1.26"
diff --git a/polkadot/node/malus/src/malus.rs b/polkadot/node/malus/src/malus.rs
index 1f19ca7df08..a94c195cf56 100644
--- a/polkadot/node/malus/src/malus.rs
+++ b/polkadot/node/malus/src/malus.rs
@@ -16,9 +16,9 @@
 
 //! A malus or nemesis node launch code.
 
+use clap::{AppSettings, Parser};
 use color_eyre::eyre;
 use polkadot_cli::{Cli, RunCmd};
-use structopt::StructOpt;
 
 pub(crate) mod interceptor;
 pub(crate) mod shared;
@@ -28,9 +28,9 @@ mod variants;
 use variants::*;
 
 /// Define the different variants of behavior.
-#[derive(Debug, StructOpt)]
-#[structopt(about = "Malus - the nemesis of polkadot.")]
-#[structopt(rename_all = "kebab-case")]
+#[derive(Debug, Parser)]
+#[clap(about = "Malus - the nemesis of polkadot.", version)]
+#[clap(rename_all = "kebab-case")]
 enum NemesisVariant {
 	/// Suggest a candidate with an invalid proof of validity.
 	SuggestGarbageCandidate(RunCmd),
@@ -40,18 +40,18 @@ enum NemesisVariant {
 	DisputeAncestor(RunCmd),
 
 	#[allow(missing_docs)]
-	#[structopt(name = "prepare-worker", setting = structopt::clap::AppSettings::Hidden)]
+	#[clap(name = "prepare-worker", setting = AppSettings::Hidden)]
 	PvfPrepareWorker(polkadot_cli::ValidationWorkerCommand),
 
 	#[allow(missing_docs)]
-	#[structopt(name = "execute-worker", setting = structopt::clap::AppSettings::Hidden)]
+	#[clap(name = "execute-worker", setting = AppSettings::Hidden)]
 	PvfExecuteWorker(polkadot_cli::ValidationWorkerCommand),
 }
 
-#[derive(Debug, StructOpt)]
+#[derive(Debug, Parser)]
 #[allow(missing_docs)]
 struct MalusCli {
-	#[structopt(subcommand)]
+	#[clap(subcommand)]
 	pub variant: NemesisVariant,
 }
 
@@ -99,7 +99,7 @@ impl MalusCli {
 
 fn main() -> eyre::Result<()> {
 	color_eyre::install()?;
-	let cli = MalusCli::from_args();
+	let cli = MalusCli::parse();
 	cli.launch()?;
 	Ok(())
 }
@@ -110,7 +110,7 @@ mod tests {
 
 	#[test]
 	fn subcommand_works() {
-		let cli = MalusCli::from_iter_safe(IntoIterator::into_iter([
+		let cli = MalusCli::try_parse_from(IntoIterator::into_iter([
 			"malus",
 			"dispute-ancestor",
 			"--bob",
diff --git a/polkadot/parachain/test-parachains/adder/collator/Cargo.toml b/polkadot/parachain/test-parachains/adder/collator/Cargo.toml
index 20551a13496..bc038bedde5 100644
--- a/polkadot/parachain/test-parachains/adder/collator/Cargo.toml
+++ b/polkadot/parachain/test-parachains/adder/collator/Cargo.toml
@@ -15,10 +15,10 @@ path = "bin/puppet_worker.rs"
 
 [dependencies]
 parity-scale-codec = { version = "2.3.1", default-features = false, features = ["derive"] }
+clap = { version = "3.0", features = ["derive"] }
 futures = "0.3.19"
 futures-timer = "3.0.2"
 log = "0.4.13"
-structopt = "0.3.25"
 
 test-parachain-adder = { path = ".." }
 polkadot-primitives = { path = "../../../../primitives" }
diff --git a/polkadot/parachain/test-parachains/adder/collator/src/cli.rs b/polkadot/parachain/test-parachains/adder/collator/src/cli.rs
index be7d31342a7..7911cec60ec 100644
--- a/polkadot/parachain/test-parachains/adder/collator/src/cli.rs
+++ b/polkadot/parachain/test-parachains/adder/collator/src/cli.rs
@@ -16,48 +16,48 @@
 
 //! Polkadot CLI library.
 
+use clap::Parser;
 use sc_cli::{RuntimeVersion, SubstrateCli};
-use structopt::StructOpt;
 
 /// Sub-commands supported by the collator.
-#[derive(Debug, StructOpt)]
+#[derive(Debug, Parser)]
 pub enum Subcommand {
 	/// Export the genesis state of the parachain.
-	#[structopt(name = "export-genesis-state")]
+	#[clap(name = "export-genesis-state")]
 	ExportGenesisState(ExportGenesisStateCommand),
 
 	/// Export the genesis wasm of the parachain.
-	#[structopt(name = "export-genesis-wasm")]
+	#[clap(name = "export-genesis-wasm")]
 	ExportGenesisWasm(ExportGenesisWasmCommand),
 }
 
 /// Command for exporting the genesis state of the parachain
-#[derive(Debug, StructOpt)]
+#[derive(Debug, Parser)]
 pub struct ExportGenesisStateCommand {}
 
 /// Command for exporting the genesis wasm file.
-#[derive(Debug, StructOpt)]
+#[derive(Debug, Parser)]
 pub struct ExportGenesisWasmCommand {}
 
 #[allow(missing_docs)]
-#[derive(Debug, StructOpt)]
+#[derive(Debug, Parser)]
 pub struct RunCmd {
 	#[allow(missing_docs)]
-	#[structopt(flatten)]
+	#[clap(flatten)]
 	pub base: sc_cli::RunCmd,
 
 	/// Id of the parachain this collator collates for.
-	#[structopt(long)]
+	#[clap(long)]
 	pub parachain_id: Option<u32>,
 }
 
 #[allow(missing_docs)]
-#[derive(Debug, StructOpt)]
+#[derive(Debug, Parser)]
 pub struct Cli {
-	#[structopt(subcommand)]
+	#[clap(subcommand)]
 	pub subcommand: Option<Subcommand>,
 
-	#[structopt(flatten)]
+	#[clap(flatten)]
 	pub run: RunCmd,
 }
 
diff --git a/polkadot/utils/generate-bags/Cargo.toml b/polkadot/utils/generate-bags/Cargo.toml
index 2ebe2472226..4b3a35b6eca 100644
--- a/polkadot/utils/generate-bags/Cargo.toml
+++ b/polkadot/utils/generate-bags/Cargo.toml
@@ -5,9 +5,10 @@ authors = ["Parity Technologies <admin@parity.io>"]
 edition = "2018"
 
 [dependencies]
+clap = { version = "3.0", features = ["derive"] }
+
 generate-bags = { git = "https://github.com/paritytech/substrate", branch = "master" }
 sp-io = { git = "https://github.com/paritytech/substrate", branch = "master" }
-structopt = "0.3.25"
 
 westend-runtime = { path = "../../runtime/westend" }
 kusama-runtime = { path = "../../runtime/kusama" }
diff --git a/polkadot/utils/generate-bags/src/main.rs b/polkadot/utils/generate-bags/src/main.rs
index 3cbb06629f8..9f5dbada3e9 100644
--- a/polkadot/utils/generate-bags/src/main.rs
+++ b/polkadot/utils/generate-bags/src/main.rs
@@ -20,20 +20,19 @@
 //! touched again. It can be reused to regenerate a wholly different
 //! quantity of bags, or if the existential deposit changes, etc.
 
+use clap::{ArgEnum, Parser};
 use generate_bags::generate_thresholds;
 use kusama_runtime::Runtime as KusamaRuntime;
 use polkadot_runtime::Runtime as PolkadotRuntime;
 use std::path::{Path, PathBuf};
-use structopt::{clap::arg_enum, StructOpt};
 use westend_runtime::Runtime as WestendRuntime;
 
-arg_enum! {
-	#[derive(Debug)]
-	enum Runtime {
-		Westend,
-		Kusama,
-		Polkadot,
-	}
+#[derive(Clone, Debug, ArgEnum)]
+#[clap(rename_all = "PascalCase")]
+enum Runtime {
+	Westend,
+	Kusama,
+	Polkadot,
 }
 
 impl Runtime {
@@ -48,35 +47,30 @@ impl Runtime {
 	}
 }
 
-#[derive(Debug, StructOpt)]
+#[derive(Debug, Parser)]
 struct Opt {
 	/// How many bags to generate.
-	#[structopt(long, default_value = "200")]
+	#[clap(long, default_value = "200")]
 	n_bags: usize,
 
 	/// Which runtime to generate.
-	#[structopt(
-		long,
-		case_insensitive = true,
-		default_value = "Polkadot",
-		possible_values = &Runtime::variants(),
-	)]
+	#[clap(long, ignore_case = true, arg_enum, default_value = "Polkadot")]
 	runtime: Runtime,
 
 	/// Where to write the output.
 	output: PathBuf,
 
 	/// The total issuance of the native currency.
-	#[structopt(short, long)]
+	#[clap(short, long)]
 	total_issuance: u128,
 
 	/// The minimum account balance (i.e. existential deposit) for the native currency.
-	#[structopt(short, long)]
+	#[clap(short, long)]
 	minimum_balance: u128,
 }
 
 fn main() -> Result<(), std::io::Error> {
-	let Opt { n_bags, output, runtime, total_issuance, minimum_balance } = Opt::from_args();
+	let Opt { n_bags, output, runtime, total_issuance, minimum_balance } = Opt::parse();
 
 	runtime.generate_thresholds_fn()(n_bags, &output, total_issuance, minimum_balance)
 }
diff --git a/polkadot/utils/remote-ext-tests/bags-list/Cargo.toml b/polkadot/utils/remote-ext-tests/bags-list/Cargo.toml
index 18b9d23d78d..aca6b3efaab 100644
--- a/polkadot/utils/remote-ext-tests/bags-list/Cargo.toml
+++ b/polkadot/utils/remote-ext-tests/bags-list/Cargo.toml
@@ -12,13 +12,11 @@ polkadot-runtime-constants = { version = "0.9.13", path = "../../../runtime/polk
 kusama-runtime-constants = { version = "0.9.13", path = "../../../runtime/kusama/constants" }
 westend-runtime-constants = { version = "0.9.13", path = "../../../runtime/westend/constants" }
 
-
 pallet-bags-list-remote-tests = { git = "https://github.com/paritytech/substrate", branch = "master" }
 sp-tracing = { git = "https://github.com/paritytech/substrate", branch = "master" }
 frame-system = { git = "https://github.com/paritytech/substrate", branch = "master" }
 sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" }
 
+clap = { version = "3.0", features = ["derive"] }
+log = "0.4.14"
 tokio = { version = "1", features = ["macros"] }
-log = { version = "0.4.14" }
-structopt = {version = "0.3.25" }
-clap = { version = "2.34.0" }
diff --git a/polkadot/utils/remote-ext-tests/bags-list/src/main.rs b/polkadot/utils/remote-ext-tests/bags-list/src/main.rs
index 5e6fc6fb887..37582da4296 100644
--- a/polkadot/utils/remote-ext-tests/bags-list/src/main.rs
+++ b/polkadot/utils/remote-ext-tests/bags-list/src/main.rs
@@ -16,43 +16,40 @@
 
 //! Remote tests for bags-list pallet.
 
-use clap::arg_enum;
+use clap::{ArgEnum, Parser};
 use std::convert::TryInto;
-use structopt::StructOpt;
 
-arg_enum! {
-	#[derive(Debug)]
-	enum Command {
-		CheckMigration,
-		SanityCheck,
-		Snapshot,
-	}
+#[derive(Clone, Debug, ArgEnum)]
+#[clap(rename_all = "PascalCase")]
+enum Command {
+	CheckMigration,
+	SanityCheck,
+	Snapshot,
 }
 
-arg_enum! {
-	#[derive(Debug)]
-	enum Runtime {
-		Polkadot,
-		Kusama,
-		Westend,
-	}
+#[derive(Clone, Debug, ArgEnum)]
+#[clap(rename_all = "PascalCase")]
+enum Runtime {
+	Polkadot,
+	Kusama,
+	Westend,
 }
 
-#[derive(StructOpt)]
+#[derive(Parser)]
 struct Cli {
-	#[structopt(long, short, default_value = "wss://kusama-rpc.polkadot.io:443")]
+	#[clap(long, short, default_value = "wss://kusama-rpc.polkadot.io:443")]
 	uri: String,
-	#[structopt(long, short, case_insensitive = true, possible_values = &Runtime::variants(), default_value = "kusama")]
+	#[clap(long, short, ignore_case = true, arg_enum, default_value = "kusama")]
 	runtime: Runtime,
-	#[structopt(long, short, case_insensitive = true, possible_values = &Command::variants(), default_value = "SanityCheck")]
+	#[clap(long, short, ignore_case = true, arg_enum, default_value = "SanityCheck")]
 	command: Command,
-	#[structopt(long, short)]
+	#[clap(long, short)]
 	snapshot_limit: Option<usize>,
 }
 
 #[tokio::main]
 async fn main() {
-	let options = Cli::from_args();
+	let options = Cli::parse();
 	sp_tracing::try_init_simple();
 
 	log::info!(
diff --git a/polkadot/utils/staking-miner/Cargo.toml b/polkadot/utils/staking-miner/Cargo.toml
index ff1a885398e..ac0fe6f4399 100644
--- a/polkadot/utils/staking-miner/Cargo.toml
+++ b/polkadot/utils/staking-miner/Cargo.toml
@@ -9,7 +9,7 @@ codec = { package = "parity-scale-codec", version = "2.0.0" }
 tokio = { version = "1.15", features = ["macros"] }
 log = "0.4.11"
 env_logger = "0.9.0"
-structopt = "0.3.25"
+clap = { version = "3.0", features = ["derive", "env"] }
 jsonrpsee = { version = "0.4.1", default-features = false, features = ["ws-client"] }
 serde_json = "1.0"
 serde = "1.0.132"
diff --git a/polkadot/utils/staking-miner/src/main.rs b/polkadot/utils/staking-miner/src/main.rs
index 2a08df9cf8a..e38c81f602e 100644
--- a/polkadot/utils/staking-miner/src/main.rs
+++ b/polkadot/utils/staking-miner/src/main.rs
@@ -38,13 +38,13 @@ mod signer;
 pub(crate) use prelude::*;
 pub(crate) use signer::get_account_info;
 
+use clap::Parser;
 use frame_election_provider_support::NposSolver;
 use frame_support::traits::Get;
 use jsonrpsee::ws_client::{WsClient, WsClientBuilder};
 use remote_externalities::{Builder, Mode, OnlineConfig};
 use sp_npos_elections::ExtendedBalance;
 use sp_runtime::{traits::Block as BlockT, DeserializeOwned};
-use structopt::StructOpt;
 
 pub(crate) enum AnyRuntime {
 	Polkadot,
@@ -272,7 +272,7 @@ impl<T: EPM::Config> std::fmt::Display for Error<T> {
 	}
 }
 
-#[derive(Debug, Clone, StructOpt)]
+#[derive(Debug, Clone, Parser)]
 enum Command {
 	/// Monitor for the phase being signed, then compute.
 	Monitor(MonitorConfig),
@@ -282,14 +282,14 @@ enum Command {
 	EmergencySolution(EmergencySolutionConfig),
 }
 
-#[derive(Debug, Clone, StructOpt)]
+#[derive(Debug, Clone, Parser)]
 enum Solvers {
 	SeqPhragmen {
-		#[structopt(long, default_value = "10")]
+		#[clap(long, default_value = "10")]
 		iterations: usize,
 	},
 	PhragMMS {
-		#[structopt(long, default_value = "10")]
+		#[clap(long, default_value = "10")]
 		iterations: usize,
 	},
 }
@@ -301,69 +301,67 @@ frame_support::parameter_types! {
 	pub static Balancing: Option<(usize, ExtendedBalance)> = Some((BalanceIterations::get(), 0));
 }
 
-#[derive(Debug, Clone, StructOpt)]
+#[derive(Debug, Clone, Parser)]
 struct MonitorConfig {
 	/// They type of event to listen to.
 	///
 	/// Typically, finalized is safer and there is no chance of anything going wrong, but it can be
 	/// slower. It is recommended to use finalized, if the duration of the signed phase is longer
 	/// than the the finality delay.
-	#[structopt(long, default_value = "head", possible_values = &["head", "finalized"])]
+	#[clap(long, default_value = "head", possible_values = &["head", "finalized"])]
 	listen: String,
 
 	/// The solver algorithm to use.
-	#[structopt(subcommand)]
+	#[clap(subcommand)]
 	solver: Solvers,
 }
 
-#[derive(Debug, Clone, StructOpt)]
+#[derive(Debug, Clone, Parser)]
 struct EmergencySolutionConfig {
 	/// The block hash at which scraping happens. If none is provided, the latest head is used.
-	#[allow(dead_code)]
-	#[structopt(long)]
+	#[clap(long)]
 	at: Option<Hash>,
 
 	/// The solver algorithm to use.
-	#[allow(dead_code)]
-	#[structopt(subcommand)]
+	#[clap(subcommand)]
 	solver: Solvers,
 
 	/// The number of top backed winners to take. All are taken, if not provided.
 	take: Option<usize>,
 }
 
-#[derive(Debug, Clone, StructOpt)]
+#[derive(Debug, Clone, Parser)]
 struct DryRunConfig {
 	/// The block hash at which scraping happens. If none is provided, the latest head is used.
-	#[structopt(long)]
+	#[clap(long)]
 	at: Option<Hash>,
 
 	/// The solver algorithm to use.
-	#[structopt(subcommand)]
+	#[clap(subcommand)]
 	solver: Solvers,
 }
 
-#[derive(Debug, Clone, StructOpt)]
+#[derive(Debug, Clone, Parser)]
 struct SharedConfig {
 	/// The `ws` node to connect to.
-	#[structopt(long, short, default_value = DEFAULT_URI, env = "URI")]
+	#[clap(long, short, default_value = DEFAULT_URI, env = "URI")]
 	uri: String,
 
 	/// The seed of a funded account in hex.
 	///
 	/// WARNING: Don't use an account with a large stash for this. Based on how the bot is
 	/// configured, it might re-try and lose funds through transaction fees/deposits.
-	#[structopt(long, short, env = "SEED")]
+	#[clap(long, short, env = "SEED")]
 	seed: String,
 }
 
-#[derive(Debug, Clone, StructOpt)]
+#[derive(Debug, Clone, Parser)]
 struct Opt {
 	/// The `ws` node to connect to.
-	#[structopt(flatten)]
+	#[clap(flatten)]
 	shared: SharedConfig,
 
-	#[structopt(subcommand)]
+	#[clap(subcommand)]
 	command: Command,
 }
 
@@ -523,7 +521,7 @@ async fn main() {
 		.format_module_path(true)
 		.format_level(true)
 		.init();
-	let Opt { shared, command } = Opt::from_args();
+	let Opt { shared, command } = Opt::parse();
 	log::debug!(target: LOG_TARGET, "attempting to connect to {:?}", shared.uri);
 
 	let client = loop {
-- 
GitLab