From 1d28f59e196be07725e17b9dae4cc0d96e921d84 Mon Sep 17 00:00:00 2001
From: Bernhard Schuster <bernhard@ahoi.io>
Date: Wed, 13 Jan 2021 22:14:26 +0100
Subject: [PATCH] display errors with their sources (#2264)

* update futures to 0.3.9

* companion changes for generic error types

* improve errors, keep error sources

* command compile fix

* use the correct Error type, add annotation

* avoid async { fut.await.map_err(E::Variant) } with TryFuture

* fix cargo lock, bump futures to 0.3.10

futures 0.3.9 got yanked

* chore cargo update -p sp-io

* minor quirk

* make rustc 1.48 happy by bouning the error more tightly

* be more explicit

* cargo lock futures
---
 polkadot/Cargo.lock                           | 277 +++++++++---------
 polkadot/cli/Cargo.toml                       |   1 +
 polkadot/cli/src/command.rs                   |  76 +++--
 .../adder/collator/src/main.rs                |   5 +-
 4 files changed, 180 insertions(+), 179 deletions(-)

diff --git a/polkadot/Cargo.lock b/polkadot/Cargo.lock
index 5620441e327..fb32177f880 100644
--- a/polkadot/Cargo.lock
+++ b/polkadot/Cargo.lock
@@ -1477,7 +1477,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
 [[package]]
 name = "fork-tree"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "parity-scale-codec",
 ]
@@ -1495,7 +1495,7 @@ dependencies = [
 [[package]]
 name = "frame-benchmarking"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -1513,7 +1513,7 @@ dependencies = [
 [[package]]
 name = "frame-benchmarking-cli"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "Inflector",
  "chrono",
@@ -1536,7 +1536,7 @@ dependencies = [
 [[package]]
 name = "frame-executive"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -1552,7 +1552,7 @@ dependencies = [
 [[package]]
 name = "frame-metadata"
 version = "12.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "parity-scale-codec",
  "serde",
@@ -1563,7 +1563,7 @@ dependencies = [
 [[package]]
 name = "frame-support"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "bitflags",
  "frame-metadata",
@@ -1588,7 +1588,7 @@ dependencies = [
 [[package]]
 name = "frame-support-procedural"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "Inflector",
  "frame-support-procedural-tools",
@@ -1600,7 +1600,7 @@ dependencies = [
 [[package]]
 name = "frame-support-procedural-tools"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-support-procedural-tools-derive",
  "proc-macro-crate",
@@ -1612,7 +1612,7 @@ dependencies = [
 [[package]]
 name = "frame-support-procedural-tools-derive"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "proc-macro2 1.0.24",
  "quote 1.0.7",
@@ -1622,7 +1622,7 @@ dependencies = [
 [[package]]
 name = "frame-system"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-support",
  "impl-trait-for-tuples 0.2.0",
@@ -1638,7 +1638,7 @@ dependencies = [
 [[package]]
 name = "frame-system-benchmarking"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -1652,7 +1652,7 @@ dependencies = [
 [[package]]
 name = "frame-system-rpc-runtime-api"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "parity-scale-codec",
  "sp-api",
@@ -3907,7 +3907,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b"
 [[package]]
 name = "pallet-authority-discovery"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -3923,7 +3923,7 @@ dependencies = [
 [[package]]
 name = "pallet-authorship"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -3938,7 +3938,7 @@ dependencies = [
 [[package]]
 name = "pallet-babe"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -3963,7 +3963,7 @@ dependencies = [
 [[package]]
 name = "pallet-balances"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -3977,7 +3977,7 @@ dependencies = [
 [[package]]
 name = "pallet-bounties"
 version = "2.0.0"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -3992,7 +3992,7 @@ dependencies = [
 [[package]]
 name = "pallet-collective"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4008,7 +4008,7 @@ dependencies = [
 [[package]]
 name = "pallet-democracy"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4023,7 +4023,7 @@ dependencies = [
 [[package]]
 name = "pallet-elections-phragmen"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4038,7 +4038,7 @@ dependencies = [
 [[package]]
 name = "pallet-grandpa"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4059,7 +4059,7 @@ dependencies = [
 [[package]]
 name = "pallet-identity"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "enumflags2",
  "frame-benchmarking",
@@ -4075,7 +4075,7 @@ dependencies = [
 [[package]]
 name = "pallet-im-online"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4095,7 +4095,7 @@ dependencies = [
 [[package]]
 name = "pallet-indices"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4112,7 +4112,7 @@ dependencies = [
 [[package]]
 name = "pallet-membership"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4126,7 +4126,7 @@ dependencies = [
 [[package]]
 name = "pallet-multisig"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4142,7 +4142,7 @@ dependencies = [
 [[package]]
 name = "pallet-nicks"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4156,7 +4156,7 @@ dependencies = [
 [[package]]
 name = "pallet-offences"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4171,7 +4171,7 @@ dependencies = [
 [[package]]
 name = "pallet-offences-benchmarking"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4192,7 +4192,7 @@ dependencies = [
 [[package]]
 name = "pallet-proxy"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4208,7 +4208,7 @@ dependencies = [
 [[package]]
 name = "pallet-randomness-collective-flip"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4221,7 +4221,7 @@ dependencies = [
 [[package]]
 name = "pallet-recovery"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "enumflags2",
  "frame-support",
@@ -4236,7 +4236,7 @@ dependencies = [
 [[package]]
 name = "pallet-scheduler"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4251,7 +4251,7 @@ dependencies = [
 [[package]]
 name = "pallet-session"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4271,7 +4271,7 @@ dependencies = [
 [[package]]
 name = "pallet-session-benchmarking"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4287,7 +4287,7 @@ dependencies = [
 [[package]]
 name = "pallet-society"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4301,7 +4301,7 @@ dependencies = [
 [[package]]
 name = "pallet-staking"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4323,7 +4323,7 @@ dependencies = [
 [[package]]
 name = "pallet-staking-reward-curve"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "proc-macro-crate",
  "proc-macro2 1.0.24",
@@ -4334,7 +4334,7 @@ dependencies = [
 [[package]]
 name = "pallet-sudo"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4348,7 +4348,7 @@ dependencies = [
 [[package]]
 name = "pallet-timestamp"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4366,7 +4366,7 @@ dependencies = [
 [[package]]
 name = "pallet-tips"
 version = "2.0.0"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4381,7 +4381,7 @@ dependencies = [
 [[package]]
 name = "pallet-transaction-payment"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4398,7 +4398,7 @@ dependencies = [
 [[package]]
 name = "pallet-transaction-payment-rpc"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "jsonrpc-core",
  "jsonrpc-core-client",
@@ -4416,7 +4416,7 @@ dependencies = [
 [[package]]
 name = "pallet-transaction-payment-rpc-runtime-api"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-support",
  "parity-scale-codec",
@@ -4429,7 +4429,7 @@ dependencies = [
 [[package]]
 name = "pallet-treasury"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4445,7 +4445,7 @@ dependencies = [
 [[package]]
 name = "pallet-utility"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4461,7 +4461,7 @@ dependencies = [
 [[package]]
 name = "pallet-vesting"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "enumflags2",
  "frame-benchmarking",
@@ -4951,6 +4951,7 @@ name = "polkadot-cli"
 version = "0.8.27"
 dependencies = [
  "frame-benchmarking-cli",
+ "futures 0.3.10",
  "log",
  "polkadot-parachain",
  "polkadot-service",
@@ -6715,7 +6716,7 @@ dependencies = [
 [[package]]
 name = "sc-authority-discovery"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "async-trait",
  "derive_more",
@@ -6743,7 +6744,7 @@ dependencies = [
 [[package]]
 name = "sc-basic-authorship"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "futures 0.3.10",
  "futures-timer 3.0.2",
@@ -6766,7 +6767,7 @@ dependencies = [
 [[package]]
 name = "sc-block-builder"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "parity-scale-codec",
  "sc-client-api",
@@ -6783,7 +6784,7 @@ dependencies = [
 [[package]]
 name = "sc-chain-spec"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "impl-trait-for-tuples 0.2.0",
  "parity-scale-codec",
@@ -6804,7 +6805,7 @@ dependencies = [
 [[package]]
 name = "sc-chain-spec-derive"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "proc-macro-crate",
  "proc-macro2 1.0.24",
@@ -6815,7 +6816,7 @@ dependencies = [
 [[package]]
 name = "sc-cli"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "atty",
  "chrono",
@@ -6858,7 +6859,7 @@ dependencies = [
 [[package]]
 name = "sc-cli-proc-macro"
 version = "2.0.0"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "proc-macro-crate",
  "proc-macro2 1.0.24",
@@ -6869,7 +6870,7 @@ dependencies = [
 [[package]]
 name = "sc-client-api"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "derive_more",
  "fnv",
@@ -6903,7 +6904,7 @@ dependencies = [
 [[package]]
 name = "sc-client-db"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "blake2-rfc",
  "hash-db",
@@ -6933,7 +6934,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "sc-client-api",
  "sp-blockchain",
@@ -6944,7 +6945,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-babe"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "derive_more",
  "fork-tree",
@@ -6989,7 +6990,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-babe-rpc"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "derive_more",
  "futures 0.3.10",
@@ -7013,7 +7014,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-epochs"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "fork-tree",
  "parity-scale-codec",
@@ -7026,7 +7027,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-slots"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "futures 0.3.10",
  "futures-timer 3.0.2",
@@ -7052,7 +7053,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-uncles"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "log",
  "sc-client-api",
@@ -7066,7 +7067,7 @@ dependencies = [
 [[package]]
 name = "sc-executor"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "derive_more",
  "lazy_static",
@@ -7095,7 +7096,7 @@ dependencies = [
 [[package]]
 name = "sc-executor-common"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "derive_more",
  "parity-scale-codec",
@@ -7111,7 +7112,7 @@ dependencies = [
 [[package]]
 name = "sc-executor-wasmi"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "log",
  "parity-scale-codec",
@@ -7126,7 +7127,7 @@ dependencies = [
 [[package]]
 name = "sc-executor-wasmtime"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "log",
  "parity-scale-codec",
@@ -7144,7 +7145,7 @@ dependencies = [
 [[package]]
 name = "sc-finality-grandpa"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "derive_more",
  "finality-grandpa",
@@ -7181,7 +7182,7 @@ dependencies = [
 [[package]]
 name = "sc-finality-grandpa-rpc"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "derive_more",
  "finality-grandpa",
@@ -7205,7 +7206,7 @@ dependencies = [
 [[package]]
 name = "sc-informant"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "ansi_term 0.12.1",
  "futures 0.3.10",
@@ -7223,7 +7224,7 @@ dependencies = [
 [[package]]
 name = "sc-keystore"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "async-trait",
  "derive_more",
@@ -7243,7 +7244,7 @@ dependencies = [
 [[package]]
 name = "sc-light"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "hash-db",
  "lazy_static",
@@ -7262,7 +7263,7 @@ dependencies = [
 [[package]]
 name = "sc-network"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "async-std",
  "async-trait",
@@ -7315,7 +7316,7 @@ dependencies = [
 [[package]]
 name = "sc-network-gossip"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "futures 0.3.10",
  "futures-timer 3.0.2",
@@ -7331,7 +7332,7 @@ dependencies = [
 [[package]]
 name = "sc-offchain"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "bytes 0.5.6",
  "fnv",
@@ -7358,7 +7359,7 @@ dependencies = [
 [[package]]
 name = "sc-peerset"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "futures 0.3.10",
  "libp2p",
@@ -7371,7 +7372,7 @@ dependencies = [
 [[package]]
 name = "sc-proposer-metrics"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "log",
  "substrate-prometheus-endpoint",
@@ -7380,7 +7381,7 @@ dependencies = [
 [[package]]
 name = "sc-rpc"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "futures 0.3.10",
  "hash-db",
@@ -7414,7 +7415,7 @@ dependencies = [
 [[package]]
 name = "sc-rpc-api"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "derive_more",
  "futures 0.3.10",
@@ -7438,7 +7439,7 @@ dependencies = [
 [[package]]
 name = "sc-rpc-server"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "futures 0.1.29",
  "jsonrpc-core",
@@ -7456,7 +7457,7 @@ dependencies = [
 [[package]]
 name = "sc-service"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "directories 3.0.1",
  "exit-future",
@@ -7520,7 +7521,7 @@ dependencies = [
 [[package]]
 name = "sc-state-db"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "log",
  "parity-scale-codec",
@@ -7535,7 +7536,7 @@ dependencies = [
 [[package]]
 name = "sc-sync-state-rpc"
 version = "0.8.0"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "jsonrpc-core",
  "jsonrpc-core-client",
@@ -7555,7 +7556,7 @@ dependencies = [
 [[package]]
 name = "sc-telemetry"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "futures 0.3.10",
  "futures-timer 3.0.2",
@@ -7576,7 +7577,7 @@ dependencies = [
 [[package]]
 name = "sc-tracing"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "ansi_term 0.12.1",
  "erased-serde",
@@ -7600,7 +7601,7 @@ dependencies = [
 [[package]]
 name = "sc-transaction-graph"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "derive_more",
  "futures 0.3.10",
@@ -7622,7 +7623,7 @@ dependencies = [
 [[package]]
 name = "sc-transaction-pool"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "futures 0.3.10",
  "futures-diagnose",
@@ -8088,7 +8089,7 @@ dependencies = [
 [[package]]
 name = "sp-allocator"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "log",
  "sp-core",
@@ -8100,7 +8101,7 @@ dependencies = [
 [[package]]
 name = "sp-api"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "hash-db",
  "parity-scale-codec",
@@ -8116,7 +8117,7 @@ dependencies = [
 [[package]]
 name = "sp-api-proc-macro"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "blake2-rfc",
  "proc-macro-crate",
@@ -8128,7 +8129,7 @@ dependencies = [
 [[package]]
 name = "sp-application-crypto"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "parity-scale-codec",
  "serde",
@@ -8140,7 +8141,7 @@ dependencies = [
 [[package]]
 name = "sp-arithmetic"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "integer-sqrt",
  "num-traits 0.2.12",
@@ -8153,7 +8154,7 @@ dependencies = [
 [[package]]
 name = "sp-authority-discovery"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "parity-scale-codec",
  "sp-api",
@@ -8165,7 +8166,7 @@ dependencies = [
 [[package]]
 name = "sp-authorship"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "parity-scale-codec",
  "sp-inherents",
@@ -8176,7 +8177,7 @@ dependencies = [
 [[package]]
 name = "sp-block-builder"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "parity-scale-codec",
  "sp-api",
@@ -8188,7 +8189,7 @@ dependencies = [
 [[package]]
 name = "sp-blockchain"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "futures 0.3.10",
  "log",
@@ -8206,7 +8207,7 @@ dependencies = [
 [[package]]
 name = "sp-chain-spec"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "serde",
  "serde_json",
@@ -8215,7 +8216,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "futures 0.3.10",
  "futures-timer 3.0.2",
@@ -8241,7 +8242,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus-babe"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "merlin",
  "parity-scale-codec",
@@ -8261,7 +8262,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus-slots"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "parity-scale-codec",
  "sp-runtime",
@@ -8270,7 +8271,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus-vrf"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "parity-scale-codec",
  "schnorrkel",
@@ -8282,7 +8283,7 @@ dependencies = [
 [[package]]
 name = "sp-core"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "base58",
  "blake2-rfc",
@@ -8326,7 +8327,7 @@ dependencies = [
 [[package]]
 name = "sp-database"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "kvdb",
  "parking_lot 0.11.1",
@@ -8335,7 +8336,7 @@ dependencies = [
 [[package]]
 name = "sp-debug-derive"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "proc-macro2 1.0.24",
  "quote 1.0.7",
@@ -8345,7 +8346,7 @@ dependencies = [
 [[package]]
 name = "sp-externalities"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "environmental",
  "parity-scale-codec",
@@ -8356,7 +8357,7 @@ dependencies = [
 [[package]]
 name = "sp-finality-grandpa"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "finality-grandpa",
  "log",
@@ -8373,7 +8374,7 @@ dependencies = [
 [[package]]
 name = "sp-inherents"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "parity-scale-codec",
  "parking_lot 0.11.1",
@@ -8385,7 +8386,7 @@ dependencies = [
 [[package]]
 name = "sp-io"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "futures 0.3.10",
  "hash-db",
@@ -8409,7 +8410,7 @@ dependencies = [
 [[package]]
 name = "sp-keyring"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "lazy_static",
  "sp-core",
@@ -8420,7 +8421,7 @@ dependencies = [
 [[package]]
 name = "sp-keystore"
 version = "0.8.0"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "async-trait",
  "derive_more",
@@ -8437,7 +8438,7 @@ dependencies = [
 [[package]]
 name = "sp-npos-elections"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "parity-scale-codec",
  "serde",
@@ -8449,7 +8450,7 @@ dependencies = [
 [[package]]
 name = "sp-npos-elections-compact"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "proc-macro-crate",
  "proc-macro2 1.0.24",
@@ -8460,7 +8461,7 @@ dependencies = [
 [[package]]
 name = "sp-offchain"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "sp-api",
  "sp-core",
@@ -8470,7 +8471,7 @@ dependencies = [
 [[package]]
 name = "sp-panic-handler"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "backtrace",
 ]
@@ -8478,7 +8479,7 @@ dependencies = [
 [[package]]
 name = "sp-rpc"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "serde",
  "sp-core",
@@ -8487,7 +8488,7 @@ dependencies = [
 [[package]]
 name = "sp-runtime"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "either",
  "hash256-std-hasher",
@@ -8508,7 +8509,7 @@ dependencies = [
 [[package]]
 name = "sp-runtime-interface"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "impl-trait-for-tuples 0.2.0",
  "parity-scale-codec",
@@ -8525,7 +8526,7 @@ dependencies = [
 [[package]]
 name = "sp-runtime-interface-proc-macro"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "Inflector",
  "proc-macro-crate",
@@ -8537,7 +8538,7 @@ dependencies = [
 [[package]]
 name = "sp-serializer"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "serde",
  "serde_json",
@@ -8546,7 +8547,7 @@ dependencies = [
 [[package]]
 name = "sp-session"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "parity-scale-codec",
  "sp-api",
@@ -8559,7 +8560,7 @@ dependencies = [
 [[package]]
 name = "sp-staking"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "parity-scale-codec",
  "sp-runtime",
@@ -8569,7 +8570,7 @@ dependencies = [
 [[package]]
 name = "sp-state-machine"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "hash-db",
  "log",
@@ -8591,12 +8592,12 @@ dependencies = [
 [[package]]
 name = "sp-std"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 
 [[package]]
 name = "sp-storage"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "impl-serde",
  "parity-scale-codec",
@@ -8609,7 +8610,7 @@ dependencies = [
 [[package]]
 name = "sp-tasks"
 version = "2.0.0"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "log",
  "sp-core",
@@ -8622,7 +8623,7 @@ dependencies = [
 [[package]]
 name = "sp-timestamp"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "impl-trait-for-tuples 0.2.0",
  "parity-scale-codec",
@@ -8636,7 +8637,7 @@ dependencies = [
 [[package]]
 name = "sp-tracing"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "log",
  "parity-scale-codec",
@@ -8649,7 +8650,7 @@ dependencies = [
 [[package]]
 name = "sp-transaction-pool"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "derive_more",
  "futures 0.3.10",
@@ -8665,7 +8666,7 @@ dependencies = [
 [[package]]
 name = "sp-trie"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "hash-db",
  "memory-db",
@@ -8679,7 +8680,7 @@ dependencies = [
 [[package]]
 name = "sp-utils"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "futures 0.3.10",
  "futures-core",
@@ -8691,7 +8692,7 @@ dependencies = [
 [[package]]
 name = "sp-version"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "impl-serde",
  "parity-scale-codec",
@@ -8703,7 +8704,7 @@ dependencies = [
 [[package]]
 name = "sp-wasm-interface"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "impl-trait-for-tuples 0.2.0",
  "parity-scale-codec",
@@ -8835,7 +8836,7 @@ dependencies = [
 [[package]]
 name = "substrate-browser-utils"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "chrono",
  "console_error_panic_hook",
@@ -8861,7 +8862,7 @@ dependencies = [
 [[package]]
 name = "substrate-build-script-utils"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "platforms",
 ]
@@ -8869,7 +8870,7 @@ dependencies = [
 [[package]]
 name = "substrate-frame-rpc-system"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "frame-system-rpc-runtime-api",
  "futures 0.3.10",
@@ -8892,7 +8893,7 @@ dependencies = [
 [[package]]
 name = "substrate-prometheus-endpoint"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "async-std",
  "derive_more",
@@ -8906,7 +8907,7 @@ dependencies = [
 [[package]]
 name = "substrate-test-client"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "futures 0.1.29",
  "futures 0.3.10",
@@ -8933,7 +8934,7 @@ dependencies = [
 [[package]]
 name = "substrate-test-utils"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "futures 0.3.10",
  "substrate-test-utils-derive",
@@ -8943,7 +8944,7 @@ dependencies = [
 [[package]]
 name = "substrate-test-utils-derive"
 version = "0.8.1"
-source = "git+https://github.com/paritytech/substrate#1334eb7224185b0c5f4016378842695fef036a13"
+source = "git+https://github.com/paritytech/substrate#c2aa42566437dbf0697e6f545c7cc7cb50722b11"
 dependencies = [
  "proc-macro-crate",
  "quote 1.0.7",
diff --git a/polkadot/cli/Cargo.toml b/polkadot/cli/Cargo.toml
index 78b45403d24..27dc1b21dfd 100644
--- a/polkadot/cli/Cargo.toml
+++ b/polkadot/cli/Cargo.toml
@@ -19,6 +19,7 @@ thiserror = "1.0.23"
 structopt = { version = "0.3.21", optional = true }
 wasm-bindgen = { version = "0.2.69", optional = true }
 wasm-bindgen-futures = { version = "0.4.19", optional = true }
+futures = "0.3.10"
 
 service = { package = "polkadot-service", path = "../node/service", default-features = false, optional = true }
 polkadot-parachain = { path = "../parachain", optional = true }
diff --git a/polkadot/cli/src/command.rs b/polkadot/cli/src/command.rs
index 45e0750c3fb..a0fc04c4715 100644
--- a/polkadot/cli/src/command.rs
+++ b/polkadot/cli/src/command.rs
@@ -18,6 +18,7 @@ use log::info;
 use service::{IdentifyVariant, self};
 use sc_cli::{SubstrateCli, RuntimeVersion, Role};
 use crate::cli::{Cli, Subcommand};
+use futures::future::TryFutureExt;
 
 #[derive(thiserror::Error, Debug)]
 pub enum Error {
@@ -143,7 +144,8 @@ pub fn run() -> Result<()> {
 
 	match &cli.subcommand {
 		None => {
-			let runner = cli.create_runner(&cli.run.base)?;
+			let runner = cli.create_runner(&cli.run.base)
+				.map_err(Error::from)?;
 			let chain_spec = &runner.config().chain_spec;
 
 			set_default_ss58_version(chain_spec);
@@ -164,38 +166,37 @@ pub fn run() -> Result<()> {
 
 			let jaeger_agent = cli.run.jaeger_agent;
 
-			Ok(runner.run_node_until_exit(move |config| async move {
+			runner.run_node_until_exit(move |config| async move {
 				let role = config.role.clone();
 
 				let task_manager = match role {
-					Role::Light => service::build_light(config).map(|(task_manager, _)| task_manager)
-					.map_err(|e| sc_service::Error::Other(e.to_string())),
+					Role::Light => service::build_light(config).map(|(task_manager, _)| task_manager),
 					_ => service::build_full(
 						config,
 						service::IsCollator::No,
 						grandpa_pause,
 						jaeger_agent,
 					).map(|full| full.task_manager)
-					.map_err(|e| sc_service::Error::Other(e.to_string()) )
-				};
-				task_manager
-			}).map_err(|e| -> sc_cli::Error { e.into() })?)
-
+				}?;
+				Ok::<_, Error>(task_manager)
+			})
 		},
 		Some(Subcommand::BuildSpec(cmd)) => {
 			let runner = cli.create_runner(cmd)?;
-			Ok(runner.sync_run(|config| cmd.run(config.chain_spec, config.network))?)
+			Ok(runner.sync_run(|config| {
+				cmd.run(config.chain_spec, config.network)
+			})?)
 		},
 		Some(Subcommand::CheckBlock(cmd)) => {
-			let runner = cli.create_runner(cmd)?;
+			let runner = cli.create_runner(cmd)
+				.map_err(Error::SubstrateCli)?;
 			let chain_spec = &runner.config().chain_spec;
 
 			set_default_ss58_version(chain_spec);
 
 			runner.async_run(|mut config| {
-				let (client, _, import_queue, task_manager) = service::new_chain_ops(&mut config, None)
-					.map_err(|e| sc_service::Error::Other(e.to_string()))?;
-				Ok((cmd.run(client, import_queue), task_manager))
+				let (client, _, import_queue, task_manager) = service::new_chain_ops(&mut config, None)?;
+				Ok((cmd.run(client, import_queue).map_err(Error::SubstrateCli), task_manager))
 			})
 		},
 		Some(Subcommand::ExportBlocks(cmd)) => {
@@ -204,11 +205,11 @@ pub fn run() -> Result<()> {
 
 			set_default_ss58_version(chain_spec);
 
-			runner.async_run(|mut config| {
+			Ok(runner.async_run(|mut config| {
 				let (client, _, _, task_manager) = service::new_chain_ops(&mut config, None)
-					.map_err(|e| sc_service::Error::Other(e.to_string()))?;
-				Ok((cmd.run(client, config.database), task_manager))
-			})
+					.map_err(Error::PolkadotService)?;
+				Ok((cmd.run(client, config.database).map_err(Error::SubstrateCli), task_manager))
+			})?)
 		},
 		Some(Subcommand::ExportState(cmd)) => {
 			let runner = cli.create_runner(cmd)?;
@@ -216,11 +217,10 @@ pub fn run() -> Result<()> {
 
 			set_default_ss58_version(chain_spec);
 
-			runner.async_run(|mut config| {
-				let (client, _, _, task_manager) = service::new_chain_ops(&mut config, None)
-					.map_err(|e| sc_service::Error::Other(e.to_string()))?;
-				Ok((cmd.run(client, config.chain_spec), task_manager))
-			})
+			Ok(runner.async_run(|mut config| {
+				let (client, _, _, task_manager) = service::new_chain_ops(&mut config, None)?;
+				Ok((cmd.run(client, config.chain_spec).map_err(Error::SubstrateCli), task_manager))
+			})?)
 		},
 		Some(Subcommand::ImportBlocks(cmd)) => {
 			let runner = cli.create_runner(cmd)?;
@@ -228,16 +228,14 @@ pub fn run() -> Result<()> {
 
 			set_default_ss58_version(chain_spec);
 
-			runner.async_run(|mut config| {
-				let (client, _, import_queue, task_manager) = service::new_chain_ops(&mut config, None)
-					.map_err(|e| sc_service::Error::Other(e.to_string()))?;
-				Ok((cmd.run(client, import_queue), task_manager))
-			})
+			Ok(runner.async_run(|mut config| {
+				let (client, _, import_queue, task_manager) = service::new_chain_ops(&mut config, None)?;
+				Ok((cmd.run(client, import_queue).map_err(Error::SubstrateCli), task_manager))
+			})?)
 		},
 		Some(Subcommand::PurgeChain(cmd)) => {
 			let runner = cli.create_runner(cmd)?;
-			Ok(runner.sync_run(|config| cmd.run(config.database))
-				.map_err(|e| sc_service::Error::Other(e.to_string()))?)
+			Ok(runner.sync_run(|config| cmd.run(config.database))?)
 		},
 		Some(Subcommand::Revert(cmd)) => {
 			let runner = cli.create_runner(cmd)?;
@@ -245,11 +243,10 @@ pub fn run() -> Result<()> {
 
 			set_default_ss58_version(chain_spec);
 
-			runner.async_run(|mut config| {
-				let (client, backend, _, task_manager) = service::new_chain_ops(&mut config, None)
-					.map_err(|e| sc_service::Error::Other(e.to_string()))?;
-				Ok((cmd.run(client, backend), task_manager))
-			})
+			Ok(runner.async_run(|mut config| {
+				let (client, backend, _, task_manager) = service::new_chain_ops(&mut config, None)?;
+				Ok((cmd.run(client, backend).map_err(Error::SubstrateCli),task_manager))
+			})?)
 		},
 		Some(Subcommand::ValidationWorker(cmd)) => {
 			let _ = sc_cli::init_logger(
@@ -263,7 +260,7 @@ pub fn run() -> Result<()> {
 			);
 
 			if cfg!(feature = "browser") || cfg!(target_os = "android") {
-				Err(sc_cli::Error::Input("Cannot run validation worker in browser".into()))
+				Err(sc_cli::Error::Input("Cannot run validation worker in browser".into()).into())
 			} else {
 				#[cfg(not(any(target_os = "android", feature = "browser")))]
 				polkadot_parachain::wasm_executor::run_worker(&cmd.mem_id)?;
@@ -276,11 +273,12 @@ pub fn run() -> Result<()> {
 
 			set_default_ss58_version(chain_spec);
 
-			runner.sync_run(|config| {
+			Ok(runner.sync_run(|config| {
 				cmd.run::<service::kusama_runtime::Block, service::KusamaExecutor>(config)
-			})
+				.map_err(|e| Error::SubstrateCli(e))
+			})?)
 		},
-		Some(Subcommand::Key(cmd)) => cmd.run(&cli),
+		Some(Subcommand::Key(cmd)) => Ok(cmd.run(&cli)?),
 	}?;
 	Ok(())
 }
diff --git a/polkadot/parachain/test-parachains/adder/collator/src/main.rs b/polkadot/parachain/test-parachains/adder/collator/src/main.rs
index 09998e9bc93..4016e6d7d7f 100644
--- a/polkadot/parachain/test-parachains/adder/collator/src/main.rs
+++ b/polkadot/parachain/test-parachains/adder/collator/src/main.rs
@@ -19,7 +19,8 @@
 use polkadot_node_primitives::CollationGenerationConfig;
 use polkadot_node_subsystem::messages::{CollationGenerationMessage, CollatorProtocolMessage};
 use polkadot_primitives::v1::Id as ParaId;
-use sc_cli::{Result, Error as SubstrateCliError, Role, SubstrateCli};
+use polkadot_cli::{Error, Result};
+use sc_cli::{Error as SubstrateCliError, Role, SubstrateCli};
 use sp_core::hexdisplay::HexDisplay;
 use test_parachain_adder_collator::Collator;
 
@@ -37,7 +38,7 @@ fn main() -> Result<()> {
 			let collator = Collator::new();
 			println!("0x{:?}", HexDisplay::from(&collator.genesis_head()));
 
-			Ok(())
+			Ok::<_, Error>(())
 		}
 		Some(cli::Subcommand::ExportGenesisWasm(_params)) => {
 			let collator = Collator::new();
-- 
GitLab