diff --git a/polkadot/Cargo.lock b/polkadot/Cargo.lock index a1b5111acf2106dd345ba4cea73b57aa746bf91a..9c2511c0391e2280d72865111bd4e12c9395a539 100644 --- a/polkadot/Cargo.lock +++ b/polkadot/Cargo.lock @@ -1172,7 +1172,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "parity-scale-codec", ] @@ -1180,7 +1180,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-support", "frame-system", @@ -1197,7 +1197,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-benchmarking", "parity-scale-codec", @@ -1215,7 +1215,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-support", "frame-system", @@ -1230,7 +1230,7 @@ dependencies = [ [[package]] name = "frame-metadata" version = "11.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "parity-scale-codec", "serde", @@ -1241,7 +1241,7 @@ dependencies = [ [[package]] name = "frame-support" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "bitmask", "frame-metadata", @@ -1266,7 +1266,7 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-support-procedural-tools", "proc-macro2 1.0.18", @@ -1277,7 +1277,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", @@ -1289,7 +1289,7 @@ dependencies = [ [[package]] name = "frame-support-procedural-tools-derive" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "proc-macro2 1.0.18", "quote 1.0.7", @@ -1299,7 +1299,7 @@ dependencies = [ [[package]] name = "frame-system" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-support", "impl-trait-for-tuples", @@ -1315,7 +1315,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-benchmarking", "frame-support", @@ -1329,7 +1329,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "parity-scale-codec", "sp-api", @@ -3266,7 +3266,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-support", "frame-system", @@ -3282,7 +3282,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-support", "frame-system", @@ -3297,7 +3297,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-support", "frame-system", @@ -3319,7 +3319,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-benchmarking", "frame-support", @@ -3333,7 +3333,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-benchmarking", "frame-support", @@ -3349,7 +3349,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-benchmarking", "frame-support", @@ -3364,7 +3364,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-benchmarking", "frame-support", @@ -3379,7 +3379,7 @@ dependencies = [ [[package]] name = "pallet-finality-tracker" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-support", "frame-system", @@ -3395,7 +3395,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-support", "frame-system", @@ -3415,7 +3415,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "enumflags2", "frame-benchmarking", @@ -3431,7 +3431,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-benchmarking", "frame-support", @@ -3451,7 +3451,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-support", "frame-system", @@ -3467,7 +3467,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-support", "frame-system", @@ -3481,7 +3481,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-support", "frame-system", @@ -3496,7 +3496,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-support", "frame-system", @@ -3510,7 +3510,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-support", "frame-system", @@ -3525,7 +3525,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-benchmarking", "frame-support", @@ -3546,7 +3546,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-support", "frame-system", @@ -3561,7 +3561,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-support", "frame-system", @@ -3574,7 +3574,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "enumflags2", "frame-support", @@ -3589,7 +3589,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-benchmarking", "frame-support", @@ -3604,7 +3604,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-support", "frame-system", @@ -3624,7 +3624,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-benchmarking", "frame-support", @@ -3638,7 +3638,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-support", "frame-system", @@ -3652,7 +3652,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-benchmarking", "frame-support", @@ -3674,7 +3674,7 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "proc-macro-crate", "proc-macro2 1.0.18", @@ -3685,7 +3685,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-support", "frame-system", @@ -3699,7 +3699,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-benchmarking", "frame-support", @@ -3717,7 +3717,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-support", "frame-system", @@ -3732,7 +3732,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -3750,7 +3750,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-support", "parity-scale-codec", @@ -3763,7 +3763,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-benchmarking", "frame-support", @@ -3778,7 +3778,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-benchmarking", "frame-support", @@ -3794,7 +3794,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "enumflags2", "frame-benchmarking", @@ -5531,7 +5531,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "bytes 0.5.4", "derive_more 0.99.8", @@ -5558,7 +5558,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "futures 0.3.5", "futures-timer 3.0.2", @@ -5582,7 +5582,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -5598,7 +5598,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "impl-trait-for-tuples", "sc-chain-spec-derive", @@ -5614,7 +5614,7 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "proc-macro-crate", "proc-macro2 1.0.18", @@ -5625,7 +5625,7 @@ dependencies = [ [[package]] name = "sc-cli" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "ansi_term 0.12.1", "atty", @@ -5665,7 +5665,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "derive_more 0.99.8", "fnv", @@ -5701,7 +5701,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "blake2-rfc", "hash-db", @@ -5730,7 +5730,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "sc-client-api", "sp-blockchain", @@ -5741,7 +5741,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "derive_more 0.99.8", "fork-tree", @@ -5783,7 +5783,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "derive_more 0.99.8", "futures 0.3.5", @@ -5807,7 +5807,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "fork-tree", "parity-scale-codec", @@ -5820,7 +5820,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "futures 0.3.5", "futures-timer 3.0.2", @@ -5842,7 +5842,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "log 0.4.8", "sc-client-api", @@ -5856,7 +5856,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "derive_more 0.99.8", "lazy_static", @@ -5884,7 +5884,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "derive_more 0.99.8", "log 0.4.8", @@ -5901,7 +5901,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "log 0.4.8", "parity-scale-codec", @@ -5916,7 +5916,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "cranelift-codegen", "cranelift-wasm", @@ -5937,7 +5937,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "assert_matches", "derive_more 0.99.8", @@ -5975,7 +5975,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "derive_more 0.99.8", "finality-grandpa", @@ -5992,7 +5992,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "ansi_term 0.12.1", "futures 0.3.5", @@ -6011,7 +6011,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "derive_more 0.99.8", "hex", @@ -6027,7 +6027,7 @@ dependencies = [ [[package]] name = "sc-light" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "hash-db", "lazy_static", @@ -6046,7 +6046,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "bitflags", "bs58", @@ -6098,7 +6098,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "futures 0.3.5", "futures-timer 3.0.2", @@ -6113,7 +6113,7 @@ dependencies = [ [[package]] name = "sc-network-test" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "env_logger", "futures 0.3.5", @@ -6140,7 +6140,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "bytes 0.5.4", "fnv", @@ -6167,7 +6167,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "futures 0.3.5", "libp2p", @@ -6180,7 +6180,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "log 0.4.8", "substrate-prometheus-endpoint", @@ -6189,7 +6189,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "futures 0.3.5", "hash-db", @@ -6221,7 +6221,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "derive_more 0.99.8", "futures 0.3.5", @@ -6245,7 +6245,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "jsonrpc-core", "jsonrpc-http-server", @@ -6261,7 +6261,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "derive_more 0.99.8", "directories", @@ -6324,7 +6324,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "log 0.4.8", "parity-scale-codec", @@ -6338,7 +6338,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "bytes 0.5.4", "futures 0.3.5", @@ -6360,7 +6360,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "erased-serde", "log 0.4.8", @@ -6377,7 +6377,7 @@ dependencies = [ [[package]] name = "sc-transaction-graph" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "derive_more 0.99.8", "futures 0.3.5", @@ -6397,7 +6397,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "derive_more 0.99.8", "futures 0.3.5", @@ -6784,7 +6784,7 @@ dependencies = [ [[package]] name = "sp-allocator" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "derive_more 0.99.8", "log 0.4.8", @@ -6796,7 +6796,7 @@ dependencies = [ [[package]] name = "sp-api" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "hash-db", "parity-scale-codec", @@ -6811,7 +6811,7 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "blake2-rfc", "proc-macro-crate", @@ -6823,7 +6823,7 @@ dependencies = [ [[package]] name = "sp-application-crypto" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "parity-scale-codec", "serde", @@ -6835,7 +6835,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "integer-sqrt", "num-traits 0.2.12", @@ -6848,7 +6848,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "parity-scale-codec", "sp-api", @@ -6860,7 +6860,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "parity-scale-codec", "sp-inherents", @@ -6871,7 +6871,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "parity-scale-codec", "sp-api", @@ -6883,7 +6883,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "derive_more 0.99.8", "log 0.4.8", @@ -6899,7 +6899,7 @@ dependencies = [ [[package]] name = "sp-chain-spec" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "serde", "serde_json", @@ -6908,7 +6908,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "derive_more 0.99.8", "futures 0.3.5", @@ -6931,7 +6931,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "parity-scale-codec", "sp-api", @@ -6945,7 +6945,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "merlin", "parity-scale-codec", @@ -6963,7 +6963,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -6975,7 +6975,7 @@ dependencies = [ [[package]] name = "sp-core" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "base58", "blake2-rfc", @@ -7017,7 +7017,7 @@ dependencies = [ [[package]] name = "sp-database" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "kvdb", "parking_lot 0.10.2", @@ -7026,7 +7026,7 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "proc-macro2 1.0.18", "quote 1.0.7", @@ -7036,7 +7036,7 @@ dependencies = [ [[package]] name = "sp-externalities" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "environmental", "parity-scale-codec", @@ -7047,7 +7047,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "finality-grandpa", "log 0.4.8", @@ -7063,7 +7063,7 @@ dependencies = [ [[package]] name = "sp-finality-tracker" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "parity-scale-codec", "sp-inherents", @@ -7073,7 +7073,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "derive_more 0.99.8", "parity-scale-codec", @@ -7085,7 +7085,7 @@ dependencies = [ [[package]] name = "sp-io" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "futures 0.3.5", "hash-db", @@ -7106,7 +7106,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "lazy_static", "sp-core", @@ -7117,7 +7117,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "parity-scale-codec", "serde", @@ -7129,7 +7129,7 @@ dependencies = [ [[package]] name = "sp-npos-elections-compact" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "proc-macro-crate", "proc-macro2 1.0.18", @@ -7140,7 +7140,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "sp-api", "sp-core", @@ -7150,7 +7150,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "backtrace", "log 0.4.8", @@ -7159,7 +7159,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "serde", "sp-core", @@ -7168,7 +7168,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "either", "hash256-std-hasher", @@ -7190,7 +7190,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "parity-scale-codec", "primitive-types", @@ -7205,7 +7205,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "Inflector", "proc-macro-crate", @@ -7217,7 +7217,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "serde", "serde_json", @@ -7226,7 +7226,7 @@ dependencies = [ [[package]] name = "sp-session" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "parity-scale-codec", "sp-api", @@ -7239,7 +7239,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "parity-scale-codec", "sp-runtime", @@ -7249,7 +7249,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "hash-db", "log 0.4.8", @@ -7268,12 +7268,12 @@ dependencies = [ [[package]] name = "sp-std" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" [[package]] name = "sp-storage" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "impl-serde 0.2.3", "ref-cast", @@ -7285,7 +7285,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -7299,7 +7299,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "log 0.4.8", "rental", @@ -7309,7 +7309,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "derive_more 0.99.8", "futures 0.3.5", @@ -7325,7 +7325,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "hash-db", "memory-db", @@ -7339,7 +7339,7 @@ dependencies = [ [[package]] name = "sp-utils" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "futures 0.3.5", "futures-core", @@ -7351,7 +7351,7 @@ dependencies = [ [[package]] name = "sp-version" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "impl-serde 0.2.3", "parity-scale-codec", @@ -7363,7 +7363,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -7494,7 +7494,7 @@ dependencies = [ [[package]] name = "substrate-browser-utils" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "chrono", "clear_on_drop", @@ -7521,7 +7521,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "platforms", ] @@ -7529,7 +7529,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.5", @@ -7552,7 +7552,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.8.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "async-std", "derive_more 0.99.8", @@ -7566,7 +7566,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "futures 0.3.5", "hash-db", @@ -7588,7 +7588,7 @@ dependencies = [ [[package]] name = "substrate-test-runtime" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "cfg-if", "frame-executive", @@ -7628,7 +7628,7 @@ dependencies = [ [[package]] name = "substrate-test-runtime-client" version = "2.0.0-rc3" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" dependencies = [ "futures 0.3.5", "parity-scale-codec", @@ -7649,7 +7649,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder-runner" version = "1.0.6" -source = "git+https://github.com/paritytech/substrate#31c3e06ded197bdf28130ac0c5310283b2d1b5b3" +source = "git+https://github.com/paritytech/substrate#6f86bdd897ce06c0169dcbd2454dc7587cb8461f" [[package]] name = "substrate-wasm-builder-runner" diff --git a/polkadot/docker/sentry-docker-compose.yml b/polkadot/docker/sentry-docker-compose.yml index 18e7621fe71f8224952a0ad08423ca20d8a0f19d..af0510592d0858c2039512ba3c5c916bb2f4f7be 100644 --- a/polkadot/docker/sentry-docker-compose.yml +++ b/polkadot/docker/sentry-docker-compose.yml @@ -47,7 +47,7 @@ services: - "--name" - "${VALIDATOR_NANE:-AlicesNode}" - "--reserved-nodes" - - "${VALIDATOR_RESERVED_NODES:-/dns4/sentry/tcp/30333/p2p/QmV7EhW6J6KgmNdr558RH1mPx2xGGznW7At4BhXzntRFsi}" + - "${VALIDATOR_RESERVED_NODES:-/dns/sentry/tcp/30333/p2p/QmV7EhW6J6KgmNdr558RH1mPx2xGGznW7At4BhXzntRFsi}" # Not only bind to localhost. - "--ws-external" - "--rpc-external" @@ -90,7 +90,7 @@ services: - "--name" - "${SENTRY_NAME:-CharliesNode}" - "--bootnodes" - - "${SENTRY_BOOTNODES:-/dns4/validator-a/tcp/30333/p2p/QmRpheLN4JWdAnY7HGJfWFNbfkQCb6tFf4vvA6hgjMZKrR}" + - "${SENTRY_BOOTNODES:-/dns/validator-a/tcp/30333/p2p/QmRpheLN4JWdAnY7HGJfWFNbfkQCb6tFf4vvA6hgjMZKrR}" - "--no-telemetry" - "--rpc-cors" - "all" diff --git a/polkadot/node/service/src/lib.rs b/polkadot/node/service/src/lib.rs index 939170e7f5da26b5a5aac138203addf36846e913..e7fb7c502606b412288eefc77c8b21204b06f61b 100644 --- a/polkadot/node/service/src/lib.rs +++ b/polkadot/node/service/src/lib.rs @@ -358,7 +358,7 @@ macro_rules! new_full { let (overseer, handler) = real_overseer(leaves, spawner)?; - service.spawn_essential_task("overseer", Box::pin(async move { + service.spawn_essential_task_handle().spawn("overseer", Box::pin(async move { use futures::{pin_mut, select, FutureExt}; let forward = overseer::forward_events(overseer_client, handler); @@ -404,7 +404,7 @@ macro_rules! new_full { }; let babe = babe::start_babe(babe_config)?; - service.spawn_essential_task("babe", babe); + service.spawn_essential_task_handle().spawn_blocking("babe", babe); } // if the node isn't actively participating in consensus then it doesn't @@ -464,7 +464,7 @@ macro_rules! new_full { shared_voter_state, }; - service.spawn_essential_task( + service.spawn_essential_task_handle().spawn_blocking( "grandpa-voter", grandpa::run_grandpa_voter(grandpa_config)? ); diff --git a/polkadot/roadmap/implementors-guide/src/node/availability/availability-distribution.md b/polkadot/roadmap/implementors-guide/src/node/availability/availability-distribution.md index a916b3766bfb063e0ba8285a049595467a58a81e..008f3e91fbe7d7c7ef184de463087d1d9e1a64a0 100644 --- a/polkadot/roadmap/implementors-guide/src/node/availability/availability-distribution.md +++ b/polkadot/roadmap/implementors-guide/src/node/availability/availability-distribution.md @@ -26,7 +26,7 @@ Register on startup an event producer with `NetworkBridge::RegisterEventProduce For each relay-parent in our local view update, look at all backed candidates pending availability. Distribute via gossip all erasure chunks for all candidates that we have to peers. -We define an operation `live_candidates(relay_heads) -> Set<AbridgedCandidateReceipt>` which returns a set of candidates a given set of relay chain heads that implies a set of candidates whose availability chunks should be currently gossiped. This is defined as all candidates pending availability in any of those relay-chain heads or any of their last `K` ancestors. We assume that state is not pruned within `K` blocks of the chain-head. +We define an operation `live_candidates(relay_heads) -> Set<CommittedCandidateReceipt>` which returns a set of [`CommittedCandidateReceipt`s](../../types/candidate.md#committed-candidate-receipt) a given set of relay chain heads that implies a set of candidates whose availability chunks should be currently gossiped. This is defined as all candidates pending availability in any of those relay-chain heads or any of their last `K` ancestors. We assume that state is not pruned within `K` blocks of the chain-head. We will send any erasure-chunks that correspond to candidates in `live_candidates(peer_most_recent_view_update)`. Likewise, we only accept and forward messages pertaining to a candidate in `live_candidates(current_heads)`. Each erasure chunk should be accompanied by a merkle proof that it is committed to by the erasure trie root in the candidate receipt, and this gossip system is responsible for checking such proof. diff --git a/polkadot/roadmap/implementors-guide/src/node/backing/candidate-backing.md b/polkadot/roadmap/implementors-guide/src/node/backing/candidate-backing.md index c57680e6356cffc50a48c8b5678e512f1642d258..1490bb074ccb30d891cbdf51262630293b541c0b 100644 --- a/polkadot/roadmap/implementors-guide/src/node/backing/candidate-backing.md +++ b/polkadot/roadmap/implementors-guide/src/node/backing/candidate-backing.md @@ -12,7 +12,7 @@ Once a sufficient quorum has agreed that a candidate is valid, this subsystem no The [Candidate Selection subsystem](candidate-selection.md) is the primary source of non-overseer messages into this subsystem. That subsystem generates appropriate [`CandidateBackingMessage`s](../../types/overseer-protocol.md#candidate-backing-message), and passes them to this subsystem. -This subsystem validates the candidates and generates an appropriate [`Statement`](../../types/backing.md#statement-type). All `Statement`s are then passed on to the [Statement Distribution subsystem](statement-distribution.md) to be gossiped to peers. When this subsystem decides that a candidate is invalid, and it was recommended to us to second by our own Candidate Selection subsystem, a message is sent to the Candidate Selection subsystem with the candidate's hash so that the collator which recommended it can be penalized. +This subsystem validates the candidates and generates an appropriate [`SignedStatement`](../../types/backing.md#signed-statement-type). All `SignedStatement`s are then passed on to the [Statement Distribution subsystem](statement-distribution.md) to be gossiped to peers. All [Proofs of Validity](../../types/availability.md#proof-of-validity) should be distributed via the [PoV Distribution](pov-distribution.md) subsystem. When this subsystem decides that a candidate is invalid, and it was recommended to us to second by our own Candidate Selection subsystem, a message is sent to the Candidate Selection subsystem with the candidate's hash so that the collator which recommended it can be penalized. ## Functionality diff --git a/polkadot/roadmap/implementors-guide/src/node/backing/pov-distribution.md b/polkadot/roadmap/implementors-guide/src/node/backing/pov-distribution.md index d7290cbfbf98afcd385cc139763f6f5fc27cdf7a..1cede766743cc7cf5348bc3c2fa2b23e0b5d4d9a 100644 --- a/polkadot/roadmap/implementors-guide/src/node/backing/pov-distribution.md +++ b/polkadot/roadmap/implementors-guide/src/node/backing/pov-distribution.md @@ -4,10 +4,118 @@ This subsystem is responsible for distributing PoV blocks. For now, unified with ## Protocol -Handle requests for PoV block by candidate hash and relay-parent. +`ProtocolId`: `b"povd"` + +Input: [`PoVDistributionMessage`](../../types/overseer-protocol.md#pov-distribution-message) + + +Output: + +- NetworkBridge::RegisterEventProducer(`ProtocolId`) +- NetworkBridge::SendMessage(`[PeerId]`, `ProtocolId`, `Bytes`) +- NetworkBridge::ReportPeer(PeerId, cost_or_benefit) + ## Functionality -Implemented as a gossip system, where `PoV`s are not accepted unless we know a `Seconded` message. +This network protocol is responsible for distributing [`PoV`s](../../types/availability.md#proof-of-validity) by gossip. Since PoVs are heavy in practice, gossip is far from the most efficient way to distribute them. In the future, this should be replaced by a better network protocol that finds validators who have validated the block and connects to them directly. This protocol is descrbied + +This protocol is described in terms of "us" and our peers, with the understanding that this is the procedure that any honest node will run. It has the following goals: + - We never have to buffer an unbounded amount of data + - PoVs will flow transitively across a network of honest nodes, stemming from the validators that originally seconded candidates requiring those PoVs. + +As we are gossiping, we need to track which PoVs our peers are waiting for to avoid sending them data that they are not expecting. It is not reasonable to expect our peers to buffer unexpected PoVs, just as we will not buffer unexpected PoVs. So notifying our peers about what is being awaited is key. However it is important that the notifications system is also bounded. + +For this, in order to avoid reaching into the internals of the [Statement Distribution](statement-distribution.md) Subsystem, we can rely on an expected propery of candidate backing: that each validator can only second one candidate at each chain head. So we can set a cap on the number of PoVs each peer is allowed to notify us that they are waiting for at a given relay-parent. This cap will be the number of validators at that relay-parent. And the view update mechanism of the [Network Bridge](../utility/network-bridge.md) ensures that peers are only allowed to consider a certain set of relay-parents as live. So this bounding mechanism caps the amount of data we need to store per peer at any time at `sum({ n_validators_at_head(head) | head in view_heads })`. Additionally, peers should only be allowed to notify us of PoV hashes they are waiting for in the context of relay-parents in our own local view, which means that `n_validators_at_head` is implied to be `0` for relay-parents not in our own local view. + +View updates from peers and our own view updates are received from the network bridge. These will lag somewhat behind the `StartWork` and `StopWork` messages received from the overseer, which will influence the actual data we store. The `OurViewUpdate`s from the [`NetworkBridgeEvent`](../../types/overseer-protocol.md#network-bridge-update) must be considered canonical in terms of our peers' perception of us. + +Lastly, the system needs to be bootstrapped with our own perception of which PoVs we are cognizant of but awaiting data for. This is done by receipt of the [`PoVDistributionMessage`](../../types/overseer-protocol.md#pov-distribution-message)::ValidatorStatement variant. We can ignore anything except for `Seconded` statements. + +## Formal Description + +This protocol can be implemented as a state machine with the following state: + +```rust +struct State { + relay_parent_state: Map<Hash, BlockBasedState>, + peer_state: Map<PeerId, PeerState>, + our_view: View, +} + +struct BlockBasedState { + known: Map<Hash, PoV>, // should be a shared PoV in practice. these things are heavy. + awaited: Set<Hash>, // awaited PoVs by blake2-256 hash. + fetching: Map<Hash, [ResponseChannel<PoV>]>, + n_validators: usize, +} + +struct PeerState { + awaited: Map<Hash, Set<Hash>>, +} +``` + +We also assume the following network messages, which are sent and received by the [Network Bridge](../utility/network-bridge.md) + +```rust +enum NetworkMessage { + /// Notification that we are awaiting the given PoVs (by hash) against a + /// specific relay-parent hash. + Awaiting(Hash, Vec<Hash>), + /// Notification of an awaited PoV, in a given relay-parent context. + /// (relay_parent, pov_hash, pov) + SendPoV(Hash, Hash, PoV), +} +``` + +Here is the logic of the state machine: + +*Overseer Signals* +- On `StartWork(relay_parent)`: + - Get the number of validators at that relay parent by querying the [Runtime API](../utility/runtime-api.md) for the validators and then counting them. + - Create a blank entry in `relay_parent_state` under `relay_parent` with correct `n_validators` set. +- On `StopWork(relay_parent)`: + - Remove the entry for `relay_parent` from `relay_parent_state`. +- On `Concluded`: conclude. + +*PoV Distribution Messages* +- On `ValidatorStatement(relay_parent, statement)` + - If this is not `Statement::Seconded`, ignore. + - If there is an entry under `relay_parent` in `relay_parent_state`, add the `pov_hash` of the seconded Candidate's [`CandidateDescriptor`](../../types/candidate.md#candidate-descriptor) to the `awaited` set of the entry. + - If the `pov_hash` was not previously awaited and there are `n_validators` or fewer entries in the `awaited` set, send `NetworkMessage::Awaiting(relay_parent, vec![pov_hash])` to all peers. +- On `FetchPoV(relay_parent, descriptor, response_channel)` + - If there is no entry in `relay_parent_state` under `relay_parent`, ignore. + - If there is a PoV under `descriptor.pov_hash` in the `known` map, send that PoV on the channel and return. + - Otherwise, place the `response_channel` in the `fetching` map under `descriptor.pov_hash`. +- On `DistributePoV(relay_parent, descriptor, PoV)` + - If there is no entry in `relay_parent_state` under `relay_parent`, ignore. + - Complete and remove any channels under `descriptor.pov_hash` in the `fetching` map. + - Send `NetworkMessage::SendPoV(relay_parent, descriptor.pov_hash, PoV)` to all peers who have the `descriptor.pov_hash` in the set under `relay_parent` in the `peer.awaited` map and remove the entry from `peer.awaited`. + - Note the PoV under `descriptor.pov_hash` in `known`. + +*Network Bridge Updates* +- On `PeerConnected(peer_id, observed_role)` + - Make a fresh entry in the `peer_state` map for the `peer_id`. +- On `PeerDisconnected(peer_id) + - Remove the entry for `peer_id` from the `peer_state` map. +- On `PeerMessage(peer_id, bytes)` + - If the bytes do not decode to a `NetworkMessage` or the `peer_id` has no entry in the `peer_state` map, report and ignore. + - If this is `NetworkMessage::Awaiting(relay_parent, pov_hashes)`: + - If there is no entry under `peer_state.awaited` for the `relay_parent`, report and ignore. + - If `relay_parent` is not contained within `our_view`, report and ignore. + - Otherwise, if the `awaited` map combined with the `pov_hashes` would have more than `relay_parent_state[relay_parent].n_validators` entries, report and ignore. Note that we are leaning on the property of the network bridge that it sets our view based on `StartWork` messages. + - For each new `pov_hash` in `pov_hashes`, if there is a `pov` under `pov_hash` in the `known` map, send the peer a `NetworkMessage::SendPoV(relay_parent, pov_hash, pov)`. + - Otherwise, add the `pov_hash` to the `awaited` map + - If this is `NetworkMessage::SendPoV(relay_parent, pov_hash, pov)`: + - If there is no entry under `relay_parent` in `relay_parent_state` or no entry under `pov_hash` in our `awaited` map for that `relay_parent`, report and ignore. + - If the blake2-256 hash of the pov doesn't equal `pov_hash`, report and ignore. + - Complete and remove any listeners in the `fetching` map under `pov_hash`. + - Add to `known` map. + - Send `NetworkMessage::SendPoV(relay_parent, descriptor.pov_hash, PoV)` to all peers who have the `descriptor.pov_hash` in the set under `relay_parent` in the `peer.awaited` map and remove the entry from `peer.awaited`. +- On `PeerViewChange(peer_id, view)` + - If Peer is unknown, ignore. + - Ensure there is an entry under `relay_parent` for each `relay_parent` in `view` within the `peer.awaited` map, creating blank `awaited` lists as necessary. + - Remove all entries under `peer.awaited` that are not within `view`. +- On `OurViewChange(view)` + - Update `our_view` to `view` -> TODO: this requires a lot of cross-contamination with statement distribution even if we don't implement this as a gossip system. In a point-to-point implementation, we still have to know _who to ask_, which means tracking who's submitted `Seconded`, `Valid`, or `Invalid` statements - by validator and by peer. One approach is to have the Statement gossip system to just send us this information and then we can separate the systems from the beginning instead of combining them diff --git a/polkadot/roadmap/implementors-guide/src/node/backing/statement-distribution.md b/polkadot/roadmap/implementors-guide/src/node/backing/statement-distribution.md index b77ee7464f8b05037e99de4ee8e7acbb1c87b2b9..59e5244d0d762120a52132b4621bf66d4e048863 100644 --- a/polkadot/roadmap/implementors-guide/src/node/backing/statement-distribution.md +++ b/polkadot/roadmap/implementors-guide/src/node/backing/statement-distribution.md @@ -22,7 +22,7 @@ Implemented as a gossip protocol. Register a network event producer on startup. Statement Distribution is the only backing subsystem which has any notion of peer nodes, who are any full nodes on the network. Validators will also act as peer nodes. -It is responsible for signing statements that we have generated and forwarding them, and for detecting a variety of Validator misbehaviors for reporting to [Misbehavior Arbitration](../utility/misbehavior-arbitration.md). During the Backing stage of the inclusion pipeline, it's the main point of contact with peer nodes, who distribute statements by validators. On receiving a signed statement from a peer, assuming the peer receipt state machine is in an appropriate state, it sends the Candidate Receipt to the [Candidate Backing subsystem](candidate-backing.md) to handle the validator's statement. +It is responsible for distributing signed statements that we have generated and forwarding them, and for detecting a variety of Validator misbehaviors for reporting to [Misbehavior Arbitration](../utility/misbehavior-arbitration.md). During the Backing stage of the inclusion pipeline, it's the main point of contact with peer nodes. On receiving a signed statement from a peer, assuming the peer receipt state machine is in an appropriate state, it sends the Candidate Receipt to the [Candidate Backing subsystem](candidate-backing.md) to handle the validator's statement. Track equivocating validators and stop accepting information from them. Forward double-vote proofs to the double-vote reporting system. Establish a data-dependency order: @@ -37,7 +37,7 @@ The Statement Distribution subsystem sends statements to peer nodes and detects There is a very simple state machine which governs which messages we are willing to receive from peers. Not depicted in the state machine: on initial receipt of any [`SignedFullStatement`](../../types/backing.md#signed-statement-type), validate that the provided signature does in fact sign the included data. Note that each individual parablock candidate gets its own instance of this state machine; it is perfectly legal to receive a `Valid(X)` before a `Seconded(Y)`, as long as a `Seconded(X)` has been received. -A: Initial State. Receive `SignedFullStatement(Statement::Second)`: extract `Statement`, forward to Candidate Backing, proceed to B. Receive any other `SignedFullStatement` variant: drop it. +A: Initial State. Receive `SignedFullStatement(Statement::Second)`: extract `Statement`, forward to Candidate Backing and PoV Distribution, proceed to B. Receive any other `SignedFullStatement` variant: drop it. B: Receive any `SignedFullStatement`: check signature, forward to Candidate Backing. Receive `OverseerMessage::StopWork`: proceed to C. diff --git a/polkadot/roadmap/implementors-guide/src/runtime/inclusion.md b/polkadot/roadmap/implementors-guide/src/runtime/inclusion.md index e2d27476967e225b7e3ce696ba1e99a7a861a63b..d201e3ed51b29a5cf379b2837894b1276ebb9083 100644 --- a/polkadot/roadmap/implementors-guide/src/runtime/inclusion.md +++ b/polkadot/roadmap/implementors-guide/src/runtime/inclusion.md @@ -14,7 +14,7 @@ struct AvailabilityBitfield { struct CandidatePendingAvailability { core: CoreIndex, // availability core - receipt: AbridgedCandidateReceipt, + receipt: CandidateReceipt, availability_votes: Bitfield, // one bit per validator. relay_parent_number: BlockNumber, // number of the relay-parent. backed_in_number: BlockNumber, @@ -28,6 +28,8 @@ Storage Layout: bitfields: map ValidatorIndex => AvailabilityBitfield; /// Candidates pending availability. PendingAvailability: map ParaId => CandidatePendingAvailability; +/// The commitments of candidates pending availability, by ParaId. +PendingAvailabilityCommitments: map ParaId => CandidateCommitments; /// The current validators, by their parachain session keys. Validators: Vec<ValidatorId>; @@ -36,8 +38,6 @@ Validators: Vec<ValidatorId>; CurrentSessionIndex: SessionIndex; ``` -> TODO: `CandidateReceipt` and `AbridgedCandidateReceipt` can contain code upgrades which make them very large. the code entries should be split into a different storage map with infrequent access patterns - ## Session Change 1. Clear out all candidates pending availability. @@ -64,15 +64,17 @@ All failed checks should lead to an unrecoverable error making the block invalid 1. check that there is no candidate pending availability for any scheduled `ParaId`. 1. If the core assignment includes a specific collator, ensure the backed candidate is issued by that collator. 1. Ensure that any code upgrade scheduled by the candidate does not happen within `config.validation_upgrade_frequency` of `Paras::last_code_upgrade(para_id, true)`, if any, comparing against the value of `Paras::FutureCodeUpgrades` for the given para ID. - 1. Check the collator's signature on the pov block. + 1. Check the collator's signature on the candidate data. + 1. Transform each [`CommittedCandidateReceipt`](../types/candidate.md#committed-candidate-receipt) into the corresponding [`CandidateReceipt`](../types/candidate.md#candidate-receipt), setting the commitments aside. 1. check the backing of the candidate using the signatures and the bitfields, comparing against the validators assigned to the groups, fetched with the `group_validators` lookup. 1. check that the upward messages, when combined with the existing queue size, are not exceeding `config.max_upward_queue_count` and `config.watermark_upward_queue_size` parameters. 1. create an entry in the `PendingAvailability` map for each backed candidate with a blank `availability_votes` bitfield. + 1. create a corresponding entry in the `PendingAvailabilityCommitments` with the commitments. 1. Return a `Vec<CoreIndex>` of all scheduled cores of the list of passed assignments that a candidate was successfully backed for, sorted ascending by CoreIndex. -* `enact_candidate(relay_parent_number: BlockNumber, AbridgedCandidateReceipt)`: +* `enact_candidate(relay_parent_number: BlockNumber, CommittedCandidateReceipt)`: 1. If the receipt contains a code upgrade, Call `Paras::schedule_code_upgrade(para_id, code, relay_parent_number + config.validationl_upgrade_delay)`. > TODO: Note that this is safe as long as we never enact candidates where the relay parent is across a session boundary. In that case, which we should be careful to avoid with contextual execution, the configuration might have changed and the para may de-sync from the host's understanding of it. - 1. call `Router::queue_upward_messages` for each backed candidate. + 1. call `Router::queue_upward_messages` for each backed candidate, using the [`UpwardMessage`s](../types/messages.md#upward-message) from the [`CandidateCommitments`](../types/candidate.md#candidate-commitments). 1. Call `Paras::note_new_head` using the `HeadData` from the receipt and `relay_parent_number`. * `collect_pending`: diff --git a/polkadot/roadmap/implementors-guide/src/runtime/router.md b/polkadot/roadmap/implementors-guide/src/runtime/router.md index fff8e78920f7e5daf4ac00cfa6c8fdddccaba197..4f7adeaa048f570795a5503d8f04810c6fb7279b 100644 --- a/polkadot/roadmap/implementors-guide/src/runtime/router.md +++ b/polkadot/roadmap/implementors-guide/src/runtime/router.md @@ -27,9 +27,9 @@ No initialization routine runs for this module. ## Routines -* `queue_upward_messages(AbridgedCandidateReceipt)`: +* `queue_upward_messages(ParaId, Vec<UpwardMessage>)`: 1. Updates `NeedsDispatch`, and enqueues upward messages into `RelayDispatchQueue` and modifies the respective entry in `RelayDispatchQueueSize`. -## Finalization +## Finalization 1. Dispatch queued upward messages from `RelayDispatchQueues` in a FIFO order applying the `config.watermark_upward_queue_size` and `config.max_upward_queue_count` limits. diff --git a/polkadot/roadmap/implementors-guide/src/types/availability.md b/polkadot/roadmap/implementors-guide/src/types/availability.md index 4fd3128513cff6ab0a06d80b8b88fe225349ea72..3362908d6b63f659a09c0885bacafc6c32b59aa1 100644 --- a/polkadot/roadmap/implementors-guide/src/types/availability.md +++ b/polkadot/roadmap/implementors-guide/src/types/availability.md @@ -5,7 +5,7 @@ candidates for the duration of a challenge period. This is done via an erasure-c ## Signed Availability Bitfield -A bitfield [signed](backing.html#signed-wrapper) by a particular validator about the availability of pending candidates. +A bitfield [signed](backing.md#signed-wrapper) by a particular validator about the availability of pending candidates. ```rust diff --git a/polkadot/roadmap/implementors-guide/src/types/backing.md b/polkadot/roadmap/implementors-guide/src/types/backing.md index a963d0ee969569d318ace62389a78727f5bd963c..22799f25733aed6d1de1d8984f9708ff26bea4cb 100644 --- a/polkadot/roadmap/implementors-guide/src/types/backing.md +++ b/polkadot/roadmap/implementors-guide/src/types/backing.md @@ -44,7 +44,7 @@ impl<Payload: EncodeAs<RealPayload>, RealPayload: Encode> Signed<Payload, RealPa } ``` -Note the presence of the [`SigningContext`](../types/candidate.html#signing-context) in the signatures of the `sign` and `validate` methods. To ensure cryptographic security, the actual signed payload is always the SCALE encoding of `(payload.into(), signing_context)`. Including the signing context prevents replay attacks. +Note the presence of the [`SigningContext`](../types/candidate.md#signing-context) in the signatures of the `sign` and `validate` methods. To ensure cryptographic security, the actual signed payload is always the SCALE encoding of `(payload.into(), signing_context)`. Including the signing context prevents replay attacks. `EncodeAs` is a helper trait with a blanket impl which ensures that any `T` can `EncodeAs<T>`. Therefore, for the generic case where `RealPayload = Payload`, it changes nothing. However, we `impl EncodeAs<CompactStatement> for Statement`, which helps efficiency. @@ -61,7 +61,7 @@ enum Statement { /// second only 1 candidate; this places an upper bound on the total number of candidates whose validity /// needs to be checked. A validator who seconds more than 1 parachain candidate per relay head is subject /// to slashing. - Seconded(CandidateReceipt), + Seconded(CommittedCandidateReceipt), /// A statement about the validity of a candidate, based on candidate's hash. Valid(Hash), /// A statement about the invalidity of a candidate. @@ -91,7 +91,7 @@ enum CompactStatement { A statement which has been [cryptographically signed](#signed-wrapper) by a validator. ```rust -/// A signed statement, containing the abridged candidate receipt in the `Seconded` variant. +/// A signed statement, containing the committed candidate receipt in the `Seconded` variant. pub type SignedFullStatement = Signed<Statement, CompactStatement>; /// A signed statement, containing only the hash. @@ -102,11 +102,11 @@ Munging the signed `Statement` into a `CompactStatement` before signing allows t ## Backed Candidate -An [`AbridgedCandidateReceipt`](candidate.md#abridgedcandidatereceipt) along with all data necessary to prove its backing. This is submitted to the relay-chain to process and move along the candidate to the pending-availability stage. +An [`CommittedCandidateReceipt`](candidate.md#committed-candidate-receipt) along with all data necessary to prove its backing. This is submitted to the relay-chain to process and move along the candidate to the pending-availability stage. ```rust struct BackedCandidate { - candidate: AbridgedCandidateReceipt, + candidate: CommittedCandidateReceipt, validity_votes: Vec<ValidityAttestation>, // the indices of validators who signed the candidate within the group. There is no need to include // bit for any validators who are not in the group, so this is more compact. diff --git a/polkadot/roadmap/implementors-guide/src/types/candidate.md b/polkadot/roadmap/implementors-guide/src/types/candidate.md index ff09365c936a6d54b045cf7267421a9c498d5408..fdba6919e57ce340df8eab39be92798a376fd1ef 100644 --- a/polkadot/roadmap/implementors-guide/src/types/candidate.md +++ b/polkadot/roadmap/implementors-guide/src/types/candidate.md @@ -4,18 +4,34 @@ Para candidates are some of the most common types, both within the runtime and o In a way, this entire guide is about these candidates: how they are scheduled, constructed, backed, included, and challenged. -This section will describe the base candidate type, its components, and abridged counterpart. +This section will describe the base candidate type, its components, and variants that contain extra data. -## CandidateReceipt +## Candidate Receipt -This is the base receipt type. The `GlobalValidationSchedule` and the `LocalValidationData` are technically redundant with the `inner.relay_parent`, which uniquely describes the a block in the blockchain from whose state these values are derived. The [`AbridgedCandidateReceipt`](#abridgedcandidatereceipt) variant is often used instead for this reason. +Much info in a [`FullCandidateReceipt`](#full-candidate-receipt) is duplicated from the relay-chain state. When the corresponding relay-chain state is considered widely available, the Candidate Receipt should be favored over the `FullCandidateReceipt`. -However, the full CandidateReceipt type is useful as a means of avoiding the implicit dependency on availability of old blockchain state. In situations such as availability and approval, having the full description of the candidate within a self-contained struct is convenient. +Examples of situations where the state is readily available includes within the scope of work done by subsystems working on a given relay-parent, or within the logic of the runtime importing a backed candidate. ```rust -/// All data pertaining to the execution of a para candidate. +/// A candidate-receipt. struct CandidateReceipt { - inner: AbridgedCandidateReceipt, + /// The descriptor of the candidate. + descriptor: CandidateDescriptor, + /// The hash of the encoded commitments made as a result of candidate execution. + commitments_hash: Hash, +} +``` + +## Full Candidate Receipt + +This is the full receipt type. The `GlobalValidationSchedule` and the `LocalValidationData` are technically redundant with the `inner.relay_parent`, which uniquely describes the a block in the blockchain from whose state these values are derived. The [`CandidateReceipt`](#candidate-receipt) variant is often used instead for this reason. + +However, the Full Candidate Receipt type is useful as a means of avoiding the implicit dependency on availability of old blockchain state. In situations such as availability and approval, having the full description of the candidate within a self-contained struct is convenient. + +```rust +/// All data pertaining to the execution of a para candidate. +struct FullCandidateReceipt { + inner: CandidateReceipt, /// The global validation schedule. global_validation: GlobalValidationSchedule, /// The local validation data. @@ -23,38 +39,49 @@ struct CandidateReceipt { } ``` -## AbridgedCandidateReceipt +## Committed Candidate Receipt -Much info in a [`CandidateReceipt`](#candidatereceipt) is duplicated from the relay-chain state. When the corresponding relay-chain state is considered widely available, the Abridged Candidate Receipt should be favored. +This is a variant of the candidate receipt which includes the commitments of the candidate receipt alongside the descriptor. This should be favored over the [`Candidate Receipt`](#candidate-receipt) in situations where the candidate is not going to be executed but the actual data committed to is important. This is often the case in the backing phase. -Examples of situations where the state is readily available includes within the scope of work done by subsystems working on a given relay-parent, or within the logic of the runtime importing a backed candidate. +The hash of the committed candidate receipt will be the same as the corresponding [`Candidate Receipt`](#candidate-receipt), because it is computed by first hashing the encoding of the commitments to form a plain [`Candidate Receipt`](#candidate-receipt). + +```rust +/// A candidate-receipt with commitments directly included. +struct CommittedCandidateReceipt { + /// The descriptor of the candidate. + descriptor: CandidateDescriptor, + /// The commitments of the candidate receipt. + commitments: CandidateCommitments, +} +``` + +## Candidate Descriptor + +This struct is pure description of the candidate, in a lightweight format. ```rust -/// An abridged candidate-receipt. -struct AbridgedCandidateReceipt { +/// A unique descriptor of the candidate receipt. +struct CandidateDescriptor { /// The ID of the para this is a candidate for. para_id: Id, /// The hash of the relay-chain block this is executed in the context of. relay_parent: Hash, - /// The head-data produced as a result of execution. - head_data: HeadData, /// The collator's sr25519 public key. collator: CollatorId, /// Signature on blake2-256 of components of this receipt: - /// The parachain index, the relay parent, the head data, and the pov_hash. + /// The parachain index, the relay parent, and the pov_hash. signature: CollatorSignature, /// The blake2-256 hash of the pov-block. pov_hash: Hash, - /// Commitments made as a result of validation. - commitments: CandidateCommitments, } ``` + ## GlobalValidationSchedule The global validation schedule comprises of information describing the global environment for para execution, as derived from a particular relay-parent. These are parameters that will apply to all parablocks executed in the context of this relay-parent. -> TODO: message queue watermarks (first upward messages, then XCMP channels) +> TODO: message queue watermarks (first downward messages, then XCMP channels) ```rust /// Extra data that is needed along with the other fields in a `CandidateReceipt` @@ -88,13 +115,13 @@ Para validation happens optimistically before the block is authored, so it is no ```rust /// Extra data that is needed along with the other fields in a `CandidateReceipt` /// to fully validate the candidate. These fields are parachain-specific. -pub struct LocalValidationData { +struct LocalValidationData { /// The parent head-data. - pub parent_head: HeadData, + parent_head: HeadData, /// The balance of the parachain at the moment of validation. - pub balance: Balance, + balance: Balance, /// The blake2-256 hash of the validation code used to execute the candidate. - pub validation_code_hash: Hash, + validation_code_hash: Hash, /// Whether the parachain is allowed to upgrade its validation code. /// /// This is `Some` if so, and contains the number of the minimum relay-chain @@ -106,7 +133,7 @@ pub struct LocalValidationData { /// height. This may be equal to the current perceived relay-chain block height, in /// which case the code upgrade should be applied at the end of the signaling /// block. - pub code_upgrade_allowed: Option<BlockNumber>, + code_upgrade_allowed: Option<BlockNumber>, } ``` @@ -118,7 +145,7 @@ Head data is a type-safe abstraction around bytes (`Vec<u8>`) for the purposes o struct HeadData(Vec<u8>); ``` -## CandidateCommitments +## Candidate Commitments The execution and validation of parachain or parathread candidates produces a number of values which either must be committed to on the relay chain or committed to the state of the relay chain. @@ -126,15 +153,17 @@ The execution and validation of parachain or parathread candidates produces a nu /// Commitments made in a `CandidateReceipt`. Many of these are outputs of validation. #[derive(PartialEq, Eq, Clone, Encode, Decode)] #[cfg_attr(feature = "std", derive(Debug, Default))] -pub struct CandidateCommitments { +struct CandidateCommitments { /// Fees paid from the chain to the relay chain validators. - pub fees: Balance, + fees: Balance, /// Messages destined to be interpreted by the Relay chain itself. - pub upward_messages: Vec<UpwardMessage>, + upward_messages: Vec<UpwardMessage>, /// The root of a block's erasure encoding Merkle tree. - pub erasure_root: Hash, + erasure_root: Hash, /// New validation code. - pub new_validation_code: Option<ValidationCode>, + new_validation_code: Option<ValidationCode>, + /// The head-data produced as a result of execution. + head_data: HeadData, } ``` diff --git a/polkadot/roadmap/implementors-guide/src/types/overseer-protocol.md b/polkadot/roadmap/implementors-guide/src/types/overseer-protocol.md index 6a1bdfa96ed9ec6c49968c0e1cc492e5d48f440c..7b211bd14f6c864c46c56c23b6d79346a7ba45f4 100644 --- a/polkadot/roadmap/implementors-guide/src/types/overseer-protocol.md +++ b/polkadot/roadmap/implementors-guide/src/types/overseer-protocol.md @@ -90,8 +90,8 @@ enum CandidateBackingMessage { /// in a child of the given relay-parent, referenced by its hash. RegisterBackingWatcher(Hash, TODO), /// Note that the Candidate Backing subsystem should second the given candidate in the context of the - /// given relay-parent (ref. by hash). This candidate must be validated. - Second(Hash, CandidateReceipt), + /// given relay-parent (ref. by hash). This candidate must be validated using the provided PoV. + Second(Hash, CandidateReceipt, PoV), /// Note a peer validator's statement about a particular candidate. Disagreements about validity must be escalated /// to a broader check by Misbehavior Arbitration. Agreements are simply tallied until a quorum is reached. Statement(Statement), @@ -168,11 +168,23 @@ enum MisbehaviorReport { If this subsystem chooses to second a parachain block, it dispatches a `CandidateBackingSubsystemMessage`. -## PoV Distribution +## PoV Distribution Message -Messages received by the PoV Distribution subsystem are unspecified and highly tied to gossip. - -> TODO +```rust +enum PoVDistributionMessage { + /// Note a statement by a validator on a relay-parent. `Seconded` statements must always + /// have been passed in before `Valid` or `Invalid` statements. + ValidatorStatement(Hash, SignedFullStatement), + /// Fetch a PoV from the network. + /// (relay_parent, PoV-hash, Response channel). + FetchPoV(Hash, CandidateDescriptor, ResponseChannel<PoV>), + /// Distribute a PoV for the given relay-parent and CandidateDescriptor. + /// The PoV should correctly hash to the PoV hash mentioned in the CandidateDescriptor + DistributePoV(Hash, CandidateDescriptor, PoV), + /// An update from the network bridge. + NetworkBridgeUpdate(NetworkBridgeEvent), +} +``` ## Provisioner Message diff --git a/polkadot/scripts/gitlab/check_labels.sh b/polkadot/scripts/gitlab/check_labels.sh index 36cbcadbc0de29c47e9fedadcee8c3a87b11daa2..b2feebc09c054f06a932d5c96285491bdaaf7400 100755 --- a/polkadot/scripts/gitlab/check_labels.sh +++ b/polkadot/scripts/gitlab/check_labels.sh @@ -3,9 +3,11 @@ #shellcheck source=lib.sh source "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )/lib.sh" +repo='paritytech/polkadot' + ensure_labels() { for label in "$@"; do - if has_label 'paritytech/polkadot' "$CI_COMMIT_BRANCH" "$label"; then + if has_label "$repo" "$CI_COMMIT_BRANCH" "$label"; then return 0 fi done @@ -19,7 +21,7 @@ releasenotes_labels=( 'B2-runtimenoteworthy' ) -criticality_labels=( +priority_labels=( 'C1-low' 'C3-medium' 'C7-high' @@ -34,11 +36,19 @@ else exit 1 fi -echo "[+] Checking release criticality (C) labels for $CI_COMMIT_BRANCH" -if ensure_labels "${criticality_labels[@]}"; then - echo "[+] Release criticality label detected. All is well." +echo "[+] Checking release priority (C) labels for $CI_COMMIT_BRANCH" +if ensure_labels "${priority_labels[@]}"; then + echo "[+] Release priority label detected. All is well." else - echo "[!] Release criticality label not detected. Please add one of: ${criticality_labels[*]}" + echo "[!] Release priority label not detected. Please add one of: ${priority_labels[*]}" + exit 1 +fi + +# If the priority is anything other than C1-low, we *must not* have a B0-silent +# label +if has_label "$repo" "$CI_COMMIT_BRANCH" 'B0-silent' && + ! has_label "$repo" "$CI_COMMIT_BRANCH" 'C1-low' ; then + echo "[!] Changes with a priority higher than C1-low *MUST* have a B- label that is not B0-Silent" exit 1 fi diff --git a/polkadot/scripts/gitlab/lib.sh b/polkadot/scripts/gitlab/lib.sh index 32e1827d25d78ce6db1be5d12f7eeab035254867..0f1c74193bdc0be858fec662ed326b91cd8d0f8a 100755 --- a/polkadot/scripts/gitlab/lib.sh +++ b/polkadot/scripts/gitlab/lib.sh @@ -9,9 +9,7 @@ sanitised_git_logs(){ # Only find messages referencing a PR grep -E '\(#[0-9]+\)' | # Strip any asterisks - sed 's/^* //g' | - # And add them all back - sed 's/^/* /g' + sed 's/^* //g' } # Checks whether a tag on github has been verified diff --git a/polkadot/scripts/gitlab/publish_draft_release.sh b/polkadot/scripts/gitlab/publish_draft_release.sh index e9bf69c79dc159e9b5343742b252b8ef37a2b40b..c91846bc884719e2541fb82718d8562982dc2af1 100755 --- a/polkadot/scripts/gitlab/publish_draft_release.sh +++ b/polkadot/scripts/gitlab/publish_draft_release.sh @@ -50,7 +50,9 @@ This release was built with the following versions of \`rustc\`. Other versions - $nightly_rustc " -runtime_changes="" +declare -a misc_changes +declare -a runtime_changes +declare -a client_changes # Following variables are for tracking the priority of the release (i.e., # how important it is for the user to upgrade). @@ -72,7 +74,9 @@ declare -A priority_descriptions=( ['C9-critical']="Upgrade priority: â—â— **URGENT** â—â— PLEASE UPGRADE IMMEDIATELY" ) -max_label=-1 +# We don't actually take any action on C1-low, so we can start at medium +# But set C1-low as the default +max_label=1 priority="${priority_descriptions['C1-low']}" declare -a priority_changes @@ -93,6 +97,7 @@ while IFS= read -r line; do prev_label="$max_label" max_label="$index" priority="${priority_descriptions[$cur_label]}" + # If it's not an increase in priority, we just append the PR to the list if [ "$prev_label" == "$max_label" ]; then priority_changes+=("${line/\* /}") @@ -101,6 +106,12 @@ while IFS= read -r line; do if [ "$prev_label" != "$max_label" ]; then priority_changes=("${line/\* /}") fi + + # Append priority to change + # Skip first 3 chars + note=${cur_label:3} + # And capitalise + line=" \`${note^}\` $line" fi done @@ -111,26 +122,16 @@ while IFS= read -r line; do # If the PR has a runtimenoteworthy label, add to the runtime_changes section if has_label 'paritytech/polkadot' "$pr_id" 'B2-runtimenoteworthy'; then - runtime_changes="$runtime_changes -$line" + runtime_changes+=("$line") fi # If the PR has a releasenotes label, add to the release section if has_label 'paritytech/polkadot' "$pr_id" 'B1-releasenotes'; then - release_text="$release_text -$line" + misc_changes+=("$line") fi done <<< "$(sanitised_git_logs "$last_version" "$version" | \ sed '/^\[contracts\].*/d' | \ sed '/^contracts:.*/d' )" -if [ -n "$runtime_changes" ]; then - release_text="$release_text - -## Runtime -$runtime_changes" -fi -echo "$release_text" - # Get substrate changes between last polkadot version and current # By grepping the Cargo.lock for a substrate crate, and grepping out the commit hash cur_substrate_commit=$(grep -A 2 'name = "sc-cli"' Cargo.lock | grep -E -o '[a-f0-9]{40}') @@ -140,10 +141,6 @@ pushd $substrate_dir || exit git checkout master > /dev/null git pull > /dev/null all_substrate_changes="$(sanitised_git_logs "$old_substrate_commit" "$cur_substrate_commit" | sed 's/(#/(paritytech\/substrate#/')" - substrate_runtime_changes="" - substrate_api_changes="" - substrate_client_changes="" - substrate_changes="" echo "[+] Iterating through substrate changes to find labelled PRs" while IFS= read -r line; do @@ -159,6 +156,7 @@ pushd $substrate_dir || exit prev_label="$max_label" max_label="$index" priority="${priority_descriptions[$cur_label]}" + # If it's not an increase in priority, we just append if [ "$prev_label" == "$max_label" ]; then priority_changes+=("${line/\* /}") @@ -167,6 +165,12 @@ pushd $substrate_dir || exit if [ "$prev_label" != "$max_label" ]; then priority_changes=("${line/\* /}") fi + + # Append priority to change + # Skip first 3 chars + note=${cur_label:3} + # And capitalise + line=" \`${note^}\` $line" fi done @@ -174,55 +178,17 @@ pushd $substrate_dir || exit if has_label 'paritytech/substrate' "$pr_id" 'B0-silent'; then continue fi - if has_label 'paritytech/substrate' "$pr_id" 'B3-apinoteworthy' ; then - substrate_api_changes="$substrate_api_changes -$line" - continue - fi if has_label 'paritytech/substrate' "$pr_id" 'B5-clientnoteworthy'; then - substrate_client_changes="$substrate_client_changes -$line" + client_changes+=("$line") fi if has_label 'paritytech/substrate' "$pr_id" 'B7-runtimenoteworthy'; then - substrate_runtime_changes="$substrate_runtime_changes -$line" + runtime_changes+=("$line") fi done <<< "$all_substrate_changes" popd || exit -# Make the substrate section if there are any substrate changes -if [ -n "$substrate_runtime_changes" ] || - [ -n "$substrate_api_changes" ] || - [ -n "$substrate_client_changes" ]; then - substrate_changes=$(cat << EOF -# Substrate changes - -EOF -) - if [ -n "$substrate_runtime_changes" ]; then - substrate_changes="$substrate_changes - -## Runtime -$substrate_runtime_changes" - fi - if [ -n "$substrate_client_changes" ]; then - substrate_changes="$substrate_changes - -## Client -$substrate_client_changes" - fi - if [ -n "$substrate_api_changes" ]; then - substrate_changes="$substrate_changes - -## API -$substrate_api_changes" - fi - release_text="$release_text - -$substrate_changes" -fi -# Finally, add the priorities to the *start* of the release notes +# Add the priorities to the *start* of the release notes # If polkadot and substrate priority = low, no need for list of changes if [ "$priority" == "${priority_descriptions['C1-low']}" ]; then release_text="$priority @@ -234,6 +200,29 @@ else $release_text" fi +# Append all notable changes to the release notes + +if [ "${#misc_changes[*]}" -gt 0 ] ; then + release_text="$release_text + +## Changes +$(printf '* %s\n' "${misc_changes[@]}")" +fi + +if [ "${#client_changes[*]}" -gt 0 ] ; then + release_text="$release_text + +## Client +$(printf '* %s\n' "${client_changes[@]}")" +fi + +if [ "${#runtime_changes[*]}" -gt 0 ] ; then + release_text="$release_text + +## Runtime +$(printf '* %s\n' "${runtime_changes[@]}")" +fi + echo "[+] Release text generated: " echo "$release_text" diff --git a/polkadot/service/res/kusama.json b/polkadot/service/res/kusama.json index 9b377ab3928f998736c8aa8655f9c35e0e5541a2..64e14b9ec8fb0285fe92c738ee0c3724819311ae 100644 --- a/polkadot/service/res/kusama.json +++ b/polkadot/service/res/kusama.json @@ -2,15 +2,15 @@ "name": "Kusama", "id": "ksmcc3", "bootNodes": [ - "/dns4/p2p.cc3-0.kusama.network/tcp/30100/p2p/12D3KooWDgtynm4S9M3m6ZZhXYu2RrWKdvkCSScc25xKDVSg1Sjd", - "/dns4/p2p.cc3-1.kusama.network/tcp/30100/p2p/12D3KooWNpGriWPmf621Lza9UWU9eLLBdCFaErf6d4HSK7Bcqnv4", - "/dns4/p2p.cc3-2.kusama.network/tcp/30100/p2p/12D3KooWLmLiB4AenmN2g2mHbhNXbUcNiGi99sAkSk1kAQedp8uE", - "/dns4/p2p.cc3-3.kusama.network/tcp/30100/p2p/12D3KooWEGHw84b4hfvXEfyq4XWEmWCbRGuHMHQMpby4BAtZ4xJf", - "/dns4/p2p.cc3-4.kusama.network/tcp/30100/p2p/12D3KooWF9KDPRMN8WpeyXhEeURZGP8Dmo7go1tDqi7hTYpxV9uW", - "/dns4/p2p.cc3-5.kusama.network/tcp/30100/p2p/12D3KooWDiwMeqzvgWNreS9sV1HW3pZv1PA7QGA7HUCo7FzN5gcA", - "/dns4/kusama-bootnode-0.paritytech.net/tcp/30333/p2p/QmTFUXWi98EADXdsUxvv7t9fhJG1XniRijahDXxdv1EbAW", - "/dns4/kusama-bootnode-0.paritytech.net/tcp/30334/ws/p2p/QmTFUXWi98EADXdsUxvv7t9fhJG1XniRijahDXxdv1EbAW", - "/dns4/kusama-bootnode-1.paritytech.net/tcp/30333/p2p/Qmf58BhdDSkHxGy1gX5YUuHCpdYYGACxQM3nGWa7xJa5an" + "/dns/p2p.cc3-0.kusama.network/tcp/30100/p2p/12D3KooWDgtynm4S9M3m6ZZhXYu2RrWKdvkCSScc25xKDVSg1Sjd", + "/dns/p2p.cc3-1.kusama.network/tcp/30100/p2p/12D3KooWNpGriWPmf621Lza9UWU9eLLBdCFaErf6d4HSK7Bcqnv4", + "/dns/p2p.cc3-2.kusama.network/tcp/30100/p2p/12D3KooWLmLiB4AenmN2g2mHbhNXbUcNiGi99sAkSk1kAQedp8uE", + "/dns/p2p.cc3-3.kusama.network/tcp/30100/p2p/12D3KooWEGHw84b4hfvXEfyq4XWEmWCbRGuHMHQMpby4BAtZ4xJf", + "/dns/p2p.cc3-4.kusama.network/tcp/30100/p2p/12D3KooWF9KDPRMN8WpeyXhEeURZGP8Dmo7go1tDqi7hTYpxV9uW", + "/dns/p2p.cc3-5.kusama.network/tcp/30100/p2p/12D3KooWDiwMeqzvgWNreS9sV1HW3pZv1PA7QGA7HUCo7FzN5gcA", + "/dns/kusama-bootnode-0.paritytech.net/tcp/30333/p2p/QmTFUXWi98EADXdsUxvv7t9fhJG1XniRijahDXxdv1EbAW", + "/dns/kusama-bootnode-0.paritytech.net/tcp/30334/ws/p2p/QmTFUXWi98EADXdsUxvv7t9fhJG1XniRijahDXxdv1EbAW", + "/dns/kusama-bootnode-1.paritytech.net/tcp/30333/p2p/Qmf58BhdDSkHxGy1gX5YUuHCpdYYGACxQM3nGWa7xJa5an" ], "telemetryEndpoints": [ [ diff --git a/polkadot/service/res/polkadot.json b/polkadot/service/res/polkadot.json index 07c26f2e78d15c70d7c8fb321421f1b21ef9670e..90e3f529a878553c6e303248f1cf8b00672f1afa 100644 --- a/polkadot/service/res/polkadot.json +++ b/polkadot/service/res/polkadot.json @@ -3,14 +3,14 @@ "id": "polkadot", "chainType": "Live", "bootNodes": [ - "/dns4/p2p.cc1-0.polkadot.network/tcp/30100/p2p/12D3KooWEdsXX9657ppNqqrRuaCHFvuNemasgU5msLDwSJ6WqsKc", - "/dns4/p2p.cc1-1.polkadot.network/tcp/30100/p2p/12D3KooWAtx477KzC8LwqLjWWUG6WF4Gqp2eNXmeqAG98ehAMWYH", - "/dns4/p2p.cc1-2.polkadot.network/tcp/30100/p2p/12D3KooWAGCCPZbr9UWGXPtBosTZo91Hb5M3hU8v6xbKgnC5LVao", - "/dns4/p2p.cc1-3.polkadot.network/tcp/30100/p2p/12D3KooWJ4eyPowiVcPU46pXuE2cDsiAmuBKXnFcFPapm4xKFdMJ", - "/dns4/p2p.cc1-4.polkadot.network/tcp/30100/p2p/12D3KooWNMUcqwSj38oEq1zHeGnWKmMvrCFnpMftw7JzjAtRj2rU", - "/dns4/p2p.cc1-5.polkadot.network/tcp/30100/p2p/12D3KooWDs6LnpmWDWgZyGtcLVr3E75CoBxzg1YZUPL5Bb1zz6fM", - "/dns4/cc1-0.parity.tech/tcp/30333/p2p/12D3KooWSz8r2WyCdsfWHgPyvD8GKQdJ1UAiRmrcrs8sQB3fe2KU", - "/dns4/cc1-1.parity.tech/tcp/30333/p2p/12D3KooWFN2mhgpkJsDBuNuE5427AcDrsib8EoqGMZmkxWwx3Md4" + "/dns/p2p.cc1-0.polkadot.network/tcp/30100/p2p/12D3KooWEdsXX9657ppNqqrRuaCHFvuNemasgU5msLDwSJ6WqsKc", + "/dns/p2p.cc1-1.polkadot.network/tcp/30100/p2p/12D3KooWAtx477KzC8LwqLjWWUG6WF4Gqp2eNXmeqAG98ehAMWYH", + "/dns/p2p.cc1-2.polkadot.network/tcp/30100/p2p/12D3KooWAGCCPZbr9UWGXPtBosTZo91Hb5M3hU8v6xbKgnC5LVao", + "/dns/p2p.cc1-3.polkadot.network/tcp/30100/p2p/12D3KooWJ4eyPowiVcPU46pXuE2cDsiAmuBKXnFcFPapm4xKFdMJ", + "/dns/p2p.cc1-4.polkadot.network/tcp/30100/p2p/12D3KooWNMUcqwSj38oEq1zHeGnWKmMvrCFnpMftw7JzjAtRj2rU", + "/dns/p2p.cc1-5.polkadot.network/tcp/30100/p2p/12D3KooWDs6LnpmWDWgZyGtcLVr3E75CoBxzg1YZUPL5Bb1zz6fM", + "/dns/cc1-0.parity.tech/tcp/30333/p2p/12D3KooWSz8r2WyCdsfWHgPyvD8GKQdJ1UAiRmrcrs8sQB3fe2KU", + "/dns/cc1-1.parity.tech/tcp/30333/p2p/12D3KooWFN2mhgpkJsDBuNuE5427AcDrsib8EoqGMZmkxWwx3Md4" ], "telemetryEndpoints": [ [ diff --git a/polkadot/service/src/lib.rs b/polkadot/service/src/lib.rs index 42eeadf0d3c3d36729c0ac7bd5f081c8c966a071..0f64f41bf9f0cc78d309d212bd69f752d159a2a3 100644 --- a/polkadot/service/src/lib.rs +++ b/polkadot/service/src/lib.rs @@ -389,7 +389,7 @@ macro_rules! new_full { max_block_data_size, }.build(); - service.spawn_essential_task("validation-service", Box::pin(validation_service)); + service.spawn_essential_task_handle().spawn("validation-service", Box::pin(validation_service)); handles.validation_service_handle = Some(validation_service_handle.clone()); @@ -436,7 +436,7 @@ macro_rules! new_full { }; let babe = babe::start_babe(babe_config)?; - service.spawn_essential_task("babe", babe); + service.spawn_essential_task_handle().spawn_blocking("babe", babe); } if matches!(role, Role::Authority{..} | Role::Sentry{..}) { @@ -470,7 +470,7 @@ macro_rules! new_full { service.prometheus_registry(), ); - service.spawn_task("authority-discovery", authority_discovery); + service.spawn_task_handle().spawn("authority-discovery", authority_discovery); } } @@ -531,7 +531,7 @@ macro_rules! new_full { shared_voter_state, }; - service.spawn_essential_task( + service.spawn_essential_task_handle().spawn_blocking( "grandpa-voter", grandpa::run_grandpa_voter(grandpa_config)? );