From 10fc88f6b1d5b7e05f6c7e3e44a8154060d88e13 Mon Sep 17 00:00:00 2001 From: Kian Paimani <5588131+kianenigma@users.noreply.github.com> Date: Mon, 12 Aug 2019 15:48:29 +0200 Subject: [PATCH] Update to latest Substrate master. (#353) * Integrate srml/im-online * Fix all build errors with old aura. * Fix most of the build errors. * Builds and tests seem to pass (I will not trust this commit yet) * Apply suggestions from code review Co-Authored-By: Robert Habermeier <rphmeier@gmail.com> * Kill some warnings. * fix panics on 0 validators * Fix dev chain. * Fix author stuff * fix im online integration. * Some tweaks * Introduce app-crypto * Initial build work * codec update / tweaks * patch polkadot-erasure-coding input * More fixes for new crypto * More fixes * Update parachains module * evamp parachain crypto * More crypto work. * Chain spec and service. * ChainSpec stuff * Last bits for a clean build * Tweak coment * adapt polkadot-validation to the new keystore * polkadot-network compiles, but tests don't * Integrate the new parachain validation stuff * delete message_routing file * make polkadot-network tests compile and pass * runtime tests compile and pass * update substrate ref * service compiles * all tests pass * Add TODO, change branch back to polkadot-master * Lock file * TODOs done * Issue number * Remove old tODO * Remove commented code --- polkadot/Cargo.lock | 1274 ++++++++++------- polkadot/availability-store/Cargo.toml | 2 +- polkadot/availability-store/src/lib.rs | 2 +- polkadot/cli/src/chain_spec.rs | 10 +- polkadot/collator/Cargo.toml | 2 - polkadot/collator/src/lib.rs | 29 +- polkadot/erasure-coding/Cargo.toml | 2 +- polkadot/erasure-coding/src/lib.rs | 31 +- polkadot/network/Cargo.toml | 2 +- polkadot/network/src/collator_pool.rs | 2 +- polkadot/network/src/gossip.rs | 24 +- .../network/src/gossip/message_routing.rs | 265 ---- polkadot/network/src/lib.rs | 34 +- polkadot/network/src/local_collations.rs | 20 +- polkadot/network/src/router.rs | 19 +- polkadot/network/src/tests/mod.rs | 26 +- polkadot/network/src/tests/validation.rs | 17 +- polkadot/network/src/validation.rs | 14 +- polkadot/parachain/Cargo.toml | 15 +- polkadot/parachain/src/lib.rs | 72 +- polkadot/parachain/src/wasm_executor.rs | 5 +- .../src/wasm_executor/validation_host.rs | 2 +- polkadot/parachain/tests/adder/mod.rs | 2 +- polkadot/primitives/Cargo.toml | 11 +- polkadot/primitives/src/lib.rs | 34 +- polkadot/primitives/src/parachain.rs | 42 +- polkadot/runtime/Cargo.toml | 21 +- polkadot/runtime/src/attestations.rs | 2 +- polkadot/runtime/src/claims.rs | 16 +- polkadot/runtime/src/constants.rs | 26 +- polkadot/runtime/src/curated_grandpa.rs | 4 +- polkadot/runtime/src/lib.rs | 153 +- polkadot/runtime/src/parachains.rs | 140 +- polkadot/runtime/src/slot_range.rs | 2 +- polkadot/runtime/src/slots.rs | 11 +- polkadot/service/Cargo.toml | 7 +- .../res/{alexander.json => kusama.json} | 0 polkadot/service/src/chain_spec.rs | 177 ++- polkadot/service/src/lib.rs | 313 ++-- polkadot/statement-table/Cargo.toml | 2 +- polkadot/statement-table/src/generic.rs | 2 +- polkadot/test-parachains/adder/Cargo.toml | 2 +- .../adder/collator/src/main.rs | 2 +- polkadot/test-parachains/adder/src/lib.rs | 4 +- polkadot/validation/Cargo.toml | 10 +- .../validation/src/attestation_service.rs | 19 +- polkadot/validation/src/collation.rs | 4 +- polkadot/validation/src/error.rs | 4 +- polkadot/validation/src/evaluation.rs | 2 +- polkadot/validation/src/lib.rs | 132 +- polkadot/validation/src/shared_table/mod.rs | 173 +-- 51 files changed, 1696 insertions(+), 1490 deletions(-) delete mode 100644 polkadot/network/src/gossip/message_routing.rs rename polkadot/service/res/{alexander.json => kusama.json} (100%) diff --git a/polkadot/Cargo.lock b/polkadot/Cargo.lock index c57e4ccbc5b..d97824d5810 100644 --- a/polkadot/Cargo.lock +++ b/polkadot/Cargo.lock @@ -5,7 +5,7 @@ name = "adder" version = "0.1.0" dependencies = [ "dlmalloc 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-parachain 0.1.0", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-wasm-builder-runner 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -50,7 +50,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -59,13 +59,13 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "stream-cipher 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "aho-corasick" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -77,7 +77,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -135,7 +135,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -154,7 +154,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "backtrace" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", @@ -207,11 +207,11 @@ dependencies = [ "env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "which 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -227,7 +227,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bitvec" -version = "0.11.3" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -238,7 +238,7 @@ dependencies = [ "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -339,6 +339,15 @@ dependencies = [ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "c2-chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "c_linked_list" version = "1.1.1" @@ -429,6 +438,14 @@ dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "crossbeam-channel" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "crossbeam-deque" version = "0.6.3" @@ -534,14 +551,14 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "1.2.1" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -557,7 +574,7 @@ dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -568,9 +585,9 @@ dependencies = [ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -622,7 +639,7 @@ version = "1.0.0-pre.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "curve25519-dalek 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "curve25519-dalek 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -656,8 +673,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", "humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -671,7 +688,7 @@ name = "erased-serde" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -688,7 +705,7 @@ name = "failure" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace 0.3.33 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)", "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -699,7 +716,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", "synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -718,15 +735,15 @@ dependencies = [ [[package]] name = "finality-grandpa" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "hashmap_core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -763,9 +780,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "fork-tree" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -929,6 +946,15 @@ dependencies = [ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "getrandom" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "glob" version = "0.2.11" @@ -939,25 +965,25 @@ name = "globset" version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", "bstr 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "h2" -version = "0.1.25" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -972,12 +998,12 @@ dependencies = [ [[package]] name = "hash-db" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "hash256-std-hasher" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1066,7 +1092,7 @@ dependencies = [ [[package]] name = "http" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1081,7 +1107,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1106,13 +1132,13 @@ dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "h2 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1139,10 +1165,10 @@ dependencies = [ [[package]] name = "impl-codec" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1151,7 +1177,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1159,7 +1185,7 @@ name = "impl-serde" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1206,58 +1232,58 @@ dependencies = [ [[package]] name = "jsonrpc-client-transports" -version = "12.1.0" +version = "12.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-pubsub 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-pubsub 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-core" -version = "12.1.0" +version = "12.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-core-client" -version = "12.1.0" +version = "12.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "jsonrpc-client-transports 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-client-transports 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-derive" -version = "12.1.0" +version = "12.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-http-server" -version = "12.1.0" +version = "12.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "hyper 0.12.33 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-server-utils 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-server-utils 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1265,25 +1291,25 @@ dependencies = [ [[package]] name = "jsonrpc-pubsub" -version = "12.1.0" +version = "12.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "jsonrpc-core 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-server-utils" -version = "12.1.0" +version = "12.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1292,12 +1318,12 @@ dependencies = [ [[package]] name = "jsonrpc-ws-server" -version = "12.1.0" +version = "12.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "jsonrpc-core 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-server-utils 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-server-utils 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "ws 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1362,10 +1388,10 @@ dependencies = [ "fs-swap 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "interleaved-ordered 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "kvdb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=616b40150ded71f57f650067fcbc5c99d7c343e6)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rocksdb 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1378,10 +1404,10 @@ dependencies = [ "fs-swap 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "interleaved-ordered 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "kvdb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rocksdb 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1461,7 +1487,7 @@ dependencies = [ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "libsecp256k1 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "multistream-select 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-multiaddr 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-multihash 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1479,7 +1505,7 @@ dependencies = [ "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "wasm-timer 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1488,7 +1514,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1509,7 +1535,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-dns-unofficial 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1540,7 +1566,7 @@ dependencies = [ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-swarm 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "parity-multiaddr 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "protobuf 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1564,7 +1590,7 @@ dependencies = [ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-swarm 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "parity-multiaddr 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-multihash 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "protobuf 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1588,7 +1614,7 @@ dependencies = [ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-swarm 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "parity-multiaddr 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1609,7 +1635,7 @@ dependencies = [ "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1622,18 +1648,18 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "curve25519-dalek 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "curve25519-dalek 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "protobuf 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "ring 0.14.6 (registry+https://github.com/rust-lang/crates.io-index)", "snow 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "x25519-dalek 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1645,7 +1671,7 @@ dependencies = [ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-swarm 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "parity-multiaddr 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1672,7 +1698,7 @@ dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1690,7 +1716,7 @@ dependencies = [ "js-sys 0.3.25 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "parity-send-wrapper 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "protobuf 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1728,7 +1754,7 @@ dependencies = [ "get_if_addrs 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", "ipnet 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "tk-listen 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1741,7 +1767,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1767,12 +1793,12 @@ dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rw-stream-sink 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "soketto 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-rustls 0.10.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-rustls 0.10.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "webpki-roots 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1784,7 +1810,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p-core 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "yamux 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1820,7 +1846,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1867,12 +1893,12 @@ name = "log" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "log" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1892,7 +1918,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", "synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1916,10 +1942,10 @@ dependencies = [ [[package]] name = "memory-db" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "hash-db 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", "hashmap_core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "parity-util-mem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1945,7 +1971,7 @@ dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "keccak 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1959,7 +1985,7 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1973,7 +1999,7 @@ dependencies = [ "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", - "miniz_oxide 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "miniz_oxide 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1986,7 +2012,7 @@ dependencies = [ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1999,7 +2025,7 @@ version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2032,7 +2058,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2101,6 +2127,15 @@ dependencies = [ "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "num-bigint" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "num-integer" version = "0.1.41" @@ -2110,6 +2145,17 @@ dependencies = [ "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "num-rational" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "num-bigint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "num-traits" version = "0.1.43" @@ -2153,7 +2199,7 @@ dependencies = [ [[package]] name = "opaque-debug" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2182,29 +2228,6 @@ name = "parity-bytes" version = "0.1.0" source = "git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d#b0317f649ab2c665b7987b8475878fc4d2e1f81d" -[[package]] -name = "parity-codec" -version = "4.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "bitvec 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-slice-cast 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "parity-codec-derive" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "parity-multiaddr" version = "0.5.0" @@ -2217,7 +2240,7 @@ dependencies = [ "data-encoding 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "parity-multihash 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "unsigned-varint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2236,6 +2259,29 @@ dependencies = [ "unsigned-varint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "parity-scale-codec" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bitvec 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-slice-cast 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec-derive 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "parity-send-wrapper" version = "0.1.0" @@ -2387,7 +2433,7 @@ dependencies = [ "proc-macro-hack 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2416,7 +2462,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "pkg-config" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2436,8 +2482,8 @@ dependencies = [ "kvdb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=616b40150ded71f57f650067fcbc5c99d7c343e6)", "kvdb-memorydb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=616b40150ded71f57f650067fcbc5c99d7c343e6)", "kvdb-rocksdb 0.1.4 (git+https://github.com/paritytech/parity-common?rev=616b40150ded71f57f650067fcbc5c99d7c343e6)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-primitives 0.1.0", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -2449,7 +2495,7 @@ version = "0.5.0" dependencies = [ "exit-future 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-service 0.5.0", "structopt 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-cli 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -2462,15 +2508,13 @@ version = "0.1.0" dependencies = [ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-cli 0.5.0", "polkadot-network 0.1.0", "polkadot-primitives 0.1.0", "polkadot-runtime 0.1.0", "polkadot-validation 0.1.0", "substrate-client 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "substrate-consensus-aura 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-consensus-common 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-keyring 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-network 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -2482,7 +2526,7 @@ dependencies = [ name = "polkadot-erasure-coding" version = "0.1.0" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-primitives 0.1.0", "reed-solomon-erasure 4.0.0 (git+https://github.com/paritytech/reed-solomon-erasure)", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -2504,8 +2548,8 @@ dependencies = [ "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "exit-future 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-availability-store 0.1.0", "polkadot-primitives 0.1.0", @@ -2525,10 +2569,10 @@ dependencies = [ "derive_more 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", "halt 0.1.0", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "shared_memory 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2539,14 +2583,16 @@ dependencies = [ name = "polkadot-primitives" version = "0.1.0" dependencies = [ - "bitvec 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bitvec 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-parachain 0.1.0", "pretty_assertions 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-version 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "srml-babe 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-application-crypto 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-client 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-serializer 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -2556,22 +2602,22 @@ dependencies = [ name = "polkadot-runtime" version = "0.1.0" dependencies = [ - "bitvec 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bitvec 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "libsecp256k1 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-primitives 0.1.0", "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-version 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "srml-aura 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "srml-authorship 0.1.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "srml-babe 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "srml-balances 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "srml-collective 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "srml-democracy 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -2579,7 +2625,9 @@ dependencies = [ "srml-executive 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "srml-finality-tracker 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "srml-grandpa 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "srml-im-online 0.1.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "srml-indices 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "srml-membership 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "srml-session 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "srml-staking 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "srml-sudo 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -2588,25 +2636,28 @@ dependencies = [ "srml-timestamp 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "srml-treasury 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-client 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "substrate-consensus-aura-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-consensus-babe-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-inherents 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-keyring 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-offchain-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-serializer 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-session 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-trie 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-wasm-builder-runner 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "trie-db 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", + "trie-db 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "polkadot-service" version = "0.5.0" dependencies = [ + "exit-future 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-availability-store 0.1.0", "polkadot-executor 0.1.0", @@ -2617,8 +2668,11 @@ dependencies = [ "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "srml-babe 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "srml-im-online 0.1.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-client 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "substrate-consensus-aura 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-consensus-babe 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-consensus-babe-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-consensus-common 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-finality-grandpa 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-finality-grandpa-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -2634,7 +2688,7 @@ dependencies = [ name = "polkadot-statement-table" version = "0.1.0" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-primitives 0.1.0", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", ] @@ -2643,14 +2697,14 @@ dependencies = [ name = "polkadot-validation" version = "0.1.0" dependencies = [ - "bitvec 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bitvec 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", "derive_more 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", "exit-future 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "futures-timer 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-availability-store 0.1.0", "polkadot-parachain 0.1.0", @@ -2658,20 +2712,25 @@ dependencies = [ "polkadot-runtime 0.1.0", "polkadot-statement-table 0.1.0", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "srml-aura 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "srml-babe 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-client 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "substrate-consensus-aura 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "substrate-consensus-aura-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-consensus-babe-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-consensus-common 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-finality-grandpa 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-inherents 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-keyring 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-keystore 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-transaction-pool 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-trie 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "ppv-lite86" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "pretty_assertions" version = "0.5.1" @@ -2683,13 +2742,13 @@ dependencies = [ [[package]] name = "primitive-types" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fixed-hash 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "impl-codec 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "impl-codec 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "impl-serde 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "uint 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "uint 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2707,7 +2766,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2782,7 +2841,7 @@ dependencies = [ "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2792,6 +2851,18 @@ dependencies = [ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rand" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "getrandom 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rand_chacha" version = "0.1.1" @@ -2801,18 +2872,35 @@ dependencies = [ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rand_chacha" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rand_core" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_core" -version = "0.4.0" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rand_core" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "getrandom 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "rand_hc" @@ -2822,6 +2910,14 @@ dependencies = [ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rand_isaac" version = "0.1.1" @@ -2836,7 +2932,7 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2848,7 +2944,7 @@ dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2859,7 +2955,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2915,23 +3011,19 @@ dependencies = [ [[package]] name = "regex" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "utf8-ranges 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex-syntax" -version = "0.6.10" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "ucd-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "ring" @@ -2941,7 +3033,7 @@ dependencies = [ "cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", - "spin 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "spin 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3003,7 +3095,7 @@ version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "ring 0.14.6 (registry+https://github.com/rust-lang/crates.io-index)", "sct 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3035,19 +3127,17 @@ dependencies = [ [[package]] name = "schnorrkel" -version = "0.1.1" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "curve25519-dalek 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "curve25519-dalek 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "ed25519-dalek 1.0.0-pre.1 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "merlin 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3089,20 +3179,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde" -version = "1.0.97" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde_derive 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_derive" -version = "1.0.97" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3112,7 +3202,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3123,7 +3213,7 @@ dependencies = [ "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3151,7 +3241,7 @@ dependencies = [ "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3163,7 +3253,7 @@ dependencies = [ "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "keccak 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3203,6 +3293,17 @@ dependencies = [ "erased-serde 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "slog-async" +version = "2.3.0" +source = "git+https://github.com/paritytech/slog-async#107848e7ded5e80dc43f6296c2b96039eb92c0a5" +dependencies = [ + "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "slog-json" version = "2.3.0" @@ -3210,7 +3311,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "chrono 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", "erased-serde 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3232,7 +3333,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3249,12 +3350,12 @@ dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "ring 0.14.6 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "static_slice 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3266,9 +3367,9 @@ dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "flate2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3283,30 +3384,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "spin" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "sr-api-macros" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sr-io" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "environmental 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "hash-db 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", "libsecp256k1 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3318,23 +3419,25 @@ dependencies = [ [[package]] name = "sr-primitives" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "integer-sqrt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "paste 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-application-crypto 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", ] [[package]] name = "sr-std" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3342,56 +3445,58 @@ dependencies = [ [[package]] name = "sr-version" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "impl-serde 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", ] [[package]] -name = "srml-aura" -version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +name = "srml-authorship" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "srml-session 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "srml-staking 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "srml-support 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "srml-system 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "srml-timestamp 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "substrate-consensus-aura-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-inherents 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", ] [[package]] -name = "srml-authorship" -version = "0.1.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +name = "srml-babe" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "srml-session 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "srml-staking 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "srml-support 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "srml-system 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "srml-timestamp 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-consensus-babe-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-inherents 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", ] [[package]] name = "srml-balances" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "srml-support 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3402,11 +3507,11 @@ dependencies = [ [[package]] name = "srml-collective" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3418,11 +3523,11 @@ dependencies = [ [[package]] name = "srml-democracy" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3433,11 +3538,11 @@ dependencies = [ [[package]] name = "srml-elections" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3449,10 +3554,10 @@ dependencies = [ [[package]] name = "srml-executive" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3463,10 +3568,10 @@ dependencies = [ [[package]] name = "srml-finality-tracker" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "srml-support 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3477,10 +3582,10 @@ dependencies = [ [[package]] name = "srml-grandpa" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "srml-finality-tracker 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3491,14 +3596,31 @@ dependencies = [ "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", ] +[[package]] +name = "srml-im-online" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" +dependencies = [ + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "srml-session 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "srml-support 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "srml-system 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-application-crypto 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", +] + [[package]] name = "srml-indices" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3508,13 +3630,27 @@ dependencies = [ "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", ] +[[package]] +name = "srml-membership" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" +dependencies = [ + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "srml-support 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "srml-system 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", +] + [[package]] name = "srml-metadata" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", ] @@ -3522,11 +3658,11 @@ dependencies = [ [[package]] name = "srml-session" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3539,11 +3675,11 @@ dependencies = [ [[package]] name = "srml-staking" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3557,10 +3693,10 @@ dependencies = [ [[package]] name = "srml-sudo" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3572,13 +3708,13 @@ dependencies = [ [[package]] name = "srml-support" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "bitmask 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "once_cell 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "paste 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3591,45 +3727,45 @@ dependencies = [ [[package]] name = "srml-support-procedural" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", "sr-api-macros 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "srml-support-procedural-tools 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "srml-support-procedural-tools" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", "srml-support-procedural-tools-derive 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "srml-support-procedural-tools-derive" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "srml-system" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3640,10 +3776,10 @@ dependencies = [ [[package]] name = "srml-timestamp" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "srml-support 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3654,10 +3790,10 @@ dependencies = [ [[package]] name = "srml-treasury" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "srml-balances 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3718,40 +3854,52 @@ dependencies = [ "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "strum" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "strum_macros" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-application-crypto" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" +dependencies = [ + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", ] [[package]] name = "substrate-bip39" -version = "0.2.2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "schnorrkel 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "schnorrkel 0.8.4 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-cli" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "app_dirs 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3764,9 +3912,9 @@ dependencies = [ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "names 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rpassword 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3786,17 +3934,17 @@ dependencies = [ [[package]] name = "substrate-client" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "derive_more 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "hash-db 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "kvdb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "sr-api-macros 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3814,16 +3962,16 @@ dependencies = [ [[package]] name = "substrate-client-db" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "hash-db 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", "kvdb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)", "kvdb-memorydb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)", "kvdb-rocksdb 0.1.4 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)", "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-client 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-consensus-common 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3835,54 +3983,66 @@ dependencies = [ ] [[package]] -name = "substrate-consensus-aura" +name = "substrate-consensus-babe" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ + "fork-tree 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "futures-timer 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "merlin 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num-bigint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "num-rational 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "schnorrkel 0.8.4 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-version 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "srml-aura 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "srml-babe 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "srml-support 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-application-crypto 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-client 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "substrate-consensus-aura-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-consensus-babe-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-consensus-common 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-consensus-slots 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-consensus-uncles 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-inherents 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-keystore 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-telemetry 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", ] [[package]] -name = "substrate-consensus-aura-primitives" +name = "substrate-consensus-babe-primitives" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "schnorrkel 0.8.4 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-application-crypto 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-client 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-consensus-slots 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", ] [[package]] name = "substrate-consensus-common" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "derive_more 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "futures-timer 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-version 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3893,13 +4053,13 @@ dependencies = [ [[package]] name = "substrate-consensus-slots" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "futures-timer 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-client 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-consensus-common 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3907,18 +4067,33 @@ dependencies = [ "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", ] +[[package]] +name = "substrate-consensus-uncles" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" +dependencies = [ + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "srml-authorship 0.1.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-client 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-consensus-common 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-inherents 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", +] + [[package]] name = "substrate-executor" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "libsecp256k1 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-version 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-panic-handler 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3927,21 +4102,21 @@ dependencies = [ "substrate-state-machine 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-trie 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-finality-grandpa" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "finality-grandpa 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "finality-grandpa 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "fork-tree 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3950,6 +4125,7 @@ dependencies = [ "substrate-consensus-common 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-finality-grandpa-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-inherents 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-keystore 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-network 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-service 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -3961,23 +4137,23 @@ dependencies = [ [[package]] name = "substrate-finality-grandpa-primitives" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-application-crypto 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-client 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", ] [[package]] name = "substrate-inherents" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", ] @@ -3985,32 +4161,34 @@ dependencies = [ [[package]] name = "substrate-keyring" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "strum 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", - "strum_macros 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", + "strum 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "strum_macros 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", ] [[package]] name = "substrate-keystore" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "derive_more 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-application-crypto 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "subtle 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-network" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4025,39 +4203,41 @@ dependencies = [ "libp2p 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "linked_hash_set 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "slog_derive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-client 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-consensus-babe-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-consensus-common 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-peerset 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "unsigned-varint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-offchain" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-client 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-keystore 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-network 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-offchain-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -4067,7 +4247,7 @@ dependencies = [ [[package]] name = "substrate-offchain-primitives" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-client 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -4076,21 +4256,21 @@ dependencies = [ [[package]] name = "substrate-panic-handler" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "backtrace 0.3.33 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-peerset" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4098,58 +4278,60 @@ dependencies = [ [[package]] name = "substrate-primitives" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "ed25519-dalek 1.0.0-pre.1 (registry+https://github.com/rust-lang/crates.io-index)", - "hash-db 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", - "hash256-std-hasher 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hash256-std-hasher 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "impl-serde 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "primitive-types 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "primitive-types 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "schnorrkel 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "schnorrkel 0.8.4 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "substrate-bip39 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-bip39 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "tiny-bip39 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "twox-hash 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "twox-hash 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-rpc" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "derive_more 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core-client 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-derive 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-pubsub 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core-client 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-derive 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-pubsub 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-version 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-client 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-executor 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-keystore 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-network 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-session 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-state-machine 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-transaction-pool 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", ] @@ -4157,13 +4339,13 @@ dependencies = [ [[package]] name = "substrate-rpc-servers" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "jsonrpc-http-server 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-pubsub 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-ws-server 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-http-server 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-pubsub 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-ws-server 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-rpc 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", ] @@ -4171,31 +4353,32 @@ dependencies = [ [[package]] name = "substrate-serializer" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-service" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "derive_more 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", "exit-future 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "parity-multiaddr 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-application-crypto 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-client 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-client-db 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-consensus-common 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -4205,57 +4388,70 @@ dependencies = [ "substrate-offchain 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-rpc-servers 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-session 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-telemetry 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-transaction-pool 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "sysinfo 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sysinfo 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", "target_info 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "substrate-session" +version = "2.0.0" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" +dependencies = [ + "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-client 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", + "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", +] + [[package]] name = "substrate-state-db" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", ] [[package]] name = "substrate-state-machine" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "hash-db 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-panic-handler 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-trie 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "trie-db 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", - "trie-root 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", + "trie-db 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "trie-root 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-telemetry" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "futures-preview 0.3.0-alpha.17 (registry+https://github.com/rust-lang/crates.io-index)", "futures-timer 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "libp2p 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-async 2.3.0 (git+https://github.com/paritytech/slog-async)", "slog-json 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "slog-scope 4.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4265,13 +4461,13 @@ dependencies = [ [[package]] name = "substrate-transaction-graph" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "derive_more 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", ] @@ -4279,13 +4475,13 @@ dependencies = [ [[package]] name = "substrate-transaction-pool" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ "derive_more 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-client 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", @@ -4295,15 +4491,15 @@ dependencies = [ [[package]] name = "substrate-trie" version = "2.0.0" -source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#f9e5a3742cfecb7f8f89c7c961ae900cca645b65" +source = "git+https://github.com/paritytech/substrate?branch=polkadot-master#917fc589bfc176763031378a50bc6fc06f0625a2" dependencies = [ - "hash-db 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memory-db 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memory-db 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "substrate-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", - "trie-db 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", - "trie-root 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", + "trie-db 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "trie-root 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4318,12 +4514,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "subtle" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "syn" -version = "0.15.42" +version = "0.15.43" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4338,13 +4534,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sysinfo" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4354,6 +4550,11 @@ dependencies = [ "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "take_mut" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "target_info" version = "0.1.0" @@ -4431,7 +4632,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4525,7 +4726,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4536,7 +4737,7 @@ dependencies = [ "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4548,7 +4749,7 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.10.0-alpha.3" +version = "0.10.0-alpha.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4590,7 +4791,7 @@ dependencies = [ "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4615,7 +4816,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4631,7 +4832,7 @@ dependencies = [ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4644,27 +4845,27 @@ name = "toml" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "trie-db" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "elastic-array 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hash-db 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", "hashmap_core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "trie-root" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "hash-db 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4679,15 +4880,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "twox-hash" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4695,14 +4896,9 @@ name = "typenum" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "ucd-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "uint" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4773,11 +4969,6 @@ dependencies = [ "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "utf8-ranges" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "vcpkg" version = "0.2.7" @@ -4814,7 +5005,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4833,10 +5024,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bumpalo 2.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", "wasm-bindgen-shared 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4866,7 +5057,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", "wasm-bindgen-backend 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "wasm-bindgen-shared 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4883,10 +5074,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", "wasm-bindgen-backend 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "weedle 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4914,6 +5105,19 @@ dependencies = [ "wasmi-validation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "wasmi" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num-rational 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi-validation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "wasmi-validation" version = "0.1.0" @@ -5023,7 +5227,7 @@ dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -5047,7 +5251,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "curve25519-dalek 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "curve25519-dalek 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -5063,7 +5267,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "nohash-hasher 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "quick-error 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -5074,20 +5278,20 @@ dependencies = [ [[package]] name = "zeroize" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "zeroize_derive 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize_derive 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "zeroize_derive" -version = "0.9.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)", "synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -5096,7 +5300,7 @@ dependencies = [ "checksum aes-ctr 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d2e5b0458ea3beae0d1d8c0f3946564f8e10f90646cf78c06b4351052058d1ee" "checksum aes-soft 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cfd7e7ae3f9a1fb5c03b389fc6bb9a51400d0c13053f0dca698c832bfd893a0d" "checksum aesni 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2f70a6b5f971e473091ab7cfb5ffac6cde81666c4556751d8d5620ead8abf100" -"checksum aho-corasick 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "36b7aa1ccb7d7ea3f437cf025a2ab1c47cc6c1bc9fc84918ff449def12f5e282" +"checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d" "checksum aio-limited 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7f10b352bc3fc08ae24dc5d2d3ddcac153678533986122dc283d747b12071000" "checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" "checksum app_dirs 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e73a24bad9bd6a94d6395382a6c69fe071708ae4409f763c5475e14ee896313d" @@ -5107,7 +5311,7 @@ dependencies = [ "checksum asn1_der_derive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9e7f92edafad155aff997fa5b727c6429b91e996b5a5d62a2b0adbae1306b5fe" "checksum atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90" "checksum autocfg 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "22130e92352b948e7e82a49cdb0aa94f2211761117f29e052dd397c1ac33542b" -"checksum backtrace 0.3.33 (registry+https://github.com/rust-lang/crates.io-index)" = "88fb679bc9af8fa639198790a77f52d345fe13656c08b43afa9424c206b731c6" +"checksum backtrace 0.3.34 (registry+https://github.com/rust-lang/crates.io-index)" = "b5164d292487f037ece34ec0de2fcede2faa162f085dd96d2385ab81b12765ba" "checksum backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "82a830b4ef2d1124a711c71d263c5abdc710ef8e907bd508c88be475cebc422b" "checksum base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" @@ -5115,7 +5319,7 @@ dependencies = [ "checksum bindgen 0.47.3 (registry+https://github.com/rust-lang/crates.io-index)" = "df683a55b54b41d5ea8ebfaebb5aa7e6b84e3f3006a78f010dadc9ca88469260" "checksum bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd" "checksum bitmask 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5da9b3d9f6f585199287a473f4f8dfab6566cf827d15c00c219f53c645687ead" -"checksum bitvec 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b67491e1cc6f37da6c4415cd743cb8d2e2c65388acc91ca3094a054cbf3cbd0c" +"checksum bitvec 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9633b74910e1870f50f5af189b08487195cdb83c0e27a71d6f64d5e09dd0538b" "checksum blake2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "91721a6330935673395a0607df4d49a9cb90ae12d259f1b3e0a3f6e1d486872e" "checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" "checksum block-buffer 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1339a1042f5d9f295737ad4d9a6ab6bf81c84a933dba110b9200cd6d1448b814" @@ -5131,6 +5335,7 @@ dependencies = [ "checksum byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0fc10e8cc6b2580fda3f36eb6dc5316657f812a3df879a44a66fc9f0fdbc4855" "checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" "checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" +"checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101" "checksum c_linked_list 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4964518bd3b4a8190e832886cdc0da9794f12e8e6c1613a9e90ff331c4c8724b" "checksum cc 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)" = "ce400c638d48ee0e9ab75aef7997609ec57367ccfe1463f21bf53c3eca67bf46" "checksum cexpr 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a7fa24eb00d5ffab90eaeaf1092ac85c04c64aaf358ea6f84505b8116d24c6af" @@ -5142,6 +5347,7 @@ dependencies = [ "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" "checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e" "checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" +"checksum crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c8ec7fcd21571dc78f96cc96243cab8d8f035247c3efd16c687be154c3fa9efa" "checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" "checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71" "checksum crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fedcd6772e37f3da2a9af9bf12ebe046c0dfe657992377b4df982a2b54cd37a9" @@ -5154,7 +5360,7 @@ dependencies = [ "checksum ctr 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "022cd691704491df67d25d006fe8eca083098253c4d43516c2206479c58c6736" "checksum ctrlc 3.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c7dfd2d8b4c82121dfdff120f818e09fc4380b0b7e17a742081a89b94853e87f" "checksum cuckoofilter 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8dd43f7cfaffe0a386636a10baea2ee05cc50df3b77bea4a456c9572a939bf1f" -"checksum curve25519-dalek 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5d4b820e8711c211745880150f5fac78ab07d6e3851d8ce9f5a02cedc199174c" +"checksum curve25519-dalek 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8b7dcd30ba50cdf88b55b033456138b7c0ac4afdc436d82e1b79f370f24cc66d" "checksum data-encoding 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f4f47ca1860a761136924ddd2422ba77b2ea54fe8cc75b9040804a0d9d32ad97" "checksum derive_more 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6d944ac6003ed268757ef1ee686753b57efc5fcf0ebe7b64c9fc81e7e32ff839" "checksum derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a141330240c921ec6d074a3e188a7c7ef95668bb95e7d44fa0e5778ec2a7afe" @@ -5176,7 +5382,7 @@ dependencies = [ "checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" "checksum fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b1ee15a7050e5580b3712877157068ea713b245b080ff302ae2ca973cfcd9baa" -"checksum finality-grandpa 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b9e7cba2aaadf09932452a4fc054a77451b31eb99bc0b42bf54bd44f01a9daf4" +"checksum finality-grandpa 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9681c1f75941ea47584573dd2bc10558b2067d460612945887e00744e43393be" "checksum fixed-hash 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "516877b7b9a1cc2d0293cbce23cd6203f0edbfd4090e6ca4489fecb5aa73050e" "checksum flate2 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "550934ad4808d5d39365e5d61727309bf18b3b02c6c56b729cb92e7dd84bc3d8" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" @@ -5200,11 +5406,12 @@ dependencies = [ "checksum generic-array 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fceb69994e330afed50c93524be68c42fa898c2d9fd4ee8da03bd7363acd26f2" "checksum get_if_addrs 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "abddb55a898d32925f3148bd281174a68eeb68bbfd9a5938a57b18f506ee4ef7" "checksum get_if_addrs-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0d04f9fb746cf36b191c00f3ede8bde9c8e64f9f4b05ae2694a9ccf5e3f5ab48" +"checksum getrandom 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "34f33de6f0ae7c9cb5e574502a562e2b512799e32abb801cd1e79ad952b62b49" "checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" "checksum globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "925aa2cac82d8834e2b2a4415b6f6879757fb5c0928fc445ae76461a12eed8f2" -"checksum h2 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)" = "a539b63339fbbb00e081e84b6e11bd1d9634a82d91da2984a18ac74a8823f392" -"checksum hash-db 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c4a2710506bcc28e53b6d48d9686b233a31ad831597da7de91e6112a2fc8f260" -"checksum hash256-std-hasher 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ff4a5dcbaf4fe8977852851d137546bcad8679c9582f170032ca35b30701138e" +"checksum h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" +"checksum hash-db 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "32c87fec93c4a2d264483ef843ac1930ae7c7999d97d73721305a5188b4c23a4" +"checksum hash256-std-hasher 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "16293646125e09e5bc216d9f73fa81ab31c4f97007d56c036bbf15a58e970540" "checksum hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3bae29b6653b3412c2e71e9d486db9f9df5d701941d86683005efb9f2d28e3da" "checksum hashmap_core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "8e04cb7a5051270ef3fa79f8c7604d581ecfa73d520e74f554e45541c4b5881a" "checksum heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1679e6ea370dee694f91f1dc469bf94cf8f52051d147aec3e1f9497c6fc22461" @@ -5215,13 +5422,13 @@ dependencies = [ "checksum hmac 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7a13f4163aa0c5ca1be584aace0e2212b2e41be5478218d4f657f5f778b2ae2a" "checksum hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" "checksum hmac-drbg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4fe727d41d2eec0a6574d887914347e5ff96a3b87177817e2a9820c5c87fecc2" -"checksum http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "eed324f0f0daf6ec10c474f150505af2c143f251722bf9dbd1261bd1f2ee2c1a" +"checksum http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "372bcb56f939e449117fb0869c2e8fd8753a8223d92a172c6e808cf123a5b6e4" "checksum http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" "checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" "checksum humantime 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ca7e5f2e110db35f93b837c81797f3714500b81d517bf20c431b16d3ca4f114" "checksum hyper 0.12.33 (registry+https://github.com/rust-lang/crates.io-index)" = "7cb44cbce9d8ee4fb36e4c0ad7b794ac44ebaad924b9c8291a63215bb44c2c8f" "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" -"checksum impl-codec 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "62ed8ff267bc916dd848a800b96d3129aec73d5b23a5e3d018c83655d0c55371" +"checksum impl-codec 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "78c441b3d2b5e24b407161e76d482b7bbd29b5da357707839ac40d95152f031f" "checksum impl-serde 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5158079de9d4158e0ce1de3ae0bd7be03904efc40b3d7dd8b8c301cbf6b52b56" "checksum impl-serde 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7d26be4b97d738552ea423f76c4f681012ff06c3fa36fa968656b3679f60b4a1" "checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" @@ -5231,14 +5438,14 @@ dependencies = [ "checksum ipnet 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e61c2da0d0f700c77d2d313dbf4f93e41d235fa12c6681fee06621036df4c2af" "checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" "checksum js-sys 0.3.25 (registry+https://github.com/rust-lang/crates.io-index)" = "da3ea71161651a4cd97d999b2da139109c537b15ab33abc8ae4ead38deac8a03" -"checksum jsonrpc-client-transports 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6be24a8de4ced80f6fd8b6ace54aa610823a7642976a0e8e00e3bb2f4d8c33f0" -"checksum jsonrpc-core 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0216cf4c95fb373d89c63572672097b8aa74cfcdd77054accbf545d840be5bd7" -"checksum jsonrpc-core-client 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1603b6cc05060de7794c2962edd705e1ad2698bd2b0d2ddd4489f8c85df122b7" -"checksum jsonrpc-derive 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8afff172177878850d133ccdcd93cad794e85d7779ab334998d669ef80e13180" -"checksum jsonrpc-http-server 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a24e140242e0d2e9a694cf8db513a2bd739d24c392e0ad15e0d6d7ee8851e3a2" -"checksum jsonrpc-pubsub 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e3c45f7cdb1bb28a3bfb3a0a5184bf99669c9ffe8cf8d7b8a582f2a52bf9944a" -"checksum jsonrpc-server-utils 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d7aac8e0029d19582b68c9fd498d18bdcf0846612c968acc93b6e5ae67eea4e0" -"checksum jsonrpc-ws-server 12.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "698fee4fcaf09a5927b7e39dd8a8136a102b343cebacaa351fc4def01a050a5b" +"checksum jsonrpc-client-transports 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "903004abf8bfea78499516b80736783ad8d2d2112e3a3dfb389ff2fbb1fa3ab6" +"checksum jsonrpc-core 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b8df63798dccd2fc909485cc7a8979ab79f398a7cf788e552e17537e06f85d8e" +"checksum jsonrpc-core-client 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4f07193b79d586728f14e52832bfd7650b68c8340a71c6088e346cf42161136f" +"checksum jsonrpc-derive 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9dd82265c34ad1be0d87239b24404160f04ae58c3ad335395822a860c8fe8153" +"checksum jsonrpc-http-server 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "99c3f43b5f7d2eb010f56354b0dbfb2427491dadc11d1abaf0c4baa329abc507" +"checksum jsonrpc-pubsub 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e3062b654749ce3a58b765297a4836d2710fc667877c47b5269d5a92afb9a191" +"checksum jsonrpc-server-utils 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d6820ccc63886731f5cca989082f7ed4238e6e124e1143a477bbc9b58e4b4aa" +"checksum jsonrpc-ws-server 12.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "45bf96f95892eac61c15280c07e380a9fd24bef6c5e3e87b7764208b74585e77" "checksum keccak 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum kvdb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=616b40150ded71f57f650067fcbc5c99d7c343e6)" = "<none>" @@ -5281,18 +5488,18 @@ dependencies = [ "checksum lock_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ed946d4529956a20f2d63ebe1b69996d5a2137c91913fe3ebbeff957f5bca7ff" "checksum lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8912e782533a93a167888781b836336a6ca5da6175c05944c86cf28c31104dc" "checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" -"checksum log 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "c275b6ad54070ac2d665eef9197db647b32239c9d244bfb6f041a766d00da5b3" +"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" "checksum lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" "checksum malloc_size_of_derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "35adee9ed962cf7d07d62cb58bc45029f3227f5b5b86246caa8632f06c187bc3" "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" "checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" "checksum memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce6075db033bbbb7ee5a0bbd3a3186bbae616f57fb001c485c7ff77955f8177f" -"checksum memory-db 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "896b24d1a9850e7a25b070d552f311cbb8735214456efa222dcc4c431073c215" +"checksum memory-db 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a688133a81c915553c1dd9c3e859949f43a854cb8f8773e690e849b53b1f89f0" "checksum memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" "checksum memrange 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cc29ba65898edc4fdc252cb31cd3925f37c1a8ba25bb46eec883569984976530" "checksum merlin 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "66448a173ad394ef5ebf734efa724f3644dcffda083b1e89979da4461ddac079" "checksum miniz-sys 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "1e9e3ae51cea1576ceba0dde3d484d30e6e5b86dee0b2d412fe3a16a15c98202" -"checksum miniz_oxide 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c061edee74a88eb35d876ce88b94d77a0448a201de111c244b70d047f5820516" +"checksum miniz_oxide 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fe2959c5a0747a8d7a56b4444c252ffd2dda5d452cfd147cdfdda73b1c3ece5b" "checksum miniz_oxide_c_api 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6c675792957b0d19933816c4e1d56663c341dd9bfa31cb2140ff2267c1d8ecf4" "checksum mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)" = "83f51996a3ed004ef184e16818edc51fadffe8e7ca68be67f9dee67d84d0ff23" "checksum mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "46e73a04c2fa6250b8d802134d56d554a9ec2922bf977777c805ea5def61ce40" @@ -5306,21 +5513,23 @@ dependencies = [ "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" "checksum nohash-hasher 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0d138afcce92d219ccb6eb53d9b1e8a96ac0d633cfd3c53cd9856d96d1741bb8" "checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" +"checksum num-bigint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "57450397855d951f1a41305e54851b1a7b8f5d2e349543a02a2effe25459f718" "checksum num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09" +"checksum num-rational 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f2885278d5fe2adc2f75ced642d52d879bffaceb5a2e0b1d4309ffdfb239b454" "checksum num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" "checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32" "checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" "checksum ole32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2c49021782e5233cd243168edfa8037574afed4eba4bbaf538b3d8d1789d8c" "checksum once_cell 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "532c29a261168a45ce28948f9537ddd7a5dd272cc513b3017b1e82a88f962c37" -"checksum opaque-debug 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "93f5bb2e8e8dec81642920ccff6b61f1eb94fa3020c5a325c9851ff604152409" +"checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" "checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" "checksum parity-bytes 0.1.0 (git+https://github.com/paritytech/parity-common?rev=616b40150ded71f57f650067fcbc5c99d7c343e6)" = "<none>" "checksum parity-bytes 0.1.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)" = "<none>" -"checksum parity-codec 4.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7c1a0e8c54ce49245caa93c1a4e11dc4da1d1e9cc8649ff30e57aa177d4abd55" -"checksum parity-codec-derive 3.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "00a486fd383382ddcb2de928364b1f82571c1e48274fc43b7667a4738ee4056c" "checksum parity-multiaddr 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "045b3c7af871285146300da35b1932bb6e4639b66c7c98e85d06a32cbc4e8fa7" "checksum parity-multihash 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "df3a17dc27848fd99e4f87eb0f8c9baba6ede0a6d555400c850ca45254ef4ce3" +"checksum parity-scale-codec 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "65582b5c02128a4b0fa60fb3e070216e9c84be3e4a8f1b74bc37e15a25e58daf" +"checksum parity-scale-codec-derive 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a81f3cd93ed368a8e41c4e79538e99ca6e8f536096de23e3a0bc3e782093ce28" "checksum parity-send-wrapper 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aa9777aa91b8ad9dd5aaa04a9b6bcb02c7f1deb952fca5a66034d5e63afc5c6f" "checksum parity-util-mem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2005637ccf93dbb60c85081ccaaf3f945f573da48dcc79f27f9646caa3ec1dc" "checksum parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)" = "511379a8194230c2395d2f5fa627a5a7e108a9f976656ce723ae68fca4097bfc" @@ -5340,9 +5549,10 @@ dependencies = [ "checksum peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" "checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" -"checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" +"checksum pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c1d2cfa5a714db3b5f24f0915e74fcdf91d09d496ba61329705dda7774d2af" +"checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" "checksum pretty_assertions 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3a029430f0d744bc3d15dd474d591bed2402b645d024583082b9f63bb936dac6" -"checksum primitive-types 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "366ef730e56c11fd21ab3e518866cf7feb0fdf7f7c16ddc68485579e9d802787" +"checksum primitive-types 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e44400d651ca5276415dc8e00541c5c9d03844f1f0a87ad28f0a8fadcb2300bc" "checksum proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e10d4b51f154c8a7fb96fd6dad097cb74b863943ec010ac94b9fd1be8861fe1e" "checksum proc-macro-hack 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)" = "982a35d1194084ba319d65c4a68d24ca28f5fdb5b8bc20899e4eef8641ea5178" "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" @@ -5354,10 +5564,14 @@ dependencies = [ "checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" "checksum rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9" "checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" +"checksum rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d47eab0e83d9693d40f825f86948aa16eff6750ead4bdffc4ab95b8b3a7f052c" "checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" +"checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" "checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -"checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0" +"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" +"checksum rand_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "615e683324e75af5d43d8f7a39ffe3ee4a9dc42c5c701167a71dc59c3a493aca" "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" +"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" "checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" "checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" @@ -5368,8 +5582,8 @@ dependencies = [ "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" "checksum reed-solomon-erasure 4.0.0 (git+https://github.com/paritytech/reed-solomon-erasure)" = "<none>" -"checksum regex 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6b23da8dfd98a84bd7e08700190a5d9f7d2d38abd4369dd1dae651bc40bfd2cc" -"checksum regex-syntax 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "cd5485bf1523a9ed51c4964273f22f63f24e31632adb5dad134f488f86a3875c" +"checksum regex 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88c3d9193984285d544df4a30c23a4e62ead42edf70a4452ceb76dac1ce05c26" +"checksum regex-syntax 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b143cceb2ca5e56d5671988ef8b15615733e7ee16cd348e064333b251b89343f" "checksum ring 0.14.6 (registry+https://github.com/rust-lang/crates.io-index)" = "426bc186e3e95cac1e4a4be125a4aca7e84c2d616ffc02244eef36e2a60a093c" "checksum rocksdb 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "39be726e556e6f21d54d21cdf1be9f6df30c0411a5856c1abf3f4bb12498f2ed" "checksum rocksdb 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f1651697fefd273bfb4fd69466cc2a9d20de557a0213b97233b22b5e95924b5e" @@ -5382,15 +5596,15 @@ dependencies = [ "checksum rw-stream-sink 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9cbe61c20455d3015b2bb7be39e1872310283b8e5a52f5b242b0ac7581fe78" "checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997" "checksum safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7f7bf422d23a88c16d5090d455f182bc99c60af4df6a345c63428acf5129e347" -"checksum schnorrkel 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b5eff518f9bed3d803a0d002af0ab96339b0ebbedde3bec98a684986134b7a39" +"checksum schnorrkel 0.8.4 (registry+https://github.com/rust-lang/crates.io-index)" = "77e8d6a92f49a53f21b71c090a5559bf45c469071ebe556aebaf2dca3abc5cb5" "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" "checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" "checksum sct 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2f5adf8fbd58e1b1b52699dc8bed2630faecb6d8c7bee77d009d6bbe4af569b9" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" "checksum send_wrapper 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a0eddf2e8f50ced781f288c19f18621fa72a3779e3cb58dbf23b07469b0abeb4" -"checksum serde 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)" = "d46b3dfedb19360a74316866cef04687cd4d6a70df8e6a506c63512790769b72" -"checksum serde_derive 1.0.97 (registry+https://github.com/rust-lang/crates.io-index)" = "c22a0820adfe2f257b098714323563dd06426502abbbce4f51b72ef544c5027f" +"checksum serde 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)" = "7fe5626ac617da2f2d9c48af5515a21d5a480dbd151e01bb1c355e26a3e68113" +"checksum serde_derive 1.0.98 (registry+https://github.com/rust-lang/crates.io-index)" = "01e69e1b8a631f245467ee275b8c757b818653c6d704cdbcaeb56b56767b529c" "checksum serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704" "checksum sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68" "checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" @@ -5401,6 +5615,7 @@ dependencies = [ "checksum shell32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9ee04b46101f57121c9da2b151988283b6beb79b34f5bb29a58ee48cb695122c" "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1cc9c640a4adbfbcc11ffb95efe5aa7af7309e002adab54b185507dbf2377b99" +"checksum slog-async 2.3.0 (git+https://github.com/paritytech/slog-async)" = "<none>" "checksum slog-json 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddc0d2aff1f8f325ef660d9a0eb6e6dcd20b30b3f581a5897f58bf42d061c37a" "checksum slog-scope 4.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d1d3ec6214d46e57a7ec87c1972bbca66c59172a0cfffa5233c54726afb946bf" "checksum slog_derive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9eff3b513cf2e0d1a60e1aba152dc72bedc5b05585722bb3cebd7bcb1e31b98f" @@ -5408,14 +5623,14 @@ dependencies = [ "checksum snow 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5a64f02fd208ef15bd2d1a65861df4707e416151e1272d02c8faafad1c138100" "checksum soketto 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "db2383e992ba8ba8205cd1169cac2efdf325d3a0da465dc35f63a2074598347e" "checksum sourcefile 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4bf77cb82ba8453b42b6ae1d692e4cdc92f9a47beaf89a847c8be83f4e328ad3" -"checksum spin 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44363f6f51401c34e7be73db0db371c04705d35efbe9f7d6082e03a921a32c55" +"checksum spin 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbdb51a221842709c2dd65b62ad4b78289fc3e706a02c17a26104528b6aa7837" "checksum sr-api-macros 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum sr-io 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum sr-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum sr-std 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum sr-version 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" -"checksum srml-aura 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum srml-authorship 0.1.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" +"checksum srml-babe 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum srml-balances 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum srml-collective 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum srml-democracy 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" @@ -5423,7 +5638,9 @@ dependencies = [ "checksum srml-executive 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum srml-finality-tracker 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum srml-grandpa 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" +"checksum srml-im-online 0.1.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum srml-indices 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" +"checksum srml-membership 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum srml-metadata 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum srml-session 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum srml-staking 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" @@ -5443,16 +5660,18 @@ dependencies = [ "checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" "checksum structopt 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "16c2cdbf9cc375f15d1b4141bc48aeef444806655cd0e904207edc8d68d86ed7" "checksum structopt-derive 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "53010261a84b37689f9ed7d395165029f9cc7abb9f56bbfe86bee2597ed25107" -"checksum strum 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1810e25f576e7ffce1ff5243b37066da5ded0310b3274c20baaeccb1145b2806" -"checksum strum_macros 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "572a2f4e53dd4c3483fd79e5cc10ddd773a3acb1169bbfe8762365e107110579" -"checksum substrate-bip39 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d69ace596e9ca97837cc41f8edcfc4e0a997f227d5fc153d1010b60a0fe9acda" +"checksum strum 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e5d1c33039533f051704951680f1adfd468fd37ac46816ded0d9ee068e60f05f" +"checksum strum_macros 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "47cd23f5c7dee395a00fa20135e2ec0fffcdfa151c56182966d7a3261343432e" +"checksum substrate-application-crypto 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" +"checksum substrate-bip39 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3be511be555a3633e71739a79e4ddff6a6aaa6579fa6114182a51d72c3eb93c5" "checksum substrate-cli 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum substrate-client 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum substrate-client-db 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" -"checksum substrate-consensus-aura 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" -"checksum substrate-consensus-aura-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" +"checksum substrate-consensus-babe 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" +"checksum substrate-consensus-babe-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum substrate-consensus-common 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum substrate-consensus-slots 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" +"checksum substrate-consensus-uncles 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum substrate-executor 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum substrate-finality-grandpa 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum substrate-finality-grandpa-primitives 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" @@ -5469,6 +5688,7 @@ dependencies = [ "checksum substrate-rpc-servers 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum substrate-serializer 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum substrate-service 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" +"checksum substrate-session 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum substrate-state-db 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum substrate-state-machine 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum substrate-telemetry 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" @@ -5477,10 +5697,11 @@ dependencies = [ "checksum substrate-trie 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)" = "<none>" "checksum substrate-wasm-builder-runner 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f52ecbff6cc3d6e5c6401828e15937b680f459d6803ce238f01fe615bc40d071" "checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" -"checksum subtle 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "01dca13cf6c3b179864ab3292bd794e757618d35a7766b7c46050c614ba00829" -"checksum syn 0.15.42 (registry+https://github.com/rust-lang/crates.io-index)" = "eadc09306ca51a40555dd6fc2b415538e9e18bc9f870e47b1a524a79fe2dcf5e" +"checksum subtle 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "01f40907d9ffc762709e4ff3eb4a6f6b41b650375a3f09ac92b641942b7fb082" +"checksum syn 0.15.43 (registry+https://github.com/rust-lang/crates.io-index)" = "ee06ea4b620ab59a2267c6b48be16244a3389f8bfa0986bdd15c35b890b00af3" "checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f" -"checksum sysinfo 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c3e2cab189e59f72710e3dd5e1e0d5be0f6c5c999c326f2fdcdf3bf4483ec9fd" +"checksum sysinfo 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ee7d12b854e48e680bf4b10856a7867e843845158fa8226e6c2f6cc38539cb01" +"checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" "checksum target_info 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c63f48baada5c52e65a29eef93ab4f8982681b67f9e8d29c7b05abcfec2b9ffe" "checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" "checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6" @@ -5499,7 +5720,7 @@ dependencies = [ "checksum tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe6dc22b08d6993916647d108a1a7d15b9cd29c4f4496c62b92c45b5041b7af" "checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" "checksum tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6af16bfac7e112bea8b0442542161bfc41cbfa4466b580bdda7d18cb88b911ce" -"checksum tokio-rustls 0.10.0-alpha.3 (registry+https://github.com/rust-lang/crates.io-index)" = "316fdbc899efec48b3b492bd0f339e6d81c4ee96a409257572147ec341943452" +"checksum tokio-rustls 0.10.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3e5cebc3ca33110e460c4d2e7c5e863b159fadcbf125449d896720695b2af709" "checksum tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2162248ff317e2bc713b261f242b69dbb838b85248ed20bb21df56d60ea4cae7" "checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" "checksum tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "90ca01319dea1e376a001e8dc192d42ebde6dd532532a5bad988ac37db365b19" @@ -5507,14 +5728,13 @@ dependencies = [ "checksum tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "66268575b80f4a4a710ef83d087fdfeeabdce9b74c797535fbac18a2cb906e92" "checksum tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445" "checksum toml 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b8c96d7873fa7ef8bdeb3a9cda3ac48389b4154f32b9803b4bc26220b677b039" -"checksum trie-db 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1803d8ff63ec3743bee883aacf3df74c524ffab188d9abebe18ded4da0dcd5d4" -"checksum trie-root 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "226f4b2e7bc6a71172ffe7f137385cf63833de7c684059dde7520ddbf1fb04f4" +"checksum trie-db 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b65d609ae631d808c6c1cc23a622733d5a0b66a7d67e9f5cd5171562a1f4cb5" +"checksum trie-root 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c31b0eaa64e50d686c89e6d4817ed33cb18cfa249e9071b7918b18ecfacc7867" "checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" "checksum twofish 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712d261e83e727c8e2dbb75dacac67c36e35db36a958ee504f2164fc052434e1" -"checksum twox-hash 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e7834480552ffc48e1930ceddd701f47d2234319d80b7bcbbe2fe7202933c101" +"checksum twox-hash 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3bfd5b7557925ce778ff9b9ef90e3ade34c524b5ff10e239c69a42d546d2af56" "checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" -"checksum ucd-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa9b3b49edd3468c0e6565d85783f51af95212b6fa3986a5500954f00b460874" -"checksum uint 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f5375d2c574f89adad4108ad525c93e39669853a602560bf5ed4ca9943b10799" +"checksum uint 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8f0f47ed099f0db671ce82c66548c5de012e3c0cba3963514d1db15c7588701" "checksum unicase 2.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a84e5511b2a947f3ae965dcb29b13b7b1691b6e7332cf5dbc1744138d5acb7f6" "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" "checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426" @@ -5524,7 +5744,6 @@ dependencies = [ "checksum unsigned-varint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2c64cdf40b4a9645534a943668681bcb219faf51874d4b65d2e0abda1b10a2ab" "checksum untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "55cd1f4b4e96b46aeb8d4855db4a7a9bd96eeeb5c6a1ab54593328761642ce2f" "checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" -"checksum utf8-ranges 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9d50aa7650df78abf942826607c62468ce18d9019673d4a2ebe1865dbb96ffde" "checksum vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "33dd455d0f96e90a75803cfeb7f948768c08d70a6de9a8d2362461935698bf95" "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" "checksum vergen 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6aba5e34f93dc7051dfad05b98a18e9156f27e7b431fe1d2398cb6061c0a1dba" @@ -5540,6 +5759,7 @@ dependencies = [ "checksum wasm-bindgen-webidl 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)" = "24e47859b4eba3d3b9a5c2c299f9d6f8d0b613671315f6f0c5c7f835e524b36a" "checksum wasm-timer 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3d6101df9a5987df809216bdda7289f52b58128e6b6a6546e9ee3e6b632b4921" "checksum wasmi 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "aebbaef470840d157a5c47c8c49f024da7b1b80e90ff729ca982b2b80447e78b" +"checksum wasmi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "48437c526d40a6a593c50c5367dac825b8d6a04411013e866eca66123fb56faa" "checksum wasmi-validation 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ab380192444b3e8522ae79c0a1976e42a82920916ccdfbce3def89f456ea33f3" "checksum web-sys 0.3.25 (registry+https://github.com/rust-lang/crates.io-index)" = "86d515d2f713d3a6ab198031d2181b7540f8e319e4637ec2d4a41a208335ef29" "checksum webpki 0.19.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4f7e1cd7900a3a6b65a3e8780c51a3e6b59c0e2c55c6dc69578c288d69f7d082" @@ -5558,5 +5778,5 @@ dependencies = [ "checksum x25519-dalek 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7ee1585dc1484373cbc1cee7aafda26634665cf449436fd6e24bfd1fad230538" "checksum xdg 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d089681aa106a86fade1b0128fb5daf07d5867a509ab036d99988dec80429a57" "checksum yamux 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "01bd67889938c48f0049fc60a77341039e6c3eaf16cb7693e6ead7c0ba701295" -"checksum zeroize 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4177936c03b5a349c1b8e4509c46add268e66bc66fe92663729fa0570fe4f213" -"checksum zeroize_derive 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "afd1469e4bbca3b96606d26ba6e9bd6d3aed3b1299c82b92ec94377d22d78dbc" +"checksum zeroize 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "45af6a010d13e4cf5b54c94ba5a2b2eba5596b9e46bf5875612d332a1f2b3f86" +"checksum zeroize_derive 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "080616bd0e31f36095288bb0acdf1f78ef02c2fa15527d7e993f2a6c7591643e" diff --git a/polkadot/availability-store/Cargo.toml b/polkadot/availability-store/Cargo.toml index fe69a0acf92..e6acf380e61 100644 --- a/polkadot/availability-store/Cargo.toml +++ b/polkadot/availability-store/Cargo.toml @@ -9,7 +9,7 @@ edition = "2018" polkadot-primitives = { path = "../primitives" } parking_lot = "0.9.0" log = "0.4.6" -parity-codec = "4.1" +codec = { package = "parity-scale-codec", version = "~1.0.0", default-features = false, features = ["derive"] } substrate-primitives = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } kvdb = { git = "https://github.com/paritytech/parity-common", rev="616b40150ded71f57f650067fcbc5c99d7c343e6" } kvdb-rocksdb = { git = "https://github.com/paritytech/parity-common", rev="616b40150ded71f57f650067fcbc5c99d7c343e6" } diff --git a/polkadot/availability-store/src/lib.rs b/polkadot/availability-store/src/lib.rs index 8ddce7578df..831a095be4d 100644 --- a/polkadot/availability-store/src/lib.rs +++ b/polkadot/availability-store/src/lib.rs @@ -16,7 +16,7 @@ //! Persistent database for parachain data. -use parity_codec::{Encode, Decode}; +use codec::{Encode, Decode}; use kvdb::{KeyValueDB, DBTransaction}; use kvdb_rocksdb::{Database, DatabaseConfig}; use polkadot_primitives::Hash; diff --git a/polkadot/cli/src/chain_spec.rs b/polkadot/cli/src/chain_spec.rs index 4a4b5685896..8afb7daa26a 100644 --- a/polkadot/cli/src/chain_spec.rs +++ b/polkadot/cli/src/chain_spec.rs @@ -26,15 +26,15 @@ pub enum ChainSpec { Development, /// Whatever the current runtime is, with simple Alice/Bob auths. LocalTestnet, - /// The PoC-3 era testnet. - Alexander, + /// The Kusama network. + Kusama, /// Whatever the current runtime is with the "global testnet" defaults. StagingTestnet, } impl Default for ChainSpec { fn default() -> Self { - ChainSpec::Alexander + ChainSpec::Kusama } } @@ -42,7 +42,7 @@ impl Default for ChainSpec { impl ChainSpec { pub(crate) fn load(self) -> Result<service::ChainSpec, String> { Ok(match self { - ChainSpec::Alexander => service::chain_spec::poc_3_testnet_config()?, + ChainSpec::Kusama => service::chain_spec::kusama_config()?, ChainSpec::Development => service::chain_spec::development_config(), ChainSpec::LocalTestnet => service::chain_spec::local_testnet_config(), ChainSpec::StagingTestnet => service::chain_spec::staging_testnet_config(), @@ -53,7 +53,7 @@ impl ChainSpec { match s { "dev" => Some(ChainSpec::Development), "local" => Some(ChainSpec::LocalTestnet), - "poc-3" | "alex" | "alexander" => Some(ChainSpec::Alexander), + "kusama" => Some(ChainSpec::Kusama), "staging" => Some(ChainSpec::StagingTestnet), "" => Some(ChainSpec::default()), _ => None, diff --git a/polkadot/collator/Cargo.toml b/polkadot/collator/Cargo.toml index 9503c617703..db1c2b06b37 100644 --- a/polkadot/collator/Cargo.toml +++ b/polkadot/collator/Cargo.toml @@ -9,11 +9,9 @@ edition = "2018" futures = "0.1.17" futures03 = { package = "futures-preview", version = "0.3.0-alpha.17", features = ["compat"] } client = { package = "substrate-client", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } -parity-codec = "4.1" primitives = { package = "substrate-primitives", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } substrate-network = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } consensus_common = { package = "substrate-consensus-common", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } -aura = { package = "substrate-consensus-aura", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } polkadot-runtime = { path = "../runtime", version = "0.1" } polkadot-primitives = { path = "../primitives", version = "0.1" } polkadot-cli = { path = "../cli" } diff --git a/polkadot/collator/src/lib.rs b/polkadot/collator/src/lib.rs index 13d8cb7274f..9aad4c0c03a 100644 --- a/polkadot/collator/src/lib.rs +++ b/polkadot/collator/src/lib.rs @@ -53,12 +53,12 @@ use futures::{future, Stream, Future, IntoFuture}; use futures03::{TryStreamExt as _, StreamExt as _}; use log::{info, warn}; use client::BlockchainEvents; -use primitives::{ed25519, Pair}; +use primitives::Pair; use polkadot_primitives::{ - BlockId, SessionKey, Hash, Block, + BlockId, Hash, Block, parachain::{ self, BlockData, DutyRoster, HeadData, ConsolidatedIngress, Message, Id as ParaId, Extrinsic, - PoVBlock, Status as ParachainStatus, + PoVBlock, Status as ParachainStatus, ValidatorId, CollatorPair, } }; use polkadot_cli::{ @@ -69,7 +69,6 @@ use polkadot_network::validation::{SessionParams, ValidationNetwork}; use polkadot_network::NetworkService; use tokio::timer::Timeout; use consensus_common::SelectChain; -use aura::AuraApi; pub use polkadot_cli::VersionInfo; pub use polkadot_network::validation::Incoming; @@ -177,7 +176,7 @@ pub fn collate<'a, R, P>( parachain_status: ParachainStatus, relay_context: R, para_context: P, - key: Arc<ed25519::Pair>, + key: Arc<CollatorPair>, ) -> impl Future<Item=parachain::Collation, Error=Error<R::Error>> + 'a where @@ -230,7 +229,7 @@ pub fn collate<'a, R, P>( struct ApiContext<P, E> { network: Arc<ValidationNetwork<P, E, NetworkService, TaskExecutor>>, parent_hash: Hash, - authorities: Vec<SessionKey>, + validators: Vec<ValidatorId>, } impl<P: 'static, E: 'static> RelayChainContext for ApiContext<P, E> where @@ -248,7 +247,7 @@ impl<P: 'static, E: 'static> RelayChainContext for ApiContext<P, E> where let _session = self.network.instantiate_session(SessionParams { local_session_key: None, parent_hash: self.parent_hash, - authorities: self.authorities.clone(), + authorities: self.validators.clone(), }).map_err(|e| format!("unable to instantiate validation session: {:?}", e)); Box::new(future::ok(ConsolidatedIngress(Vec::new()))) @@ -259,7 +258,7 @@ struct CollationNode<P, E> { build_parachain_context: P, exit: E, para_id: ParaId, - key: Arc<ed25519::Pair>, + key: Arc<CollatorPair>, } impl<P, E> IntoExit for CollationNode<P, E> where @@ -364,18 +363,18 @@ impl<P, E> Worker for CollationNode<P, E> where None => return future::Either::A(future::ok(())), }; - let authorities = try_fr!(api.authorities(&id)); + let validators = try_fr!(api.validators(&id)); let targets = compute_targets( para_id, - authorities.as_slice(), + validators.as_slice(), try_fr!(api.duty_roster(&id)), ); let context = ApiContext { network: validation_network, parent_hash: relay_parent, - authorities, + validators, }; let collation_work = collate( @@ -414,7 +413,7 @@ impl<P, E> Worker for CollationNode<P, E> where } } -fn compute_targets(para_id: ParaId, session_keys: &[SessionKey], roster: DutyRoster) -> HashSet<SessionKey> { +fn compute_targets(para_id: ParaId, session_keys: &[ValidatorId], roster: DutyRoster) -> HashSet<ValidatorId> { use polkadot_primitives::parachain::Chain; roster.validator_duty.iter().enumerate() @@ -433,7 +432,7 @@ pub fn run_collator<P, E>( build_parachain_context: P, para_id: ParaId, exit: E, - key: Arc<ed25519::Pair>, + key: Arc<CollatorPair>, version: VersionInfo, ) -> polkadot_cli::error::Result<()> where P: BuildParachainContext + Send + 'static, @@ -450,7 +449,7 @@ pub fn run_collator<P, E>( mod tests { use std::collections::HashMap; use polkadot_primitives::parachain::{OutgoingMessage, FeeSchedule}; - use keyring::Ed25519Keyring; + use keyring::Sr25519Keyring; use super::*; #[derive(Default, Clone)] @@ -540,7 +539,7 @@ mod tests { }, context.clone(), DummyParachainContext, - Ed25519Keyring::Alice.pair().into(), + Arc::new(Sr25519Keyring::Alice.pair().into()), ).wait().unwrap(); // ascending order by root. diff --git a/polkadot/erasure-coding/Cargo.toml b/polkadot/erasure-coding/Cargo.toml index 82817bf7c12..37a20ecdc96 100644 --- a/polkadot/erasure-coding/Cargo.toml +++ b/polkadot/erasure-coding/Cargo.toml @@ -7,6 +7,6 @@ edition = "2018" [dependencies] primitives = { package = "polkadot-primitives", path = "../primitives" } reed_solomon = { package = "reed-solomon-erasure", git = "https://github.com/paritytech/reed-solomon-erasure" } -parity-codec = "4.1" +codec = { package = "parity-scale-codec", version = "~1.0.0", default-features = false, features = ["derive"] } substrate-primitives = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } trie = { package = "substrate-trie", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } diff --git a/polkadot/erasure-coding/src/lib.rs b/polkadot/erasure-coding/src/lib.rs index 2189a65c415..6460c45794e 100644 --- a/polkadot/erasure-coding/src/lib.rs +++ b/polkadot/erasure-coding/src/lib.rs @@ -24,12 +24,12 @@ //! f is the maximum number of faulty validators in the system. //! The data is coded so any f+1 chunks can be used to reconstruct the full data. -use parity_codec::{Encode, Decode}; +use codec::{Encode, Decode}; use reed_solomon::galois_16::{self, ReedSolomon}; use primitives::{Hash as H256, BlakeTwo256, HashT}; use primitives::parachain::{BlockData, Extrinsic}; use substrate_primitives::Blake2Hasher; -use trie::{MemoryDB, Trie, TrieMut, TrieDB, TrieDBMut}; +use trie::{EMPTY_PREFIX, MemoryDB, Trie, TrieMut, trie_types::{TrieDBMut, TrieDB}}; use self::wrapped_shard::WrappedShard; @@ -187,13 +187,14 @@ pub fn reconstruct<'a, I: 'a>(n_validators: usize, chunks: I) // lazily decode from the data shards. Decode::decode(&mut ShardInput { + remaining_len: shard_len.map(|s| s * params.data_shards).unwrap_or(0), cur_shard: None, shards: shards.iter() .map(|x| x.as_ref()) .take(params.data_shards) .map(|x| x.expect("all data shards have been recovered; qed")) .map(|x| x.as_ref()), - }).ok_or_else(|| Error::BadPayload) + }).or_else(|_| Err(Error::BadPayload)) } /// An iterator that yields merkle branches and chunk data for all chunks to @@ -269,7 +270,7 @@ pub fn branches<'a>(chunks: Vec<&'a [u8]>) -> Branches<'a> { pub fn branch_hash(root: &H256, branch_nodes: &[Vec<u8>], index: usize) -> Result<H256, Error> { let mut trie_storage: MemoryDB<Blake2Hasher> = MemoryDB::default(); for node in branch_nodes.iter() { - (&mut trie_storage as &mut trie::HashDB<_>).insert(&[], node.as_slice()); + (&mut trie_storage as &mut trie::HashDB<_>).insert(EMPTY_PREFIX, node.as_slice()); } let trie = TrieDB::new(&trie_storage, &root).map_err(|_| Error::InvalidBranchProof)?; @@ -278,21 +279,26 @@ pub fn branch_hash(root: &H256, branch_nodes: &[Vec<u8>], index: usize) -> Resul ); match res { - Ok(Some(Some(hash))) => Ok(hash), - Ok(Some(None)) => Err(Error::InvalidBranchProof), // hash failed to decode + Ok(Some(Ok(hash))) => Ok(hash), + Ok(Some(Err(_))) => Err(Error::InvalidBranchProof), // hash failed to decode Ok(None) => Err(Error::BranchOutOfBounds), Err(_) => Err(Error::InvalidBranchProof), } } -// input for `parity_codec` which draws data from the data shards +// input for `codec` which draws data from the data shards struct ShardInput<'a, I> { + remaining_len: usize, shards: I, cur_shard: Option<(&'a [u8], usize)>, } -impl<'a, I: Iterator<Item=&'a [u8]>> parity_codec::Input for ShardInput<'a, I> { - fn read(&mut self, into: &mut [u8]) -> usize { +impl<'a, I: Iterator<Item=&'a [u8]>> codec::Input for ShardInput<'a, I> { + fn remaining_len(&mut self) -> Result<Option<usize>, codec::Error> { + Ok(Some(self.remaining_len)) + } + + fn read(&mut self, into: &mut [u8]) -> Result<(), codec::Error> { let mut read_bytes = 0; loop { @@ -320,7 +326,12 @@ impl<'a, I: Iterator<Item=&'a [u8]>> parity_codec::Input for ShardInput<'a, I> { self.cur_shard = Some((active_shard, in_shard)) } - read_bytes + self.remaining_len -= read_bytes; + if read_bytes == into.len() { + Ok(()) + } else { + Err("slice provided too big for input".into()) + } } } diff --git a/polkadot/network/Cargo.toml b/polkadot/network/Cargo.toml index 88b427ef6c1..c5db2b40ba4 100644 --- a/polkadot/network/Cargo.toml +++ b/polkadot/network/Cargo.toml @@ -11,7 +11,7 @@ parking_lot = "0.9.0" av_store = { package = "polkadot-availability-store", path = "../availability-store" } polkadot-validation = { path = "../validation" } polkadot-primitives = { path = "../primitives" } -parity-codec = { version = "4.1", features = ["derive"] } +codec = { package = "parity-scale-codec", version = "~1.0.0", default-features = false, features = ["derive"] } substrate-network = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } substrate-primitives = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } sr-primitives = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } diff --git a/polkadot/network/src/collator_pool.rs b/polkadot/network/src/collator_pool.rs index 9a41d3066af..76d38218e95 100644 --- a/polkadot/network/src/collator_pool.rs +++ b/polkadot/network/src/collator_pool.rs @@ -16,7 +16,7 @@ //! Bridge between the network and consensus service for getting collations to it. -use parity_codec::{Encode, Decode}; +use codec::{Encode, Decode}; use polkadot_primitives::Hash; use polkadot_primitives::parachain::{CollatorId, Id as ParaId, Collation}; use substrate_network::PeerId; diff --git a/polkadot/network/src/gossip.rs b/polkadot/network/src/gossip.rs index af987f12dd8..38a535d4280 100644 --- a/polkadot/network/src/gossip.rs +++ b/polkadot/network/src/gossip.rs @@ -22,8 +22,8 @@ use substrate_network::consensus_gossip::{ ValidatorContext, MessageIntent, ConsensusMessage, }; use polkadot_validation::{GenericStatement, SignedStatement}; -use polkadot_primitives::{Block, Hash, SessionKey, parachain::ValidatorIndex}; -use parity_codec::{Decode, Encode}; +use polkadot_primitives::{Block, Hash, parachain::{ValidatorIndex, ValidatorId}}; +use codec::{Decode, Encode}; use std::collections::{HashMap, HashSet}; use std::sync::Arc; @@ -218,9 +218,9 @@ impl RegisteredMessageValidator { #[derive(Default)] pub(crate) struct MessageValidationData { /// The authorities at a block. - pub(crate) authorities: Vec<SessionKey>, - /// Mapping from validator index to `SessionKey`. - pub(crate) index_mapping: HashMap<ValidatorIndex, SessionKey>, + pub(crate) authorities: Vec<ValidatorId>, + /// Mapping from validator index to `ValidatorId`. + pub(crate) index_mapping: HashMap<ValidatorIndex, ValidatorId>, } impl MessageValidationData { @@ -481,15 +481,15 @@ impl<O: KnownOracle + ?Sized> network_gossip::Validator<Block> for MessageValida -> GossipValidationResult<Hash> { let (res, cost_benefit) = match GossipMessage::decode(&mut data) { - None => (GossipValidationResult::Discard, cost::MALFORMED_MESSAGE), - Some(GossipMessage::Neighbor(VersionedNeighborPacket::V1(packet))) => { + Err(_) => (GossipValidationResult::Discard, cost::MALFORMED_MESSAGE), + Ok(GossipMessage::Neighbor(VersionedNeighborPacket::V1(packet))) => { let (res, cb, topics) = self.inner.write().validate_neighbor_packet(sender, packet); for new_topic in topics { context.send_topic(sender, new_topic, false); } (res, cb) } - Some(GossipMessage::Statement(statement)) => { + Ok(GossipMessage::Statement(statement)) => { let (res, cb) = self.inner.write().validate_statement(statement); if let GossipValidationResult::ProcessAndKeep(ref topic) = res { context.broadcast_message(topic.clone(), data.to_vec(), false); @@ -535,7 +535,7 @@ impl<O: KnownOracle + ?Sized> network_gossip::Validator<Block> for MessageValida }; match GossipMessage::decode(&mut &data[..]) { - Some(GossipMessage::Statement(statement)) => { + Ok(GossipMessage::Statement(statement)) => { let signed = statement.signed_statement; match signed.statement { @@ -573,7 +573,7 @@ mod tests { use parking_lot::Mutex; use polkadot_primitives::parachain::{CandidateReceipt, HeadData}; use substrate_primitives::crypto::UncheckedInto; - use substrate_primitives::ed25519::Signature as Ed25519Signature; + use substrate_primitives::sr25519::Signature as Sr25519Signature; #[derive(PartialEq, Clone, Debug)] enum ContextEvent { @@ -669,7 +669,7 @@ mod tests { relay_parent: hash_a, signed_statement: SignedStatement { statement: GenericStatement::Candidate(candidate_receipt), - signature: Ed25519Signature([255u8; 64]), + signature: Sr25519Signature([255u8; 64]).into(), sender: 1, } }); @@ -786,7 +786,7 @@ mod tests { relay_parent: hash_a, signed_statement: SignedStatement { statement: GenericStatement::Valid(c_hash), - signature: Ed25519Signature([255u8; 64]), + signature: Sr25519Signature([255u8; 64]).into(), sender: 1, } }); diff --git a/polkadot/network/src/gossip/message_routing.rs b/polkadot/network/src/gossip/message_routing.rs deleted file mode 100644 index 38c72f2b5a7..00000000000 --- a/polkadot/network/src/gossip/message_routing.rs +++ /dev/null @@ -1,265 +0,0 @@ -// Copyright 2019 Parity Technologies (UK) Ltd. -// This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see <http://www.gnu.org/licenses/>. - -//! Data structures and synchronous logic for ICMP message gossip. - -use sr_primitives::traits::{BlakeTwo256, Hash as HashT}; -use polkadot_primitives::Hash; -use std::collections::{HashMap, HashSet}; -use substrate_client::error::Error as ClientError; -use super::{MAX_CHAIN_HEADS, GossipValidationResult, LeavesVec, ChainContext}; - -/// Construct a topic for a message queue root deterministically. -pub fn queue_topic(queue_root: Hash) -> Hash { - let mut v = queue_root.as_ref().to_vec(); - v.extend(b"message_queue"); - - BlakeTwo256::hash(&v[..]) -} - -/// A view of which queue roots are current for a given set of leaves. -#[derive(Default)] -pub struct View { - leaves: LeavesVec, - leaf_topics: HashMap<Hash, HashSet<Hash>>, // leaf_hash -> { topics } - expected_queues: HashMap<Hash, Hash>, // topic -> queue-root -} - -impl View { - /// Update the set of current leaves. - pub fn update_leaves<T: ChainContext + ?Sized, I>(&mut self, context: &T, new_leaves: I) - -> Result<(), ClientError> - where I: Iterator<Item=Hash> - { - let new_leaves = new_leaves.take(MAX_CHAIN_HEADS); - let old_leaves = { - let mut new = LeavesVec::new(); - for leaf in new_leaves { - new.push(leaf.clone()); - } - - std::mem::replace(&mut self.leaves, new) - }; - - let expected_queues = &mut self.expected_queues; - let leaves = &self.leaves; - self.leaf_topics.retain(|l, topics| { - if leaves.contains(l) { return true } - - // prune out all data about old leaves we don't follow anymore. - for topic in topics.iter() { - expected_queues.remove(topic); - } - false - }); - - let mut res = Ok(()); - - // add in new data about fresh leaves. - for new_leaf in &self.leaves { - if old_leaves.contains(new_leaf) { continue } - - let mut this_leaf_topics = HashSet::new(); - - let r = context.leaf_unrouted_roots(new_leaf, &mut |&queue_root| { - let topic = queue_topic(queue_root); - this_leaf_topics.insert(topic); - expected_queues.insert(topic, queue_root); - }); - - if r.is_err() { - res = r; - } - - self.leaf_topics.insert(*new_leaf, this_leaf_topics); - } - - res - } - - /// Validate an incoming message queue against this view. - pub fn validate_queue(&self, messages: &super::GossipParachainMessages) - -> (GossipValidationResult<Hash>, i32) - { - let ostensible_topic = queue_topic(messages.queue_root); - if !self.is_topic_live(&ostensible_topic) { - (GossipValidationResult::Discard, super::cost::UNNEEDED_ICMP_MESSAGES) - } else if !messages.queue_root_is_correct() { - ( - GossipValidationResult::Discard, - super::cost::icmp_messages_root_mismatch(messages.messages.len()), - ) - } else { - ( - GossipValidationResult::ProcessAndKeep(ostensible_topic), - super::benefit::NEW_ICMP_MESSAGES, - ) - } - } - - /// Whether a message with given topic is live. - pub fn is_topic_live(&self, topic: &Hash) -> bool { - self.expected_queues.get(topic).is_some() - } - - /// Whether a message is allowed under the intersection of the given leaf-set - /// and our own. - pub fn allowed_intersecting(&self, other_leaves: &LeavesVec, topic: &Hash) -> bool { - for i in other_leaves { - for j in &self.leaves { - if i == j { - let leaf_topics = self.leaf_topics.get(i) - .expect("leaf_topics are mutated only in update_leaves; \ - we have an entry for each item in self.leaves; \ - i is in self.leaves; qed"); - - if leaf_topics.contains(topic) { - return true; - } - } - } - } - - false - } -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::tests::TestChainContext; - use crate::gossip::{Known, GossipParachainMessages}; - use polkadot_primitives::parachain::Message as ParachainMessage; - - fn hash(x: u8) -> Hash { - [x; 32].into() - } - - fn message_queue(from: u8, to: u8) -> Option<[[u8; 2]; 1]> { - if from == to { - None - } else { - Some([[from, to]]) - } - } - - fn message_queue_root(from: u8, to: u8) -> Option<Hash> { - message_queue(from, to).map( - |q| polkadot_validation::message_queue_root(q.iter()) - ) - } - - fn check_roots(view: &View, i: u8, max: u8) -> bool { - for j in 0..max { - if let Some(messages) = message_queue(i, j) { - let queue_root = message_queue_root(i, j).unwrap(); - let messages = GossipParachainMessages { - queue_root, - messages: messages.iter().map(|m| ParachainMessage(m.to_vec())).collect(), - }; - - match view.validate_queue(&messages).0 { - GossipValidationResult::ProcessAndKeep(topic) => if topic != queue_topic(queue_root) { - return false - }, - _ => return false, - } - } - } - - true - } - - #[test] - fn update_leaves_none_in_common() { - let mut ctx = TestChainContext::default(); - let max = 5; - - for i in 0..max { - ctx.known_map.insert(hash(i as u8), Known::Leaf); - - let messages_out: Vec<_> = (0..max).filter_map(|j| message_queue_root(i, j)).collect(); - - if !messages_out.is_empty() { - ctx.ingress_roots.insert(hash(i as u8), messages_out); - } - } - - let mut view = View::default(); - view.update_leaves( - &ctx, - [hash(0), hash(1)].iter().cloned(), - ).unwrap(); - - assert!(check_roots(&view, 0, max)); - assert!(check_roots(&view, 1, max)); - - assert!(!check_roots(&view, 2, max)); - assert!(!check_roots(&view, 3, max)); - assert!(!check_roots(&view, 4, max)); - assert!(!check_roots(&view, 5, max)); - - view.update_leaves( - &ctx, - [hash(2), hash(3), hash(4)].iter().cloned(), - ).unwrap(); - - assert!(!check_roots(&view, 0, max)); - assert!(!check_roots(&view, 1, max)); - - assert!(check_roots(&view, 2, max)); - assert!(check_roots(&view, 3, max)); - assert!(check_roots(&view, 4, max)); - - assert!(!check_roots(&view, 5, max)); - } - - #[test] - fn update_leaves_overlapping() { - let mut ctx = TestChainContext::default(); - let max = 5; - - for i in 0..max { - ctx.known_map.insert(hash(i as u8), Known::Leaf); - - let messages_out: Vec<_> = (0..max).filter_map(|j| message_queue_root(i, j)).collect(); - - if !messages_out.is_empty() { - ctx.ingress_roots.insert(hash(i as u8), messages_out); - } - } - - let mut view = View::default(); - view.update_leaves( - &ctx, - [hash(0), hash(1), hash(2)].iter().cloned(), - ).unwrap(); - - view.update_leaves( - &ctx, - [hash(2), hash(3), hash(4)].iter().cloned(), - ).unwrap(); - - assert!(!check_roots(&view, 0, max)); - assert!(!check_roots(&view, 1, max)); - - assert!(check_roots(&view, 2, max)); - assert!(check_roots(&view, 3, max)); - assert!(check_roots(&view, 4, max)); - - assert!(!check_roots(&view, 5, max)); - } -} diff --git a/polkadot/network/src/lib.rs b/polkadot/network/src/lib.rs index d6f28dc21e6..40337a8170e 100644 --- a/polkadot/network/src/lib.rs +++ b/polkadot/network/src/lib.rs @@ -25,12 +25,12 @@ mod router; pub mod validation; pub mod gossip; -use parity_codec::{Decode, Encode}; +use codec::{Decode, Encode}; use futures::sync::oneshot; -use polkadot_primitives::{Block, SessionKey, Hash, Header}; +use polkadot_primitives::{Block, Hash, Header}; use polkadot_primitives::parachain::{ Id as ParaId, BlockData, CollatorId, CandidateReceipt, Collation, PoVBlock, - StructuredUnroutedIngress, + StructuredUnroutedIngress, ValidatorId }; use substrate_network::{ PeerId, RequestId, Context, StatusMessage as GenericFullStatus, @@ -78,7 +78,7 @@ pub struct Status { } struct PoVBlockRequest { - attempted_peers: HashSet<SessionKey>, + attempted_peers: HashSet<ValidatorId>, validation_session_parent: Hash, candidate_hash: Hash, block_data_hash: Hash, @@ -115,8 +115,8 @@ enum CollatorState { } impl CollatorState { - fn send_key<F: FnMut(Message)>(&mut self, key: SessionKey, mut f: F) { - f(Message::SessionKey(key)); + fn send_key<F: FnMut(Message)>(&mut self, key: ValidatorId, mut f: F) { + f(Message::ValidatorId(key)); if let CollatorState::RolePending(role) = *self { f(Message::CollatorRole(role)); *self = CollatorState::Primed(Some(role)); @@ -160,7 +160,7 @@ pub enum Message { /// As a validator, tell the peer your current session key. // TODO: do this with a cryptographic proof of some kind // https://github.com/paritytech/polkadot/issues/47 - SessionKey(SessionKey), + ValidatorId(ValidatorId), /// Requesting parachain proof-of-validation block (relay_parent, candidate_hash). RequestPovBlock(RequestId, Hash, Hash), /// Provide requested proof-of-validation block data by candidate hash or nothing if unknown. @@ -186,7 +186,7 @@ pub struct PolkadotProtocol { peers: HashMap<PeerId, PeerInfo>, collating_for: Option<(CollatorId, ParaId)>, collators: CollatorPool, - validators: HashMap<SessionKey, PeerId>, + validators: HashMap<ValidatorId, PeerId>, local_collations: LocalCollations<Collation>, live_validation_sessions: LiveValidationSessions, in_flight: HashMap<(RequestId, PeerId), PoVBlockRequest>, @@ -319,7 +319,7 @@ impl PolkadotProtocol { fn on_polkadot_message(&mut self, ctx: &mut dyn Context<Block>, who: PeerId, msg: Message) { trace!(target: "p_net", "Polkadot message from {}: {:?}", who, msg); match msg { - Message::SessionKey(key) => self.on_session_key(ctx, who, key), + Message::ValidatorId(key) => self.on_session_key(ctx, who, key), Message::RequestPovBlock(req_id, relay_parent, candidate_hash) => { let pov_block = self.live_validation_sessions.with_pov_block( &relay_parent, @@ -352,7 +352,7 @@ impl PolkadotProtocol { } } - fn on_session_key(&mut self, ctx: &mut dyn Context<Block>, who: PeerId, key: SessionKey) { + fn on_session_key(&mut self, ctx: &mut dyn Context<Block>, who: PeerId, key: ValidatorId) { { let info = match self.peers.get_mut(&who) { Some(peer) => peer, @@ -473,12 +473,8 @@ impl Specialization<Block> for PolkadotProtocol { } fn on_connect(&mut self, ctx: &mut dyn Context<Block>, who: PeerId, status: FullStatus) { - let local_status = match Status::decode(&mut &status.chain_status[..]) { - Some(status) => status, - None => { - Status { collating_for: None } - } - }; + let local_status = Status::decode(&mut &status.chain_status[..]) + .unwrap_or_else(|_| Status { collating_for: None }); let validator = status.roles.contains(substrate_network::config::Roles::AUTHORITY); @@ -575,11 +571,11 @@ impl Specialization<Block> for PolkadotProtocol { message: Vec<u8>, ) { match Message::decode(&mut &message[..]) { - Some(msg) => { + Ok(msg) => { ctx.report_peer(who.clone(), benefit::VALID_FORMAT); self.on_polkadot_message(ctx, who, msg) }, - None => { + Err(_) => { trace!(target: "p_net", "Bad message from {}", who); ctx.report_peer(who, cost::INVALID_FORMAT); } @@ -684,7 +680,7 @@ impl PolkadotProtocol { &mut self, ctx: &mut dyn Context<Block>, relay_parent: Hash, - targets: HashSet<SessionKey>, + targets: HashSet<ValidatorId>, collation: Collation, ) { debug!(target: "p_net", "Importing local collation on relay parent {:?} and parachain {:?}", diff --git a/polkadot/network/src/local_collations.rs b/polkadot/network/src/local_collations.rs index 720a0375bd2..46dc49b4505 100644 --- a/polkadot/network/src/local_collations.rs +++ b/polkadot/network/src/local_collations.rs @@ -19,24 +19,22 @@ //! Collations are attempted to be repropagated when a new validator connects, //! a validator changes his session key, or when they are generated. -use polkadot_primitives::{Hash, SessionKey}; - +use polkadot_primitives::{Hash, parachain::{ValidatorId}}; use crate::collator_pool::Role; - use std::collections::{HashMap, HashSet}; use std::time::{Duration, Instant}; const LIVE_FOR: Duration = Duration::from_secs(60 * 5); struct LocalCollation<C> { - targets: HashSet<SessionKey>, + targets: HashSet<ValidatorId>, collation: C, live_since: Instant, } /// Tracker for locally collated values and which validators to send them to. pub struct LocalCollations<C> { - primary_for: HashSet<SessionKey>, + primary_for: HashSet<ValidatorId>, local_collations: HashMap<Hash, LocalCollation<C>>, } @@ -51,7 +49,7 @@ impl<C: Clone> LocalCollations<C> { /// Validator gave us a new role. If the new role is "primary", this function might return /// a set of collations to send to that validator. - pub fn note_validator_role(&mut self, key: SessionKey, role: Role) -> Vec<(Hash, C)> { + pub fn note_validator_role(&mut self, key: ValidatorId, role: Role) -> Vec<(Hash, C)> { match role { Role::Backup => { self.primary_for.remove(&key); @@ -70,7 +68,7 @@ impl<C: Clone> LocalCollations<C> { /// Fresh session key from a validator. Returns a vector of collations to send /// to the validator. - pub fn fresh_key(&mut self, old_key: &SessionKey, new_key: &SessionKey) -> Vec<(Hash, C)> { + pub fn fresh_key(&mut self, old_key: &ValidatorId, new_key: &ValidatorId) -> Vec<(Hash, C)> { if self.primary_for.remove(old_key) { self.primary_for.insert(new_key.clone()); @@ -81,7 +79,7 @@ impl<C: Clone> LocalCollations<C> { } /// Validator disconnected. - pub fn on_disconnect(&mut self, key: &SessionKey) { + pub fn on_disconnect(&mut self, key: &ValidatorId) { self.primary_for.remove(key); } @@ -99,10 +97,10 @@ impl<C: Clone> LocalCollations<C> { pub fn add_collation<'a>( &'a mut self, relay_parent: Hash, - targets: HashSet<SessionKey>, + targets: HashSet<ValidatorId>, collation: C ) - -> impl Iterator<Item=(SessionKey, C)> + 'a + -> impl Iterator<Item=(ValidatorId, C)> + 'a { self.local_collations.insert(relay_parent, LocalCollation { targets, @@ -119,7 +117,7 @@ impl<C: Clone> LocalCollations<C> { .map(move |k| (k.clone(), borrowed_collation.clone())) } - fn collations_targeting(&self, key: &SessionKey) -> Vec<(Hash, C)> { + fn collations_targeting(&self, key: &ValidatorId) -> Vec<(Hash, C)> { self.local_collations.iter() .filter(|&(_, ref v)| v.targets.contains(key)) .map(|(h, v)| (*h, v.collation.clone())) diff --git a/polkadot/network/src/router.rs b/polkadot/network/src/router.rs index 1e15524239a..9dffa2546d5 100644 --- a/polkadot/network/src/router.rs +++ b/polkadot/network/src/router.rs @@ -199,13 +199,16 @@ impl<P: ProvideRuntimeApi + Send + Sync + 'static, E, N, T> Router<P, E, N, T> w validated.extrinsic().cloned(), ); - // propagate the statement. // consider something more targeted than gossip in the future. let statement = GossipStatement::new( parent_hash, - table.import_validated(validated), + match table.import_validated(validated) { + None => return, + Some(s) => s, + } ); + network.gossip_message(attestation_topic, statement.into()); }) .map_err(|e| debug!(target: "p_net", "Failed to produce statements: {:?}", e)) @@ -224,10 +227,18 @@ impl<P: ProvideRuntimeApi + Send, E, N, T> TableRouter for Router<P, E, N, T> wh fn local_collation(&self, collation: Collation, extrinsic: Extrinsic) { // produce a signed statement let hash = collation.receipt.hash(); - let validated = Validated::collated_local(collation.receipt, collation.pov.clone(), extrinsic.clone()); + let validated = Validated::collated_local( + collation.receipt, + collation.pov.clone(), + extrinsic.clone(), + ); + let statement = GossipStatement::new( self.parent_hash(), - self.table.import_validated(validated), + match self.table.import_validated(validated) { + None => return, + Some(s) => s, + }, ); // give to network to make available. diff --git a/polkadot/network/src/tests/mod.rs b/polkadot/network/src/tests/mod.rs index 29cfa0d7600..be20e0ad1c2 100644 --- a/polkadot/network/src/tests/mod.rs +++ b/polkadot/network/src/tests/mod.rs @@ -21,13 +21,13 @@ use super::{PolkadotProtocol, Status, Message, FullStatus}; use crate::validation::SessionParams; use polkadot_validation::GenericStatement; -use polkadot_primitives::{Block, Hash, SessionKey}; +use polkadot_primitives::{Block, Hash}; use polkadot_primitives::parachain::{ CandidateReceipt, HeadData, PoVBlock, BlockData, CollatorId, ValidatorId, - StructuredUnroutedIngress, + StructuredUnroutedIngress }; use substrate_primitives::crypto::UncheckedInto; -use parity_codec::Encode; +use codec::Encode; use substrate_network::{ PeerId, Context, config::Roles, message::generic::ConsensusMessage, specialization::NetworkSpecialization, @@ -96,7 +96,7 @@ fn make_status(status: &Status, roles: Roles) -> FullStatus { } } -fn make_validation_session(parent_hash: Hash, local_key: SessionKey) -> SessionParams { +fn make_validation_session(parent_hash: Hash, local_key: ValidatorId) -> SessionParams { SessionParams { local_session_key: Some(local_key), parent_hash, @@ -131,13 +131,13 @@ fn sends_session_key() { let mut ctx = TestContext::default(); let params = make_validation_session(parent_hash, local_key.clone()); protocol.new_validation_session(&mut ctx, params); - assert!(ctx.has_message(peer_a, Message::SessionKey(local_key.clone()))); + assert!(ctx.has_message(peer_a, Message::ValidatorId(local_key.clone()))); } { let mut ctx = TestContext::default(); protocol.on_connect(&mut ctx, peer_b.clone(), make_status(&collator_status, Roles::NONE)); - assert!(ctx.has_message(peer_b.clone(), Message::SessionKey(local_key))); + assert!(ctx.has_message(peer_b.clone(), Message::ValidatorId(local_key))); } } @@ -186,13 +186,13 @@ fn fetches_from_those_with_knowledge() { { let mut ctx = TestContext::default(); protocol.on_connect(&mut ctx, peer_a.clone(), make_status(&status, Roles::AUTHORITY)); - assert!(ctx.has_message(peer_a.clone(), Message::SessionKey(local_key))); + assert!(ctx.has_message(peer_a.clone(), Message::ValidatorId(local_key))); } // peer A gives session key and gets asked for data. { let mut ctx = TestContext::default(); - on_message(&mut protocol, &mut ctx, peer_a.clone(), Message::SessionKey(a_key.clone())); + on_message(&mut protocol, &mut ctx, peer_a.clone(), Message::ValidatorId(a_key.clone())); assert!(protocol.validators.contains_key(&a_key)); assert!(ctx.has_message(peer_a.clone(), Message::RequestPovBlock(1, parent_hash, candidate_hash))); } @@ -203,7 +203,7 @@ fn fetches_from_those_with_knowledge() { { let mut ctx = TestContext::default(); protocol.on_connect(&mut ctx, peer_b.clone(), make_status(&status, Roles::AUTHORITY)); - on_message(&mut protocol, &mut ctx, peer_b.clone(), Message::SessionKey(b_key.clone())); + on_message(&mut protocol, &mut ctx, peer_b.clone(), Message::ValidatorId(b_key.clone())); assert!(!ctx.has_message(peer_b.clone(), Message::RequestPovBlock(2, parent_hash, candidate_hash))); } @@ -340,8 +340,8 @@ fn many_session_keys() { let status = Status { collating_for: None }; protocol.on_connect(&mut ctx, peer_a.clone(), make_status(&status, Roles::AUTHORITY)); - assert!(ctx.has_message(peer_a.clone(), Message::SessionKey(local_key_a.clone()))); - assert!(ctx.has_message(peer_a, Message::SessionKey(local_key_b.clone()))); + assert!(ctx.has_message(peer_a.clone(), Message::ValidatorId(local_key_a.clone()))); + assert!(ctx.has_message(peer_a, Message::ValidatorId(local_key_b.clone()))); } let peer_b = PeerId::random(); @@ -354,7 +354,7 @@ fn many_session_keys() { let status = Status { collating_for: None }; protocol.on_connect(&mut ctx, peer_b.clone(), make_status(&status, Roles::AUTHORITY)); - assert!(!ctx.has_message(peer_b.clone(), Message::SessionKey(local_key_a.clone()))); - assert!(ctx.has_message(peer_b, Message::SessionKey(local_key_b.clone()))); + assert!(!ctx.has_message(peer_b.clone(), Message::ValidatorId(local_key_a.clone()))); + assert!(ctx.has_message(peer_b, Message::ValidatorId(local_key_b.clone()))); } } diff --git a/polkadot/network/src/tests/validation.rs b/polkadot/network/src/tests/validation.rs index 78a362ca81b..61130a2639a 100644 --- a/polkadot/network/src/tests/validation.rs +++ b/polkadot/network/src/tests/validation.rs @@ -23,11 +23,11 @@ use crate::gossip::GossipMessage; use substrate_network::Context as NetContext; use substrate_network::consensus_gossip::TopicNotification; use substrate_primitives::{NativeOrEncoded, ExecutionContext}; -use substrate_keyring::Ed25519Keyring; +use substrate_keyring::Sr25519Keyring; use crate::PolkadotProtocol; use polkadot_validation::{SharedTable, MessagesFrom, Network}; -use polkadot_primitives::{SessionKey, Block, Hash, Header, BlockId}; +use polkadot_primitives::{Block, Hash, Header, BlockId}; use polkadot_primitives::parachain::{ Id as ParaId, Chain, DutyRoster, ParachainHost, OutgoingMessage, ValidatorId, StructuredUnroutedIngress, BlockIngressRoots, Status, @@ -41,7 +41,7 @@ use sr_primitives::traits::{ApiRef, ProvideRuntimeApi}; use std::collections::HashMap; use std::sync::Arc; use futures::{prelude::*, sync::mpsc}; -use parity_codec::Encode; +use codec::Encode; use super::TestContext; @@ -398,20 +398,23 @@ impl IngressBuilder { } } -fn make_table(data: &ApiData, local_key: &Ed25519Keyring, parent_hash: Hash) -> Arc<SharedTable> { +fn make_table(data: &ApiData, local_key: &Sr25519Keyring, parent_hash: Hash) -> Arc<SharedTable> { use av_store::Store; + use substrate_primitives::crypto::Pair; + let sr_pair = local_key.pair(); + let local_key = polkadot_primitives::parachain::ValidatorPair::from(local_key.pair()); let store = Store::new_in_memory(); let (group_info, _) = ::polkadot_validation::make_group_info( DutyRoster { validator_duty: data.duties.clone() }, &data.validators, // only possible as long as parachain crypto === aura crypto - SessionKey::from(*local_key) + Some(sr_pair.public().into()), ).unwrap(); Arc::new(SharedTable::new( - data.validators.as_slice(), + data.validators.clone(), group_info, - Arc::new(local_key.pair()), + Some(Arc::new(local_key)), parent_hash, store, None, diff --git a/polkadot/network/src/validation.rs b/polkadot/network/src/validation.rs index 8914b417fa5..a6abe4c2502 100644 --- a/polkadot/network/src/validation.rs +++ b/polkadot/network/src/validation.rs @@ -28,10 +28,10 @@ use substrate_network::consensus_gossip::{ use polkadot_validation::{ Network as ParachainNetwork, SharedTable, Collators, Statement, GenericStatement, SignedStatement, }; -use polkadot_primitives::{Block, BlockId, Hash, SessionKey}; +use polkadot_primitives::{Block, BlockId, Hash}; use polkadot_primitives::parachain::{ Id as ParaId, Collation, Extrinsic, ParachainHost, CandidateReceipt, CollatorId, - ValidatorId, PoVBlock, ValidatorIndex, + ValidatorId, PoVBlock, ValidatorIndex }; use futures::prelude::*; @@ -54,7 +54,7 @@ use super::PolkadotProtocol; pub use polkadot_validation::Incoming; -use parity_codec::{Encode, Decode}; +use codec::{Encode, Decode}; /// An executor suitable for dispatching async consensus tasks. pub trait Executor { @@ -120,7 +120,7 @@ impl Stream for GossipMessageStream { }; debug!(target: "validation", "Processing statement for live validation session"); - if let Some(gmsg) = GossipMessage::decode(&mut &msg.message[..]) { + if let Ok(gmsg) = GossipMessage::decode(&mut &msg.message[..]) { return Ok(Async::Ready(Some((gmsg, msg.sender)))) } } @@ -186,11 +186,11 @@ impl NetworkService for super::NetworkService { /// Params to a current validation session. pub struct SessionParams { /// The local session key. - pub local_session_key: Option<SessionKey>, + pub local_session_key: Option<ValidatorId>, /// The parent hash. pub parent_hash: Hash, /// The authorities. - pub authorities: Vec<SessionKey>, + pub authorities: Vec<ValidatorId>, } /// Wrapper around the network service @@ -336,7 +336,7 @@ impl<P, E, N, T> ParachainNetwork for ValidationNetwork<P, E, N, T> where let local_session_key = table.session_key(); let build_fetcher = self.instantiate_session(SessionParams { - local_session_key: Some(local_session_key), + local_session_key, parent_hash, authorities: authorities.to_vec(), }); diff --git a/polkadot/parachain/Cargo.toml b/polkadot/parachain/Cargo.toml index bc021bf4e33..25f8b13686b 100644 --- a/polkadot/parachain/Cargo.toml +++ b/polkadot/parachain/Cargo.toml @@ -6,11 +6,10 @@ description = "Types and utilities for creating and working with parachains" edition = "2018" [dependencies] -codec = { package = "parity-codec", version = "4.1", default-features = false, features = [ "derive" ] } +codec = { package = "parity-scale-codec", version = "1.0.5", default-features = false, features = [ "derive" ] } wasmi = { version = "0.4.3", optional = true } derive_more = { version = "0.14", optional = true } serde = { version = "1.0", default-features = false, features = [ "derive" ] } - rstd = { package = "sr-std", git = "https://github.com/paritytech/substrate", branch = "polkadot-master", default-features = false } lazy_static = { version = "1.3.0", optional = true } parking_lot = { version = "0.7.1", optional = true } @@ -27,4 +26,14 @@ halt = { path = "../test-parachains/halt" } [features] default = ["std"] wasm-api = [] -std = [ "codec/std", "wasmi", "derive_more", "serde/std", "rstd/std", "shared_memory", "lazy_static", "parking_lot", "log" ] +std = [ + "codec/std", + "wasmi", + "derive_more", + "serde/std", + "rstd/std", + "shared_memory", + "lazy_static", + "parking_lot", + "log" +] diff --git a/polkadot/parachain/src/lib.rs b/polkadot/parachain/src/lib.rs index 994d11cf434..8964743beeb 100644 --- a/polkadot/parachain/src/lib.rs +++ b/polkadot/parachain/src/lib.rs @@ -51,22 +51,9 @@ pub mod wasm_executor; #[cfg(feature = "wasm-api")] pub mod wasm_api; -use codec::{Encode, Decode}; - use rstd::vec::Vec; -struct TrailingZeroInput<'a>(&'a [u8]); -impl<'a> codec::Input for TrailingZeroInput<'a> { - fn read(&mut self, into: &mut [u8]) -> usize { - let len = into.len().min(self.0.len()); - into[..len].copy_from_slice(&self.0[..len]); - for i in &mut into[len..] { - *i = 0; - } - self.0 = &self.0[len..]; - len - } -} +use codec::{Encode, Decode}; /// Validation parameters for evaluating the parachain validity function. // TODO: balance downloads (https://github.com/paritytech/polkadot/issues/220) @@ -110,16 +97,50 @@ impl From<codec::Compact<Id>> for Id { } } +impl From<Id> for u32 { + fn from(x: Id) -> Self { x.0 } +} + +impl From<u32> for Id { + fn from(x: u32) -> Self { Id(x) } +} + +impl Id { + /// Convert this Id into its inner representation. + pub fn into_inner(self) -> u32 { + self.0 + } +} + +// TODO: Remove all of this, move sr-primitives::AccountIdConversion to own crate and and use that. +// #360 +struct TrailingZeroInput<'a>(&'a [u8]); +impl<'a> codec::Input for TrailingZeroInput<'a> { + fn remaining_len(&mut self) -> Result<Option<usize>, codec::Error> { + Ok(None) + } + + fn read(&mut self, into: &mut [u8]) -> Result<(), codec::Error> { + let len = into.len().min(self.0.len()); + into[..len].copy_from_slice(&self.0[..len]); + for i in &mut into[len..] { + *i = 0; + } + self.0 = &self.0[len..]; + Ok(()) + } +} + /// This type can be converted into and possibly from an AccountId (which itself is generic). pub trait AccountIdConversion<AccountId>: Sized { /// Convert into an account ID. This is infallible. fn into_account(&self) -> AccountId; - /// Try to convert an account ID into this type. Might not succeed. + /// Try to convert an account ID into this type. Might not succeed. fn try_from_account(a: &AccountId) -> Option<Self>; } -/// Format is b"para" ++ encode(parachain ID) ++ 00.... where 00... is indefinite trailing zeroes to fill AccountId. + /// Format is b"para" ++ encode(parachain ID) ++ 00.... where 00... is indefinite trailing zeroes to fill AccountId. impl<T: Encode + Decode + Default> AccountIdConversion<T> for Id { fn into_account(&self) -> T { (b"para", self).using_encoded(|b| @@ -127,11 +148,11 @@ impl<T: Encode + Decode + Default> AccountIdConversion<T> for Id { ).unwrap_or_default() } - fn try_from_account(x: &T) -> Option<Self> { + fn try_from_account(x: &T) -> Option<Self> { x.using_encoded(|d| { if &d[0..4] != b"para" { return None } let mut cursor = &d[4..]; - let result = Decode::decode(&mut cursor)?; + let result = Decode::decode(&mut cursor).ok()?; if cursor.iter().all(|x| *x == 0) { Some(result) } else { @@ -141,21 +162,6 @@ impl<T: Encode + Decode + Default> AccountIdConversion<T> for Id { } } -impl From<Id> for u32 { - fn from(x: Id) -> Self { x.0 } -} - -impl From<u32> for Id { - fn from(x: u32) -> Self { Id(x) } -} - -impl Id { - /// Convert this Id into its inner representation. - pub fn into_inner(self) -> u32 { - self.0 - } -} - /// An incoming message. #[derive(PartialEq, Eq, Decode)] #[cfg_attr(feature = "std", derive(Debug, Encode))] diff --git a/polkadot/parachain/src/wasm_executor.rs b/polkadot/parachain/src/wasm_executor.rs index c0fecd1dd59..a9bf606a7a9 100644 --- a/polkadot/parachain/src/wasm_executor.rs +++ b/polkadot/parachain/src/wasm_executor.rs @@ -431,7 +431,7 @@ pub fn validate_candidate_internal<E: Externalities>( let len_offset = len_offset as usize; let len = u32::decode(&mut &len_bytes[..]) - .ok_or_else(|| Error::BadReturn)? as usize; + .map_err(|_| Error::BadReturn)? as usize; let return_offset = if len > len_offset { return Err(Error::BadReturn); @@ -445,8 +445,7 @@ pub fn validate_candidate_internal<E: Externalities>( } ValidationResult::decode(&mut &mem[return_offset..][..len]) - .ok_or_else(|| Error::BadReturn) - .map_err(Into::into) + .map_err(|_| Error::BadReturn.into()) }) } _ => Err(Error::BadReturn), diff --git a/polkadot/parachain/src/wasm_executor/validation_host.rs b/polkadot/parachain/src/wasm_executor/validation_host.rs index cbf589e2224..1ebf69b3133 100644 --- a/polkadot/parachain/src/wasm_executor/validation_host.rs +++ b/polkadot/parachain/src/wasm_executor/validation_host.rs @@ -95,7 +95,7 @@ pub fn run_worker(mem_id: &str) -> Result<(), String> { let (header_buf, rest) = data.split_at_mut(1024); let mut header_buf: &[u8] = header_buf; let header = ValidationHeader::decode(&mut header_buf) - .ok_or_else(|| format!("Error decoding validation request."))?; + .map_err(|_| format!("Error decoding validation request."))?; debug!("Candidate header: {:?}", header); let (code, rest) = rest.split_at_mut(MAX_CODE_MEM); let (code, _) = code.split_at_mut(header.code_size as usize); diff --git a/polkadot/parachain/tests/adder/mod.rs b/polkadot/parachain/tests/adder/mod.rs index 161d2f9cd38..a7584e438dd 100644 --- a/polkadot/parachain/tests/adder/mod.rs +++ b/polkadot/parachain/tests/adder/mod.rs @@ -169,7 +169,7 @@ fn processes_messages() { }; let bad_message_data = vec![1]; - assert!(AddMessage::decode(&mut &bad_message_data[..]).is_none()); + assert!(AddMessage::decode(&mut &bad_message_data[..]).is_err()); let ret = parachain::wasm_executor::validate_candidate( TEST_CODE, diff --git a/polkadot/primitives/Cargo.toml b/polkadot/primitives/Cargo.toml index 21726738b08..fc558af0d90 100644 --- a/polkadot/primitives/Cargo.toml +++ b/polkadot/primitives/Cargo.toml @@ -6,14 +6,16 @@ edition = "2018" [dependencies] serde = { version = "1.0", optional = true, features = ["derive"] } -parity-codec = { version = "4.1", default-features = false, features = ["bit-vec"] } +parity-scale-codec = { version = "1.0.5", default-features = false, features = ["bit-vec", "derive"] } primitives = { package = "substrate-primitives", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } +application-crypto = { package = "substrate-application-crypto", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } substrate-client = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } sr-version = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } rstd = { package = "sr-std", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } runtime_primitives = { package = "sr-primitives", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } polkadot-parachain = { path = "../parachain", default-features = false } -bitvec = { version = "0.11", default-features = false, features = ["alloc"] } +bitvec = { version = "0.14.0", default-features = false, features = ["alloc"] } +babe = { package = "srml-babe", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } [dev-dependencies] substrate-serializer = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } @@ -22,7 +24,7 @@ pretty_assertions = "0.5.1" [features] default = ["std"] std = [ - "parity-codec/std", + "parity-scale-codec/std", "primitives/std", "substrate-client/std", "rstd/std", @@ -30,5 +32,6 @@ std = [ "runtime_primitives/std", "serde", "polkadot-parachain/std", - "bitvec/std" + "bitvec/std", + "babe/std" ] diff --git a/polkadot/primitives/src/lib.rs b/polkadot/primitives/src/lib.rs index 02f5d53e402..f815960a1e3 100644 --- a/polkadot/primitives/src/lib.rs +++ b/polkadot/primitives/src/lib.rs @@ -21,18 +21,19 @@ #![cfg_attr(not(feature = "std"), no_std)] use runtime_primitives::{generic, AnySignature}; -use primitives::ed25519; pub use runtime_primitives::traits::{BlakeTwo256, Hash as HashT, Verify}; pub mod parachain; -pub use parity_codec::Compact; +pub use parity_scale_codec::Compact; /// An index to a block. /// 32-bits will allow for 136 years of blocks assuming 1 block per second. -/// TODO: switch to u32 (https://github.com/paritytech/polkadot/issues/221) -pub type BlockNumber = u64; +pub type BlockNumber = u32; + +/// An instant or duration in time. +pub type Moment = u64; /// Alias to 512-bit hash when used in the context of a signature on the relay chain. /// Equipped with logic for possibly "unsigned" messages. @@ -41,8 +42,7 @@ pub type Signature = AnySignature; /// Alias to an sr25519 or ed25519 key. pub type AccountId = <Signature as Verify>::Signer; -/// The type for looking up accounts. We don't expect more than 4 billion of them, but you -/// never know... +/// The type for looking up accounts. We don't expect more than 4 billion of them. pub type AccountIndex = u32; /// Identifier for a chain. 32-bit should be plenty. @@ -52,13 +52,7 @@ pub type ChainId = u32; pub type Hash = primitives::H256; /// Index of a transaction in the relay chain. 32-bit should be plenty. -pub type Nonce = u64; - -/// Signature with which authorities sign blocks. -pub type SessionSignature = ed25519::Signature; - -/// Identity that authorities use. -pub type SessionKey = ed25519::Public; +pub type Nonce = u32; /// The balance of an account. /// 128-bits (or 38 significant decimal figures) will allow for 10m currency (10^7) at a resolution @@ -69,20 +63,6 @@ pub type SessionKey = ed25519::Public; /// that 32 bits may be multiplied with a balance in 128 bits without worrying about overflow. pub type Balance = u128; -/// The aura crypto scheme defined via the keypair type. -#[cfg(feature = "std")] -pub type AuraPair = ed25519::Pair; - -/// The Ed25519 pub key of an session that belongs to an Aura authority of the chain. -pub type AuraId = ed25519::Public; - -/// The Parachain crypto scheme defined via the keypair type. -#[cfg(feature = "std")] -pub type ParachainPair = ed25519::Pair; - -/// The Ed25519 public key used to authenticate signatures on parachain data. -pub type ParachainPublic = ed25519::Public; - /// Header type. pub type Header = generic::Header<BlockNumber, BlakeTwo256>; /// Block type. diff --git a/polkadot/primitives/src/parachain.rs b/polkadot/primitives/src/parachain.rs index d846f90a829..b60b1581ed3 100644 --- a/polkadot/primitives/src/parachain.rs +++ b/polkadot/primitives/src/parachain.rs @@ -18,7 +18,7 @@ use rstd::prelude::*; use rstd::cmp::Ordering; -use parity_codec::{Encode, Decode}; +use parity_scale_codec::{Encode, Decode}; use bitvec::vec::BitVec; use super::{Hash, Balance, BlockNumber}; @@ -27,32 +27,56 @@ use serde::{Serialize, Deserialize}; #[cfg(feature = "std")] use primitives::bytes; -use primitives::ed25519; +use application_crypto::KeyTypeId; pub use polkadot_parachain::{ Id, AccountIdConversion, ParachainDispatchOrigin, UpwardMessage, }; +/// The key type ID for a collator key. +pub const COLLATOR_KEY_TYPE_ID: KeyTypeId = KeyTypeId(*b"coll"); + +mod collator_app { + use application_crypto::{app_crypto, sr25519}; + app_crypto!(sr25519, super::COLLATOR_KEY_TYPE_ID); +} + /// Identity that collators use. -pub type CollatorId = ed25519::Public; +pub type CollatorId = collator_app::Public; + +/// A Parachain collator keypair. +#[cfg(feature = "std")] +pub type CollatorPair = collator_app::Pair; /// Signature on candidate's block data by a collator. -pub type CollatorSignature = ed25519::Signature; +pub type CollatorSignature = collator_app::Signature; + +/// The key type ID for a parachain validator key. +pub const PARACHAIN_KEY_TYPE_ID: KeyTypeId = KeyTypeId(*b"para"); + +mod validator_app { + use application_crypto::{app_crypto, sr25519}; + app_crypto!(sr25519, super::PARACHAIN_KEY_TYPE_ID); +} /// Identity that parachain validators use when signing validation messages. /// /// For now we assert that parachain validator set is exactly equivalent to the (Aura) authority set, and /// so we define it to be the same type as `SessionKey`. In the future it may have different crypto. -pub type ValidatorId = super::SessionKey; +pub type ValidatorId = validator_app::Public; /// Index of the validator is used as a lightweight replacement of the `ValidatorId` when appropriate. pub type ValidatorIndex = u32; +/// A Parachain validator keypair. +#[cfg(feature = "std")] +pub type ValidatorPair = validator_app::Pair; + /// Signature with which parachain validators sign blocks. /// /// For now we assert that parachain validator set is exactly equivalent to the (Aura) authority set, and /// so we define it to be the same type as `SessionKey`. In the future it may have different crypto. -pub type ValidatorSignature = super::SessionSignature; +pub type ValidatorSignature = validator_app::Signature; /// Identifier for a chain, either one of a number of parachains or the relay chain. #[derive(Copy, Clone, PartialEq, Encode, Decode)] @@ -143,7 +167,7 @@ impl CandidateReceipt { /// Check integrity vs. provided block data. pub fn check_signature(&self) -> Result<(), ()> { - use runtime_primitives::traits::Verify; + use runtime_primitives::traits::AppVerify; if self.signature.verify(self.block_data_hash.as_ref(), &self.collator) { Ok(()) @@ -292,11 +316,11 @@ pub enum ValidityAttestation { /// implicit validity attestation by issuing. /// This corresponds to issuance of a `Candidate` statement. #[codec(index = "1")] - Implicit(CollatorSignature), + Implicit(ValidatorSignature), /// An explicit attestation. This corresponds to issuance of a /// `Valid` statement. #[codec(index = "2")] - Explicit(CollatorSignature), + Explicit(ValidatorSignature), } /// An attested candidate. diff --git a/polkadot/runtime/Cargo.toml b/polkadot/runtime/Cargo.toml index 943fe17fc5f..9ee2801aae1 100644 --- a/polkadot/runtime/Cargo.toml +++ b/polkadot/runtime/Cargo.toml @@ -6,14 +6,14 @@ edition = "2018" build = "build.rs" [dependencies] -bitvec = { version = "0.11", default-features = false, features = ["alloc"] } +bitvec = { version = "0.14.0", default-features = false, features = ["alloc"] } rustc-hex = { version = "2.0.1", default-features = false } log = { version = "0.3", optional = true } serde = { version = "1.0", default-features = false } serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default-features = false} primitives = { package = "polkadot-primitives", path = "../primitives", default-features = false } -parity-codec = { version = "4.1", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "~1.0.0", default-features = false, features = ["derive"] } substrate-serializer = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } rstd = { package = "sr-std", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } sr-io = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } @@ -21,9 +21,7 @@ srml-support = { git = "https://github.com/paritytech/substrate", default-featur substrate-primitives = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } client = { package = "substrate-client", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } inherents = { package = "substrate-inherents", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } -consensus_aura = { package = "substrate-consensus-aura-primitives", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } offchain_primitives = { package = "substrate-offchain-primitives", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } -aura = { package = "srml-aura", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } authorship = { package = "srml-authorship", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } balances = { package = "srml-balances", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } collective = { package = "srml-collective", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } @@ -32,7 +30,9 @@ democracy = { package = "srml-democracy", git = "https://github.com/paritytech/s executive = { package = "srml-executive", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } finality-tracker = { package = "srml-finality-tracker", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } grandpa = { package = "srml-grandpa", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } +im-online = { package = "srml-im-online", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } indices = { package = "srml-indices", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } +membership = { package = "srml-membership", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } sr-primitives = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } session = { package = "srml-session", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } staking = { package = "srml-staking", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } @@ -41,6 +41,9 @@ system = { package = "srml-system", git = "https://github.com/paritytech/substra timestamp = { package = "srml-timestamp", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } treasury = { package = "srml-treasury", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } version = { package = "sr-version", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } +babe = { package = "srml-babe", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } +babe-primitives = { package = "substrate-consensus-babe-primitives", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } +substrate-session = { git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } [dev-dependencies] hex-literal = "0.2.0" @@ -48,7 +51,7 @@ libsecp256k1 = "0.2.1" tiny-keccak = "1.4.2" keyring = { package = "substrate-keyring", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } substrate-trie = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } -trie-db = "0.14" +trie-db = "0.15" [build-dependencies] wasm-builder-runner = { package = "substrate-wasm-builder-runner", version = "1.0.1" } @@ -60,7 +63,7 @@ std = [ "bitvec/std", "primitives/std", "rustc-hex/std", - "parity-codec/std", + "codec/std", "inherents/std", "substrate-primitives/std", "client/std", @@ -68,7 +71,6 @@ std = [ "rstd/std", "sr-io/std", "srml-support/std", - "aura/std", "authorship/std", "balances/std", "collective/std", @@ -77,7 +79,9 @@ std = [ "executive/std", "finality-tracker/std", "grandpa/std", + "im-online/std", "indices/std", + "membership/std", "sr-primitives/std", "session/std", "staking/std", @@ -90,5 +94,6 @@ std = [ "serde/std", "log", "safe-mix/std", - "consensus_aura/std", + "babe/std", + "babe-primitives/std", ] diff --git a/polkadot/runtime/src/attestations.rs b/polkadot/runtime/src/attestations.rs index c359a91e2b8..528f010c534 100644 --- a/polkadot/runtime/src/attestations.rs +++ b/polkadot/runtime/src/attestations.rs @@ -20,7 +20,7 @@ //! as well. use rstd::prelude::*; -use parity_codec::{Encode, Decode}; +use codec::{Encode, Decode}; use srml_support::{decl_storage, decl_module, ensure}; use primitives::{Hash, parachain::{AttestedCandidate, CandidateReceipt, Id as ParaId}}; diff --git a/polkadot/runtime/src/claims.rs b/polkadot/runtime/src/claims.rs index 54eeff63373..c2a6d3b471f 100644 --- a/polkadot/runtime/src/claims.rs +++ b/polkadot/runtime/src/claims.rs @@ -21,7 +21,7 @@ use sr_io::{keccak_256, secp256k1_ecdsa_recover}; use srml_support::{StorageValue, StorageMap, decl_event, decl_storage, decl_module}; use srml_support::traits::{Currency, Get}; use system::ensure_none; -use parity_codec::{Encode, Decode}; +use codec::{Encode, Decode}; #[cfg(feature = "std")] use sr_primitives::traits::Zero; use sr_primitives::{ @@ -200,7 +200,7 @@ mod tests { use sr_io::with_externalities; use substrate_primitives::{H256, Blake2Hasher}; - use parity_codec::{Decode, Encode}; + use codec::{Decode, Encode}; // The testing primitives are very useful for avoiding having to work with signatures // or public keys. `u64` is used as the `AccountId` and no `Signature`s are required. use sr_primitives::{Perbill, traits::{BlakeTwo256, IdentityLookup, ConvertInto}, testing::Header}; @@ -210,20 +210,20 @@ mod tests { impl_outer_origin! { pub enum Origin for Test {} } - // For testing the module, we construct most of a mock runtime. This means // first constructing a configuration type (`Test`) which `impl`s each of the // configuration traits of modules we want to use. #[derive(Clone, Eq, PartialEq)] pub struct Test; parameter_types! { - pub const BlockHashCount: u64 = 250; + pub const BlockHashCount: u32 = 250; pub const MaximumBlockWeight: u32 = 4 * 1024 * 1024; pub const MaximumBlockLength: u32 = 4 * 1024 * 1024; pub const AvailableBlockRatio: Perbill = Perbill::from_percent(75); } impl system::Trait for Test { type Origin = Origin; + type Call = (); type Index = u64; type BlockNumber = u64; type Hash = H256; @@ -305,12 +305,12 @@ mod tests { // This function basically just builds a genesis storage key/value store according to // our desired mockup. fn new_test_ext() -> sr_io::TestExternalities<Blake2Hasher> { - let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap().0; + let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap(); // We use default for brevity, but you can configure as desired if needed. - t.extend(balances::GenesisConfig::<Test>::default().build_storage().unwrap().0); - t.extend(GenesisConfig::<Test>{ + balances::GenesisConfig::<Test>::default().assimilate_storage(&mut t).unwrap(); + GenesisConfig::<Test>{ claims: vec![(alice_eth(), 100)], - }.build_storage().unwrap().0); + }.assimilate_storage(&mut t).unwrap(); t.into() } diff --git a/polkadot/runtime/src/constants.rs b/polkadot/runtime/src/constants.rs index 10d3bf9be5c..6efbec6c6ee 100644 --- a/polkadot/runtime/src/constants.rs +++ b/polkadot/runtime/src/constants.rs @@ -19,17 +19,31 @@ pub mod currency { use primitives::Balance; pub const DOTS: Balance = 1_000_000_000_000; - pub const BUCKS: Balance = DOTS / 100; - pub const CENTS: Balance = BUCKS / 100; + pub const DOLLARS: Balance = DOTS / 100; + pub const CENTS: Balance = DOLLARS / 100; pub const MILLICENTS: Balance = CENTS / 1_000; } + /// Time. pub mod time { - pub const SECS_PER_BLOCK: u64 = 6; - pub const MINUTES: u64 = 60 / SECS_PER_BLOCK; - pub const HOURS: u64 = MINUTES * 60; - pub const DAYS: u64 = HOURS * 24; + use primitives::{Moment, BlockNumber}; + pub const MILLISECS_PER_BLOCK: Moment = 6000; + pub const SECS_PER_BLOCK: Moment = MILLISECS_PER_BLOCK / 1000; + + pub const SLOT_DURATION: Moment = 1650; + + pub const EPOCH_DURATION_IN_BLOCKS: BlockNumber = 10 * MINUTES; + pub const EPOCH_DURATION_IN_SLOTS: u64 = { + const SLOT_FILL_RATE: f64 = MILLISECS_PER_BLOCK as f64 / SLOT_DURATION as f64; + + (EPOCH_DURATION_IN_BLOCKS as f64 * SLOT_FILL_RATE) as u64 + }; + + // These time units are defined in number of blocks. + pub const MINUTES: BlockNumber = 60 / (SECS_PER_BLOCK as BlockNumber); + pub const HOURS: BlockNumber = MINUTES * 60; + pub const DAYS: BlockNumber = HOURS * 24; } /// Fee-related. diff --git a/polkadot/runtime/src/curated_grandpa.rs b/polkadot/runtime/src/curated_grandpa.rs index 39c6d841e67..81e31ff8e54 100644 --- a/polkadot/runtime/src/curated_grandpa.rs +++ b/polkadot/runtime/src/curated_grandpa.rs @@ -17,7 +17,7 @@ //! A module for manually curated GRANDPA set. use {grandpa, system}; -use parity_codec::Decode; +use codec::Decode; use sr_primitives::traits::{Hash as HashT, BlakeTwo256, Zero}; use sr_primitives::weights::SimpleDispatchInfo; use rstd::prelude::*; @@ -79,7 +79,7 @@ decl_module! { let offset = (i * 4 % 32) as usize; // number of roles remaining to select from. - let remaining = (voter_count - i) as usize; + let remaining = rstd::cmp::max(1, (voter_count - i) as usize); // 8 32-bit ints per 256-bit seed. let voter_index = u32::decode(&mut &seed[offset..offset + 4]).expect("using 4 bytes for a 32-bit quantity") as usize % remaining; diff --git a/polkadot/runtime/src/lib.rs b/polkadot/runtime/src/lib.rs index 5d271b7dda5..b86329b3c47 100644 --- a/polkadot/runtime/src/lib.rs +++ b/polkadot/runtime/src/lib.rs @@ -30,8 +30,8 @@ mod slots; use rstd::prelude::*; use substrate_primitives::u32_trait::{_1, _2, _3, _4}; use primitives::{ - AccountId, AccountIndex, Balance, BlockNumber, Hash, Nonce, SessionKey, Signature, - parachain, AuraId + AccountId, AccountIndex, Balance, BlockNumber, Hash, Nonce, Signature, Moment, + parachain, }; use client::{ block_builder::api::{self as block_builder_api, InherentData, CheckInherentsResult}, @@ -44,6 +44,7 @@ use sr_primitives::{ }; use version::RuntimeVersion; use grandpa::{AuthorityId as GrandpaId, fg_primitives::{self, ScheduledChange}}; +use babe_primitives::AuthorityId as BabeId; use elections::VoteIndex; #[cfg(any(feature = "std", test))] use version::NativeVersion; @@ -51,6 +52,7 @@ use substrate_primitives::OpaqueMetadata; use srml_support::{ parameter_types, construct_runtime, traits::{SplitTwoWays, Currency} }; +use im_online::AuthorityId as ImOnlineId; #[cfg(feature = "std")] pub use staking::StakerStatus; @@ -97,7 +99,7 @@ pub fn native_version() -> NativeVersion { type NegativeImbalance = <Balances as Currency<AccountId>>::NegativeImbalance; parameter_types! { - pub const BlockHashCount: u64 = 250; + pub const BlockHashCount: BlockNumber = 250; pub const MaximumBlockWeight: Weight = 1_000_000_000; pub const AvailableBlockRatio: Perbill = Perbill::from_percent(75); pub const MaximumBlockLength: u32 = 5 * 1024 * 1024; @@ -105,6 +107,7 @@ parameter_types! { impl system::Trait for Runtime { type Origin = Origin; + type Call = Call; type Index = Nonce; type BlockNumber = BlockNumber; type Hash = Hash; @@ -120,9 +123,14 @@ impl system::Trait for Runtime { type AvailableBlockRatio = AvailableBlockRatio; } -impl aura::Trait for Runtime { - type HandleReport = aura::StakingSlasher<Runtime>; - type AuthorityId = AuraId; +parameter_types! { + pub const EpochDuration: u64 = EPOCH_DURATION_IN_SLOTS; + pub const ExpectedBlockTime: Moment = MILLISECS_PER_BLOCK; +} + +impl babe::Trait for Runtime { + type EpochDuration = EpochDuration; + type ExpectedBlockTime = ExpectedBlockTime; } impl indices::Trait for Runtime { @@ -144,8 +152,8 @@ parameter_types! { pub type DealWithFees = SplitTwoWays< Balance, NegativeImbalance, - _4, Treasury, // 4 parts (80%) goes to the treasury. - _1, ToAuthor, // 1 part (20%) goes to the block author. + _4, Treasury, // 4 parts (80%) goes to the treasury. + _1, ToAuthor, // 1 part (20%) goes to the block author. >; impl balances::Trait for Runtime { @@ -165,22 +173,22 @@ impl balances::Trait for Runtime { } parameter_types! { - pub const MinimumPeriod: u64 = SECS_PER_BLOCK / 2; + pub const MinimumPeriod: u64 = SLOT_DURATION / 2; } impl timestamp::Trait for Runtime { type Moment = u64; - type OnTimestampSet = Aura; + type OnTimestampSet = Babe; type MinimumPeriod = MinimumPeriod; } parameter_types! { - pub const UncleGenerations: u64 = 0; + pub const UncleGenerations: u32 = 0; } // TODO: substrate#2986 implement this properly impl authorship::Trait for Runtime { - type FindAuthor = (); + type FindAuthor = session::FindAccountFromAuthorIndex<Self, Babe>; type UncleGenerations = UncleGenerations; type FilterUncle = (); type EventHandler = (); @@ -191,11 +199,17 @@ parameter_types! { pub const Offset: BlockNumber = 0; } -type SessionHandlers = (Grandpa, Aura); +type SessionHandlers = (Grandpa, Babe, ImOnline, Parachains); impl_opaque_keys! { pub struct SessionKeys { - #[id(key_types::ED25519)] - pub ed25519: GrandpaId, + #[id(key_types::GRANDPA)] + pub grandpa: GrandpaId, + #[id(key_types::BABE)] + pub babe: BabeId, + #[id(key_types::IM_ONLINE)] + pub im_online: ImOnlineId, + #[id(parachain::PARACHAIN_KEY_TYPE_ID)] + pub parachain_validator: parachain::ValidatorId, } } @@ -208,7 +222,7 @@ impl_opaque_keys! { impl session::Trait for Runtime { type OnSessionEnding = Staking; type SessionHandler = SessionHandlers; - type ShouldEndSession = session::PeriodicSessions<Period, Offset>; + type ShouldEndSession = Babe; type Event = Event; type Keys = SessionKeys; type SelectInitialValidators = Staking; @@ -243,11 +257,9 @@ parameter_types! { pub const LaunchPeriod: BlockNumber = 28 * 24 * 60 * MINUTES; pub const VotingPeriod: BlockNumber = 28 * 24 * 60 * MINUTES; pub const EmergencyVotingPeriod: BlockNumber = 3 * 24 * 60 * MINUTES; - pub const MinimumDeposit: Balance = 100 * BUCKS; + pub const MinimumDeposit: Balance = 100 * DOLLARS; pub const EnactmentPeriod: BlockNumber = 30 * 24 * 60 * MINUTES; - pub const CooloffPeriod: BlockNumber = 30 * 24 * 60 * MINUTES; - - pub const AttestationPeriod: BlockNumber = 60 * MINUTES * 3; + pub const CooloffPeriod: BlockNumber = 28 * 24 * 60 * MINUTES; } impl democracy::Trait for Runtime { @@ -259,26 +271,35 @@ impl democracy::Trait for Runtime { type VotingPeriod = VotingPeriod; type EmergencyVotingPeriod = EmergencyVotingPeriod; type MinimumDeposit = MinimumDeposit; - type ExternalOrigin = collective::EnsureProportionAtLeast<_1, _2, AccountId, CouncilInstance>; - type ExternalMajorityOrigin = collective::EnsureProportionAtLeast<_2, _3, AccountId, CouncilInstance>; - type ExternalPushOrigin = collective::EnsureProportionAtLeast<_2, _3, AccountId, TechnicalInstance>; - type EmergencyOrigin = collective::EnsureProportionAtLeast<_1, _1, AccountId, CouncilInstance>; - type CancellationOrigin = collective::EnsureProportionAtLeast<_2, _3, AccountId, CouncilInstance>; - type VetoOrigin = collective::EnsureMember<AccountId, CouncilInstance>; + /// A straight majority of the council can decide what their next motion is. + type ExternalOrigin = collective::EnsureProportionAtLeast<_1, _2, AccountId, CouncilCollective>; + /// A super-majority can have the next scheduled referendum be a straight majority-carries vote. + type ExternalMajorityOrigin = collective::EnsureProportionAtLeast<_3, _4, AccountId, CouncilCollective>; + /// A unanimous council can have the next scheduled referendum be a straight default-carries + /// (NTB) vote. + type ExternalDefaultOrigin = collective::EnsureProportionAtLeast<_1, _1, AccountId, CouncilCollective>; + /// Two thirds of the technical committee can have an ExternalMajority/ExternalDefault vote + /// be tabled immediately and with a shorter voting/enactment period. + type FastTrackOrigin = collective::EnsureProportionAtLeast<_2, _3, AccountId, TechnicalCollective>; + // To cancel a proposal which has been passed, 2/3 of the council must agree to it. + type CancellationOrigin = collective::EnsureProportionAtLeast<_2, _3, AccountId, CouncilCollective>; + // Any single technical committee member may veto a coming council proposal, however they can + // only do it once and it lasts only for the cooloff period. + type VetoOrigin = collective::EnsureMember<AccountId, TechnicalCollective>; type CooloffPeriod = CooloffPeriod; } -type CouncilInstance = collective::Instance1; -impl collective::Trait<CouncilInstance> for Runtime { +type CouncilCollective = collective::Instance1; +impl collective::Trait<CouncilCollective> for Runtime { type Origin = Origin; type Proposal = Call; type Event = Event; } parameter_types! { - pub const CandidacyBond: Balance = 10 * BUCKS; - pub const VotingBond: Balance = 1 * BUCKS; - pub const VotingFee: Balance = 2 * BUCKS; + pub const CandidacyBond: Balance = 10 * DOLLARS; + pub const VotingBond: Balance = 1 * DOLLARS; + pub const VotingFee: Balance = 2 * DOLLARS; pub const PresentSlashPerVoter: Balance = 1 * CENTS; pub const CarryCount: u32 = 6; // one additional vote should go by before an inactive voter can be reaped. @@ -305,24 +326,34 @@ impl elections::Trait for Runtime { type DecayRatio = DecayRatio; } -type TechnicalInstance = collective::Instance2; -impl collective::Trait<TechnicalInstance> for Runtime { +type TechnicalCollective = collective::Instance2; +impl collective::Trait<TechnicalCollective> for Runtime { type Origin = Origin; type Proposal = Call; type Event = Event; } +impl membership::Trait<membership::Instance1> for Runtime { + type Event = Event; + type AddOrigin = collective::EnsureProportionMoreThan<_1, _2, AccountId, CouncilCollective>; + type RemoveOrigin = collective::EnsureProportionMoreThan<_1, _2, AccountId, CouncilCollective>; + type SwapOrigin = collective::EnsureProportionMoreThan<_1, _2, AccountId, CouncilCollective>; + type ResetOrigin = collective::EnsureProportionMoreThan<_1, _2, AccountId, CouncilCollective>; + type MembershipInitialized = TechnicalCommittee; + type MembershipChanged = TechnicalCommittee; +} + parameter_types! { pub const ProposalBond: Permill = Permill::from_percent(5); - pub const ProposalBondMinimum: Balance = 1 * BUCKS; + pub const ProposalBondMinimum: Balance = 1 * DOLLARS; pub const SpendPeriod: BlockNumber = 1 * DAYS; pub const Burn: Permill = Permill::from_percent(50); } impl treasury::Trait for Runtime { type Currency = Balances; - type ApproveOrigin = collective::EnsureMembers<_4, AccountId, CouncilInstance>; - type RejectOrigin = collective::EnsureMembers<_2, AccountId, CouncilInstance>; + type ApproveOrigin = collective::EnsureMembers<_4, AccountId, CouncilCollective>; + type RejectOrigin = collective::EnsureMembers<_2, AccountId, CouncilCollective>; type Event = Event; type MintedForSpending = (); type ProposalRejection = (); @@ -332,6 +363,12 @@ impl treasury::Trait for Runtime { type Burn = Burn; } +impl im_online::Trait for Runtime { + type Call = Call; + type Event = Event; + type UncheckedExtrinsic = UncheckedExtrinsic; +} + impl grandpa::Trait for Runtime { type Event = Event; } @@ -347,6 +384,10 @@ impl finality_tracker::Trait for Runtime { type ReportLatency = ReportLatency; } +parameter_types! { + pub const AttestationPeriod: BlockNumber = 50; +} + impl attestations::Trait for Runtime { type AttestationPeriod = AttestationPeriod; type ValidatorIdentities = parachains::ValidatorIdentities<Runtime>; @@ -395,8 +436,8 @@ construct_runtime!( UncheckedExtrinsic = UncheckedExtrinsic { System: system::{Module, Call, Storage, Config, Event}, - Aura: aura::{Module, Config<T>, Inherent(Timestamp)}, Timestamp: timestamp::{Module, Call, Storage, Inherent}, + Babe: babe::{Module, Call, Storage, Config, Inherent(Timestamp)}, Authorship: authorship::{Module, Call, Storage}, Indices: indices, Balances: balances, @@ -406,6 +447,7 @@ construct_runtime!( Council: collective::<Instance1>::{Module, Call, Storage, Origin<T>, Event<T>, Config<T>}, TechnicalCommittee: collective::<Instance2>::{Module, Call, Storage, Origin<T>, Event<T>, Config<T>}, Elections: elections::{Module, Call, Storage, Event<T>, Config<T>}, + TechnicalMembership: membership::<Instance1>::{Module, Call, Storage, Event<T>, Config<T>}, FinalityTracker: finality_tracker::{Module, Call, Inherent}, Grandpa: grandpa::{Module, Call, Storage, Config, Event}, CuratedGrandpa: curated_grandpa::{Module, Call, Config<T>, Storage}, @@ -415,6 +457,7 @@ construct_runtime!( Slots: slots::{Module, Call, Storage, Event<T>}, Claims: claims::{Module, Call, Storage, Event<T>, Config<T>, ValidateUnsigned}, Sudo: sudo, + ImOnline: im_online::{Module, Call, Storage, Event, ValidateUnsigned, Config<T>}, } ); @@ -430,6 +473,7 @@ pub type SignedBlock = generic::SignedBlock<Block>; pub type BlockId = generic::BlockId<Block>; /// The SignedExtension to the basic transaction logic. pub type SignedExtra = ( + system::CheckGenesis<Runtime>, system::CheckEra<Runtime>, system::CheckNonce<Runtime>, system::CheckWeight<Runtime>, @@ -499,7 +543,7 @@ impl_runtime_apis! { impl parachain::ParachainHost<Block> for Runtime { fn validators() -> Vec<parachain::ValidatorId> { - Aura::authorities() // only possible as long as parachain validator crypto === aura crypto + Parachains::authorities() } fn duty_roster() -> parachain::DutyRoster { Parachains::calculate_duty_roster().0 @@ -531,19 +575,40 @@ impl_runtime_apis! { None // disable forced changes. } - fn grandpa_authorities() -> Vec<(SessionKey, u64)> { + fn grandpa_authorities() -> Vec<(GrandpaId, u64)> { Grandpa::grandpa_authorities() } } - impl consensus_aura::AuraApi<Block, AuraId> for Runtime { - fn slot_duration() -> u64 { - Aura::slot_duration() + impl babe_primitives::BabeApi<Block> for Runtime { + fn startup_data() -> babe_primitives::BabeConfiguration { + // The choice of `c` parameter (where `1 - c` represents the + // probability of a slot being empty), is done in accordance to the + // slot duration and expected target block time, for safely + // resisting network delays of maximum two seconds. + // <https://research.web3.foundation/en/latest/polkadot/BABE/Babe/#6-practical-results> + babe_primitives::BabeConfiguration { + median_required_blocks: 1000, + slot_duration: Babe::slot_duration(), + c: (278, 1000), + } } - fn authorities() -> Vec<AuraId> { - Aura::authorities() + fn epoch() -> babe_primitives::Epoch { + babe_primitives::Epoch { + start_slot: Babe::epoch_start_slot(), + authorities: Babe::authorities(), + epoch_index: Babe::epoch_index(), + randomness: Babe::randomness(), + duration: EpochDuration::get(), + } } } + impl substrate_session::SessionKeys<Block> for Runtime { + fn generate_session_keys(seed: Option<Vec<u8>>) -> Vec<u8> { + let seed = seed.as_ref().map(|s| rstd::str::from_utf8(&s).expect("Seed is an utf8 string")); + SessionKeys::generate(seed) + } + } } diff --git a/polkadot/runtime/src/parachains.rs b/polkadot/runtime/src/parachains.rs index b44cba656c1..e733843c240 100644 --- a/polkadot/runtime/src/parachains.rs +++ b/polkadot/runtime/src/parachains.rs @@ -18,14 +18,14 @@ use rstd::prelude::*; use rstd::collections::btree_map::BTreeMap; -use parity_codec::{Encode, Decode, HasCompact}; +use codec::{Encode, Decode, HasCompact}; use srml_support::{decl_storage, decl_module, fail, ensure}; use sr_primitives::traits::{Hash as HashT, BlakeTwo256, Member, CheckedConversion, Saturating, One}; use sr_primitives::weights::SimpleDispatchInfo; -use primitives::{Hash, Balance, ParachainPublic, parachain::{ +use primitives::{Hash, Balance, parachain::{ self, Id as ParaId, Chain, DutyRoster, AttestedCandidate, Statement, AccountIdConversion, - ParachainDispatchOrigin, UpwardMessage, BlockIngressRoots, + ParachainDispatchOrigin, UpwardMessage, BlockIngressRoots, ValidatorId }}; use {system, session}; use srml_support::{ @@ -33,9 +33,6 @@ use srml_support::{ traits::{Currency, Get, WithdrawReason, ExistenceRequirement} }; -#[cfg(feature = "std")] -use srml_support::storage::hashed::generator; - use inherents::{ProvideInherent, InherentData, RuntimeString, MakeFatalError, InherentIdentifier}; #[cfg(any(feature = "std", test))] @@ -217,7 +214,7 @@ const WATERMARK_QUEUE_SIZE: usize = 20000; decl_storage! { trait Store for Module<T: Trait> as Parachains { /// All authorities' keys at the moment. - pub Authorities get(authorities) config(authorities): Vec<ParachainPublic>; + pub Authorities get(authorities) config(authorities): Vec<ValidatorId>; /// Vector of all parachain IDs. pub Parachains get(active_parachains): Vec<ParaId>; /// The parachains registered at present. @@ -252,27 +249,33 @@ decl_storage! { add_extra_genesis { config(parachains): Vec<(ParaId, Vec<u8>, Vec<u8>)>; config(_phdata): PhantomData<T>; - build(|storage: &mut StorageOverlay, _: &mut ChildrenStorageOverlay, config: &GenesisConfig<T>| { - use sr_primitives::traits::Zero; - - let mut p = config.parachains.clone(); - p.sort_unstable_by_key(|&(ref id, _, _)| *id); - p.dedup_by_key(|&mut (ref id, _, _)| *id); - - let only_ids: Vec<_> = p.iter().map(|&(ref id, _, _)| id).cloned().collect(); - - <Parachains as generator::StorageValue<_>>::put(&only_ids, storage); - - for (id, code, genesis) in p { - // no ingress -- a chain cannot be routed to until it is live. - <Code as generator::StorageMap<_, _>>::insert(&id, &code, storage); - <Heads as generator::StorageMap<_, _>>::insert(&id, &genesis, storage); - <Watermarks<T> as generator::StorageMap<_, _>>::insert(&id, &Zero::zero(), storage); - } - }); + build(build::<T>); } } +#[cfg(feature = "std")] +fn build<T: Trait>( + storage: &mut (StorageOverlay, ChildrenStorageOverlay), + config: &GenesisConfig<T> +) { + let mut p = config.parachains.clone(); + p.sort_unstable_by_key(|&(ref id, _, _)| *id); + p.dedup_by_key(|&mut (ref id, _, _)| *id); + + let only_ids: Vec<ParaId> = p.iter().map(|&(ref id, _, _)| id).cloned().collect(); + + sr_io::with_storage(storage, || { + Parachains::put(&only_ids); + + for (id, code, genesis) in p { + // no ingress -- a chain cannot be routed to until it is live. + Code::insert(&id, &code); + Heads::insert(&id, &genesis); + <Watermarks<T>>::insert(&id, &sr_primitives::traits::Zero::zero()); + } + }); +} + decl_module! { /// Parachains module. pub struct Module<T: Trait> for enum Call where origin: <T as system::Trait>::Origin { @@ -380,7 +383,7 @@ impl<T: Trait> Module<T> { origin: ParachainDispatchOrigin, data: &[u8], ) { - if let Some(message_call) = T::Call::decode(&mut &data[..]) { + if let Ok(message_call) = <T as Trait>::Call::decode(&mut &data[..]) { let origin: <T as Trait>::Origin = match origin { ParachainDispatchOrigin::Signed => system::RawOrigin::Signed(id.into_account()).into(), @@ -528,6 +531,7 @@ impl<T: Trait> Module<T> { pub fn calculate_duty_roster() -> (DutyRoster, [u8; 32]) { let parachains = Self::active_parachains(); let parachain_count = parachains.len(); + // TODO: use decode length. substrate #2794 let validator_count = Self::authorities().len(); let validators_per_parachain = if parachain_count != 0 { (validator_count - 1) / parachain_count } else { 0 }; @@ -561,12 +565,12 @@ impl<T: Trait> Module<T> { let orig_seed = seed.clone().to_fixed_bytes(); // shuffle - for i in 0..(validator_count - 1) { + for i in 0..(validator_count.saturating_sub(1)) { // 4 bytes of entropy used per cycle, 32 bytes entropy per hash let offset = (i * 4 % 32) as usize; // number of roles remaining to select from. - let remaining = (validator_count - i) as usize; + let remaining = rstd::cmp::max(1, (validator_count - i) as usize); // 8 32-bit ints per 256-bit seed. let val_index = u32::decode(&mut &seed[offset..offset + 4]) @@ -656,7 +660,7 @@ impl<T: Trait> Module<T> { -> rstd::result::Result<IncludedBlocks<T>, &'static str> { use primitives::parachain::ValidityAttestation; - use sr_primitives::traits::Verify; + use sr_primitives::traits::AppVerify; // returns groups of slices that have the same chain ID. // assumes the inner slice is sorted by id. @@ -801,7 +805,7 @@ impl<T: Trait> Module<T> { para_block_hashes.push(candidate_hash.unwrap_or_else(|| candidate.candidate().hash())); - ensure!( + ensure!( candidate.validity_votes.len() == expected_votes_len, "Extra untagged validity votes along with candidate" ); @@ -834,7 +838,7 @@ impl<T: Trait> Module<T> { } impl<T: Trait> session::OneSessionHandler<T::AccountId> for Module<T> { - type Key = ParachainPublic; + type Key = ValidatorId; fn on_new_session<'a, I: 'a>(changed: bool, validators: I, _queued: I) where I: Iterator<Item=(&'a T::AccountId, Self::Key)> @@ -881,10 +885,11 @@ mod tests { testing::{UintAuthorityId, Header}, }; use primitives::{ - parachain::{CandidateReceipt, HeadData, ValidityAttestation}, SessionKey, - BlockNumber, AuraId, + parachain::{CandidateReceipt, HeadData, ValidityAttestation, ValidatorId}, + BlockNumber, }; - use keyring::Ed25519Keyring; + use crate::constants::time::*; + use keyring::Sr25519Keyring; use srml_support::{ impl_outer_origin, impl_outer_dispatch, assert_ok, assert_err, parameter_types, }; @@ -905,13 +910,14 @@ mod tests { #[derive(Clone, Eq, PartialEq)] pub struct Test; parameter_types! { - pub const BlockHashCount: u64 = 250; + pub const BlockHashCount: u32 = 250; pub const MaximumBlockWeight: u32 = 4 * 1024 * 1024; pub const MaximumBlockLength: u32 = 4 * 1024 * 1024; pub const AvailableBlockRatio: Perbill = Perbill::from_percent(75); } impl system::Trait for Test { type Origin = Origin; + type Call = Call; type Index = u64; type BlockNumber = u64; type Hash = H256; @@ -957,9 +963,14 @@ mod tests { type MinimumPeriod = MinimumPeriod; } - impl aura::Trait for Test { - type HandleReport = aura::StakingSlasher<Test>; - type AuthorityId = AuraId; + parameter_types! { + pub const EpochDuration: u64 = EPOCH_DURATION_IN_SLOTS; + pub const ExpectedBlockTime: u64 = MILLISECS_PER_BLOCK; + } + + impl babe::Trait for Test { + type EpochDuration = EpochDuration; + type ExpectedBlockTime = ExpectedBlockTime; } parameter_types! { @@ -989,7 +1000,7 @@ mod tests { parameter_types! { pub const SessionsPerEra: session::SessionIndex = 6; pub const BondingDuration: staking::EraIndex = 24 * 28; - pub const AttestationPeriod: u64 = 100; + pub const AttestationPeriod: BlockNumber = 100; } impl staking::Trait for Test { @@ -1021,17 +1032,19 @@ mod tests { fn new_test_ext(parachains: Vec<(ParaId, Vec<u8>, Vec<u8>)>) -> TestExternalities<Blake2Hasher> { use staking::StakerStatus; + use babe::AuthorityId as BabeAuthorityId; + + let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap(); - let (mut t, mut c) = system::GenesisConfig::default().build_storage::<Test>().unwrap(); let authority_keys = [ - Ed25519Keyring::Alice, - Ed25519Keyring::Bob, - Ed25519Keyring::Charlie, - Ed25519Keyring::Dave, - Ed25519Keyring::Eve, - Ed25519Keyring::Ferdie, - Ed25519Keyring::One, - Ed25519Keyring::Two, + Sr25519Keyring::Alice, + Sr25519Keyring::Bob, + Sr25519Keyring::Charlie, + Sr25519Keyring::Dave, + Sr25519Keyring::Eve, + Sr25519Keyring::Ferdie, + Sr25519Keyring::One, + Sr25519Keyring::Two, ]; // stashes are the index. @@ -1039,7 +1052,11 @@ mod tests { .map(|(i, _k)| (i as u64, UintAuthorityId(i as u64))) .collect(); - let authorities: Vec<_> = authority_keys.iter().map(|k| SessionKey::from(*k)).collect(); + let authorities: Vec<_> = authority_keys.iter().map(|k| ValidatorId::from(k.public())).collect(); + let babe_authorities: Vec<_> = authority_keys.iter() + .map(|k| BabeAuthorityId::from(k.public())) + .map(|k| (k, 1)) + .collect(); // controllers are the index + 1000 let stakers: Vec<_> = (0..authority_keys.len()).map(|i| ( @@ -1051,23 +1068,24 @@ mod tests { let balances: Vec<_> = (0..authority_keys.len()).map(|i| (i as u64, 10_000_000)).collect(); - session::GenesisConfig::<Test> { - keys: session_keys, - }.assimilate_storage(&mut t, &mut c).unwrap(); GenesisConfig::<Test> { parachains, authorities: authorities.clone(), _phdata: Default::default(), - }.assimilate_storage(&mut t, &mut c).unwrap(); + }.assimilate_storage(&mut t).unwrap(); + + session::GenesisConfig::<Test> { + keys: session_keys, + }.assimilate_storage(&mut t).unwrap(); - aura::GenesisConfig::<Test> { - authorities, - }.assimilate_storage(&mut t, &mut c).unwrap(); + babe::GenesisConfig { + authorities: babe_authorities, + }.assimilate_storage(&mut t).unwrap(); balances::GenesisConfig::<Test> { balances, vesting: vec![], - }.assimilate_storage(&mut t, &mut c).unwrap(); + }.assimilate_storage(&mut t).unwrap(); staking::GenesisConfig::<Test> { current_era: 0, @@ -1077,7 +1095,7 @@ mod tests { offline_slash: Perbill::from_percent(5), offline_slash_grace: 0, invulnerables: vec![], - }.assimilate_storage(&mut t, &mut c).unwrap(); + }.assimilate_storage(&mut t).unwrap(); t.into() } @@ -1094,8 +1112,10 @@ mod tests { let candidate_hash = candidate.candidate.hash(); let authorities = Parachains::authorities(); - let extract_key = |public: SessionKey| { - Ed25519Keyring::from_raw_public(public.0).unwrap() + let extract_key = |public: ValidatorId| { + let mut raw_public = [0; 32]; + raw_public.copy_from_slice(public.as_ref()); + Sr25519Keyring::from_raw_public(raw_public).unwrap() }; let validation_entries = duty_roster.validator_duty.iter() diff --git a/polkadot/runtime/src/slot_range.rs b/polkadot/runtime/src/slot_range.rs index c9f2b5f8229..5e62edbaed2 100644 --- a/polkadot/runtime/src/slot_range.rs +++ b/polkadot/runtime/src/slot_range.rs @@ -19,7 +19,7 @@ use rstd::{result, ops::Add, convert::{TryFrom, TryInto}}; use sr_primitives::traits::CheckedSub; -use parity_codec::{Encode, Decode}; +use codec::{Encode, Decode}; /// Total number of possible sub ranges of slots. pub const SLOT_RANGE_COUNT: usize = 10; diff --git a/polkadot/runtime/src/slots.rs b/polkadot/runtime/src/slots.rs index 8ccf021d651..8aa39f3fa1c 100644 --- a/polkadot/runtime/src/slots.rs +++ b/polkadot/runtime/src/slots.rs @@ -21,7 +21,7 @@ use rstd::{prelude::*, mem::swap, convert::TryInto}; use sr_primitives::traits::{CheckedSub, StaticLookup, Zero, One, CheckedConversion, Hash}; use sr_primitives::weights::SimpleDispatchInfo; -use parity_codec::{Encode, Decode}; +use codec::{Encode, Decode}; use srml_support::{ decl_module, decl_storage, decl_event, StorageValue, StorageMap, ensure, traits::{Currency, ReservableCurrency, WithdrawReason, ExistenceRequirement, Get} @@ -813,13 +813,14 @@ mod tests { #[derive(Clone, Eq, PartialEq)] pub struct Test; parameter_types! { - pub const BlockHashCount: u64 = 250; + pub const BlockHashCount: u32 = 250; pub const MaximumBlockWeight: u32 = 4 * 1024 * 1024; pub const MaximumBlockLength: u32 = 4 * 1024 * 1024; pub const AvailableBlockRatio: Perbill = Perbill::from_percent(75); } impl system::Trait for Test { type Origin = Origin; + type Call = (); type Index = u64; type BlockNumber = u64; type Hash = H256; @@ -926,11 +927,11 @@ mod tests { // This function basically just builds a genesis storage key/value store according to // our desired mock up. fn new_test_ext() -> sr_io::TestExternalities<Blake2Hasher> { - let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap().0; - t.extend(balances::GenesisConfig::<Test>{ + let mut t = system::GenesisConfig::default().build_storage::<Test>().unwrap(); + balances::GenesisConfig::<Test>{ balances: vec![(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)], vesting: vec![], - }.build_storage().unwrap().0); + }.assimilate_storage(&mut t).unwrap(); t.into() } diff --git a/polkadot/service/Cargo.toml b/polkadot/service/Cargo.toml index ee50e9baedc..7c10106d7fd 100644 --- a/polkadot/service/Cargo.toml +++ b/polkadot/service/Cargo.toml @@ -8,6 +8,8 @@ edition = "2018" parking_lot = "0.9.0" lazy_static = "1.0" log = "0.4.6" +futures = "0.1" +exit-future = "0.1" slog = "^2" hex-literal = "0.2" av_store = { package = "polkadot-availability-store", path = "../availability-store" } @@ -20,7 +22,6 @@ sr-io = { git = "https://github.com/paritytech/substrate", branch = "polkadot-ma sr-primitives = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } primitives = { package = "substrate-primitives", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } client = { package = "substrate-client", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } -aura = { package = "substrate-consensus-aura", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } consensus_common = { package = "substrate-consensus-common", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } grandpa = { package = "substrate-finality-grandpa", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } grandpa_primitives = { package = "substrate-finality-grandpa-primitives", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } @@ -29,3 +30,7 @@ service = { package = "substrate-service", git = "https://github.com/paritytech/ telemetry = { package = "substrate-telemetry", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } transaction_pool = { package = "substrate-transaction-pool", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } substrate-keystore = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } +srml_babe = { package = "srml-babe", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } +im-online = { package = "srml-im-online", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } +babe = { package = "substrate-consensus-babe", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } +babe-primitives = { package = "substrate-consensus-babe-primitives", git = "https://github.com/paritytech/substrate", default-features = false, branch = "polkadot-master" } diff --git a/polkadot/service/res/alexander.json b/polkadot/service/res/kusama.json similarity index 100% rename from polkadot/service/res/alexander.json rename to polkadot/service/res/kusama.json diff --git a/polkadot/service/src/chain_spec.rs b/polkadot/service/src/chain_spec.rs index fa59d218c6c..6fba69eeffd 100644 --- a/polkadot/service/src/chain_spec.rs +++ b/polkadot/service/src/chain_spec.rs @@ -16,17 +16,20 @@ //! Polkadot chain configurations. -use primitives::{ed25519, sr25519, Pair, crypto::UncheckedInto}; -use polkadot_primitives::{AccountId, SessionKey}; +use primitives::{Pair, Public, crypto::UncheckedInto}; +use polkadot_primitives::{AccountId, parachain::ValidatorId}; use polkadot_runtime::{ - GenesisConfig, CouncilConfig, ElectionsConfig, DemocracyConfig, SystemConfig, AuraConfig, + GenesisConfig, CouncilConfig, ElectionsConfig, DemocracyConfig, SystemConfig, BabeConfig, SessionConfig, StakingConfig, BalancesConfig, Perbill, SessionKeys, TechnicalCommitteeConfig, GrandpaConfig, SudoConfig, IndicesConfig, CuratedGrandpaConfig, StakerStatus, WASM_BINARY, - ClaimsConfig, + ClaimsConfig, ImOnlineConfig, ParachainsConfig }; use polkadot_runtime::constants::{currency::DOTS, time::*}; use telemetry::TelemetryEndpoints; use hex_literal::hex; +use babe_primitives::AuthorityId as BabeId; +use grandpa::AuthorityId as GrandpaId; +use im_online::AuthorityId as ImOnlineId; const STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/"; const DEFAULT_PROTOCOL_ID: &str = "dot"; @@ -34,34 +37,58 @@ const DEFAULT_PROTOCOL_ID: &str = "dot"; /// Specialised `ChainSpec`. pub type ChainSpec = ::service::ChainSpec<GenesisConfig>; -pub fn poc_3_testnet_config() -> Result<ChainSpec, String> { - ChainSpec::from_embedded(include_bytes!("../res/alexander.json")) +pub fn kusama_config() -> Result<ChainSpec, String> { + ChainSpec::from_json_bytes(&include_bytes!("../res/kusama.json")[..]) +} + +fn session_keys( + babe: BabeId, + grandpa: GrandpaId, + im_online: ImOnlineId, + parachain_validator: ValidatorId +) -> SessionKeys { + SessionKeys { babe, grandpa, im_online, parachain_validator } } fn staging_testnet_config_genesis() -> GenesisConfig { // subkey inspect "$SECRET" let endowed_accounts = vec![ - hex!["42d69e4222c08885a4d6ff65f01852ba4a1599b683ad66286e4603d825e26b49"].unchecked_into(), // 5DaLmkrGTFvSTHBpShqqqRYaydw1sT4u3NCogYiE8Q1LqUUp + hex!["12b782529c22032ed4694e0f6e7d486be7daa6d12088f6bc74d593b3900b8438"].unchecked_into(), // 5CVFESwfkk7NmhQ6FwHCM9roBvr9BGa4vJHFYU8DnGQxrXvz ]; // for i in 1 2 3 4; do for j in stash controller; do subkey inspect "$SECRET//$i//$j"; done; done - // for i in 1 2 3 4; do for j in session; do subkey -e inspect "$SECRET//$i//$j"; done; done - let initial_authorities: Vec<(AccountId, AccountId, SessionKey)> = vec![( - hex!["543cf15f6a0289e48eb4f30d451d1731c5fb0e1b2c5a4b99439c11808af3432d"].unchecked_into(), // 5Dy9yz2mjwDmTgjkDFxjPBpovKmKAgTndiRiTp4DfrTEdUvi - hex!["8a6ea654337e4a28ce7be124f73ad84702619942722d01cc271e5b421653c56d"].unchecked_into(), // 5FCDLPUMZpZPRfouRfQDZp74typV9SjSxPgG6ymwe5Z3Sbko - hex!["03644a181bc4e4197914aa109f3c97b6fe8c4787a82a1ddfab54e4ebedd8ab20"].unchecked_into(), // 5C99nwu8Ucq1yUJfajviwbqMAejpmaERHpmkPVWiFdxiF6yg + // for i in 1 2 3 4; do for j in babe; do subkey --sr25519 inspect "$SECRET//$i//$j"; done; done + // for i in 1 2 3 4; do for j in grandpa; do subkey --ed25519 inspect "$SECRET//$i//$j"; done; done + // for i in 1 2 3 4; do for j in im_online; do subkey --sr25519 inspect "$SECRET//$i//$j"; done; done + // for i in 1 2 3 4; do for j in parachains; do subkey --sr25519 inspect "$SECRET//$i//$j"; done; done + let initial_authorities: Vec<(AccountId, AccountId, BabeId, GrandpaId, ImOnlineId, ValidatorId)> = vec![( + hex!["32a5718e87d16071756d4b1370c411bbbb947eb62f0e6e0b937d5cbfc0ea633b"].unchecked_into(), // 5DD7Q4VEfPTLEdn11CnThoHT5f9xKCrnofWJL5SsvpTghaAT + hex!["bee39fe862c85c91aaf343e130d30b643c6ea0b4406a980206f1df8331f7093b"].unchecked_into(), // 5GNzaEqhrZAtUQhbMe2gn9jBuNWfamWFZHULryFwBUXyd1cG + hex!["a639b507ee1585e0b6498ff141d6153960794523226866d1b44eba3f25f36356"].unchecked_into(), // 5FpewyS2VY8Cj3tKgSckq8ECkjd1HKHvBRnWhiHqRQsWfFC1 + hex!["76620f7c98bce8619979c2b58cf2b0aff71824126d2b039358729dad993223db"].unchecked_into(), // 5EjvdwATjyFFikdZibVvx1q5uBHhphS2Mnsq5c7yfaYK25vm + hex!["a639b507ee1585e0b6498ff141d6153960794523226866d1b44eba3f25f36356"].unchecked_into(), // 5FpewyS2VY8Cj3tKgSckq8ECkjd1HKHvBRnWhiHqRQsWfFC1 + hex!["a639b507ee1585e0b6498ff141d6153960794523226866d1b44eba3f25f36356"].unchecked_into(), // 5FpewyS2VY8Cj3tKgSckq8ECkjd1HKHvBRnWhiHqRQsWfFC1 ),( - hex!["c4957aa922910004f3b006d638b034070407dcb21e0905cb5cca9b58aec7fa3e"].unchecked_into(), // 5GWTeVF49JR9dAMVe4rRAAMXuhEjRAhSiYqQV4LbwpHTDLei - hex!["1adea46f5c3d272cd6426b338dd77d5bca3aff615338c82a0f02f4c62d89280f"].unchecked_into(), // 5CfwEv8TQKnszHNhYPuij6EtLZHCcaN3DgzfPCozcS9oxZzB - hex!["d739e1bb4c2b13ea1fff9be72e72d3bb1b364eb3b26176ab9a9512d386b7510b"].unchecked_into(), // 5GvuM53k1Z4nAB5zXJFgkRSHv4Bqo4BsvgbQWNWkiWZTMwWY + hex!["b496c98a405ceab59b9e970e59ef61acd7765a19b704e02ab06c1cdfe171e40f"].unchecked_into(), // 5G9VGb8ESBeS8Ca4or43RfhShzk9y7T5iTmxHk5RJsjZwsRx + hex!["86d3a7571dd60139d297e55d8238d0c977b2e208c5af088f7f0136b565b0c103"].unchecked_into(), // 5F7V9Y5FcxKXe1aroqvPeRiUmmeQwTFcL3u9rrPXcMuMiCNx + hex!["765e46067adac4d1fe6c783aa2070dfa64a19f84376659e12705d1734b3eae01"].unchecked_into(), // 5GvuM53k1Z4nAB5zXJFgkRSHv4Bqo4BsvgbQWNWkiWZTMwWY + hex!["e2234d661bee4a04c38392c75d1566200aa9e6ae44dd98ee8765e4cc9af63cb7"].unchecked_into(), // 5HBDAaybNqjmY7ww8ZcZZY1L5LHxvpnyfqJwoB7HhR6raTmG + hex!["765e46067adac4d1fe6c783aa2070dfa64a19f84376659e12705d1734b3eae01"].unchecked_into(), // 5GvuM53k1Z4nAB5zXJFgkRSHv4Bqo4BsvgbQWNWkiWZTMwWY + hex!["765e46067adac4d1fe6c783aa2070dfa64a19f84376659e12705d1734b3eae01"].unchecked_into(), // 5GvuM53k1Z4nAB5zXJFgkRSHv4Bqo4BsvgbQWNWkiWZTMwWY ),( - hex!["6c3d14686e97d393814a09bea4246b9f273dcdbdef6731dcab3430b36820f135"].unchecked_into(), // 5EWdAzp9aJseLKVNeWJwE2K8PD47qzMbKVysCXr67xnEohYL - hex!["7a73b9fcb97cee5c2240d88ca9baea06758fac450efe6f90a72014c939d41857"].unchecked_into(), // 5EqG5RSujgrtSBB5DQvR1Z2EMxAe92sAdWNTNHtX4nL2MkPi - hex!["145791f7187d91398d8b445598f62be39b766d6e33e9d57b69c4d23fca218d7f"].unchecked_into(), // 5CXNq1mSKJT4Sc2CbyBBdANeSkbUvdWvE4czJjKXfBHi9sX5 + hex!["ae12f70078a22882bf5135d134468f77301927aa67c376e8c55b7ff127ace115"].unchecked_into(), // 5FzwpgGvk2kk9agow6KsywLYcPzjYc8suKej2bne5G5b9YU3 + hex!["7addb914ec8486bbc60643d2647685dcc06373401fa80e09813b630c5831d54b"].unchecked_into(), // 5EqoZhVC2BcsM4WjvZNidu2muKAbu5THQTBKe3EjvxXkdP7A + hex!["664eae1ca4713dd6abf8c15e6c041820cda3c60df97dc476c2cbf7cb82cb2d2e"].unchecked_into(), // 5CXNq1mSKJT4Sc2CbyBBdANeSkbUvdWvE4czJjKXfBHi9sX5 + hex!["5b57ed1443c8967f461db1f6eb2ada24794d163a668f1cf9d9ce3235dfad8799"].unchecked_into(), // 5E8ULLQrDAtWhfnVfZmX41Yux86zNAwVJYguWJZVWrJvdhBe + hex!["664eae1ca4713dd6abf8c15e6c041820cda3c60df97dc476c2cbf7cb82cb2d2e"].unchecked_into(), // 5CXNq1mSKJT4Sc2CbyBBdANeSkbUvdWvE4czJjKXfBHi9sX5 + hex!["664eae1ca4713dd6abf8c15e6c041820cda3c60df97dc476c2cbf7cb82cb2d2e"].unchecked_into(), // 5CXNq1mSKJT4Sc2CbyBBdANeSkbUvdWvE4czJjKXfBHi9sX5 ),( - hex!["be6726c17ad7b5844c9e0ab6a1698d00d88bf183f0f82d8ec9627531c9ddc934"].unchecked_into(), // 5GNMbce1P2FfjvcPcoUxzjj6bYSRdQ2RpsbCyF9ozwMxx3NS - hex!["123b9048ba61265547ad3f336dfa48c16851ba1a96691e5d1ab3be1725db0614"].unchecked_into(), // 5CUcQvAgMzXMpQSz8mgzeiswDFHED88NiEK4byfS5TLaTJow - hex!["8abecfa66704176be23df099bf441ea65444992d63b3ced3e76a17a4d38b0b0e"].unchecked_into(), // 5FCd9Y7RLNyxz5wnCAErfsLbXGG34L2BaZRHzhiJcMUMd5zd + hex!["0867dbb49721126df589db100dda728dc3b475cbf414dad8f72a1d5e84897252"].unchecked_into(), // 5CFj6Kg9rmVn1vrqpyjau2ztyBzKeVdRKwNPiA3tqhB5HPqq + hex!["26ab2b4b2eba2263b1e55ceb48f687bb0018130a88df0712fbdaf6a347d50e2a"].unchecked_into(), // 5CwQXP6nvWzigFqNhh2jvCaW9zWVzkdveCJY3tz2MhXMjTon + hex!["2adb17a5cafbddc7c3e00ec45b6951a8b12ce2264235b4def342513a767e5d3d"].unchecked_into(), // 5FCd9Y7RLNyxz5wnCAErfsLbXGG34L2BaZRHzhiJcMUMd5zd + hex!["e60d23f49e93c1c1f2d7c115957df5bbd7faf5ebf138d1e9d02e8b39a1f63df0"].unchecked_into(), // 5HGLmrZsiTFTPp3QoS1W8w9NxByt8PVq79reqvdxNcQkByqK + hex!["2adb17a5cafbddc7c3e00ec45b6951a8b12ce2264235b4def342513a767e5d3d"].unchecked_into(), // 5FCd9Y7RLNyxz5wnCAErfsLbXGG34L2BaZRHzhiJcMUMd5zd + hex!["2adb17a5cafbddc7c3e00ec45b6951a8b12ce2264235b4def342513a767e5d3d"].unchecked_into(), // 5FCd9Y7RLNyxz5wnCAErfsLbXGG34L2BaZRHzhiJcMUMd5zd )]; const ENDOWMENT: u128 = 1_000_000 * DOTS; @@ -87,7 +114,7 @@ fn staging_testnet_config_genesis() -> GenesisConfig { session: Some(SessionConfig { keys: initial_authorities.iter().map(|x| ( x.0.clone(), - SessionKeys { ed25519: x.2.clone() }, + session_keys(x.2.clone(), x.3.clone(), x.4.clone(), x.5.clone()), )).collect::<Vec<_>>(), }), staking: Some(StakingConfig { @@ -114,16 +141,25 @@ fn staging_testnet_config_genesis() -> GenesisConfig { term_duration: 28 * DAYS, desired_seats: 0, }), - sudo: Some(SudoConfig { - key: endowed_accounts[0].clone(), + membership_Instance1: Some(Default::default()), + babe: Some(BabeConfig { + authorities: initial_authorities.iter().map(|x| (x.2.clone(), 1)).collect(), }), grandpa: Some(GrandpaConfig { - authorities: initial_authorities.iter().map(|x| (x.2.clone(), 1)).collect(), + authorities: initial_authorities.iter().map(|x| (x.3.clone(), 1)).collect(), }), - aura: Some(AuraConfig { - authorities: initial_authorities.iter().map(|x| x.2.clone()).collect(), + im_online: Some(ImOnlineConfig { + gossip_at: 0, + keys: initial_authorities.iter().map(|x| x.4.clone()).collect(), + }), + parachains: Some(ParachainsConfig { + authorities: initial_authorities.iter().map(|x| x.5.clone()).collect(), + parachains: vec![], + _phdata: Default::default(), + }), + sudo: Some(SudoConfig { + key: endowed_accounts[0].clone(), }), - parachains: Some(Default::default()), curated_grandpa: Some(CuratedGrandpaConfig { shuffle_period: 1024, }), @@ -148,49 +184,53 @@ pub fn staging_testnet_config() -> ChainSpec { ) } -/// Helper function to generate AccountId from seed -pub fn get_account_id_from_seed(seed: &str) -> AccountId { - sr25519::Pair::from_string(&format!("//{}", seed), None) +/// Helper function to generate a crypto pair from seed +pub fn get_from_seed<TPublic: Public>(seed: &str) -> <TPublic::Pair as Pair>::Public { + TPublic::Pair::from_string(&format!("//{}", seed), None) .expect("static values are valid; qed") .public() } -/// Helper function to generate SessionKey from seed -pub fn get_session_key_from_seed(seed: &str) -> SessionKey { - ed25519::Pair::from_string(&format!("//{}", seed), None) - .expect("static values are valid; qed") - .public() -} /// Helper function to generate stash, controller and session key from seed -pub fn get_authority_keys_from_seed(seed: &str) -> (AccountId, AccountId, SessionKey) { +pub fn get_authority_keys_from_seed(seed: &str) -> ( + AccountId, + AccountId, + BabeId, + GrandpaId, + ImOnlineId, + ValidatorId +) { ( - get_account_id_from_seed(&format!("{}//stash", seed)), - get_account_id_from_seed(seed), - get_session_key_from_seed(seed), + get_from_seed::<AccountId>(&format!("{}//stash", seed)), + get_from_seed::<AccountId>(seed), + get_from_seed::<BabeId>(seed), + get_from_seed::<GrandpaId>(seed), + get_from_seed::<ImOnlineId>(seed), + get_from_seed::<ValidatorId>(seed), ) } /// Helper function to create GenesisConfig for testing pub fn testnet_genesis( - initial_authorities: Vec<(AccountId, AccountId, SessionKey)>, + initial_authorities: Vec<(AccountId, AccountId, BabeId, GrandpaId, ImOnlineId, ValidatorId)>, root_key: AccountId, endowed_accounts: Option<Vec<AccountId>>, ) -> GenesisConfig { let endowed_accounts: Vec<AccountId> = endowed_accounts.unwrap_or_else(|| { 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"), + get_from_seed::<AccountId>("Alice"), + get_from_seed::<AccountId>("Bob"), + get_from_seed::<AccountId>("Charlie"), + get_from_seed::<AccountId>("Dave"), + get_from_seed::<AccountId>("Eve"), + get_from_seed::<AccountId>("Ferdie"), + get_from_seed::<AccountId>("Alice//stash"), + get_from_seed::<AccountId>("Bob//stash"), + get_from_seed::<AccountId>("Charlie//stash"), + get_from_seed::<AccountId>("Dave//stash"), + get_from_seed::<AccountId>("Eve//stash"), + get_from_seed::<AccountId>("Ferdie//stash"), ] }); @@ -214,7 +254,7 @@ pub fn testnet_genesis( session: Some(SessionConfig { keys: initial_authorities.iter().map(|x| ( x.0.clone(), - SessionKeys { ed25519: x.2.clone() }, + session_keys(x.2.clone(), x.3.clone(), x.4.clone(), x.5.clone()), )).collect::<Vec<_>>(), }), staking: Some(StakingConfig { @@ -240,22 +280,31 @@ pub fn testnet_genesis( elections: Some(ElectionsConfig { members: endowed_accounts.iter() .filter(|&endowed| initial_authorities.iter() - .find(|&(_, controller, _)| controller == endowed) + .find(|&(_, controller, _, _, _, _)| controller == endowed) .is_none() ).map(|a| (a.clone(), 1000000)).collect(), presentation_duration: 10, term_duration: 1000000, desired_seats, }), - parachains: Some(Default::default()), - sudo: Some(SudoConfig { - key: root_key, + membership_Instance1: Some(Default::default()), + babe: Some(BabeConfig { + authorities: initial_authorities.iter().map(|x| (x.2.clone(), 1)).collect(), }), grandpa: Some(GrandpaConfig { - authorities: initial_authorities.iter().map(|x| (x.2.clone(), 1)).collect(), + authorities: initial_authorities.iter().map(|x| (x.3.clone(), 1)).collect(), + }), + im_online: Some(ImOnlineConfig { + gossip_at: 0, + keys: initial_authorities.iter().map(|x| x.4.clone()).collect(), + }), + parachains: Some(ParachainsConfig { + authorities: initial_authorities.iter().map(|x| x.5.clone()).collect(), + parachains: vec![], + _phdata: Default::default(), }), - aura: Some(AuraConfig { - authorities: initial_authorities.iter().map(|x| x.2.clone()).collect(), + sudo: Some(SudoConfig { + key: root_key, }), curated_grandpa: Some(CuratedGrandpaConfig { shuffle_period: 1024, @@ -272,7 +321,7 @@ fn development_config_genesis() -> GenesisConfig { vec![ get_authority_keys_from_seed("Alice"), ], - get_account_id_from_seed("Alice"), + get_from_seed::<AccountId>("Alice"), None, ) } @@ -297,7 +346,7 @@ fn local_testnet_genesis() -> GenesisConfig { get_authority_keys_from_seed("Alice"), get_authority_keys_from_seed("Bob"), ], - get_account_id_from_seed("Alice"), + get_from_seed::<AccountId>("Alice"), None, ) } diff --git a/polkadot/service/src/lib.rs b/polkadot/service/src/lib.rs index b7df1e9abfa..e930414b881 100644 --- a/polkadot/service/src/lib.rs +++ b/polkadot/service/src/lib.rs @@ -18,18 +18,21 @@ pub mod chain_spec; +use futures::prelude::*; use client::LongestChain; use consensus_common::SelectChain; use std::sync::Arc; use std::time::Duration; -use grandpa_primitives::AuthorityPair as GrandpaPair; -use polkadot_primitives::{parachain, Block, Hash, BlockId, AuraPair}; +use polkadot_primitives::{parachain, Block, Hash, BlockId}; use polkadot_runtime::{GenesisConfig, RuntimeApi}; use polkadot_network::gossip::{self as network_gossip, Known}; -use primitives::{ed25519, Pair}; -use service::{FactoryFullConfiguration, FullBackend, LightBackend, FullExecutor, LightExecutor}; +use service::{ + FactoryFullConfiguration, FullBackend, LightBackend, FullExecutor, LightExecutor, + error::Error as ServiceError, TelemetryOnConnect +}; use transaction_pool::txpool::{Pool as TransactionPool}; -use aura::{import_queue, start_aura, AuraImportQueue, SlotDuration}; +use babe::{import_queue, start_babe, BabeImportQueue, Config}; +use grandpa::{self, FinalityProofProvider as GrandpaFinalityProofProvider}; use inherents::InherentDataProviders; use log::info; pub use service::{ @@ -49,6 +52,20 @@ pub use consensus::run_validation_worker; /// All configuration for the polkadot node. pub type Configuration = FactoryFullConfiguration<Factory>; +type BabeBlockImportForService<F> = babe::BabeBlockImport< + FullBackend<F>, + FullExecutor<F>, + <F as crate::ServiceFactory>::Block, + grandpa::BlockImportForService<F>, + <F as crate::ServiceFactory>::RuntimeApi, + client::Client< + FullBackend<F>, + FullExecutor<F>, + <F as crate::ServiceFactory>::Block, + <F as crate::ServiceFactory>::RuntimeApi + >, +>; + /// Polkadot-specific configuration. pub struct CustomConfiguration { /// Set to `Some` with a collator `CollatorId` and desired parachain @@ -58,11 +75,15 @@ pub struct CustomConfiguration { /// Intermediate state during setup. Will be removed in future. Set to `None`. // FIXME: rather than putting this on the config, let's have an actual intermediate setup state // https://github.com/paritytech/substrate/issues/1134 - pub grandpa_import_setup: Option<( - grandpa::BlockImportForService<Factory>, - grandpa::LinkHalfForService<Factory> + pub import_setup: Option<( + BabeBlockImportForService<Factory>, + grandpa::LinkHalfForService<Factory>, + babe::BabeLink, )>, + /// Tasks that were created by previous setup steps and should be spawned. + pub tasks_to_spawn: Option<Vec<Box<dyn Future<Item = (), Error = ()> + Send>>>, + /// Maximal `block_data` size. pub max_block_data_size: Option<u64>, @@ -73,8 +94,9 @@ impl Default for CustomConfiguration { fn default() -> Self { Self { collating_for: None, - grandpa_import_setup: None, + import_setup: None, inherent_data_providers: InherentDataProviders::new(), + tasks_to_spawn: None, max_block_data_size: None, } } @@ -150,93 +172,37 @@ impl PolkadotService for Service<LightComponents<Factory>> { service::construct_service_factory! { struct Factory { Block = Block, - ConsensusPair = AuraPair, - FinalityPair = GrandpaPair, RuntimeApi = RuntimeApi, - NetworkProtocol = PolkadotProtocol { - |config: &Configuration| Ok(PolkadotProtocol::new(config.custom.collating_for.clone())) - }, + NetworkProtocol = PolkadotProtocol { |config: &Configuration| Ok(PolkadotProtocol::new(config.custom.collating_for.clone())) }, RuntimeDispatch = polkadot_executor::Executor, - FullTransactionPoolApi = TxChainApi<FullBackend<Self>, FullExecutor<Self>> - { |config, client| Ok(TransactionPool::new(config, TxChainApi::new(client))) }, - LightTransactionPoolApi = TxChainApi<LightBackend<Self>, LightExecutor<Self>> - { |config, client| Ok(TransactionPool::new(config, TxChainApi::new(client))) }, + FullTransactionPoolApi = transaction_pool::ChainApi<client::Client<FullBackend<Self>, FullExecutor<Self>, Block, RuntimeApi>, Block> + { |config, client| Ok(TransactionPool::new(config, transaction_pool::ChainApi::new(client))) }, + LightTransactionPoolApi = transaction_pool::ChainApi<client::Client<LightBackend<Self>, LightExecutor<Self>, Block, RuntimeApi>, Block> + { |config, client| Ok(TransactionPool::new(config, transaction_pool::ChainApi::new(client))) }, Genesis = GenesisConfig, Configuration = CustomConfiguration, - FullService = FullComponents<Self> - { |config: FactoryFullConfiguration<Self>| { - FullComponents::<Factory>::new(config) - } }, - AuthoritySetup = { |mut service: Self::FullService| { - use polkadot_network::validation::ValidationNetwork; - - let (block_import, link_half) = service.config.custom.grandpa_import_setup.take() + FullService = FullComponents<Self> { |config: FactoryFullConfiguration<Self>| FullComponents::<Factory>::new(config) }, + AuthoritySetup = { + |mut service: Self::FullService| { + let (block_import, link_half, babe_link) = service.config_mut().custom.import_setup.take() .expect("Link Half and Block Import are present for Full Services or setup failed before. qed"); - // always run GRANDPA in order to sync. - { - let grandpa_key = if service.config.disable_grandpa { - None - } else { - service.authority_key() - }; - - let config = grandpa::Config { - local_key: grandpa_key.map(Arc::new), - // FIXME #1578 make this available through chainspec - gossip_duration: Duration::from_millis(333), - justification_period: 4096, - name: Some(service.config.name.clone()) - }; - - match config.local_key { - None => { - service.spawn_task(grandpa::run_grandpa_observer( - config, - link_half, - service.network(), - service.on_exit(), - )?); - }, - Some(_) => { - use service::TelemetryOnConnect; - - let telemetry_on_connect = TelemetryOnConnect { - telemetry_connection_sinks: service.telemetry_on_connect_stream(), - }; - - let grandpa_config = grandpa::GrandpaParams { - config: config, - link: link_half, - network: service.network(), - inherent_data_providers: service.config.custom.inherent_data_providers.clone(), - on_exit: service.on_exit(), - telemetry_on_connect: Some(telemetry_on_connect), - }; - service.spawn_task(grandpa::run_grandpa_voter(grandpa_config)?); - }, + // spawn any futures that were created in the previous setup steps + if let Some(tasks) = service.config_mut().custom.tasks_to_spawn.take() { + for task in tasks { + service.spawn_task( + task.select(service.on_exit()) + .map(|_| ()) + .map_err(|_| ()) + ); } } - let extrinsic_store = { - use std::path::PathBuf; - - let mut path = PathBuf::from(service.config.database_path.clone()); - path.push("availability"); - - av_store::Store::new(::av_store::Config { - cache_size: None, - path, - })? - }; - - // run authorship only if authority. - let aura_key = match service.authority_key() { - Some(key) => Arc::new(key), - None => return Ok(service), - }; + if service.config().roles != service::Roles::AUTHORITY { + return Ok(service); + } - if service.config.custom.collating_for.is_some() { + if service.config().custom.collating_for.is_some() { info!( "The node cannot start as an authority because it is also configured to run as a collator." ); @@ -275,6 +241,19 @@ service::construct_service_factory! { }, ); + use polkadot_network::validation::ValidationNetwork; + let extrinsic_store = { + use std::path::PathBuf; + + let mut path = PathBuf::from(service.config().database_path.clone()); + path.push("availability"); + + av_store::Store::new(::av_store::Config { + cache_size: None, + path, + })? + }; + // collator connections and validation network both fulfilled by this let validation_network = ValidationNetwork::new( service.network(), @@ -283,63 +262,150 @@ service::construct_service_factory! { service.client(), polkadot_network::validation::WrappedExecutor(service.spawn_task_handle()), ); - let proposer_factory = consensus::ProposerFactory::new( + let proposer = consensus::ProposerFactory::new( client.clone(), select_chain.clone(), validation_network.clone(), validation_network, service.transaction_pool(), Arc::new(service.spawn_task_handle()), - aura_key.clone(), + service.keystore(), extrinsic_store, - SlotDuration::get_or_compute(&*client)?, - service.config.custom.max_block_data_size, + polkadot_runtime::constants::time::SLOT_DURATION, + service.config().custom.max_block_data_size, ); - info!("Using authority key {}", aura_key.public()); - let task = start_aura( - SlotDuration::get_or_compute(&*client)?, - aura_key, - client.clone(), + let client = service.client(); + let select_chain = service.select_chain().ok_or(ServiceError::SelectChainRequired)?; + + let babe_config = babe::BabeParams { + config: Config::get_or_compute(&*client)?, + keystore: service.keystore(), + client, select_chain, block_import, - Arc::new(proposer_factory), - service.network(), - service.config.custom.inherent_data_providers.clone(), - service.config.force_authoring, - )?; + env: proposer, + sync_oracle: service.network(), + inherent_data_providers: service.config().custom.inherent_data_providers.clone(), + force_authoring: service.config().force_authoring, + time_source: babe_link, + }; + + let babe = start_babe(babe_config)?; + let select = babe.select(service.on_exit()).then(|_| Ok(())); + service.spawn_task(Box::new(select)); + + let config = grandpa::Config { + // FIXME substrate#1578 make this available through chainspec + gossip_duration: Duration::from_millis(333), + justification_period: 4096, + name: Some(service.config().name.clone()), + keystore: Some(service.keystore()), + }; + + match (service.config().roles.is_authority(), service.config().disable_grandpa) { + (false, false) => { + // start the lightweight GRANDPA observer + service.spawn_task(Box::new(grandpa::run_grandpa_observer( + config, + link_half, + service.network(), + service.on_exit(), + )?)); + }, + (true, false) => { + // start the full GRANDPA voter + let telemetry_on_connect = TelemetryOnConnect { + telemetry_connection_sinks: service.telemetry_on_connect_stream(), + }; + let grandpa_config = grandpa::GrandpaParams { + config: config, + link: link_half, + network: service.network(), + inherent_data_providers: service.config().custom.inherent_data_providers.clone(), + on_exit: service.on_exit(), + telemetry_on_connect: Some(telemetry_on_connect), + }; + service.spawn_task(Box::new(grandpa::run_grandpa_voter(grandpa_config)?)); + }, + (_, true) => { + grandpa::setup_disabled_grandpa( + service.client(), + &service.config().custom.inherent_data_providers, + service.network(), + )?; + }, + } + // let config = grandpa::Config { + // // FIXME #1578 make this available through chainspec + // gossip_duration: Duration::from_millis(333), + // justification_period: 4096, + // name: Some(service.config().name.clone()), + // keystore: Some(service.keystore()), + // }; + + // if !service.config().disable_grandpa { + // if service.config().roles.is_authority() { + // let telemetry_on_connect = TelemetryOnConnect { + // telemetry_connection_sinks: service.telemetry_on_connect_stream(), + // }; + // let grandpa_config = grandpa::GrandpaParams { + // config: config, + // link: link_half, + // network: service.network(), + // inherent_data_providers: service.config().custom.inherent_data_providers.clone(), + // on_exit: service.on_exit(), + // telemetry_on_connect: Some(telemetry_on_connect), + // }; + // service.spawn_task(Box::new(grandpa::run_grandpa_voter(grandpa_config)?)); + // } else { + // service.spawn_task(Box::new(grandpa::run_grandpa_observer( + // config, + // link_half, + // service.network(), + // service.on_exit(), + // )?)); + // } + // } + + // // regardless of whether grandpa is started or not, when + // // authoring blocks we expect inherent data regarding what our + // // last finalized block is, to be available. + // grandpa::register_finality_tracker_inherent_data_provider( + // service.client(), + // &service.config().custom.inherent_data_providers, + // )?; - service.spawn_task(task); Ok(service) - }}, + } + }, LightService = LightComponents<Self> { |config| <LightComponents<Factory>>::new(config) }, - FullImportQueue = AuraImportQueue< - Self::Block, - > + FullImportQueue = BabeImportQueue<Self::Block> { |config: &mut FactoryFullConfiguration<Self>, client: Arc<FullClient<Self>>, select_chain: Self::SelectChain| { - let slot_duration = SlotDuration::get_or_compute(&*client)?; - let (block_import, link_half) = grandpa::block_import::<_, _, _, RuntimeApi, FullClient<Self>, _>( client.clone(), client.clone(), select_chain )?; let justification_import = block_import.clone(); - config.custom.grandpa_import_setup = Some((block_import.clone(), link_half)); - import_queue::<_, _, ed25519::Pair>( - slot_duration, - Box::new(block_import), + let (import_queue, babe_link, babe_block_import, pruning_task) = import_queue( + Config::get_or_compute(&*client)?, + block_import, Some(Box::new(justification_import)), None, + client.clone(), client, config.custom.inherent_data_providers.clone(), - ).map_err(Into::into) + )?; + + config.custom.import_setup = Some((babe_block_import.clone(), link_half, babe_link)); + config.custom.tasks_to_spawn = Some(vec![Box::new(pruning_task)]); + + Ok(import_queue) }}, - LightImportQueue = AuraImportQueue< - Self::Block, - > - { |config: &mut FactoryFullConfiguration<Self>, client: Arc<LightClient<Self>>| { + LightImportQueue = BabeImportQueue<Self::Block> + { |config: &FactoryFullConfiguration<Self>, client: Arc<LightClient<Self>>| { #[allow(deprecated)] let fetch_checker = client.backend().blockchain().fetcher() .upgrade() @@ -348,17 +414,22 @@ service::construct_service_factory! { let block_import = grandpa::light_block_import::<_, _, _, RuntimeApi, LightClient<Self>>( client.clone(), Arc::new(fetch_checker), client.clone() )?; + let finality_proof_import = block_import.clone(); let finality_proof_request_builder = finality_proof_import.create_finality_proof_request_builder(); - import_queue::<_, _, ed25519::Pair>( - SlotDuration::get_or_compute(&*client)?, - Box::new(block_import), + // FIXME: pruning task isn't started since light client doesn't do `AuthoritySetup`. + let (import_queue, ..) = import_queue( + Config::get_or_compute(&*client)?, + block_import, None, Some(Box::new(finality_proof_import)), + client.clone(), client, config.custom.inherent_data_providers.clone(), - ).map_err(Into::into).map(|q| (q, finality_proof_request_builder)) + )?; + + Ok((import_queue, finality_proof_request_builder)) }}, SelectChain = LongestChain<FullBackend<Self>, Self::Block> { |config: &FactoryFullConfiguration<Self>, client: Arc<FullClient<Self>>| { @@ -367,7 +438,7 @@ service::construct_service_factory! { } }, FinalityProofProvider = { |client: Arc<FullClient<Self>>| { - Ok(Some(Arc::new(grandpa::FinalityProofProvider::new(client.clone(), client)) as _)) + Ok(Some(Arc::new(GrandpaFinalityProofProvider::new(client.clone(), client)) as _)) }}, } } diff --git a/polkadot/statement-table/Cargo.toml b/polkadot/statement-table/Cargo.toml index 9aff39d3820..971e4cc1ffb 100644 --- a/polkadot/statement-table/Cargo.toml +++ b/polkadot/statement-table/Cargo.toml @@ -5,6 +5,6 @@ authors = ["Parity Technologies <admin@parity.io>"] edition = "2018" [dependencies] -parity-codec = { version = "4.1", features = ["derive"] } +codec = { package = "parity-scale-codec", version = "~1.0.0", default-features = false, features = ["derive"] } substrate-primitives = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } primitives = { package = "polkadot-primitives", path = "../primitives" } diff --git a/polkadot/statement-table/src/generic.rs b/polkadot/statement-table/src/generic.rs index ed7afdae282..44cf41dcc1e 100644 --- a/polkadot/statement-table/src/generic.rs +++ b/polkadot/statement-table/src/generic.rs @@ -28,7 +28,7 @@ use std::collections::hash_map::{HashMap, Entry}; use std::hash::Hash; use std::fmt::Debug; -use parity_codec::{Encode, Decode}; +use codec::{Encode, Decode}; /// Context for the statement table. pub trait Context { diff --git a/polkadot/test-parachains/adder/Cargo.toml b/polkadot/test-parachains/adder/Cargo.toml index e8e8b5cbb9e..dd21e384753 100644 --- a/polkadot/test-parachains/adder/Cargo.toml +++ b/polkadot/test-parachains/adder/Cargo.toml @@ -8,7 +8,7 @@ build = "build.rs" [dependencies] parachain = { package = "polkadot-parachain", path = "../../parachain/", default-features = false } -parity-codec = { version = "4.1", default-features = false, features = ["derive"] } +codec = { package = "parity-scale-codec", version = "~1.0.0", default-features = false, features = ["derive"] } tiny-keccak = "1.5.0" dlmalloc = { version = "0.1.3", features = ["global"], optional = true } diff --git a/polkadot/test-parachains/adder/collator/src/main.rs b/polkadot/test-parachains/adder/collator/src/main.rs index 260e23fc40e..d677c3b7447 100644 --- a/polkadot/test-parachains/adder/collator/src/main.rs +++ b/polkadot/test-parachains/adder/collator/src/main.rs @@ -63,7 +63,7 @@ impl ParachainContext for AdderContext { ) -> Result<(BlockData, HeadData, Extrinsic), InvalidHead> { let adder_head = AdderHead::decode(&mut &status.head_data.0[..]) - .ok_or(InvalidHead)?; + .map_err(|_| InvalidHead)?; let mut db = self.db.lock(); diff --git a/polkadot/test-parachains/adder/src/lib.rs b/polkadot/test-parachains/adder/src/lib.rs index 6efbcea3550..bf553f996e8 100644 --- a/polkadot/test-parachains/adder/src/lib.rs +++ b/polkadot/test-parachains/adder/src/lib.rs @@ -20,7 +20,7 @@ #![cfg_attr(feature = "no_std", feature(core_intrinsics, lang_items, core_panic_info, alloc_error_handler))] -use parity_codec::{Encode, Decode}; +use codec::{Encode, Decode}; #[cfg(feature = "no_std")] mod wasm_validation; @@ -80,7 +80,7 @@ pub fn process_messages<I, T>(iterable: I) -> u64 where I: IntoIterator<Item=T>, T: AsRef<[u8]> { iterable.into_iter() - .filter_map(|data| AddMessage::decode(&mut data.as_ref())) + .filter_map(|data| AddMessage::decode(&mut data.as_ref()).ok()) .fold(0u64, |a, c| a.overflowing_add(c.amount).0) } diff --git a/polkadot/validation/Cargo.toml b/polkadot/validation/Cargo.toml index f3e71c3220d..70a64485c52 100644 --- a/polkadot/validation/Cargo.toml +++ b/polkadot/validation/Cargo.toml @@ -13,24 +13,24 @@ tokio = "0.1.7" derive_more = "0.14.0" log = "0.4.6" exit-future = "0.1" -parity-codec = "4.1" +codec = { package = "parity-scale-codec", version = "~1.0.0", default-features = false, features = ["derive"] } extrinsic_store = { package = "polkadot-availability-store", path = "../availability-store" } parachain = { package = "polkadot-parachain", path = "../parachain" } polkadot-primitives = { path = "../primitives" } polkadot-runtime = { path = "../runtime" } table = { package = "polkadot-statement-table", path = "../statement-table" } -aura = { package = "substrate-consensus-aura", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } -aura_primitives = { package = "substrate-consensus-aura-primitives", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } grandpa = { package = "substrate-finality-grandpa", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } inherents = { package = "substrate-inherents", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } consensus = { package = "substrate-consensus-common", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } primitives = { package = "substrate-primitives", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } transaction_pool = { package = "substrate-transaction-pool", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } -runtime_aura = { package = "srml-aura", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } client = { package = "substrate-client", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } trie = { package = "substrate-trie", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } runtime_primitives = { package = "sr-primitives", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } -bitvec = { version = "0.11", default-features = false, features = ["alloc"] } +bitvec = { version = "0.14.0", default-features = false, features = ["alloc"] } +runtime_babe = { package = "srml-babe", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } +babe-primitives = { package = "substrate-consensus-babe-primitives", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } +keystore = { package = "substrate-keystore", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } [dev-dependencies] substrate-keyring = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } diff --git a/polkadot/validation/src/attestation_service.rs b/polkadot/validation/src/attestation_service.rs index c670ab6ef10..cc3a0c453b0 100644 --- a/polkadot/validation/src/attestation_service.rs +++ b/polkadot/validation/src/attestation_service.rs @@ -33,11 +33,11 @@ use extrinsic_store::Store as ExtrinsicStore; use futures::prelude::*; use futures03::{TryStreamExt as _, StreamExt as _}; use log::error; -use primitives::ed25519; -use polkadot_primitives::{Block, BlockId, AuraId}; +use polkadot_primitives::{Block, BlockId}; use polkadot_primitives::parachain::{CandidateReceipt, ParachainHost}; use runtime_primitives::traits::{ProvideRuntimeApi, Header as HeaderT}; -use aura::AuraApi; +use babe_primitives::BabeApi; +use keystore::KeyStorePtr; use tokio::{timer::Interval, runtime::current_thread::Runtime as LocalRuntime}; use log::{warn, debug}; @@ -50,14 +50,14 @@ type TaskExecutor = Arc<dyn futures::future::Executor<Box<dyn Future<Item = (), pub(crate) fn fetch_candidates<P: BlockBody<Block>>(client: &P, block: &BlockId) -> ClientResult<Option<impl Iterator<Item=CandidateReceipt>>> { - use parity_codec::{Encode, Decode}; + use codec::{Encode, Decode}; use polkadot_runtime::{Call, ParachainsCall, UncheckedExtrinsic as RuntimeExtrinsic}; let extrinsics = client.block_body(block)?; Ok(match extrinsics { Some(extrinsics) => extrinsics .into_iter() - .filter_map(|ex| RuntimeExtrinsic::decode(&mut ex.encode().as_slice())) + .filter_map(|ex| RuntimeExtrinsic::decode(&mut ex.encode().as_slice()).ok()) .filter_map(|ex| match ex.function { Call::Parachains(ParachainsCall::set_heads(heads)) => { Some(heads.into_iter().map(|c| c.candidate)) @@ -114,7 +114,7 @@ pub(crate) fn start<C, N, P, SC>( select_chain: SC, parachain_validation: Arc<crate::ParachainValidation<C, N, P>>, thread_pool: TaskExecutor, - key: Arc<ed25519::Pair>, + keystore: KeyStorePtr, extrinsic_store: ExtrinsicStore, max_block_data_size: Option<u64>, ) -> ServiceHandle @@ -123,7 +123,7 @@ pub(crate) fn start<C, N, P, SC>( <C::Collation as IntoFuture>::Future: Send + 'static, P: BlockchainEvents<Block> + BlockBody<Block>, P: ProvideRuntimeApi + HeaderBackend<Block> + Send + Sync + 'static, - P::Api: ParachainHost<Block> + BlockBuilder<Block> + AuraApi<Block, AuraId>, + P::Api: ParachainHost<Block> + BlockBuilder<Block> + BabeApi<Block>, N: Network + Send + Sync + 'static, N::TableRouter: Send + 'static, <N::BuildTableRouter as IntoFuture>::Future: Send + 'static, @@ -138,7 +138,8 @@ pub(crate) fn start<C, N, P, SC>( let notifications = { let client = client.clone(); let validation = parachain_validation.clone(); - let key = key.clone(); + + let keystore = keystore.clone(); client.import_notification_stream() .map(|v| Ok::<_, ()>(v)).compat() @@ -148,7 +149,7 @@ pub(crate) fn start<C, N, P, SC>( let res = validation.get_or_instantiate( parent_hash, notification.header.parent_hash().clone(), - key.clone(), + &keystore, max_block_data_size, ); diff --git a/polkadot/validation/src/collation.rs b/polkadot/validation/src/collation.rs index ee8477c4144..f9a143b915e 100644 --- a/polkadot/validation/src/collation.rs +++ b/polkadot/validation/src/collation.rs @@ -27,7 +27,7 @@ use polkadot_primitives::{Block, Hash, BlockId, Balance, parachain::{ }}; use runtime_primitives::traits::ProvideRuntimeApi; use parachain::{wasm_executor::{self, ExternalitiesError, ExecutionMode}, MessageRef, UpwardMessageRef}; - +use trie::TrieConfiguration; use futures::prelude::*; use log::debug; @@ -186,7 +186,7 @@ impl std::error::Error for Error { pub fn message_queue_root<A, I: IntoIterator<Item=A>>(messages: I) -> Hash where A: AsRef<[u8]> { - ::trie::ordered_trie_root::<primitives::Blake2Hasher, _, _>(messages) + ::trie::trie_types::Layout::<primitives::Blake2Hasher>::ordered_trie_root(messages) } /// Compute the set of egress roots for all given outgoing messages. diff --git a/polkadot/validation/src/error.rs b/polkadot/validation/src/error.rs index 062e93f0670..d3f7f973d6c 100644 --- a/polkadot/validation/src/error.rs +++ b/polkadot/validation/src/error.rs @@ -17,7 +17,7 @@ //! Errors that can occur during the validation process. use runtime_primitives::RuntimeString; -use primitives::ed25519::Public as AuthorityId; +use polkadot_primitives::parachain::ValidatorId; /// Error type for validation #[derive(Debug, derive_more::Display, derive_more::From)] @@ -35,7 +35,7 @@ pub enum Error { }, /// Local account not a validator at this block #[display(fmt = "Local account ID ({:?}) not a validator at this block.", _0)] - NotValidator(AuthorityId), + NotValidator(ValidatorId), /// Unexpected error checking inherents #[display(fmt = "Unexpected error while checking inherents: {}", _0)] InherentError(RuntimeString), diff --git a/polkadot/validation/src/evaluation.rs b/polkadot/validation/src/evaluation.rs index 65c1469b9b7..0099f489a09 100644 --- a/polkadot/validation/src/evaluation.rs +++ b/polkadot/validation/src/evaluation.rs @@ -18,7 +18,7 @@ use super::MAX_TRANSACTIONS_SIZE; -use parity_codec::Encode; +use codec::Encode; use polkadot_primitives::{Block, Hash, BlockNumber}; use polkadot_primitives::parachain::Id as ParaId; diff --git a/polkadot/validation/src/lib.rs b/polkadot/validation/src/lib.rs index f5cb83b1915..4f4e9a27622 100644 --- a/polkadot/validation/src/lib.rs +++ b/polkadot/validation/src/lib.rs @@ -31,21 +31,21 @@ use std::{collections::{HashMap, HashSet}, pin::Pin, sync::Arc, time::{self, Duration, Instant}}; -use aura::{SlotDuration, AuraApi}; +use babe_primitives::BabeApi; use client::{BlockchainEvents, BlockBody}; use client::blockchain::HeaderBackend; use client::block_builder::api::BlockBuilder as BlockBuilderApi; -use parity_codec::Encode; +use codec::Encode; use consensus::SelectChain; use extrinsic_store::Store as ExtrinsicStore; use parking_lot::Mutex; -use polkadot_primitives::{Hash, Block, BlockId, BlockNumber, Header, SessionKey, AuraId}; +use polkadot_primitives::{Hash, Block, BlockId, BlockNumber, Header}; use polkadot_primitives::parachain::{ Id as ParaId, Chain, DutyRoster, Extrinsic as ParachainExtrinsic, CandidateReceipt, ParachainHost, AttestedCandidate, Statement as PrimitiveStatement, Message, OutgoingMessage, - CollatorSignature, Collation, PoVBlock, + Collation, PoVBlock, ValidatorSignature, ValidatorPair, ValidatorId }; -use primitives::{Pair, ed25519}; +use primitives::Pair; use runtime_primitives::{ traits::{ProvideRuntimeApi, Header as HeaderT, DigestFor}, ApplyError }; @@ -58,10 +58,9 @@ use futures03::{future::{self, Either, FutureExt}, task::Context, stream::Stream use collation::CollationFetch; use dynamic_inclusion::DynamicInclusion; use inherents::InherentData; -use runtime_aura::timestamp::TimestampInherentData; +use runtime_babe::timestamp::TimestampInherentData; use log::{info, debug, warn, trace, error}; - -use ed25519::Public as AuthorityId; +use keystore::KeyStorePtr; type TaskExecutor = Arc<dyn futures::future::Executor<Box<dyn Future<Item = (), Error = ()> + Send>> + Send + Sync>; @@ -145,7 +144,7 @@ pub trait Network { fn communication_for( &self, table: Arc<SharedTable>, - authorities: &[SessionKey], + authorities: &[ValidatorId], exit: exit_future::Exit, ) -> Self::BuildTableRouter; } @@ -154,7 +153,7 @@ pub trait Network { #[derive(Debug, Clone, Default)] pub struct GroupInfo { /// Authorities meant to check validity of candidates. - validity_guarantors: HashSet<SessionKey>, + validity_guarantors: HashSet<ValidatorId>, /// Number of votes needed for validity. needed_validity: usize, } @@ -162,32 +161,32 @@ pub struct GroupInfo { /// Sign a table statement against a parent hash. /// The actual message signed is the encoded statement concatenated with the /// parent hash. -pub fn sign_table_statement(statement: &Statement, key: &ed25519::Pair, parent_hash: &Hash) -> CollatorSignature { +pub fn sign_table_statement(statement: &Statement, key: &ValidatorPair, parent_hash: &Hash) -> ValidatorSignature { // we sign using the primitive statement type because that's what the runtime // expects. These types probably encode the same way so this clone could be optimized // out in the future. let mut encoded = PrimitiveStatement::from(statement.clone()).encode(); encoded.extend(parent_hash.as_ref()); - key.sign(&encoded).into() + key.sign(&encoded) } /// Check signature on table statement. -pub fn check_statement(statement: &Statement, signature: &CollatorSignature, signer: SessionKey, parent_hash: &Hash) -> bool { - use runtime_primitives::traits::Verify; +pub fn check_statement(statement: &Statement, signature: &ValidatorSignature, signer: ValidatorId, parent_hash: &Hash) -> bool { + use runtime_primitives::traits::AppVerify; let mut encoded = PrimitiveStatement::from(statement.clone()).encode(); encoded.extend(parent_hash.as_ref()); - signature.verify(&encoded[..], &signer.into()) + signature.verify(&encoded[..], &signer) } /// Compute group info out of a duty roster and a local authority set. pub fn make_group_info( roster: DutyRoster, - authorities: &[AuthorityId], - local_id: AuthorityId, -) -> Result<(HashMap<ParaId, GroupInfo>, LocalDuty), Error> { + authorities: &[ValidatorId], + local_id: Option<ValidatorId>, +) -> Result<(HashMap<ParaId, GroupInfo>, Option<LocalDuty>), Error> { if roster.validator_duty.len() != authorities.len() { return Err(Error::InvalidDutyRosterLength { expected: authorities.len(), @@ -200,7 +199,7 @@ pub fn make_group_info( let duty_iter = authorities.iter().zip(&roster.validator_duty); for (authority, v_duty) in duty_iter { - if authority == &local_id { + if Some(authority) == local_id.as_ref() { local_validation = Some(v_duty.clone()); } @@ -219,16 +218,24 @@ pub fn make_group_info( live_group.needed_validity = validity_len / 2 + validity_len % 2; } - match local_validation { - Some(local_validation) => { - let local_duty = LocalDuty { - validation: local_validation, - }; - Ok((map, local_duty)) - } - None => return Err(Error::NotValidator(local_id)), - } + let local_duty = local_validation.map(|v| LocalDuty { + validation: v + }); + + Ok((map, local_duty)) + +} + +// finds the first key we are capable of signing with out of the given set of validators, +// if any. +fn signing_key(validators: &[ValidatorId], keystore: &KeyStorePtr) -> Option<Arc<ValidatorPair>> { + let keystore = keystore.read(); + validators.iter() + .find_map(|v| { + keystore.key_pair::<ValidatorPair>(&v).ok() + }) + .map(|pair| Arc::new(pair)) } /// Constructs parachain-agreement instances. @@ -252,7 +259,7 @@ impl<C, N, P> ParachainValidation<C, N, P> where C: Collators + Send + 'static, N: Network, P: ProvideRuntimeApi + HeaderBackend<Block> + BlockBody<Block> + Send + Sync + 'static, - P::Api: ParachainHost<Block> + BlockBuilderApi<Block> + AuraApi<Block, AuraId>, + P::Api: ParachainHost<Block> + BlockBuilderApi<Block>, <C::Collation as IntoFuture>::Future: Send + 'static, N::TableRouter: Send + 'static, <N::BuildTableRouter as IntoFuture>::Future: Send + 'static, @@ -268,7 +275,7 @@ impl<C, N, P> ParachainValidation<C, N, P> where &self, parent_hash: Hash, grandparent_hash: Hash, - sign_with: Arc<ed25519::Pair>, + keystore: &KeyStorePtr, max_block_data_size: Option<u64>, ) -> Result<Arc<AttestationTracker>, Error> @@ -280,7 +287,8 @@ impl<C, N, P> ParachainValidation<C, N, P> where let id = BlockId::hash(parent_hash); - let authorities = self.client.runtime_api().authorities(&id)?; + let validators = self.client.runtime_api().validators(&id)?; + let sign_with = signing_key(&validators[..], keystore); // compute the parent candidates, if we know of them. // this will allow us to circulate outgoing messages to other peers as necessary. @@ -312,14 +320,14 @@ impl<C, N, P> ParachainValidation<C, N, P> where let (group_info, local_duty) = make_group_info( duty_roster, - &authorities, - sign_with.public(), + &validators, + sign_with.as_ref().map(|k| k.public()), )?; info!( "Starting parachain attestation session on top of parent {:?}. Local parachain duty is {:?}", parent_hash, - local_duty.validation, + local_duty, ); let active_parachains = self.client.runtime_api().active_parachains(&id)?; @@ -327,9 +335,9 @@ impl<C, N, P> ParachainValidation<C, N, P> where debug!(target: "validation", "Active parachains: {:?}", active_parachains); let table = Arc::new(SharedTable::new( - &authorities, + validators.clone(), group_info, - sign_with.clone(), + sign_with, parent_hash, self.extrinsic_store.clone(), max_block_data_size, @@ -339,11 +347,11 @@ impl<C, N, P> ParachainValidation<C, N, P> where let router = self.network.communication_for( table.clone(), - &authorities, + &validators, exit.clone(), ); - if let Chain::Parachain(id) = local_duty.validation { + if let Some(Chain::Parachain(id)) = local_duty.as_ref().map(|d| d.validation) { self.launch_work(parent_hash, id, router, max_block_data_size, exit); } @@ -446,9 +454,9 @@ struct AttestationTracker { pub struct ProposerFactory<C, N, P, SC, TxApi: PoolChainApi> { parachain_validation: Arc<ParachainValidation<C, N, P>>, transaction_pool: Arc<Pool<TxApi>>, - key: Arc<ed25519::Pair>, + keystore: KeyStorePtr, _service_handle: ServiceHandle, - aura_slot_duration: SlotDuration, + babe_slot_duration: u64, _select_chain: SC, max_block_data_size: Option<u64>, } @@ -458,7 +466,7 @@ impl<C, N, P, SC, TxApi> ProposerFactory<C, N, P, SC, TxApi> where <C::Collation as IntoFuture>::Future: Send + 'static, P: BlockchainEvents<Block> + BlockBody<Block>, P: ProvideRuntimeApi + HeaderBackend<Block> + Send + Sync + 'static, - P::Api: ParachainHost<Block> + BlockBuilderApi<Block> + AuraApi<Block, AuraId>, + P::Api: ParachainHost<Block> + BlockBuilderApi<Block> + BabeApi<Block>, N: Network + Send + Sync + 'static, N::TableRouter: Send + 'static, <N::BuildTableRouter as IntoFuture>::Future: Send + 'static, @@ -473,9 +481,9 @@ impl<C, N, P, SC, TxApi> ProposerFactory<C, N, P, SC, TxApi> where collators: C, transaction_pool: Arc<Pool<TxApi>>, thread_pool: TaskExecutor, - key: Arc<ed25519::Pair>, + keystore: KeyStorePtr, extrinsic_store: ExtrinsicStore, - aura_slot_duration: SlotDuration, + babe_slot_duration: u64, max_block_data_size: Option<u64>, ) -> Self { let parachain_validation = Arc::new(ParachainValidation { @@ -492,7 +500,7 @@ impl<C, N, P, SC, TxApi> ProposerFactory<C, N, P, SC, TxApi> where _select_chain.clone(), parachain_validation.clone(), thread_pool, - key.clone(), + keystore.clone(), extrinsic_store, max_block_data_size, ); @@ -500,9 +508,9 @@ impl<C, N, P, SC, TxApi> ProposerFactory<C, N, P, SC, TxApi> where ProposerFactory { parachain_validation, transaction_pool, - key, + keystore, _service_handle: service_handle, - aura_slot_duration, + babe_slot_duration, _select_chain, max_block_data_size, } @@ -514,7 +522,7 @@ impl<C, N, P, SC, TxApi> consensus::Environment<Block> for ProposerFactory<C, N, N: Network, TxApi: PoolChainApi<Block=Block>, P: ProvideRuntimeApi + HeaderBackend<Block> + BlockBody<Block> + Send + Sync + 'static, - P::Api: ParachainHost<Block> + BlockBuilderApi<Block> + AuraApi<Block, AuraId>, + P::Api: ParachainHost<Block> + BlockBuilderApi<Block> + BabeApi<Block>, <C::Collation as IntoFuture>::Future: Send + 'static, N::TableRouter: Send + 'static, <N::BuildTableRouter as IntoFuture>::Future: Send + 'static, @@ -524,16 +532,16 @@ impl<C, N, P, SC, TxApi> consensus::Environment<Block> for ProposerFactory<C, N, type Error = Error; fn init( - &self, + &mut self, parent_header: &Header, ) -> Result<Self::Proposer, Error> { let parent_hash = parent_header.hash(); let parent_id = BlockId::hash(parent_hash); - let sign_with = self.key.clone(); + let tracker = self.parachain_validation.get_or_instantiate( parent_hash, parent_header.parent_hash().clone(), - sign_with, + &self.keystore, self.max_block_data_size, )?; @@ -544,12 +552,13 @@ impl<C, N, P, SC, TxApi> consensus::Environment<Block> for ProposerFactory<C, N, parent_id, parent_number: parent_header.number, transaction_pool: self.transaction_pool.clone(), - slot_duration: self.aura_slot_duration, + slot_duration: self.babe_slot_duration, }) } } /// The local duty of a validator. +#[derive(Debug)] pub struct LocalDuty { validation: Chain, } @@ -564,7 +573,7 @@ pub struct Proposer<C: Send + Sync, TxApi: PoolChainApi> where parent_number: BlockNumber, tracker: Arc<AttestationTracker>, transaction_pool: Arc<Pool<TxApi>>, - slot_duration: SlotDuration, + slot_duration: u64, } impl<C, TxApi> consensus::Proposer<Block> for Proposer<C, TxApi> where @@ -575,7 +584,7 @@ impl<C, TxApi> consensus::Proposer<Block> for Proposer<C, TxApi> where type Error = Error; type Create = Either<CreateProposal<C, TxApi>, future::Ready<Result<Block, Error>>>; - fn propose(&self, + fn propose(&mut self, inherent_data: InherentData, inherent_digests: DigestFor<Block>, max_duration: Duration, @@ -589,7 +598,7 @@ impl<C, TxApi> consensus::Proposer<Block> for Proposer<C, TxApi> where let dynamic_inclusion = DynamicInclusion::new( self.tracker.table.num_parachains(), self.tracker.started, - Duration::from_secs(self.slot_duration.get() / SLOT_DURATION_DENOMINATOR), + Duration::from_millis(self.slot_duration / SLOT_DURATION_DENOMINATOR), ); let enough_candidates = dynamic_inclusion.acceptable_in( @@ -607,7 +616,7 @@ impl<C, TxApi> consensus::Proposer<Block> for Proposer<C, TxApi> where let delay_future = if current_timestamp >= believed_timestamp { None } else { - Some(Delay::new(Duration::from_secs(current_timestamp - believed_timestamp))) + Some(Delay::new(Duration::from_millis (current_timestamp - believed_timestamp))) }; let timing = ProposalTiming { @@ -638,8 +647,7 @@ impl<C, TxApi> consensus::Proposer<Block> for Proposer<C, TxApi> where fn current_timestamp() -> u64 { time::SystemTime::now().duration_since(time::UNIX_EPOCH) .expect("now always later than unix epoch; qed") - .as_secs() - .into() + .as_millis() as u64 } struct ProposalTiming { @@ -811,17 +819,17 @@ impl<C, TxApi> futures03::Future for CreateProposal<C, TxApi> where #[cfg(test)] mod tests { use super::*; - use substrate_keyring::Ed25519Keyring; + use substrate_keyring::Sr25519Keyring; #[test] fn sign_and_check_statement() { let statement: Statement = GenericStatement::Valid([1; 32].into()); let parent_hash = [2; 32].into(); - let sig = sign_table_statement(&statement, &Ed25519Keyring::Alice.pair(), &parent_hash); + let sig = sign_table_statement(&statement, &Sr25519Keyring::Alice.pair().into(), &parent_hash); - assert!(check_statement(&statement, &sig, Ed25519Keyring::Alice.into(), &parent_hash)); - assert!(!check_statement(&statement, &sig, Ed25519Keyring::Alice.into(), &[0xff; 32].into())); - assert!(!check_statement(&statement, &sig, Ed25519Keyring::Bob.into(), &parent_hash)); + assert!(check_statement(&statement, &sig, Sr25519Keyring::Alice.public().into(), &parent_hash)); + assert!(!check_statement(&statement, &sig, Sr25519Keyring::Alice.public().into(), &[0xff; 32].into())); + assert!(!check_statement(&statement, &sig, Sr25519Keyring::Bob.public().into(), &parent_hash)); } } diff --git a/polkadot/validation/src/shared_table/mod.rs b/polkadot/validation/src/shared_table/mod.rs index 85fa3e8eba8..648858a2128 100644 --- a/polkadot/validation/src/shared_table/mod.rs +++ b/polkadot/validation/src/shared_table/mod.rs @@ -22,9 +22,10 @@ use std::sync::Arc; use extrinsic_store::{Data, Store as ExtrinsicStore}; use table::{self, Table, Context as TableContextTrait}; -use polkadot_primitives::{Block, BlockId, Hash, SessionKey}; -use polkadot_primitives::parachain::{Id as ParaId, Collation, Extrinsic, CandidateReceipt, - AttestedCandidate, ParachainHost, PoVBlock, ValidatorIndex, +use polkadot_primitives::{Block, BlockId, Hash}; +use polkadot_primitives::parachain::{ + Id as ParaId, Collation, Extrinsic, CandidateReceipt, ValidatorPair, ValidatorId, + AttestedCandidate, ParachainHost, PoVBlock, ValidatorIndex }; use parking_lot::Mutex; @@ -34,7 +35,7 @@ use bitvec::bitvec; use super::{GroupInfo, TableRouter}; use self::includable::IncludabilitySender; -use primitives::{ed25519, Pair}; +use primitives::Pair; use runtime_primitives::traits::ProvideRuntimeApi; mod includable; @@ -45,14 +46,14 @@ pub use table::generic::Statement as GenericStatement; struct TableContext { parent_hash: Hash, - key: Arc<ed25519::Pair>, + key: Option<Arc<ValidatorPair>>, groups: HashMap<ParaId, GroupInfo>, - index_mapping: HashMap<ValidatorIndex, SessionKey>, + validators: Vec<ValidatorId>, } impl table::Context for TableContext { fn is_member_of(&self, authority: ValidatorIndex, group: &ParaId) -> bool { - let key = match self.index_mapping.get(&authority) { + let key = match self.validators.get(authority as usize) { Some(val) => val, None => return false, }; @@ -66,28 +67,26 @@ impl table::Context for TableContext { } impl TableContext { - fn local_id(&self) -> SessionKey { - self.key.public().into() + fn local_id(&self) -> Option<ValidatorId> { + self.key.as_ref().map(|k| k.public()) } - fn local_index(&self) -> ValidatorIndex { - let id = self.local_id(); - self - .index_mapping - .iter() - .find(|(_, k)| k == &&id) - .map(|(i, _)| *i) - .unwrap() + fn local_index(&self) -> Option<ValidatorIndex> { + self.local_id().and_then(|id| + self.validators + .iter() + .enumerate() + .find(|(_, k)| k == &&id) + .map(|(i, _)| i as ValidatorIndex) + ) } - fn sign_statement(&self, statement: table::Statement) -> table::SignedStatement { - let signature = crate::sign_table_statement(&statement, &self.key, &self.parent_hash).into(); - - table::SignedStatement { - statement, - signature, - sender: self.local_index(), - } + fn sign_statement(&self, statement: table::Statement) -> Option<table::SignedStatement> { + self.local_index().and_then(move |sender| + self.key.as_ref() + .map(|key| crate::sign_table_statement(&statement, key, &self.parent_hash).into()) + .map(move |signature| table::SignedStatement { statement, signature, sender }) + ) } } @@ -142,15 +141,10 @@ impl SharedTableInner { ) -> Option<ParachainWork< <R::FetchValidationProof as IntoFuture>::Future, >> { - let summary = match self.table.import_statement(context, statement) { - Some(summary) => summary, - None => return None, - }; - + let summary = self.table.import_statement(context, statement)?; self.update_trackers(&summary.candidate, context); - let local_index = context.local_index(); - + let local_index = context.local_index()?; let para_member = context.is_member_of(local_index, &summary.group_id); let digest = &summary.candidate; @@ -399,16 +393,15 @@ impl SharedTable { /// Provide the key to sign with, and the parent hash of the relay chain /// block being built. pub fn new( - authorities: &[ed25519::Public], + validators: Vec<ValidatorId>, groups: HashMap<ParaId, GroupInfo>, - key: Arc<ed25519::Pair>, + key: Option<Arc<ValidatorPair>>, parent_hash: Hash, extrinsic_store: ExtrinsicStore, max_block_data_size: Option<u64>, ) -> Self { - let index_mapping = authorities.iter().enumerate().map(|(i, k)| (i as ValidatorIndex, k.clone())).collect(); - Self { - context: Arc::new(TableContext { groups, key, parent_hash, index_mapping, }), + SharedTable { + context: Arc::new(TableContext { groups, key, parent_hash, validators: validators.clone(), }), max_block_data_size, inner: Arc::new(Mutex::new(SharedTableInner { table: Table::default(), @@ -425,7 +418,7 @@ impl SharedTable { } /// Get the local validator session key. - pub fn session_key(&self) -> SessionKey { + pub fn session_key(&self) -> Option<ValidatorId> { self.context.local_id() } @@ -482,9 +475,10 @@ impl SharedTable { }).collect() } - /// Sign and import the result of candidate validation. + /// Sign and import the result of candidate validation. Returns `None` if the table + /// was instantiated without a local key. pub fn import_validated(&self, validated: Validated) - -> SignedStatement + -> Option<SignedStatement> { let digest = match validated.statement { GenericStatement::Candidate(ref c) => c.hash(), @@ -493,9 +487,11 @@ impl SharedTable { let signed_statement = self.context.sign_statement(validated.statement); - let mut inner = self.inner.lock(); - inner.table.import_statement(&*self.context, signed_statement.clone()); - inner.validated.insert(digest, ValidationWork::Done(validated.result)); + if let Some(ref signed) = signed_statement { + let mut inner = self.inner.lock(); + inner.table.import_statement(&*self.context, signed.clone()); + inner.validated.insert(digest, ValidationWork::Done(validated.result)); + } signed_statement } @@ -576,15 +572,15 @@ impl SharedTable { } /// Returns id of the validator corresponding to the given index. - pub fn index_to_id(&self, index: ValidatorIndex) -> Option<SessionKey> { - self.context.index_mapping.get(&index).cloned() + pub fn index_to_id(&self, index: ValidatorIndex) -> Option<ValidatorId> { + self.context.validators.get(index as usize).cloned() } } #[cfg(test)] mod tests { use super::*; - use substrate_keyring::Ed25519Keyring; + use substrate_keyring::Sr25519Keyring; use primitives::crypto::UncheckedInto; use polkadot_primitives::parachain::{BlockData, ConsolidatedIngress}; use futures::future; @@ -617,11 +613,12 @@ mod tests { let para_id = ParaId::from(1); let parent_hash = Default::default(); - let local_key = Arc::new(Ed25519Keyring::Alice.pair()); - let local_id = local_key.public(); + let local_key = Sr25519Keyring::Alice.pair(); + let local_id: ValidatorId = local_key.public().into(); + let local_key: Arc<ValidatorPair> = Arc::new(local_key.into()); - let validity_other_key = Ed25519Keyring::Bob.pair(); - let validity_other = validity_other_key.public(); + let validity_other_key = Sr25519Keyring::Bob.pair(); + let validity_other: ValidatorId = validity_other_key.public().into(); let validity_other_index = 1; groups.insert(para_id, GroupInfo { @@ -630,9 +627,9 @@ mod tests { }); let shared_table = SharedTable::new( - &[local_id, validity_other], + [local_id, validity_other].to_vec(), groups, - local_key.clone(), + Some(local_key.clone()), parent_hash, ExtrinsicStore::new_in_memory(), None, @@ -651,7 +648,7 @@ mod tests { let candidate_statement = GenericStatement::Candidate(candidate); - let signature = crate::sign_table_statement(&candidate_statement, &validity_other_key, &parent_hash); + let signature = crate::sign_table_statement(&candidate_statement, &validity_other_key.into(), &parent_hash); let signed_statement = ::table::generic::SignedStatement { statement: candidate_statement, signature: signature.into(), @@ -671,11 +668,12 @@ mod tests { let para_id = ParaId::from(1); let parent_hash = Default::default(); - let local_key = Arc::new(Ed25519Keyring::Alice.pair()); - let local_id = local_key.public(); + let local_key = Sr25519Keyring::Alice.pair(); + let local_id: ValidatorId = local_key.public().into(); + let local_key: Arc<ValidatorPair> = Arc::new(local_key.into()); - let validity_other_key = Ed25519Keyring::Bob.pair(); - let validity_other = validity_other_key.public(); + let validity_other_key = Sr25519Keyring::Bob.pair(); + let validity_other: ValidatorId = validity_other_key.public().into(); let validity_other_index = 1; groups.insert(para_id, GroupInfo { @@ -684,9 +682,9 @@ mod tests { }); let shared_table = SharedTable::new( - &[local_id, validity_other], + [local_id, validity_other].to_vec(), groups, - local_key.clone(), + Some(local_key.clone()), parent_hash, ExtrinsicStore::new_in_memory(), None, @@ -705,7 +703,7 @@ mod tests { let candidate_statement = GenericStatement::Candidate(candidate); - let signature = crate::sign_table_statement(&candidate_statement, &validity_other_key, &parent_hash); + let signature = crate::sign_table_statement(&candidate_statement, &validity_other_key.into(), &parent_hash); let signed_statement = ::table::generic::SignedStatement { statement: candidate_statement, signature: signature.into(), @@ -806,11 +804,12 @@ mod tests { let para_id = ParaId::from(1); let parent_hash = Default::default(); - let local_key = Arc::new(Ed25519Keyring::Alice.pair()); - let local_id = local_key.public(); + let local_key = Sr25519Keyring::Alice.pair(); + let local_id: ValidatorId = local_key.public().into(); + let local_key: Arc<ValidatorPair> = Arc::new(local_key.into()); - let validity_other_key = Ed25519Keyring::Bob.pair(); - let validity_other = validity_other_key.public(); + let validity_other_key = Sr25519Keyring::Bob.pair(); + let validity_other: ValidatorId = validity_other_key.public().into(); let validity_other_index = 1; groups.insert(para_id, GroupInfo { @@ -819,9 +818,9 @@ mod tests { }); let shared_table = SharedTable::new( - &[local_id, validity_other], + [local_id, validity_other].to_vec(), groups, - local_key.clone(), + Some(local_key.clone()), parent_hash, ExtrinsicStore::new_in_memory(), None, @@ -841,7 +840,7 @@ mod tests { let hash = candidate.hash(); let candidate_statement = GenericStatement::Candidate(candidate); - let signature = crate::sign_table_statement(&candidate_statement, &validity_other_key, &parent_hash); + let signature = crate::sign_table_statement(&candidate_statement, &validity_other_key.into(), &parent_hash); let signed_statement = ::table::generic::SignedStatement { statement: candidate_statement, signature: signature.into(), @@ -872,11 +871,12 @@ mod tests { let extrinsic = Extrinsic { outgoing_messages: Vec::new() }; let parent_hash = Default::default(); - let local_key = Arc::new(Ed25519Keyring::Alice.pair()); - let local_id = local_key.public(); + let local_key = Sr25519Keyring::Alice.pair(); + let local_id: ValidatorId = local_key.public().into(); + let local_key: Arc<ValidatorPair> = Arc::new(local_key.into()); - let validity_other_key = Ed25519Keyring::Bob.pair(); - let validity_other = validity_other_key.public(); + let validity_other_key = Sr25519Keyring::Bob.pair(); + let validity_other: ValidatorId = validity_other_key.public().into(); groups.insert(para_id, GroupInfo { validity_guarantors: [local_id.clone(), validity_other.clone()].iter().cloned().collect(), @@ -884,9 +884,9 @@ mod tests { }); let shared_table = SharedTable::new( - &[local_id, validity_other], + [local_id, validity_other].to_vec(), groups, - local_key.clone(), + Some(local_key.clone()), parent_hash, ExtrinsicStore::new_in_memory(), None, @@ -908,7 +908,7 @@ mod tests { candidate, pov_block, extrinsic, - )); + )).unwrap(); assert!(shared_table.inner.lock().validated.get(&hash).expect("validation has started").is_done()); @@ -919,29 +919,4 @@ mod tests { assert!(a.is_none()); } - - #[test] - fn index_mapping_from_authorities() { - let authorities_set: &[&[_]] = &[ - &[], - &[Ed25519Keyring::Alice.pair().public()], - &[Ed25519Keyring::Alice.pair().public(), Ed25519Keyring::Bob.pair().public()], - &[Ed25519Keyring::Bob.pair().public(), Ed25519Keyring::Alice.pair().public()], - &[Ed25519Keyring::Alice.pair().public(), Ed25519Keyring::Bob.pair().public(), Ed25519Keyring::Charlie.pair().public()], - &[Ed25519Keyring::Charlie.pair().public(), Ed25519Keyring::Bob.pair().public(), Ed25519Keyring::Alice.pair().public()], - ]; - - for authorities in authorities_set { - let shared_table = SharedTable::new( - authorities, - HashMap::new(), - Arc::new(Ed25519Keyring::Alice.pair()), - Default::default(), - ExtrinsicStore::new_in_memory(), - None, - ); - let expected_mapping = authorities.iter().enumerate().map(|(i, k)| (i as ValidatorIndex, k.clone())).collect(); - assert_eq!(shared_table.context.index_mapping, expected_mapping); - } - } } -- GitLab