From 7b4ea8d8cbba8966d66b642e9f29e89f4d8a292d Mon Sep 17 00:00:00 2001 From: Cecile Tonglet Date: Wed, 7 Oct 2020 10:51:01 +0200 Subject: [PATCH] Uniformize tests (#220) * Initial commit Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * Copy runtime module from rococo Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * Also copy dependencies pallets and primitives Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * WIP Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * WIP Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * test-service * Move integration test * CLEANUP Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * Not sure what went wrong... * WIP Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * WIP Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * CLEANUP Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * fmt * CLEANUP Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * CLEANUP Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * Remove pallet contracts (not used) * Remove pallet parachain-info and token-dealer (not used) * Sort dependencies alphabetically * CLEANUP Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * CumulusTestNode for testing * Speed up block generation * Fix improper shutdown * rustfmt * runtime: replace const by storage * Fix for previous commit * Remove some generics * Move generate_genesis_state to cumulus-primitives * fmt * Remove message_example * fixup! Remove message_example * WIP Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * Half the solution to previous commit :( * Revert "Fix for previous commit" This reverts commit 60010bab6797487093ac8c790b3a536f7ca0895b. * Revert "runtime: replace const by storage" This reverts commit c64b3a46f0325a98922015e0cbf3570e2e431774. Not working for some reason... * Use helper Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * WIP Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * Remove test-primitives * Revert "Half the solution to previous commit :(" This reverts commit 9a8f89f9f06252198e6405057043c6b313f1aea4. * Revert "Revert "Half the solution to previous commit :("" This reverts commit 6a93f0f09d74ccdc3738dd78a777c483427c03ce. * Test with some extra extrinsics * WIP Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * CLEANUP Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * WIP Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * WIP Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * WIP Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * WIP Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * WIP Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * WIP Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * WIP Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * CLEANUP Forked at: 56753b7717a624215703c0fdd9be0231e949fb86 Parent branch: origin/master * Remove message broker --- cumulus/Cargo.lock | 886 ++++++++++-------- cumulus/Cargo.toml | 1 + cumulus/parachain-upgrade/src/lib.rs | 2 +- cumulus/primitives/Cargo.toml | 2 + cumulus/primitives/src/genesis.rs | 50 + cumulus/primitives/src/lib.rs | 2 + cumulus/rococo-parachains/Cargo.toml | 16 - cumulus/rococo-parachains/src/command.rs | 40 +- .../rococo-parachains/src/integration_test.rs | 215 ----- cumulus/rococo-parachains/src/main.rs | 2 - cumulus/rococo-parachains/src/service.rs | 113 +-- cumulus/runtime/Cargo.toml | 17 +- cumulus/runtime/src/validate_block/tests.rs | 72 +- cumulus/test/client/Cargo.toml | 15 +- cumulus/test/client/src/block_builder.rs | 57 ++ cumulus/test/client/src/lib.rs | 102 +- cumulus/test/runtime/Cargo.toml | 70 +- cumulus/test/runtime/build.rs | 4 +- cumulus/test/runtime/src/lib.rs | 338 ++++++- cumulus/test/service/Cargo.toml | 66 ++ cumulus/test/service/src/chain_spec.rs | 127 +++ cumulus/test/service/src/genesis.rs | 29 + cumulus/test/service/src/lib.rs | 509 ++++++++++ cumulus/test/service/tests/integration.rs | 90 ++ 24 files changed, 1956 insertions(+), 869 deletions(-) create mode 100644 cumulus/primitives/src/genesis.rs delete mode 100644 cumulus/rococo-parachains/src/integration_test.rs create mode 100644 cumulus/test/client/src/block_builder.rs create mode 100644 cumulus/test/service/Cargo.toml create mode 100644 cumulus/test/service/src/chain_spec.rs create mode 100644 cumulus/test/service/src/genesis.rs create mode 100644 cumulus/test/service/src/lib.rs create mode 100644 cumulus/test/service/tests/integration.rs diff --git a/cumulus/Cargo.lock b/cumulus/Cargo.lock index dee98b3cc8..ce3388b072 100644 --- a/cumulus/Cargo.lock +++ b/cumulus/Cargo.lock @@ -196,7 +196,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d0864d84b8e07b145449be9a8537db86bf9de5ce03b913214694643b4743502" dependencies = [ "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] @@ -232,63 +232,74 @@ dependencies = [ [[package]] name = "async-executor" -version = "0.1.2" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f47c78ea98277cb1f5e6f60ba4fc762f5eafe9f6511bc2f7dfd8b75c225650" +checksum = "d373d78ded7d0b3fa8039375718cde0aace493f2e34fb60f51cbf567562ca801" dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "once_cell", + "vec-arena", +] + +[[package]] +name = "async-global-executor" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fefeb39da249f4c33af940b779a56723ce45809ef5c54dad84bb538d4ffb6d9e" +dependencies = [ + "async-executor", "async-io", "futures-lite", - "multitask", - "parking 1.0.6", - "scoped-tls", - "waker-fn", + "num_cpus", + "once_cell", ] [[package]] name = "async-io" -version = "0.1.11" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae22a338d28c75b53702b66f77979062cb29675db376d99e451af4fa79dedb3" +checksum = "6e727cebd055ab2861a854f79def078c4b99ea722d54c6800a0e274389882d4c" dependencies = [ - "cfg-if", "concurrent-queue", + "fastrand", "futures-lite", - "libc", + "log 0.4.11", + "nb-connect", "once_cell", - "parking 2.0.0", + "parking", "polling", - "socket2", "vec-arena", - "wepoll-sys-stjepang", - "winapi 0.3.9", + "waker-fn", ] [[package]] name = "async-mutex" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66941c2577c4fa351e4ce5fdde8f86c69b88d623f3b955be1bc7362a23434632" +checksum = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e" dependencies = [ "event-listener", ] [[package]] name = "async-std" -version = "1.6.3" +version = "1.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c8da367da62b8ff2313c406c9ac091c1b31d67a165becdd2de380d846260f7" +checksum = "a9fa76751505e8df1c7a77762f60486f60c71bbd9b8557f4da6ad47d083732ed" dependencies = [ - "async-executor", + "async-global-executor", "async-io", "async-mutex", - "async-task", "blocking", "crossbeam-utils", "futures-channel", "futures-core", "futures-io", "futures-lite", - "futures-timer 3.0.2", + "gloo-timers", "kv-log-macro", "log 0.4.11", "memchr", @@ -302,9 +313,9 @@ dependencies = [ [[package]] name = "async-task" -version = "3.0.0" +version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17772156ef2829aadc587461c7753af20b7e8db1529bc66855add962a3b35d3" +checksum = "8ab27c1aa62945039e44edaeee1dc23c74cc0c303dd5fe0fb462a184f1c3a518" [[package]] name = "async-tls" @@ -349,9 +360,9 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "backtrace" -version = "0.3.50" +version = "0.3.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46254cf2fdcdf1badb5934448c1bcbe046a56537b3987d96c51a7afc5d03f293" +checksum = "ec1931848a574faa8f7c71a12ea00453ff5effbb5f51afe7f77d7a48cace6ac1" dependencies = [ "addr2line", "cfg-if", @@ -399,7 +410,7 @@ dependencies = [ "lazycell", "log 0.4.11", "peeking_take_while", - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", "regex", "rustc-hash", @@ -522,12 +533,13 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] name = "blocking" -version = "0.5.2" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea5800d29218fea137b0880387e5948694a23c93fcdde157006966693a865c7c" +checksum = "2640778f8053e72c11f621b0a5175a0560a269282aa98ed85107773ab8e2a556" dependencies = [ "async-channel", "atomic-waker", + "fastrand", "futures-lite", "once_cell", "waker-fn", @@ -603,9 +615,9 @@ checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba" [[package]] name = "cc" -version = "1.0.59" +version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66120af515773fb005778dc07c261bd201ec8ce50bd6e7144c927753fe013381" +checksum = "ef611cc68ff783f18535d77ddd080185275713d852c4f5cbb6122c462a7a825c" dependencies = [ "jobserver", ] @@ -650,13 +662,15 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.15" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942f72db697d8767c22d46a598e01f2d3b475501ea43d0db4f16d90259182d0b" +checksum = "d021fddb7bd3e734370acfa4a83f34095571d8570c039f1420d77540f68d5772" dependencies = [ + "libc", "num-integer", "num-traits 0.2.12", "time", + "winapi 0.3.9", ] [[package]] @@ -1192,6 +1206,7 @@ dependencies = [ "polkadot-core-primitives", "polkadot-parachain", "polkadot-primitives", + "sc-service", "sp-inherents", "sp-runtime", "sp-std", @@ -1209,6 +1224,7 @@ dependencies = [ "parity-scale-codec", "polkadot-parachain", "sc-block-builder", + "sc-client-api", "sc-executor", "sp-blockchain", "sp-consensus", @@ -1217,6 +1233,7 @@ dependencies = [ "sp-keyring", "sp-runtime", "sp-std", + "sp-timestamp", "sp-trie", "trie-db", ] @@ -1246,14 +1263,25 @@ dependencies = [ name = "cumulus-test-client" version = "0.1.0" dependencies = [ + "cumulus-primitives", "cumulus-test-runtime", + "cumulus-test-service", + "frame-system", + "pallet-balances", + "pallet-transaction-payment", "parity-scale-codec", + "sc-block-builder", + "sc-client-api", "sc-consensus", "sc-service", + "sp-api", + "sp-blockchain", + "sp-consensus", "sp-core", "sp-keyring", "sp-runtime", "sp-test-primitives", + "sp-timestamp", "substrate-test-client", ] @@ -1298,11 +1326,85 @@ dependencies = [ name = "cumulus-test-runtime" version = "0.1.0" dependencies = [ + "cumulus-parachain-upgrade", + "cumulus-primitives", "cumulus-runtime", - "substrate-test-runtime", + "cumulus-upward-message", + "frame-executive", + "frame-support", + "frame-system", + "pallet-balances", + "pallet-randomness-collective-flip", + "pallet-sudo", + "pallet-timestamp", + "pallet-transaction-payment", + "parity-scale-codec", + "polkadot-parachain", + "serde", + "sp-api", + "sp-block-builder", + "sp-core", + "sp-inherents", + "sp-io", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-std", + "sp-transaction-pool", + "sp-version", "substrate-wasm-builder-runner 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "cumulus-test-service" +version = "0.1.0" +dependencies = [ + "ansi_term 0.12.1", + "cumulus-collator", + "cumulus-consensus", + "cumulus-network", + "cumulus-primitives", + "cumulus-service", + "cumulus-test-runtime", + "futures 0.3.5", + "jsonrpc-core", + "pallet-sudo", + "parity-scale-codec", + "polkadot-collator", + "polkadot-primitives", + "polkadot-test-runtime", + "polkadot-test-service", + "rand 0.7.3", + "sc-basic-authorship", + "sc-block-builder", + "sc-chain-spec", + "sc-client-api", + "sc-executor", + "sc-informant", + "sc-network", + "sc-rpc", + "sc-service", + "sc-transaction-pool", + "serde", + "sp-api", + "sp-block-builder", + "sp-consensus", + "sp-core", + "sp-inherents", + "sp-keyring", + "sp-offchain", + "sp-runtime", + "sp-session", + "sp-state-machine", + "sp-timestamp", + "sp-transaction-pool", + "sp-trie", + "substrate-test-client", + "substrate-test-runtime-client", + "substrate-test-utils", + "tokio 0.2.22", +] + [[package]] name = "cumulus-token-dealer" version = "0.1.0" @@ -1388,13 +1490,13 @@ dependencies = [ [[package]] name = "derive_more" -version = "0.99.9" +version = "0.99.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298998b1cf6b5b2c8a7b023dfd45821825ce3ba8a8af55c921a0e734e4653f76" +checksum = "1dcfabdab475c16a93d669dddfc393027803e347d09663f524447f642fbb84ba" dependencies = [ - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] @@ -1474,9 +1576,9 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "558e40ea573c374cf53507fd240b7ee2f5477df7cfebdb97323ec61c719399c5" dependencies = [ - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] @@ -1487,18 +1589,18 @@ checksum = "4c53dc3a653e0f64081026e4bf048d48fec9fce90c66e8326ca7292df0ff2d82" [[package]] name = "ed25519" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf038a7b6fd7ef78ad3348b63f3a17550877b0e28f8d68bcc94894d1412158bc" +checksum = "07dfc993ea376e864fe29a4099a61ca0bb994c6d7745a61bf60ddb3d64e05237" dependencies = [ "signature", ] [[package]] name = "ed25519-dalek" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d2e93f837d749c16d118e7ddf7a4dfd0ac8f452cf51e46e9348824e5ef6851" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" dependencies = [ "curve25519-dalek 3.0.0", "ed25519", @@ -1510,9 +1612,9 @@ dependencies = [ [[package]] name = "either" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56b59865bce947ac5958779cfa508f6c3b9497cc762b7e24a12d11ccde2c4f" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] name = "enum-primitive-derive" @@ -1549,9 +1651,9 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "946ee94e3dbf58fdd324f9ce245c7b238d46a66f00e86a020b71996349e46cce" dependencies = [ - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] @@ -1569,9 +1671,9 @@ dependencies = [ [[package]] name = "environmental" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "516aa8d7a71cb00a1c4146f0798549b93d083d4f189b3ced8f3de6b8f11ee6c4" +checksum = "6576a1755ddffd988788025e75bce9e74b018f7cc226198fe931d077911c6d7e" [[package]] name = "erased-serde" @@ -1617,9 +1719,9 @@ dependencies = [ [[package]] name = "event-listener" -version = "2.4.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cd41440ae7e4734bbd42302f63eaba892afc93a3912dad84006247f0dedb0e" +checksum = "f7531096570974c3a9dcf9e4b8e1cede1ec26cf5046219fb3b9d897503b9be59" [[package]] name = "exit-future" @@ -1656,9 +1758,9 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" dependencies = [ - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", "synstructure", ] @@ -1754,7 +1856,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fork-tree" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "parity-scale-codec", ] @@ -1762,7 +1864,7 @@ dependencies = [ [[package]] name = "frame-benchmarking" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "frame-system", @@ -1779,7 +1881,7 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-benchmarking", "parity-scale-codec", @@ -1797,7 +1899,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "frame-system", @@ -1812,7 +1914,7 @@ dependencies = [ [[package]] name = "frame-metadata" version = "11.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "parity-scale-codec", "serde", @@ -1823,7 +1925,7 @@ dependencies = [ [[package]] name = "frame-support" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "bitmask", "frame-metadata", @@ -1848,40 +1950,40 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support-procedural-tools", - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] name = "frame-support-procedural-tools" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate", - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] name = "frame-support-procedural-tools-derive" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] name = "frame-system" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "impl-trait-for-tuples", @@ -1897,7 +1999,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "parity-scale-codec", "sp-api", @@ -2035,15 +2137,15 @@ checksum = "de27142b013a8e869c14957e6d2edeef89e97c289e69d042ee3a49acd8b51789" [[package]] name = "futures-lite" -version = "0.1.11" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97999970129b808f0ccba93211201d431fcc12d7e1ffae03a61b5cedd1a7ced2" +checksum = "0db18c5f58083b54b0c416638ea73066722c2815c1e54dd8ba85ee3def593c3a" dependencies = [ "fastrand", "futures-core", "futures-io", "memchr", - "parking 2.0.0", + "parking", "pin-project-lite", "waker-fn", ] @@ -2055,9 +2157,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0b5a30a4328ab5473878237c447333c093297bded83a4983d10f4deea240d39" dependencies = [ "proc-macro-hack", - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] @@ -2086,10 +2188,6 @@ name = "futures-timer" version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" -dependencies = [ - "gloo-timers", - "send_wrapper", -] [[package]] name = "futures-util" @@ -2332,9 +2430,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00d63df3d41950fb462ed38308eea019113ad1508da725bbedcd0fa5a85ef5f7" +checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" [[package]] name = "heck" @@ -2347,9 +2445,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3deed196b6e7f9e44a2ae8d94225d80302d81208b1bb673fd21fe634645c85a9" +checksum = "4c30f6d0bc6b00693347368a67d41b58f2fb851215ff1da49e90fe2c5c667151" dependencies = [ "libc", ] @@ -2450,6 +2548,12 @@ version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" +[[package]] +name = "httpdate" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" + [[package]] name = "humantime" version = "1.3.0" @@ -2491,9 +2595,9 @@ dependencies = [ [[package]] name = "hyper" -version = "0.13.7" +version = "0.13.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e68a8dd9716185d9e64ea473ea6ef63529252e3e27623295a0378a19665d5eb" +checksum = "2f3afcfae8af5ad0576a31e768415edb627824129e8e5a29b8bfccb2f234e835" dependencies = [ "bytes 0.5.6", "futures-channel", @@ -2503,10 +2607,10 @@ dependencies = [ "http 0.2.1", "http-body 0.3.1", "httparse", + "httpdate", "itoa", "pin-project", "socket2", - "time", "tokio 0.2.22", "tower-service", "tracing", @@ -2522,7 +2626,7 @@ dependencies = [ "bytes 0.5.6", "ct-logs", "futures-util", - "hyper 0.13.7", + "hyper 0.13.8", "log 0.4.11", "rustls", "rustls-native-certs", @@ -2586,9 +2690,9 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ef5550a42e3740a0e71f909d4c861056a284060af885ae7aa6242820f920d9d" dependencies = [ - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] @@ -2598,15 +2702,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55e2e4c765aa53a0424761bf9f41aa7a6ac1efa87238f59560640e27fca028f2" dependencies = [ "autocfg 1.0.1", - "hashbrown 0.9.0", + "hashbrown 0.9.1", "serde", ] [[package]] name = "instant" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b141fdc7836c525d4d594027d318c84161ca17aaf8113ab1f81ab93ae897485" +checksum = "63312a18f7ea8760cdd0a7c5aac1a619752a246b833545e3e36d1f81f7cd9e66" +dependencies = [ + "cfg-if", +] [[package]] name = "integer-sqrt" @@ -2735,9 +2842,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0e77e8812f02155b85a677a96e1d16b60181950c0636199bc4528524fba98dc" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] @@ -2831,7 +2938,7 @@ dependencies = [ [[package]] name = "kusama-runtime" version = "0.8.22" -source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#26f1fa47f7836ab4bee5d4aad127ebce748320dd" +source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#9d2324b24a8e616b67a96b862e048e75b0ec211b" dependencies = [ "bitvec", "frame-executive", @@ -3072,7 +3179,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f753d9324cd3ec14bf04b8a8cd0d269c87f294153d6bf2a84497a63a5ad22213" dependencies = [ "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] @@ -3450,9 +3557,9 @@ dependencies = [ [[package]] name = "memoffset" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c198b026e1bbf08a937e94c6c60f9ec4a2267f5b0d2eec9c1b21b061ce2be55f" +checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" dependencies = [ "autocfg 1.0.1", ] @@ -3497,11 +3604,12 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d7559a8a40d0f97e1edea3220f698f78b1c5ab67532e49f68fde3910323b722" +checksum = "c60c0dfe32c10b43a144bad8fc83538c52f58302c92300ea7ec7bf7b38d5a7b9" dependencies = [ "adler", + "autocfg 1.0.1", ] [[package]] @@ -3621,17 +3729,6 @@ dependencies = [ "unsigned-varint 0.4.0", ] -[[package]] -name = "multitask" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c09c35271e7dcdb5f709779111f2c8e8ab8e06c1b587c1c6a9e179d865aaa5b4" -dependencies = [ - "async-task", - "concurrent-queue", - "fastrand", -] - [[package]] name = "nalgebra" version = "0.18.1" @@ -3658,6 +3755,16 @@ dependencies = [ "rand 0.3.23", ] +[[package]] +name = "nb-connect" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "701f47aeb98466d0a7fea67e2c2f667c33efa1f2e4fd7f76743aac1153196f72" +dependencies = [ + "libc", + "winapi 0.3.9", +] + [[package]] name = "net2" version = "0.2.35" @@ -3869,7 +3976,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "frame-system", @@ -3885,7 +3992,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "frame-system", @@ -3900,7 +4007,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-benchmarking", "frame-support", @@ -3925,7 +4032,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-benchmarking", "frame-support", @@ -3939,7 +4046,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "frame-system", @@ -3954,7 +4061,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-benchmarking", "frame-support", @@ -3969,7 +4076,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "frame-system", @@ -3983,7 +4090,7 @@ dependencies = [ [[package]] name = "pallet-finality-tracker" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "frame-system", @@ -3999,7 +4106,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-benchmarking", "frame-support", @@ -4021,7 +4128,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "enumflags2", "frame-benchmarking", @@ -4037,7 +4144,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "frame-system", @@ -4056,7 +4163,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "frame-system", @@ -4072,7 +4179,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "frame-system", @@ -4086,7 +4193,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "frame-system", @@ -4101,7 +4208,7 @@ dependencies = [ [[package]] name = "pallet-nicks" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "frame-system", @@ -4115,7 +4222,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "frame-system", @@ -4130,7 +4237,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "frame-system", @@ -4145,7 +4252,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "frame-system", @@ -4158,7 +4265,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "enumflags2", "frame-support", @@ -4173,7 +4280,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-benchmarking", "frame-support", @@ -4188,7 +4295,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "frame-system", @@ -4208,7 +4315,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "frame-system", @@ -4222,7 +4329,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "frame-system", @@ -4242,18 +4349,18 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] name = "pallet-sudo" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "frame-system", @@ -4267,7 +4374,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-benchmarking", "frame-support", @@ -4284,7 +4391,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "frame-system", @@ -4301,7 +4408,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "jsonrpc-core", "jsonrpc-core-client", @@ -4319,7 +4426,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "parity-scale-codec", @@ -4332,7 +4439,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "frame-system", @@ -4346,7 +4453,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-support", "frame-system", @@ -4361,7 +4468,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "enumflags2", "frame-support", @@ -4435,9 +4542,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "198db82bb1c18fc00176004462dd809b2a6d851669550aa17af6dacd21ae0c14" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] @@ -4487,8 +4594,8 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" dependencies = [ - "proc-macro2 1.0.21", - "syn 1.0.40", + "proc-macro2 1.0.23", + "syn 1.0.42", "synstructure", ] @@ -4498,12 +4605,6 @@ version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddfc878dac00da22f8f61e7af3157988424567ab01d9920b962ef7dcbd7cd865" -[[package]] -name = "parking" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cb300f271742d4a2a66c01b6b2fa0c83dfebd2e0bf11addb879a3547b4ed87c" - [[package]] name = "parking" version = "2.0.0" @@ -4674,29 +4775,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "0.4.23" +version = "0.4.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca4433fff2ae79342e497d9f8ee990d174071408f28f726d6d83af93e58e48aa" +checksum = "f48fad7cfbff853437be7cf54d7b993af21f53be7f0988cbfe4a51535aa77205" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "0.4.23" +version = "0.4.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c0e815c3ee9a031fdf5af21c10aa17c573c9c6a566328d99e3936c34e36461f" +checksum = "24c6d293bdd3ca5a1697997854c6cf7855e43fb6a0ba1c47af57a5bcafd158ae" dependencies = [ - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] name = "pin-project-lite" -version = "0.1.7" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282adbf10f2698a7a77f8e983a74b2d18176c19a7fd32a45446139ae7b02b715" +checksum = "4fe74897791e156a0cd8cce0db31b9b2198e67877316bf3086c3acd187f719f0" [[package]] name = "pin-utils" @@ -4719,9 +4820,9 @@ checksum = "feb3b2b1033b8a60b4da6ee470325f887758c95d5320f52f9ce0df055a55940e" [[package]] name = "polkadot-availability-store" version = "0.8.22" -source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#26f1fa47f7836ab4bee5d4aad127ebce748320dd" +source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#9d2324b24a8e616b67a96b862e048e75b0ec211b" dependencies = [ - "derive_more 0.99.9", + "derive_more 0.99.10", "exit-future 0.2.0", "futures 0.3.5", "kvdb", @@ -4746,7 +4847,7 @@ dependencies = [ [[package]] name = "polkadot-cli" version = "0.8.22" -source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#26f1fa47f7836ab4bee5d4aad127ebce748320dd" +source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#9d2324b24a8e616b67a96b862e048e75b0ec211b" dependencies = [ "frame-benchmarking-cli", "futures 0.3.5", @@ -4769,7 +4870,7 @@ dependencies = [ [[package]] name = "polkadot-collator" version = "0.8.22" -source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#26f1fa47f7836ab4bee5d4aad127ebce748320dd" +source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#9d2324b24a8e616b67a96b862e048e75b0ec211b" dependencies = [ "futures 0.3.5", "futures-timer 2.0.2", @@ -4796,7 +4897,7 @@ dependencies = [ [[package]] name = "polkadot-core-primitives" version = "0.7.30" -source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#26f1fa47f7836ab4bee5d4aad127ebce748320dd" +source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#9d2324b24a8e616b67a96b862e048e75b0ec211b" dependencies = [ "parity-scale-codec", "sp-core", @@ -4807,7 +4908,7 @@ dependencies = [ [[package]] name = "polkadot-erasure-coding" version = "0.8.22" -source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#26f1fa47f7836ab4bee5d4aad127ebce748320dd" +source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#9d2324b24a8e616b67a96b862e048e75b0ec211b" dependencies = [ "derive_more 0.15.0", "parity-scale-codec", @@ -4820,7 +4921,7 @@ dependencies = [ [[package]] name = "polkadot-network" version = "0.8.22" -source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#26f1fa47f7836ab4bee5d4aad127ebce748320dd" +source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#9d2324b24a8e616b67a96b862e048e75b0ec211b" dependencies = [ "arrayvec 0.4.12", "bytes 0.5.6", @@ -4849,9 +4950,9 @@ dependencies = [ [[package]] name = "polkadot-parachain" version = "0.8.22" -source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#26f1fa47f7836ab4bee5d4aad127ebce748320dd" +source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#9d2324b24a8e616b67a96b862e048e75b0ec211b" dependencies = [ - "derive_more 0.99.9", + "derive_more 0.99.10", "futures 0.3.5", "log 0.4.11", "parity-scale-codec", @@ -4870,7 +4971,7 @@ dependencies = [ [[package]] name = "polkadot-primitives" version = "0.8.22" -source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#26f1fa47f7836ab4bee5d4aad127ebce748320dd" +source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#9d2324b24a8e616b67a96b862e048e75b0ec211b" dependencies = [ "bitvec", "frame-system", @@ -4893,7 +4994,7 @@ dependencies = [ [[package]] name = "polkadot-rpc" version = "0.8.22" -source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#26f1fa47f7836ab4bee5d4aad127ebce748320dd" +source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#9d2324b24a8e616b67a96b862e048e75b0ec211b" dependencies = [ "jsonrpc-core", "pallet-transaction-payment-rpc", @@ -4920,7 +5021,7 @@ dependencies = [ [[package]] name = "polkadot-runtime" version = "0.8.22" -source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#26f1fa47f7836ab4bee5d4aad127ebce748320dd" +source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#9d2324b24a8e616b67a96b862e048e75b0ec211b" dependencies = [ "bitvec", "frame-executive", @@ -4985,7 +5086,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-common" version = "0.8.22" -source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#26f1fa47f7836ab4bee5d4aad127ebce748320dd" +source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#9d2324b24a8e616b67a96b862e048e75b0ec211b" dependencies = [ "bitvec", "frame-support", @@ -5019,7 +5120,7 @@ dependencies = [ [[package]] name = "polkadot-runtime-parachains" version = "0.8.0" -source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#26f1fa47f7836ab4bee5d4aad127ebce748320dd" +source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#9d2324b24a8e616b67a96b862e048e75b0ec211b" dependencies = [ "bitvec", "frame-support", @@ -5050,7 +5151,7 @@ dependencies = [ [[package]] name = "polkadot-service" version = "0.8.22" -source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#26f1fa47f7836ab4bee5d4aad127ebce748320dd" +source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#9d2324b24a8e616b67a96b862e048e75b0ec211b" dependencies = [ "frame-benchmarking", "frame-system-rpc-runtime-api", @@ -5110,7 +5211,7 @@ dependencies = [ [[package]] name = "polkadot-statement-table" version = "0.8.22" -source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#26f1fa47f7836ab4bee5d4aad127ebce748320dd" +source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#9d2324b24a8e616b67a96b862e048e75b0ec211b" dependencies = [ "parity-scale-codec", "polkadot-primitives", @@ -5120,7 +5221,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime" version = "0.8.22" -source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#26f1fa47f7836ab4bee5d4aad127ebce748320dd" +source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#9d2324b24a8e616b67a96b862e048e75b0ec211b" dependencies = [ "bitvec", "frame-executive", @@ -5174,7 +5275,7 @@ dependencies = [ [[package]] name = "polkadot-test-runtime-client" version = "2.0.0" -source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#26f1fa47f7836ab4bee5d4aad127ebce748320dd" +source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#9d2324b24a8e616b67a96b862e048e75b0ec211b" dependencies = [ "futures 0.3.5", "pallet-timestamp", @@ -5198,7 +5299,7 @@ dependencies = [ [[package]] name = "polkadot-test-service" version = "0.8.2" -source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#26f1fa47f7836ab4bee5d4aad127ebce748320dd" +source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#9d2324b24a8e616b67a96b862e048e75b0ec211b" dependencies = [ "frame-benchmarking", "frame-system", @@ -5207,6 +5308,7 @@ dependencies = [ "hex", "log 0.4.11", "pallet-staking", + "pallet-sudo", "pallet-transaction-payment", "polkadot-availability-store", "polkadot-network", @@ -5245,7 +5347,7 @@ dependencies = [ [[package]] name = "polkadot-validation" version = "0.8.22" -source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#26f1fa47f7836ab4bee5d4aad127ebce748320dd" +source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#9d2324b24a8e616b67a96b862e048e75b0ec211b" dependencies = [ "ansi_term 0.12.1", "bitvec", @@ -5283,9 +5385,9 @@ dependencies = [ [[package]] name = "polling" -version = "0.1.9" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fffa183f6bd5f1a8a3e1f60ce2f8d5621e350eed84a62d6daaa5b9d1aaf6fbd" +checksum = "e0720e0b9ea9d52451cf29d3413ba8a9303f8815d9d9653ef70e03ff73e65566" dependencies = [ "cfg-if", "libc", @@ -5296,18 +5398,18 @@ dependencies = [ [[package]] name = "poly1305" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b42192ab143ed7619bf888a7f9c6733a9a2153b218e2cd557cfdb52fbf9bb1" +checksum = "22ce46de8e53ee414ca4d02bfefac75d8c12fba948b76622a40b4be34dfce980" dependencies = [ "universal-hash", ] [[package]] name = "polyval" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9a50142b55ab3ed0e9f68dfb3709f1d90d29da24e91033f28b96330643107dc" +checksum = "a5884790f1ce3553ad55fec37b5aaac5882e0e845a2612df744d6c85c9bf046c" dependencies = [ "cfg-if", "universal-hash", @@ -5373,9 +5475,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", "version_check", ] @@ -5385,7 +5487,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", "version_check", ] @@ -5413,9 +5515,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e28516df94f3dd551a587da5357459d9b36d945a7c37c3557928c1c2ff2a2c" +checksum = "51ef7cd2518ead700af67bf9d1a658d90b6037d77110fd9c0445429d0ba1c6c9" dependencies = [ "unicode-xid 0.2.1", ] @@ -5484,9 +5586,9 @@ checksum = "537aa19b95acde10a12fec4301466386f757403de4cd4e5b4fa78fb5ecb18f72" dependencies = [ "anyhow", "itertools 0.8.2", - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] @@ -5548,7 +5650,7 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" dependencies = [ - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", ] [[package]] @@ -5769,9 +5871,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" [[package]] name = "rayon" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfd016f0c045ad38b5251be2c9c0ab806917f82da4d36b2a327e5166adad9270" +checksum = "dcf6960dc9a5b4ee8d3e4c5787b4a112a8818e0290a42ff664ad60692fdf2032" dependencies = [ "autocfg 1.0.1", "crossbeam-deque", @@ -5781,9 +5883,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91739a34c4355b5434ce54c9086c5895604a9c278586d1f1aa95e04f66b525a0" +checksum = "e8c4fec834fb6e6d2dd5eece3c7b432a52f0ba887cf40e595190c4107edc08bf" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -5842,9 +5944,9 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d21b475ab879ef0e315ad99067fa25778c3b0377f57f1b00207448dac1a3144" dependencies = [ - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] @@ -5913,9 +6015,9 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "475e68978dc5b743f2f40d8e0a8fdc83f1c5e78cbf4b8fa5e74e73beebc340de" dependencies = [ - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] @@ -5976,19 +6078,13 @@ dependencies = [ "jsonrpc-core", "log 0.4.11", "nix 0.17.0", - "pallet-sudo", "parity-scale-codec", "parking_lot 0.9.0", "polkadot-cli", "polkadot-collator", "polkadot-parachain", "polkadot-primitives", - "polkadot-runtime-common", "polkadot-service", - "polkadot-test-runtime", - "polkadot-test-runtime-client", - "polkadot-test-service", - "rand 0.7.3", "rococo-parachain-primitives", "sc-basic-authorship", "sc-chain-spec", @@ -5998,7 +6094,6 @@ dependencies = [ "sc-executor", "sc-finality-grandpa", "sc-informant", - "sc-network", "sc-rpc", "sc-service", "sc-transaction-pool", @@ -6018,10 +6113,6 @@ dependencies = [ "sp-trie", "structopt", "substrate-build-script-utils", - "substrate-test-client", - "substrate-test-runtime-client", - "substrate-test-utils", - "tokio 0.2.22", "trie-root 0.15.2", ] @@ -6036,7 +6127,7 @@ dependencies = [ [[package]] name = "rococo-runtime" version = "0.8.22" -source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#26f1fa47f7836ab4bee5d4aad127ebce748320dd" +source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#9d2324b24a8e616b67a96b862e048e75b0ec211b" dependencies = [ "bitvec", "frame-executive", @@ -6211,10 +6302,10 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "bytes 0.5.6", - "derive_more 0.99.9", + "derive_more 0.99.10", "futures 0.3.5", "futures-timer 3.0.2", "libp2p", @@ -6238,7 +6329,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "futures 0.3.5", "futures-timer 3.0.2", @@ -6262,7 +6353,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -6279,7 +6370,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "impl-trait-for-tuples", "sc-chain-spec-derive", @@ -6295,23 +6386,23 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] name = "sc-cli" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "ansi_term 0.12.1", "atty", "chrono", - "derive_more 0.99.9", + "derive_more 0.99.10", "env_logger", "fdlimit", "futures 0.3.5", @@ -6347,9 +6438,9 @@ dependencies = [ [[package]] name = "sc-client-api" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ - "derive_more 0.99.9", + "derive_more 0.99.10", "fnv", "futures 0.3.5", "hash-db", @@ -6383,7 +6474,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "blake2-rfc", "hash-db", @@ -6413,7 +6504,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "sc-client-api", "sp-blockchain", @@ -6424,9 +6515,9 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ - "derive_more 0.99.9", + "derive_more 0.99.10", "fork-tree", "futures 0.3.5", "futures-timer 3.0.2", @@ -6468,9 +6559,9 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ - "derive_more 0.99.9", + "derive_more 0.99.10", "futures 0.3.5", "jsonrpc-core", "jsonrpc-core-client", @@ -6492,7 +6583,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "fork-tree", "parity-scale-codec", @@ -6505,7 +6596,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "futures 0.3.5", "futures-timer 3.0.2", @@ -6528,7 +6619,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "log 0.4.11", "sc-client-api", @@ -6542,9 +6633,9 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ - "derive_more 0.99.9", + "derive_more 0.99.10", "lazy_static", "libsecp256k1", "log 0.4.11", @@ -6570,9 +6661,9 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ - "derive_more 0.99.9", + "derive_more 0.99.10", "log 0.4.11", "parity-scale-codec", "parity-wasm", @@ -6587,7 +6678,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "log 0.4.11", "parity-scale-codec", @@ -6602,7 +6693,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "cranelift-codegen", "cranelift-wasm", @@ -6623,10 +6714,10 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "assert_matches", - "derive_more 0.99.9", + "derive_more 0.99.10", "finality-grandpa", "fork-tree", "futures 0.3.5", @@ -6661,9 +6752,9 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ - "derive_more 0.99.9", + "derive_more 0.99.10", "finality-grandpa", "futures 0.3.5", "jsonrpc-core", @@ -6678,7 +6769,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "ansi_term 0.12.1", "futures 0.3.5", @@ -6696,9 +6787,9 @@ dependencies = [ [[package]] name = "sc-keystore" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ - "derive_more 0.99.9", + "derive_more 0.99.10", "hex", "merlin", "parking_lot 0.10.2", @@ -6712,7 +6803,7 @@ dependencies = [ [[package]] name = "sc-light" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "hash-db", "lazy_static", @@ -6731,12 +6822,12 @@ dependencies = [ [[package]] name = "sc-network" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "bitflags", "bs58", "bytes 0.5.6", - "derive_more 0.99.9", + "derive_more 0.99.10", "either", "erased-serde", "fnv", @@ -6783,7 +6874,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "futures 0.3.5", "futures-timer 3.0.2", @@ -6798,13 +6889,13 @@ dependencies = [ [[package]] name = "sc-offchain" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "bytes 0.5.6", "fnv", "futures 0.3.5", "futures-timer 3.0.2", - "hyper 0.13.7", + "hyper 0.13.8", "hyper-rustls", "log 0.4.11", "num_cpus", @@ -6825,7 +6916,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "futures 0.3.5", "libp2p", @@ -6838,7 +6929,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "log 0.4.11", "substrate-prometheus-endpoint", @@ -6847,7 +6938,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "futures 0.3.5", "hash-db", @@ -6879,9 +6970,9 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ - "derive_more 0.99.9", + "derive_more 0.99.10", "futures 0.3.5", "jsonrpc-core", "jsonrpc-core-client", @@ -6903,7 +6994,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "jsonrpc-core", "jsonrpc-http-server", @@ -6919,9 +7010,9 @@ dependencies = [ [[package]] name = "sc-service" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ - "derive_more 0.99.9", + "derive_more 0.99.10", "directories", "exit-future 0.2.0", "futures 0.1.29", @@ -6982,7 +7073,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "log 0.4.11", "parity-scale-codec", @@ -6996,7 +7087,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "futures 0.3.5", "futures-timer 3.0.2", @@ -7017,7 +7108,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "erased-serde", "log 0.4.11", @@ -7034,9 +7125,9 @@ dependencies = [ [[package]] name = "sc-transaction-graph" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ - "derive_more 0.99.9", + "derive_more 0.99.10", "futures 0.3.5", "linked-hash-map", "log 0.4.11", @@ -7055,9 +7146,9 @@ dependencies = [ [[package]] name = "sc-transaction-pool" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ - "derive_more 0.99.9", + "derive_more 0.99.10", "futures 0.3.5", "futures-diagnose", "intervalier", @@ -7139,9 +7230,9 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e367622f934864ffa1c704ba2b82280aab856e3d8213c84c5720257eb34b15b9" dependencies = [ - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] @@ -7201,30 +7292,24 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" -[[package]] -name = "send_wrapper" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" - [[package]] name = "serde" -version = "1.0.115" +version = "1.0.116" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e54c9a88f2da7238af84b5101443f0c0d0a3bbdc455e34a5c9497b1903ed55d5" +checksum = "96fe57af81d28386a513cbc6858332abc6117cfdb5999647c6444b8f43a370a5" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.115" +version = "1.0.116" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "609feed1d0a73cc36a0182a840a9b37b4a82f0b1150369f0536a9e3f2a31dc48" +checksum = "f630a6370fd8e457873b4bd2ffdae75408bc291ba72be773772a4c2a065d9ae8" dependencies = [ - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] @@ -7397,9 +7482,9 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a945ec7f7ce853e89ffa36be1e27dce9a43e82ff9093bf3461c30d5da74ed11b" dependencies = [ - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] @@ -7466,9 +7551,9 @@ dependencies = [ [[package]] name = "sp-allocator" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ - "derive_more 0.99.9", + "derive_more 0.99.10", "log 0.4.11", "sp-core", "sp-std", @@ -7478,7 +7563,7 @@ dependencies = [ [[package]] name = "sp-api" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "hash-db", "parity-scale-codec", @@ -7493,19 +7578,19 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "blake2-rfc", "proc-macro-crate", - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] name = "sp-application-crypto" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "parity-scale-codec", "serde", @@ -7517,7 +7602,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "integer-sqrt", "num-traits 0.2.12", @@ -7530,7 +7615,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "parity-scale-codec", "sp-api", @@ -7542,7 +7627,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "parity-scale-codec", "sp-inherents", @@ -7553,7 +7638,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "parity-scale-codec", "sp-api", @@ -7565,9 +7650,9 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ - "derive_more 0.99.9", + "derive_more 0.99.10", "log 0.4.11", "lru", "parity-scale-codec", @@ -7582,7 +7667,7 @@ dependencies = [ [[package]] name = "sp-chain-spec" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "serde", "serde_json", @@ -7591,9 +7676,9 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ - "derive_more 0.99.9", + "derive_more 0.99.10", "futures 0.3.5", "futures-timer 3.0.2", "libp2p", @@ -7617,7 +7702,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "parity-scale-codec", "sp-api", @@ -7631,7 +7716,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "merlin", "parity-scale-codec", @@ -7650,7 +7735,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "parity-scale-codec", "sp-runtime", @@ -7659,7 +7744,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "parity-scale-codec", "schnorrkel", @@ -7671,12 +7756,12 @@ dependencies = [ [[package]] name = "sp-core" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "base58", "blake2-rfc", "byteorder", - "derive_more 0.99.9", + "derive_more 0.99.10", "dyn-clonable", "ed25519-dalek", "futures 0.3.5", @@ -7715,7 +7800,7 @@ dependencies = [ [[package]] name = "sp-database" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "kvdb", "parking_lot 0.10.2", @@ -7724,17 +7809,17 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] name = "sp-externalities" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "environmental", "parity-scale-codec", @@ -7745,7 +7830,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "finality-grandpa", "log 0.4.11", @@ -7761,7 +7846,7 @@ dependencies = [ [[package]] name = "sp-finality-tracker" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "parity-scale-codec", "sp-inherents", @@ -7771,9 +7856,9 @@ dependencies = [ [[package]] name = "sp-inherents" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ - "derive_more 0.99.9", + "derive_more 0.99.10", "parity-scale-codec", "parking_lot 0.10.2", "sp-core", @@ -7783,7 +7868,7 @@ dependencies = [ [[package]] name = "sp-io" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "futures 0.3.5", "hash-db", @@ -7804,7 +7889,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "lazy_static", "sp-core", @@ -7815,7 +7900,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "parity-scale-codec", "serde", @@ -7827,18 +7912,18 @@ dependencies = [ [[package]] name = "sp-npos-elections-compact" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "proc-macro-crate", - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] name = "sp-offchain" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "sp-api", "sp-core", @@ -7848,7 +7933,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "backtrace", "log 0.4.11", @@ -7857,7 +7942,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "serde", "sp-core", @@ -7866,7 +7951,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "either", "hash256-std-hasher", @@ -7888,7 +7973,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "parity-scale-codec", "primitive-types", @@ -7903,19 +7988,19 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "Inflector", "proc-macro-crate", - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] name = "sp-sandbox" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "parity-scale-codec", "sp-core", @@ -7928,7 +8013,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "serde", "serde_json", @@ -7937,7 +8022,7 @@ dependencies = [ [[package]] name = "sp-session" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "parity-scale-codec", "sp-api", @@ -7950,7 +8035,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "parity-scale-codec", "sp-runtime", @@ -7960,7 +8045,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "hash-db", "itertools 0.9.0", @@ -7981,12 +8066,12 @@ dependencies = [ [[package]] name = "sp-std" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" [[package]] name = "sp-storage" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "impl-serde 0.2.3", "ref-cast", @@ -7998,7 +8083,7 @@ dependencies = [ [[package]] name = "sp-test-primitives" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "parity-scale-codec", "parity-util-mem", @@ -8011,7 +8096,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8025,7 +8110,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "log 0.4.11", "rental", @@ -8035,9 +8120,9 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ - "derive_more 0.99.9", + "derive_more 0.99.10", "futures 0.3.5", "log 0.4.11", "parity-scale-codec", @@ -8050,7 +8135,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "hash-db", "memory-db", @@ -8064,7 +8149,7 @@ dependencies = [ [[package]] name = "sp-utils" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "futures 0.3.5", "futures-core", @@ -8076,7 +8161,7 @@ dependencies = [ [[package]] name = "sp-version" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "impl-serde 0.2.3", "parity-scale-codec", @@ -8088,7 +8173,7 @@ dependencies = [ [[package]] name = "sp-wasm-interface" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -8149,9 +8234,9 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "structopt" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cc388d94ffabf39b5ed5fadddc40147cb21e605f53db6f8f36a625d27489ac5" +checksum = "a33f6461027d7f08a13715659b2948e1602c31a3756aeae9378bfe7518c72e82" dependencies = [ "clap", "lazy_static", @@ -8160,15 +8245,15 @@ dependencies = [ [[package]] name = "structopt-derive" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e2513111825077552a6751dfad9e11ce0fba07d7276a3943a037d7e93e64c5f" +checksum = "c92e775028122a4b3dd55d58f14fc5120289c69bee99df1d117ae30f84b225c9" dependencies = [ "heck", "proc-macro-error", - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] @@ -8187,9 +8272,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0054a7df764039a6cd8592b9de84be4bec368ff081d203a7d5371cbfa8e65c81" dependencies = [ "heck", - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] @@ -8208,7 +8293,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "platforms", ] @@ -8216,7 +8301,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.5", @@ -8239,12 +8324,12 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "async-std", - "derive_more 0.99.9", + "derive_more 0.99.10", "futures-util", - "hyper 0.13.7", + "hyper 0.13.8", "log 0.4.11", "prometheus", "tokio 0.2.22", @@ -8253,7 +8338,7 @@ dependencies = [ [[package]] name = "substrate-test-client" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "futures 0.1.29", "futures 0.3.5", @@ -8279,7 +8364,7 @@ dependencies = [ [[package]] name = "substrate-test-runtime" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "cfg-if", "frame-executive", @@ -8319,7 +8404,7 @@ dependencies = [ [[package]] name = "substrate-test-runtime-client" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "futures 0.3.5", "parity-scale-codec", @@ -8340,7 +8425,7 @@ dependencies = [ [[package]] name = "substrate-test-utils" version = "2.0.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "futures 0.3.5", "substrate-test-utils-derive", @@ -8350,17 +8435,17 @@ dependencies = [ [[package]] name = "substrate-test-utils-derive" version = "0.8.0-rc5" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" dependencies = [ "proc-macro-crate", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] name = "substrate-wasm-builder-runner" version = "1.0.6" -source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#316852b8217c2a542a6464cabfc71e3fdd21a7a9" +source = "git+https://github.com/paritytech/substrate?branch=rococo-branch#83544d41abcc0e3d3cbbd6aa510e04dc50863e5c" [[package]] name = "substrate-wasm-builder-runner" @@ -8429,11 +8514,11 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.40" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "963f7d3cc59b59b9325165add223142bbf1df27655d07789f109896d353d8350" +checksum = "9c51d92969d209b54a98397e1b91c8ae82d8c87a7bb87df0b29aa2ad81454228" dependencies = [ - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", "unicode-xid 0.2.1", ] @@ -8453,9 +8538,9 @@ version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" dependencies = [ - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", "unicode-xid 0.2.1", ] @@ -8544,9 +8629,9 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd80fc12f73063ac132ac92aceea36734f04a1d93c1240c6944e23a3b8841793" dependencies = [ - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] @@ -8737,9 +8822,9 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0c3acc6aa564495a0f2e1d59fab677cd7f81a19994cfc7f3ad0e64301560389" dependencies = [ - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] @@ -8923,12 +9008,13 @@ checksum = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" [[package]] name = "tracing" -version = "0.1.19" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d79ca061b032d6ce30c660fded31189ca0b9922bf483cd70759f13a2d86786c" +checksum = "b0987850db3733619253fe60e17cb59b82d37c7e6c0236bb81e4d6b87c879f27" dependencies = [ "cfg-if", "log 0.4.11", + "pin-project-lite", "tracing-attributes", "tracing-core", ] @@ -8939,16 +9025,16 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80e0ccfc3378da0cce270c946b676a376943f5cd16aeba64568e7939806f4ada" dependencies = [ - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", ] [[package]] name = "tracing-core" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bcf46c1f1f06aeea2d6b81f3c863d0930a596c86ad1920d4e5bad6dd1d7119a" +checksum = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f" dependencies = [ "lazy_static", ] @@ -9144,9 +9230,9 @@ checksum = "6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c" [[package]] name = "vec-arena" -version = "0.5.2" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cb18268690309760d59ee1a9b21132c126ba384f374c59a94db4bc03adeb561" +checksum = "eafc1b9b2dfc6f5529177b62cf806484db55b32dc7c9658a118e11bbeb33061d" [[package]] name = "vec_map" @@ -9256,9 +9342,9 @@ dependencies = [ "bumpalo", "lazy_static", "log 0.4.11", - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", "wasm-bindgen-shared", ] @@ -9290,9 +9376,9 @@ version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f249f06ef7ee334cc3b8ff031bfc11ec99d00f34d86da7498396dc1e3b1498fe" dependencies = [ - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -9541,9 +9627,9 @@ dependencies = [ [[package]] name = "wepoll-sys-stjepang" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fd319e971980166b53e17b1026812ad66c6b54063be879eb182342b55284694" +checksum = "1fdfbb03f290ca0b27922e8d48a0997b4ceea12df33269b9f75e713311eb178d" dependencies = [ "cc", ] @@ -9551,7 +9637,7 @@ dependencies = [ [[package]] name = "westend-runtime" version = "0.8.22" -source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#26f1fa47f7836ab4bee5d4aad127ebce748320dd" +source = "git+https://github.com/paritytech/polkadot?branch=rococo-branch#9d2324b24a8e616b67a96b862e048e75b0ec211b" dependencies = [ "bitvec", "frame-executive", @@ -9724,22 +9810,22 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cbac2ed2ba24cc90f5e06485ac8c7c1e5449fe8911aef4d8877218af021a5b8" +checksum = "05f33972566adbd2d3588b0491eb94b98b43695c4ef897903470ede4f3f5a28a" dependencies = [ "zeroize_derive", ] [[package]] name = "zeroize_derive" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de251eec69fc7c1bc3923403d18ececb929380e016afe103da75f396704f8ca2" +checksum = "c3f369ddb18862aba61aa49bf31e74d29f0f162dec753063200e1dc084345d16" dependencies = [ - "proc-macro2 1.0.21", + "proc-macro2 1.0.23", "quote 1.0.7", - "syn 1.0.40", + "syn 1.0.42", "synstructure", ] diff --git a/cumulus/Cargo.toml b/cumulus/Cargo.toml index 9c26bef75f..031e9d6ab0 100644 --- a/cumulus/Cargo.toml +++ b/cumulus/Cargo.toml @@ -15,6 +15,7 @@ members = [ "service", "test/runtime", "test/client", + "test/service", "upward-message", ] diff --git a/cumulus/parachain-upgrade/src/lib.rs b/cumulus/parachain-upgrade/src/lib.rs index 06a9ba3025..dd11518ef7 100644 --- a/cumulus/parachain-upgrade/src/lib.rs +++ b/cumulus/parachain-upgrade/src/lib.rs @@ -96,7 +96,7 @@ decl_module! { /// Set the current validation function parameters /// /// This should be invoked exactly once per block. It will panic at the finalization - /// phease if the call was not invoked. + /// phase if the call was not invoked. /// /// The dispatch origin for this call must be `Inherent` /// diff --git a/cumulus/primitives/Cargo.toml b/cumulus/primitives/Cargo.toml index 6d6866db3b..3e8b38fe5a 100644 --- a/cumulus/primitives/Cargo.toml +++ b/cumulus/primitives/Cargo.toml @@ -6,6 +6,7 @@ edition = "2018" [dependencies] # Substrate dependencies +sc-service = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch", optional = true } sp-inherents = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch", default-features = false } sp-std = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch", default-features = false } sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch", default-features = false } @@ -24,6 +25,7 @@ polkadot-core-primitives = { git = "https://github.com/paritytech/polkadot", bra [features] default = [ "std" ] std = [ + "sc-service", "sp-std/std", "codec/std", "polkadot-primitives/std", diff --git a/cumulus/primitives/src/genesis.rs b/cumulus/primitives/src/genesis.rs new file mode 100644 index 0000000000..68f3c856c6 --- /dev/null +++ b/cumulus/primitives/src/genesis.rs @@ -0,0 +1,50 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Cumulus. + +// Cumulus is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Cumulus is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Cumulus. If not, see . + +use codec::Encode; +use sc_service::ChainSpec; +use sp_runtime::traits::{Block as BlockT, Hash as HashT, Header as HeaderT, Zero}; + +/// Generate the genesis state for a given ChainSpec. +pub fn generate_genesis_block( + chain_spec: &Box, +) -> Result { + let storage = chain_spec.build_storage()?; + + let child_roots = storage.children_default.iter().map(|(sk, child_content)| { + let state_root = <<::Header as HeaderT>::Hashing as HashT>::trie_root( + child_content.data.clone().into_iter().collect(), + ); + (sk.clone(), state_root.encode()) + }); + let state_root = <<::Header as HeaderT>::Hashing as HashT>::trie_root( + storage.top.clone().into_iter().chain(child_roots).collect(), + ); + + let extrinsics_root = + <<::Header as HeaderT>::Hashing as HashT>::trie_root(Vec::new()); + + Ok(Block::new( + <::Header as HeaderT>::new( + Zero::zero(), + extrinsics_root, + state_root, + Default::default(), + Default::default(), + ), + Default::default(), + )) +} diff --git a/cumulus/primitives/src/lib.rs b/cumulus/primitives/src/lib.rs index f6b724e012..edd9f989c4 100644 --- a/cumulus/primitives/src/lib.rs +++ b/cumulus/primitives/src/lib.rs @@ -29,6 +29,8 @@ pub use polkadot_parachain::primitives::{ Id as ParaId, ParachainDispatchOrigin as UpwardMessageOrigin, }; +#[cfg(feature = "std")] +pub mod genesis; pub mod validation_function_params; pub mod xcmp; diff --git a/cumulus/rococo-parachains/Cargo.toml b/cumulus/rococo-parachains/Cargo.toml index 8133d5444f..2c19020e3c 100644 --- a/cumulus/rococo-parachains/Cargo.toml +++ b/cumulus/rococo-parachains/Cargo.toml @@ -41,7 +41,6 @@ sc-executor = { git = "https://github.com/paritytech/substrate", branch = "rococ sc-service = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } sc-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } sp-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } -sc-network = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } sc-basic-authorship = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch", version = "0.8.0-rc5" } sp-timestamp = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } @@ -70,7 +69,6 @@ polkadot-primitives = { git = "https://github.com/paritytech/polkadot", branch = polkadot-collator = { git = "https://github.com/paritytech/polkadot", branch = "rococo-branch" } polkadot-service = { git = "https://github.com/paritytech/polkadot", branch = "rococo-branch" } polkadot-cli = { git = "https://github.com/paritytech/polkadot", branch = "rococo-branch" } -polkadot-test-service = { git = "https://github.com/paritytech/polkadot", branch = "rococo-branch" } polkadot-parachain = { git = "https://github.com/paritytech/polkadot", branch = "rococo-branch" } [build-dependencies] @@ -79,17 +77,3 @@ substrate-build-script-utils = { git = "https://github.com/paritytech/substrate" [dev-dependencies] assert_cmd = "0.12" nix = "0.17" -rand = "0.7.3" -tokio = { version = "0.2.21", features = ["macros"] } - -# Polkadot dependencies -polkadot-runtime-common = { git = "https://github.com/paritytech/polkadot", branch = "rococo-branch" } -polkadot-test-runtime = { git = "https://github.com/paritytech/polkadot", branch = "rococo-branch" } -polkadot-test-runtime-client = { git = "https://github.com/paritytech/polkadot", branch = "rococo-branch" } -polkadot-test-service = { git = "https://github.com/paritytech/polkadot", branch = "rococo-branch" } - -# Substrate dependencies -pallet-sudo = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } -substrate-test-client = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } -substrate-test-runtime-client = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } -substrate-test-utils = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } diff --git a/cumulus/rococo-parachains/src/command.rs b/cumulus/rococo-parachains/src/command.rs index d374c1b0b4..ea5d293668 100644 --- a/cumulus/rococo-parachains/src/command.rs +++ b/cumulus/rococo-parachains/src/command.rs @@ -19,7 +19,7 @@ use crate::{ cli::{Cli, RelayChainCli, Subcommand}, }; use codec::Encode; -use cumulus_primitives::ParaId; +use cumulus_primitives::{genesis::generate_genesis_block, ParaId}; use log::info; use parachain_runtime::Block; use polkadot_parachain::primitives::AccountIdConversion; @@ -29,7 +29,7 @@ use sc_cli::{ }; use sc_service::config::{BasePath, PrometheusConfig}; use sp_core::hexdisplay::HexDisplay; -use sp_runtime::traits::{Block as BlockT, Hash as HashT, Header as HeaderT, Zero}; +use sp_runtime::traits::Block as BlockT; use std::{io::Write, net::SocketAddr, sync::Arc}; fn load_spec( @@ -134,34 +134,6 @@ impl SubstrateCli for RelayChainCli { } } -pub fn generate_genesis_state(chain_spec: &Box) -> Result { - let storage = chain_spec.build_storage()?; - - let child_roots = storage.children_default.iter().map(|(sk, child_content)| { - let state_root = <<::Header as HeaderT>::Hashing as HashT>::trie_root( - child_content.data.clone().into_iter().collect(), - ); - (sk.clone(), state_root.encode()) - }); - let state_root = <<::Header as HeaderT>::Hashing as HashT>::trie_root( - storage.top.clone().into_iter().chain(child_roots).collect(), - ); - - let extrinsics_root = - <<::Header as HeaderT>::Hashing as HashT>::trie_root(Vec::new()); - - Ok(Block::new( - <::Header as HeaderT>::new( - Zero::zero(), - extrinsics_root, - state_root, - Default::default(), - Default::default(), - ), - Default::default(), - )) -} - fn extract_genesis_wasm(chain_spec: &Box) -> Result> { let mut storage = chain_spec.build_storage()?; @@ -216,7 +188,7 @@ pub fn run() -> Result<()> { Some(Subcommand::ExportGenesisState(params)) => { sc_cli::init_logger(""); - let block = generate_genesis_state(&load_spec( + let block: Block = generate_genesis_block(&load_spec( ¶ms.chain.clone().unwrap_or_default(), params.parachain_id.into(), )?)?; @@ -268,8 +240,8 @@ pub fn run() -> Result<()> { let parachain_account = AccountIdConversion::::into_account(&id); - let block = - generate_genesis_state(&config.chain_spec).map_err(|e| format!("{:?}", e))?; + let block: Block = + generate_genesis_block(&config.chain_spec).map_err(|e| format!("{:?}", e))?; let genesis_state = format!("0x{:?}", HexDisplay::from(&block.header().encode())); let task_executor = config.task_executor.clone(); @@ -293,7 +265,6 @@ pub fn run() -> Result<()> { polkadot_config, id, collator, - false, ) } else { crate::service::start_node( @@ -302,7 +273,6 @@ pub fn run() -> Result<()> { polkadot_config, id, collator, - false, ) .map(|r| r.0) } diff --git a/cumulus/rococo-parachains/src/integration_test.rs b/cumulus/rococo-parachains/src/integration_test.rs deleted file mode 100644 index 9b44f36df3..0000000000 --- a/cumulus/rococo-parachains/src/integration_test.rs +++ /dev/null @@ -1,215 +0,0 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. -// This file is part of Substrate. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . - -use codec::Encode; -use futures::future; -use polkadot_primitives::v0::{Id as ParaId, Info, Scheduling}; -use polkadot_runtime_common::registrar; -use polkadot_test_runtime_client::Sr25519Keyring; -use sc_chain_spec::ChainSpec; -use sc_client_api::execution_extensions::ExecutionStrategies; -use sc_informant::OutputFormat; -use sc_network::{config::TransportConfig, multiaddr}; -use sc_service::{ - config::{ - DatabaseConfig, KeystoreConfig, MultiaddrWithPeerId, NetworkConfiguration, - OffchainWorkerConfig, PruningMode, WasmExecutionMethod, - }, - BasePath, Configuration, Error as ServiceError, Role, TaskExecutor, -}; -use sp_api::BlockT; -use std::sync::Arc; -use substrate_test_client::BlockchainEventsExt; -use substrate_test_runtime_client::AccountKeyring::*; - -#[substrate_test_utils::test] -#[ignore] -async fn integration_test(task_executor: TaskExecutor) { - let para_id = ParaId::from(100); - - // generate parachain spec - let spec = Box::new(crate::chain_spec::get_chain_spec(para_id)); - - // start alice - let alice = polkadot_test_service::run_test_node(task_executor.clone(), Alice, || {}, vec![]); - - // start bob - let bob = polkadot_test_service::run_test_node( - task_executor.clone(), - Bob, - || {}, - vec![alice.addr.clone()], - ); - - // ensure alice and bob can produce blocks - future::join(alice.wait_for_blocks(2), bob.wait_for_blocks(2)).await; - - // export genesis state - let block = crate::command::generate_genesis_state(&(spec.clone() as Box<_>)).unwrap(); - let genesis_state = block.header().encode(); - - // create and sign transaction to register parachain - let function = polkadot_test_runtime::Call::Sudo(pallet_sudo::Call::sudo(Box::new( - polkadot_test_runtime::Call::Registrar(registrar::Call::register_para( - para_id, - Info { - scheduling: Scheduling::Always, - }, - parachain_runtime::WASM_BINARY - .expect("You need to build the WASM binary to run this test!") - .to_vec() - .into(), - genesis_state.into(), - )), - ))); - - // register parachain - let _ = alice.call_function(function, Alice).await.unwrap(); - - // run cumulus charlie (a validator) - let key = Arc::new(sp_core::Pair::generate().0); - let polkadot_config = polkadot_test_service::node_config( - || {}, - task_executor.clone(), - Charlie, - vec![alice.addr.clone(), bob.addr.clone()], - ); - let charlie_config = - parachain_config(task_executor.clone(), Charlie, vec![], spec.clone()).unwrap(); - let multiaddr = charlie_config.network.listen_addresses[0].clone(); - let (charlie_task_manager, charlie_client, charlie_network) = - crate::service::start_node(charlie_config, key, polkadot_config, para_id, true, true) - .unwrap(); - charlie_client.wait_for_blocks(4).await; - let peer_id = charlie_network.local_peer_id().clone(); - let charlie_addr = MultiaddrWithPeerId { multiaddr, peer_id }; - - // run cumulus dave (not a validator) - // - // a collator running in non-validator mode should be able to sync blocks from the tip of the - // parachain - let key = Arc::new(sp_core::Pair::generate().0); - let polkadot_config = polkadot_test_service::node_config( - || {}, - task_executor.clone(), - Dave, - vec![alice.addr.clone(), bob.addr.clone()], - ); - let dave_config = parachain_config( - task_executor.clone(), - Dave, - vec![charlie_addr], - spec.clone(), - ) - .unwrap(); - let (dave_task_manager, dave_client, _dave_network) = - crate::service::start_node(dave_config, key, polkadot_config, para_id, false, true) - .unwrap(); - dave_client.wait_for_blocks(4).await; - - alice.task_manager.clean_shutdown(); - bob.task_manager.clean_shutdown(); - charlie_task_manager.clean_shutdown(); - dave_task_manager.clean_shutdown(); -} - -pub fn parachain_config( - task_executor: TaskExecutor, - key: Sr25519Keyring, - boot_nodes: Vec, - spec: Box, -) -> Result { - let base_path = BasePath::new_temp_dir()?; - let root = base_path.path().to_path_buf(); - let role = Role::Authority { - sentry_nodes: Vec::new(), - }; - let key_seed = key.to_seed(); - - let mut network_config = NetworkConfiguration::new( - format!("Cumulus Test Node for: {}", key_seed), - "network/test/0.1", - Default::default(), - None, - ); - let informant_output_format = OutputFormat { - enable_color: false, - prefix: format!("[{}] ", key_seed), - }; - - network_config.boot_nodes = boot_nodes; - - network_config.allow_non_globals_in_dht = false; - - network_config - .listen_addresses - .push(multiaddr::Protocol::Memory(rand::random()).into()); - - network_config.transport = TransportConfig::MemoryOnly; - - Ok(Configuration { - impl_name: "cumulus-test-node".to_string(), - impl_version: "0.1".to_string(), - role, - task_executor, - transaction_pool: Default::default(), - network: network_config, - keystore: KeystoreConfig::Path { - path: root.join("key"), - password: None, - }, - database: DatabaseConfig::RocksDb { - path: root.join("db"), - cache_size: 128, - }, - state_cache_size: 67108864, - state_cache_child_ratio: None, - pruning: PruningMode::ArchiveAll, - chain_spec: spec, - wasm_method: WasmExecutionMethod::Interpreted, - // NOTE: we enforce the use of the native runtime to make the errors more debuggable - execution_strategies: ExecutionStrategies { - syncing: sc_client_api::ExecutionStrategy::NativeWhenPossible, - importing: sc_client_api::ExecutionStrategy::NativeWhenPossible, - block_construction: sc_client_api::ExecutionStrategy::NativeWhenPossible, - offchain_worker: sc_client_api::ExecutionStrategy::NativeWhenPossible, - other: sc_client_api::ExecutionStrategy::NativeWhenPossible, - }, - rpc_http: None, - rpc_ws: None, - rpc_ipc: None, - rpc_ws_max_connections: None, - rpc_cors: None, - rpc_methods: Default::default(), - prometheus_config: None, - telemetry_endpoints: None, - telemetry_external_transport: None, - default_heap_pages: None, - offchain_worker: OffchainWorkerConfig { - enabled: true, - indexing_enabled: false, - }, - force_authoring: false, - disable_grandpa: false, - dev_key_seed: Some(key_seed), - tracing_targets: None, - tracing_receiver: Default::default(), - max_runtime_instances: 8, - announce_block: true, - base_path: Some(base_path), - informant_output_format, - }) -} diff --git a/cumulus/rococo-parachains/src/main.rs b/cumulus/rococo-parachains/src/main.rs index d786b6f3cf..be7e27dcd3 100644 --- a/cumulus/rococo-parachains/src/main.rs +++ b/cumulus/rococo-parachains/src/main.rs @@ -24,8 +24,6 @@ mod chain_spec; mod service; mod cli; mod command; -#[cfg(test)] -mod integration_test; fn main() -> sc_cli::Result<()> { command::run() diff --git a/cumulus/rococo-parachains/src/service.rs b/cumulus/rococo-parachains/src/service.rs index 6c57472d70..3fc8fa43ce 100644 --- a/cumulus/rococo-parachains/src/service.rs +++ b/cumulus/rococo-parachains/src/service.rs @@ -15,24 +15,18 @@ // along with Cumulus. If not, see . use ansi_term::Color; -use cumulus_collator::CollatorBuilder; use cumulus_network::DelayedBlockAnnounceValidator; use cumulus_service::{ prepare_node_config, start_collator, start_full_node, StartCollatorParams, StartFullNodeParams, }; use polkadot_primitives::v0::CollatorPair; use rococo_parachain_primitives::Block; -use sc_client_api::{Backend as BackendT, BlockBackend, Finalizer, UsageProvider}; use sc_executor::native_executor_instance; pub use sc_executor::NativeExecutor; use sc_informant::OutputFormat; -use sc_network::NetworkService; use sc_service::{Configuration, PartialComponents, Role, TFullBackend, TFullClient, TaskManager}; use sp_api::ConstructRuntimeApi; -use sp_blockchain::HeaderBackend; -use sp_consensus::{BlockImport, Environment, Error as ConsensusError, Proposer}; -use sp_core::{crypto::Pair, H256}; -use sp_runtime::traits::{BlakeTwo256, Block as BlockT}; +use sp_runtime::traits::BlakeTwo256; use sp_trie::PrefixedMemoryDB; use std::sync::Arc; @@ -122,91 +116,6 @@ where Ok(params) } -/// Start a test collator node for a parachain. -/// -/// A collator is similar to a validator in a normal blockchain. -/// It is responsible for producing blocks and sending the blocks to a -/// parachain validator for validation and inclusion into the relay chain. -pub fn start_test_collator<'a, Block, PF, BI, BS, Client, Backend>( - StartCollatorParams { - para_id, - proposer_factory, - inherent_data_providers, - block_import, - block_status, - announce_block, - client, - block_announce_validator, - task_manager, - polkadot_config, - collator_key, - }: StartCollatorParams<'a, Block, PF, BI, BS, Client>, -) -> sc_service::error::Result<()> -where - Block: BlockT, - PF: Environment + Send + 'static, - BI: BlockImport< - Block, - Error = ConsensusError, - Transaction = >::Transaction, - > + Send - + Sync - + 'static, - BS: BlockBackend + Send + Sync + 'static, - Client: Finalizer - + UsageProvider - + HeaderBackend - + Send - + Sync - + BlockBackend - + 'static, - for<'b> &'b Client: BlockImport, - Backend: BackendT + 'static, -{ - let builder = CollatorBuilder::new( - proposer_factory, - inherent_data_providers, - block_import, - block_status, - para_id, - client, - announce_block, - block_announce_validator, - ); - - let (polkadot_future, polkadot_task_manager) = { - let (task_manager, client, handles, _network, _rpc_handlers) = - polkadot_test_service::polkadot_test_new_full( - polkadot_config, - Some((collator_key.public(), para_id)), - None, - false, - 6000, - )?; - - let test_client = polkadot_test_service::TestClient(client); - - let future = polkadot_collator::build_collator_service( - task_manager.spawn_handle(), - handles, - test_client, - para_id, - collator_key, - builder, - )?; - - (future, task_manager) - }; - - task_manager - .spawn_essential_handle() - .spawn("polkadot", polkadot_future); - - task_manager.add_child(polkadot_task_manager); - - Ok(()) -} - /// Start a node with the given parachain `Configuration` and relay chain `Configuration`. /// /// This is the actual implementation that is abstract over the executor and the runtime api. @@ -217,12 +126,7 @@ fn start_node_impl( id: polkadot_primitives::v0::Id, validator: bool, rpc_ext_builder: RB, - test: bool, -) -> sc_service::error::Result<( - TaskManager, - Arc>, - Arc>, -)> +) -> sc_service::error::Result<(TaskManager, Arc>)> where RuntimeApi: ConstructRuntimeApi> + Send @@ -339,11 +243,7 @@ where collator_key, }; - if test { - start_test_collator(params)?; - } else { - start_collator(params)?; - } + start_collator(params)?; } else { let params = StartFullNodeParams { client: client.clone(), @@ -360,7 +260,7 @@ where start_network.start_network(); - Ok((task_manager, client, network)) + Ok((task_manager, client)) } /// Start a normal parachain node. @@ -370,11 +270,9 @@ pub fn start_node( polkadot_config: polkadot_collator::Configuration, id: polkadot_primitives::v0::Id, validator: bool, - test: bool, ) -> sc_service::error::Result<( TaskManager, Arc>, - Arc>, )> { start_node_impl::( parachain_config, @@ -383,7 +281,6 @@ pub fn start_node( id, validator, |_| Default::default(), - test, ) } @@ -394,7 +291,6 @@ pub fn start_contracts_node( polkadot_config: polkadot_collator::Configuration, id: polkadot_primitives::v0::Id, validator: bool, - test: bool, ) -> sc_service::error::Result { start_node_impl::( parachain_config, @@ -409,7 +305,6 @@ pub fn start_contracts_node( io.extend_with(ContractsApi::to_delegate(Contracts::new(client))); io }, - test, ) .map(|r| r.0) } diff --git a/cumulus/runtime/Cargo.toml b/cumulus/runtime/Cargo.toml index 3821fabc05..2490984ec6 100644 --- a/cumulus/runtime/Cargo.toml +++ b/cumulus/runtime/Cargo.toml @@ -7,30 +7,35 @@ edition = "2018" [dependencies] # Other dependencies codec = { package = "parity-scale-codec", version = "1.3.0", default-features = false, features = [ "derive" ] } -memory-db = { version = "0.24.0", default-features = false } hash-db = { version = "0.15.2", default-features = false } +memory-db = { version = "0.24.0", default-features = false } trie-db = { version = "0.22.0", default-features = false } # Cumulus dependencies cumulus-primitives = { path = "../primitives", default-features = false } # Substrate dependencies -sp-std = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } -sp-runtime = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } sp-core = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } sp-io = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } -frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +sp-runtime = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +sp-std = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } sp-trie = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } # Polkadot dependencies parachain = { package = "polkadot-parachain", git = "https://github.com/paritytech/polkadot", branch = "rococo-branch", default-features = false, features = [ "wasm-api" ] } [dev-dependencies] +# Substrate dependencies sc-block-builder = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } -sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } -sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } sc-executor = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } sp-consensus = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sp-timestamp = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } + +# Cumulus dependencies test-client = { package = "cumulus-test-client", path = "../test/client" } [features] diff --git a/cumulus/runtime/src/validate_block/tests.rs b/cumulus/runtime/src/validate_block/tests.rs index 0f684ec82d..db939ddd11 100644 --- a/cumulus/runtime/src/validate_block/tests.rs +++ b/cumulus/runtime/src/validate_block/tests.rs @@ -25,14 +25,16 @@ use sp_blockchain::HeaderBackend; use sp_consensus::SelectChain; use sp_core::traits::CallInWasm; use sp_io::TestExternalities; -use sp_keyring::AccountKeyring; +use sp_keyring::AccountKeyring::*; use sp_runtime::{ generic::BlockId, traits::{Block as BlockT, Header as HeaderT}, }; use test_client::{ - runtime::{Block, Hash, Header, Transfer, WASM_BINARY}, - Client, DefaultTestClientBuilderExt, LongestChain, TestClientBuilder, TestClientBuilderExt, + generate_block_inherents, + runtime::{Block, Hash, Header, UncheckedExtrinsic, WASM_BINARY}, + transfer, Client, DefaultTestClientBuilderExt, LongestChain, TestClientBuilder, + TestClientBuilderExt, }; use codec::{Decode, Encode}; @@ -74,53 +76,27 @@ fn call_validate_block( .map_err(|err| err.into()) } -fn create_extrinsics() -> Vec<::Extrinsic> { - vec![ - Transfer { - from: AccountKeyring::Alice.into(), - to: AccountKeyring::Bob.into(), - amount: 69, - nonce: 0, - } - .into_signed_tx(), - Transfer { - from: AccountKeyring::Alice.into(), - to: AccountKeyring::Charlie.into(), - amount: 100, - nonce: 1, - } - .into_signed_tx(), - Transfer { - from: AccountKeyring::Bob.into(), - to: AccountKeyring::Charlie.into(), - amount: 100, - nonce: 0, - } - .into_signed_tx(), - Transfer { - from: AccountKeyring::Charlie.into(), - to: AccountKeyring::Alice.into(), - amount: 500, - nonce: 0, - } - .into_signed_tx(), - ] -} - fn create_test_client() -> (Client, LongestChain) { - TestClientBuilder::new().build_with_longest_chain() + TestClientBuilder::new() + // NOTE: this allows easier debugging + .set_execution_strategy(sc_client_api::ExecutionStrategy::NativeWhenPossible) + .build_with_longest_chain() } fn build_block_with_proof( client: &Client, - extrinsics: Vec<::Extrinsic>, + extra_extrinsics: Vec, ) -> (Block, sp_trie::StorageProof) { let block_id = BlockId::Hash(client.info().best_hash); let mut builder = client .new_block_at(&block_id, Default::default(), true) .expect("Initializes new block"); - extrinsics + generate_block_inherents(client) + .into_iter() + .for_each(|e| builder.push(e).expect("Pushes an inherent")); + + extra_extrinsics .into_iter() .for_each(|e| builder.push(e).expect("Pushes an extrinsic")); @@ -135,10 +111,10 @@ fn build_block_with_proof( } #[test] -fn validate_block_with_no_extrinsics() { +fn validate_block_no_extra_extrinsics() { let (client, longest_chain) = create_test_client(); let parent_head = longest_chain.best_chain().expect("Best block exists"); - let (block, witness_data) = build_block_with_proof(&client, Vec::new()); + let (block, witness_data) = build_block_with_proof(&client, vec![]); let (header, extrinsics) = block.deconstruct(); let block_data = ParachainBlockData::new(header.clone(), extrinsics, witness_data); @@ -148,10 +124,16 @@ fn validate_block_with_no_extrinsics() { } #[test] -fn validate_block_with_extrinsics() { +fn validate_block_with_extra_extrinsics() { let (client, longest_chain) = create_test_client(); let parent_head = longest_chain.best_chain().expect("Best block exists"); - let (block, witness_data) = build_block_with_proof(&client, create_extrinsics()); + let extra_extrinsics = vec![ + transfer(&client, Alice, Bob, 69), + transfer(&client, Bob, Charlie, 100), + transfer(&client, Charlie, Alice, 500), + ]; + + let (block, witness_data) = build_block_with_proof(&client, extra_extrinsics); let (header, extrinsics) = block.deconstruct(); let block_data = ParachainBlockData::new(header.clone(), extrinsics, witness_data); @@ -161,11 +143,11 @@ fn validate_block_with_extrinsics() { } #[test] -#[should_panic] +#[should_panic(expected = "Calls `validate_block`: Other(\"Trap: Trap { kind: Unreachable }\")")] fn validate_block_invalid_parent_hash() { let (client, longest_chain) = create_test_client(); let parent_head = longest_chain.best_chain().expect("Best block exists"); - let (block, witness_data) = build_block_with_proof(&client, Vec::new()); + let (block, witness_data) = build_block_with_proof(&client, vec![]); let (mut header, extrinsics) = block.deconstruct(); header.set_parent_hash(Hash::from_low_u64_be(1)); diff --git a/cumulus/test/client/Cargo.toml b/cumulus/test/client/Cargo.toml index c0b11cf1d3..a57aaf6f0c 100644 --- a/cumulus/test/client/Cargo.toml +++ b/cumulus/test/client/Cargo.toml @@ -8,9 +8,22 @@ edition = "2018" sc-service = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } sc-consensus = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } test-client = { package = "substrate-test-client", git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } -runtime = { package = "cumulus-test-runtime", path = "../runtime" } sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } sp-core = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } codec = { package = "parity-scale-codec", version = "1.0.5", default-features = false, features = [ "derive" ] } sp-test-primitives = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sp-consensus = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sp-api = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sp-timestamp = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sc-block-builder = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +frame-system = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +pallet-balances = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } + +# Cumulus dependencies +cumulus-test-service = { path = "../service" } +cumulus-primitives = { path = "../../primitives" } +runtime = { package = "cumulus-test-runtime", path = "../runtime" } diff --git a/cumulus/test/client/src/block_builder.rs b/cumulus/test/client/src/block_builder.rs new file mode 100644 index 0000000000..09d50e2ce9 --- /dev/null +++ b/cumulus/test/client/src/block_builder.rs @@ -0,0 +1,57 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Cumulus. + +// Cumulus is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Cumulus is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Cumulus. If not, see . + +use crate::Client; +use cumulus_primitives::{ + inherents::VALIDATION_FUNCTION_PARAMS_IDENTIFIER, + validation_function_params::ValidationFunctionParams, +}; +use runtime::GetLastTimestamp; +use sc_block_builder::BlockBuilderApi; +use sp_api::ProvideRuntimeApi; +use sp_blockchain::HeaderBackend; +use sp_core::ExecutionContext; +use sp_runtime::generic::BlockId; + +/// Generate the inherents to a block so you don't have to. +pub fn generate_block_inherents(client: &Client) -> Vec { + let mut inherent_data = sp_consensus::InherentData::new(); + let block_id = BlockId::Hash(client.info().best_hash); + let last_timestamp = client + .runtime_api() + .get_last_timestamp(&block_id) + .expect("Get last timestamp"); + let timestamp = last_timestamp + runtime::MinimumPeriod::get(); + + inherent_data + .put_data(sp_timestamp::INHERENT_IDENTIFIER, ×tamp) + .expect("Put timestamp failed"); + inherent_data + .put_data( + VALIDATION_FUNCTION_PARAMS_IDENTIFIER, + &ValidationFunctionParams::default(), + ) + .expect("Put validation function params failed"); + + client + .runtime_api() + .inherent_extrinsics_with_context( + &BlockId::number(0), + ExecutionContext::BlockConstruction, + inherent_data, + ) + .expect("Get inherents failed") +} diff --git a/cumulus/test/client/src/lib.rs b/cumulus/test/client/src/lib.rs index 700886ba70..9f22b3a6df 100644 --- a/cumulus/test/client/src/lib.rs +++ b/cumulus/test/client/src/lib.rs @@ -16,15 +16,25 @@ //! A Cumulus test client. +mod block_builder; + +pub use block_builder::*; + +use codec::Encode; pub use runtime; use runtime::{ - genesismap::{additional_storage_with_genesis, GenesisConfig}, - Block, + Balance, Block, BlockHashCount, Call, GenesisConfig, Runtime, Signature, SignedExtra, + SignedPayload, UncheckedExtrinsic, VERSION, }; use sc_service::client; -use sp_core::{sr25519, storage::Storage, ChangesTrieConfiguration}; -use sp_keyring::{AccountKeyring, Sr25519Keyring}; -use sp_runtime::traits::{Block as BlockT, Hash as HashT, Header as HeaderT}; +use sp_blockchain::HeaderBackend; +use sp_core::{map, storage::Storage, twox_128, ChangesTrieConfiguration}; +use sp_runtime::{ + generic::Era, + traits::{Block as BlockT, Hash as HashT, Header as HeaderT}, + BuildStorage, SaturatedConversion, +}; +use std::collections::BTreeMap; pub use test_client::*; mod local_executor { @@ -63,14 +73,12 @@ pub struct GenesisParameters { impl test_client::GenesisInit for GenesisParameters { fn genesis_storage(&self) -> Storage { - use codec::Encode; - let changes_trie_config: Option = if self.support_changes_trie { Some(sp_test_primitives::changes_trie_config()) } else { None }; - let mut storage = genesis_config(changes_trie_config).genesis_map(); + let mut storage = genesis_config(changes_trie_config).build_storage().unwrap(); let child_roots = storage.children_default.iter().map(|(sk, child_content)| { let state_root = @@ -128,20 +136,68 @@ impl DefaultTestClientBuilderExt for TestClientBuilder { } fn genesis_config(changes_trie_config: Option) -> GenesisConfig { - GenesisConfig::new( - changes_trie_config, - vec![ - sr25519::Public::from(Sr25519Keyring::Alice).into(), - sr25519::Public::from(Sr25519Keyring::Bob).into(), - sr25519::Public::from(Sr25519Keyring::Charlie).into(), - ], - vec![ - AccountKeyring::Alice.into(), - AccountKeyring::Bob.into(), - AccountKeyring::Charlie.into(), - ], - 1000, - Default::default(), - Default::default(), + cumulus_test_service::local_testnet_genesis(changes_trie_config) +} + +fn additional_storage_with_genesis(genesis_block: &Block) -> BTreeMap, Vec> { + map![ + twox_128(&b"latest"[..]).to_vec() => genesis_block.hash().as_fixed_bytes().to_vec() + ] +} + +/// Generate an extrinsic from the provided function call, origin and [`Client`]. +pub fn generate_extrinsic( + client: &Client, + origin: sp_keyring::AccountKeyring, + function: Call, +) -> UncheckedExtrinsic { + let current_block_hash = client.info().best_hash; + let current_block = client.info().best_number.saturated_into(); + let genesis_block = client.hash(0).unwrap().unwrap(); + let nonce = 0; + let period = BlockHashCount::get() + .checked_next_power_of_two() + .map(|c| c / 2) + .unwrap_or(2) as u64; + let tip = 0; + let extra: SignedExtra = ( + frame_system::CheckSpecVersion::::new(), + frame_system::CheckGenesis::::new(), + frame_system::CheckEra::::from(Era::mortal(period, current_block)), + frame_system::CheckNonce::::from(nonce), + frame_system::CheckWeight::::new(), + pallet_transaction_payment::ChargeTransactionPayment::::from(tip), + ); + let raw_payload = SignedPayload::from_raw( + function.clone(), + extra.clone(), + ( + VERSION.spec_version, + genesis_block, + current_block_hash, + (), + (), + (), + ), + ); + let signature = raw_payload.using_encoded(|e| origin.sign(e)); + + UncheckedExtrinsic::new_signed( + function.clone(), + origin.public().into(), + Signature::Sr25519(signature.clone()), + extra.clone(), ) } + +/// Transfer some token from one account to another using a provided test [`Client`]. +pub fn transfer( + client: &Client, + origin: sp_keyring::AccountKeyring, + dest: sp_keyring::AccountKeyring, + value: Balance, +) -> UncheckedExtrinsic { + let function = Call::Balances(pallet_balances::Call::transfer(dest.public().into(), value)); + + generate_extrinsic(client, origin, function) +} diff --git a/cumulus/test/runtime/Cargo.toml b/cumulus/test/runtime/Cargo.toml index 942fd5f697..08ac1fa1f8 100644 --- a/cumulus/test/runtime/Cargo.toml +++ b/cumulus/test/runtime/Cargo.toml @@ -3,18 +3,74 @@ name = "cumulus-test-runtime" version = "0.1.0" authors = ["Parity Technologies "] edition = "2018" -build = "build.rs" [dependencies] -runtime = { package = "cumulus-runtime", path = "../../runtime", default-features = false } -substrate-test-runtime = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch", version = "2.0.0-rc5" } +codec = { package = "parity-scale-codec", version = "1.3.0", default-features = false, features = ["derive"] } +serde = { version = "1.0.101", optional = true, features = ["derive"] } + +# Substrate dependencies +frame-executive = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +frame-support = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +frame-system = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +pallet-balances = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +pallet-randomness-collective-flip = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +pallet-sudo = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +pallet-timestamp = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +pallet-transaction-payment = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +sp-api = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +sp-block-builder = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +sp-core = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +sp-inherents = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +sp-io = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +sp-offchain = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +sp-runtime = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +sp-session = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +sp-std = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +sp-transaction-pool = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +sp-version = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } + +# Cumulus dependencies +cumulus-parachain-upgrade = { path = "../../parachain-upgrade", default-features = false } +cumulus-primitives = { path = "../../primitives", default-features = false } +cumulus-runtime = { path = "../../runtime", default-features = false } +cumulus-upward-message = { path = "../../upward-message", default-features = false } + +# Polkadot dependencies +polkadot-parachain = { git = "https://github.com/paritytech/polkadot", branch = "rococo-branch", default-features = false } [build-dependencies] -wasm-builder-runner = { package = "substrate-wasm-builder-runner", version = " 1.0.6" } +wasm-builder-runner = { package = "substrate-wasm-builder-runner", version = "1.0.6" } [features] -default = ["std"] +default = [ "std" ] std = [ - "runtime/std", - "substrate-test-runtime/std", + "codec/std", + "cumulus-parachain-upgrade/std", + "cumulus-primitives/std", + "cumulus-runtime/std", + "cumulus-upward-message/std", + "frame-executive/std", + "frame-support/std", + "frame-system/std", + "pallet-balances/std", + "pallet-randomness-collective-flip/std", + "pallet-sudo/std", + "pallet-timestamp/std", + "pallet-transaction-payment/std", + "serde", + "sp-api/std", + "sp-block-builder/std", + "sp-core/std", + "sp-inherents/std", + "sp-io/std", + "sp-offchain/std", + "sp-runtime/std", + "sp-session/std", + "sp-std/std", + "sp-transaction-pool/std", + "sp-version/std", +] +# Will be enabled by the `wasm-builder` when building the runtime for WASM. +runtime-wasm = [ + "cumulus-upward-message/runtime-wasm", ] diff --git a/cumulus/test/runtime/build.rs b/cumulus/test/runtime/build.rs index 5e8fb044e5..5fefb95548 100644 --- a/cumulus/test/runtime/build.rs +++ b/cumulus/test/runtime/build.rs @@ -1,5 +1,5 @@ // Copyright 2019 Parity Technologies (UK) Ltd. -// This file is part of Substrate. +// This file is part of Cumulus. // Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -12,7 +12,7 @@ // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . +// along with Cumulus. If not, see . use wasm_builder_runner::WasmBuilder; diff --git a/cumulus/test/runtime/src/lib.rs b/cumulus/test/runtime/src/lib.rs index ded5aec570..bb9c298213 100644 --- a/cumulus/test/runtime/src/lib.rs +++ b/cumulus/test/runtime/src/lib.rs @@ -1,12 +1,12 @@ // Copyright 2019 Parity Technologies (UK) Ltd. -// This file is part of Substrate. +// This file is part of Cumulus. -// Substrate is free software: you can redistribute it and/or modify +// Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate is distributed in the hope that it will be useful, +// Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. @@ -14,14 +14,338 @@ // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see . -//! A Cumulus test runtime. - #![cfg_attr(not(feature = "std"), no_std)] +// `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. +#![recursion_limit = "256"] // Make the WASM binary available. #[cfg(feature = "std")] include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs")); -pub use substrate_test_runtime::*; +use sp_api::{decl_runtime_apis, impl_runtime_apis}; +use sp_core::OpaqueMetadata; +use sp_runtime::{ + create_runtime_str, generic, impl_opaque_keys, + traits::{BlakeTwo256, Block as BlockT, IdentifyAccount, IdentityLookup, Saturating, Verify}, + transaction_validity::{TransactionSource, TransactionValidity}, + ApplyExtrinsicResult, MultiSignature, +}; +use sp_std::prelude::*; +#[cfg(feature = "std")] +use sp_version::NativeVersion; +use sp_version::RuntimeVersion; -runtime::register_validate_block!(Block, system::BlockExecutor); +// A few exports that help ease life for downstream crates. +pub use frame_support::{ + construct_runtime, parameter_types, + traits::Randomness, + weights::{constants::WEIGHT_PER_SECOND, IdentityFee, Weight}, + StorageValue, +}; +pub use pallet_balances::Call as BalancesCall; +pub use pallet_timestamp::Call as TimestampCall; +#[cfg(any(feature = "std", test))] +pub use sp_runtime::BuildStorage; +pub use sp_runtime::{Perbill, Permill}; + +pub type SessionHandlers = (); + +impl_opaque_keys! { + pub struct SessionKeys {} +} + +/// This runtime version. +pub const VERSION: RuntimeVersion = RuntimeVersion { + spec_name: create_runtime_str!("cumulus-test-parachain"), + impl_name: create_runtime_str!("cumulus-test-parachain"), + authoring_version: 1, + spec_version: 3, + impl_version: 1, + apis: RUNTIME_API_VERSIONS, + transaction_version: 1, +}; + +pub const MILLISECS_PER_BLOCK: u64 = 1000; + +pub const SLOT_DURATION: u64 = MILLISECS_PER_BLOCK; + +pub const EPOCH_DURATION_IN_BLOCKS: u32 = 10 * MINUTES; + +// These time units are defined in number of blocks. +pub const MINUTES: BlockNumber = 60_000 / (MILLISECS_PER_BLOCK as BlockNumber); +pub const HOURS: BlockNumber = MINUTES * 60; +pub const DAYS: BlockNumber = HOURS * 24; + +// 1 in 4 blocks (on average, not counting collisions) will be primary babe blocks. +pub const PRIMARY_PROBABILITY: (u64, u64) = (1, 4); + +/// The version information used to identify this runtime when compiled natively. +#[cfg(feature = "std")] +pub fn native_version() -> NativeVersion { + NativeVersion { + runtime_version: VERSION, + can_author_with: Default::default(), + } +} + +parameter_types! { + pub const BlockHashCount: BlockNumber = 250; + pub const MaximumBlockWeight: Weight = 2 * WEIGHT_PER_SECOND; + /// Assume 10% of weight for average on_initialize calls. + pub MaximumExtrinsicWeight: Weight = AvailableBlockRatio::get() + .saturating_sub(Perbill::from_percent(10)) * MaximumBlockWeight::get(); + pub const AvailableBlockRatio: Perbill = Perbill::from_percent(75); + pub const MaximumBlockLength: u32 = 5 * 1024 * 1024; + pub const Version: RuntimeVersion = VERSION; + pub const ExtrinsicBaseWeight: Weight = 10_000_000; +} + +impl frame_system::Trait for Runtime { + /// The identifier used to distinguish between accounts. + type AccountId = AccountId; + /// The aggregated dispatch type that is available for extrinsics. + type Call = Call; + /// The lookup mechanism to get account ID from whatever is passed in dispatchers. + type Lookup = IdentityLookup; + /// The index type for storing how many extrinsics an account has signed. + type Index = Index; + /// The index type for blocks. + type BlockNumber = BlockNumber; + /// The type for hashing blocks and tries. + type Hash = Hash; + /// The hashing algorithm used. + type Hashing = BlakeTwo256; + /// The header type. + type Header = generic::Header; + /// The ubiquitous event type. + type Event = Event; + /// The ubiquitous origin type. + type Origin = Origin; + /// Maximum number of block number to block hash mappings to keep (oldest pruned first). + type BlockHashCount = BlockHashCount; + /// Maximum weight of each block. With a default weight system of 1byte == 1weight, 4mb is ok. + type MaximumBlockWeight = MaximumBlockWeight; + /// Maximum size of all encoded transactions (in bytes) that are allowed in one block. + type MaximumBlockLength = MaximumBlockLength; + /// Portion of the block weight that is available to all normal transactions. + type AvailableBlockRatio = AvailableBlockRatio; + /// Runtime version. + type Version = Version; + /// Converts a module to an index of this module in the runtime. + type ModuleToIndex = ModuleToIndex; + type AccountData = pallet_balances::AccountData; + type OnNewAccount = (); + type OnKilledAccount = (); + type DbWeight = (); + type ExtrinsicBaseWeight = ExtrinsicBaseWeight; + type BlockExecutionWeight = (); + type MaximumExtrinsicWeight = MaximumExtrinsicWeight; + type BaseCallFilter = (); + type SystemWeightInfo = (); +} + +parameter_types! { + pub const MinimumPeriod: u64 = SLOT_DURATION / 2; +} + +impl pallet_timestamp::Trait for Runtime { + /// A timestamp: milliseconds since the unix epoch. + type Moment = u64; + type OnTimestampSet = (); + type MinimumPeriod = MinimumPeriod; + type WeightInfo = (); +} + +parameter_types! { + pub const ExistentialDeposit: u128 = 500; + pub const TransferFee: u128 = 0; + pub const CreationFee: u128 = 0; + pub const TransactionByteFee: u128 = 1; +} + +impl pallet_balances::Trait for Runtime { + /// The type for recording an account's balance. + type Balance = Balance; + /// The ubiquitous event type. + type Event = Event; + type DustRemoval = (); + type ExistentialDeposit = ExistentialDeposit; + type AccountStore = System; + type WeightInfo = (); +} + +impl pallet_transaction_payment::Trait for Runtime { + type Currency = Balances; + type OnTransactionPayment = (); + type TransactionByteFee = TransactionByteFee; + type WeightToFee = IdentityFee; + type FeeMultiplierUpdate = (); +} + +impl pallet_sudo::Trait for Runtime { + type Call = Call; + type Event = Event; +} + +impl cumulus_parachain_upgrade::Trait for Runtime { + type Event = Event; + type OnValidationFunctionParams = (); +} + +parameter_types! { + pub storage ParachainId: cumulus_primitives::ParaId = 100.into(); +} + +construct_runtime! { + pub enum Runtime where + Block = Block, + NodeBlock = NodeBlock, + UncheckedExtrinsic = UncheckedExtrinsic, + { + System: frame_system::{Module, Call, Storage, Config, Event}, + Timestamp: pallet_timestamp::{Module, Call, Storage, Inherent}, + Balances: pallet_balances::{Module, Call, Storage, Config, Event}, + Sudo: pallet_sudo::{Module, Call, Storage, Config, Event}, + RandomnessCollectiveFlip: pallet_randomness_collective_flip::{Module, Call, Storage}, + ParachainUpgrade: cumulus_parachain_upgrade::{Module, Call, Storage, Inherent, Event}, + TransactionPayment: pallet_transaction_payment::{Module, Storage}, + } +} + +/// Index of a transaction in the chain. +pub type Index = u32; +/// A hash of some data used by the chain. +pub type Hash = sp_core::H256; +/// Balance of an account. +pub type Balance = u128; +/// Alias to 512-bit hash when used in the context of a transaction signature on the chain. +pub type Signature = MultiSignature; +/// An index to a block. +pub type BlockNumber = u32; +/// Some way of identifying an account on the chain. We intentionally make it equivalent +/// to the public key of our transaction signing scheme. +pub type AccountId = <::Signer as IdentifyAccount>::AccountId; +/// Opaque block type. +pub type NodeBlock = generic::Block; + +/// The address format for describing accounts. +pub type Address = AccountId; +/// Block header type as expected by this runtime. +pub type Header = generic::Header; +/// Block type as expected by this runtime. +pub type Block = generic::Block; +/// A Block signed with a Justification +pub type SignedBlock = generic::SignedBlock; +/// BlockId type as expected by this runtime. +pub type BlockId = generic::BlockId; +/// The SignedExtension to the basic transaction logic. +pub type SignedExtra = ( + frame_system::CheckSpecVersion, + frame_system::CheckGenesis, + frame_system::CheckEra, + frame_system::CheckNonce, + frame_system::CheckWeight, + pallet_transaction_payment::ChargeTransactionPayment, +); +/// Unchecked extrinsic type as expected by this runtime. +pub type UncheckedExtrinsic = generic::UncheckedExtrinsic; +/// Extrinsic type that has already been checked. +pub type CheckedExtrinsic = generic::CheckedExtrinsic; +/// Executive: handles dispatch to the various modules. +pub type Executive = frame_executive::Executive< + Runtime, + Block, + frame_system::ChainContext, + Runtime, + AllModules, +>; +/// The payload being signed in transactions. +pub type SignedPayload = generic::SignedPayload; + +decl_runtime_apis! { + pub trait GetLastTimestamp { + /// Returns the last timestamp of a runtime. + fn get_last_timestamp() -> u64; + } +} + +impl_runtime_apis! { + impl sp_api::Core for Runtime { + fn version() -> RuntimeVersion { + VERSION + } + + fn execute_block(block: Block) { + Executive::execute_block(block) + } + + fn initialize_block(header: &::Header) { + Executive::initialize_block(header) + } + } + + impl sp_api::Metadata for Runtime { + fn metadata() -> OpaqueMetadata { + Runtime::metadata().into() + } + } + + impl sp_block_builder::BlockBuilder for Runtime { + fn apply_extrinsic( + extrinsic: ::Extrinsic, + ) -> ApplyExtrinsicResult { + Executive::apply_extrinsic(extrinsic) + } + + fn finalize_block() -> ::Header { + Executive::finalize_block() + } + + fn inherent_extrinsics(data: sp_inherents::InherentData) -> Vec<::Extrinsic> { + data.create_extrinsics() + } + + fn check_inherents(block: Block, data: sp_inherents::InherentData) -> sp_inherents::CheckInherentsResult { + data.check_extrinsics(&block) + } + + fn random_seed() -> ::Hash { + RandomnessCollectiveFlip::random_seed() + } + } + + impl sp_transaction_pool::runtime_api::TaggedTransactionQueue for Runtime { + fn validate_transaction( + source: TransactionSource, + tx: ::Extrinsic, + ) -> TransactionValidity { + Executive::validate_transaction(source, tx) + } + } + + impl sp_offchain::OffchainWorkerApi for Runtime { + fn offchain_worker(header: &::Header) { + Executive::offchain_worker(header) + } + } + + impl sp_session::SessionKeys for Runtime { + fn decode_session_keys( + encoded: Vec, + ) -> Option, sp_core::crypto::KeyTypeId)>> { + SessionKeys::decode_into_raw_public_keys(&encoded) + } + + fn generate_session_keys(seed: Option>) -> Vec { + SessionKeys::generate(seed) + } + } + + impl crate::GetLastTimestamp for Runtime { + fn get_last_timestamp() -> u64 { + >::now() + } + } +} + +cumulus_runtime::register_validate_block!(Block, Executive); diff --git a/cumulus/test/service/Cargo.toml b/cumulus/test/service/Cargo.toml new file mode 100644 index 0000000000..a6ae3913d3 --- /dev/null +++ b/cumulus/test/service/Cargo.toml @@ -0,0 +1,66 @@ +[package] +name = 'cumulus-test-service' +version = '0.1.0' +authors = ["Parity Technologies "] +edition = '2018' + +[dependencies] +ansi_term = "0.12.1" +codec = { package = 'parity-scale-codec', version = '1.0.0' } +rand = "0.7.3" +serde = { version = "1.0.101", features = ["derive"] } + +# Substrate +sc-basic-authorship = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch", version = "0.8.0-rc5" } +sc-block-builder = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sc-chain-spec = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sc-client-api = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sc-executor = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sc-informant = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sc-network = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sc-rpc = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sc-service = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sc-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sp-api = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sp-block-builder = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sp-consensus = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sp-core = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sp-inherents = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sp-keyring = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sp-offchain = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sp-runtime = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "rococo-branch" } +sp-session = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sp-state-machine = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sp-timestamp = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sp-transaction-pool = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +sp-trie = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +substrate-test-client = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } + +# Polkadot +polkadot-collator = { git = "https://github.com/paritytech/polkadot", branch = "rococo-branch" } +polkadot-primitives = { git = "https://github.com/paritytech/polkadot", branch = "rococo-branch" } +polkadot-test-service = { git = "https://github.com/paritytech/polkadot", branch = "rococo-branch" } + +# Cumulus +cumulus-collator = { path = "../../collator" } +cumulus-consensus = { path = "../../consensus" } +cumulus-network = { path = "../../network" } +cumulus-primitives = { path = "../../primitives" } +cumulus-service = { path = "../../service" } +cumulus-test-runtime = { path = "../runtime" } + +# RPC related dependencies +jsonrpc-core = "14.2.0" + +[dev-dependencies] +futures = { version = "0.3.5" } +tokio = { version = "0.2.21", features = ["macros"] } + +# Polkadot dependencies +polkadot-test-runtime = { git = "https://github.com/paritytech/polkadot", branch = "rococo-branch" } +polkadot-test-service = { git = "https://github.com/paritytech/polkadot", branch = "rococo-branch" } + +# Substrate dependencies +pallet-sudo = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +substrate-test-runtime-client = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } +substrate-test-utils = { git = "https://github.com/paritytech/substrate", branch = "rococo-branch" } diff --git a/cumulus/test/service/src/chain_spec.rs b/cumulus/test/service/src/chain_spec.rs new file mode 100644 index 0000000000..cdaa4b82dc --- /dev/null +++ b/cumulus/test/service/src/chain_spec.rs @@ -0,0 +1,127 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Cumulus. + +// Cumulus is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Cumulus is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Cumulus. If not, see . + +#![allow(missing_docs)] + +use cumulus_primitives::ParaId; +use cumulus_test_runtime::{AccountId, Signature}; +use sc_chain_spec::{ChainSpecExtension, ChainSpecGroup}; +use sc_service::ChainType; +use serde::{Deserialize, Serialize}; +use sp_core::{sr25519, ChangesTrieConfiguration, Pair, Public}; +use sp_runtime::traits::{IdentifyAccount, Verify}; + +/// Specialized `ChainSpec` for the normal parachain runtime. +pub type ChainSpec = sc_service::GenericChainSpec; + +/// Helper function to generate a crypto pair from seed +pub fn get_from_seed(seed: &str) -> ::Public { + TPublic::Pair::from_string(&format!("//{}", seed), None) + .expect("static values are valid; qed") + .public() +} + +/// The extensions for the [`ChainSpec`]. +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, ChainSpecGroup, ChainSpecExtension)] +#[serde(deny_unknown_fields)] +pub struct Extensions { + /// The relay chain of the Parachain. + pub relay_chain: String, + /// The id of the Parachain. + pub para_id: u32, +} + +impl Extensions { + /// Try to get the extension from the given `ChainSpec`. + pub fn try_get(chain_spec: &Box) -> Option<&Self> { + sc_chain_spec::get_extension(chain_spec.extensions()) + } +} + +type AccountPublic = ::Signer; + +/// Helper function to generate an account ID from seed. +pub fn get_account_id_from_seed(seed: &str) -> AccountId +where + AccountPublic: From<::Public>, +{ + AccountPublic::from(get_from_seed::(seed)).into_account() +} + +/// Get the chain spec for a specific parachain ID. +pub fn get_chain_spec(id: ParaId) -> ChainSpec { + ChainSpec::from_genesis( + "Local Testnet", + "local_testnet", + ChainType::Local, + move || local_testnet_genesis(None), + vec![], + None, + None, + None, + Extensions { + relay_chain: "westend-dev".into(), + para_id: id.into(), + }, + ) +} + +/// Local testnet genesis for testing. +pub fn local_testnet_genesis( + changes_trie_config: Option, +) -> cumulus_test_runtime::GenesisConfig { + testnet_genesis( + get_account_id_from_seed::("Alice"), + vec![ + get_account_id_from_seed::("Alice"), + get_account_id_from_seed::("Bob"), + get_account_id_from_seed::("Charlie"), + get_account_id_from_seed::("Dave"), + get_account_id_from_seed::("Eve"), + get_account_id_from_seed::("Ferdie"), + get_account_id_from_seed::("Alice//stash"), + get_account_id_from_seed::("Bob//stash"), + get_account_id_from_seed::("Charlie//stash"), + get_account_id_from_seed::("Dave//stash"), + get_account_id_from_seed::("Eve//stash"), + get_account_id_from_seed::("Ferdie//stash"), + ], + changes_trie_config, + ) +} + +fn testnet_genesis( + root_key: AccountId, + endowed_accounts: Vec, + changes_trie_config: Option, +) -> cumulus_test_runtime::GenesisConfig { + cumulus_test_runtime::GenesisConfig { + frame_system: Some(cumulus_test_runtime::SystemConfig { + code: cumulus_test_runtime::WASM_BINARY + .expect("WASM binary was not build, please build it!") + .to_vec(), + changes_trie_config, + }), + pallet_balances: Some(cumulus_test_runtime::BalancesConfig { + balances: endowed_accounts + .iter() + .cloned() + .map(|k| (k, 1 << 60)) + .collect(), + }), + pallet_sudo: Some(cumulus_test_runtime::SudoConfig { key: root_key }), + } +} diff --git a/cumulus/test/service/src/genesis.rs b/cumulus/test/service/src/genesis.rs new file mode 100644 index 0000000000..92e05d0f4e --- /dev/null +++ b/cumulus/test/service/src/genesis.rs @@ -0,0 +1,29 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Cumulus. + +// Cumulus is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Cumulus is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Cumulus. If not, see . + +use codec::Encode; +use cumulus_primitives::{genesis::generate_genesis_block, ParaId}; +use cumulus_test_runtime::Block; +use polkadot_primitives::v0::HeadData; +use sp_runtime::traits::Block as BlockT; + +/// Returns the initial head data for a parachain ID. +pub fn initial_head_data(para_id: ParaId) -> HeadData { + let spec = Box::new(crate::chain_spec::get_chain_spec(para_id)); + let block: Block = generate_genesis_block(&(spec as Box<_>)).unwrap(); + let genesis_state = block.header().encode(); + genesis_state.into() +} diff --git a/cumulus/test/service/src/lib.rs b/cumulus/test/service/src/lib.rs new file mode 100644 index 0000000000..766d78a389 --- /dev/null +++ b/cumulus/test/service/src/lib.rs @@ -0,0 +1,509 @@ +// Copyright 2019 Parity Technologies (UK) Ltd. +// This file is part of Cumulus. + +// Cumulus is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Cumulus is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Cumulus. If not, see . + +//! Crate used for testing with Cumulus. + +#![warn(missing_docs)] + +mod chain_spec; +mod genesis; + +pub use chain_spec::*; +pub use genesis::*; + +use ansi_term::Color; +use core::future::Future; +use cumulus_collator::CollatorBuilder; +use cumulus_network::DelayedBlockAnnounceValidator; +use cumulus_primitives::ParaId; +use cumulus_service::{ + prepare_node_config, start_full_node, StartCollatorParams, StartFullNodeParams, +}; +use cumulus_test_runtime::{NodeBlock as Block, RuntimeApi}; +use polkadot_primitives::v0::CollatorPair; +use sc_client_api::execution_extensions::ExecutionStrategies; +use sc_client_api::BlockBackend; +use sc_executor::native_executor_instance; +pub use sc_executor::NativeExecutor; +use sc_informant::OutputFormat; +use sc_network::{config::TransportConfig, multiaddr, NetworkService}; +use sc_service::{ + config::{ + DatabaseConfig, KeystoreConfig, MultiaddrWithPeerId, NetworkConfiguration, + OffchainWorkerConfig, PruningMode, WasmExecutionMethod, + }, + BasePath, ChainSpec, Configuration, Error as ServiceError, PartialComponents, Role, + RpcHandlers, TFullBackend, TFullClient, TaskExecutor, TaskManager, +}; +use sp_consensus::{BlockImport, Environment, Error as ConsensusError, Proposer}; +use sp_core::{crypto::Pair, H256}; +use sp_keyring::Sr25519Keyring; +use sp_runtime::traits::BlakeTwo256; +use sp_state_machine::BasicExternalities; +use sp_trie::PrefixedMemoryDB; +use std::sync::Arc; +use substrate_test_client::BlockchainEventsExt; + +// Native executor instance. +native_executor_instance!( + pub RuntimeExecutor, + cumulus_test_runtime::api::dispatch, + cumulus_test_runtime::native_version, +); + +/// Starts a `ServiceBuilder` for a full service. +/// +/// Use this macro if you don't actually need the full service, but just the builder in order to +/// be able to perform chain operations. +pub fn new_partial( + config: &mut Configuration, +) -> Result< + PartialComponents< + TFullClient, + TFullBackend, + (), + sp_consensus::import_queue::BasicQueue>, + sc_transaction_pool::FullPool>, + (), + >, + sc_service::Error, +> { + let inherent_data_providers = sp_inherents::InherentDataProviders::new(); + + let (client, backend, keystore, task_manager) = + sc_service::new_full_parts::(&config)?; + let client = Arc::new(client); + + let registry = config.prometheus_registry(); + + let transaction_pool = sc_transaction_pool::BasicPool::new_full( + config.transaction_pool.clone(), + config.prometheus_registry(), + task_manager.spawn_handle(), + client.clone(), + ); + + let import_queue = cumulus_consensus::import_queue::import_queue( + client.clone(), + client.clone(), + inherent_data_providers.clone(), + &task_manager.spawn_handle(), + registry.clone(), + )?; + + let params = PartialComponents { + backend, + client, + import_queue, + keystore, + task_manager, + transaction_pool, + inherent_data_providers, + select_chain: (), + other: (), + }; + + Ok(params) +} + +/// Start a test collator node for a parachain. +/// +/// A collator is similar to a validator in a normal blockchain. +/// It is responsible for producing blocks and sending the blocks to a +/// parachain validator for validation and inclusion into the relay chain. +pub fn start_test_collator<'a, PF, BI, BS>( + StartCollatorParams { + para_id, + proposer_factory, + inherent_data_providers, + block_import, + block_status, + announce_block, + client, + block_announce_validator, + task_manager, + polkadot_config, + collator_key, + }: StartCollatorParams<'a, Block, PF, BI, BS, TFullClient>, +) -> sc_service::error::Result<()> +where + PF: Environment + Send + 'static, + BI: BlockImport< + Block, + Error = ConsensusError, + Transaction = >::Transaction, + > + Send + + Sync + + 'static, + BS: BlockBackend + Send + Sync + 'static, +{ + let builder = CollatorBuilder::new( + proposer_factory, + inherent_data_providers, + block_import, + block_status, + para_id, + client, + announce_block, + block_announce_validator, + ); + + let (polkadot_future, polkadot_task_manager) = { + let (task_manager, client, handles, _network, _rpc_handlers) = + polkadot_test_service::polkadot_test_new_full( + polkadot_config, + Some((collator_key.public(), para_id)), + None, + false, + 6000, + )?; + + let test_client = polkadot_test_service::TestClient(client); + + let future = polkadot_collator::build_collator_service( + task_manager.spawn_handle(), + handles, + test_client, + para_id, + collator_key, + builder, + )?; + + (future, task_manager) + }; + + task_manager + .spawn_essential_handle() + .spawn("polkadot", polkadot_future); + + task_manager.add_child(polkadot_task_manager); + + Ok(()) +} + +/// Start a node with the given parachain `Configuration` and relay chain `Configuration`. +/// +/// This is the actual implementation that is abstract over the executor and the runtime api. +fn start_node_impl( + parachain_config: Configuration, + collator_key: Arc, + mut polkadot_config: polkadot_collator::Configuration, + para_id: ParaId, + validator: bool, + rpc_ext_builder: RB, +) -> sc_service::error::Result<( + TaskManager, + Arc>, + Arc>, + Arc, +)> +where + RB: Fn( + Arc>, + ) -> jsonrpc_core::IoHandler + + Send + + 'static, +{ + if matches!(parachain_config.role, Role::Light) { + return Err("Light client not supported!".into()); + } + + let mut parachain_config = prepare_node_config(parachain_config); + + parachain_config.informant_output_format = OutputFormat { + enable_color: true, + prefix: format!("[{}] ", Color::Yellow.bold().paint("Parachain")), + }; + polkadot_config.informant_output_format = OutputFormat { + enable_color: true, + prefix: format!("[{}] ", Color::Blue.bold().paint("Relaychain")), + }; + + let params = new_partial(&mut parachain_config)?; + params + .inherent_data_providers + .register_provider(sp_timestamp::InherentDataProvider) + .unwrap(); + + let client = params.client.clone(); + let backend = params.backend.clone(); + let block_announce_validator = DelayedBlockAnnounceValidator::new(); + let block_announce_validator_builder = { + let block_announce_validator = block_announce_validator.clone(); + move |_| Box::new(block_announce_validator) as Box<_> + }; + + let prometheus_registry = parachain_config.prometheus_registry().cloned(); + let transaction_pool = params.transaction_pool.clone(); + let mut task_manager = params.task_manager; + let import_queue = params.import_queue; + let (network, network_status_sinks, system_rpc_tx, start_network) = + sc_service::build_network(sc_service::BuildNetworkParams { + config: ¶chain_config, + client: client.clone(), + transaction_pool: transaction_pool.clone(), + spawn_handle: task_manager.spawn_handle(), + import_queue, + on_demand: None, + block_announce_validator_builder: Some(Box::new(block_announce_validator_builder)), + finality_proof_request_builder: None, + finality_proof_provider: None, + })?; + + let rpc_extensions_builder = { + let client = client.clone(); + + Box::new(move |_deny_unsafe| rpc_ext_builder(client.clone())) + }; + + let rpc_handlers = sc_service::spawn_tasks(sc_service::SpawnTasksParams { + on_demand: None, + remote_blockchain: None, + rpc_extensions_builder, + client: client.clone(), + transaction_pool: transaction_pool.clone(), + task_manager: &mut task_manager, + telemetry_connection_sinks: Default::default(), + config: parachain_config, + keystore: params.keystore, + backend, + network: network.clone(), + network_status_sinks, + system_rpc_tx, + })?; + + let announce_block = { + let network = network.clone(); + Arc::new(move |hash, data| network.announce_block(hash, data)) + }; + + if validator { + let proposer_factory = sc_basic_authorship::ProposerFactory::new( + client.clone(), + transaction_pool, + prometheus_registry.as_ref(), + ); + + let params = StartCollatorParams { + para_id, + block_import: client.clone(), + proposer_factory, + inherent_data_providers: params.inherent_data_providers, + block_status: client.clone(), + announce_block, + client: client.clone(), + block_announce_validator, + task_manager: &mut task_manager, + polkadot_config, + collator_key, + }; + + start_test_collator(params)?; + } else { + let params = StartFullNodeParams { + client: client.clone(), + announce_block, + polkadot_config, + collator_key, + block_announce_validator, + task_manager: &mut task_manager, + para_id, + }; + + start_full_node(params)?; + } + + start_network.start_network(); + + Ok((task_manager, client, network, rpc_handlers)) +} + +/// A Cumulus test node instance used for testing. +pub struct CumulusTestNode { + /// TaskManager's instance. + pub task_manager: TaskManager, + /// Client's instance. + pub client: Arc>, + /// Node's network. + pub network: Arc>, + /// The `MultiaddrWithPeerId` to this node. This is useful if you want to pass it as "boot node" + /// to other nodes. + pub addr: MultiaddrWithPeerId, + /// RPCHandlers to make RPC queries. + pub rpc_handlers: Arc, +} + +/// Run a Cumulus test node using the Cumulus test runtime. The node will be using an in-memory +/// socket, therefore you need to provide boot nodes if you want it to be connected to other nodes. +/// The `storage_update_func` can be used to make adjustements to the runtime before the node +/// starts. +pub fn run_test_node( + task_executor: TaskExecutor, + key: Sr25519Keyring, + parachain_storage_update_func: impl Fn(), + polkadot_storage_update_func: impl Fn(), + parachain_boot_nodes: Vec, + polkadot_boot_nodes: Vec, + para_id: ParaId, + validator: bool, +) -> CumulusTestNode { + let collator_key = Arc::new(sp_core::Pair::generate().0); + let parachain_config = node_config( + parachain_storage_update_func, + task_executor.clone(), + key, + parachain_boot_nodes, + para_id, + ) + .expect("could not generate Configuration"); + let polkadot_config = polkadot_test_service::node_config( + polkadot_storage_update_func, + task_executor.clone(), + key, + polkadot_boot_nodes, + ); + let multiaddr = parachain_config.network.listen_addresses[0].clone(); + let (task_manager, client, network, rpc_handlers) = start_node_impl::<_>( + parachain_config, + collator_key, + polkadot_config, + para_id, + validator, + |_| Default::default(), + ) + .expect("could not create Cumulus test service"); + + let peer_id = network.local_peer_id().clone(); + let addr = MultiaddrWithPeerId { multiaddr, peer_id }; + + CumulusTestNode { + task_manager, + client, + network, + addr, + rpc_handlers, + } +} + +/// Create a Cumulus `Configuration`. By default an in-memory socket will be used, therefore you +/// need to provide boot nodes if you want the future node to be connected to other nodes. The +/// `storage_update_func` can be used to make adjustments to the runtime before the node starts. +pub fn node_config( + storage_update_func: impl Fn(), + task_executor: TaskExecutor, + key: Sr25519Keyring, + boot_nodes: Vec, + para_id: ParaId, +) -> Result { + let base_path = BasePath::new_temp_dir()?; + let root = base_path.path().to_path_buf(); + let role = Role::Authority { + sentry_nodes: Vec::new(), + }; + let key_seed = key.to_seed(); + let mut spec = Box::new(chain_spec::get_chain_spec(para_id)); + + let mut storage = spec + .as_storage_builder() + .build_storage() + .expect("could not build storage"); + + BasicExternalities::execute_with_storage(&mut storage, storage_update_func); + spec.set_storage(storage); + + let mut network_config = NetworkConfiguration::new( + format!("Cumulus Test Node for: {}", key_seed), + "network/test/0.1", + Default::default(), + None, + ); + let informant_output_format = OutputFormat { + enable_color: false, + prefix: format!("[{}] ", key_seed), + }; + + network_config.boot_nodes = boot_nodes; + + network_config.allow_non_globals_in_dht = false; + + network_config + .listen_addresses + .push(multiaddr::Protocol::Memory(rand::random()).into()); + + network_config.transport = TransportConfig::MemoryOnly; + + Ok(Configuration { + impl_name: "cumulus-test-node".to_string(), + impl_version: "0.1".to_string(), + role, + task_executor, + transaction_pool: Default::default(), + network: network_config, + keystore: KeystoreConfig::Path { + path: root.join("key"), + password: None, + }, + database: DatabaseConfig::RocksDb { + path: root.join("db"), + cache_size: 128, + }, + state_cache_size: 67108864, + state_cache_child_ratio: None, + pruning: PruningMode::ArchiveAll, + chain_spec: spec, + wasm_method: WasmExecutionMethod::Interpreted, + // NOTE: we enforce the use of the native runtime to make the errors more debuggable + execution_strategies: ExecutionStrategies { + syncing: sc_client_api::ExecutionStrategy::NativeWhenPossible, + importing: sc_client_api::ExecutionStrategy::NativeWhenPossible, + block_construction: sc_client_api::ExecutionStrategy::NativeWhenPossible, + offchain_worker: sc_client_api::ExecutionStrategy::NativeWhenPossible, + other: sc_client_api::ExecutionStrategy::NativeWhenPossible, + }, + rpc_http: None, + rpc_ws: None, + rpc_ipc: None, + rpc_ws_max_connections: None, + rpc_cors: None, + rpc_methods: Default::default(), + prometheus_config: None, + telemetry_endpoints: None, + telemetry_external_transport: None, + default_heap_pages: None, + offchain_worker: OffchainWorkerConfig { + enabled: true, + indexing_enabled: false, + }, + force_authoring: false, + disable_grandpa: false, + dev_key_seed: Some(key_seed), + tracing_targets: None, + tracing_receiver: Default::default(), + max_runtime_instances: 8, + announce_block: true, + base_path: Some(base_path), + informant_output_format, + }) +} + +impl CumulusTestNode { + /// Wait for `count` blocks to be imported in the node and then exit. This function will not + /// return if no blocks are ever created, thus you should restrict the maximum amount of time of + /// the test execution. + pub fn wait_for_blocks(&self, count: usize) -> impl Future { + self.client.wait_for_blocks(count) + } +} diff --git a/cumulus/test/service/tests/integration.rs b/cumulus/test/service/tests/integration.rs new file mode 100644 index 0000000000..e3ef7878b1 --- /dev/null +++ b/cumulus/test/service/tests/integration.rs @@ -0,0 +1,90 @@ +// Copyright 2020 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +use cumulus_primitives::ParaId; +use cumulus_test_service::initial_head_data; +use futures::join; +use sc_service::TaskExecutor; +use substrate_test_runtime_client::AccountKeyring::*; + +#[substrate_test_utils::test] +#[ignore] +async fn test_collating_and_non_collator_mode_catching_up(task_executor: TaskExecutor) { + let para_id = ParaId::from(100); + + // start alice + let alice = polkadot_test_service::run_test_node(task_executor.clone(), Alice, || {}, vec![]); + + // start bob + let bob = polkadot_test_service::run_test_node( + task_executor.clone(), + Bob, + || {}, + vec![alice.addr.clone()], + ); + + // ensure alice and bob can produce blocks + join!(alice.wait_for_blocks(2), bob.wait_for_blocks(2)); + + // register parachain + alice + .register_para( + para_id, + cumulus_test_runtime::WASM_BINARY + .expect("You need to build the WASM binary to run this test!") + .to_vec() + .into(), + initial_head_data(para_id), + ) + .await + .unwrap(); + + // run cumulus charlie (a validator) + let charlie = cumulus_test_service::run_test_node( + task_executor.clone(), + Charlie, + || {}, + || {}, + vec![], + vec![alice.addr.clone(), bob.addr.clone()], + para_id, + true, + ); + charlie.wait_for_blocks(2).await; + + // run cumulus dave (not a validator) + // + // a collator running in non-validator mode should be able to sync blocks from the tip of the + // parachain + let dave = cumulus_test_service::run_test_node( + task_executor.clone(), + Dave, + || {}, + || {}, + vec![charlie.addr.clone()], + vec![alice.addr.clone(), bob.addr.clone()], + para_id, + false, + ); + dave.wait_for_blocks(4).await; + + join!( + alice.task_manager.clean_shutdown(), + bob.task_manager.clean_shutdown(), + charlie.task_manager.clean_shutdown(), + dave.task_manager.clean_shutdown(), + ); +}