From 7dfb666ea5bc88acb77618967fc836708a0ced3f Mon Sep 17 00:00:00 2001
From: Cecile Tonglet <cecile@parity.io>
Date: Thu, 11 Mar 2021 12:11:04 +0100
Subject: [PATCH] Polkadot companion for #8143 (#2535)

Companion for https://github.com/paritytech/substrate/pull/8143
---
 polkadot/Cargo.lock                           | 297 +++++++++---------
 polkadot/cli/src/browser.rs                   |  11 +-
 polkadot/cli/src/command.rs                   |   3 +-
 polkadot/node/core/proposer/Cargo.toml        |   1 +
 polkadot/node/core/proposer/src/lib.rs        |   3 +
 polkadot/node/service/src/lib.rs              | 112 +++++--
 polkadot/node/test/service/src/lib.rs         |   2 +-
 .../adder/collator/src/main.rs                |   1 +
 8 files changed, 245 insertions(+), 185 deletions(-)

diff --git a/polkadot/Cargo.lock b/polkadot/Cargo.lock
index b02fcf75f77..a3e44f66084 100644
--- a/polkadot/Cargo.lock
+++ b/polkadot/Cargo.lock
@@ -1646,7 +1646,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
 [[package]]
 name = "fork-tree"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "parity-scale-codec",
 ]
@@ -1664,7 +1664,7 @@ dependencies = [
 [[package]]
 name = "frame-benchmarking"
 version = "3.1.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -1683,7 +1683,7 @@ dependencies = [
 [[package]]
 name = "frame-benchmarking-cli"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "Inflector",
  "chrono",
@@ -1706,7 +1706,7 @@ dependencies = [
 [[package]]
 name = "frame-executive"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -1722,7 +1722,7 @@ dependencies = [
 [[package]]
 name = "frame-metadata"
 version = "13.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "parity-scale-codec",
  "serde",
@@ -1733,7 +1733,7 @@ dependencies = [
 [[package]]
 name = "frame-support"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "bitflags",
  "frame-metadata",
@@ -1759,7 +1759,7 @@ dependencies = [
 [[package]]
 name = "frame-support-procedural"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "Inflector",
  "frame-support-procedural-tools",
@@ -1771,7 +1771,7 @@ dependencies = [
 [[package]]
 name = "frame-support-procedural-tools"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-support-procedural-tools-derive",
  "proc-macro-crate 1.0.0",
@@ -1783,7 +1783,7 @@ dependencies = [
 [[package]]
 name = "frame-support-procedural-tools-derive"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1793,7 +1793,7 @@ dependencies = [
 [[package]]
 name = "frame-support-test"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-metadata",
  "frame-support",
@@ -1814,7 +1814,7 @@ dependencies = [
 [[package]]
 name = "frame-system"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-support",
  "impl-trait-for-tuples",
@@ -1831,7 +1831,7 @@ dependencies = [
 [[package]]
 name = "frame-system-benchmarking"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -1845,7 +1845,7 @@ dependencies = [
 [[package]]
 name = "frame-system-rpc-runtime-api"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "parity-scale-codec",
  "sp-api",
@@ -1854,7 +1854,7 @@ dependencies = [
 [[package]]
 name = "frame-try-runtime"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-support",
  "parity-scale-codec",
@@ -4156,7 +4156,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b"
 [[package]]
 name = "pallet-authority-discovery"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4172,7 +4172,7 @@ dependencies = [
 [[package]]
 name = "pallet-authorship"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4187,7 +4187,7 @@ dependencies = [
 [[package]]
 name = "pallet-babe"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4212,7 +4212,7 @@ dependencies = [
 [[package]]
 name = "pallet-balances"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4227,7 +4227,7 @@ dependencies = [
 [[package]]
 name = "pallet-bounties"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4242,7 +4242,7 @@ dependencies = [
 [[package]]
 name = "pallet-collective"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4259,7 +4259,7 @@ dependencies = [
 [[package]]
 name = "pallet-democracy"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4274,7 +4274,7 @@ dependencies = [
 [[package]]
 name = "pallet-election-provider-multi-phase"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4295,7 +4295,7 @@ dependencies = [
 [[package]]
 name = "pallet-elections-phragmen"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4311,7 +4311,7 @@ dependencies = [
 [[package]]
 name = "pallet-grandpa"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4333,7 +4333,7 @@ dependencies = [
 [[package]]
 name = "pallet-identity"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "enumflags2",
  "frame-benchmarking",
@@ -4349,7 +4349,7 @@ dependencies = [
 [[package]]
 name = "pallet-im-online"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4369,7 +4369,7 @@ dependencies = [
 [[package]]
 name = "pallet-indices"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4386,7 +4386,7 @@ dependencies = [
 [[package]]
 name = "pallet-membership"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4400,7 +4400,7 @@ dependencies = [
 [[package]]
 name = "pallet-multisig"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4416,7 +4416,7 @@ dependencies = [
 [[package]]
 name = "pallet-nicks"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4430,7 +4430,7 @@ dependencies = [
 [[package]]
 name = "pallet-offences"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4446,7 +4446,7 @@ dependencies = [
 [[package]]
 name = "pallet-offences-benchmarking"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4468,7 +4468,7 @@ dependencies = [
 [[package]]
 name = "pallet-proxy"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4484,7 +4484,7 @@ dependencies = [
 [[package]]
 name = "pallet-randomness-collective-flip"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4497,7 +4497,7 @@ dependencies = [
 [[package]]
 name = "pallet-recovery"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "enumflags2",
  "frame-support",
@@ -4512,7 +4512,7 @@ dependencies = [
 [[package]]
 name = "pallet-scheduler"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4528,7 +4528,7 @@ dependencies = [
 [[package]]
 name = "pallet-session"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4548,7 +4548,7 @@ dependencies = [
 [[package]]
 name = "pallet-session-benchmarking"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4564,7 +4564,7 @@ dependencies = [
 [[package]]
 name = "pallet-society"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4578,7 +4578,7 @@ dependencies = [
 [[package]]
 name = "pallet-staking"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4602,7 +4602,7 @@ dependencies = [
 [[package]]
 name = "pallet-staking-reward-curve"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "proc-macro-crate 1.0.0",
  "proc-macro2",
@@ -4613,7 +4613,7 @@ dependencies = [
 [[package]]
 name = "pallet-sudo"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4627,7 +4627,7 @@ dependencies = [
 [[package]]
 name = "pallet-timestamp"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4646,7 +4646,7 @@ dependencies = [
 [[package]]
 name = "pallet-tips"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4661,7 +4661,7 @@ dependencies = [
 [[package]]
 name = "pallet-transaction-payment"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4677,7 +4677,7 @@ dependencies = [
 [[package]]
 name = "pallet-transaction-payment-rpc"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "jsonrpc-core",
  "jsonrpc-core-client",
@@ -4694,7 +4694,7 @@ dependencies = [
 [[package]]
 name = "pallet-transaction-payment-rpc-runtime-api"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "pallet-transaction-payment",
  "parity-scale-codec",
@@ -4705,7 +4705,7 @@ dependencies = [
 [[package]]
 name = "pallet-treasury"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4721,7 +4721,7 @@ dependencies = [
 [[package]]
 name = "pallet-utility"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4737,7 +4737,7 @@ dependencies = [
 [[package]]
 name = "pallet-vesting"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "enumflags2",
  "frame-benchmarking",
@@ -5578,6 +5578,7 @@ dependencies = [
  "sc-basic-authorship",
  "sc-block-builder",
  "sc-client-api",
+ "sc-telemetry",
  "sp-api",
  "sp-blockchain",
  "sp-consensus",
@@ -6929,7 +6930,7 @@ dependencies = [
 [[package]]
 name = "remote-externalities"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "env_logger 0.8.2",
  "hex-literal",
@@ -7185,7 +7186,7 @@ dependencies = [
 [[package]]
 name = "sc-authority-discovery"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "async-trait",
  "derive_more",
@@ -7213,7 +7214,7 @@ dependencies = [
 [[package]]
 name = "sc-basic-authorship"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "futures 0.3.12",
  "futures-timer 3.0.2",
@@ -7236,7 +7237,7 @@ dependencies = [
 [[package]]
 name = "sc-block-builder"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "parity-scale-codec",
  "sc-client-api",
@@ -7252,7 +7253,7 @@ dependencies = [
 [[package]]
 name = "sc-chain-spec"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "impl-trait-for-tuples",
  "parity-scale-codec",
@@ -7273,7 +7274,7 @@ dependencies = [
 [[package]]
 name = "sc-chain-spec-derive"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "proc-macro-crate 1.0.0",
  "proc-macro2",
@@ -7284,7 +7285,7 @@ dependencies = [
 [[package]]
 name = "sc-cli"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "chrono",
  "fdlimit",
@@ -7322,7 +7323,7 @@ dependencies = [
 [[package]]
 name = "sc-client-api"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "derive_more",
  "fnv",
@@ -7356,7 +7357,7 @@ dependencies = [
 [[package]]
 name = "sc-client-db"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "blake2-rfc",
  "hash-db",
@@ -7386,7 +7387,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "sc-client-api",
  "sp-blockchain",
@@ -7397,7 +7398,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-babe"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "derive_more",
  "fork-tree",
@@ -7443,7 +7444,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-babe-rpc"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "derive_more",
  "futures 0.3.12",
@@ -7467,7 +7468,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-epochs"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "fork-tree",
  "parity-scale-codec",
@@ -7480,7 +7481,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-slots"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "futures 0.3.12",
  "futures-timer 3.0.2",
@@ -7506,7 +7507,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-uncles"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "log",
  "sc-client-api",
@@ -7520,7 +7521,7 @@ dependencies = [
 [[package]]
 name = "sc-executor"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "derive_more",
  "lazy_static",
@@ -7549,7 +7550,7 @@ dependencies = [
 [[package]]
 name = "sc-executor-common"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "derive_more",
  "parity-scale-codec",
@@ -7565,7 +7566,7 @@ dependencies = [
 [[package]]
 name = "sc-executor-wasmi"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "log",
  "parity-scale-codec",
@@ -7580,7 +7581,7 @@ dependencies = [
 [[package]]
 name = "sc-executor-wasmtime"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "log",
  "parity-scale-codec",
@@ -7598,7 +7599,7 @@ dependencies = [
 [[package]]
 name = "sc-finality-grandpa"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "derive_more",
  "dyn-clone",
@@ -7637,7 +7638,7 @@ dependencies = [
 [[package]]
 name = "sc-finality-grandpa-rpc"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "derive_more",
  "finality-grandpa",
@@ -7661,7 +7662,7 @@ dependencies = [
 [[package]]
 name = "sc-finality-grandpa-warp-sync"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "derive_more",
  "futures 0.3.12",
@@ -7682,7 +7683,7 @@ dependencies = [
 [[package]]
 name = "sc-informant"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "ansi_term 0.12.1",
  "futures 0.3.12",
@@ -7700,7 +7701,7 @@ dependencies = [
 [[package]]
 name = "sc-keystore"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "async-trait",
  "derive_more",
@@ -7720,7 +7721,7 @@ dependencies = [
 [[package]]
 name = "sc-light"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "hash-db",
  "lazy_static",
@@ -7739,7 +7740,7 @@ dependencies = [
 [[package]]
 name = "sc-network"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "async-std",
  "async-trait",
@@ -7792,7 +7793,7 @@ dependencies = [
 [[package]]
 name = "sc-network-gossip"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "futures 0.3.12",
  "futures-timer 3.0.2",
@@ -7808,7 +7809,7 @@ dependencies = [
 [[package]]
 name = "sc-offchain"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "bytes 0.5.6",
  "fnv",
@@ -7836,7 +7837,7 @@ dependencies = [
 [[package]]
 name = "sc-peerset"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "futures 0.3.12",
  "libp2p",
@@ -7849,7 +7850,7 @@ dependencies = [
 [[package]]
 name = "sc-proposer-metrics"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "log",
  "substrate-prometheus-endpoint",
@@ -7858,7 +7859,7 @@ dependencies = [
 [[package]]
 name = "sc-rpc"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "futures 0.3.12",
  "hash-db",
@@ -7892,7 +7893,7 @@ dependencies = [
 [[package]]
 name = "sc-rpc-api"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "derive_more",
  "futures 0.3.12",
@@ -7916,7 +7917,7 @@ dependencies = [
 [[package]]
 name = "sc-rpc-server"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "futures 0.1.29",
  "jsonrpc-core",
@@ -7934,7 +7935,7 @@ dependencies = [
 [[package]]
 name = "sc-service"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "directories",
  "exit-future",
@@ -7997,7 +7998,7 @@ dependencies = [
 [[package]]
 name = "sc-state-db"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "log",
  "parity-scale-codec",
@@ -8012,7 +8013,7 @@ dependencies = [
 [[package]]
 name = "sc-sync-state-rpc"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "jsonrpc-core",
  "jsonrpc-core-client",
@@ -8032,7 +8033,7 @@ dependencies = [
 [[package]]
 name = "sc-telemetry"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "chrono",
  "futures 0.3.12",
@@ -8043,10 +8044,8 @@ dependencies = [
  "rand 0.7.3",
  "serde",
  "serde_json",
- "sp-utils",
  "take_mut",
- "tracing",
- "tracing-subscriber",
+ "thiserror",
  "void",
  "wasm-timer",
 ]
@@ -8054,7 +8053,7 @@ dependencies = [
 [[package]]
 name = "sc-tracing"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "ansi_term 0.12.1",
  "atty",
@@ -8065,7 +8064,6 @@ dependencies = [
  "parking_lot 0.11.1",
  "regex",
  "rustc-hash",
- "sc-telemetry",
  "sc-tracing-proc-macro",
  "serde",
  "serde_json",
@@ -8082,7 +8080,7 @@ dependencies = [
 [[package]]
 name = "sc-tracing-proc-macro"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "proc-macro-crate 1.0.0",
  "proc-macro2",
@@ -8093,7 +8091,7 @@ dependencies = [
 [[package]]
 name = "sc-transaction-graph"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "derive_more",
  "futures 0.3.12",
@@ -8115,7 +8113,7 @@ dependencies = [
 [[package]]
 name = "sc-transaction-pool"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "futures 0.3.12",
  "futures-diagnose",
@@ -8521,7 +8519,7 @@ dependencies = [
 [[package]]
 name = "sp-allocator"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "log",
  "sp-core",
@@ -8533,7 +8531,7 @@ dependencies = [
 [[package]]
 name = "sp-api"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "hash-db",
  "log",
@@ -8550,7 +8548,7 @@ dependencies = [
 [[package]]
 name = "sp-api-proc-macro"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "blake2-rfc",
  "proc-macro-crate 1.0.0",
@@ -8562,7 +8560,7 @@ dependencies = [
 [[package]]
 name = "sp-application-crypto"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "parity-scale-codec",
  "serde",
@@ -8574,7 +8572,7 @@ dependencies = [
 [[package]]
 name = "sp-arithmetic"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "integer-sqrt",
  "num-traits",
@@ -8587,7 +8585,7 @@ dependencies = [
 [[package]]
 name = "sp-authority-discovery"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "parity-scale-codec",
  "sp-api",
@@ -8599,7 +8597,7 @@ dependencies = [
 [[package]]
 name = "sp-authorship"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "parity-scale-codec",
  "sp-inherents",
@@ -8610,7 +8608,7 @@ dependencies = [
 [[package]]
 name = "sp-block-builder"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "parity-scale-codec",
  "sp-api",
@@ -8622,7 +8620,7 @@ dependencies = [
 [[package]]
 name = "sp-blockchain"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "futures 0.3.12",
  "log",
@@ -8640,7 +8638,7 @@ dependencies = [
 [[package]]
 name = "sp-chain-spec"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "serde",
  "serde_json",
@@ -8649,7 +8647,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "futures 0.3.12",
  "futures-timer 3.0.2",
@@ -8675,7 +8673,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus-babe"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "merlin",
  "parity-scale-codec",
@@ -8696,7 +8694,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus-slots"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "parity-scale-codec",
  "sp-arithmetic",
@@ -8706,7 +8704,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus-vrf"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "parity-scale-codec",
  "schnorrkel",
@@ -8718,7 +8716,7 @@ dependencies = [
 [[package]]
 name = "sp-core"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "base58",
  "blake2-rfc",
@@ -8762,7 +8760,7 @@ dependencies = [
 [[package]]
 name = "sp-database"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "kvdb",
  "parking_lot 0.11.1",
@@ -8771,7 +8769,7 @@ dependencies = [
 [[package]]
 name = "sp-debug-derive"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -8781,7 +8779,7 @@ dependencies = [
 [[package]]
 name = "sp-election-providers"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "parity-scale-codec",
  "sp-arithmetic",
@@ -8792,7 +8790,7 @@ dependencies = [
 [[package]]
 name = "sp-externalities"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "environmental",
  "parity-scale-codec",
@@ -8803,7 +8801,7 @@ dependencies = [
 [[package]]
 name = "sp-finality-grandpa"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "finality-grandpa",
  "log",
@@ -8820,7 +8818,7 @@ dependencies = [
 [[package]]
 name = "sp-inherents"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "parity-scale-codec",
  "parking_lot 0.11.1",
@@ -8832,7 +8830,7 @@ dependencies = [
 [[package]]
 name = "sp-io"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "futures 0.3.12",
  "hash-db",
@@ -8856,7 +8854,7 @@ dependencies = [
 [[package]]
 name = "sp-keyring"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "lazy_static",
  "sp-core",
@@ -8867,7 +8865,7 @@ dependencies = [
 [[package]]
 name = "sp-keystore"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "async-trait",
  "derive_more",
@@ -8884,7 +8882,7 @@ dependencies = [
 [[package]]
 name = "sp-npos-elections"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "parity-scale-codec",
  "serde",
@@ -8897,7 +8895,7 @@ dependencies = [
 [[package]]
 name = "sp-npos-elections-compact"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "proc-macro-crate 1.0.0",
  "proc-macro2",
@@ -8908,7 +8906,7 @@ dependencies = [
 [[package]]
 name = "sp-offchain"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "sp-api",
  "sp-core",
@@ -8918,7 +8916,7 @@ dependencies = [
 [[package]]
 name = "sp-panic-handler"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "backtrace",
 ]
@@ -8926,7 +8924,7 @@ dependencies = [
 [[package]]
 name = "sp-rpc"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "serde",
  "sp-core",
@@ -8935,7 +8933,7 @@ dependencies = [
 [[package]]
 name = "sp-runtime"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "either",
  "hash256-std-hasher",
@@ -8956,7 +8954,7 @@ dependencies = [
 [[package]]
 name = "sp-runtime-interface"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "impl-trait-for-tuples",
  "parity-scale-codec",
@@ -8973,7 +8971,7 @@ dependencies = [
 [[package]]
 name = "sp-runtime-interface-proc-macro"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "Inflector",
  "proc-macro-crate 1.0.0",
@@ -8985,7 +8983,7 @@ dependencies = [
 [[package]]
 name = "sp-serializer"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "serde",
  "serde_json",
@@ -8994,7 +8992,7 @@ dependencies = [
 [[package]]
 name = "sp-session"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "parity-scale-codec",
  "sp-api",
@@ -9007,7 +9005,7 @@ dependencies = [
 [[package]]
 name = "sp-staking"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "parity-scale-codec",
  "sp-runtime",
@@ -9017,7 +9015,7 @@ dependencies = [
 [[package]]
 name = "sp-state-machine"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "hash-db",
  "log",
@@ -9039,12 +9037,12 @@ dependencies = [
 [[package]]
 name = "sp-std"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 
 [[package]]
 name = "sp-storage"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "impl-serde",
  "parity-scale-codec",
@@ -9057,7 +9055,7 @@ dependencies = [
 [[package]]
 name = "sp-tasks"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "log",
  "sp-core",
@@ -9070,7 +9068,7 @@ dependencies = [
 [[package]]
 name = "sp-timestamp"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "impl-trait-for-tuples",
  "parity-scale-codec",
@@ -9084,7 +9082,7 @@ dependencies = [
 [[package]]
 name = "sp-tracing"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "log",
  "parity-scale-codec",
@@ -9097,7 +9095,7 @@ dependencies = [
 [[package]]
 name = "sp-transaction-pool"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "derive_more",
  "futures 0.3.12",
@@ -9113,7 +9111,7 @@ dependencies = [
 [[package]]
 name = "sp-trie"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "hash-db",
  "memory-db",
@@ -9127,7 +9125,7 @@ dependencies = [
 [[package]]
 name = "sp-utils"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "futures 0.3.12",
  "futures-core",
@@ -9139,7 +9137,7 @@ dependencies = [
 [[package]]
 name = "sp-version"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "impl-serde",
  "parity-scale-codec",
@@ -9151,7 +9149,7 @@ dependencies = [
 [[package]]
 name = "sp-wasm-interface"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "impl-trait-for-tuples",
  "parity-scale-codec",
@@ -9283,7 +9281,7 @@ dependencies = [
 [[package]]
 name = "substrate-browser-utils"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "chrono",
  "console_error_panic_hook",
@@ -9300,7 +9298,6 @@ dependencies = [
  "sc-informant",
  "sc-network",
  "sc-service",
- "sc-telemetry",
  "sc-tracing",
  "sp-database",
  "wasm-bindgen",
@@ -9310,7 +9307,7 @@ dependencies = [
 [[package]]
 name = "substrate-build-script-utils"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "platforms",
 ]
@@ -9318,7 +9315,7 @@ dependencies = [
 [[package]]
 name = "substrate-frame-rpc-system"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-system-rpc-runtime-api",
  "futures 0.3.12",
@@ -9341,7 +9338,7 @@ dependencies = [
 [[package]]
 name = "substrate-prometheus-endpoint"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "async-std",
  "derive_more",
@@ -9355,7 +9352,7 @@ dependencies = [
 [[package]]
 name = "substrate-test-client"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "futures 0.1.29",
  "futures 0.3.12",
@@ -9383,7 +9380,7 @@ dependencies = [
 [[package]]
 name = "substrate-test-utils"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "futures 0.3.12",
  "substrate-test-utils-derive",
@@ -9393,7 +9390,7 @@ dependencies = [
 [[package]]
 name = "substrate-test-utils-derive"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "proc-macro-crate 1.0.0",
  "quote",
@@ -10076,7 +10073,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382"
 [[package]]
 name = "try-runtime-cli"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#b24c43af1a77168feed445136ea4569f1d132c3a"
+source = "git+https://github.com/paritytech/substrate#6ac86d545f6da8e4afc373dc0876c3e7ba79e51b"
 dependencies = [
  "frame-try-runtime",
  "log",
diff --git a/polkadot/cli/src/browser.rs b/polkadot/cli/src/browser.rs
index 9efea40f8b8..29dac5c4f2b 100644
--- a/polkadot/cli/src/browser.rs
+++ b/polkadot/cli/src/browser.rs
@@ -14,7 +14,7 @@
 // You should have received a copy of the GNU General Public License
 // along with Substrate.  If not, see <http://www.gnu.org/licenses/>.
 
-use browser_utils::{browser_configuration, init_logging_and_telemetry, set_console_error_panic_hook, Client};
+use browser_utils::{browser_configuration, init_logging, set_console_error_panic_hook, Client};
 use log::info;
 use wasm_bindgen::prelude::*;
 
@@ -26,12 +26,11 @@ pub async fn start_client(chain_spec: String, log_level: String) -> Result<Clien
 
 async fn start_inner(chain_spec: String, log_directives: String) -> Result<Client, Box<dyn std::error::Error>> {
 	set_console_error_panic_hook();
-	let telemetry_worker = init_logging_and_telemetry(&log_directives)?;
+	init_logging(&log_directives)?;
 
 	let chain_spec =
 		service::PolkadotChainSpec::from_json_bytes(chain_spec.as_bytes().to_vec()).map_err(|e| format!("{:?}", e))?;
-	let telemetry_handle = telemetry_worker.handle();
-	let config = browser_configuration(chain_spec, Some(telemetry_handle)).await?;
+	let config = browser_configuration(chain_spec).await?;
 
 	info!("Polkadot browser node");
 	info!("  version {}", config.impl_version);
@@ -41,9 +40,7 @@ async fn start_inner(chain_spec: String, log_directives: String) -> Result<Clien
 	info!("👤 Role: {}", config.display_role());
 
 	// Create the service. This is the most heavy initialization step.
-	let (task_manager, rpc_handlers, _) = service::build_light(config).map_err(|e| format!("{:?}", e))?;
-
-	task_manager.spawn_handle().spawn("telemetry", telemetry_worker.run());
+	let (task_manager, rpc_handlers) = service::build_light(config).map_err(|e| format!("{:?}", e))?;
 
 	Ok(browser_utils::start_client(task_manager, rpc_handlers))
 }
diff --git a/polkadot/cli/src/command.rs b/polkadot/cli/src/command.rs
index cb9e1bba2fc..f0e86f70be1 100644
--- a/polkadot/cli/src/command.rs
+++ b/polkadot/cli/src/command.rs
@@ -170,12 +170,13 @@ pub fn run() -> Result<()> {
 				let role = config.role.clone();
 
 				let task_manager = match role {
-					Role::Light => service::build_light(config).map(|(task_manager, _, _)| task_manager),
+					Role::Light => service::build_light(config).map(|(task_manager, _)| task_manager),
 					_ => service::build_full(
 						config,
 						service::IsCollator::No,
 						grandpa_pause,
 						jaeger_agent,
+						None,
 					).map(|full| full.task_manager)
 				}?;
 				Ok::<_, Error>(task_manager)
diff --git a/polkadot/node/core/proposer/Cargo.toml b/polkadot/node/core/proposer/Cargo.toml
index 555cd947ae2..7e337f6b5bd 100644
--- a/polkadot/node/core/proposer/Cargo.toml
+++ b/polkadot/node/core/proposer/Cargo.toml
@@ -14,6 +14,7 @@ polkadot-primitives = { path = "../../../primitives" }
 sc-basic-authorship = { git = "https://github.com/paritytech/substrate", branch = "master" }
 sc-block-builder = { git = "https://github.com/paritytech/substrate", branch = "master" }
 sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" }
+sc-telemetry = { git = "https://github.com/paritytech/substrate", branch = "master" }
 sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" }
 sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" }
 sp-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" }
diff --git a/polkadot/node/core/proposer/src/lib.rs b/polkadot/node/core/proposer/src/lib.rs
index 12d3b5324f9..241665b57de 100644
--- a/polkadot/node/core/proposer/src/lib.rs
+++ b/polkadot/node/core/proposer/src/lib.rs
@@ -29,6 +29,7 @@ use polkadot_primitives::v1::{
 	Block, Hash, Header,
 };
 use sc_block_builder::{BlockBuilderApi, BlockBuilderProvider};
+use sc_telemetry::TelemetryHandle;
 use sp_core::traits::SpawnNamed;
 use sp_api::{ApiExt, ProvideRuntimeApi};
 use sp_blockchain::HeaderBackend;
@@ -55,6 +56,7 @@ impl<TxPool, Backend, Client> ProposerFactory<TxPool, Backend, Client> {
 		transaction_pool: Arc<TxPool>,
 		overseer: OverseerHandler,
 		prometheus: Option<&PrometheusRegistry>,
+		telemetry: Option<TelemetryHandle>,
 	) -> Self {
 		ProposerFactory {
 			inner: sc_basic_authorship::ProposerFactory::new(
@@ -62,6 +64,7 @@ impl<TxPool, Backend, Client> ProposerFactory<TxPool, Backend, Client> {
 				client,
 				transaction_pool,
 				prometheus,
+				telemetry,
 			),
 			overseer,
 		}
diff --git a/polkadot/node/service/src/lib.rs b/polkadot/node/service/src/lib.rs
index 149f291f9c9..e3d0b579ed5 100644
--- a/polkadot/node/service/src/lib.rs
+++ b/polkadot/node/service/src/lib.rs
@@ -54,7 +54,7 @@ use std::sync::Arc;
 use prometheus_endpoint::Registry;
 use sc_executor::native_executor_instance;
 use service::RpcHandlers;
-use telemetry::{TelemetryConnectionNotifier, TelemetrySpan};
+use telemetry::{Telemetry, TelemetryWorker, TelemetryWorkerHandle};
 
 pub use self::client::{AbstractClient, Client, ClientHandle, ExecuteWithClient, RuntimeApiCollection};
 pub use chain_spec::{PolkadotChainSpec, KusamaChainSpec, WestendChainSpec, RococoChainSpec};
@@ -129,6 +129,9 @@ pub enum Error {
 	#[error(transparent)]
 	Prometheus(#[from] prometheus_endpoint::PrometheusError),
 
+	#[error(transparent)]
+	Telemetry(#[from] telemetry::Error),
+
 	#[error(transparent)]
 	Jaeger(#[from] polkadot_subsystem::jaeger::JaegerError),
 
@@ -206,7 +209,11 @@ type LightClient<RuntimeApi, Executor> =
 	service::TLightClientWithBackend<Block, RuntimeApi, Executor, LightBackend>;
 
 #[cfg(feature = "full-node")]
-fn new_partial<RuntimeApi, Executor>(config: &mut Configuration, jaeger_agent: Option<std::net::SocketAddr>) -> Result<
+fn new_partial<RuntimeApi, Executor>(
+	config: &mut Configuration,
+	jaeger_agent: Option<std::net::SocketAddr>,
+	telemetry_worker_handle: Option<TelemetryWorkerHandle>,
+) -> Result<
 	service::PartialComponents<
 		FullClient<RuntimeApi, Executor>, FullBackend, FullSelectChain,
 		consensus_common::DefaultImportQueue<Block, FullClient<RuntimeApi, Executor>>,
@@ -225,6 +232,7 @@ fn new_partial<RuntimeApi, Executor>(config: &mut Configuration, jaeger_agent: O
 			),
 			grandpa::SharedVoterState,
 			u64, // slot-duration
+			Option<Telemetry>,
 		)
 	>,
 	Error
@@ -240,10 +248,36 @@ fn new_partial<RuntimeApi, Executor>(config: &mut Configuration, jaeger_agent: O
 
 	let inherent_data_providers = inherents::InherentDataProviders::new();
 
+	let telemetry = config.telemetry_endpoints.clone()
+		.filter(|x| !x.is_empty())
+		.map(move |endpoints| -> Result<_, telemetry::Error> {
+			let (worker, mut worker_handle) = if let Some(worker_handle) = telemetry_worker_handle {
+				(None, worker_handle)
+			} else {
+				let worker = TelemetryWorker::new(16)?;
+				let worker_handle = worker.handle();
+				(Some(worker), worker_handle)
+			};
+			let telemetry = worker_handle.new_telemetry(endpoints);
+			Ok((worker, telemetry))
+		})
+		.transpose()?;
+
 	let (client, backend, keystore_container, task_manager) =
-		service::new_full_parts::<Block, RuntimeApi, Executor>(&config)?;
+		service::new_full_parts::<Block, RuntimeApi, Executor>(
+			&config,
+			telemetry.as_ref().map(|(_, telemetry)| telemetry.handle()),
+		)?;
 	let client = Arc::new(client);
 
+	let telemetry = telemetry
+		.map(|(worker, telemetry)| {
+			if let Some(worker) = worker {
+				task_manager.spawn_handle().spawn("telemetry", worker.run());
+			}
+			telemetry
+		});
+
 	jaeger_launch_collector_with_agent(task_manager.spawn_handle(), &*config, jaeger_agent)?;
 
 	let select_chain = sc_consensus::LongestChain::new(backend.clone());
@@ -268,6 +302,7 @@ fn new_partial<RuntimeApi, Executor>(config: &mut Configuration, jaeger_agent: O
 			&(client.clone() as Arc<_>),
 			select_chain.clone(),
 			grandpa_hard_forks,
+			telemetry.as_ref().map(|x| x.handle()),
 		)?;
 
 	let justification_import = grandpa_block_import.clone();
@@ -289,6 +324,7 @@ fn new_partial<RuntimeApi, Executor>(config: &mut Configuration, jaeger_agent: O
 		&task_manager.spawn_essential_handle(),
 		config.prometheus_registry(),
 		consensus_common::CanAuthorWithNativeVersion::new(client.executor().clone()),
+		telemetry.as_ref().map(|x| x.handle()),
 	)?;
 
 	let justification_stream = grandpa_link.justification_stream();
@@ -346,7 +382,7 @@ fn new_partial<RuntimeApi, Executor>(config: &mut Configuration, jaeger_agent: O
 		import_queue,
 		transaction_pool,
 		inherent_data_providers,
-		other: (rpc_extensions_builder, import_setup, rpc_setup, slot_duration)
+		other: (rpc_extensions_builder, import_setup, rpc_setup, slot_duration, telemetry)
 	})
 }
 
@@ -566,6 +602,7 @@ pub fn new_full<RuntimeApi, Executor>(
 	grandpa_pause: Option<(u32, u32)>,
 	jaeger_agent: Option<std::net::SocketAddr>,
 	isolation_strategy: IsolationStrategy,
+	telemetry_worker_handle: Option<TelemetryWorkerHandle>,
 ) -> Result<NewFull<Arc<FullClient<RuntimeApi, Executor>>>, Error>
 	where
 		RuntimeApi: ConstructRuntimeApi<Block, FullClient<RuntimeApi, Executor>> + Send + Sync + 'static,
@@ -576,9 +613,6 @@ pub fn new_full<RuntimeApi, Executor>(
 	#[cfg(feature = "real-overseer")]
 	info!("real-overseer feature is ENABLED");
 
-	let telemetry_span = TelemetrySpan::new();
-	let _telemetry_span_entered = telemetry_span.enter();
-
 	let role = config.role.clone();
 	let force_authoring = config.force_authoring;
 	let backoff_authoring_blocks =
@@ -600,8 +634,8 @@ pub fn new_full<RuntimeApi, Executor>(
 		import_queue,
 		transaction_pool,
 		inherent_data_providers,
-		other: (rpc_extensions_builder, import_setup, rpc_setup, slot_duration)
-	} = new_partial::<RuntimeApi, Executor>(&mut config, jaeger_agent)?;
+		other: (rpc_extensions_builder, import_setup, rpc_setup, slot_duration, mut telemetry)
+	} = new_partial::<RuntimeApi, Executor>(&mut config, jaeger_agent, telemetry_worker_handle)?;
 
 	let prometheus_registry = config.prometheus_registry().cloned();
 
@@ -705,7 +739,7 @@ pub fn new_full<RuntimeApi, Executor>(
 		cache_size: None, // default is fine.
 	};
 
-	let (rpc_handlers, telemetry_connection_notifier) = service::spawn_tasks(service::SpawnTasksParams {
+	let rpc_handlers = service::spawn_tasks(service::SpawnTasksParams {
 		config,
 		backend: backend.clone(),
 		client: client.clone(),
@@ -718,7 +752,7 @@ pub fn new_full<RuntimeApi, Executor>(
 		remote_blockchain: None,
 		network_status_sinks: network_status_sinks.clone(),
 		system_rpc_tx,
-		telemetry_span: Some(telemetry_span.clone()),
+		telemetry: telemetry.as_mut(),
 	})?;
 
 	let (block_import, link_half, babe_link) = import_setup;
@@ -830,6 +864,7 @@ pub fn new_full<RuntimeApi, Executor>(
 			transaction_pool,
 			overseer_handler.as_ref().ok_or(Error::AuthoritiesRequireRealOverseer)?.clone(),
 			prometheus_registry.as_ref(),
+			telemetry.as_ref().map(|x| x.handle()),
 		);
 
 		let babe_config = babe::BabeParams {
@@ -845,6 +880,7 @@ pub fn new_full<RuntimeApi, Executor>(
 			babe_link,
 			can_author_with,
 			block_proposal_slot_portion: babe::SlotProportion::new(2f32 / 3f32),
+			telemetry: telemetry.as_ref().map(|x| x.handle()),
 		};
 
 		let babe = babe::start_babe(babe_config)?;
@@ -867,6 +903,7 @@ pub fn new_full<RuntimeApi, Executor>(
 		observer_enabled: false,
 		keystore: keystore_opt,
 		is_authority: role.is_authority(),
+		telemetry: telemetry.as_ref().map(|x| x.handle()),
 	};
 
 	let enable_grandpa = !disable_grandpa;
@@ -914,10 +951,10 @@ pub fn new_full<RuntimeApi, Executor>(
 			config,
 			link: link_half,
 			network: network.clone(),
-			telemetry_on_connect: telemetry_connection_notifier.map(|x| x.on_connect_stream()),
 			voting_rule,
 			prometheus_registry: prometheus_registry.clone(),
 			shared_voter_state,
+			telemetry: telemetry.as_ref().map(|x| x.handle()),
 		};
 
 		task_manager.spawn_essential_handle().spawn_blocking(
@@ -943,7 +980,6 @@ pub fn new_full<RuntimeApi, Executor>(
 fn new_light<Runtime, Dispatch>(mut config: Configuration) -> Result<(
 	TaskManager,
 	RpcHandlers,
-	Option<TelemetryConnectionNotifier>,
 ), Error>
 	where
 		Runtime: 'static + Send + Sync + ConstructRuntimeApi<Block, LightClient<Runtime, Dispatch>>,
@@ -954,8 +990,26 @@ fn new_light<Runtime, Dispatch>(mut config: Configuration) -> Result<(
 	set_prometheus_registry(&mut config)?;
 	use sc_client_api::backend::RemoteBackend;
 
+	let telemetry = config.telemetry_endpoints.clone()
+		.filter(|x| !x.is_empty())
+		.map(|endpoints| -> Result<_, telemetry::Error> {
+			let worker = TelemetryWorker::new(16)?;
+			let telemetry = worker.handle().new_telemetry(endpoints);
+			Ok((worker, telemetry))
+		})
+		.transpose()?;
+
 	let (client, backend, keystore_container, mut task_manager, on_demand) =
-		service::new_light_parts::<Block, Runtime, Dispatch>(&config)?;
+		service::new_light_parts::<Block, Runtime, Dispatch>(
+			&config,
+			telemetry.as_ref().map(|(_, telemetry)| telemetry.handle()),
+		)?;
+
+	let mut telemetry = telemetry
+		.map(|(worker, telemetry)| {
+			task_manager.spawn_handle().spawn("telemetry", worker.run());
+			telemetry
+		});
 
 	let select_chain = sc_consensus::LongestChain::new(backend.clone());
 
@@ -971,6 +1025,7 @@ fn new_light<Runtime, Dispatch>(mut config: Configuration) -> Result<(
 		client.clone(),
 		&(client.clone() as Arc<_>),
 		select_chain.clone(),
+		telemetry.as_ref().map(|x| x.handle()),
 	)?;
 	let justification_import = grandpa_block_import.clone();
 
@@ -993,6 +1048,7 @@ fn new_light<Runtime, Dispatch>(mut config: Configuration) -> Result<(
 		&task_manager.spawn_essential_handle(),
 		config.prometheus_registry(),
 		consensus_common::NeverCanAuthor,
+		telemetry.as_ref().map(|x| x.handle()),
 	)?;
 
 	let (network, network_status_sinks, system_rpc_tx, network_starter) =
@@ -1024,10 +1080,7 @@ fn new_light<Runtime, Dispatch>(mut config: Configuration) -> Result<(
 
 	let rpc_extensions = polkadot_rpc::create_light(light_deps);
 
-	let telemetry_span = TelemetrySpan::new();
-	let _telemetry_span_entered = telemetry_span.enter();
-
-	let (rpc_handlers, telemetry_connection_notifier) = service::spawn_tasks(service::SpawnTasksParams {
+	let rpc_handlers = service::spawn_tasks(service::SpawnTasksParams {
 		on_demand: Some(on_demand),
 		remote_blockchain: Some(backend.remote_blockchain()),
 		rpc_extensions_builder: Box::new(service::NoopRpcExtensionBuilder(rpc_extensions)),
@@ -1040,17 +1093,20 @@ fn new_light<Runtime, Dispatch>(mut config: Configuration) -> Result<(
 		network,
 		network_status_sinks,
 		system_rpc_tx,
-		telemetry_span: Some(telemetry_span.clone()),
+		telemetry: telemetry.as_mut(),
 	})?;
 
 	network_starter.start_network();
 
-	Ok((task_manager, rpc_handlers, telemetry_connection_notifier))
+	Ok((task_manager, rpc_handlers))
 }
 
 /// Builds a new object suitable for chain operations.
 #[cfg(feature = "full-node")]
-pub fn new_chain_ops(mut config: &mut Configuration, jaeger_agent: Option<std::net::SocketAddr>) -> Result<
+pub fn new_chain_ops(
+	mut config: &mut Configuration,
+	jaeger_agent: Option<std::net::SocketAddr>,
+) -> Result<
 	(
 		Arc<Client>,
 		Arc<FullBackend>,
@@ -1063,19 +1119,19 @@ pub fn new_chain_ops(mut config: &mut Configuration, jaeger_agent: Option<std::n
 	config.keystore = service::config::KeystoreConfig::InMemory;
 	if config.chain_spec.is_rococo() {
 		let service::PartialComponents { client, backend, import_queue, task_manager, .. }
-			= new_partial::<rococo_runtime::RuntimeApi, RococoExecutor>(config, jaeger_agent)?;
+			= new_partial::<rococo_runtime::RuntimeApi, RococoExecutor>(config, jaeger_agent, None)?;
 		Ok((Arc::new(Client::Rococo(client)), backend, import_queue, task_manager))
 	} else if config.chain_spec.is_kusama() {
 		let service::PartialComponents { client, backend, import_queue, task_manager, .. }
-			= new_partial::<kusama_runtime::RuntimeApi, KusamaExecutor>(config, jaeger_agent)?;
+			= new_partial::<kusama_runtime::RuntimeApi, KusamaExecutor>(config, jaeger_agent, None)?;
 		Ok((Arc::new(Client::Kusama(client)), backend, import_queue, task_manager))
 	} else if config.chain_spec.is_westend() {
 		let service::PartialComponents { client, backend, import_queue, task_manager, .. }
-			= new_partial::<westend_runtime::RuntimeApi, WestendExecutor>(config, jaeger_agent)?;
+			= new_partial::<westend_runtime::RuntimeApi, WestendExecutor>(config, jaeger_agent, None)?;
 		Ok((Arc::new(Client::Westend(client)), backend, import_queue, task_manager))
 	} else {
 		let service::PartialComponents { client, backend, import_queue, task_manager, .. }
-			= new_partial::<polkadot_runtime::RuntimeApi, PolkadotExecutor>(config, jaeger_agent)?;
+			= new_partial::<polkadot_runtime::RuntimeApi, PolkadotExecutor>(config, jaeger_agent, None)?;
 		Ok((Arc::new(Client::Polkadot(client)), backend, import_queue, task_manager))
 	}
 }
@@ -1084,7 +1140,6 @@ pub fn new_chain_ops(mut config: &mut Configuration, jaeger_agent: Option<std::n
 pub fn build_light(config: Configuration) -> Result<(
 	TaskManager,
 	RpcHandlers,
-	Option<TelemetryConnectionNotifier>,
 ), Error> {
 	if config.chain_spec.is_rococo() {
 		new_light::<rococo_runtime::RuntimeApi, RococoExecutor>(config)
@@ -1103,6 +1158,7 @@ pub fn build_full(
 	is_collator: IsCollator,
 	grandpa_pause: Option<(u32, u32)>,
 	jaeger_agent: Option<std::net::SocketAddr>,
+	telemetry_worker_handle: Option<TelemetryWorkerHandle>,
 ) -> Result<NewFull<Client>, Error> {
 	let isolation_strategy = {
 		#[cfg(not(any(target_os = "android", target_os = "unknown")))]
@@ -1124,6 +1180,7 @@ pub fn build_full(
 			grandpa_pause,
 			jaeger_agent,
 			isolation_strategy,
+			telemetry_worker_handle,
 		).map(|full| full.with_client(Client::Rococo))
 	} else if config.chain_spec.is_kusama() {
 		new_full::<kusama_runtime::RuntimeApi, KusamaExecutor>(
@@ -1132,6 +1189,7 @@ pub fn build_full(
 			grandpa_pause,
 			jaeger_agent,
 			isolation_strategy,
+			telemetry_worker_handle,
 		).map(|full| full.with_client(Client::Kusama))
 	} else if config.chain_spec.is_westend() {
 		new_full::<westend_runtime::RuntimeApi, WestendExecutor>(
@@ -1140,6 +1198,7 @@ pub fn build_full(
 			grandpa_pause,
 			jaeger_agent,
 			isolation_strategy,
+			telemetry_worker_handle,
 		).map(|full| full.with_client(Client::Westend))
 	} else {
 		new_full::<polkadot_runtime::RuntimeApi, PolkadotExecutor>(
@@ -1148,6 +1207,7 @@ pub fn build_full(
 			grandpa_pause,
 			jaeger_agent,
 			isolation_strategy,
+			telemetry_worker_handle,
 		).map(|full| full.with_client(Client::Polkadot))
 	}
 }
diff --git a/polkadot/node/test/service/src/lib.rs b/polkadot/node/test/service/src/lib.rs
index cbf94fd8e02..81911fbef91 100644
--- a/polkadot/node/test/service/src/lib.rs
+++ b/polkadot/node/test/service/src/lib.rs
@@ -83,6 +83,7 @@ pub fn new_full(
 		None,
 		None,
 		polkadot_parachain::wasm_executor::IsolationStrategy::InProcess,
+		None,
 	)
 }
 
@@ -198,7 +199,6 @@ pub fn node_config(
 		base_path: Some(base_path),
 		informant_output_format: Default::default(),
 		disable_log_reloading: false,
-		telemetry_handle: None,
 	}
 }
 
diff --git a/polkadot/parachain/test-parachains/adder/collator/src/main.rs b/polkadot/parachain/test-parachains/adder/collator/src/main.rs
index 5ced3673e0c..382bc89ecd2 100644
--- a/polkadot/parachain/test-parachains/adder/collator/src/main.rs
+++ b/polkadot/parachain/test-parachains/adder/collator/src/main.rs
@@ -63,6 +63,7 @@ fn main() -> Result<()> {
 							polkadot_service::IsCollator::Yes(collator.collator_id()),
 							None,
 							None,
+							None,
 						).map_err(|e| e.to_string())?;
 						let mut overseer_handler = full_node
 							.overseer_handler
-- 
GitLab