diff --git a/cumulus/Cargo.lock b/cumulus/Cargo.lock index 8b68088b08ef215642f6b8af1122f7bcc5c25d13..a1dfc281ade1997179d602ca298c7c4321c788e8 100644 --- a/cumulus/Cargo.lock +++ b/cumulus/Cargo.lock @@ -1294,6 +1294,35 @@ dependencies = [ "tracing", ] +[[package]] +name = "cumulus-client-consensus-aura" +version = "0.1.0" +dependencies = [ + "async-trait", + "cumulus-client-consensus-common", + "cumulus-primitives-core", + "futures 0.3.14", + "parity-scale-codec", + "parking_lot 0.9.0", + "polkadot-service", + "sc-client-api", + "sc-consensus-aura", + "sc-consensus-slots", + "sc-telemetry", + "sp-api", + "sp-application-crypto", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-consensus-aura", + "sp-core", + "sp-inherents", + "sp-keystore", + "sp-runtime", + "substrate-prometheus-endpoint", + "tracing", +] + [[package]] name = "cumulus-client-consensus-common" version = "0.1.0" @@ -1329,7 +1358,6 @@ dependencies = [ "async-trait", "cumulus-client-consensus-common", "cumulus-primitives-core", - "cumulus-primitives-parachain-inherent", "futures 0.3.14", "parity-scale-codec", "parking_lot 0.9.0", @@ -1402,6 +1430,23 @@ dependencies = [ "tracing", ] +[[package]] +name = "cumulus-pallet-aura-ext" +version = "0.1.0" +dependencies = [ + "cumulus-pallet-parachain-system", + "frame-executive", + "frame-support", + "frame-system", + "pallet-aura", + "parity-scale-codec", + "serde", + "sp-application-crypto", + "sp-consensus-aura", + "sp-runtime", + "sp-std", +] + [[package]] name = "cumulus-pallet-dmp-queue" version = "0.1.0" @@ -1529,8 +1574,10 @@ dependencies = [ name = "cumulus-primitives-parachain-inherent" version = "0.1.0" dependencies = [ + "async-trait", "cumulus-primitives-core", "parity-scale-codec", + "polkadot-service", "sc-client-api", "sp-api", "sp-core", @@ -1629,6 +1676,7 @@ dependencies = [ name = "cumulus-test-parachain-runtime" version = "0.1.0" dependencies = [ + "cumulus-pallet-aura-ext", "cumulus-pallet-dmp-queue", "cumulus-pallet-parachain-system", "cumulus-pallet-xcm", @@ -1643,6 +1691,7 @@ dependencies = [ "hex-literal 0.3.1", "log", "pallet-assets", + "pallet-aura", "pallet-balances", "pallet-randomness-collective-flip", "pallet-sudo", @@ -1656,6 +1705,7 @@ dependencies = [ "serde", "sp-api", "sp-block-builder", + "sp-consensus-aura", "sp-core", "sp-inherents", "sp-io", @@ -1760,6 +1810,7 @@ dependencies = [ "cumulus-client-network", "cumulus-client-service", "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", "cumulus-test-relay-validation-worker-provider", "cumulus-test-runtime", "cumulus-test-runtime-upgrade", @@ -1771,6 +1822,7 @@ dependencies = [ "polkadot-overseer", "polkadot-primitives", "polkadot-service", + "polkadot-test-runtime", "polkadot-test-service", "rand 0.7.3", "sc-basic-authorship", @@ -2316,7 +2368,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "parity-scale-codec", ] @@ -2334,7 +2386,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "3.1.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -2353,7 +2405,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "Inflector", "chrono", @@ -2376,7 +2428,7 @@ dependencies = [ [[package]] name = "frame-election-provider-support" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -2389,7 +2441,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -2404,7 +2456,7 @@ dependencies = [ [[package]] name = "frame-metadata" version = "13.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "parity-scale-codec", "serde", @@ -2415,7 +2467,7 @@ dependencies = [ [[package]] name = "frame-support" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "bitflags", "frame-metadata", @@ -2441,7 +2493,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "Inflector", "frame-support-procedural-tools", @@ -2453,7 +2505,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.0.0", @@ -2465,7 +2517,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "proc-macro2 1.0.26", "quote 1.0.9", @@ -2475,7 +2527,7 @@ dependencies = [ [[package]] name = "frame-system" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "impl-trait-for-tuples", @@ -2492,7 +2544,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "parity-scale-codec", "sp-api", @@ -2501,7 +2553,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "parity-scale-codec", @@ -3585,7 +3637,7 @@ dependencies = [ [[package]] name = "kusama-runtime" version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "beefy-primitives", "bitvec", @@ -4439,7 +4491,7 @@ dependencies = [ [[package]] name = "metered-channel" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "derive_more 0.99.11", "futures 0.3.14", @@ -4841,7 +4893,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-benchmarking", "frame-support", @@ -4851,10 +4903,26 @@ dependencies = [ "sp-std", ] +[[package]] +name = "pallet-aura" +version = "3.0.0" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" +dependencies = [ + "frame-support", + "frame-system", + "pallet-session", + "pallet-timestamp", + "parity-scale-codec", + "sp-application-crypto", + "sp-consensus-aura", + "sp-runtime", + "sp-std", +] + [[package]] name = "pallet-authority-discovery" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -4869,7 +4937,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -4883,7 +4951,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-benchmarking", "frame-support", @@ -4906,7 +4974,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-benchmarking", "frame-support", @@ -4935,7 +5003,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -4948,7 +5016,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -4963,7 +5031,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-benchmarking", "frame-support", @@ -4978,7 +5046,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-election-provider-support", "frame-support", @@ -4996,7 +5064,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -5012,7 +5080,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5033,7 +5101,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5048,7 +5116,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -5066,7 +5134,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -5081,7 +5149,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5096,7 +5164,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -5113,7 +5181,7 @@ dependencies = [ [[package]] name = "pallet-mmr-primitives" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -5129,7 +5197,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5147,7 +5215,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -5161,7 +5229,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -5174,7 +5242,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -5190,7 +5258,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -5204,7 +5272,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -5217,7 +5285,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "enumflags2", "frame-support", @@ -5231,7 +5299,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5246,7 +5314,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -5265,7 +5333,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -5278,7 +5346,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-election-provider-support", "frame-support", @@ -5300,7 +5368,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2 1.0.26", @@ -5311,7 +5379,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -5324,7 +5392,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-benchmarking", "frame-support", @@ -5341,7 +5409,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -5355,7 +5423,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -5371,7 +5439,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -5388,7 +5456,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -5399,7 +5467,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -5414,7 +5482,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-support", "frame-system", @@ -5428,7 +5496,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "enumflags2", "frame-support", @@ -5441,7 +5509,7 @@ dependencies = [ [[package]] name = "pallet-xcm" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "frame-support", "frame-system", @@ -5909,7 +5977,7 @@ checksum = "989d43012e2ca1c4a02507c67282691a0a3207f9dc67cec596b43fe925b3d325" [[package]] name = "polkadot-approval-distribution" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "futures 0.3.14", "polkadot-node-network-protocol", @@ -5923,7 +5991,7 @@ dependencies = [ [[package]] name = "polkadot-availability-bitfield-distribution" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "futures 0.3.14", "polkadot-node-network-protocol", @@ -5936,7 +6004,7 @@ dependencies = [ [[package]] name = "polkadot-availability-distribution" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "futures 0.3.14", "lru", @@ -5959,7 +6027,7 @@ dependencies = [ [[package]] name = "polkadot-availability-recovery" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "futures 0.3.14", "lru", @@ -5978,7 +6046,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "frame-benchmarking-cli", "futures 0.3.14", @@ -5998,7 +6066,7 @@ dependencies = [ [[package]] name = "polkadot-collator-protocol" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "always-assert", "futures 0.3.14", @@ -6018,7 +6086,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -6030,7 +6098,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "parity-scale-codec", "polkadot-node-primitives", @@ -6044,7 +6112,7 @@ dependencies = [ [[package]] name = "polkadot-gossip-support" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "futures 0.3.14", "polkadot-node-network-protocol", @@ -6059,7 +6127,7 @@ dependencies = [ [[package]] name = "polkadot-network-bridge" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "async-trait", "futures 0.3.14", @@ -6079,7 +6147,7 @@ dependencies = [ [[package]] name = "polkadot-node-collation-generation" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "futures 0.3.14", "parity-scale-codec", @@ -6097,7 +6165,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-approval-voting" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "bitvec", "derive_more 0.99.11", @@ -6126,7 +6194,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-av-store" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "bitvec", "futures 0.3.14", @@ -6146,7 +6214,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-backing" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "bitvec", "futures 0.3.14", @@ -6164,7 +6232,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-bitfield-signing" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "futures 0.3.14", "polkadot-node-subsystem", @@ -6179,7 +6247,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-selection" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "futures 0.3.14", "polkadot-node-primitives", @@ -6194,7 +6262,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-candidate-validation" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "async-trait", "futures 0.3.14", @@ -6212,7 +6280,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-chain-api" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "futures 0.3.14", "polkadot-node-subsystem", @@ -6225,7 +6293,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-parachains-inherent" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "async-trait", "futures 0.3.14", @@ -6243,7 +6311,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-provisioner" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "bitvec", "futures 0.3.14", @@ -6258,7 +6326,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-pvf" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "always-assert", "assert_matches", @@ -6286,7 +6354,7 @@ dependencies = [ [[package]] name = "polkadot-node-core-runtime-api" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "futures 0.3.14", "memory-lru", @@ -6304,7 +6372,7 @@ dependencies = [ [[package]] name = "polkadot-node-jaeger" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "async-std", "lazy_static", @@ -6322,7 +6390,7 @@ dependencies = [ [[package]] name = "polkadot-node-network-protocol" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "futures 0.3.14", "parity-scale-codec", @@ -6337,7 +6405,7 @@ dependencies = [ [[package]] name = "polkadot-node-primitives" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "futures 0.3.14", "parity-scale-codec", @@ -6359,7 +6427,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "async-std", "async-trait", @@ -6389,7 +6457,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-test-helpers" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "async-trait", "futures 0.3.14", @@ -6411,7 +6479,7 @@ dependencies = [ [[package]] name = "polkadot-node-subsystem-util" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "async-trait", "futures 0.3.14", @@ -6439,7 +6507,7 @@ dependencies = [ [[package]] name = "polkadot-overseer" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "async-trait", "futures 0.3.14", @@ -6457,7 +6525,7 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "derive_more 0.99.11", "parity-scale-codec", @@ -6472,7 +6540,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "bitvec", "frame-system", @@ -6501,7 +6569,7 @@ dependencies = [ [[package]] name = "polkadot-procmacro-overseer-subsystems-gen" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "assert_matches", "proc-macro2 1.0.26", @@ -6512,7 +6580,7 @@ dependencies = [ [[package]] name = "polkadot-procmacro-subsystem-dispatch-gen" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "assert_matches", "proc-macro2 1.0.26", @@ -6523,7 +6591,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "beefy-gadget", "beefy-gadget-rpc", @@ -6556,7 +6624,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "beefy-primitives", "bitvec", @@ -6626,7 +6694,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "beefy-primitives", "bitvec", @@ -6668,7 +6736,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "bitvec", "derive_more 0.99.11", @@ -6705,7 +6773,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -6797,7 +6865,7 @@ dependencies = [ [[package]] name = "polkadot-statement-distribution" version = "0.1.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "arrayvec 0.5.2", "futures 0.3.14", @@ -6818,7 +6886,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -6828,7 +6896,7 @@ dependencies = [ [[package]] name = "polkadot-test-client" version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "parity-scale-codec", "polkadot-node-subsystem", @@ -6853,7 +6921,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "beefy-primitives", "bitvec", @@ -6910,7 +6978,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "frame-benchmarking", "frame-system", @@ -7636,7 +7704,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "env_logger 0.8.3", "hex-literal 0.3.1", @@ -7716,10 +7784,13 @@ dependencies = [ "assert_cmd", "cumulus-client-cli", "cumulus-client-collator", + "cumulus-client-consensus-aura", + "cumulus-client-consensus-common", "cumulus-client-consensus-relay-chain", "cumulus-client-network", "cumulus-client-service", "cumulus-primitives-core", + "cumulus-primitives-parachain-inherent", "cumulus-shell-runtime", "cumulus-test-parachain-runtime", "derive_more 0.15.0", @@ -7760,17 +7831,19 @@ dependencies = [ "sp-block-builder", "sp-blockchain", "sp-consensus", + "sp-consensus-aura", "sp-core", "sp-inherents", "sp-io", + "sp-keystore", "sp-offchain", "sp-runtime", "sp-session", "sp-timestamp", "sp-transaction-pool", - "sp-trie", "structopt", "substrate-build-script-utils", + "substrate-prometheus-endpoint", "substrate-test-client", "substrate-test-runtime-client", "tempfile", @@ -7789,7 +7862,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "beefy-primitives", "frame-executive", @@ -7993,7 +8066,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "async-trait", "derive_more 0.99.11", @@ -8022,7 +8095,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "futures 0.3.14", "futures-timer 3.0.2", @@ -8045,7 +8118,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -8061,7 +8134,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8082,7 +8155,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2 1.0.26", @@ -8093,7 +8166,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "chrono", "fdlimit", @@ -8131,7 +8204,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "derive_more 0.99.11", "fnv", @@ -8165,7 +8238,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "blake2-rfc", "hash-db", @@ -8195,7 +8268,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "parking_lot 0.11.1", "sc-client-api", @@ -8204,10 +8277,41 @@ dependencies = [ "sp-runtime", ] +[[package]] +name = "sc-consensus-aura" +version = "0.9.0" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" +dependencies = [ + "async-trait", + "derive_more 0.99.11", + "futures 0.3.14", + "futures-timer 3.0.2", + "log", + "parity-scale-codec", + "sc-block-builder", + "sc-client-api", + "sc-consensus-slots", + "sc-telemetry", + "sp-api", + "sp-application-crypto", + "sp-block-builder", + "sp-blockchain", + "sp-consensus", + "sp-consensus-aura", + "sp-consensus-slots", + "sp-core", + "sp-inherents", + "sp-io", + "sp-keystore", + "sp-runtime", + "sp-version", + "substrate-prometheus-endpoint", +] + [[package]] name = "sc-consensus-babe" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "async-trait", "derive_more 0.99.11", @@ -8253,7 +8357,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "derive_more 0.99.11", "futures 0.3.14", @@ -8277,7 +8381,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "fork-tree", "parity-scale-codec", @@ -8290,7 +8394,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "async-trait", "futures 0.3.14", @@ -8318,7 +8422,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "sc-client-api", "sp-authorship", @@ -8329,7 +8433,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "derive_more 0.99.11", "lazy_static", @@ -8359,7 +8463,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "derive_more 0.99.11", "parity-scale-codec", @@ -8376,7 +8480,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "log", "parity-scale-codec", @@ -8391,7 +8495,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "log", "parity-scale-codec", @@ -8409,7 +8513,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "async-trait", "derive_more 0.99.11", @@ -8449,7 +8553,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "derive_more 0.99.11", "finality-grandpa", @@ -8473,7 +8577,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-warp-sync" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "derive_more 0.99.11", "futures 0.3.14", @@ -8494,7 +8598,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "ansi_term 0.12.1", "futures 0.3.14", @@ -8512,7 +8616,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "async-trait", "derive_more 0.99.11", @@ -8532,7 +8636,7 @@ dependencies = [ [[package]] name = "sc-light" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "hash-db", "lazy_static", @@ -8551,7 +8655,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "async-std", "async-trait", @@ -8604,7 +8708,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "futures 0.3.14", "futures-timer 3.0.2", @@ -8621,7 +8725,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "bytes 0.5.6", "fnv", @@ -8649,7 +8753,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "futures 0.3.14", "libp2p", @@ -8662,7 +8766,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "log", "substrate-prometheus-endpoint", @@ -8671,7 +8775,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "futures 0.3.14", "hash-db", @@ -8697,6 +8801,7 @@ dependencies = [ "sp-runtime", "sp-session", "sp-state-machine", + "sp-tracing", "sp-transaction-pool", "sp-utils", "sp-version", @@ -8705,7 +8810,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "derive_more 0.99.11", "futures 0.3.14", @@ -8722,6 +8827,7 @@ dependencies = [ "sp-core", "sp-rpc", "sp-runtime", + "sp-tracing", "sp-transaction-pool", "sp-version", ] @@ -8729,7 +8835,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "futures 0.1.30", "jsonrpc-core", @@ -8747,7 +8853,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "async-trait", "directories", @@ -8811,7 +8917,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "log", "parity-scale-codec", @@ -8826,7 +8932,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -8846,7 +8952,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "chrono", "futures 0.3.14", @@ -8866,7 +8972,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "ansi_term 0.12.1", "atty", @@ -8877,23 +8983,33 @@ dependencies = [ "parking_lot 0.11.1", "regex", "rustc-hash", + "sc-client-api", + "sc-rpc-server", + "sc-telemetry", "sc-tracing-proc-macro", "serde", "serde_json", + "sp-api", + "sp-block-builder", + "sp-blockchain", + "sp-core", + "sp-rpc", + "sp-runtime", + "sp-storage", "sp-tracing", "thiserror", "tracing", - "tracing-core", "tracing-log", "tracing-subscriber", "wasm-bindgen", + "wasm-timer", "web-sys", ] [[package]] name = "sc-tracing-proc-macro" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2 1.0.26", @@ -8904,7 +9020,7 @@ dependencies = [ [[package]] name = "sc-transaction-graph" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "derive_more 0.99.11", "futures 0.3.14", @@ -8926,7 +9042,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "futures 0.3.14", "futures-diagnose", @@ -9253,10 +9369,19 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" +[[package]] +name = "slog" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06" +dependencies = [ + "erased-serde", +] + [[package]] name = "slot-range-helper" version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "enumn", "parity-scale-codec", @@ -9347,7 +9472,7 @@ dependencies = [ [[package]] name = "sp-allocator" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "log", "sp-core", @@ -9359,7 +9484,7 @@ dependencies = [ [[package]] name = "sp-api" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "hash-db", "log", @@ -9376,7 +9501,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "blake2-rfc", "proc-macro-crate 1.0.0", @@ -9388,7 +9513,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "parity-scale-codec", "serde", @@ -9400,7 +9525,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "integer-sqrt", "num-traits", @@ -9414,7 +9539,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "parity-scale-codec", "sp-api", @@ -9426,7 +9551,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "async-trait", "parity-scale-codec", @@ -9438,7 +9563,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "parity-scale-codec", "sp-api", @@ -9450,7 +9575,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "futures 0.3.14", "log", @@ -9468,7 +9593,7 @@ dependencies = [ [[package]] name = "sp-chain-spec" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "serde", "serde_json", @@ -9477,7 +9602,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "async-trait", "futures 0.3.14", @@ -9504,7 +9629,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "async-trait", "parity-scale-codec", @@ -9521,7 +9646,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "async-trait", "merlin", @@ -9543,7 +9668,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "parity-scale-codec", "sp-arithmetic", @@ -9553,7 +9678,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -9565,7 +9690,7 @@ dependencies = [ [[package]] name = "sp-core" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "base58", "blake2-rfc", @@ -9609,7 +9734,7 @@ dependencies = [ [[package]] name = "sp-database" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "kvdb", "parking_lot 0.11.1", @@ -9618,7 +9743,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "proc-macro2 1.0.26", "quote 1.0.9", @@ -9628,7 +9753,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "environmental", "parity-scale-codec", @@ -9639,7 +9764,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "finality-grandpa", "log", @@ -9656,7 +9781,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -9670,7 +9795,7 @@ dependencies = [ [[package]] name = "sp-io" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "futures 0.3.14", "hash-db", @@ -9694,7 +9819,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "lazy_static", "sp-core", @@ -9705,7 +9830,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "async-trait", "derive_more 0.99.11", @@ -9722,7 +9847,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "ruzstd", "zstd", @@ -9731,7 +9856,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "parity-scale-codec", "serde", @@ -9744,7 +9869,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-compact" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "proc-macro-crate 1.0.0", "proc-macro2 1.0.26", @@ -9755,7 +9880,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "sp-api", "sp-core", @@ -9765,7 +9890,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "backtrace", ] @@ -9773,16 +9898,18 @@ dependencies = [ [[package]] name = "sp-rpc" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ + "rustc-hash", "serde", "sp-core", + "tracing-core", ] [[package]] name = "sp-runtime" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "either", "hash256-std-hasher", @@ -9803,7 +9930,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -9820,7 +9947,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "Inflector", "proc-macro-crate 1.0.0", @@ -9832,7 +9959,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "serde", "serde_json", @@ -9841,7 +9968,7 @@ dependencies = [ [[package]] name = "sp-session" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "parity-scale-codec", "sp-api", @@ -9854,7 +9981,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "parity-scale-codec", "sp-runtime", @@ -9864,7 +9991,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "hash-db", "log", @@ -9879,6 +10006,7 @@ dependencies = [ "sp-std", "sp-trie", "thiserror", + "tracing", "trie-db", "trie-root 0.16.0", ] @@ -9886,12 +10014,12 @@ dependencies = [ [[package]] name = "sp-std" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" [[package]] name = "sp-storage" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "impl-serde", "parity-scale-codec", @@ -9904,7 +10032,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "log", "sp-core", @@ -9917,7 +10045,7 @@ dependencies = [ [[package]] name = "sp-test-primitives" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -9930,7 +10058,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "async-trait", "futures-timer 3.0.2", @@ -9947,10 +10075,15 @@ dependencies = [ [[package]] name = "sp-tracing" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ + "erased-serde", "log", "parity-scale-codec", + "parking_lot 0.10.2", + "serde", + "serde_json", + "slog", "sp-std", "tracing", "tracing-core", @@ -9960,7 +10093,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "derive_more 0.99.11", "futures 0.3.14", @@ -9976,7 +10109,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "hash-db", "memory-db", @@ -9990,7 +10123,7 @@ dependencies = [ [[package]] name = "sp-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "futures 0.3.14", "futures-core", @@ -10002,7 +10135,7 @@ dependencies = [ [[package]] name = "sp-version" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "impl-serde", "parity-scale-codec", @@ -10014,7 +10147,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -10172,7 +10305,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "platforms", ] @@ -10180,7 +10313,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.14", @@ -10203,7 +10336,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "async-std", "derive_more 0.99.11", @@ -10217,7 +10350,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.1" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "async-trait", "futures 0.1.30", @@ -10246,7 +10379,7 @@ dependencies = [ [[package]] name = "substrate-test-runtime" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "cfg-if 1.0.0", "frame-support", @@ -10287,7 +10420,7 @@ dependencies = [ [[package]] name = "substrate-test-runtime-client" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "futures 0.3.14", "parity-scale-codec", @@ -10308,7 +10441,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "3.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "futures 0.3.14", "substrate-test-utils-derive", @@ -10318,7 +10451,7 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "proc-macro-crate 1.0.0", "quote 1.0.9", @@ -10344,7 +10477,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "4.0.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "ansi_term 0.12.1", "atty", @@ -11022,7 +11155,7 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.9.0" -source = "git+https://github.com/paritytech/substrate?branch=master#a8ada8a654a1e50d855345d07f5f8f8cbce0a818" +source = "git+https://github.com/paritytech/substrate?branch=master#75957575080a6eacfbdf8995b63f2693ee33efe6" dependencies = [ "frame-try-runtime", "log", @@ -11048,7 +11181,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04f8ab788026715fa63b31960869617cba39117e520eb415b0139543e325ab59" dependencies = [ "cfg-if 0.1.10", - "rand 0.7.3", + "rand 0.6.5", "static_assertions", ] @@ -11675,7 +11808,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "beefy-primitives", "bitvec", @@ -11856,7 +11989,7 @@ dependencies = [ [[package]] name = "xcm" version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "derivative", "impl-trait-for-tuples", @@ -11866,7 +11999,7 @@ dependencies = [ [[package]] name = "xcm-builder" version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "frame-support", "frame-system", @@ -11885,7 +12018,7 @@ dependencies = [ [[package]] name = "xcm-executor" version = "0.9.0" -source = "git+https://github.com/paritytech/polkadot?branch=master#a27a83e58765f2552917f74e8e4f88fe80041f68" +source = "git+https://github.com/paritytech/polkadot?branch=master#46e39860719ed644a440ac2e776e14fe1d73c7ec" dependencies = [ "frame-support", "impl-trait-for-tuples", diff --git a/cumulus/Cargo.toml b/cumulus/Cargo.toml index 50421776ab030408caceed1382082ca3af7830d5..64bd920de4767347316251e8a225958b1a781765 100644 --- a/cumulus/Cargo.toml +++ b/cumulus/Cargo.toml @@ -1,10 +1,12 @@ [workspace] members = [ "client/cli", + "client/consensus/aura", "client/consensus/common", "client/consensus/relay-chain", "client/network", "client/service", + "pallets/aura-ext", "pallets/dmp-queue", "pallets/parachain-system", "pallets/xcm", diff --git a/cumulus/client/consensus/aura/Cargo.toml b/cumulus/client/consensus/aura/Cargo.toml new file mode 100644 index 0000000000000000000000000000000000000000..4240aeccc2f21c3240ffa6a91b8bb39476e1efae --- /dev/null +++ b/cumulus/client/consensus/aura/Cargo.toml @@ -0,0 +1,38 @@ +[package] +name = "cumulus-client-consensus-aura" +description = "AURA consensus algorithm for parachains" +version = "0.1.0" +authors = ["Parity Technologies <admin@parity.io>"] +edition = "2018" + +[dependencies] +# Substrate dependencies +sp-consensus = { 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-core = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-block-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-application-crypto = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-consensus-slots = { git = "https://github.com/paritytech/substrate", branch = "master" } +sc-telemetry = { git = "https://github.com/paritytech/substrate", branch = "master" } +substrate-prometheus-endpoint = { git = "https://github.com/paritytech/substrate", branch = "master" } + +# Polkadot dependencies +polkadot-service = { git = "https://github.com/paritytech/polkadot", branch = "master" } + +# Cumulus dependencies +cumulus-client-consensus-common = { path = "../common" } +cumulus-primitives-core = { path = "../../../primitives/core" } + +# Other deps +futures = { version = "0.3.8", features = ["compat"] } +codec = { package = "parity-scale-codec", version = "2.0.0", features = [ "derive" ] } +tracing = "0.1.22" +async-trait = "0.1.42" +parking_lot = "0.9" diff --git a/cumulus/client/consensus/aura/src/import_queue.rs b/cumulus/client/consensus/aura/src/import_queue.rs new file mode 100644 index 0000000000000000000000000000000000000000..2e677d4ac622a6cacfd46cc3d5bf80228dd487fc --- /dev/null +++ b/cumulus/client/consensus/aura/src/import_queue.rs @@ -0,0 +1,101 @@ +// Copyright 2021 Parity Technologies (UK) Ltd. +// This file is part of Cumulus. + +// Cumulus 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. + +// Cumulus 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 Cumulus. If not, see <http://www.gnu.org/licenses/>. + +//! Parachain specific wrapper for the AuRa import queue. + +use codec::Codec; +use sc_client_api::{backend::AuxStore, BlockOf}; +use sc_consensus_slots::InherentDataProviderExt; +use sp_api::{ApiExt, ProvideRuntimeApi}; +use sp_block_builder::BlockBuilder as BlockBuilderApi; +use sp_blockchain::{HeaderBackend, ProvideCache}; +use sp_consensus::{ + import_queue::DefaultImportQueue, BlockImport, CanAuthorWith, Error as ConsensusError, +}; +use sp_consensus_aura::{digests::CompatibleDigestItem, AuraApi}; +use sp_core::crypto::Pair; +use sp_inherents::CreateInherentDataProviders; +use sp_runtime::traits::{Block as BlockT, DigestItemFor}; +use std::{fmt::Debug, hash::Hash, sync::Arc}; +use substrate_prometheus_endpoint::Registry; +use sc_telemetry::TelemetryHandle; + +/// Parameters of [`import_queue`]. +pub struct ImportQueueParams<'a, I, C, IDP, S, CAW> { + /// The block import to use. + pub block_import: I, + /// The client to interact with the chain. + pub client: Arc<C>, + /// The inherent data providers, to create the inherent data. + pub create_inherent_data_providers: IDP, + /// The spawner to spawn background tasks. + pub spawner: &'a S, + /// The prometheus registry. + pub registry: Option<&'a Registry>, + /// Can we author with the current node? + pub can_author_with: CAW, + /// The telemetry handle. + pub telemetry: Option<TelemetryHandle>, +} + +/// Start an import queue for the Aura consensus algorithm. +pub fn import_queue<'a, P, Block, I, C, S, CAW, IDP>( + ImportQueueParams { + block_import, + client, + create_inherent_data_providers, + spawner, + registry, + can_author_with, + telemetry, + }: ImportQueueParams<'a, I, C, IDP, S, CAW>, +) -> Result<DefaultImportQueue<Block, C>, sp_consensus::Error> +where + Block: BlockT, + C::Api: BlockBuilderApi<Block> + AuraApi<Block, P::Public> + ApiExt<Block>, + C: 'static + + ProvideRuntimeApi<Block> + + BlockOf + + ProvideCache<Block> + + Send + + Sync + + AuxStore + + HeaderBackend<Block>, + I: BlockImport<Block, Error = ConsensusError, Transaction = sp_api::TransactionFor<C, Block>> + + Send + + Sync + + 'static, + DigestItemFor<Block>: CompatibleDigestItem<P::Signature>, + P: Pair + Send + Sync + 'static, + P::Public: Clone + Eq + Send + Sync + Hash + Debug + Codec, + P::Signature: Codec, + S: sp_core::traits::SpawnEssentialNamed, + CAW: CanAuthorWith<Block> + Send + Sync + 'static, + IDP: CreateInherentDataProviders<Block, ()> + Sync + Send + 'static, + IDP::InherentDataProviders: InherentDataProviderExt + Send + Sync, +{ + sc_consensus_aura::import_queue::<P, _, _, _, _, _, _>(sc_consensus_aura::ImportQueueParams { + block_import: crate::ParachainBlockImport(block_import), + justification_import: None, + client, + create_inherent_data_providers, + spawner, + registry, + can_author_with, + check_for_equivocation: sc_consensus_aura::CheckForEquivocation::No, + telemetry, + }) +} diff --git a/cumulus/client/consensus/aura/src/lib.rs b/cumulus/client/consensus/aura/src/lib.rs new file mode 100644 index 0000000000000000000000000000000000000000..2fd1c7624f5b9d40f7b00382cd9ca55582ebd2a0 --- /dev/null +++ b/cumulus/client/consensus/aura/src/lib.rs @@ -0,0 +1,536 @@ +// Copyright 2021 Parity Technologies (UK) Ltd. +// This file is part of Cumulus. + +// Cumulus 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. + +// Cumulus 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 Cumulus. If not, see <http://www.gnu.org/licenses/>. + +//! The AuRa consensus algoritm for parachains. +//! +//! This extends the Substrate provided AuRa consensus implementation to make it compatible for +//! parachains. The main entry points for of this consensus algorithm are [`build_aura_consensus`] +//! and [`import_queue`]. +//! +//! For more information about AuRa, the Substrate crate should be checked. + +use codec::{Decode, Encode}; +use cumulus_client_consensus_common::{ParachainCandidate, ParachainConsensus}; +use cumulus_primitives_core::{ + relay_chain::v1::{Block as PBlock, Hash as PHash, ParachainHost}, + PersistedValidationData, +}; +use futures::lock::Mutex; +use polkadot_service::ClientHandle; +use sc_client_api::{backend::AuxStore, Backend, BlockOf}; +use sc_consensus_slots::{BackoffAuthoringBlocksStrategy, SlotInfo}; +use sc_telemetry::TelemetryHandle; +use sp_api::ProvideRuntimeApi; +use sp_application_crypto::AppPublic; +use sp_blockchain::{HeaderBackend, ProvideCache}; +use sp_consensus::{ + BlockImport, EnableProofRecording, Environment, ProofRecording, Proposer, SlotData, SyncOracle, +}; +use sp_consensus_aura::AuraApi; +use sp_core::crypto::Pair; +use sp_inherents::{CreateInherentDataProviders, InherentData, InherentDataProvider}; +use sp_keystore::SyncCryptoStorePtr; +use sp_runtime::traits::{Block as BlockT, HashFor, Header as HeaderT, Member, NumberFor}; +use std::{convert::TryFrom, hash::Hash, marker::PhantomData, sync::Arc}; + +mod import_queue; + +pub use import_queue::{import_queue, ImportQueueParams}; +pub use sc_consensus_aura::{ + slot_duration, AuraBlockImport, BuildAuraWorkerParams, SlotDuration, SlotProportion, +}; +pub use sc_consensus_slots::InherentDataProviderExt; + +const LOG_TARGET: &str = "aura::cumulus"; + +/// The implementation of the AURA consensus for parachains. +pub struct AuraConsensus<B, RClient, RBackend, CIDP> { + create_inherent_data_providers: Arc<CIDP>, + relay_chain_client: Arc<RClient>, + relay_chain_backend: Arc<RBackend>, + aura_worker: Arc< + Mutex< + dyn sc_consensus_slots::SlotWorker<B, <EnableProofRecording as ProofRecording>::Proof> + + Send + + 'static, + >, + >, + slot_duration: SlotDuration, +} + +impl<B, RClient, RBackend, CIDP> Clone for AuraConsensus<B, RClient, RBackend, CIDP> { + fn clone(&self) -> Self { + Self { + create_inherent_data_providers: self.create_inherent_data_providers.clone(), + relay_chain_backend: self.relay_chain_backend.clone(), + relay_chain_client: self.relay_chain_client.clone(), + aura_worker: self.aura_worker.clone(), + slot_duration: self.slot_duration, + } + } +} + +impl<B, RClient, RBackend, CIDP> AuraConsensus<B, RClient, RBackend, CIDP> +where + B: BlockT, + RClient: ProvideRuntimeApi<PBlock>, + RClient::Api: ParachainHost<PBlock>, + RBackend: Backend<PBlock>, + CIDP: CreateInherentDataProviders<B, (PHash, PersistedValidationData)>, + CIDP::InherentDataProviders: InherentDataProviderExt, +{ + /// Create a new instance of AURA consensus. + pub fn new<P, Client, BI, SO, PF, BS, Error>( + para_client: Arc<Client>, + block_import: BI, + sync_oracle: SO, + proposer_factory: PF, + force_authoring: bool, + backoff_authoring_blocks: Option<BS>, + keystore: SyncCryptoStorePtr, + create_inherent_data_providers: CIDP, + polkadot_client: Arc<RClient>, + polkadot_backend: Arc<RBackend>, + slot_duration: SlotDuration, + telemetry: Option<TelemetryHandle>, + block_proposal_slot_portion: SlotProportion, + ) -> Self + where + Client: ProvideRuntimeApi<B> + + BlockOf + + ProvideCache<B> + + AuxStore + + HeaderBackend<B> + + Send + + Sync + + 'static, + Client::Api: AuraApi<B, P::Public>, + BI: BlockImport<B, Transaction = sp_api::TransactionFor<Client, B>> + Send + Sync + 'static, + SO: SyncOracle + Send + Sync + Clone + 'static, + BS: BackoffAuthoringBlocksStrategy<NumberFor<B>> + Send + 'static, + PF: Environment<B, Error = Error> + Send + Sync + 'static, + PF::Proposer: Proposer< + B, + Error = Error, + Transaction = sp_api::TransactionFor<Client, B>, + ProofRecording = EnableProofRecording, + Proof = <EnableProofRecording as ProofRecording>::Proof, + >, + Error: std::error::Error + Send + From<sp_consensus::Error> + 'static, + P: Pair + Send + Sync, + P::Public: AppPublic + Hash + Member + Encode + Decode, + P::Signature: TryFrom<Vec<u8>> + Hash + Member + Encode + Decode, + { + let worker = + sc_consensus_aura::build_aura_worker::<P, _, _, _, _, _, _, _>(BuildAuraWorkerParams { + client: para_client, + block_import: ParachainBlockImport(block_import), + proposer_factory, + sync_oracle, + force_authoring, + backoff_authoring_blocks, + keystore, + telemetry, + block_proposal_slot_portion, + }); + + Self { + create_inherent_data_providers: Arc::new(create_inherent_data_providers), + relay_chain_backend: polkadot_backend, + relay_chain_client: polkadot_client, + aura_worker: Arc::new(Mutex::new(worker)), + slot_duration, + } + } + + /// Create the inherent data. + /// + /// Returns the created inherent data and the inherent data providers used. + async fn inherent_data( + &self, + parent: B::Hash, + validation_data: &PersistedValidationData, + relay_parent: PHash, + ) -> Option<(InherentData, CIDP::InherentDataProviders)> { + let inherent_data_providers = self + .create_inherent_data_providers + .create_inherent_data_providers(parent, (relay_parent, validation_data.clone())) + .await + .map_err(|e| { + tracing::error!( + target: LOG_TARGET, + error = ?e, + "Failed to create inherent data providers.", + ) + }) + .ok()?; + + inherent_data_providers + .create_inherent_data() + .map_err(|e| { + tracing::error!( + target: LOG_TARGET, + error = ?e, + "Failed to create inherent data.", + ) + }) + .ok() + .map(|d| (d, inherent_data_providers)) + } +} + +#[async_trait::async_trait] +impl<B, RClient, RBackend, CIDP> ParachainConsensus<B> for AuraConsensus<B, RClient, RBackend, CIDP> +where + B: BlockT, + RClient: ProvideRuntimeApi<PBlock> + Send + Sync, + RClient::Api: ParachainHost<PBlock>, + RBackend: Backend<PBlock>, + CIDP: CreateInherentDataProviders<B, (PHash, PersistedValidationData)> + Send + Sync, + CIDP::InherentDataProviders: InherentDataProviderExt + Send, +{ + async fn produce_candidate( + &mut self, + parent: &B::Header, + relay_parent: PHash, + validation_data: &PersistedValidationData, + ) -> Option<ParachainCandidate<B>> { + let (inherent_data, inherent_data_providers) = self + .inherent_data(parent.hash(), validation_data, relay_parent) + .await?; + + let info = SlotInfo::new( + inherent_data_providers.slot(), + inherent_data_providers.timestamp(), + inherent_data, + self.slot_duration.slot_duration(), + parent.clone(), + // Set the block limit to 50% of the maximum PoV size. + // + // TODO: If we got benchmarking that includes the proof size, + // we should be able to use the maximum pov size. + Some((validation_data.max_pov_size / 2) as usize), + ); + + let res = self.aura_worker.lock().await.on_slot(info).await?; + + Some(ParachainCandidate { + block: res.block, + proof: res.storage_proof, + }) + } +} + +/// Parachain specific block import. +/// +/// This is used to set `block_import_params.fork_choice` to `false` as long as the block origin is +/// not `NetworkInitialSync`. The best block for parachains is determined by the relay chain. Meaning +/// we will update the best block, as it is included by the relay-chain. +struct ParachainBlockImport<I>(I); + +#[async_trait::async_trait] +impl<Block, I> BlockImport<Block> for ParachainBlockImport<I> +where + Block: BlockT, + I: BlockImport<Block> + Send, +{ + type Error = I::Error; + type Transaction = I::Transaction; + + async fn check_block( + &mut self, + block: sp_consensus::BlockCheckParams<Block>, + ) -> Result<sp_consensus::ImportResult, Self::Error> { + self.0.check_block(block).await + } + + async fn import_block( + &mut self, + mut block_import_params: sp_consensus::BlockImportParams<Block, Self::Transaction>, + cache: std::collections::HashMap<sp_consensus::import_queue::CacheKeyId, Vec<u8>>, + ) -> Result<sp_consensus::ImportResult, Self::Error> { + // Best block is determined by the relay chain, or if we are doing the intial sync + // we import all blocks as new best. + block_import_params.fork_choice = Some(sp_consensus::ForkChoiceStrategy::Custom( + block_import_params.origin == sp_consensus::BlockOrigin::NetworkInitialSync, + )); + self.0.import_block(block_import_params, cache).await + } +} + +/// Paramaters of [`build_aura_consensus`]. +pub struct BuildAuraConsensusParams<PF, BI, RBackend, CIDP, Client, BS, SO> { + pub proposer_factory: PF, + pub create_inherent_data_providers: CIDP, + pub block_import: BI, + pub relay_chain_client: polkadot_service::Client, + pub relay_chain_backend: Arc<RBackend>, + pub para_client: Arc<Client>, + pub backoff_authoring_blocks: Option<BS>, + pub sync_oracle: SO, + pub keystore: SyncCryptoStorePtr, + pub force_authoring: bool, + pub slot_duration: SlotDuration, + pub telemetry: Option<TelemetryHandle>, + pub block_proposal_slot_portion: SlotProportion, +} + +/// Build the [`AuraConsensus`]. +/// +/// Returns a boxed [`ParachainConsensus`]. +pub fn build_aura_consensus<P, Block, PF, BI, RBackend, CIDP, Client, SO, BS, Error>( + BuildAuraConsensusParams { + proposer_factory, + create_inherent_data_providers, + block_import, + relay_chain_client, + relay_chain_backend, + para_client, + backoff_authoring_blocks, + sync_oracle, + keystore, + force_authoring, + slot_duration, + telemetry, + block_proposal_slot_portion, + }: BuildAuraConsensusParams<PF, BI, RBackend, CIDP, Client, BS, SO>, +) -> Box<dyn ParachainConsensus<Block>> +where + Block: BlockT, + // Rust bug: https://github.com/rust-lang/rust/issues/24159 + sc_client_api::StateBackendFor<RBackend, PBlock>: sc_client_api::StateBackend<HashFor<PBlock>>, + RBackend: Backend<PBlock> + 'static, + CIDP: CreateInherentDataProviders<Block, (PHash, PersistedValidationData)> + + Send + + Sync + + 'static, + CIDP::InherentDataProviders: InherentDataProviderExt + Send, + Client: ProvideRuntimeApi<Block> + + BlockOf + + ProvideCache<Block> + + AuxStore + + HeaderBackend<Block> + + Send + + Sync + + 'static, + Client::Api: AuraApi<Block, P::Public>, + BI: BlockImport<Block, Transaction = sp_api::TransactionFor<Client, Block>> + + Send + + Sync + + 'static, + SO: SyncOracle + Send + Sync + Clone + 'static, + BS: BackoffAuthoringBlocksStrategy<NumberFor<Block>> + Send + 'static, + PF: Environment<Block, Error = Error> + Send + Sync + 'static, + PF::Proposer: Proposer< + Block, + Error = Error, + Transaction = sp_api::TransactionFor<Client, Block>, + ProofRecording = EnableProofRecording, + Proof = <EnableProofRecording as ProofRecording>::Proof, + >, + Error: std::error::Error + Send + From<sp_consensus::Error> + 'static, + P: Pair + Send + Sync, + P::Public: AppPublic + Hash + Member + Encode + Decode, + P::Signature: TryFrom<Vec<u8>> + Hash + Member + Encode + Decode, +{ + AuraConsensusBuilder::<P, _, _, _, _, _, _, _, _, _>::new( + proposer_factory, + block_import, + create_inherent_data_providers, + relay_chain_client, + relay_chain_backend, + para_client, + backoff_authoring_blocks, + sync_oracle, + force_authoring, + keystore, + slot_duration, + telemetry, + block_proposal_slot_portion, + ) + .build() +} + +/// Aura consensus builder. +/// +/// Builds a [`AuraConsensus`] for a parachain. As this requires +/// a concrete relay chain client instance, the builder takes a [`polkadot_service::Client`] +/// that wraps this concrete instance. By using [`polkadot_service::ExecuteWithClient`] +/// the builder gets access to this concrete instance. +struct AuraConsensusBuilder<P, Block, PF, BI, RBackend, CIDP, Client, SO, BS, Error> { + _phantom: PhantomData<(Block, Error, P)>, + proposer_factory: PF, + create_inherent_data_providers: CIDP, + block_import: BI, + relay_chain_backend: Arc<RBackend>, + relay_chain_client: polkadot_service::Client, + para_client: Arc<Client>, + backoff_authoring_blocks: Option<BS>, + sync_oracle: SO, + force_authoring: bool, + keystore: SyncCryptoStorePtr, + slot_duration: SlotDuration, + telemetry: Option<TelemetryHandle>, + block_proposal_slot_portion: SlotProportion, +} + +impl<Block, PF, BI, RBackend, CIDP, Client, SO, BS, P, Error> + AuraConsensusBuilder<P, Block, PF, BI, RBackend, CIDP, Client, SO, BS, Error> +where + Block: BlockT, + // Rust bug: https://github.com/rust-lang/rust/issues/24159 + sc_client_api::StateBackendFor<RBackend, PBlock>: sc_client_api::StateBackend<HashFor<PBlock>>, + RBackend: Backend<PBlock> + 'static, + CIDP: CreateInherentDataProviders<Block, (PHash, PersistedValidationData)> + + Send + + Sync + + 'static, + CIDP::InherentDataProviders: InherentDataProviderExt + Send, + Client: ProvideRuntimeApi<Block> + + BlockOf + + ProvideCache<Block> + + AuxStore + + HeaderBackend<Block> + + Send + + Sync + + 'static, + Client::Api: AuraApi<Block, P::Public>, + BI: BlockImport<Block, Transaction = sp_api::TransactionFor<Client, Block>> + + Send + + Sync + + 'static, + SO: SyncOracle + Send + Sync + Clone + 'static, + BS: BackoffAuthoringBlocksStrategy<NumberFor<Block>> + Send + 'static, + PF: Environment<Block, Error = Error> + Send + Sync + 'static, + PF::Proposer: Proposer< + Block, + Error = Error, + Transaction = sp_api::TransactionFor<Client, Block>, + ProofRecording = EnableProofRecording, + Proof = <EnableProofRecording as ProofRecording>::Proof, + >, + Error: std::error::Error + Send + From<sp_consensus::Error> + 'static, + P: Pair + Send + Sync, + P::Public: AppPublic + Hash + Member + Encode + Decode, + P::Signature: TryFrom<Vec<u8>> + Hash + Member + Encode + Decode, +{ + /// Create a new instance of the builder. + fn new( + proposer_factory: PF, + block_import: BI, + create_inherent_data_providers: CIDP, + relay_chain_client: polkadot_service::Client, + relay_chain_backend: Arc<RBackend>, + para_client: Arc<Client>, + backoff_authoring_blocks: Option<BS>, + sync_oracle: SO, + force_authoring: bool, + keystore: SyncCryptoStorePtr, + slot_duration: SlotDuration, + telemetry: Option<TelemetryHandle>, + block_proposal_slot_portion: SlotProportion, + ) -> Self { + Self { + _phantom: PhantomData, + proposer_factory, + block_import, + create_inherent_data_providers, + relay_chain_backend, + relay_chain_client, + para_client, + backoff_authoring_blocks, + sync_oracle, + force_authoring, + keystore, + slot_duration, + telemetry, + block_proposal_slot_portion, + } + } + + /// Build the relay chain consensus. + fn build(self) -> Box<dyn ParachainConsensus<Block>> { + self.relay_chain_client.clone().execute_with(self) + } +} + +impl<Block, PF, BI, RBackend, CIDP, Client, SO, BS, P, Error> polkadot_service::ExecuteWithClient + for AuraConsensusBuilder<P, Block, PF, BI, RBackend, CIDP, Client, SO, BS, Error> +where + Block: BlockT, + // Rust bug: https://github.com/rust-lang/rust/issues/24159 + sc_client_api::StateBackendFor<RBackend, PBlock>: sc_client_api::StateBackend<HashFor<PBlock>>, + RBackend: Backend<PBlock> + 'static, + CIDP: CreateInherentDataProviders<Block, (PHash, PersistedValidationData)> + + Send + + Sync + + 'static, + CIDP::InherentDataProviders: InherentDataProviderExt + Send, + Client: ProvideRuntimeApi<Block> + + BlockOf + + ProvideCache<Block> + + AuxStore + + HeaderBackend<Block> + + Send + + Sync + + 'static, + Client::Api: AuraApi<Block, P::Public>, + BI: BlockImport<Block, Transaction = sp_api::TransactionFor<Client, Block>> + + Send + + Sync + + 'static, + SO: SyncOracle + Send + Sync + Clone + 'static, + BS: BackoffAuthoringBlocksStrategy<NumberFor<Block>> + Send + 'static, + PF: Environment<Block, Error = Error> + Send + Sync + 'static, + PF::Proposer: Proposer< + Block, + Error = Error, + Transaction = sp_api::TransactionFor<Client, Block>, + ProofRecording = EnableProofRecording, + Proof = <EnableProofRecording as ProofRecording>::Proof, + >, + Error: std::error::Error + Send + From<sp_consensus::Error> + 'static, + P: Pair + Send + Sync, + P::Public: AppPublic + Hash + Member + Encode + Decode, + P::Signature: TryFrom<Vec<u8>> + Hash + Member + Encode + Decode, +{ + type Output = Box<dyn ParachainConsensus<Block>>; + + fn execute_with_client<PClient, Api, PBackend>(self, client: Arc<PClient>) -> Self::Output + where + <Api as sp_api::ApiExt<PBlock>>::StateBackend: sp_api::StateBackend<HashFor<PBlock>>, + PBackend: Backend<PBlock>, + PBackend::State: sp_api::StateBackend<sp_runtime::traits::BlakeTwo256>, + Api: polkadot_service::RuntimeApiCollection<StateBackend = PBackend::State>, + PClient: polkadot_service::AbstractClient<PBlock, PBackend, Api = Api> + 'static, + { + Box::new(AuraConsensus::new::<P, _, _, _, _, _, _>( + self.para_client, + self.block_import, + self.sync_oracle, + self.proposer_factory, + self.force_authoring, + self.backoff_authoring_blocks, + self.keystore, + self.create_inherent_data_providers, + client.clone(), + self.relay_chain_backend, + self.slot_duration, + self.telemetry, + self.block_proposal_slot_portion, + )) + } +} diff --git a/cumulus/client/consensus/relay-chain/Cargo.toml b/cumulus/client/consensus/relay-chain/Cargo.toml index ce70fafcbf4edb76e11c2c48a6c318eb46edb5d3..d3da3ba601a568b954be3ba11df9372f35a7c9d5 100644 --- a/cumulus/client/consensus/relay-chain/Cargo.toml +++ b/cumulus/client/consensus/relay-chain/Cargo.toml @@ -23,7 +23,6 @@ polkadot-service = { git = "https://github.com/paritytech/polkadot", branch = "m # Cumulus dependencies cumulus-client-consensus-common = { path = "../common" } cumulus-primitives-core = { path = "../../../primitives/core" } -cumulus-primitives-parachain-inherent = { path = "../../../primitives/parachain-inherent" } # Other deps futures = { version = "0.3.8", features = ["compat"] } diff --git a/cumulus/client/consensus/relay-chain/src/import_queue.rs b/cumulus/client/consensus/relay-chain/src/import_queue.rs index e4361c1d727dd54531710db592c18ffb96a2ce65..a1377c7bb055cea51692de4f14ca33e4afcc3290 100644 --- a/cumulus/client/consensus/relay-chain/src/import_queue.rs +++ b/cumulus/client/consensus/relay-chain/src/import_queue.rs @@ -64,7 +64,7 @@ where .create_inherent_data_providers .create_inherent_data_providers(*header.parent_hash(), ()) .await - .map_err(|e| format!("{:?}", e))?; + .map_err(|e| e.to_string())?; let inherent_data = inherent_data_providers .create_inherent_data() diff --git a/cumulus/client/consensus/relay-chain/src/lib.rs b/cumulus/client/consensus/relay-chain/src/lib.rs index 520a44077eab08131aa692adda2e50eb8860cb70..1743a84eb5ed3f688b1ccd4425fea52b4454d98d 100644 --- a/cumulus/client/consensus/relay-chain/src/lib.rs +++ b/cumulus/client/consensus/relay-chain/src/lib.rs @@ -38,7 +38,6 @@ use cumulus_primitives_core::{ relay_chain::v1::{Block as PBlock, Hash as PHash, ParachainHost}, ParaId, PersistedValidationData, }; -use cumulus_primitives_parachain_inherent::ParachainInherentData; use parking_lot::Mutex; use polkadot_service::ClientHandle; use sc_client_api::Backend; @@ -89,7 +88,7 @@ where RClient: ProvideRuntimeApi<PBlock>, RClient::Api: ParachainHost<PBlock>, RBackend: Backend<PBlock>, - CIDP: CreateInherentDataProviders<B, ()>, + CIDP: CreateInherentDataProviders<B, (PHash, PersistedValidationData)>, { /// Create a new instance of relay-chain provided consensus. pub fn new( @@ -120,18 +119,18 @@ where ) -> Option<InherentData> { let inherent_data_providers = self .create_inherent_data_providers - .create_inherent_data_providers(parent, ()) + .create_inherent_data_providers(parent, (relay_parent, validation_data.clone())) .await .map_err(|e| { tracing::error!( target: LOG_TARGET, error = ?e, - "Failed to create inherent data providers", + "Failed to create inherent data providers.", ) }) .ok()?; - let mut inherent_data = inherent_data_providers + inherent_data_providers .create_inherent_data() .map_err(|e| { tracing::error!( @@ -140,31 +139,7 @@ where "Failed to create inherent data.", ) }) - .ok()?; - - let parachain_inherent_data = ParachainInherentData::create_at( - relay_parent, - &*self.relay_chain_client, - &*self.relay_chain_backend, - validation_data, - self.para_id, - )?; - - inherent_data - .put_data( - cumulus_primitives_parachain_inherent::INHERENT_IDENTIFIER, - ¶chain_inherent_data, - ) - .map_err(|e| { - tracing::error!( - target: LOG_TARGET, - error = ?e, - "Failed to put the system inherent into inherent data.", - ) - }) - .ok()?; - - Some(inherent_data) + .ok() } } @@ -184,7 +159,7 @@ where ProofRecording = EnableProofRecording, Proof = <EnableProofRecording as ProofRecording>::Proof, >, - CIDP: CreateInherentDataProviders<B, ()>, + CIDP: CreateInherentDataProviders<B, (PHash, PersistedValidationData)>, { async fn produce_candidate( &mut self, @@ -201,7 +176,9 @@ where ) .ok()?; - let inherent_data = self.inherent_data(parent.hash(), &validation_data, relay_parent).await?; + let inherent_data = self + .inherent_data(parent.hash(), &validation_data, relay_parent) + .await?; let Proposal { block, @@ -288,7 +265,7 @@ where RBackend: Backend<PBlock> + 'static, // Rust bug: https://github.com/rust-lang/rust/issues/24159 sc_client_api::StateBackendFor<RBackend, PBlock>: sc_client_api::StateBackend<HashFor<PBlock>>, - CIDP: CreateInherentDataProviders<Block, ()> + 'static, + CIDP: CreateInherentDataProviders<Block, (PHash, PersistedValidationData)> + 'static, { RelayChainConsensusBuilder::new( para_id, @@ -331,7 +308,7 @@ where >, BI: BlockImport<Block> + Send + Sync + 'static, RBackend: Backend<PBlock> + 'static, - CIDP: CreateInherentDataProviders<Block, ()> + 'static, + CIDP: CreateInherentDataProviders<Block, (PHash, PersistedValidationData)> + 'static, { /// Create a new instance of the builder. fn new( @@ -374,7 +351,7 @@ where >, BI: BlockImport<Block> + Send + Sync + 'static, RBackend: Backend<PBlock> + 'static, - CIDP: CreateInherentDataProviders<Block, ()> + 'static, + CIDP: CreateInherentDataProviders<Block, (PHash, PersistedValidationData)> + 'static, { type Output = Box<dyn ParachainConsensus<Block>>; diff --git a/cumulus/pallets/aura-ext/Cargo.toml b/cumulus/pallets/aura-ext/Cargo.toml new file mode 100644 index 0000000000000000000000000000000000000000..375977a8245b10b4290174f7840607e03aae1a54 --- /dev/null +++ b/cumulus/pallets/aura-ext/Cargo.toml @@ -0,0 +1,39 @@ +[package] +name = "cumulus-pallet-aura-ext" +version = "0.1.0" +authors = ["Parity Technologies <admin@parity.io>"] +edition = "2018" +description = "AURA consensus extension pallet for parachains" + +[dependencies] +# Substrate dependencies +frame-support = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +frame-system = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-aura = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-consensus-aura = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-std = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-runtime = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-application-crypto = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } + +# Other Dependencies +codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = ["derive"]} +serde = { version = "1.0.101", optional = true, features = ["derive"] } + +[dev-dependencies] +cumulus-pallet-parachain-system = { path = "../parachain-system" } + +[features] +default = [ "std" ] +std = [ + "codec/std", + "serde", + "frame-support/std", + "sp-runtime/std", + "sp-std/std", + "frame-system/std", + "frame-executive/std", + "pallet-aura/std", + "sp-consensus-aura/std", + "sp-application-crypto/std", +] diff --git a/cumulus/pallets/aura-ext/src/lib.rs b/cumulus/pallets/aura-ext/src/lib.rs new file mode 100644 index 0000000000000000000000000000000000000000..3638f5d9181cea26cf1c1509e0cfb1fca4731c31 --- /dev/null +++ b/cumulus/pallets/aura-ext/src/lib.rs @@ -0,0 +1,161 @@ +// Copyright 2021 Parity Technologies (UK) Ltd. +// This file is part of Cumulus. + +// Cumulus 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. + +// Cumulus 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 Cumulus. If not, see <http://www.gnu.org/licenses/>. + +//! Cumulus extension pallet for AuRa +//! +//! This pallets extends the Substrate AuRa pallet to make it compatible with parachains. It +//! provides the [`Pallet`], the [`Config`] and the [`GenesisConfig`]. +//! +//! It is also required that the parachain runtime uses the provided [`BlockExecutor`] to properly +//! check the constructed block on the relay chain. +//! +//! ``` +//!# struct Runtime; +//!# struct Executive; +//! cumulus_pallet_parachain_system::register_validate_block!( +//! Runtime, +//! cumulus_pallet_aura_ext::BlockExecutor::<Runtime, Executive>, +//! ); +//! ``` + +#![cfg_attr(not(feature = "std"), no_std)] + +use frame_support::traits::{ExecuteBlock, FindAuthor}; +use sp_application_crypto::RuntimeAppPublic; +use sp_consensus_aura::digests::CompatibleDigestItem; +use sp_runtime::traits::{Block as BlockT, Header as HeaderT}; + +type Aura<T> = pallet_aura::Pallet<T>; + +pub use pallet::*; + +#[frame_support::pallet] +pub mod pallet { + use super::*; + use frame_support::pallet_prelude::*; + use frame_system::pallet_prelude::*; + use sp_std::vec::Vec; + + /// The configuration trait. + #[pallet::config] + pub trait Config: pallet_aura::Config + frame_system::Config {} + + #[pallet::pallet] + pub struct Pallet<T>(_); + + #[pallet::hooks] + impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> { + fn on_finalize(_: BlockNumberFor<T>) { + // Update to the latest AuRa authorities. + Authorities::<T>::put(Aura::<T>::authorities()); + } + + fn on_initialize(_: BlockNumberFor<T>) -> Weight { + // Fetch the authorities once to get them into the storage proof of the PoV. + Authorities::<T>::get(); + + T::DbWeight::get().reads_writes(2, 1) + } + } + + #[pallet::call] + impl<T: Config> Pallet<T> {} + + /// Serves as cache for the authorities. + /// + /// The authorities in AuRa are overwritten in `on_initialize` when we switch to a new session, + /// but we require the old authorities to verify the seal when validating a PoV. This will always + /// be updated to the latest AuRa authorities in `on_finalize`. + #[pallet::storage] + pub(crate) type Authorities<T: Config> = StorageValue<_, Vec<T::AuthorityId>, ValueQuery>; + + #[pallet::genesis_config] + #[derive(Default)] + pub struct GenesisConfig; + + #[pallet::genesis_build] + impl<T: Config> GenesisBuild<T> for GenesisConfig { + fn build(&self) { + let authorities = Aura::<T>::authorities(); + + assert!( + !authorities.is_empty(), + "AuRa authorities empty, maybe wrong order in `construct_runtime!`?", + ); + + Authorities::<T>::put(authorities); + } + } +} + +/// The block executor used when validating a PoV at the relay chain. +/// +/// When executing the block it will verify the block seal to ensure that the correct author created +/// the block. +pub struct BlockExecutor<T, I>(sp_std::marker::PhantomData<(T, I)>); + +impl<Block, T, I> ExecuteBlock<Block> for BlockExecutor<T, I> +where + Block: BlockT, + T: Config, + I: ExecuteBlock<Block>, +{ + fn execute_block(block: Block) { + let (mut header, extrinsics) = block.deconstruct(); + // We need to fetch the authorities before we execute the block, to get the authorities + // before any potential update. + let authorities = Authorities::<T>::get(); + + let mut seal = None; + header.digest_mut().logs.retain(|s| { + let s = + CompatibleDigestItem::<<T::AuthorityId as RuntimeAppPublic>::Signature>::as_aura_seal(s); + match (s, seal.is_some()) { + (Some(_), true) => panic!("Found multiple AuRa seal digests"), + (None, _) => true, + (Some(s), false) => { + seal = Some(s); + false + } + } + }); + + let seal = seal.expect("Could not find an AuRa seal digest!"); + + let author = Aura::<T>::find_author( + header + .digest() + .logs() + .iter() + .filter_map(|d| d.as_pre_runtime()), + ) + .expect("Could not find AuRa author index!"); + + let pre_hash = header.hash(); + + if !authorities + .get(author as usize) + .unwrap_or_else(|| + panic!("Invalid AuRa author index {} for authorities: {:?}", author, authorities) + ) + .verify(&pre_hash, &seal) + { + panic!("Invalid AuRa seal"); + } + + I::execute_block(Block::new(header, extrinsics)); + } +} diff --git a/cumulus/pallets/parachain-system/src/validate_block/mod.rs b/cumulus/pallets/parachain-system/src/validate_block/mod.rs index 1b47b1eace5a7082511f17d28fad32e53176ae66..72bbb09ec604fbb75d9ec237630610f705cccda7 100644 --- a/cumulus/pallets/parachain-system/src/validate_block/mod.rs +++ b/cumulus/pallets/parachain-system/src/validate_block/mod.rs @@ -69,7 +69,7 @@ fn set_and_run_with_validation_params<R>(mut params: ValidationParams, f: impl F /// ``` #[macro_export] macro_rules! register_validate_block { - ($runtime:ty, $block_executor:ty) => { + ($runtime:ty, $block_executor:ty $( , )? ) => { $crate::register_validate_block_impl!($runtime, $block_executor); }; } diff --git a/cumulus/primitives/parachain-inherent/Cargo.toml b/cumulus/primitives/parachain-inherent/Cargo.toml index 57bd179f7930cb6fa1175cb3abcf72db02497e60..5f3449783699ae667d9724fdbbdf1b0f2f795d70 100644 --- a/cumulus/primitives/parachain-inherent/Cargo.toml +++ b/cumulus/primitives/parachain-inherent/Cargo.toml @@ -15,16 +15,21 @@ sp-state-machine = { git = "https://github.com/paritytech/substrate", branch = " sp-trie = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } sp-api = { git = "https://github.com/paritytech/substrate", branch = "master", optional = true } +# Polkadot dependencies +polkadot-service = { git = "https://github.com/paritytech/polkadot", optional = true, branch = "master" } + # Cumulus dependencies cumulus-primitives-core = { path = "../core", default-features = false } # Other dependencies codec = { package = "parity-scale-codec", version = "2.0.0", default-features = false, features = [ "derive" ] } tracing = { version = "0.1.22", optional = true } +async-trait = { version = "0.1.42", optional = true } [features] default = [ "std" ] std = [ + "async-trait", "codec/std", "cumulus-primitives-core/std", "sp-inherents/std", @@ -36,4 +41,5 @@ std = [ "sp-runtime", "sc-client-api", "sp-api", + "polkadot-service", ] diff --git a/cumulus/primitives/parachain-inherent/src/client_side.rs b/cumulus/primitives/parachain-inherent/src/client_side.rs index cedf63915e1ab8e27a901117965d1eebe18fd2f1..787782b35541983c8c07c775c7b22eeaa43af035 100644 --- a/cumulus/primitives/parachain-inherent/src/client_side.rs +++ b/cumulus/primitives/parachain-inherent/src/client_side.rs @@ -26,6 +26,7 @@ use cumulus_primitives_core::{ }, InboundDownwardMessage, InboundHrmpMessage, ParaId, PersistedValidationData, }; +use polkadot_service::{Client, ClientHandle, ExecuteWithClient}; use sc_client_api::Backend; use sp_api::ProvideRuntimeApi; use sp_runtime::generic::BlockId; @@ -210,7 +211,8 @@ impl ParachainInherentData { PClient: ProvideRuntimeApi<PBlock>, PClient::Api: ParachainHost<PBlock>, { - let relay_chain_state = collect_relay_storage_proof(polkadot_backend, para_id, relay_parent)?; + let relay_chain_state = + collect_relay_storage_proof(polkadot_backend, para_id, relay_parent)?; let downward_messages = retrieve_dmq_contents(polkadot_client, para_id, relay_parent)?; let horizontal_messages = retrieve_all_inbound_hrmp_channel_contents(polkadot_client, para_id, relay_parent)?; @@ -222,4 +224,68 @@ impl ParachainInherentData { relay_chain_state, }) } + + /// Create the [`ParachainInherentData`] at the given `relay_parent`. + /// + /// Returns `None` if the creation failed. + pub fn create_at_with_client( + relay_parent: PHash, + polkadot_client: &Client, + relay_chain_backend: &impl Backend<PBlock>, + validation_data: &PersistedValidationData, + para_id: ParaId, + ) -> Option<ParachainInherentData> { + polkadot_client.execute_with(CreateAtWithClient { + relay_chain_backend, + validation_data, + para_id, + relay_parent, + }) + } +} + +#[async_trait::async_trait] +impl sp_inherents::InherentDataProvider for ParachainInherentData { + fn provide_inherent_data( + &self, + inherent_data: &mut sp_inherents::InherentData, + ) -> Result<(), sp_inherents::Error> { + inherent_data.put_data(crate::INHERENT_IDENTIFIER, &self) + } + + async fn try_handle_error( + &self, + _: &sp_inherents::InherentIdentifier, + _: &[u8], + ) -> Option<Result<(), sp_inherents::Error>> { + None + } +} + +/// Special structure to run [`ParachainInherentData::create_at`] with a [`Client`]. +struct CreateAtWithClient<'a, B> { + relay_parent: PHash, + relay_chain_backend: &'a B, + validation_data: &'a PersistedValidationData, + para_id: ParaId, +} + +impl<'a, B> ExecuteWithClient for CreateAtWithClient<'a, B> +where + B: Backend<PBlock>, +{ + type Output = Option<ParachainInherentData>; + + fn execute_with_client<Client, Api, Backend>( + self, + client: std::sync::Arc<Client>, + ) -> Self::Output where Client: ProvideRuntimeApi<PBlock>, Client::Api: ParachainHost<PBlock> { + ParachainInherentData::create_at( + self.relay_parent, + &*client, + self.relay_chain_backend, + self.validation_data, + self.para_id, + ) + } } diff --git a/cumulus/rococo-parachains/Cargo.toml b/cumulus/rococo-parachains/Cargo.toml index 8110c125a2b5c6e9d0e07ca3ac1d5bb0f865f23a..51d2544d15d74c7b3c2e0ef4c6bd291503420bfb 100644 --- a/cumulus/rococo-parachains/Cargo.toml +++ b/cumulus/rococo-parachains/Cargo.toml @@ -46,24 +46,29 @@ sc-basic-authorship = { git = "https://github.com/paritytech/substrate", branch sp-timestamp = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-block-builder = { git = "https://github.com/paritytech/substrate", branch = "master" } -sp-trie = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-keystore = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-finality-grandpa = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-chain-spec = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-rpc = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-tracing = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-offchain = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-api = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-consensus-aura = { git = "https://github.com/paritytech/substrate", branch = "master" } +substrate-prometheus-endpoint = { git = "https://github.com/paritytech/substrate", branch = "master" } # RPC related dependencies jsonrpc-core = "15.1.0" # Cumulus dependencies cumulus-client-cli = { path = "../client/cli" } +cumulus-client-consensus-aura = { path = "../client/consensus/aura" } cumulus-client-consensus-relay-chain = { path = "../client/consensus/relay-chain" } +cumulus-client-consensus-common = { path = "../client/consensus/common" } cumulus-client-collator = { path = "../client/collator" } cumulus-client-service = { path = "../client/service" } cumulus-client-network = { path = "../client/network" } cumulus-primitives-core = { path = "../primitives/core" } +cumulus-primitives-parachain-inherent = { path = "../primitives/parachain-inherent" } # Polkadot dependencies polkadot-primitives = { git = "https://github.com/paritytech/polkadot", branch = "master" } diff --git a/cumulus/rococo-parachains/runtime/Cargo.toml b/cumulus/rococo-parachains/runtime/Cargo.toml index 1b97a0e209404edf6ae05a755cf7a160d60e68f3..a07da525d469ff0fa002f5d2c5116e6561e31f58 100644 --- a/cumulus/rococo-parachains/runtime/Cargo.toml +++ b/cumulus/rococo-parachains/runtime/Cargo.toml @@ -23,6 +23,7 @@ sp-offchain = { git = "https://github.com/paritytech/substrate", default-feature sp-block-builder = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } sp-transaction-pool = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } sp-inherents = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +sp-consensus-aura = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } frame-support = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } @@ -33,8 +34,10 @@ pallet-randomness-collective-flip = { git = "https://github.com/paritytech/subst pallet-timestamp = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } pallet-sudo = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } +pallet-aura = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "master" } # Cumulus dependencies +cumulus-pallet-aura-ext = { path = "../../pallets/aura-ext", default-features = false } cumulus-pallet-parachain-system = { path = "../../pallets/parachain-system", default-features = false } cumulus-primitives-core = { path = "../../primitives/core", default-features = false } cumulus-primitives-utility = { path = "../../primitives/utility", default-features = false } @@ -85,6 +88,7 @@ std = [ "pallet-transaction-payment/std", "parachain-info/std", "rococo-parachain-primitives/std", + "cumulus-pallet-aura-ext/std", "cumulus-pallet-dmp-queue/std", "cumulus-pallet-parachain-system/std", "cumulus-pallet-xcmp-queue/std", @@ -95,4 +99,6 @@ std = [ "xcm/std", "xcm-builder/std", "xcm-executor/std", + "pallet-aura/std", + "sp-consensus-aura/std", ] diff --git a/cumulus/rococo-parachains/runtime/src/lib.rs b/cumulus/rococo-parachains/runtime/src/lib.rs index 9487c7313b0e538e5c788f9b0beef0b89b03c1a6..484234d064447ddd9044aa78fbc3f37ac5fb61fe 100644 --- a/cumulus/rococo-parachains/runtime/src/lib.rs +++ b/cumulus/rococo-parachains/runtime/src/lib.rs @@ -52,6 +52,7 @@ pub use pallet_timestamp::Call as TimestampCall; #[cfg(any(feature = "std", test))] pub use sp_runtime::BuildStorage; pub use sp_runtime::{Perbill, Permill}; +pub use sp_consensus_aura::sr25519::AuthorityId as AuraId; // XCM imports use polkadot_parachain::primitives::Sibling; @@ -71,7 +72,9 @@ use frame_support::traits::Contains; pub type SessionHandlers = (); impl_opaque_keys! { - pub struct SessionKeys {} + pub struct SessionKeys { + pub aura: Aura, + } } /// This runtime version. @@ -85,7 +88,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { transaction_version: 1, }; -pub const MILLISECS_PER_BLOCK: u64 = 6000; +pub const MILLISECS_PER_BLOCK: u64 = 12000; pub const SLOT_DURATION: u64 = MILLISECS_PER_BLOCK; @@ -248,6 +251,8 @@ impl cumulus_pallet_parachain_system::Config for Runtime { impl parachain_info::Config for Runtime {} +impl cumulus_pallet_aura_ext::Config for Runtime {} + parameter_types! { pub const RocLocation: MultiLocation = X1(Parent); pub const RococoNetwork: NetworkId = NetworkId::Polkadot; @@ -419,14 +424,8 @@ impl pallet_assets::Config for Runtime { type WeightInfo = pallet_assets::weights::SubstrateWeight<Runtime>; } -#[test] -fn encode_call() { - let hash = hex_literal::hex!["0af9fef6f950ca3ac8ac4766200454b1039ffb7b2d0827fffd5e47bd43761437"].into(); - let call = Call::ParachainSystem(cumulus_pallet_parachain_system::Call::authorize_upgrade(hash)); - assert_eq!( - hex::encode(codec::Encode::encode(&call)), - "14030af9fef6f950ca3ac8ac4766200454b1039ffb7b2d0827fffd5e47bd43761437", - ); +impl pallet_aura::Config for Runtime { + type AuthorityId = AuraId; } construct_runtime! { @@ -447,6 +446,9 @@ construct_runtime! { Balances: pallet_balances::{Pallet, Call, Storage, Config<T>, Event<T>} = 30, Assets: pallet_assets::{Pallet, Call, Storage, Event<T>} = 31, + Aura: pallet_aura::{Pallet, Config<T>}, + AuraExt: cumulus_pallet_aura_ext::{Pallet, Config}, + // XCM helpers. XcmpQueue: cumulus_pallet_xcmp_queue::{Pallet, Call, Storage, Event<T>} = 50, PolkadotXcm: pallet_xcm::{Pallet, Call, Event<T>, Origin} = 51, @@ -496,7 +498,7 @@ impl_runtime_apis! { } fn execute_block(block: Block) { - Executive::execute_block(block) + Executive::execute_block(block); } fn initialize_block(header: &<Block as BlockT>::Header) { @@ -556,6 +558,19 @@ impl_runtime_apis! { SessionKeys::generate(seed) } } + + impl sp_consensus_aura::AuraApi<Block, AuraId> for Runtime { + fn slot_duration() -> sp_consensus_aura::SlotDuration { + sp_consensus_aura::SlotDuration::from_millis(Aura::slot_duration()) + } + + fn authorities() -> Vec<AuraId> { + Aura::authorities() + } + } } -cumulus_pallet_parachain_system::register_validate_block!(Runtime, Executive); +cumulus_pallet_parachain_system::register_validate_block!( + Runtime, + cumulus_pallet_aura_ext::BlockExecutor::<Runtime, Executive>, +); diff --git a/cumulus/rococo-parachains/shell-runtime/src/lib.rs b/cumulus/rococo-parachains/shell-runtime/src/lib.rs index 58d7a42200e3a52a71a4ee1f43cd49889685375f..413fcab0d302ecc6586ca75384d10904e5e0c3a7 100644 --- a/cumulus/rococo-parachains/shell-runtime/src/lib.rs +++ b/cumulus/rococo-parachains/shell-runtime/src/lib.rs @@ -209,8 +209,8 @@ impl Config for XcmConfig { type IsTeleporter = (); // balances not supported type LocationInverter = LocationInverter<Ancestry>; type Barrier = AllowUnpaidExecutionFrom<JustTheParent>; - type Weigher = FixedWeightBounds<UnitWeightCost, Call>; // balances not supported - type Trader = (); // balances not supported + type Weigher = FixedWeightBounds<UnitWeightCost, Call>; // balances not supported + type Trader = (); // balances not supported type ResponseHandler = (); // Don't handle responses for now. } @@ -219,16 +219,6 @@ impl cumulus_pallet_xcm::Config for Runtime { type XcmExecutor = XcmExecutor<XcmConfig>; } -#[test] -fn encode_call() { - let hash = hex_literal::hex!["0af9fef6f950ca3ac8ac4766200454b1039ffb7b2d0827fffd5e47bd43761437"].into(); - let call = Call::ParachainSystem(cumulus_pallet_parachain_system::Call::authorize_upgrade(hash)); - assert_eq!( - hex::encode(codec::Encode::encode(&call)), - "01030af9fef6f950ca3ac8ac4766200454b1039ffb7b2d0827fffd5e47bd43761437", - ); -} - construct_runtime! { pub enum Runtime where Block = Block, diff --git a/cumulus/rococo-parachains/src/chain_spec.rs b/cumulus/rococo-parachains/src/chain_spec.rs index 4f3cf3bc42dcdbfee44db2479593266b0aa1d6da..20413b0b445da94e968f4670808165cf9dd8616e 100644 --- a/cumulus/rococo-parachains/src/chain_spec.rs +++ b/cumulus/rococo-parachains/src/chain_spec.rs @@ -16,11 +16,12 @@ use cumulus_primitives_core::ParaId; use hex_literal::hex; +use parachain_runtime::AuraId; use rococo_parachain_primitives::{AccountId, Signature}; use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup}; use sc_service::ChainType; use serde::{Deserialize, Serialize}; -use sp_core::{sr25519, Pair, Public}; +use sp_core::{sr25519, Pair, Public, crypto::UncheckedInto}; use sp_runtime::traits::{IdentifyAccount, Verify}; /// Specialized `ChainSpec` for the normal parachain runtime. @@ -71,6 +72,10 @@ pub fn get_chain_spec(id: ParaId) -> ChainSpec { move || { testnet_genesis( get_account_id_from_seed::<sr25519::Public>("Alice"), + vec![ + get_from_seed::<AuraId>("Alice"), + get_from_seed::<AuraId>("Bob"), + ], vec![ get_account_id_from_seed::<sr25519::Public>("Alice"), get_account_id_from_seed::<sr25519::Public>("Bob"), @@ -124,6 +129,12 @@ pub fn staging_test_net(id: ParaId) -> ChainSpec { move || { testnet_genesis( hex!["9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00"].into(), + vec![ + // $secret//one + hex!["aad9fa2249f87a210a0f93400b7f90e47b810c6d65caa0ca3f5af982904c2a33"].unchecked_into(), + // $secret//two + hex!["d47753f0cca9dd8da00c70e82ec4fc5501a69c49a5952a643d18802837c88212"].unchecked_into(), + ], vec![ hex!["9ed7705e3c7da027ba0583a22a3212042f7e715d3c168ba14f1424e2bc111d00"].into(), ], @@ -143,6 +154,7 @@ pub fn staging_test_net(id: ParaId) -> ChainSpec { fn testnet_genesis( root_key: AccountId, + initial_authorities: Vec<AuraId>, endowed_accounts: Vec<AccountId>, id: ParaId, ) -> parachain_runtime::GenesisConfig { @@ -162,6 +174,10 @@ fn testnet_genesis( }, pallet_sudo: parachain_runtime::SudoConfig { key: root_key }, parachain_info: parachain_runtime::ParachainInfoConfig { parachain_id: id }, + pallet_aura: parachain_runtime::AuraConfig { + authorities: initial_authorities, + }, + cumulus_pallet_aura_ext: Default::default(), } } diff --git a/cumulus/rococo-parachains/src/command.rs b/cumulus/rococo-parachains/src/command.rs index 174cf132688c311c61dcc45c00577883daa46d80..2a2c0bfa8f80a0522d75106bdcb34ae2c89707a1 100644 --- a/cumulus/rococo-parachains/src/command.rs +++ b/cumulus/rococo-parachains/src/command.rs @@ -19,8 +19,8 @@ use crate::{ cli::{Cli, RelayChainCli, Subcommand}, }; use codec::Encode; -use cumulus_primitives_core::ParaId; use cumulus_client_service::genesis::generate_genesis_block; +use cumulus_primitives_core::ParaId; use log::info; use parachain_runtime::Block; use polkadot_parachain::primitives::AccountIdConversion; @@ -28,9 +28,7 @@ use sc_cli::{ ChainSpec, CliConfiguration, DefaultConfigurationValues, ImportParams, KeystoreParams, NetworkParams, Result, RuntimeVersion, SharedParams, SubstrateCli, }; -use sc_service::{ - config::{BasePath, PrometheusConfig}, -}; +use sc_service::config::{BasePath, PrometheusConfig}; use sp_core::hexdisplay::HexDisplay; use sp_runtime::traits::Block as BlockT; use std::{io::Write, net::SocketAddr}; @@ -157,13 +155,19 @@ macro_rules! construct_async_run { let runner = $cli.create_runner($cmd)?; if use_shell_runtime(&runner.config().chain_spec) { runner.async_run(|$config| { - let $components = new_partial::<shell_runtime::RuntimeApi, ShellRuntimeExecutor>(&$config)?; + let $components = new_partial::<shell_runtime::RuntimeApi, ShellRuntimeExecutor, _>( + &$config, + crate::service::shell_build_import_queue, + )?; let task_manager = $components.task_manager; { $( $code )* }.map(|v| (v, task_manager)) }) } else { runner.async_run(|$config| { - let $components = new_partial::<parachain_runtime::RuntimeApi, RuntimeExecutor>(&$config)?; + let $components = new_partial::<parachain_runtime::RuntimeApi, RuntimeExecutor, _>( + &$config, + crate::service::build_import_queue, + )?; let task_manager = $components.task_manager; { $( $code )* }.map(|v| (v, task_manager)) }) @@ -180,18 +184,26 @@ pub fn run() -> Result<()> { let runner = cli.create_runner(cmd)?; runner.sync_run(|config| cmd.run(config.chain_spec, config.network)) } - Some(Subcommand::CheckBlock(cmd)) => construct_async_run! (|components, cli, cmd, config| { - Ok(cmd.run(components.client, components.import_queue)) - }), - Some(Subcommand::ExportBlocks(cmd)) => construct_async_run! (|components, cli, cmd, config| { - Ok(cmd.run(components.client, config.database)) - }), - Some(Subcommand::ExportState(cmd)) => construct_async_run! (|components, cli, cmd, config| { - Ok(cmd.run(components.client, config.chain_spec)) - }), - Some(Subcommand::ImportBlocks(cmd)) => construct_async_run! (|components, cli, cmd, config| { - Ok(cmd.run(components.client, components.import_queue)) - }), + Some(Subcommand::CheckBlock(cmd)) => { + construct_async_run!(|components, cli, cmd, config| { + Ok(cmd.run(components.client, components.import_queue)) + }) + } + Some(Subcommand::ExportBlocks(cmd)) => { + construct_async_run!(|components, cli, cmd, config| { + Ok(cmd.run(components.client, config.database)) + }) + } + Some(Subcommand::ExportState(cmd)) => { + construct_async_run!(|components, cli, cmd, config| { + Ok(cmd.run(components.client, config.chain_spec)) + }) + } + Some(Subcommand::ImportBlocks(cmd)) => { + construct_async_run!(|components, cli, cmd, config| { + Ok(cmd.run(components.client, components.import_queue)) + }) + } Some(Subcommand::PurgeChain(cmd)) => { let runner = cli.create_runner(cmd)?; @@ -213,7 +225,7 @@ pub fn run() -> Result<()> { cmd.run(config, polkadot_config) }) } - Some(Subcommand::Revert(cmd)) => construct_async_run! (|components, cli, cmd, config| { + Some(Subcommand::Revert(cmd)) => construct_async_run!(|components, cli, cmd, config| { Ok(cmd.run(components.client, components.backend)) }), Some(Subcommand::ExportGenesisState(params)) => { diff --git a/cumulus/rococo-parachains/src/service.rs b/cumulus/rococo-parachains/src/service.rs index 55e5c5bbcca62b0efc4c61a44ba7bf5e969b139a..d0edd0d9c555ec5d2806e915c470d0fc9556359f 100644 --- a/cumulus/rococo-parachains/src/service.rs +++ b/cumulus/rococo-parachains/src/service.rs @@ -14,24 +14,31 @@ // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see <http://www.gnu.org/licenses/>. -use cumulus_client_consensus_relay_chain::{ - build_relay_chain_consensus, BuildRelayChainConsensusParams, +use cumulus_client_consensus_aura::{ + build_aura_consensus, BuildAuraConsensusParams, SlotProportion, }; +use cumulus_client_consensus_common::ParachainConsensus; use cumulus_client_network::build_block_announce_validator; use cumulus_client_service::{ prepare_node_config, start_collator, start_full_node, StartCollatorParams, StartFullNodeParams, }; use cumulus_primitives_core::ParaId; use polkadot_primitives::v0::CollatorPair; -use rococo_parachain_primitives::Block; +use rococo_parachain_primitives::{Block, Hash}; + +use sc_client_api::ExecutorProvider; use sc_executor::native_executor_instance; -pub use sc_executor::NativeExecutor; +use sc_network::NetworkService; use sc_service::{Configuration, PartialComponents, Role, TFullBackend, TFullClient, TaskManager}; -use sc_telemetry::{Telemetry, TelemetryWorker, TelemetryWorkerHandle}; +use sc_telemetry::{Telemetry, TelemetryHandle, TelemetryWorker, TelemetryWorkerHandle}; use sp_api::ConstructRuntimeApi; +use sp_consensus::SlotData; +use sp_keystore::SyncCryptoStorePtr; use sp_runtime::traits::BlakeTwo256; -use sp_trie::PrefixedMemoryDB; use std::sync::Arc; +use substrate_prometheus_endpoint::Registry; + +pub use sc_executor::NativeExecutor; // Native executor instance. native_executor_instance!( @@ -51,14 +58,15 @@ native_executor_instance!( /// /// Use this macro if you don't actually need the full service, but just the builder in order to /// be able to perform chain operations. -pub fn new_partial<RuntimeApi, Executor>( +pub fn new_partial<RuntimeApi, Executor, BIQ>( config: &Configuration, + build_import_queue: BIQ, ) -> Result< PartialComponents< TFullClient<Block, RuntimeApi, Executor>, TFullBackend<Block>, (), - sp_consensus::import_queue::BasicQueue<Block, PrefixedMemoryDB<BlakeTwo256>>, + sp_consensus::DefaultImportQueue<Block, TFullClient<Block, RuntimeApi, Executor>>, sc_transaction_pool::FullPool<Block, TFullClient<Block, RuntimeApi, Executor>>, (Option<Telemetry>, Option<TelemetryWorkerHandle>), >, @@ -79,6 +87,15 @@ where + sp_block_builder::BlockBuilder<Block>, sc_client_api::StateBackendFor<TFullBackend<Block>, Block>: sp_api::StateBackend<BlakeTwo256>, Executor: sc_executor::NativeExecutionDispatch + 'static, + BIQ: FnOnce( + Arc<TFullClient<Block, RuntimeApi, Executor>>, + &Configuration, + Option<TelemetryHandle>, + &TaskManager, + ) -> Result< + sp_consensus::DefaultImportQueue<Block, TFullClient<Block, RuntimeApi, Executor>>, + sc_service::Error, + >, { let telemetry = config .telemetry_endpoints @@ -105,8 +122,6 @@ where telemetry }); - let registry = config.prometheus_registry(); - let transaction_pool = sc_transaction_pool::BasicPool::new_full( config.transaction_pool.clone(), config.role.is_authority().into(), @@ -115,12 +130,11 @@ where client.clone(), ); - let import_queue = cumulus_client_consensus_relay_chain::import_queue( - client.clone(), + let import_queue = build_import_queue( client.clone(), - |_, _| async { Ok(sp_timestamp::InherentDataProvider::from_system_time()) }, - &task_manager.spawn_essential_handle(), - registry.clone(), + config, + telemetry.as_ref().map(|telemetry| telemetry.handle()), + &task_manager, )?; let params = PartialComponents { @@ -141,12 +155,14 @@ where /// /// This is the actual implementation that is abstract over the executor and the runtime api. #[sc_tracing::logging::prefix_logs_with("Parachain")] -async fn start_node_impl<RuntimeApi, Executor, RB>( +async fn start_node_impl<RuntimeApi, Executor, RB, BIQ, BIC>( parachain_config: Configuration, collator_key: CollatorPair, polkadot_config: Configuration, id: ParaId, rpc_ext_builder: RB, + build_import_queue: BIQ, + build_consensus: BIC, ) -> sc_service::error::Result<(TaskManager, Arc<TFullClient<Block, RuntimeApi, Executor>>)> where RuntimeApi: ConstructRuntimeApi<Block, TFullClient<Block, RuntimeApi, Executor>> @@ -168,6 +184,26 @@ where ) -> jsonrpc_core::IoHandler<sc_rpc::Metadata> + Send + 'static, + BIQ: FnOnce( + Arc<TFullClient<Block, RuntimeApi, Executor>>, + &Configuration, + Option<TelemetryHandle>, + &TaskManager, + ) -> Result< + sp_consensus::DefaultImportQueue<Block, TFullClient<Block, RuntimeApi, Executor>>, + sc_service::Error, + >, + BIC: FnOnce( + Arc<TFullClient<Block, RuntimeApi, Executor>>, + Option<&Registry>, + Option<TelemetryHandle>, + &TaskManager, + &polkadot_service::NewFull<polkadot_service::Client>, + Arc<sc_transaction_pool::FullPool<Block, TFullClient<Block, RuntimeApi, Executor>>>, + Arc<NetworkService<Block, Hash>>, + SyncCryptoStorePtr, + bool, + ) -> Result<Box<dyn ParachainConsensus<Block>>, sc_service::Error>, { if matches!(parachain_config.role, Role::Light) { return Err("Light client not supported!".into()); @@ -175,10 +211,10 @@ where let parachain_config = prepare_node_config(parachain_config); - let params = new_partial::<RuntimeApi, Executor>(¶chain_config)?; + let params = new_partial::<RuntimeApi, Executor, BIQ>(¶chain_config, build_import_queue)?; let (mut telemetry, telemetry_worker_handle) = params.other; - let polkadot_full_node = cumulus_client_service::build_polkadot_full_node( + let relay_chain_full_node = cumulus_client_service::build_polkadot_full_node( polkadot_config, collator_key.clone(), telemetry_worker_handle, @@ -191,12 +227,13 @@ where let client = params.client.clone(); let backend = params.backend.clone(); let block_announce_validator = build_block_announce_validator( - polkadot_full_node.client.clone(), + relay_chain_full_node.client.clone(), id, - Box::new(polkadot_full_node.network.clone()), - polkadot_full_node.backend.clone(), + Box::new(relay_chain_full_node.network.clone()), + relay_chain_full_node.backend.clone(), ); + let force_authoring = parachain_config.force_authoring; let validator = parachain_config.role.is_authority(); let prometheus_registry = parachain_config.prometheus_registry().cloned(); let transaction_pool = params.transaction_pool.clone(); @@ -238,25 +275,19 @@ where }; if validator { - let proposer_factory = sc_basic_authorship::ProposerFactory::with_proof_recording( - task_manager.spawn_handle(), + let parachain_consensus = build_consensus( client.clone(), - transaction_pool, prometheus_registry.as_ref(), - telemetry.as_ref().map(|x| x.handle()), - ); - let spawner = task_manager.spawn_handle(); + telemetry.as_ref().map(|t| t.handle()), + &task_manager, + &relay_chain_full_node, + transaction_pool, + network, + params.keystore_container.sync_keystore(), + force_authoring, + )?; - let parachain_consensus = build_relay_chain_consensus(BuildRelayChainConsensusParams { - para_id: id, - proposer_factory, - create_inherent_data_providers: |_, _| async { - Ok(sp_timestamp::InherentDataProvider::from_system_time()) - }, - block_import: client.clone(), - relay_chain_client: polkadot_full_node.client.clone(), - relay_chain_backend: polkadot_full_node.backend.clone(), - }); + let spawner = task_manager.spawn_handle(); let params = StartCollatorParams { para_id: id, @@ -265,7 +296,7 @@ where client: client.clone(), task_manager: &mut task_manager, collator_key, - relay_chain_full_node: polkadot_full_node, + relay_chain_full_node, spawner, backend, parachain_consensus, @@ -278,7 +309,7 @@ where announce_block, task_manager: &mut task_manager, para_id: id, - polkadot_full_node, + polkadot_full_node: relay_chain_full_node, }; start_full_node(params)?; @@ -289,6 +320,58 @@ where Ok((task_manager, client)) } +/// Build the import queue for the "default" runtime. +pub fn build_import_queue( + client: Arc<TFullClient<Block, parachain_runtime::RuntimeApi, RuntimeExecutor>>, + config: &Configuration, + telemetry: Option<TelemetryHandle>, + task_manager: &TaskManager, +) -> Result< + sp_consensus::DefaultImportQueue< + Block, + TFullClient<Block, shell_runtime::RuntimeApi, ShellRuntimeExecutor>, + >, + sc_service::Error, +> { + let slot_duration = cumulus_client_consensus_aura::slot_duration(&*client)?; + + let block_import = cumulus_client_consensus_aura::AuraBlockImport::< + _, + _, + _, + sp_consensus_aura::sr25519::AuthorityPair, + >::new(client.clone(), client.clone()); + + cumulus_client_consensus_aura::import_queue::< + sp_consensus_aura::sr25519::AuthorityPair, + _, + _, + _, + _, + _, + _, + >(cumulus_client_consensus_aura::ImportQueueParams { + block_import, + client: client.clone(), + create_inherent_data_providers: move |_, _| async move { + let time = sp_timestamp::InherentDataProvider::from_system_time(); + + let slot = + sp_consensus_aura::inherents::InherentDataProvider::from_timestamp_and_duration( + *time, + slot_duration.slot_duration(), + ); + + Ok((time, slot)) + }, + registry: config.prometheus_registry().clone(), + can_author_with: sp_consensus::CanAuthorWithNativeVersion::new(client.executor().clone()), + spawner: &task_manager.spawn_essential_handle(), + telemetry, + }) + .map_err(Into::into) +} + /// Start a rococo-test parachain node. pub async fn start_node( parachain_config: Configuration, @@ -298,16 +381,114 @@ pub async fn start_node( ) -> sc_service::error::Result< (TaskManager, Arc<TFullClient<Block, parachain_runtime::RuntimeApi, RuntimeExecutor>>) > { - start_node_impl::<parachain_runtime::RuntimeApi, RuntimeExecutor, _>( + start_node_impl::<parachain_runtime::RuntimeApi, RuntimeExecutor, _, _, _>( parachain_config, collator_key, polkadot_config, id, |_| Default::default(), + build_import_queue, + |client, + prometheus_registry, + telemetry, + task_manager, + relay_chain_node, + transaction_pool, + sync_oracle, + keystore, + force_authoring| { + let slot_duration = cumulus_client_consensus_aura::slot_duration(&*client)?; + + let proposer_factory = sc_basic_authorship::ProposerFactory::with_proof_recording( + task_manager.spawn_handle(), + client.clone(), + transaction_pool, + prometheus_registry.clone(), + telemetry.clone(), + ); + + let relay_chain_backend = relay_chain_node.backend.clone(); + let relay_chain_client = relay_chain_node.client.clone(); + Ok(build_aura_consensus::< + sp_consensus_aura::sr25519::AuthorityPair, + _, + _, + _, + _, + _, + _, + _, + _, + _, + >(BuildAuraConsensusParams { + proposer_factory, + create_inherent_data_providers: move |_, (relay_parent, validation_data)| { + let parachain_inherent = + cumulus_primitives_parachain_inherent::ParachainInherentData::create_at_with_client( + relay_parent, + &relay_chain_client, + &*relay_chain_backend, + &validation_data, + id, + ); + async move { + let time = sp_timestamp::InherentDataProvider::from_system_time(); + + let slot = + sp_consensus_aura::inherents::InherentDataProvider::from_timestamp_and_duration( + *time, + slot_duration.slot_duration(), + ); + + let parachain_inherent = parachain_inherent.ok_or_else(|| { + Box::<dyn std::error::Error + Send + Sync>::from( + "Failed to create parachain inherent", + ) + })?; + Ok((time, slot, parachain_inherent)) + } + }, + block_import: client.clone(), + relay_chain_client: relay_chain_node.client.clone(), + relay_chain_backend: relay_chain_node.backend.clone(), + para_client: client.clone(), + backoff_authoring_blocks: Option::<()>::None, + sync_oracle, + keystore, + force_authoring, + slot_duration, + // We got around 500ms for proposing + block_proposal_slot_portion: SlotProportion::new(1f32 / 24f32), + telemetry, + })) + }, ) .await } +/// Build the import queue for the shell runtime. +pub fn shell_build_import_queue( + client: Arc<TFullClient<Block, shell_runtime::RuntimeApi, ShellRuntimeExecutor>>, + config: &Configuration, + _: Option<TelemetryHandle>, + task_manager: &TaskManager, +) -> Result< + sp_consensus::DefaultImportQueue< + Block, + TFullClient<Block, shell_runtime::RuntimeApi, ShellRuntimeExecutor>, + >, + sc_service::Error, +> { + cumulus_client_consensus_relay_chain::import_queue( + client.clone(), + client, + |_, _| async { Ok(()) }, + &task_manager.spawn_essential_handle(), + config.prometheus_registry().clone(), + ) + .map_err(Into::into) +} + /// Start a rococo-shell parachain node. pub async fn start_shell_node( parachain_config: Configuration, @@ -317,12 +498,65 @@ pub async fn start_shell_node( ) -> sc_service::error::Result< (TaskManager, Arc<TFullClient<Block, shell_runtime::RuntimeApi, ShellRuntimeExecutor>>) > { - start_node_impl::<shell_runtime::RuntimeApi, ShellRuntimeExecutor, _>( + start_node_impl::<shell_runtime::RuntimeApi, ShellRuntimeExecutor, _, _, _>( parachain_config, collator_key, polkadot_config, id, |_| Default::default(), + shell_build_import_queue, + |client, + prometheus_registry, + telemetry, + task_manager, + relay_chain_node, + transaction_pool, + _, + _, + _| { + let proposer_factory = sc_basic_authorship::ProposerFactory::with_proof_recording( + task_manager.spawn_handle(), + client.clone(), + transaction_pool, + prometheus_registry.clone(), + telemetry.clone(), + ); + + let relay_chain_backend = relay_chain_node.backend.clone(); + let relay_chain_client = relay_chain_node.client.clone(); + + Ok( + cumulus_client_consensus_relay_chain::build_relay_chain_consensus( + cumulus_client_consensus_relay_chain::BuildRelayChainConsensusParams { + para_id: id, + proposer_factory, + block_import: client.clone(), + relay_chain_client: relay_chain_node.client.clone(), + relay_chain_backend: relay_chain_node.backend.clone(), + create_inherent_data_providers: + move |_, (relay_parent, validation_data)| { + let parachain_inherent = + cumulus_primitives_parachain_inherent::ParachainInherentData::create_at_with_client( + relay_parent, + &relay_chain_client, + &*relay_chain_backend, + &validation_data, + id, + ); + async move { + let parachain_inherent = + parachain_inherent.ok_or_else(|| { + Box::<dyn std::error::Error + Send + Sync>::from( + "Failed to create parachain inherent", + ) + })?; + Ok(parachain_inherent) + } + }, + }, + ), + ) + }, ) .await } diff --git a/cumulus/test/service/Cargo.toml b/cumulus/test/service/Cargo.toml index 486febb1f239090fbdaf9f98ef335747da76d142..268b9feee180b92f7a92882bc76d99b5bae26e95 100644 --- a/cumulus/test/service/Cargo.toml +++ b/cumulus/test/service/Cargo.toml @@ -50,6 +50,7 @@ cumulus-client-consensus-relay-chain = { path = "../../client/consensus/relay-ch cumulus-client-network = { path = "../../client/network" } cumulus-client-service = { path = "../../client/service" } cumulus-primitives-core = { path = "../../primitives/core" } +cumulus-primitives-parachain-inherent = { path = "../../primitives/parachain-inherent" } cumulus-test-runtime = { path = "../runtime" } cumulus-test-relay-validation-worker-provider = { path = "../relay-validation-worker-provider" } @@ -60,6 +61,10 @@ jsonrpc-core = "15.1.0" futures = { version = "0.3.5" } tokio = { version = "0.2.21", features = ["macros"] } +# Polkadot dependencies +polkadot-test-runtime = { git = "https://github.com/paritytech/polkadot", branch = "master" } +polkadot-test-service = { git = "https://github.com/paritytech/polkadot", branch = "master" } + # Substrate dependencies sc-cli = { git = "https://github.com/paritytech/substrate", branch = "master" } substrate-test-utils = { git = "https://github.com/paritytech/substrate", branch = "master" } diff --git a/cumulus/test/service/src/lib.rs b/cumulus/test/service/src/lib.rs index 6b10606d96bc3c423035e0ab6e02d64c2da1c9b0..fd4787eb20fab20f46ef11ce4c0011837585c13c 100644 --- a/cumulus/test/service/src/lib.rs +++ b/cumulus/test/service/src/lib.rs @@ -232,10 +232,31 @@ where prometheus_registry.as_ref(), None, ); + + let relay_chain_client = relay_chain_full_node.client.clone(); + let relay_chain_backend = relay_chain_full_node.backend.clone(); + let parachain_consensus = cumulus_client_consensus_relay_chain::RelayChainConsensus::new( para_id, proposer_factory, - |_, _| async { Ok(sp_timestamp::InherentDataProvider::from_system_time()) }, + move |_, (relay_parent, validation_data)| { + let parachain_inherent = + cumulus_primitives_parachain_inherent::ParachainInherentData::create_at( + relay_parent, + &*relay_chain_client, + &*relay_chain_backend, + &validation_data, + para_id, + ); + async move { + let time = sp_timestamp::InherentDataProvider::from_system_time(); + + let parachain_inherent = parachain_inherent.ok_or_else(|| { + Box::<dyn std::error::Error + Send + Sync>::from(String::from("error")) + })?; + Ok((time, parachain_inherent)) + } + }, client.clone(), relay_chain_full_node.client.clone(), relay_chain_full_node.backend.clone(),