From 7830bae524c5f135fb1217931082933f1204e8b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= <bkchr@users.noreply.github.com> Date: Mon, 3 May 2021 17:21:13 +0200 Subject: [PATCH] Companion for Substrate#8526 (#2845) * Update branch * Make it compile * Compile * gate approval-checking logic (#2470) * Fix build * Updates * Fix merge * Adds missing crate * Companion for Substrate#8386 https://github.com/paritytech/substrate/pull/8386 * Fix fix fix * Fix * Fix compilation * Rewrite to `ParachainsInherentDataProvider` * Make it compile * Renamings * Revert stuff * Remove stale file * Guide updates * Update node/core/parachains-inherent/src/lib.rs Co-authored-by: Andronik Ordian <write@reusable.software> * Update node/core/parachains-inherent/src/lib.rs Co-authored-by: Andronik Ordian <write@reusable.software> * Apply suggestions from code review * Reset accidental changes * More * Remove stale file * update Substrate Co-authored-by: Robert Habermeier <rphmeier@gmail.com> Co-authored-by: Andronik Ordian <write@reusable.software> Co-authored-by: parity-processbot <> --- polkadot/Cargo.lock | 339 +++++++++--------- polkadot/Cargo.toml | 2 +- polkadot/erasure-coding/Cargo.toml | 2 +- .../node/core/parachains-inherent/Cargo.toml | 18 + .../node/core/parachains-inherent/src/lib.rs | 138 +++++++ polkadot/node/core/proposer/Cargo.toml | 25 -- polkadot/node/core/proposer/src/lib.rs | 311 ---------------- polkadot/node/overseer/src/lib.rs | 1 - polkadot/node/service/Cargo.toml | 7 +- polkadot/node/service/src/chain_spec.rs | 2 +- polkadot/node/service/src/client.rs | 4 +- polkadot/node/service/src/lib.rs | 72 +++- .../src/node/subsystems-and-jobs.md | 23 +- .../src/types/overseer-protocol.md | 3 - polkadot/runtime/parachains/Cargo.toml | 2 +- .../runtime/parachains/src/paras_inherent.rs | 2 +- 16 files changed, 402 insertions(+), 549 deletions(-) create mode 100644 polkadot/node/core/parachains-inherent/Cargo.toml create mode 100644 polkadot/node/core/parachains-inherent/src/lib.rs delete mode 100644 polkadot/node/core/proposer/Cargo.toml delete mode 100644 polkadot/node/core/proposer/src/lib.rs diff --git a/polkadot/Cargo.lock b/polkadot/Cargo.lock index 22b46657bd6..03d27165118 100644 --- a/polkadot/Cargo.lock +++ b/polkadot/Cargo.lock @@ -336,9 +336,9 @@ checksum = "e91831deabf0d6d7ec49552e489aed63b7456a7a3c46cff62adad428110b0af0" [[package]] name = "async-trait" -version = "0.1.42" +version = "0.1.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d3a45e77e34375a7923b1e8febb049bb011f064714a8e17a1a616fef01da13d" +checksum = "36ea56748e10732c49404c153638a15ec3d6211ec5ff35d9bb20e13b93576adf" dependencies = [ "proc-macro2", "quote", @@ -1862,7 +1862,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "parity-scale-codec", ] @@ -1880,7 +1880,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "3.1.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-support", "frame-system", @@ -1899,7 +1899,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "Inflector", "chrono", @@ -1922,7 +1922,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-support", "frame-system", @@ -1935,7 +1935,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-support", "frame-system", @@ -1950,7 +1950,7 @@ dependencies = [ [[package]] name = "frame-metadata" version = "13.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "parity-scale-codec", "serde", @@ -1961,7 +1961,7 @@ dependencies = [ [[package]] name = "frame-support" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "bitflags", "frame-metadata", @@ -1987,7 +1987,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -1999,7 +1999,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.0.0", @@ -2011,7 +2011,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "proc-macro2", "quote", @@ -2021,7 +2021,7 @@ dependencies = [ [[package]] name = "frame-support-test" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-metadata", "frame-support", @@ -2031,7 +2031,6 @@ dependencies = [ "rustversion", "serde", "sp-core", - "sp-inherents", "sp-io", "sp-runtime", "sp-state-machine", @@ -2042,7 +2041,7 @@ dependencies = [ [[package]] name = "frame-system" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-support", "impl-trait-for-tuples", @@ -2059,7 +2058,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-benchmarking", "frame-support", @@ -2073,7 +2072,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "parity-scale-codec", "sp-api", @@ -2082,7 +2081,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-support", "parity-scale-codec", @@ -4465,7 +4464,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b" [[package]] name = "pallet-authority-discovery" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-support", "frame-system", @@ -4480,14 +4479,13 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-support", "frame-system", "impl-trait-for-tuples", "parity-scale-codec", "sp-authorship", - "sp-inherents", "sp-runtime", "sp-std", ] @@ -4495,7 +4493,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-benchmarking", "frame-support", @@ -4518,7 +4516,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-benchmarking", "frame-support", @@ -4547,7 +4545,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-benchmarking", "frame-support", @@ -4561,7 +4559,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-benchmarking", "frame-support", @@ -4577,7 +4575,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-benchmarking", "frame-support", @@ -4592,7 +4590,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4612,7 +4610,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-benchmarking", "frame-support", @@ -4629,7 +4627,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-benchmarking", "frame-support", @@ -4650,7 +4648,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4665,7 +4663,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-benchmarking", "frame-support", @@ -4684,7 +4682,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-benchmarking", "frame-support", @@ -4700,7 +4698,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-benchmarking", "frame-support", @@ -4715,7 +4713,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -4732,7 +4730,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-support", "frame-system", @@ -4748,7 +4746,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -4766,7 +4764,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-benchmarking", "frame-support", @@ -4781,7 +4779,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-support", "frame-system", @@ -4794,7 +4792,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-support", "frame-system", @@ -4810,7 +4808,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4832,7 +4830,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-benchmarking", "frame-support", @@ -4847,7 +4845,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-support", "frame-system", @@ -4860,7 +4858,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "enumflags2", "frame-support", @@ -4874,7 +4872,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-benchmarking", "frame-support", @@ -4889,7 +4887,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-support", "frame-system", @@ -4908,7 +4906,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-benchmarking", "frame-support", @@ -4924,7 +4922,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-support", "frame-system", @@ -4937,7 +4935,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -4961,7 +4959,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -4972,7 +4970,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-support", "frame-system", @@ -4985,7 +4983,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-benchmarking", "frame-support", @@ -5003,7 +5001,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-benchmarking", "frame-support", @@ -5018,7 +5016,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-support", "frame-system", @@ -5034,7 +5032,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5051,7 +5049,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5062,7 +5060,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-benchmarking", "frame-support", @@ -5078,7 +5076,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-benchmarking", "frame-support", @@ -5093,7 +5091,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5938,26 +5936,19 @@ dependencies = [ ] [[package]] -name = "polkadot-node-core-proposer" +name = "polkadot-node-core-parachains-inherent" version = "0.1.0" dependencies = [ + "async-trait", "futures 0.3.14", "futures-timer 3.0.2", "polkadot-node-subsystem", "polkadot-overseer", "polkadot-primitives", - "sc-basic-authorship", - "sc-block-builder", - "sc-client-api", - "sc-telemetry", - "sp-api", "sp-blockchain", - "sp-consensus", - "sp-core", "sp-inherents", "sp-runtime", - "sp-transaction-pool", - "substrate-prometheus-endpoint", + "thiserror", "tracing", ] @@ -6505,7 +6496,7 @@ dependencies = [ "polkadot-node-core-candidate-selection", "polkadot-node-core-candidate-validation", "polkadot-node-core-chain-api", - "polkadot-node-core-proposer", + "polkadot-node-core-parachains-inherent", "polkadot-node-core-provisioner", "polkadot-node-core-runtime-api", "polkadot-node-primitives", @@ -6521,6 +6512,7 @@ dependencies = [ "polkadot-test-client", "rococo-runtime", "sc-authority-discovery", + "sc-basic-authorship", "sc-block-builder", "sc-chain-spec", "sc-client-api", @@ -6528,6 +6520,7 @@ dependencies = [ "sc-consensus", "sc-consensus-babe", "sc-consensus-slots", + "sc-consensus-uncles", "sc-executor", "sc-finality-grandpa", "sc-finality-grandpa-warp-sync", @@ -6553,6 +6546,7 @@ dependencies = [ "sp-session", "sp-state-machine", "sp-storage", + "sp-timestamp", "sp-transaction-pool", "sp-trie", "substrate-prometheus-endpoint", @@ -7318,7 +7312,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "env_logger 0.8.2", "hex-literal", @@ -7603,7 +7597,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "async-trait", "derive_more", @@ -7632,7 +7626,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "futures 0.3.14", "futures-timer 3.0.2", @@ -7655,7 +7649,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -7671,7 +7665,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -7692,7 +7686,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -7703,7 +7697,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "chrono", "fdlimit", @@ -7741,7 +7735,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "derive_more", "fnv", @@ -7775,7 +7769,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "blake2-rfc", "hash-db", @@ -7805,7 +7799,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "parking_lot 0.11.1", "sc-client-api", @@ -7817,7 +7811,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "async-trait", "derive_more", @@ -7855,7 +7849,6 @@ dependencies = [ "sp-io", "sp-keystore", "sp-runtime", - "sp-timestamp", "sp-utils", "sp-version", "substrate-prometheus-endpoint", @@ -7864,7 +7857,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "derive_more", "futures 0.3.14", @@ -7888,7 +7881,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "fork-tree", "parity-scale-codec", @@ -7901,11 +7894,12 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "async-trait", "futures 0.3.14", "futures-timer 3.0.2", + "impl-trait-for-tuples", "log", "parity-scale-codec", "sc-client-api", @@ -7928,21 +7922,18 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ - "log", "sc-client-api", "sp-authorship", - "sp-consensus", - "sp-core", - "sp-inherents", "sp-runtime", + "thiserror", ] [[package]] name = "sc-executor" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "derive_more", "lazy_static", @@ -7972,7 +7963,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "derive_more", "parity-scale-codec", @@ -7989,7 +7980,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "log", "parity-scale-codec", @@ -8004,7 +7995,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "log", "parity-scale-codec", @@ -8022,7 +8013,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "async-trait", "derive_more", @@ -8062,7 +8053,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "derive_more", "finality-grandpa", @@ -8086,7 +8077,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-warp-sync" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "derive_more", "futures 0.3.14", @@ -8107,7 +8098,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "ansi_term 0.12.1", "futures 0.3.14", @@ -8125,7 +8116,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "async-trait", "derive_more", @@ -8145,7 +8136,7 @@ dependencies = [ [[package]] name = "sc-light" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "hash-db", "lazy_static", @@ -8164,7 +8155,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "async-std", "async-trait", @@ -8217,7 +8208,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "futures 0.3.14", "futures-timer 3.0.2", @@ -8234,7 +8225,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "bytes 0.5.6", "fnv", @@ -8262,7 +8253,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "futures 0.3.14", "libp2p", @@ -8275,7 +8266,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8284,7 +8275,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "futures 0.3.14", "hash-db", @@ -8318,7 +8309,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "derive_more", "futures 0.3.14", @@ -8342,7 +8333,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "futures 0.1.29", "jsonrpc-core", @@ -8360,7 +8351,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "async-trait", "directories", @@ -8424,7 +8415,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "log", "parity-scale-codec", @@ -8439,7 +8430,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8459,7 +8450,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "chrono", "futures 0.3.14", @@ -8479,7 +8470,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8506,7 +8497,7 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -8517,7 +8508,7 @@ dependencies = [ [[package]] name = "sc-transaction-graph" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "derive_more", "futures 0.3.14", @@ -8539,7 +8530,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "futures 0.3.14", "futures-diagnose", @@ -8961,7 +8952,7 @@ dependencies = [ [[package]] name = "sp-allocator" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "log", "sp-core", @@ -8973,7 +8964,7 @@ dependencies = [ [[package]] name = "sp-api" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "hash-db", "log", @@ -8990,7 +8981,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "blake2-rfc", "proc-macro-crate 1.0.0", @@ -9002,7 +8993,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "parity-scale-codec", "serde", @@ -9014,7 +9005,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "integer-sqrt", "num-traits", @@ -9028,7 +9019,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "parity-scale-codec", "sp-api", @@ -9040,8 +9031,9 @@ dependencies = [ [[package]] name = "sp-authorship" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ + "async-trait", "parity-scale-codec", "sp-inherents", "sp-runtime", @@ -9051,7 +9043,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "parity-scale-codec", "sp-api", @@ -9063,7 +9055,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "futures 0.3.14", "log", @@ -9081,7 +9073,7 @@ dependencies = [ [[package]] name = "sp-chain-spec" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "serde", "serde_json", @@ -9090,7 +9082,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "async-trait", "futures 0.3.14", @@ -9117,8 +9109,9 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ + "async-trait", "merlin", "parity-scale-codec", "serde", @@ -9138,7 +9131,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "parity-scale-codec", "sp-arithmetic", @@ -9148,7 +9141,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9160,7 +9153,7 @@ dependencies = [ [[package]] name = "sp-core" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "base58", "blake2-rfc", @@ -9204,7 +9197,7 @@ dependencies = [ [[package]] name = "sp-database" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9213,7 +9206,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "proc-macro2", "quote", @@ -9223,7 +9216,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "environmental", "parity-scale-codec", @@ -9234,7 +9227,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "finality-grandpa", "log", @@ -9251,11 +9244,13 @@ dependencies = [ [[package]] name = "sp-inherents" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ + "async-trait", + "impl-trait-for-tuples", "parity-scale-codec", - "parking_lot 0.11.1", "sp-core", + "sp-runtime", "sp-std", "thiserror", ] @@ -9263,7 +9258,7 @@ dependencies = [ [[package]] name = "sp-io" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "futures 0.3.14", "hash-db", @@ -9287,7 +9282,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "lazy_static", "sp-core", @@ -9298,7 +9293,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "async-trait", "derive_more", @@ -9315,7 +9310,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "ruzstd", "zstd", @@ -9324,7 +9319,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "parity-scale-codec", "serde", @@ -9337,7 +9332,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-compact" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2", @@ -9348,7 +9343,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "sp-api", "sp-core", @@ -9358,7 +9353,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "backtrace", ] @@ -9366,7 +9361,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "serde", "sp-core", @@ -9375,7 +9370,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "either", "hash256-std-hasher", @@ -9396,7 +9391,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9413,7 +9408,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "Inflector", "proc-macro-crate 1.0.0", @@ -9425,7 +9420,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "serde", "serde_json", @@ -9434,7 +9429,7 @@ dependencies = [ [[package]] name = "sp-session" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "parity-scale-codec", "sp-api", @@ -9447,7 +9442,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "parity-scale-codec", "sp-runtime", @@ -9457,7 +9452,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "hash-db", "log", @@ -9479,12 +9474,12 @@ dependencies = [ [[package]] name = "sp-std" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" [[package]] name = "sp-storage" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9497,7 +9492,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "log", "sp-core", @@ -9510,20 +9505,24 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ + "async-trait", + "futures-timer 3.0.2", + "log", "parity-scale-codec", "sp-api", "sp-inherents", "sp-runtime", "sp-std", + "thiserror", "wasm-timer", ] [[package]] name = "sp-tracing" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "log", "parity-scale-codec", @@ -9536,7 +9535,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "derive_more", "futures 0.3.14", @@ -9552,7 +9551,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "hash-db", "memory-db", @@ -9566,7 +9565,7 @@ dependencies = [ [[package]] name = "sp-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "futures 0.3.14", "futures-core", @@ -9578,7 +9577,7 @@ dependencies = [ [[package]] name = "sp-version" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9590,7 +9589,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9747,7 +9746,7 @@ dependencies = [ [[package]] name = "substrate-browser-utils" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "chrono", "console_error_panic_hook", @@ -9773,7 +9772,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "platforms", ] @@ -9781,7 +9780,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.14", @@ -9804,7 +9803,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "async-std", "derive_more", @@ -9818,7 +9817,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "async-trait", "futures 0.1.29", @@ -9847,7 +9846,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "futures 0.3.14", "substrate-test-utils-derive", @@ -9857,7 +9856,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "proc-macro-crate 1.0.0", "quote", @@ -10599,7 +10598,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try-runtime-cli" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate#92c15dd1e9b1f8e3c7e8d936c9b6fb15a46c2941" +source = "git+https://github.com/paritytech/substrate#ec180313e410915ed5e319358628260f9d1f3b53" dependencies = [ "frame-try-runtime", "log", diff --git a/polkadot/Cargo.toml b/polkadot/Cargo.toml index ed38ea545fb..440d2bda8d0 100644 --- a/polkadot/Cargo.toml +++ b/polkadot/Cargo.toml @@ -56,7 +56,7 @@ members = [ "node/core/candidate-selection", "node/core/candidate-validation", "node/core/chain-api", - "node/core/proposer", + "node/core/parachains-inherent", "node/core/provisioner", "node/core/pvf", "node/core/runtime-api", diff --git a/polkadot/erasure-coding/Cargo.toml b/polkadot/erasure-coding/Cargo.toml index 76aec305e45..f047157cc91 100644 --- a/polkadot/erasure-coding/Cargo.toml +++ b/polkadot/erasure-coding/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies <admin@parity.io>"] edition = "2018" [dependencies] -polkadot-primitives = { package = "polkadot-primitives", path = "../primitives" } +polkadot-primitives = { path = "../primitives" } polkadot-node-primitives = { package = "polkadot-node-primitives", path = "../node/primitives" } novelpoly = { package = "reed-solomon-novelpoly", version = "1.0.0" } parity-scale-codec = { version = "2.0.0", default-features = false, features = ["std", "derive"] } diff --git a/polkadot/node/core/parachains-inherent/Cargo.toml b/polkadot/node/core/parachains-inherent/Cargo.toml new file mode 100644 index 00000000000..adbf6445489 --- /dev/null +++ b/polkadot/node/core/parachains-inherent/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "polkadot-node-core-parachains-inherent" +version = "0.1.0" +authors = ["Parity Technologies <admin@parity.io>"] +edition = "2018" + +[dependencies] +futures = "0.3.12" +futures-timer = "3.0.2" +tracing = "0.1.25" +thiserror = "1.0.23" +async-trait = "0.1.47" +polkadot-node-subsystem = { path = "../../subsystem" } +polkadot-overseer = { path = "../../overseer" } +polkadot-primitives = { path = "../../../primitives" } +sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-inherents = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/polkadot/node/core/parachains-inherent/src/lib.rs b/polkadot/node/core/parachains-inherent/src/lib.rs new file mode 100644 index 00000000000..9c6b8ed0dbb --- /dev/null +++ b/polkadot/node/core/parachains-inherent/src/lib.rs @@ -0,0 +1,138 @@ +// Copyright 2021 Parity Technologies (UK) Ltd. +// This file is part of Polkadot. + +// Polkadot is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Polkadot is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Polkadot. If not, see <http://www.gnu.org/licenses/>. + +//! The parachain inherent data provider +//! +//! Parachain backing and approval is an off-chain process, but the parachain needs to progress on chain as well. To +//! make it progress on chain a block producer needs to forward information about the state of a parachain to the +//! runtime. This information is forwarded through an inherent to the runtime. Here we provide the +//! [`ParachainInherentDataProvider`] that requests the relevant data from the provisioner subsystem and creates the +//! the inherent data that the runtime will use to create an inherent. + +#![deny(unused_crate_dependencies, unused_results)] + +use futures::{select, FutureExt}; +use polkadot_node_subsystem::{ + messages::{AllMessages, ProvisionerMessage}, SubsystemError, +}; +use polkadot_overseer::OverseerHandler; +use polkadot_primitives::v1::{ + Block, Hash, InherentData as ParachainsInherentData, +}; +use sp_blockchain::HeaderBackend; +use sp_runtime::generic::BlockId; +use std::time; + +/// How long to wait for the provisioner, before giving up. +const PROVISIONER_TIMEOUT: time::Duration = core::time::Duration::from_millis(2500); + +/// Provides the parachains inherent data. +pub struct ParachainsInherentDataProvider { + inherent_data: ParachainsInherentData, +} + +impl ParachainsInherentDataProvider { + /// Create a new instance of the [`ParachainsInherentDataProvider`]. + pub async fn create<C: HeaderBackend<Block>>( + client: &C, + mut overseer: OverseerHandler, + parent: Hash, + ) -> Result<Self, Error> { + let pid = async { + let (sender, receiver) = futures::channel::oneshot::channel(); + overseer.wait_for_activation(parent, sender).await; + receiver.await.map_err(|_| Error::ClosedChannelAwaitingActivation)?.map_err(Error::Subsystem)?; + + let (sender, receiver) = futures::channel::oneshot::channel(); + overseer.send_msg(AllMessages::Provisioner( + ProvisionerMessage::RequestInherentData(parent, sender), + )).await; + + receiver.await.map_err(|_| Error::ClosedChannelAwaitingInherentData) + }; + + let mut timeout = futures_timer::Delay::new(PROVISIONER_TIMEOUT).fuse(); + + let parent_header = match client.header(BlockId::Hash(parent)) { + Ok(Some(h)) => h, + Ok(None) => return Err(Error::ParentHeaderNotFound(parent)), + Err(err) => return Err(Error::Blockchain(err)), + }; + + let res = select! { + pid = pid.fuse() => pid, + _ = timeout => Err(Error::Timeout), + }; + + let inherent_data = match res { + Ok(pd) => ParachainsInherentData { + bitfields: pd.bitfields, + backed_candidates: pd.backed_candidates, + disputes: pd.disputes, + parent_header, + }, + Err(err) => { + tracing::debug!( + ?err, + "Could not get provisioner inherent data; injecting default data", + ); + ParachainsInherentData { + bitfields: Vec::new(), + backed_candidates: Vec::new(), + disputes: Vec::new(), + parent_header, + } + } + }; + + Ok(Self { inherent_data }) + } +} + +#[async_trait::async_trait] +impl sp_inherents::InherentDataProvider for ParachainsInherentDataProvider { + fn provide_inherent_data(&self, inherent_data: &mut sp_inherents::InherentData) -> Result<(), sp_inherents::Error> { + inherent_data.put_data( + polkadot_primitives::v1::PARACHAINS_INHERENT_IDENTIFIER, + &self.inherent_data, + ) + } + + async fn try_handle_error( + &self, + _: &sp_inherents::InherentIdentifier, + _: &[u8], + ) -> Option<Result<(), sp_inherents::Error>> { + // Inherent isn't checked and can not return any error + None + } +} + +#[derive(thiserror::Error, Debug)] +pub enum Error { + #[error("Blockchain error")] + Blockchain(sp_blockchain::Error), + #[error("Timeout: provisioner did not return inherent data after {:?}", PROVISIONER_TIMEOUT)] + Timeout, + #[error("Could not find the parent header in the blockchain: {:?}", _0)] + ParentHeaderNotFound(Hash), + #[error("Closed channel from overseer when awaiting activation")] + ClosedChannelAwaitingActivation, + #[error("Closed channel from provisioner when awaiting inherent data")] + ClosedChannelAwaitingInherentData, + #[error("Subsystem failed")] + Subsystem(SubsystemError), +} diff --git a/polkadot/node/core/proposer/Cargo.toml b/polkadot/node/core/proposer/Cargo.toml deleted file mode 100644 index f2532d61d1c..00000000000 --- a/polkadot/node/core/proposer/Cargo.toml +++ /dev/null @@ -1,25 +0,0 @@ -[package] -name = "polkadot-node-core-proposer" -version = "0.1.0" -authors = ["Parity Technologies <admin@parity.io>"] -edition = "2018" - -[dependencies] -futures = "0.3.12" -futures-timer = "3.0.2" -tracing = "0.1.25" -polkadot-node-subsystem = { path = "../../subsystem" } -polkadot-overseer = { path = "../../overseer" } -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" } -sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-inherents = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master" } -prometheus-endpoint = { package = "substrate-prometheus-endpoint", 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 deleted file mode 100644 index 64ad751f561..00000000000 --- a/polkadot/node/core/proposer/src/lib.rs +++ /dev/null @@ -1,311 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see <http://www.gnu.org/licenses/>. - -//! The proposer proposes new blocks to include - -#![deny(unused_crate_dependencies, unused_results)] - -use futures::prelude::*; -use futures::select; -use polkadot_node_subsystem::{ - jaeger, - messages::{AllMessages, ProvisionerInherentData, ProvisionerMessage}, SubsystemError, -}; -use polkadot_overseer::OverseerHandler; -use polkadot_primitives::v1::{ - Block, Hash, Header, InherentData as ParachainsInherentData, -}; -use sc_block_builder::{BlockBuilderApi, BlockBuilderProvider}; -use sc_telemetry::TelemetryHandle; -use sp_core::traits::SpawnNamed; -use sp_api::{ApiExt, ProvideRuntimeApi}; -use sp_blockchain::HeaderBackend; -use sp_consensus::{Proposal, DisableProofRecording}; -use sp_inherents::InherentData; -use sp_runtime::traits::{DigestFor, HashFor}; -use sp_transaction_pool::TransactionPool; -use prometheus_endpoint::Registry as PrometheusRegistry; -use std::{fmt, pin::Pin, sync::Arc, time}; - -/// How long proposing can take, before we give up and err out. We need a relatively large timeout -/// here as long as we have large payload in statement distribution. Assuming we can reach most -/// nodes within two hops, we will take about 2 seconds for transferring statements (data transfer -/// only). If necessary, we could be able to reduce this to 3 seconds. To consider: The lower the -/// riskier that we will not be able to include a candidate. -const PROPOSE_TIMEOUT: core::time::Duration = core::time::Duration::from_millis(4000); - -/// Custom Proposer factory for Polkadot -pub struct ProposerFactory<TxPool, Backend, Client> { - inner: sc_basic_authorship::ProposerFactory<TxPool, Backend, Client, DisableProofRecording>, - overseer: OverseerHandler, -} - -impl<TxPool, Backend, Client> ProposerFactory<TxPool, Backend, Client> { - pub fn new( - spawn_handle: impl SpawnNamed + 'static, - client: Arc<Client>, - transaction_pool: Arc<TxPool>, - overseer: OverseerHandler, - prometheus: Option<&PrometheusRegistry>, - telemetry: Option<TelemetryHandle>, - ) -> Self { - ProposerFactory { - inner: sc_basic_authorship::ProposerFactory::new( - spawn_handle, - client, - transaction_pool, - prometheus, - telemetry, - ), - overseer, - } - } -} - -impl<TxPool, Backend, Client> sp_consensus::Environment<Block> - for ProposerFactory<TxPool, Backend, Client> -where - TxPool: 'static + TransactionPool<Block = Block>, - Client: 'static - + BlockBuilderProvider<Backend, Block, Client> - + ProvideRuntimeApi<Block> - + HeaderBackend<Block> - + Send - + Sync, - Client::Api: - BlockBuilderApi<Block> + ApiExt<Block>, - Backend: - 'static + sc_client_api::Backend<Block, State = sp_api::StateBackendFor<Client, Block>>, - // Rust bug: https://github.com/rust-lang/rust/issues/24159 - sp_api::StateBackendFor<Client, Block>: sp_api::StateBackend<HashFor<Block>> + Send, -{ - type CreateProposer = Pin<Box< - dyn Future<Output = Result<Self::Proposer, Self::Error>> + Send + 'static, - >>; - type Proposer = Proposer<TxPool, Backend, Client>; - type Error = Error; - - fn init(&mut self, parent_header: &Header) -> Self::CreateProposer { - // create the inner proposer - let proposer = self.inner.init(parent_header).into_inner(); - - // data to be moved into the future - let overseer = self.overseer.clone(); - let parent_header_hash = parent_header.hash(); - let parent_header = parent_header.clone(); - - async move { - Ok(Proposer { - inner: proposer?, - overseer, - parent_header, - parent_header_hash, - }) - }.boxed() - } -} - -/// Custom Proposer for Polkadot. -/// -/// This proposer gets the ProvisionerInherentData and injects it into the wrapped -/// proposer's inherent data, then delegates the actual proposal generation. -pub struct Proposer<TxPool: TransactionPool<Block = Block>, Backend, Client> { - inner: sc_basic_authorship::Proposer<Backend, Block, Client, TxPool, DisableProofRecording>, - overseer: OverseerHandler, - parent_header: Header, - parent_header_hash: Hash, -} - -// This impl has the same generic bounds as the Proposer impl. -impl<TxPool, Backend, Client> Proposer<TxPool, Backend, Client> -where - TxPool: 'static + TransactionPool<Block = Block>, - Client: 'static - + BlockBuilderProvider<Backend, Block, Client> - + ProvideRuntimeApi<Block> - + HeaderBackend<Block> - + Send - + Sync, - Client::Api: - BlockBuilderApi<Block> + ApiExt<Block>, - Backend: - 'static + sc_client_api::Backend<Block, State = sp_api::StateBackendFor<Client, Block>>, - // Rust bug: https://github.com/rust-lang/rust/issues/24159 - sp_api::StateBackendFor<Client, Block>: sp_api::StateBackend<HashFor<Block>> + Send, -{ - /// Get provisioner inherent data - /// - /// This function has a constant timeout: `PROPOSE_TIMEOUT`. - async fn get_provisioner_data(&self) -> Result<ProvisionerInherentData, Error> { - // clone this (lightweight) data because we're going to move it into the future - let mut overseer = self.overseer.clone(); - let parent_header_hash = self.parent_header_hash.clone(); - - let pid = async { - let (sender, receiver) = futures::channel::oneshot::channel(); - overseer.wait_for_activation(parent_header_hash, sender).await; - receiver.await.map_err(|_| Error::ClosedChannelAwaitingActivation)??; - - let (sender, receiver) = futures::channel::oneshot::channel(); - overseer.send_msg(AllMessages::Provisioner( - ProvisionerMessage::RequestInherentData(parent_header_hash, sender), - )).await; - - receiver.await.map_err(|_| Error::ClosedChannelAwaitingInherentData) - }; - - let mut timeout = futures_timer::Delay::new(PROPOSE_TIMEOUT).fuse(); - - select! { - pid = pid.fuse() => pid, - _ = timeout => Err(Error::Timeout), - } - } -} - -impl<TxPool, Backend, Client> sp_consensus::Proposer<Block> for Proposer<TxPool, Backend, Client> -where - TxPool: 'static + TransactionPool<Block = Block>, - Client: 'static - + BlockBuilderProvider<Backend, Block, Client> - + ProvideRuntimeApi<Block> - + HeaderBackend<Block> - + Send - + Sync, - Client::Api: - BlockBuilderApi<Block> + ApiExt<Block>, - Backend: - 'static + sc_client_api::Backend<Block, State = sp_api::StateBackendFor<Client, Block>>, - // Rust bug: https://github.com/rust-lang/rust/issues/24159 - sp_api::StateBackendFor<Client, Block>: sp_api::StateBackend<HashFor<Block>> + Send, -{ - type Transaction = sc_client_api::TransactionFor<Backend, Block>; - type Proposal = Pin<Box< - dyn Future<Output = Result<Proposal<Block, sp_api::TransactionFor<Client, Block>, ()>, Error>> + Send, - >>; - type Error = Error; - type ProofRecording = DisableProofRecording; - type Proof = (); - - fn propose( - self, - mut inherent_data: InherentData, - inherent_digests: DigestFor<Block>, - max_duration: time::Duration, - block_size_limit: Option<usize>, - ) -> Self::Proposal { - async move { - let span = jaeger::Span::new(self.parent_header_hash, "propose"); - let _span = span.child("get-provisioner"); - - let parachains_inherent_data = match self.get_provisioner_data().await { - Ok(pd) => ParachainsInherentData { - bitfields: pd.bitfields, - backed_candidates: pd.backed_candidates, - disputes: pd.disputes, - parent_header: self.parent_header, - }, - Err(err) => { - tracing::warn!(err = ?err, "could not get provisioner inherent data; injecting default data"); - ParachainsInherentData { - bitfields: Vec::new(), - backed_candidates: Vec::new(), - disputes: Vec::new(), - parent_header: self.parent_header, - } - } - }; - - drop(_span); - - inherent_data.put_data( - polkadot_primitives::v1::PARACHAINS_INHERENT_IDENTIFIER, - ¶chains_inherent_data, - )?; - - let _span = span.child("authorship-propose"); - self.inner - .propose(inherent_data, inherent_digests, max_duration, block_size_limit) - .await - .map_err(Into::into) - } - .boxed() - } -} - -// It would have been more ergonomic to use thiserror to derive the -// From implementations, Display, and std::error::Error, but unfortunately -// one of the wrapped errors (sp_inherents::Error) also -// don't impl std::error::Error, which breaks the thiserror derive. -#[derive(Debug)] -pub enum Error { - Consensus(sp_consensus::Error), - Blockchain(sp_blockchain::Error), - Inherent(sp_inherents::Error), - Timeout, - ClosedChannelAwaitingActivation, - ClosedChannelAwaitingInherentData, - Subsystem(SubsystemError) -} - -impl From<sp_consensus::Error> for Error { - fn from(e: sp_consensus::Error) -> Error { - Error::Consensus(e) - } -} - -impl From<sp_blockchain::Error> for Error { - fn from(e: sp_blockchain::Error) -> Error { - Error::Blockchain(e) - } -} - -impl From<sp_inherents::Error> for Error { - fn from(e: sp_inherents::Error) -> Error { - Error::Inherent(e) - } -} - -impl From<SubsystemError> for Error { - fn from(e: SubsystemError) -> Error { - Error::Subsystem(e) - } -} - -impl fmt::Display for Error { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match self { - Self::Consensus(err) => write!(f, "consensus error: {}", err), - Self::Blockchain(err) => write!(f, "blockchain error: {}", err), - Self::Inherent(err) => write!(f, "inherent error: {:?}", err), - Self::Timeout => write!(f, "timeout: provisioner did not return inherent data after {:?}", PROPOSE_TIMEOUT), - Self::ClosedChannelAwaitingActivation => write!(f, "closed channel from overseer when awaiting activation"), - Self::ClosedChannelAwaitingInherentData => write!(f, "closed channel from provisioner when awaiting inherent data"), - Self::Subsystem(err) => write!(f, "subsystem error: {:?}", err), - } - } -} - -impl std::error::Error for Error { - fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { - match self { - Self::Consensus(err) => Some(err), - Self::Blockchain(err) => Some(err), - Self::Subsystem(err) => Some(err), - _ => None - } - } -} diff --git a/polkadot/node/overseer/src/lib.rs b/polkadot/node/overseer/src/lib.rs index 9f7b6239a21..6a674fb29e3 100644 --- a/polkadot/node/overseer/src/lib.rs +++ b/polkadot/node/overseer/src/lib.rs @@ -445,7 +445,6 @@ impl OverseerHandler { } /// Wait for a block with the given hash to be in the active-leaves set. - /// This method is used for external code like `Proposer` that doesn't subscribe to Overseer's signals. /// /// The response channel responds if the hash was activated and is closed if the hash was deactivated. /// Note that due the fact the overseer doesn't store the whole active-leaves set, only deltas, diff --git a/polkadot/node/service/Cargo.toml b/polkadot/node/service/Cargo.toml index 28f2a1db425..34fa00fb533 100644 --- a/polkadot/node/service/Cargo.toml +++ b/polkadot/node/service/Cargo.toml @@ -15,6 +15,7 @@ sc-block-builder = { git = "https://github.com/paritytech/substrate", branch = " sc-chain-spec = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-client-db = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-consensus-uncles = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-consensus-slots = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-executor = { git = "https://github.com/paritytech/substrate", branch = "master" } @@ -22,12 +23,12 @@ sc-finality-grandpa-warp-sync = { git = "https://github.com/paritytech/substrate sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-basic-authorship = { git = "https://github.com/paritytech/substrate", branch = "master" } service = { package = "sc-service", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } telemetry = { package = "sc-telemetry", git = "https://github.com/paritytech/substrate", branch = "master" } # Substrate Primitives sp-authority-discovery = { git = "https://github.com/paritytech/substrate", branch = "master" } -babe-primitives = { package = "sp-consensus-babe", git = "https://github.com/paritytech/substrate", branch = "master" } consensus_common = { package = "sp-consensus", git = "https://github.com/paritytech/substrate", branch = "master" } grandpa_primitives = { package = "sp-finality-grandpa", git = "https://github.com/paritytech/substrate", branch = "master" } inherents = { package = "sp-inherents", git = "https://github.com/paritytech/substrate", branch = "master" } @@ -43,6 +44,8 @@ sp-session = { git = "https://github.com/paritytech/substrate", branch = "master sp-storage = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-consensus-babe = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-state-machine = { git = "https://github.com/paritytech/substrate", branch = "master" } # Substrate Pallets @@ -67,7 +70,7 @@ kvdb = "0.9.0" kvdb-rocksdb = { version = "0.11.0", optional = true } # Polkadot -polkadot-node-core-proposer = { path = "../core/proposer" } +polkadot-node-core-parachains-inherent = { path = "../core/parachains-inherent" } polkadot-overseer = { path = "../overseer" } polkadot-parachain = { path = "../../parachain" } polkadot-primitives = { path = "../../primitives" } diff --git a/polkadot/node/service/src/chain_spec.rs b/polkadot/node/service/src/chain_spec.rs index 765bc2f387c..0c7a8935eeb 100644 --- a/polkadot/node/service/src/chain_spec.rs +++ b/polkadot/node/service/src/chain_spec.rs @@ -18,7 +18,7 @@ use rococo::constants::size::MAX_CODE_SIZE; use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; -use babe_primitives::AuthorityId as BabeId; +use sp_consensus_babe::AuthorityId as BabeId; use beefy_primitives::ecdsa::AuthorityId as BeefyId; use grandpa::AuthorityId as GrandpaId; use hex_literal::hex; diff --git a/polkadot/node/service/src/client.rs b/polkadot/node/service/src/client.rs index a964ee5d8e3..adc2ef53c0a 100644 --- a/polkadot/node/service/src/client.rs +++ b/polkadot/node/service/src/client.rs @@ -32,7 +32,7 @@ use consensus_common::BlockStatus; pub trait RuntimeApiCollection: sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block> + sp_api::ApiExt<Block> - + babe_primitives::BabeApi<Block> + + sp_consensus_babe::BabeApi<Block> + grandpa_primitives::GrandpaApi<Block> + ParachainHost<Block> + sp_block_builder::BlockBuilder<Block> @@ -52,7 +52,7 @@ impl<Api> RuntimeApiCollection for Api where Api: sp_transaction_pool::runtime_api::TaggedTransactionQueue<Block> + sp_api::ApiExt<Block> - + babe_primitives::BabeApi<Block> + + sp_consensus_babe::BabeApi<Block> + grandpa_primitives::GrandpaApi<Block> + ParachainHost<Block> + sp_block_builder::BlockBuilder<Block> diff --git a/polkadot/node/service/src/lib.rs b/polkadot/node/service/src/lib.rs index 34325e565cf..e5c53ce9a83 100644 --- a/polkadot/node/service/src/lib.rs +++ b/polkadot/node/service/src/lib.rs @@ -32,7 +32,6 @@ use { polkadot_node_core_av_store::Error as AvailabilityError, polkadot_node_core_approval_voting::Config as ApprovalVotingConfig, polkadot_node_core_candidate_validation::Config as CandidateValidationConfig, - polkadot_node_core_proposer::ProposerFactory, polkadot_overseer::{AllSubsystems, BlockInfo, Overseer, OverseerHandler}, polkadot_primitives::v1::ParachainHost, sc_authority_discovery::Service as AuthorityDiscoveryService, @@ -41,7 +40,7 @@ use { sp_trie::PrefixedMemoryDB, sc_client_api::{AuxStore, ExecutorProvider}, sc_keystore::LocalKeystore, - babe_primitives::BabeApi, + sp_consensus_babe::BabeApi, grandpa::{self, FinalityProofProvider as GrandpaFinalityProofProvider}, beefy_primitives::ecdsa::AuthoritySignature as BeefySignature, sp_runtime::traits::Header as HeaderT, @@ -263,8 +262,6 @@ fn new_partial<RuntimeApi, Executor>( set_prometheus_registry(config)?; - let inherent_data_providers = inherents::InherentDataProviders::new(); - let telemetry = config.telemetry_endpoints.clone() .filter(|x| !x.is_empty()) .map(move |endpoints| -> Result<_, telemetry::Error> { @@ -331,13 +328,24 @@ fn new_partial<RuntimeApi, Executor>( client.clone(), )?; + let slot_duration = babe_link.config().slot_duration(); let import_queue = babe::import_queue( babe_link.clone(), block_import.clone(), Some(Box::new(justification_import)), client.clone(), select_chain.clone(), - inherent_data_providers.clone(), + move |_, ()| async move { + let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); + + let slot = + sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_duration( + *timestamp, + slot_duration, + ); + + Ok((timestamp, slot)) + }, &task_manager.spawn_essential_handle(), config.prometheus_registry(), consensus_common::CanAuthorWithNativeVersion::new(client.executor().clone()), @@ -407,7 +415,6 @@ fn new_partial<RuntimeApi, Executor>( select_chain, import_queue, transaction_pool, - inherent_data_providers, other: (rpc_extensions_builder, import_setup, rpc_setup, slot_duration, telemetry) }) } @@ -708,7 +715,6 @@ pub fn new_full<RuntimeApi, Executor>( select_chain, import_queue, transaction_pool, - inherent_data_providers, other: (rpc_extensions_builder, import_setup, rpc_setup, slot_duration, mut telemetry) } = new_partial::<RuntimeApi, Executor>(&mut config, jaeger_agent, telemetry_worker_handle)?; @@ -893,21 +899,25 @@ pub fn new_full<RuntimeApi, Executor>( })); Some(overseer_handler) - } else { None }; + } else { + None + }; if role.is_authority() { let can_author_with = consensus_common::CanAuthorWithNativeVersion::new(client.executor().clone()); - let proposer = ProposerFactory::new( + let proposer = sc_basic_authorship::ProposerFactory::new( task_manager.spawn_handle(), client.clone(), transaction_pool, - overseer_handler.as_ref().ok_or(Error::AuthoritiesRequireRealOverseer)?.clone(), prometheus_registry.as_ref(), telemetry.as_ref().map(|x| x.handle()), ); + let client_clone = client.clone(); + let overseer_handler = overseer_handler.as_ref().ok_or(Error::AuthoritiesRequireRealOverseer)?.clone(); + let slot_duration = babe_link.config().slot_duration(); let babe_config = babe::BabeParams { keystore: keystore_container.sync_keystore(), client: client.clone(), @@ -915,7 +925,32 @@ pub fn new_full<RuntimeApi, Executor>( block_import, env: proposer, sync_oracle: network.clone(), - inherent_data_providers: inherent_data_providers.clone(), + create_inherent_data_providers: move |parent, ()| { + let client_clone = client_clone.clone(); + let overseer_handler = overseer_handler.clone(); + async move { + let parachain = polkadot_node_core_parachains_inherent::ParachainsInherentDataProvider::create( + &*client_clone, + overseer_handler, + parent, + ).await.map_err(|e| Box::new(e))?; + + let uncles = sc_consensus_uncles::create_uncles_inherent_data_provider( + &*client_clone, + parent, + )?; + + let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); + + let slot = + sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_duration( + *timestamp, + slot_duration, + ); + + Ok((timestamp, slot, uncles, parachain)) + } + }, force_authoring, backoff_authoring_blocks, babe_link, @@ -1096,16 +1131,25 @@ fn new_light<Runtime, Dispatch>(mut config: Configuration) -> Result<( client.clone(), )?; - let inherent_data_providers = inherents::InherentDataProviders::new(); - // FIXME: pruning task isn't started since light client doesn't do `AuthoritySetup`. + let slot_duration = babe_link.config().slot_duration(); let import_queue = babe::import_queue( babe_link, babe_block_import, Some(Box::new(justification_import)), client.clone(), select_chain.clone(), - inherent_data_providers.clone(), + move |_, ()| async move { + let timestamp = sp_timestamp::InherentDataProvider::from_system_time(); + + let slot = + sp_consensus_babe::inherents::InherentDataProvider::from_timestamp_and_duration( + *timestamp, + slot_duration, + ); + + Ok((timestamp, slot)) + }, &task_manager.spawn_essential_handle(), config.prometheus_registry(), consensus_common::NeverCanAuthor, diff --git a/polkadot/roadmap/implementers-guide/src/node/subsystems-and-jobs.md b/polkadot/roadmap/implementers-guide/src/node/subsystems-and-jobs.md index 2eabf6fc9ee..bffee1ffd2b 100644 --- a/polkadot/roadmap/implementers-guide/src/node/subsystems-and-jobs.md +++ b/polkadot/roadmap/implementers-guide/src/node/subsystems-and-jobs.md @@ -380,7 +380,7 @@ sequenceDiagram participant CB as CandidateBacking participant BD as BitfieldDistribution participant RA as RuntimeApi - participant PO as Proposer + participant PI as ParachainsInherentDataProvider alt receive provisionable data alt @@ -395,33 +395,24 @@ sequenceDiagram Note over PV: store bitfields and backed candidates else receive request for inherent data - PO ->> PV: RequestInherentData + PI ->> PV: RequestInherentData alt we have already constructed the inherent data - PV ->> PO: send the inherent data + PV ->> PI: send the inherent data else we have not yet constructed the inherent data - Note over PV,PO: Store the return sender without sending immediately + Note over PV,PI: Store the return sender without sending immediately end else timer times out note over PV: Waited 2 seconds PV -->> RA: RuntimeApiRequest::AvailabilityCores Note over PV: construct and store the inherent data loop over stored inherent data requests - PV ->> PO: (SignedAvailabilityBitfields, BackedCandidates) + PV ->> PI: (SignedAvailabilityBitfields, BackedCandidates) end end ``` In principle, any arbitrary subsystem could send a `RequestInherentData` to the `Provisioner`. In practice, -only the `Proposer` does so. +only the `ParachainsInherentDataProvider` does so. -The proposer is an atypical subsystem in that, unlike most of them, it is not primarily driven by -the `Overseer`, but instead by the `sp_consensus::Environment` and `sp_consensus::Proposer` traits -from Substrate. It doesn't make much sense to diagram this flow because it's very linear: - -- Substrate creates a `Proposer` from the `ProposerFactory` once per upcoming block, using the `parent_header: Header`. -- At some later point, it calls `Proposer::propose(self, ...)`, consuming the proposer to generate a proposal -- `Proposer::propose` sends a `RequestInherentData` to the `Provisioner`. This has a fixed timeout of - 2.5 seconds, meaning that the provisioner has approximately 0.5 seconds to generate and send the data. - -The tuple `(SignedAvailabilityBitfields, BackedCandidates, ParentHeader)` is injected by the `Proposer` +The tuple `(SignedAvailabilityBitfields, BackedCandidates, ParentHeader)` is injected by the `ParachainsInherentDataProvider` into the inherent data. From that point on, control passes from the node to the runtime. diff --git a/polkadot/roadmap/implementers-guide/src/types/overseer-protocol.md b/polkadot/roadmap/implementers-guide/src/types/overseer-protocol.md index c4d51a61104..9e082b8d1b6 100644 --- a/polkadot/roadmap/implementers-guide/src/types/overseer-protocol.md +++ b/polkadot/roadmap/implementers-guide/src/types/overseer-protocol.md @@ -564,9 +564,6 @@ enum ProvisionerMessage { /// advancing the state of parachain consensus in a block building upon the given hash. /// /// If called at different points in time, this may give different results. - /// - /// This is expected to be used by a proposer, to inject that information into the InherentData - /// where it can be assembled into the ParaInherent. RequestInherentData(Hash, oneshot::Sender<ParaInherentData>), /// This data should become part of a relay chain block ProvisionableData(ProvisionableData), diff --git a/polkadot/runtime/parachains/Cargo.toml b/polkadot/runtime/parachains/Cargo.toml index 017d4197a44..8849f9325ab 100644 --- a/polkadot/runtime/parachains/Cargo.toml +++ b/polkadot/runtime/parachains/Cargo.toml @@ -49,10 +49,10 @@ keyring = { package = "sp-keyring", git = "https://github.com/paritytech/substra sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" } pallet-babe = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master" } -frame-support-test = { git = "https://github.com/paritytech/substrate", branch = "master" } pallet-randomness-collective-flip = { git = "https://github.com/paritytech/substrate", branch = "master" } pallet-staking-reward-curve = { git = "https://github.com/paritytech/substrate", branch = "master" } pallet-treasury = { git = "https://github.com/paritytech/substrate", branch = "master" } +frame-support-test = { git = "https://github.com/paritytech/substrate", branch = "master" } serde_json = "1.0.61" libsecp256k1 = "0.3.5" sp-version = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false } diff --git a/polkadot/runtime/parachains/src/paras_inherent.rs b/polkadot/runtime/parachains/src/paras_inherent.rs index dba1647756f..c96495d639e 100644 --- a/polkadot/runtime/parachains/src/paras_inherent.rs +++ b/polkadot/runtime/parachains/src/paras_inherent.rs @@ -31,6 +31,7 @@ use frame_support::{ dispatch::DispatchResultWithPostInfo, weights::{DispatchClass, Weight}, traits::Get, + inherent::{InherentIdentifier, InherentData, MakeFatalError, ProvideInherent}, }; use frame_system::ensure_none; use crate::{ @@ -38,7 +39,6 @@ use crate::{ scheduler::{self, FreedReason}, ump, }; -use inherents::{InherentIdentifier, InherentData, MakeFatalError, ProvideInherent}; const LOG_TARGET: &str = "runtime::inclusion-inherent"; // In the future, we should benchmark these consts; these are all untested assumptions for now. -- GitLab