diff --git a/Cargo.lock b/Cargo.lock index 2bdda869860d..e48886a2b08e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,7 +2,8 @@ name = "adder" version = "0.1.0" dependencies = [ - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-parachain 0.1.0", "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -14,7 +15,7 @@ dependencies = [ "adder 0.1.0", "ctrlc 1.1.1 (git+https://github.com/paritytech/rust-ctrlc.git)", "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-collator 0.1.0", "polkadot-parachain 0.1.0", @@ -22,26 +23,56 @@ dependencies = [ "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", ] +[[package]] +name = "aes-ctr" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aes-soft 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "aesni 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ctr 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "stream-cipher 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "aes-soft" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-cipher-trait 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "aesni" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-cipher-trait 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "stream-cipher 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "aho-corasick" -version = "0.6.6" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "aio-limited" version = "0.1.0" -source = "git+https://github.com/paritytech/aio-limited.git#1f42497dcd2a6f85b83af97cd80314b26a1e4a9e" +source = "git+https://github.com/paritytech/aio-limited.git#f01b01501c87c93d3005f9120cc35d0e576fa7a3" dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -49,17 +80,12 @@ name = "ansi_term" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "ansi_term" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "ansi_term" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -75,7 +101,7 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -83,15 +109,15 @@ name = "arrayvec" version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "asn1_der" -version = "0.5.5" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "etrace 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "etrace 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -101,7 +127,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -110,10 +136,10 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -121,56 +147,44 @@ name = "backtrace-sys" version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "base58" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "base64" -version = "0.5.2" +name = "base-x" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] -name = "base64" -version = "0.6.0" +name = "base58" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "base64" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "base64" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "bigint" -version = "4.4.0" +version = "4.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -186,9 +200,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bitflags" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "blake2" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crypto-mac 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "blake2-rfc" version = "0.2.18" @@ -203,13 +227,21 @@ name = "block-buffer" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "arrayref 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "block-cipher-trait" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "bs58" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -224,44 +256,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "byteorder" -version = "1.2.4" +version = "1.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bytes" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cc" -version = "1.0.18" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "cfg-if" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "chashmap" -version = "2.2.1" -source = "git+https://github.com/redox-os/tfs#3e7dcdb0c586d0d8bb3f25bfd948d2f418a4ab10" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "owning_ref 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "chrono" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -272,12 +304,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "yaml-rust 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "clear_on_drop" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -285,15 +324,15 @@ name = "cloudabi" version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "cmake" -version = "0.1.33" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -303,16 +342,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "core-foundation" -version = "0.2.3" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "core-foundation-sys" -version = "0.2.3" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", @@ -323,11 +362,6 @@ name = "crossbeam" version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "crossbeam" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "crossbeam-deque" version = "0.2.0" @@ -339,11 +373,11 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.3.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-epoch 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -352,23 +386,23 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossbeam-epoch" -version = "0.4.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -378,27 +412,59 @@ name = "crossbeam-utils" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "crossbeam-utils" -version = "0.3.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "crossbeam-utils" -version = "0.5.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "crunchy" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "crunchy" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "crypto-mac" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crypto-mac" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ctr" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-cipher-trait 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "stream-cipher 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "ctrlc" version = "1.1.1" @@ -409,17 +475,35 @@ dependencies = [ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "curve25519-dalek" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.2.7 (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.7.6 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "data-encoding" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "datastore" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346#304e9c72c88bc97824f2734dc19d1b5f4556d346" +source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" dependencies = [ "base64 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "chashmap 2.2.1 (git+https://github.com/redox-os/tfs)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "chashmap 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -429,17 +513,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "digest" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "edit-distance" -version = "2.0.1" +name = "discard" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "ed25519-dalek" +version = "0.8.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 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", + "failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "either" version = "1.5.0" @@ -462,10 +559,22 @@ dependencies = [ "regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "env_logger" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "humantime 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "environmental" -version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "error-chain" @@ -478,100 +587,17 @@ dependencies = [ [[package]] name = "eth-secp256k1" version = "0.5.7" -source = "git+https://github.com/paritytech/rust-secp256k1#db81cfea59014b4d176f10f86ed52e1a130b6822" +source = "git+https://github.com/paritytech/rust-secp256k1#ccc06e7480148b723eb44ac56cf4d20eec380b6f" dependencies = [ "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ethbloom" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "ethereum-types-serialize 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ethcore-io" -version = "1.12.0" -source = "git+https://github.com/paritytech/parity.git#6e62d77e4d6211fca1b66a34f3b5047f3a406e77" -dependencies = [ - "crossbeam 0.3.2 (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.3 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "timer 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ethereum-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "ethbloom 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethereum-types-serialize 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "uint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ethereum-types" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "ethbloom 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethereum-types-serialize 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ethereum-types-serialize" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "ethkey" -version = "0.3.0" -source = "git+https://github.com/paritytech/parity.git#6e62d77e4d6211fca1b66a34f3b5047f3a406e77" -dependencies = [ - "byteorder 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "edit-distance 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "eth-secp256k1 0.5.7 (git+https://github.com/paritytech/rust-secp256k1)", - "ethereum-types 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "mem 0.1.0 (git+https://github.com/paritytech/parity.git)", - "parity-crypto 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-wordlist 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "etrace" -version = "1.0.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -579,10 +605,15 @@ name = "exit-future" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "failure" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "fake-simd" version = "0.1.2" @@ -596,15 +627,30 @@ dependencies = [ "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "finality-grandpa" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "fixed-hash" -version = "0.2.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "static_assertions 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -630,10 +676,10 @@ name = "fs-swap" version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -641,7 +687,7 @@ name = "fuchsia-zircon" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -652,7 +698,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "futures" -version = "0.1.23" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -660,13 +706,13 @@ name = "futures-cpupool" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gcc" -version = "0.3.54" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -687,22 +733,44 @@ dependencies = [ [[package]] name = "globset" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick 0.6.9 (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.3 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "hashdb" -version = "0.2.1" +name = "h2" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (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.25 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.13 (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.6 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "string 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hash-db" +version = "0.9.0" +source = "git+https://github.com/paritytech/trie#2616db2a2529098949e5d39aa06dd4e502a9e5f7" + +[[package]] +name = "hash256-std-hasher" +version = "0.9.0" +source = "git+https://github.com/paritytech/trie#2616db2a2529098949e5d39aa06dd4e502a9e5f7" +dependencies = [ + "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -710,7 +778,15 @@ name = "heapsize" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "heck" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -724,7 +800,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "hex-literal-impl 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-hack 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -732,21 +808,48 @@ name = "hex-literal-impl" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro-hack 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hmac" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crypto-mac 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "http" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "httparse" -version = "1.3.2" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "humantime" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "hyper" -version = "0.10.13" +version = "0.10.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "language-tags 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)", "mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -755,33 +858,33 @@ dependencies = [ "traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "hyper" -version = "0.11.27" +version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "base64 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "h2 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "http 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "mime 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "relay 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-proto 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "want 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -789,20 +892,20 @@ name = "idna" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "matches 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-normalization 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "integer-encoding" -version = "1.0.5" +name = "indexmap" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "integer-sqrt" -version = "0.1.0" -source = "git+https://github.com/paritytech/integer-sqrt-rs.git#886e9cb983c46498003878afe965d55caa762025" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "interleaved-ordered" @@ -818,87 +921,82 @@ dependencies = [ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "itertools" -version = "0.5.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "itoa" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "jsonrpc-core" -version = "8.0.2" -source = "git+https://github.com/paritytech/jsonrpc.git#7e5df8ca2acc01c608b2d2bd8cdcdb19d8cbaa90" +version = "9.0.0" +source = "git+https://github.com/paritytech/jsonrpc.git#62d739e807c536575c1c885479706bffed3a8880" dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-http-server" -version = "8.0.1" -source = "git+https://github.com/paritytech/jsonrpc.git#7e5df8ca2acc01c608b2d2bd8cdcdb19d8cbaa90" +version = "9.0.0" +source = "git+https://github.com/paritytech/jsonrpc.git#62d739e807c536575c1c885479706bffed3a8880" dependencies = [ - "hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 8.0.2 (git+https://github.com/paritytech/jsonrpc.git)", - "jsonrpc-server-utils 8.0.1 (git+https://github.com/paritytech/jsonrpc.git)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.14 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "jsonrpc-server-utils 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-macros" -version = "8.0.1" -source = "git+https://github.com/paritytech/jsonrpc.git#7e5df8ca2acc01c608b2d2bd8cdcdb19d8cbaa90" +version = "9.0.0" +source = "git+https://github.com/paritytech/jsonrpc.git#62d739e807c536575c1c885479706bffed3a8880" dependencies = [ - "jsonrpc-core 8.0.2 (git+https://github.com/paritytech/jsonrpc.git)", - "jsonrpc-pubsub 8.0.1 (git+https://github.com/paritytech/jsonrpc.git)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "jsonrpc-pubsub 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-pubsub" -version = "8.0.1" -source = "git+https://github.com/paritytech/jsonrpc.git#7e5df8ca2acc01c608b2d2bd8cdcdb19d8cbaa90" +version = "9.0.0" +source = "git+https://github.com/paritytech/jsonrpc.git#62d739e807c536575c1c885479706bffed3a8880" dependencies = [ - "jsonrpc-core 8.0.2 (git+https://github.com/paritytech/jsonrpc.git)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-server-utils" -version = "8.0.1" -source = "git+https://github.com/paritytech/jsonrpc.git#7e5df8ca2acc01c608b2d2bd8cdcdb19d8cbaa90" -dependencies = [ - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "globset 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 8.0.2 (git+https://github.com/paritytech/jsonrpc.git)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +version = "9.0.0" +source = "git+https://github.com/paritytech/jsonrpc.git#62d739e807c536575c1c885479706bffed3a8880" +dependencies = [ + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-ws-server" -version = "8.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#7e5df8ca2acc01c608b2d2bd8cdcdb19d8cbaa90" +version = "9.0.0" +source = "git+https://github.com/paritytech/jsonrpc.git#62d739e807c536575c1c885479706bffed3a8880" dependencies = [ "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 8.0.2 (git+https://github.com/paritytech/jsonrpc.git)", - "jsonrpc-server-utils 8.0.1 (git+https://github.com/paritytech/jsonrpc.git)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "jsonrpc-server-utils 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "ws 0.7.5 (git+https://github.com/tomusdrw/ws-rs)", ] @@ -915,7 +1013,7 @@ dependencies = [ [[package]] name = "kvdb" version = "0.1.0" -source = "git+https://github.com/paritytech/parity-common.git#8ea8ed6e94e1f515bb4e53149d4c6563dfef67b4" +source = "git+https://github.com/paritytech/parity-common.git#579c81eb4f7169dfc764919b020f10bb8f117440" dependencies = [ "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-bytes 0.1.0 (git+https://github.com/paritytech/parity-common.git)", @@ -933,31 +1031,31 @@ dependencies = [ [[package]] name = "kvdb-memorydb" version = "0.1.0" -source = "git+https://github.com/paritytech/parity-common.git#22209e14805e5764f7fe81259324d34eab179264" +source = "git+https://github.com/paritytech/parity-common.git#579c81eb4f7169dfc764919b020f10bb8f117440" dependencies = [ "kvdb 0.1.0 (git+https://github.com/paritytech/parity-common.git)", - "parking_lot 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "kvdb-rocksdb" -version = "0.1.3" -source = "git+https://github.com/paritytech/parity-common.git#8ea8ed6e94e1f515bb4e53149d4c6563dfef67b4" +version = "0.1.4" +source = "git+https://github.com/paritytech/parity-common.git#579c81eb4f7169dfc764919b020f10bb8f117440" dependencies = [ "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "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.git)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-rocksdb 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 0.2.11 (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.0.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "kvdb-rocksdb" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -967,7 +1065,7 @@ dependencies = [ "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-rocksdb 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -983,15 +1081,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "lazy_static" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "version_check 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "lazycell" -version = "0.6.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1004,303 +1099,319 @@ name = "libloading" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346#304e9c72c88bc97824f2734dc19d1b5f4556d346" -dependencies = [ - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "libp2p-dns 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "libp2p-floodsub 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "libp2p-identify 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "libp2p-kad 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "libp2p-mplex 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "libp2p-peerstore 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "libp2p-ping 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "libp2p-ratelimit 0.1.1 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "libp2p-relay 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "libp2p-secio 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "libp2p-tcp-transport 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "libp2p-transport-timeout 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "libp2p-uds 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "libp2p-websocket 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "libp2p-yamux 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", +source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +dependencies = [ + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "libp2p-dns 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "libp2p-floodsub 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "libp2p-identify 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "libp2p-kad 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "libp2p-mplex 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "libp2p-peerstore 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "libp2p-ping 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "libp2p-ratelimit 0.1.1 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "libp2p-relay 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "libp2p-secio 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "libp2p-tcp-transport 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "libp2p-transport-timeout 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "libp2p-uds 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "libp2p-websocket 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "libp2p-yamux 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "multihash 0.8.1-pre (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "stdweb 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-current-thread 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-core" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346#304e9c72c88bc97824f2734dc19d1b5f4556d346" +source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" dependencies = [ - "bs58 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (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.23 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "multihash 0.8.1-pre (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "multistream-select 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "parking_lot 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "multihash 0.8.1-pre (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "multistream-select 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rw-stream-sink 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "smallvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "rw-stream-sink 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "smallvec 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-dns" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346#304e9c72c88bc97824f2734dc19d1b5f4556d346" +source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "tokio-dns-unofficial 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-floodsub" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346#304e9c72c88bc97824f2734dc19d1b5f4556d346" +source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" dependencies = [ - "bs58 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (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.23 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "parking_lot 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.6 (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.10 (registry+https://github.com/rust-lang/crates.io-index)", "unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-identify" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346#304e9c72c88bc97824f2734dc19d1b5f4556d346" +source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" dependencies = [ - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (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.23 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "libp2p-peerstore 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "parking_lot 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "libp2p-peerstore 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.2.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.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-kad" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346#304e9c72c88bc97824f2734dc19d1b5f4556d346" +source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" dependencies = [ "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", - "bigint 4.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bs58 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "datastore 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", + "bigint 4.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "datastore 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "libp2p-identify 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "libp2p-ping 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "parking_lot 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "libp2p-identify 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "libp2p-ping 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "multihash 0.8.1-pre (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.6 (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.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-mplex" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346#304e9c72c88bc97824f2734dc19d1b5f4556d346" +source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" dependencies = [ - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (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.23 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.4 (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.10 (registry+https://github.com/rust-lang/crates.io-index)", "unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-peerstore" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346#304e9c72c88bc97824f2734dc19d1b5f4556d346" +source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" dependencies = [ - "bs58 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "datastore 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", + "bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "datastore 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-ping" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346#304e9c72c88bc97824f2734dc19d1b5f4556d346" -dependencies = [ - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "multistream-select 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "parking_lot 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", +source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +dependencies = [ + "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "multistream-select 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (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.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-ratelimit" version = "0.1.1" -source = "git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346#304e9c72c88bc97824f2734dc19d1b5f4556d346" +source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" dependencies = [ "aio-limited 0.1.0 (git+https://github.com/paritytech/aio-limited.git)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-relay" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346#304e9c72c88bc97824f2734dc19d1b5f4556d346" -dependencies = [ - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "libp2p-peerstore 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "protobuf 2.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +dependencies = [ + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "libp2p-peerstore 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "protobuf 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.3 (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.10 (registry+https://github.com/rust-lang/crates.io-index)", "unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-secio" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346#304e9c72c88bc97824f2734dc19d1b5f4556d346" +source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" dependencies = [ - "asn1_der 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "aes-ctr 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "asn1_der 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "ctr 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ed25519-dalek 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "eth-secp256k1 0.5.7 (git+https://github.com/paritytech/rust-secp256k1)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "protobuf 2.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "hmac 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", - "rw-stream-sink 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "rw-stream-sink 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "sha2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "stdweb 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "twofish 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-tcp-transport" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346#304e9c72c88bc97824f2734dc19d1b5f4556d346" +source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "tk-listen 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-transport-timeout" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346#304e9c72c88bc97824f2734dc19d1b5f4556d346" +source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-uds" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346#304e9c72c88bc97824f2734dc19d1b5f4556d346" +source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "tokio-uds 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "tokio-uds 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-websocket" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346#304e9c72c88bc97824f2734dc19d1b5f4556d346" +source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "rw-stream-sink 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "rw-stream-sink 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", "stdweb 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "websocket 0.20.3 (git+https://github.com/tomaka/rust-websocket?branch=send)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "websocket 0.21.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "libp2p-yamux" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346#304e9c72c88bc97824f2734dc19d1b5f4556d346" -dependencies = [ - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +dependencies = [ + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "yamux 0.1.0 (git+https://github.com/paritytech/yamux)", ] @@ -1321,10 +1432,10 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1333,33 +1444,48 @@ name = "log" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "log" -version = "0.4.3" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "matches" -version = "0.1.7" +name = "mashup" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "mashup-impl 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] -name = "mem" -version = "0.1.0" -source = "git+https://github.com/paritytech/parity.git#6e62d77e4d6211fca1b66a34f3b5047f3a406e77" +name = "mashup-impl" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "matches" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "memchr" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1368,56 +1494,56 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "memory_units" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "memorydb" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "memory-db" +version = "0.9.0" +source = "git+https://github.com/paritytech/trie#2616db2a2529098949e5d39aa06dd4e502a9e5f7" dependencies = [ - "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "mime" -version = "0.2.6" +name = "memory_units" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "mime" -version = "0.3.9" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unicase 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "mio" -version = "0.6.15" +version = "0.6.16" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "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)", - "lazycell 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (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.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "mio-extras" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "mio-uds" version = "0.6.7" @@ -1425,7 +1551,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1442,35 +1568,40 @@ dependencies = [ [[package]] name = "multiaddr" version = "0.3.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346#304e9c72c88bc97824f2734dc19d1b5f4556d346" +source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" dependencies = [ - "bs58 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "integer-encoding 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "multihash 0.8.1-pre (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", + "data-encoding 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "multihash 0.8.1-pre (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "unsigned-varint 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "multihash" version = "0.8.1-pre" -source = "git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346#304e9c72c88bc97824f2734dc19d1b5f4556d346" +source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" dependencies = [ + "blake2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "sha1 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "multistream-select" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346#304e9c72c88bc97824f2734dc19d1b5f4556d346" -dependencies = [ - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +dependencies = [ + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.6 (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.10 (registry+https://github.com/rust-lang/crates.io-index)", "unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1482,23 +1613,21 @@ dependencies = [ "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "nan-preserving-float" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "native-tls" -version = "0.1.5" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl 0.9.24 (registry+https://github.com/rust-lang/crates.io-index)", - "schannel 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", - "security-framework 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "security-framework-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.39 (registry+https://github.com/rust-lang/crates.io-index)", + "schannel 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "security-framework 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "security-framework-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1506,14 +1635,19 @@ name = "net2" version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "nodrop" -version = "0.1.12" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "nohash-hasher" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1521,12 +1655,12 @@ name = "num-integer" version = "0.1.39" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "num-traits 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "num-traits" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1546,29 +1680,45 @@ dependencies = [ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "opaque-debug" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "openssl" -version = "0.9.24" +version = "0.10.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.35 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.39 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "openssl-probe" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "openssl-sys" -version = "0.9.35" +version = "0.9.39" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", - "vcpkg 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "owning_ref" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "owning_ref" version = "0.3.3" @@ -1577,10 +1727,18 @@ dependencies = [ "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "owning_ref" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "parity-bytes" version = "0.1.0" -source = "git+https://github.com/paritytech/parity-common.git#8ea8ed6e94e1f515bb4e53149d4c6563dfef67b4" +source = "git+https://github.com/paritytech/parity-common.git#579c81eb4f7169dfc764919b020f10bb8f117440" [[package]] name = "parity-bytes" @@ -1589,20 +1747,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "parity-codec" -version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-codec-derive" -version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.14.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1623,15 +1782,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "local-encoding 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-rocksdb-sys 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-rocksdb-sys 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-rocksdb-sys" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cmake 0.1.33 (registry+https://github.com/rust-lang/crates.io-index)", + "cmake 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "local-encoding 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-snappy-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1642,7 +1801,7 @@ name = "parity-snappy-sys" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cmake 0.1.33 (registry+https://github.com/rust-lang/crates.io-index)", + "cmake 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1651,17 +1810,17 @@ name = "parity-wasm" version = "0.31.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "parity-wordlist" -version = "1.2.0" +name = "parking_lot" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "owning_ref 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", + "thread-id 3.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1684,11 +1843,11 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lock_api 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", + "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1697,21 +1856,21 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "patricia-trie" -version = "0.2.2" +name = "parking_lot_core" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.5 (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.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1721,16 +1880,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "pkg-config" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "plain_hasher" -version = "0.2.0" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "polkadot" @@ -1738,40 +1889,20 @@ version = "0.3.0" dependencies = [ "ctrlc 1.1.1 (git+https://github.com/paritytech/rust-ctrlc.git)", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-cli 0.3.0", "vergen 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "polkadot-api" -version = "0.1.0" -dependencies = [ - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "polkadot-executor 0.1.0", - "polkadot-primitives 0.1.0", - "polkadot-runtime 0.1.0", - "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", - "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", - "srml-executive 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-client 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-executor 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-keyring 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-state-machine 0.1.0 (git+https://github.com/paritytech/substrate)", -] - [[package]] name = "polkadot-availability-store" version = "0.1.0" dependencies = [ "kvdb 0.1.0 (git+https://github.com/paritytech/parity-common.git)", "kvdb-memorydb 0.1.0 (git+https://github.com/paritytech/parity-common.git)", - "kvdb-rocksdb 0.1.3 (git+https://github.com/paritytech/parity-common.git)", + "kvdb-rocksdb 0.1.4 (git+https://github.com/paritytech/parity-common.git)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-primitives 0.1.0", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -1782,27 +1913,27 @@ name = "polkadot-cli" version = "0.3.0" dependencies = [ "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-service 0.3.0", + "structopt 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-cli 0.3.0 (git+https://github.com/paritytech/substrate)", - "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "polkadot-collator" version = "0.1.0" dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "polkadot-api 0.1.0", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-cli 0.3.0", "polkadot-primitives 0.1.0", "polkadot-runtime 0.1.0", "substrate-client 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", - "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1811,25 +1942,25 @@ version = "0.1.0" dependencies = [ "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "polkadot-api 0.1.0", "polkadot-availability-store 0.1.0", "polkadot-parachain 0.1.0", "polkadot-primitives 0.1.0", "polkadot-runtime 0.1.0", "polkadot-statement-table 0.1.0", - "polkadot-transaction-pool 0.1.0", - "rhododendron 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-support 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-bft 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-client 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-consensus-aura 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-consensus-common 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-finality-grandpa 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-keyring 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", - "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-transaction-pool 0.1.0 (git+https://github.com/paritytech/substrate)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1845,20 +1976,19 @@ dependencies = [ name = "polkadot-network" version = "0.1.0" dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "polkadot-api 0.1.0", "polkadot-availability-store 0.1.0", "polkadot-consensus 0.1.0", "polkadot-primitives 0.1.0", - "rhododendron 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-bft 0.1.0 (git+https://github.com/paritytech/substrate)", + "rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-network 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", - "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1866,23 +1996,25 @@ name = "polkadot-parachain" version = "0.1.0" dependencies = [ "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "polkadot-primitives" version = "0.1.0" dependencies = [ - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "pretty_assertions 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", + "sr-version 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-client 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-serializer 0.1.0 (git+https://github.com/paritytech/substrate)", ] @@ -1893,13 +2025,13 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-primitives 0.1.0", "rustc-hex 1.0.0 (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.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -1915,6 +2047,7 @@ dependencies = [ "srml-system 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-timestamp 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-treasury 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-client 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-keyring 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-serializer 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -1926,52 +2059,34 @@ version = "0.3.0" dependencies = [ "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "polkadot-api 0.1.0", "polkadot-availability-store 0.1.0", - "polkadot-consensus 0.1.0", "polkadot-executor 0.1.0", "polkadot-network 0.1.0", "polkadot-primitives 0.1.0", "polkadot-runtime 0.1.0", - "polkadot-transaction-pool 0.1.0", - "slog 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-client 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-consensus-aura 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-network 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-service 0.3.0 (git+https://github.com/paritytech/substrate)", "substrate-telemetry 0.3.0 (git+https://github.com/paritytech/substrate)", - "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-transaction-pool 0.1.0 (git+https://github.com/paritytech/substrate)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "polkadot-statement-table" version = "0.1.0" dependencies = [ - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", - "polkadot-primitives 0.1.0", - "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", -] - -[[package]] -name = "polkadot-transaction-pool" -version = "0.1.0" -dependencies = [ - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "polkadot-api 0.1.0", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-primitives 0.1.0", - "polkadot-runtime 0.1.0", - "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-client 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-extrinsic-pool 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-keyring 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", ] @@ -1986,20 +2101,20 @@ dependencies = [ [[package]] name = "proc-macro-hack" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro-hack-impl 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack-impl 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "proc-macro-hack-impl" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "proc-macro2" -version = "0.4.12" +version = "0.4.24" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2007,7 +2122,7 @@ dependencies = [ [[package]] name = "protobuf" -version = "2.0.4" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2018,20 +2133,6 @@ dependencies = [ "getopts 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "pwasm-alloc" -version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" -dependencies = [ - "pwasm-libc 0.1.0 (git+https://github.com/paritytech/substrate)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "pwasm-libc" -version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" - [[package]] name = "quick-error" version = "0.1.4" @@ -2044,10 +2145,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "quote" -version = "0.6.6" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2057,17 +2158,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2078,13 +2179,21 @@ dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_core" -version = "0.2.1" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_core" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2097,7 +2206,7 @@ dependencies = [ [[package]] name = "rayon" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2111,14 +2220,14 @@ version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "redox_syscall" -version = "0.1.40" +version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2126,7 +2235,7 @@ name = "redox_termios" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2134,23 +2243,23 @@ name = "regex" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "utf8-ranges 1.0.0 (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.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex" -version = "1.0.2" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.3 (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.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2158,23 +2267,15 @@ name = "regex-syntax" version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex-syntax" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "relay" -version = "0.1.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", + "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2182,16 +2283,16 @@ name = "remove_dir_all" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rhododendron" -version = "0.3.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2200,30 +2301,19 @@ name = "ring" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "rlp" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethereum-types 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "rust-crypto" version = "0.2.36" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2261,16 +2351,16 @@ dependencies = [ [[package]] name = "rw-stream-sink" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346#304e9c72c88bc97824f2734dc19d1b5f4556d346" +source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" dependencies = [ - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "ryu" -version = "0.2.3" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2286,13 +2376,18 @@ name = "safemem" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "safemem" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "schannel" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2307,21 +2402,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "security-framework" -version = "0.1.16" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "core-foundation 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "security-framework-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "security-framework-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "security-framework-sys" -version = "0.1.16" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2340,27 +2435,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde" -version = "1.0.71" +version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde_derive" -version = "1.0.71" +version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.14.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.21 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_json" -version = "1.0.26" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "itoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2373,6 +2468,11 @@ name = "sha1" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "sha1" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "sha2" version = "0.7.1" @@ -2380,7 +2480,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "block-buffer 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2414,7 +2514,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "slog" -version = "2.3.2" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2422,9 +2522,9 @@ name = "slog-async" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "slog 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (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.5 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2432,10 +2532,10 @@ name = "slog-json" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "chrono 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", - "slog 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2445,27 +2545,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "slog 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "smallvec" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "smallvec" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "smallvec" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "smallvec" -version = "0.6.4" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2474,82 +2559,66 @@ dependencies = [ [[package]] name = "sr-io" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ - "environmental 0.1.0 (git+https://github.com/paritytech/substrate)", - "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "environmental 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", + "parity-codec 2.1.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 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-state-machine 0.1.0 (git+https://github.com/paritytech/substrate)", - "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-trie 0.4.0 (git+https://github.com/paritytech/substrate)", ] [[package]] name = "sr-primitives" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" -dependencies = [ - "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", - "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", -] - -[[package]] -name = "sr-sandbox" -version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" -dependencies = [ - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" +dependencies = [ + "integer-sqrt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", - "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sr-std" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ - "pwasm-alloc 0.1.0 (git+https://github.com/paritytech/substrate)", - "pwasm-libc 0.1.0 (git+https://github.com/paritytech/substrate)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sr-version" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", ] [[package]] name = "srml-balances" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (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.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -2562,13 +2631,12 @@ dependencies = [ [[package]] name = "srml-consensus" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -2580,43 +2648,37 @@ dependencies = [ [[package]] name = "srml-council" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (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.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-balances 0.1.0 (git+https://github.com/paritytech/substrate)", - "srml-consensus 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-democracy 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-support 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-system 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-keyring 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", ] [[package]] name = "srml-democracy" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (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.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-balances 0.1.0 (git+https://github.com/paritytech/substrate)", - "srml-consensus 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-support 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-system 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -2625,12 +2687,12 @@ dependencies = [ [[package]] name = "srml-executive" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -2638,17 +2700,29 @@ dependencies = [ "srml-system 0.1.0 (git+https://github.com/paritytech/substrate)", ] +[[package]] +name = "srml-metadata" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" +dependencies = [ + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", +] + [[package]] name = "srml-session" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (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.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -2656,24 +2730,21 @@ dependencies = [ "srml-support 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-system 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-timestamp 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-keyring 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", ] [[package]] name = "srml-staking" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (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.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", - "sr-sandbox 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-balances 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-consensus 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -2688,29 +2759,29 @@ dependencies = [ [[package]] name = "srml-support" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", + "mashup 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-metadata 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", + "srml-metadata 0.1.0 (git+https://github.com/paritytech/substrate)", ] [[package]] name = "srml-system" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (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.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -2721,12 +2792,12 @@ dependencies = [ [[package]] name = "srml-timestamp" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -2739,13 +2810,12 @@ dependencies = [ [[package]] name = "srml-treasury" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -2760,105 +2830,169 @@ name = "stable_deref_trait" version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "static_assertions" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "stdweb" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "stdweb" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "discard 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "stdweb-derive 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "stdweb-internal-macros 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "stdweb-internal-runtime 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "stdweb-derive" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.21 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "stdweb-internal-macros" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "base-x 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.21 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "stdweb-internal-runtime" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "stream-cipher" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "string" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "strsim" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "substrate-bft" -version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +name = "structopt" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rhododendron 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", - "sr-version 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", - "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", + "structopt-derive 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "structopt-derive" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "heck 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.21 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-cli" version = "0.3.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ - "ansi_term 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", + "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)", "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "names 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "slog 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", + "structopt 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-client 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-network 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-network-libp2p 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-service 0.3.0 (git+https://github.com/paritytech/substrate)", "substrate-telemetry 0.3.0 (git+https://github.com/paritytech/substrate)", - "sysinfo 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)", + "sysinfo 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-client" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ "error-chain 0.12.0 (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.23 (registry+https://github.com/rust-lang/crates.io-index)", - "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", + "kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "patricia-trie 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "slog 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-bft 0.1.0 (git+https://github.com/paritytech/substrate)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", + "sr-version 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-consensus-common 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-executor 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-keyring 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-metadata 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-state-machine 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-telemetry 0.3.0 (git+https://github.com/paritytech/substrate)", - "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-trie 0.4.0 (git+https://github.com/paritytech/substrate)", ] [[package]] name = "substrate-client-db" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ - "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", "kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "kvdb-rocksdb 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "memorydb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", + "kvdb-rocksdb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-client 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -2866,191 +3000,235 @@ dependencies = [ "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-state-db 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-state-machine 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-trie 0.4.0 (git+https://github.com/paritytech/substrate)", ] [[package]] -name = "substrate-executor" +name = "substrate-consensus-aura" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ - "byteorder 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", + "sr-version 0.1.0 (git+https://github.com/paritytech/substrate)", + "srml-consensus 0.1.0 (git+https://github.com/paritytech/substrate)", + "srml-support 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-client 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-consensus-common 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-network 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-consensus-common" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" +dependencies = [ + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", + "sr-version 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-executor" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" +dependencies = [ + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-version 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-serializer 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-state-machine 0.1.0 (git+https://github.com/paritytech/substrate)", - "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "twox-hash 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-trie 0.4.0 (git+https://github.com/paritytech/substrate)", + "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "substrate-extrinsic-pool" +name = "substrate-finality-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "finality-grandpa 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", - "transaction-pool 1.13.2 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-client 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-consensus-common 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-finality-grandpa-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-network 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-service 0.3.0 (git+https://github.com/paritytech/substrate)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-finality-grandpa-primitives" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" +dependencies = [ + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-client 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", ] [[package]] name = "substrate-keyring" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", ] [[package]] name = "substrate-keystore" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "parity-crypto 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "subtle 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "substrate-metadata" -version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" -dependencies = [ - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", -] - [[package]] name = "substrate-network" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ - "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-io 1.12.0 (git+https://github.com/paritytech/parity.git)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-client 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-consensus-common 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-keyring 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-network-libp2p 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-test-client 0.1.0 (git+https://github.com/paritytech/substrate)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-network-libp2p" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ethcore-io 1.12.0 (git+https://github.com/paritytech/parity.git)", - "ethereum-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "ethkey 0.3.0 (git+https://github.com/paritytech/parity.git)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "libp2p 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-primitives" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" 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.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fixed-hash 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", + "hash256-std-hasher 0.9.0 (git+https://github.com/paritytech/trie)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", - "patricia-trie 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.4 (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.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", "twox-hash 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "uint 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-rpc" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 8.0.2 (git+https://github.com/paritytech/jsonrpc.git)", - "jsonrpc-macros 8.0.1 (git+https://github.com/paritytech/jsonrpc.git)", - "jsonrpc-pubsub 8.0.1 (git+https://github.com/paritytech/jsonrpc.git)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", + "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "jsonrpc-macros 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "jsonrpc-pubsub 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-version 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-client 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-executor 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-extrinsic-pool 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-state-machine 0.1.0 (git+https://github.com/paritytech/substrate)", - "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-transaction-pool 0.1.0 (git+https://github.com/paritytech/substrate)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-rpc-servers" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ - "jsonrpc-core 8.0.2 (git+https://github.com/paritytech/jsonrpc.git)", - "jsonrpc-http-server 8.0.1 (git+https://github.com/paritytech/jsonrpc.git)", - "jsonrpc-pubsub 8.0.1 (git+https://github.com/paritytech/jsonrpc.git)", - "jsonrpc-ws-server 8.0.0 (git+https://github.com/paritytech/jsonrpc.git)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-http-server 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "jsonrpc-pubsub 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "jsonrpc-ws-server 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-rpc 0.1.0 (git+https://github.com/paritytech/substrate)", ] @@ -3058,52 +3236,53 @@ dependencies = [ [[package]] name = "substrate-serializer" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-service" version = "0.3.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", - "slog 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-client 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-client-db 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-consensus-common 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-executor 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-extrinsic-pool 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-keystore 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-network 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-rpc 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-rpc-servers 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-telemetry 0.3.0 (git+https://github.com/paritytech/substrate)", + "substrate-transaction-pool 0.1.0 (git+https://github.com/paritytech/substrate)", "target_info 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-state-db" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", ] @@ -3111,35 +3290,112 @@ dependencies = [ [[package]] name = "substrate-state-machine" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ - "byteorder 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "memorydb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "patricia-trie 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", - "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-trie 0.4.0 (git+https://github.com/paritytech/substrate)", + "trie-db 0.9.0 (git+https://github.com/paritytech/trie)", + "trie-root 0.9.0 (git+https://github.com/paritytech/trie)", ] [[package]] name = "substrate-telemetry" version = "0.3.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" dependencies = [ - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "slog 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "slog-async 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "slog-json 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "slog-scope 4.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "websocket 0.20.3 (registry+https://github.com/rust-lang/crates.io-index)", + "ws 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-test-client" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" +dependencies = [ + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-client 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-consensus-common 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-executor 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-keyring 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-state-machine 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-test-runtime 0.1.0 (git+https://github.com/paritytech/substrate)", +] + +[[package]] +name = "substrate-test-runtime" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", + "sr-version 0.1.0 (git+https://github.com/paritytech/substrate)", + "srml-support 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-client 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-keyring 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", +] + +[[package]] +name = "substrate-transaction-graph" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" +dependencies = [ + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", +] + +[[package]] +name = "substrate-transaction-pool" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" +dependencies = [ + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-client 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-transaction-graph 0.1.0 (git+https://github.com/paritytech/substrate)", +] + +[[package]] +name = "substrate-trie" +version = "0.4.0" +source = "git+https://github.com/paritytech/substrate#f1960129c00e9353e6f801089e703ecdd2167dd6" +dependencies = [ + "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", + "memory-db 0.9.0 (git+https://github.com/paritytech/trie)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "trie-db 0.9.0 (git+https://github.com/paritytech/trie)", + "trie-root 0.9.0 (git+https://github.com/paritytech/trie)", ] [[package]] @@ -3147,31 +3403,41 @@ name = "subtle" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "subtle" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "syn" -version = "0.14.8" +version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (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.5.7" +name = "syn" +version = "0.15.21" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (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 = "take" -version = "0.1.0" +name = "sysinfo" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "take_mut" @@ -3188,20 +3454,29 @@ name = "tempdir" version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tempfile" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "termcolor" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3210,7 +3485,7 @@ version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3223,30 +3498,31 @@ dependencies = [ ] [[package]] -name = "thread_local" -version = "0.3.5" +name = "thread-id" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "time" -version = "0.1.40" +name = "thread_local" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "timer" -version = "0.2.0" +name = "time" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "chrono 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3262,37 +3538,41 @@ name = "tk-listen" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio" -version = "0.1.7" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-fs 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tcp 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-udp 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-fs 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-uds 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-codec" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3300,26 +3580,26 @@ name = "tokio-core" version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-current-thread" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3327,162 +3607,133 @@ name = "tokio-dns-unofficial" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-executor" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-fs" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-io" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-proto" -version = "0.1.1" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "take 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-reactor" -version = "0.1.3" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "tokio-service" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-tcp" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-threadpool" -version = "0.1.5" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crossbeam-deque 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-timer" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-tls" -version = "0.1.4" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "native-tls 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-udp" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (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.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-uds" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (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.43 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-reactor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "trace-time" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3491,30 +3742,38 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "transaction-pool" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "trie-db" +version = "0.9.0" +source = "git+https://github.com/paritytech/trie#2616db2a2529098949e5d39aa06dd4e502a9e5f7" dependencies = [ - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "trace-time 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "triehash" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "trie-root" +version = "0.9.0" +source = "git+https://github.com/paritytech/trie#2616db2a2529098949e5d39aa06dd4e502a9e5f7" dependencies = [ - "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", ] [[package]] name = "try-lock" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "twofish" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-cipher-trait 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "opaque-debug 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "twox-hash" @@ -3536,28 +3795,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "ucd-util" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "uint" -version = "0.2.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", -] [[package]] name = "uint" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy 0.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)", ] @@ -3566,15 +3813,15 @@ name = "unicase" version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "version_check 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "unicase" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "version_check 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3582,7 +3829,7 @@ name = "unicode-bidi" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "matches 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3590,6 +3837,11 @@ name = "unicode-normalization" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "unicode-segmentation" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "unicode-width" version = "0.1.5" @@ -3608,13 +3860,21 @@ dependencies = [ "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "unsigned-varint" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "unsigned-varint" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3624,22 +3884,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "url" -version = "1.7.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "matches 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "utf8-ranges" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "vcpkg" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -3658,7 +3918,7 @@ dependencies = [ [[package]] name = "version_check" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -3668,65 +3928,43 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "want" -version = "0.0.4" +version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "try-lock 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasmi" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "websocket" -version = "0.20.3" -source = "git+https://github.com/tomaka/rust-websocket?branch=send#28ea5eb82b573bf3ace2fc75c36d791bcedf08b1" -dependencies = [ - "base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", - "native-tls 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", - "sha1 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tls 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "websocket" -version = "0.20.3" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "base64 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", - "native-tls 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", - "sha1 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)", + "native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-tls 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tls 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3736,7 +3974,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "winapi" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3753,25 +3991,60 @@ name = "winapi-i686-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "winapi-util" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "wincolor" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "ws" version = "0.7.5" source = "git+https://github.com/tomusdrw/ws-rs#f12d19c4c19422fc79af28a3181f598bc07ecd1e" dependencies = [ - "byteorder 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", "sha1 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ws" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3788,274 +4061,281 @@ name = "xdg" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "yaml-rust" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "yamux" version = "0.1.0" -source = "git+https://github.com/paritytech/yamux#db6285826bed432fa599e6051fadc22920fe6614" +source = "git+https://github.com/paritytech/yamux#8f3d16e7645447645d3552a52159d56c8a01de27" dependencies = [ - "bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (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)", - "tokio-codec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.7 (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.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [metadata] -"checksum aho-corasick 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c1c6d463cbe7ed28720b5b489e7c083eeb8f90d08be2a0d6bb9e1ffea9ce1afa" +"checksum aes-ctr 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f65958ff3692041c36fc009261ccd63f24cd8e0dc1164266f068c2387e8b4e4f" +"checksum aes-soft 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67cc03b0a090a05cb01e96998a01905d7ceedce1bc23b756c0bb7faa0682ccb1" +"checksum aesni 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6810b7fb9f2bb4f76f05ac1c170b8dde285b6308955dc3afd89710268c958d9e" +"checksum aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1e9a933f4e58658d7b12defcf96dc5c720f20832deebe3e0a19efd3b6aaeeb9e" "checksum aio-limited 0.1.0 (git+https://github.com/paritytech/aio-limited.git)" = "" -"checksum ansi_term 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6b3568b48b7cefa6b8ce125f9bb4989e52fbcc29ebea88df04cc7c5f12f70455" "checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" "checksum ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "23ac7c30002a5accbf7e8987d0632fa6de155b7c3d39d0067317a391e00a2ef6" "checksum app_dirs 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e73a24bad9bd6a94d6395382a6c69fe071708ae4409f763c5475e14ee896313d" -"checksum arrayref 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "0fd1479b7c29641adbd35ff3b5c293922d696a92f25c8c975da3e0acbc87258f" +"checksum arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee" "checksum arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a1e964f9e24d588183fcb43503abda40d288c8657dfc27311516ce2f05675aef" -"checksum asn1_der 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "dd04fa575b9fe3b7071b96e1eeebbed211514bd35a3112206dfc2f064d8f8124" +"checksum asn1_der 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)" = "766afdc5c6d7c15de1abe4c9c15e360be3aa972c363ba5b606be3c4271235886" "checksum atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9a7d5b8723950951411ee34d271d99dddcc2035a16ab25310ea2c8cfd4369652" "checksum backtrace 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "89a47830402e9981c5c41223151efcced65a0510c13097c769cede7efb34782a" "checksum backtrace-sys 0.1.24 (registry+https://github.com/rust-lang/crates.io-index)" = "c66d56ac8dabd07f6aacdaf633f4b8262f5b3601a810a0dcddffd5c22c69daa0" +"checksum base-x 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "5cda5d0f5584d129112ad8bf4775b9fd2b9f1e30738c7b1a25314ba2244d6a51" "checksum base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" -"checksum base64 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "30e93c03064e7590d0466209155251b90c22e37fab1daf2771582598b5827557" -"checksum base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "96434f987501f0ed4eb336a411e0631ecd1afa11574fe148587adc4ff96143c9" "checksum base64 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5032d51da2741729bfdaeb2664d9b8c6d9fd1e2b90715c660b6def36628499c2" -"checksum base64 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "85415d2594767338a74a30c1d370b2f3262ec1b4ed2d7bba5b3faf4de40467d9" -"checksum bigint 4.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "da1dde4308822ffaa13665757273a1b787481212f3f9b1c470a864b179a01f1b" +"checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" +"checksum bigint 4.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ebecac13b3c745150d7b6c3ea7572d372f09d627c2077e893bf26c5c7f70d282" "checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d" "checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5" -"checksum bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d0c54bb8f454c567f21197eefcdbf5679d0bd99f2ddbe52e84c77061952e6789" +"checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" +"checksum blake2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73b77e29dbd0115e43938be2d5128ecf81c0353e00acaa65339a1242586951d9" "checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" "checksum block-buffer 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a076c298b9ecdb530ed9d967e74a6027d6a7478924520acddcddc24c1c8ab3ab" -"checksum bs58 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ddb9ab176abd79659b93be4396f59156c3ee80f8cc83d1cb588335052c428047" +"checksum block-cipher-trait 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "370424437b9459f3dfd68428ed9376ddfe03d8b70ede29cc533b3557df186ab4" +"checksum bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0de79cfb98e7aa9988188784d8664b4b5dad6eaaa0863b91d9a4ed871d4f7a42" "checksum byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40" "checksum byteorder 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "96c8b41881888cc08af32d47ac4edd52bc7fa27fef774be47a92443756451304" -"checksum byteorder 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8389c509ec62b9fe8eca58c502a0acaf017737355615243496cde4994f8fa4f9" -"checksum bytes 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e178b8e0e239e844b083d5a0d4a156b2654e67f9f80144d48398fcd736a24fb8" -"checksum cc 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)" = "2119ea4867bd2b8ed3aecab467709720b2d55b1bcfe09f772fd68066eaf15275" -"checksum cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0c4e7bb64a8ebb0d856483e1e682ea3422f883c5f5615a90d51a2c82fe87fdd3" -"checksum chashmap 2.2.1 (git+https://github.com/redox-os/tfs)" = "" -"checksum chrono 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e48d85528df61dc964aa43c5f6ca681a19cfa74939b2348d204bd08a981f2fb0" +"checksum byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "94f88df23a25417badc922ab0f5716cc1330e87f71ddd9203b3a3ccd9cedf75d" +"checksum bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "40ade3d27603c2cb345eb0912aec461a6dec7e06a4ae48589904e808335c7afa" +"checksum cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "f159dfd43363c4d08055a07703eb7a3406b0dac4d0584d96965a3262db3c9d16" +"checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4" +"checksum chashmap 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "47e651a8c1eb0cbbaa730f705e2531e75276c6f2bbe2eb12662cfd305213dff8" +"checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878" "checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e" +"checksum clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "97276801e127ffb46b66ce23f35cc96bd454fa311294bced4bbace7baa8b1d17" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -"checksum cmake 0.1.33 (registry+https://github.com/rust-lang/crates.io-index)" = "704fbf3bb5149daab0afb255dbea24a1f08d2f4099cedb9baab6d470d4c5eefb" +"checksum cmake 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)" = "6ec65ee4f9c9d16f335091d23693457ed4928657ba4982289d7fafee03bc614a" "checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e" -"checksum core-foundation 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "25bfd746d203017f7d5cbd31ee5d8e17f94b6521c7af77ece6c9e4b2d4b16c67" -"checksum core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "065a5d7ffdcbc8fa145d6f0746f3555025b9097a9e9cda59f7467abae670c78d" +"checksum core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "286e0b41c3a20da26536c6000a280585d519fd07b3956b43aed8a79e9edce980" +"checksum core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "716c271e8613ace48344f723b60b900a93150271e5be206212d052bbc0883efa" "checksum crossbeam 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)" = "bd66663db5a988098a89599d4857919b3acf7f61402e61365acfd3919857b9be" -"checksum crossbeam 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "24ce9782d4d5c53674646a6a4c1863a21a8fc0cb649b3c94dfc16e45071dea19" "checksum crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f739f8c5363aca78cfb059edf753d8f0d36908c348f3d8d1503f03d8b75d9cf3" -"checksum crossbeam-deque 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fe8153ef04a7594ded05b427ffad46ddeaf22e63fd48d42b3e1e3bb4db07cae7" +"checksum crossbeam-deque 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4fe1b6f945f824c7a25afe44f62e25d714c0cc523f8e99d8db5cd1026e1269d3" "checksum crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "927121f5407de9956180ff5e936fe3cf4324279280001cd56b669d28ee7e9150" -"checksum crossbeam-epoch 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2af0e75710d6181e234c8ecc79f14a97907850a541b13b0be1dd10992f2e4620" +"checksum crossbeam-epoch 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2449aaa4ec7ef96e5fb24db16024b935df718e9ae1cec0a1e68feeca2efca7b8" "checksum crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2760899e32a1d58d5abb31129f8fae5de75220bc2176e77ff7c627ae45c918d9" -"checksum crossbeam-utils 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d636a8b3bcc1b409d7ffd3facef8f21dcb4009626adbd0c5e6c4305c07253c7b" "checksum crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "677d453a17e8bd2b913fa38e8b9cf04bcdbb5be790aa294f2389661d72036015" +"checksum crossbeam-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c55913cc2799171a550e307918c0a360e8c16004820291bf3b638969b4a01816" "checksum crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a2f4a431c5c9f662e1200b7c7f02c34e91361150e382089a8f2dec3ba680cbda" +"checksum crunchy 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c240f247c278fa08a6d4820a6a222bfc6e0d999e51ba67be94f44c905b2161f2" +"checksum crypto-mac 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0999b4ff4d3446d4ddb19a63e9e00c1876e75cd7000d20e57a693b4b3f08d958" +"checksum crypto-mac 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7afa06d05a046c7a47c3a849907ec303504608c927f4e85f7bfff22b7180d971" +"checksum ctr 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4b669fcb8e20124db86dbd9b01e74ec0e9e420e65381311ce5249864fc7ff0c0" "checksum ctrlc 1.1.1 (git+https://github.com/paritytech/rust-ctrlc.git)" = "" -"checksum datastore 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)" = "" +"checksum curve25519-dalek 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3eacf6ff1b911e3170a8c400b402e10c86dc3cb166bd69034ebbc2b785fea4c2" +"checksum data-encoding 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "67df0571a74bf0d97fb8b2ed22abdd9a48475c96bd327db968b7d9cace99655e" +"checksum datastore 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" "checksum difference 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b3304d19798a8e067e48d8e69b2c37f0b5e9b4e462504ad9e27e9f3fce02bba8" -"checksum digest 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)" = "5b29c278aa8fd30796bd977169e8004b4aa88cdcd2f32a6eb22bc2d5d38df94a" -"checksum edit-distance 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3bd26878c3d921f89797a4e1a1711919f999a9f6946bb6f5a4ffda126d297b7e" +"checksum digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "03b072242a8cbaf9c145665af9d250c59af3b958f83ed6824e13533cf76d5b90" +"checksum discard 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" +"checksum ed25519-dalek 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cd66d8a16ef71c23cf5eeb2140d8d3cd293457c6c7fd6804b593397a933fcf1e" "checksum either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3be565ca5c557d7f59e7cfcf1844f9e3033650c929c6566f511e8005f205c1d0" "checksum elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "88d4851b005ef16de812ea9acdb7bece2f0a40dd86c07b85631d7dafa54537bb" "checksum env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3ddf21e73e016298f5cb37d6ef8e8da8e39f91f9ec8b0df44b7deb16a9f8cd5b" -"checksum environmental 0.1.0 (git+https://github.com/paritytech/substrate)" = "" +"checksum env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)" = "15b0a4d2e39f8420210be8b27eeda28029729e2fd4291019455016c348240c38" +"checksum environmental 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "db746025e3ea695bfa0ae744dbacd5fcfc8db51b9760cf8bd0ab69708bb93c49" "checksum error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "07e791d3be96241c77c43846b665ef1384606da2cd2a48730abe606a12906e02" "checksum eth-secp256k1 0.5.7 (git+https://github.com/paritytech/rust-secp256k1)" = "" -"checksum ethbloom 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a93a43ce2e9f09071449da36bfa7a1b20b950ee344b6904ff23de493b03b386" -"checksum ethcore-io 1.12.0 (git+https://github.com/paritytech/parity.git)" = "" -"checksum ethereum-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c48729b8aea8aedb12cf4cb2e5cef439fdfe2dda4a89e47eeebd15778ef53b6" -"checksum ethereum-types 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "35b3c5a18bc5e73a32a110ac743ec04b02bbbcd3b71d3118d40a6113d509378a" -"checksum ethereum-types-serialize 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ac59a21a9ce98e188f3dace9eb67a6c4a3c67ec7fbc7218cb827852679dc002" -"checksum ethkey 0.3.0 (git+https://github.com/paritytech/parity.git)" = "" -"checksum etrace 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0fc6c1d54ed28f0c9c88866f73e7e3a0cc68d74bc438efaa97957ff4f972ea2b" +"checksum etrace 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f17311e68ea07046ee809b8513f6c259518bc10173681d98c21f8c3926f56f40" "checksum exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9aa7b56cef68c4182db7212dece19cc9f6e2916cf9412e57e6cea53ec02f316d" +"checksum failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6dd377bcc1b1b7ce911967e3ec24fa19c3224394ec05b54aa7b083d498341ac7" "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 fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0d5ec8112f00ea8a483e04748a85522184418fd1cf02890b626d8fc28683f7de" +"checksum finality-grandpa 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "be6d2735e8f570474c7925a60ebe04ec0bdd9eea7cc4fddab78a0ecfdefec20e" +"checksum fixed-hash 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a557e80084b05c32b455963ff565a9de6f2866da023d6671705c6aff6f65e01c" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" "checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" "checksum fs-swap 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "921d332c89b3b61a826de38c61ee5b6e02c56806cade1b0e5d81bd71f57a71bb" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" -"checksum futures 0.1.23 (registry+https://github.com/rust-lang/crates.io-index)" = "884dbe32a6ae4cd7da5c6db9b78114449df9953b8d490c9d7e1b51720b922c62" +"checksum futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)" = "49e7653e374fe0d0c12de4250f0bdb60680b8c80eed558c5c7538eec9c89e21b" "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" -"checksum gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)" = "5e33ec290da0d127825013597dbdfc28bee4964690c7ce1166cbc2a7bd08b1bb" +"checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" "checksum generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef25c5683767570c2bbd7deba372926a55eaae9982d7726ee2a1050239d45b9d" "checksum getopts 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "0a7292d30132fb5424b354f5dc02512a86e4c516fe544bb7a25e7f266951b797" -"checksum globset 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8e49edbcc9c7fc5beb8c0a54e7319ff8bed353a2b55e85811c6281188c2a6c84" -"checksum hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f1c71fc577cde89b3345d5f2880fecaf462a32e96c619f431279bdaf1ba5ddb1" +"checksum globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4743617a7464bbda3c8aec8558ff2f9429047e025771037df561d383337ff865" +"checksum h2 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "7dd33bafe2e6370e6c8eb0cf1b8c5f93390b90acde7e9b03723f166b28b648ed" +"checksum hash-db 0.9.0 (git+https://github.com/paritytech/trie)" = "" +"checksum hash256-std-hasher 0.9.0 (git+https://github.com/paritytech/trie)" = "" "checksum heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1679e6ea370dee694f91f1dc469bf94cf8f52051d147aec3e1f9497c6fc22461" +"checksum heck 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ea04fa3ead4e05e51a7c806fc07271fdbde4e246a6c6d1efd52e72230b771b82" "checksum hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" "checksum hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4da5f0e01bd8a71a224a4eedecaacfcabda388dbb7a80faf04d3514287572d95" "checksum hex-literal-impl 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1d340b6514f232f6db1bd16db65302a5278a04fef9ce867cb932e7e5fa21130a" -"checksum httparse 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7b6288d7db100340ca12873fd4d08ad1b8f206a9457798dfb17c018a33fee540" -"checksum hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)" = "368cb56b2740ebf4230520e2b90ebb0461e69034d85d1945febd9b3971426db2" -"checksum hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)" = "34a590ca09d341e94cddf8e5af0bbccde205d5fbc2fa3c09dd67c7f85cea59d7" +"checksum hmac 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "733e1b3ac906631ca01ebb577e9bb0f5e37a454032b9036b5eaea4013ed6f99a" +"checksum http 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "24f58e8c2d8e886055c3ead7b28793e1455270b5fb39650984c224bc538ba581" +"checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" +"checksum humantime 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0484fda3e7007f2a4a0d9c3a703ca38c71c54c55602ce4660c419fd32e188c9e" +"checksum hyper 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)" = "df0caae6b71d266b91b4a83111a61d2b94ed2e2bea024c532b933dcff867e58c" +"checksum hyper 0.12.14 (registry+https://github.com/rust-lang/crates.io-index)" = "2f60ae467ef4fc5eba9a34d31648c9c8ed902faf45a217f6734ce9ea64779ac7" "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" -"checksum integer-encoding 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "26746cbc2e680af687e88d717f20ff90079bd10fc984ad57d277cd0e37309fa5" -"checksum integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)" = "" +"checksum indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7e81a7c05f79578dbc15793d8b619db9ba32b4577003ef3af1a91c416798c58d" +"checksum integer-sqrt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ea155abb3ba6f382a75f1418988c05fe82959ed9ce727de427f9cfd425b0c903" "checksum interleaved-ordered 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "141340095b15ed7491bd3d4ced9d20cebfb826174b6bb03386381f62b01e3d77" "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" -"checksum itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4833d6978da405305126af4ac88569b5d71ff758581ce5a987dbfa3755f694fc" -"checksum itoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5adb58558dcd1d786b5f0bd15f3226ee23486e24b7b58304b60f64dc68e62606" -"checksum jsonrpc-core 8.0.2 (git+https://github.com/paritytech/jsonrpc.git)" = "" -"checksum jsonrpc-http-server 8.0.1 (git+https://github.com/paritytech/jsonrpc.git)" = "" -"checksum jsonrpc-macros 8.0.1 (git+https://github.com/paritytech/jsonrpc.git)" = "" -"checksum jsonrpc-pubsub 8.0.1 (git+https://github.com/paritytech/jsonrpc.git)" = "" -"checksum jsonrpc-server-utils 8.0.1 (git+https://github.com/paritytech/jsonrpc.git)" = "" -"checksum jsonrpc-ws-server 8.0.0 (git+https://github.com/paritytech/jsonrpc.git)" = "" +"checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b" +"checksum jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)" = "" +"checksum jsonrpc-http-server 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)" = "" +"checksum jsonrpc-macros 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)" = "" +"checksum jsonrpc-pubsub 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)" = "" +"checksum jsonrpc-server-utils 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)" = "" +"checksum jsonrpc-ws-server 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)" = "" "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.git)" = "" "checksum kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "72ae89206cea31c32014b39d5a454b96135894221610dbfd19cf4d2d044fa546" "checksum kvdb-memorydb 0.1.0 (git+https://github.com/paritytech/parity-common.git)" = "" -"checksum kvdb-rocksdb 0.1.3 (git+https://github.com/paritytech/parity-common.git)" = "" -"checksum kvdb-rocksdb 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e731661c9e7409857d73ac574da418cef6f9605e967bed0aeb93182ef8d4b1c7" +"checksum kvdb-rocksdb 0.1.4 (git+https://github.com/paritytech/parity-common.git)" = "" +"checksum kvdb-rocksdb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "06cf755dc587839ba34d3cbe3f12b6ad55850fbcdfe67336157a021a1a5c43ae" "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" "checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" -"checksum lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca488b89a5657b0a2ecd45b95609b3e848cf1755da332a0da46e2b2b1cb371a7" -"checksum lazycell 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a6f08839bc70ef4a3fe1d566d5350f519c5912ea86be0df1740a7d247c7fc0ef" +"checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1" +"checksum lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddba4c30a78328befecec92fc94970e53b3ae385827d28620f0f5bb2493081e0" "checksum libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)" = "76e3a3ef172f1a0b9a9ff0dd1491ae5e6c948b94479a3021819ba7d860c8645d" "checksum libloading 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3ad660d7cb8c5822cd83d10897b0f1f1526792737a179e73896152f85b88c2" -"checksum libp2p 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)" = "" -"checksum libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)" = "" -"checksum libp2p-dns 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)" = "" -"checksum libp2p-floodsub 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)" = "" -"checksum libp2p-identify 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)" = "" -"checksum libp2p-kad 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)" = "" -"checksum libp2p-mplex 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)" = "" -"checksum libp2p-peerstore 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)" = "" -"checksum libp2p-ping 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)" = "" -"checksum libp2p-ratelimit 0.1.1 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)" = "" -"checksum libp2p-relay 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)" = "" -"checksum libp2p-secio 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)" = "" -"checksum libp2p-tcp-transport 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)" = "" -"checksum libp2p-transport-timeout 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)" = "" -"checksum libp2p-uds 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)" = "" -"checksum libp2p-websocket 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)" = "" -"checksum libp2p-yamux 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)" = "" +"checksum libp2p 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" +"checksum libp2p-core 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" +"checksum libp2p-dns 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" +"checksum libp2p-floodsub 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" +"checksum libp2p-identify 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" +"checksum libp2p-kad 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" +"checksum libp2p-mplex 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" +"checksum libp2p-peerstore 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" +"checksum libp2p-ping 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" +"checksum libp2p-ratelimit 0.1.1 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" +"checksum libp2p-relay 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" +"checksum libp2p-secio 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" +"checksum libp2p-tcp-transport 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" +"checksum libp2p-transport-timeout 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" +"checksum libp2p-uds 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" +"checksum libp2p-websocket 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" +"checksum libp2p-yamux 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" "checksum linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "70fb39025bc7cdd76305867c4eccf2f2dcf6e9a57f5b21a93e1c2d86cd03ec9e" "checksum local-encoding 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e1ceb20f39ff7ae42f3ff9795f3986b1daad821caaa1e1732a0944103a5a1a66" -"checksum lock_api 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "949826a5ccf18c1b3a7c3d57692778d21768b79e46eb9dd07bfc4c2160036c54" +"checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" "checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" -"checksum log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "61bd98ae7f7b754bc53dca7d44b604f733c6bba044ea6f41bc8d89272d8161d2" -"checksum matches 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "835511bab37c34c47da5cb44844bea2cfde0236db0b506f90ea4224482c9774a" -"checksum mem 0.1.0 (git+https://github.com/paritytech/parity.git)" = "" -"checksum memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "796fba70e76612589ed2ce7f45282f5af869e0fdd7cc6199fa1aa1f1d591ba9d" +"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" +"checksum mashup 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f2d82b34c7fb11bb41719465c060589e291d505ca4735ea30016a91f6fc79c3b" +"checksum mashup-impl 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "aa607bfb674b4efb310512527d64266b065de3f894fc52f84efcbf7eaa5965fb" +"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" +"checksum memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0a3eb002f0535929f1199681417029ebea04aadc0c7a4224b46be99c7f5d6a16" "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" +"checksum memory-db 0.9.0 (git+https://github.com/paritytech/trie)" = "" "checksum memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" -"checksum memorydb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f72c93304ad51e21230ecbd0d2b58a3f94703bf9339d14aed88c3aaf5e8b7a56" "checksum mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" -"checksum mime 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "4b082692d3f6cf41b453af73839ce3dfc212c4411cbb2441dff80a716e38bd79" -"checksum mio 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)" = "4fcfcb32d63961fb6f367bfd5d21e4600b92cd310f71f9dca25acae196eb1560" +"checksum mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)" = "71646331f2619b1026cc302f87a2b8b648d5c6dd6937846a16cc8ce0f347f432" +"checksum mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "46e73a04c2fa6250b8d802134d56d554a9ec2922bf977777c805ea5def61ce40" "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" -"checksum multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)" = "" -"checksum multihash 0.8.1-pre (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)" = "" -"checksum multistream-select 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)" = "" +"checksum multiaddr 0.3.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" +"checksum multihash 0.8.1-pre (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" +"checksum multistream-select 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" "checksum names 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef320dab323286b50fb5cdda23f61c796a72a89998ab565ca32525c5c556f2da" -"checksum nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34d4f00fcc2f4c9efa8cc971db0da9e28290e28e97af47585e48691ef10ff31f" -"checksum native-tls 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f74dbadc8b43df7864539cedb7bc91345e532fdd913cfdc23ad94f4d2d40fbc0" +"checksum native-tls 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ff8e08de0070bbf4c31f452ea2a70db092f36f6f2e4d897adf5674477d488fb2" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" -"checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" +"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 num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" -"checksum num-traits 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "630de1ef5cc79d0cdd78b7e33b81f083cbfe90de0f4b2b2f07f905867c70e9fe" +"checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" "checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" "checksum ole32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2c49021782e5233cd243168edfa8037574afed4eba4bbaf538b3d8d1789d8c" -"checksum openssl 0.9.24 (registry+https://github.com/rust-lang/crates.io-index)" = "a3605c298474a3aa69de92d21139fb5e2a81688d308262359d85cdd0d12a7985" -"checksum openssl-sys 0.9.35 (registry+https://github.com/rust-lang/crates.io-index)" = "912f301a749394e1025d9dcddef6106ddee9252620e6d0a0e5f8d0681de9b129" +"checksum opaque-debug 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d620c9c26834b34f039489ac0dfdb12c7ac15ccaf818350a64c9b5334a452ad7" +"checksum openssl 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)" = "5e1309181cdcbdb51bc3b6bedb33dfac2a83b3d585033d3f6d9e22e8c1928613" +"checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" +"checksum openssl-sys 0.9.39 (registry+https://github.com/rust-lang/crates.io-index)" = "278c1ad40a89aa1e741a1eed089a2f60b18fab8089c3139b542140fc7d674106" +"checksum owning_ref 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "9d52571ddcb42e9c900c901a18d8d67e393df723fcd51dd59c5b1a85d0acb6cc" "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.git)" = "" "checksum parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa5168b4cf41f3835e4bc6ffb32f51bc9365dc50cb351904595b3931d917fd0c" -"checksum parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)" = "" -"checksum parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)" = "" +"checksum parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "dca389ea5e1632c89b2ce54f7e2b4a8a8c9d278042222a91e0bf95451218cb4c" +"checksum parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ffa42c2cb493b60b12c75b26e8c94cb734af4df4d7f2cc229dc04c1953dac189" "checksum parity-crypto 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c1117f6574377d21309bfa1f7d69ff734120685d92b02c3f362b122585758840" "checksum parity-rocksdb 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cd55d2d6d6000ec99f021cf52c9acc7d2a402e14f95ced4c5de230696fabe00b" -"checksum parity-rocksdb-sys 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9ae07d4bfb2759541957c19f471996b807fc09ef3a5bdce14409b57f038de49f" +"checksum parity-rocksdb-sys 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0e59eda423021494a6cf1be74f6989add403f53157409993f794e17b123cab51" "checksum parity-snappy-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c2086caac40c79289cb70d7e1c64f5888e1c53f5d38399d3e95101493739f423" "checksum parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)" = "511379a8194230c2395d2f5fa627a5a7e108a9f976656ce723ae68fca4097bfc" -"checksum parity-wordlist 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d0dec124478845b142f68b446cbee953d14d4b41f1bc0425024417720dce693" +"checksum parking_lot 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "fa12d706797d42551663426a45e2db2e0364bd1dbf6aeada87e89c5f981f43e9" "checksum parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "149d8f5b97f3c1133e3cfcd8886449959e856b557ff281e292b733d7c69e005e" "checksum parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d4d05f1349491390b1730afba60bb20d55761bef489a954546b58b4b34e1e2ac" -"checksum parking_lot 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "69376b761943787ebd5cc85a5bc95958651a22609c5c1c2b65de21786baec72b" +"checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5" "checksum parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "4db1a8ccf734a7bce794cc19b3df06ed87ab2f3907036b693c68f56b4d4537fa" -"checksum patricia-trie 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "46be3bf26e050bcaac60d0a8373f912a4734bb8bd4bf5ecda66ee997b86bddfc" +"checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c" "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" -"checksum pkg-config 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "104630aa1c83213cbc76db0703630fcb0421dac3585063be4ce9a8a2feeaa745" -"checksum plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "95fa6386b1d34aaf0adb9b7dd2885dbe7c34190e6263785e5a7ec2b19044a90f" +"checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" "checksum pretty_assertions 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "28ea5118e2f41bfbc974b28d88c07621befd1fa5d6ec23549be96302a1a59dd2" -"checksum proc-macro-hack 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ba8d4f9257b85eb6cdf13f055cea3190520aab1409ca2ab43493ea4820c25f0" -"checksum proc-macro-hack-impl 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d5cb6f960ad471404618e9817c0e5d10b1ae74cfdf01fab89ea0641fe7fb2892" -"checksum proc-macro2 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "7a17a4d77bc20d344179de803a34694c0ac7a0b3fb4384bee99783215a8e0410" -"checksum protobuf 2.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "128a4f37a2df739a567a8685b17f54aa19b9c3c4a6a5b8731e97a419b3db451c" +"checksum proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2c725b36c99df7af7bf9324e9c999b9e37d92c8f8caf106d82e1d7953218d2d8" +"checksum proc-macro-hack-impl 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2b753ad9ed99dd8efeaa7d2fb8453c8f6bc3e54b97966d35f1bc77ca6865254a" +"checksum proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)" = "77619697826f31a02ae974457af0b29b723e5619e113e9397b8b82c6bd253f09" +"checksum protobuf 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cbd08d128db199b1c6bb662e343d7d1a8f6d0060b411675766d88e5146a4bb38" "checksum pulldown-cmark 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8361e81576d2e02643b04950e487ec172b687180da65c731c03cf336784e6c07" -"checksum pwasm-alloc 0.1.0 (git+https://github.com/paritytech/substrate)" = "" -"checksum pwasm-libc 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum quick-error 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5fb6ccf8db7bbcb9c2eae558db5ab4f3da1c2a87e4e597ed394726bc8ea6ca1d" "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" -"checksum quote 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ed7d650913520df631972f21e104a4fa2f9c82a14afc65d17b388a2e29731e7c" +"checksum quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "53fa22a1994bd0f9372d7a816207d8a2677ad0325b073f5c5332760f0fb62b5c" "checksum rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "15a732abf9d20f0ad8eeb6f909bf6868722d9a06e1e50802b6a70351f40b4eb1" -"checksum rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5" +"checksum rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8356f47b32624fef5b3301c1be97e5944ecdd595409cc5da11d05f211db6cfbd" "checksum rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e464cd887e869cddcae8792a4ee31d23c7edd516700695608f5b98c67ee0131c" -"checksum rand_core 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "edecf0f94da5551fc9b492093e30b041a891657db7940ee221f9d2f66e82eef2" +"checksum rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1961a422c4d189dfb50ffa9320bf1f2a9bd54ecb92792fb9477f99a1045f3372" +"checksum rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0905b6b7079ec73b314d4c748701f6931eb79fd97c668caa3f1899b22b32c6db" "checksum rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b614fe08b6665cb9a231d07ac1364b0ef3cb3698f1239ee0c4c3a88a524f54c8" -"checksum rayon 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "df7a791f788cb4c516f0e091301a29c2b71ef680db5e644a7d68835c8ae6dbfa" +"checksum rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "373814f27745b2686b350dd261bfd24576a6fb0e2c5919b3a2b6005f820b0473" "checksum rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b055d1e92aba6877574d8fe604a63c8b5df60f60e5982bf7ccbb1338ea527356" -"checksum redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "c214e91d3ecf43e9a4e41e578973adeb14b474f2bee858742d127af75a0112b1" +"checksum redox_syscall 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "cf8fb82a4d1c9b28f1c26c574a5b541f5ffb4315f6c9a791fa47b6a04438fe93" "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" "checksum regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9329abc99e39129fcceabd24cf5d85b4671ef7c29c50e972bc5afe32438ec384" -"checksum regex 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5bbbea44c5490a1e84357ff28b7d518b4619a159fed5d25f6c1de2d19cc42814" +"checksum regex 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ee84f70c8c08744ea9641a731c7fadb475bf2ecc52d7f627feb833e0b3990467" "checksum regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7d707a4fa2637f2dca2ef9fd02225ec7661fe01a53623c1e6515b6916511f7a7" -"checksum regex-syntax 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "747ba3b235651f6e2f67dfa8bcdcd073ddb7c243cb21c442fc12395dfcac212d" -"checksum relay 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1576e382688d7e9deecea24417e350d3062d97e32e45d70b1cde65994ff1489a" +"checksum regex-syntax 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fbc557aac2b708fe84121caf261346cc2eed71978024337e42eb46b8a252ac6e" "checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" -"checksum rhododendron 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "289a6395497f70b8076bf5b9c223e1dc5c0a77619d0a75124f7d4c728d09d2d8" +"checksum rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e20523445e693f394c0e487113ae656071311c9ee4c1e914441bece8c929b21d" "checksum ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6f7d28b30a72c01b458428e0ae988d4149c20d902346902be881e3edc4bb325c" -"checksum rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "524c5ad554859785dfc8469df3ed5e0b5784d4d335877ed47c8d90fc0eb238fe" "checksum rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)" = "f76d05d3993fd5f4af9434e8e436db163a12a9d40e1a58a726f27a01dfd12a2a" "checksum rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "bcfe5b13211b4d78e5c2cadfebd7769197d95c639c35a50057eb4c05de811395" "checksum rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0ceb8ce7a5e520de349e1fa172baeba4a9e8d5ef06c47471863530bc4972ee1e" "checksum rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "403bb3a286107a04825a5f82e1270acc1e14028d3d554d7a1e08914549575ab8" "checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -"checksum rw-stream-sink 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=304e9c72c88bc97824f2734dc19d1b5f4556d346)" = "" -"checksum ryu 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "16aa12da69951804cddf5f74d96abcc414a31b064e610dc81e37c1536082f491" +"checksum rw-stream-sink 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" +"checksum ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "eb9e9b8cde282a9fe6a42dd4681319bfb63f121b8a8ee9439c6f4107e58a46f7" "checksum safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7f7bf422d23a88c16d5090d455f182bc99c60af4df6a345c63428acf5129e347" "checksum safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e27a8b19b835f7aea908818e871f5cc3a5a186550c30773be987e155e8163d8f" -"checksum schannel 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "dc1fabf2a7b6483a141426e1afd09ad543520a77ac49bd03c286e7696ccfd77f" +"checksum safemem 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dca453248a96cb0749e36ccdfe2b0b4e54a61bfef89fb97ec621eb8e0a93dd9" +"checksum schannel 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "0e1a231dc10abf6749cfa5d7767f25888d484201accbd919b66ab5413c502d56" "checksum scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "332ffa32bf586782a3efaeb58f127980944bbc8c4d6913a86107ac2a5ab24b28" "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" -"checksum security-framework 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "dfa44ee9c54ce5eecc9de7d5acbad112ee58755239381f687e564004ba4a2332" -"checksum security-framework-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "5421621e836278a0b139268f36eee0dc7e389b784dc3f79d8f11aabadf41bead" +"checksum security-framework 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "697d3f3c23a618272ead9e1fb259c1411102b31c6af8b93f1d64cca9c3b0e8e0" +"checksum security-framework-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab01dfbe5756785b5b4d46e0289e5a18071dfa9a7c2b24213ea00b9ef9b665bf" "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 serde 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)" = "6dfad05c8854584e5f72fb859385ecdfa03af69c3fd0572f0da2d4c95f060bdb" -"checksum serde_derive 1.0.71 (registry+https://github.com/rust-lang/crates.io-index)" = "b719c6d5e9f73fbc37892246d5852333f040caa617b8873c6aced84bcb28e7bb" -"checksum serde_json 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)" = "44dd2cfde475037451fa99b7e5df77aa3cfd1536575fa8e7a538ab36dcde49ae" +"checksum serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)" = "15c141fc7027dd265a47c090bf864cf62b42c4d228bbcf4e51a0c9e2b0d3f7ef" +"checksum serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)" = "225de307c6302bec3898c51ca302fc94a7a1697ef0845fcee6448f33c032249c" +"checksum serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)" = "c37ccd6be3ed1fdf419ee848f7c758eb31b054d7cd3ae3600e3bae0adf569811" "checksum sha1 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cc30b1e1e8c40c121ca33b86c23308a090d19974ef001b4bf6e61fd1a0fb095c" "checksum sha1 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "171698ce4ec7cbb93babeb3190021b4d72e96ccb98e33d277ae4ea959d6f2d9e" +"checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" "checksum sha2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9eb6be24e4c23a84d7184280d2722f7f2731fcdd4a9d886efbfe4413e4847ea0" "checksum shell32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9ee04b46101f57121c9da2b151988283b6beb79b34f5bb29a58ee48cb695122c" "checksum skeptic 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "24ebf8a06f5f8bae61ae5bbc7af7aac4ef6907ae975130faba1199e5fe82256a" "checksum slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "17b4fcaed89ab08ef143da37bc52adbcc04d4a69014f4c1208d6b51f0c47bc23" "checksum slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5f9776d6b986f77b35c6cf846c11ad986ff128fe0b2b63a3628e3755e8d3102d" -"checksum slog 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b3253057a9e9e291d19fa9c7645290ab61aff1d009b77b0065fff8accd833c04" +"checksum slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1e1a2eec401952cd7b12a84ea120e2d57281329940c3f93c2bf04f462539508e" "checksum slog-async 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e544d16c6b230d84c866662fe55e31aacfca6ae71e6fc49ae9a311cb379bfc2f" "checksum slog-json 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddd14b8df2df39378b3e933c79784350bf715b11444d99f903df0253bbe524e5" "checksum slog-scope 4.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "053344c94c0e2b22da6305efddb698d7c485809427cf40555dc936085f67a9df" -"checksum smallvec 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4c8cbcd6df1e117c2210e13ab5109635ad68a929fcbb8964dc965b76cb5ee013" -"checksum smallvec 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f90c5e5fe535e48807ab94fc611d323935f39d4660c52b26b96446a7b33aef10" -"checksum smallvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1347484b6f8bc4b32a9323d9800b6d934376391002ad9c528cc659fe8afc08ee" -"checksum smallvec 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "211a489e65e94b103926d2054ae515a1cdb5d515ea0ef414fee23b7e043ce748" +"checksum smallvec 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "622df2d454c29a4d89b30dc3b27b42d7d90d6b9e587dbf8f67652eb7514da484" "checksum sr-io 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)" = "" -"checksum sr-sandbox 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum sr-std 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum sr-version 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum srml-balances 0.1.0 (git+https://github.com/paritytech/substrate)" = "" @@ -4063,6 +4343,7 @@ dependencies = [ "checksum srml-council 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum srml-democracy 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum srml-executive 0.1.0 (git+https://github.com/paritytech/substrate)" = "" +"checksum srml-metadata 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum srml-session 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum srml-staking 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum srml-support 0.1.0 (git+https://github.com/paritytech/substrate)" = "" @@ -4070,17 +4351,27 @@ dependencies = [ "checksum srml-timestamp 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum srml-treasury 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" +"checksum static_assertions 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c19be23126415861cb3a23e501d34a708f7f9b2183c5252d690941c2e69199d5" "checksum stdweb 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ef5430c8e36b713e13b48a9f709cc21e046723fe44ce34587b73a830203b533e" +"checksum stdweb 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "22203527a18dc1c5c83bbd247fb005f5877d040783b6626571d6b7ed7a6f5e75" +"checksum stdweb-derive 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0e21ebd9179de08f2300a65454268a17ea3de204627458588c84319c4def3930" +"checksum stdweb-internal-macros 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bcbc9155af9606d44c740197d7d6672b49c4ee93a176c7cecde8b49322677604" +"checksum stdweb-internal-runtime 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b74fe9de4c0d07e91987f4d798b95f27f3cb7769fbc222fa951fa386908297b5" +"checksum stream-cipher 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "30dc6118470d69ce0fdcf7e6f95e95853f7f4f72f80d835d4519577c323814ab" +"checksum string 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00caf261d6f90f588f8450b8e1230fa0d5be49ee6140fdfbcb55335aff350970" "checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" -"checksum substrate-bft 0.1.0 (git+https://github.com/paritytech/substrate)" = "" +"checksum structopt 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "41c4a2479a078509940d82773d90ff824a8c89533ab3b59cd3ce8b0c0e369c02" +"checksum structopt-derive 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "5352090cfae7a2c85e1a31146268b53396106c88ca5d6ccee2e3fae83b6e35c2" "checksum substrate-cli 0.3.0 (git+https://github.com/paritytech/substrate)" = "" "checksum substrate-client 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum substrate-client-db 0.1.0 (git+https://github.com/paritytech/substrate)" = "" +"checksum substrate-consensus-aura 0.1.0 (git+https://github.com/paritytech/substrate)" = "" +"checksum substrate-consensus-common 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum substrate-executor 0.1.0 (git+https://github.com/paritytech/substrate)" = "" -"checksum substrate-extrinsic-pool 0.1.0 (git+https://github.com/paritytech/substrate)" = "" +"checksum substrate-finality-grandpa 0.1.0 (git+https://github.com/paritytech/substrate)" = "" +"checksum substrate-finality-grandpa-primitives 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum substrate-keyring 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum substrate-keystore 0.1.0 (git+https://github.com/paritytech/substrate)" = "" -"checksum substrate-metadata 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum substrate-network 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum substrate-network-libp2p 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)" = "" @@ -4091,76 +4382,83 @@ dependencies = [ "checksum substrate-state-db 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum substrate-state-machine 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum substrate-telemetry 0.3.0 (git+https://github.com/paritytech/substrate)" = "" +"checksum substrate-test-client 0.1.0 (git+https://github.com/paritytech/substrate)" = "" +"checksum substrate-test-runtime 0.1.0 (git+https://github.com/paritytech/substrate)" = "" +"checksum substrate-transaction-graph 0.1.0 (git+https://github.com/paritytech/substrate)" = "" +"checksum substrate-transaction-pool 0.1.0 (git+https://github.com/paritytech/substrate)" = "" +"checksum substrate-trie 0.4.0 (git+https://github.com/paritytech/substrate)" = "" "checksum subtle 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc7f6353c2ee5407358d063a14cccc1630804527090a6fb5a9489ce4924280fb" -"checksum syn 0.14.8 (registry+https://github.com/rust-lang/crates.io-index)" = "b7bfcbb0c068d0f642a0ffbd5c604965a360a61f99e8add013cef23a838614f3" -"checksum sysinfo 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)" = "394abcf30852ac00878ab01642b13668db48d166d945f250c7bdbb9e12d75ad0" -"checksum take 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b157868d8ac1f56b64604539990685fa7611d8fa9e5476cf0c02cf34d32917c5" +"checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" +"checksum syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)" = "261ae9ecaa397c42b960649561949d69311f08eeaea86a65696e6e46517cf741" +"checksum syn 0.15.21 (registry+https://github.com/rust-lang/crates.io-index)" = "816b7af21405b011a23554ea2dc3f6576dc86ca557047c34098c1d741f10f823" +"checksum sysinfo 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "11c5f6e8a7a7146f26ffed9a5ff8bab2706f1ac8a413a415e1d211b819d5c24d" "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 tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" -"checksum tempfile 3.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c4b103c6d08d323b92ff42c8ce62abcd83ca8efa7fd5bf7927efefec75f58c76" +"checksum tempfile 3.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "55c1195ef8513f3273d55ff59fe5da6940287a0d7a98331254397f464833675b" +"checksum termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4096add70612622289f2fdcdbd5086dc81c1e2675e6ae58d6c4f62a16c6d7f2f" "checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" "checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6" -"checksum thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "279ef31c19ededf577bfd12dfae728040a21f635b06a24cd670ff510edd38963" +"checksum thread-id 3.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c7fbf4c9d56b320106cd64fd024dadfa0be7cb4706725fc44a7d7ce952d820c1" +"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "checksum time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "d825be0eb33fda1a7e68012d51e9c7f451dc1a69391e7fdc197060bb8c56667b" -"checksum timer 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "31d42176308937165701f50638db1c31586f183f1aab416268216577aec7306b" "checksum tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e9175261fbdb60781fcd388a4d6cc7e14764a2b629a7ad94abb439aed223a44f" "checksum tk-listen 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dec7ba6a80b7695fc2abb21af18bed445a362ffd80b64704771ce142d6d2151d" -"checksum tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8ee337e5f4e501fc32966fec6fe0ca0cc1c237b0b1b14a335f8bfe3c5f06e286" -"checksum tokio-codec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "881e9645b81c2ce95fcb799ded2c29ffb9f25ef5bef909089a420e5961dd8ccb" +"checksum tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "6e93c78d23cc61aa245a8acd2c4a79c4d7fa7fb5c3ca90d5737029f043a84895" +"checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" "checksum tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "aeeffbbb94209023feaef3c196a41cbcdafa06b4a6f893f68779bb5e53796f71" -"checksum tokio-current-thread 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fdfb899688ac16f618076bd09215edbfda0fd5dfecb375b6942636cb31fa8a7" +"checksum tokio-current-thread 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f90fcd90952f0a496d438a976afba8e5c205fb12123f813d8ab3aa1c8436638c" "checksum tokio-dns-unofficial 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bb9bf62ca2c53bf2f2faec3e48a98b6d8c9577c27011cb0203a4beacdc8ab328" -"checksum tokio-executor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "424f0c87ecd66b863045d84e384cb7ce0ae384d8b065b9f0363d29c0d1b30b2f" -"checksum tokio-fs 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b5cbe4ca6e71cb0b62a66e4e6f53a8c06a6eefe46cc5f665ad6f274c9906f135" -"checksum tokio-io 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a5c9635ee806f26d302b8baa1e145689a280d8f5aa8d0552e7344808da54cc21" -"checksum tokio-proto 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fbb47ae81353c63c487030659494b295f6cb6576242f907f203473b191b0389" -"checksum tokio-reactor 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8703a5762ff6913510dc64272c714c4389ffd8c4b3cf602879b8bd14ff06b604" -"checksum tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "24da22d077e0f15f55162bdbdc661228c1581892f52074fb242678d015b45162" -"checksum tokio-tcp 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5b4c329b47f071eb8a746040465fa751bd95e4716e98daef6a9b4e434c17d565" -"checksum tokio-threadpool 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "24ab84f574027b0e875378f31575cf175360891919e93a3490f07e76e00e4efb" -"checksum tokio-timer 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d03fa701f9578a01b7014f106b47f0a363b4727a7f3f75d666e312ab7acbbf1c" -"checksum tokio-tls 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "772f4b04e560117fe3b0a53e490c16ddc8ba6ec437015d91fa385564996ed913" -"checksum tokio-udp 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "43eb534af6e8f37d43ab1b612660df14755c42bd003c5f8d2475ee78cc4600c0" -"checksum tokio-uds 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "424c1ed15a0132251813ccea50640b224c809d6ceafb88154c1a8775873a0e89" -"checksum trace-time 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5aea07da6582e957c6e737eeb63a5af79e648eeeaaaba8fd9a417f1124bafa41" +"checksum tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c117b6cf86bb730aab4834f10df96e4dd586eff2c3c27d3781348da49e255bde" +"checksum tokio-fs 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "60ae25f6b17d25116d2cba342083abe5255d3c2c79cb21ea11aa049c53bf7c75" +"checksum tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "7392fe0a70d5ce0c882c4778116c519bd5dbaa8a7c3ae3d04578b3afafdcda21" +"checksum tokio-reactor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4b26fd37f1125738b2170c80b551f69ff6fecb277e6e5ca885e53eec2b005018" +"checksum tokio-tcp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7ad235e9dadd126b2d47f6736f65aa1fdcd6420e66ca63f44177bc78df89f912" +"checksum tokio-threadpool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3929aee321c9220ed838ed6c3928be7f9b69986b0e3c22c972a66dbf8a298c68" +"checksum tokio-timer 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3a52f00c97fedb6d535d27f65cccb7181c8dd4c6edc3eda9ea93f6d45d05168e" +"checksum tokio-tls 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e53fdbf3156f588be1676022fe794232b24922d426e8c14f4e46891c1e31c440" +"checksum tokio-udp 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "da941144b816d0dcda4db3a1ba87596e4df5e860a72b70783fe435891f80601c" +"checksum tokio-uds 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "df195376b43508f01570bacc73e13a1de0854dc59e79d1ec09913e8db6dd2a70" "checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" -"checksum transaction-pool 1.13.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fdb8870eea404a57e2f62056ac45067a53a6207fd31866122356481d3c2e1a30" -"checksum triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3da77dc2c88bac48769c53f2c7675d99d522a7fc8130da3fadf29d7c6f94c9ac" -"checksum try-lock 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee2aa4715743892880f70885373966c83d73ef1b0838a664ef0c76fffd35e7c2" +"checksum trie-db 0.9.0 (git+https://github.com/paritytech/trie)" = "" +"checksum trie-root 0.9.0 (git+https://github.com/paritytech/trie)" = "" +"checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" +"checksum twofish 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1eef327f05b0d0ec1b9d7d119d8f4d9f602ceee37e0540aff8071e8e66c2e22e" "checksum twox-hash 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4f85be565a110ed72ed7048cf56570db04ce0a592c98aa59b7dacde3e5718750" "checksum typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" "checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" -"checksum ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fd2be2d6639d0f8fe6cdda291ad456e23629558d466e2789d2c3e9892bda285d" -"checksum uint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "38051a96565903d81c9a9210ce11076b2218f3b352926baa1f5f6abbdfce8273" -"checksum uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "754ba11732b9161b94c41798e5197e5e75388d012f760c42adb5000353e98646" +"checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86" +"checksum uint 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "082df6964410f6aa929a61ddfafc997e4f32c62c22490e439ac351cec827f436" "checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" -"checksum unicase 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "284b6d3db520d67fbe88fd778c21510d1b0ba4a551e5d0fbb023d33405f6de8a" +"checksum unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9d3218ea14b4edcaccfa0df0a64a3792a2c32cc706f1b336e48867f9d3147f90" "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" "checksum unicode-normalization 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6a0180bc61fc5a987082bfa111f4cc95c4caff7f9799f3e46df09163a937aa25" +"checksum unicode-segmentation 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "aa6024fc12ddfd1c6dbc14a80fa2324d4568849869b779f6bd37e5e4c03344d1" "checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" "checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" +"checksum unsigned-varint 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f5c1441164e5da61f00acd15f5a9e61939693c2c6e8b9fae36a220b82de7e212" "checksum unsigned-varint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5fb8abc4b7d8158bdfbbaaccc35331ed3c30c2673e99000d7ae665a2eb6576f4" "checksum untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f392d7819dbe58833e26872f5f6f0d68b7bbbe90fc3667e98731c4a15ad9a7ae" -"checksum url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2a321979c09843d272956e73700d12c4e7d3d92b2ee112b31548aef0d4efc5a6" -"checksum utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122" -"checksum vcpkg 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cbe533e138811704c0e3cbde65a818b35d3240409b4346256c5ede403e082474" +"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" +"checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737" +"checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" "checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" "checksum vergen 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c3365f36c57e5df714a34be40902b27a992eeddb9996eca52d0584611cf885d" -"checksum version_check 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7716c242968ee87e5542f8021178248f267f295a5c4803beae8b8b7fd9bc6051" +"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -"checksum want 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a05d9d966753fa4b5c8db73fcab5eed4549cfe0e1e4e66911e5564a0085c35d1" -"checksum wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "522fe3fdd44a56f25cd5ddcd8ccdb1cf2e982ceb28fcb00f41d8a018ae5245a8" -"checksum websocket 0.20.3 (git+https://github.com/tomaka/rust-websocket?branch=send)" = "" -"checksum websocket 0.20.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9234b4e667c19995475227172446884f516ec0963380afa960d962ab9f4c0bfa" +"checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3" +"checksum wasmi 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8a60b9508cff2b7c27ed41200dd668806280740fadc8c88440e9c88625e84f1a" +"checksum websocket 0.21.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c9faed2bff8af2ea6b9f8b917d3d00b467583f6781fe3def174a9e33c879703" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" -"checksum winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "773ef9dcc5f24b7d850d0ff101e542ff24c3b090a9768e03ff889fdef41f00fd" +"checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +"checksum winapi-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "afc5508759c5bf4285e61feb862b6083c8480aec864fa17a81fdec6f69b461ab" "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +"checksum wincolor 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "561ed901ae465d6185fa7864d63fbd5720d0ef718366c9a4dc83cf6170d7e9ba" "checksum ws 0.7.5 (git+https://github.com/tomusdrw/ws-rs)" = "" +"checksum ws 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)" = "329d3e6dd450a9c5c73024e1047f0be7e24121a68484eb0b5368977bee3cf8c3" "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" "checksum xdg 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a66b7c2281ebde13cf4391d70d4c7e5946c3c25e72a7b859ca8f677dcd0b0c61" -"checksum yaml-rust 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e66366e18dc58b46801afbf2ca7661a9f59cc8c5962c29892b6039b4f86fa992" "checksum yamux 0.1.0 (git+https://github.com/paritytech/yamux)" = "" diff --git a/Cargo.toml b/Cargo.toml index 6422334a6352..e3d77832a756 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,6 @@ vergen = "0.1" [workspace] members = [ - "api", "availability-store", "cli", "collator", @@ -30,7 +29,6 @@ members = [ "runtime", "service", "statement-table", - "transaction-pool", "service", "test-parachains/adder", @@ -42,11 +40,8 @@ exclude = [ ] [badges] -travis-ci = { repository = "paritytech/substrate", branch = "master" } maintenance = { status = "actively-developed" } -is-it-maintained-issue-resolution = { repository = "paritytech/substrate" } -is-it-maintained-open-issues = { repository = "paritytech/substrate" } [profile.release] -# Substrate runtime requires unwinding. +# Polkadot runtime requires unwinding. panic = "unwind" diff --git a/api/Cargo.toml b/api/Cargo.toml deleted file mode 100644 index 73ba40a55281..000000000000 --- a/api/Cargo.toml +++ /dev/null @@ -1,22 +0,0 @@ -[package] -name = "polkadot-api" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -error-chain = "0.12" -log = "0.3" -polkadot-executor = { path = "../executor" } -polkadot-runtime = { path = "../runtime" } -polkadot-primitives = { path = "../primitives" } -parity-codec = { git = "https://github.com/paritytech/substrate" } -sr-io = { git = "https://github.com/paritytech/substrate" } -srml-executive = { git = "https://github.com/paritytech/substrate" } -sr-primitives = { git = "https://github.com/paritytech/substrate" } -substrate-client = { git = "https://github.com/paritytech/substrate" } -substrate-primitives = { git = "https://github.com/paritytech/substrate" } -substrate-executor = { git = "https://github.com/paritytech/substrate" } -substrate-state-machine = { git = "https://github.com/paritytech/substrate" } - -[dev-dependencies] -substrate-keyring = { git = "https://github.com/paritytech/substrate" } diff --git a/api/README.adoc b/api/README.adoc deleted file mode 100644 index 8f382d4f4391..000000000000 --- a/api/README.adoc +++ /dev/null @@ -1,5 +0,0 @@ - -= Polkadot API - -placeholder -//TODO Write content :) diff --git a/api/src/full.rs b/api/src/full.rs deleted file mode 100644 index 659810de5e48..000000000000 --- a/api/src/full.rs +++ /dev/null @@ -1,220 +0,0 @@ -// Copyright 2017 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 . - -//! Strongly typed API for full Polkadot client. - -use client::backend::LocalBackend; -use client::block_builder::BlockBuilder as ClientBlockBuilder; -use client::{Client, LocalCallExecutor}; -use polkadot_executor::Executor as LocalDispatch; -use substrate_executor::NativeExecutor; - -//use runtime::{Block, Header, Address, BlockId}; -use runtime::Address; -use primitives::{ - Block, BlockId, - AccountId, Hash, Index, InherentData, - SessionKey, Timestamp, UncheckedExtrinsic, -}; -use primitives::parachain::{DutyRoster, Id as ParaId}; -use substrate_primitives::{Blake2Hasher, RlpCodec}; -use {BlockBuilder, PolkadotApi, LocalPolkadotApi, ErrorKind, Result}; - -impl> BlockBuilder for ClientBlockBuilder>, Block, Blake2Hasher, RlpCodec> { - fn push_extrinsic(&mut self, extrinsic: UncheckedExtrinsic) -> Result<()> { - self.push(extrinsic).map_err(Into::into) - } - - /// Bake the block with provided extrinsics. - fn bake(self) -> Result { - ClientBlockBuilder::bake(self).map_err(Into::into) - } -} - -impl> PolkadotApi for Client>, Block> { - type BlockBuilder = ClientBlockBuilder>, Block, Blake2Hasher, RlpCodec>; - - fn session_keys(&self, at: &BlockId) -> Result> { - Ok(self.authorities_at(at)?) - } - - fn validators(&self, at: &BlockId) -> Result> { - Ok(self.call_api_at(at, "validators", &())?) - } - - fn random_seed(&self, at: &BlockId) -> Result { - Ok(self.call_api_at(at, "random_seed", &())?) - } - - fn duty_roster(&self, at: &BlockId) -> Result { - Ok(self.call_api_at(at, "duty_roster", &())?) - } - - fn timestamp(&self, at: &BlockId) -> Result { - Ok(self.call_api_at(at, "timestamp", &())?) - } - - fn evaluate_block(&self, at: &BlockId, block: Block) -> Result { - let res: Result<()> = self.call_api_at(at, "execute_block", &block).map_err(From::from); - match res { - Ok(_) => Ok(true), - Err(err) => match err.kind() { - &ErrorKind::Execution(_) => Ok(false), - _ => Err(err) - } - } - } - - fn index(&self, at: &BlockId, account: AccountId) -> Result { - Ok(self.call_api_at(at, "account_nonce", &account)?) - } - - fn lookup(&self, at: &BlockId, address: Address) -> Result> { - Ok(self.call_api_at(at, "lookup_address", &address)?) - } - - fn active_parachains(&self, at: &BlockId) -> Result> { - Ok(self.call_api_at(at, "active_parachains", &())?) - } - - fn parachain_code(&self, at: &BlockId, parachain: ParaId) -> Result>> { - Ok(self.call_api_at(at, "parachain_code", ¶chain)?) - } - - fn parachain_head(&self, at: &BlockId, parachain: ParaId) -> Result>> { - Ok(self.call_api_at(at, "parachain_head", ¶chain)?) - } - - fn build_block(&self, at: &BlockId, inherent_data: InherentData) -> Result { - let mut block_builder = self.new_block_at(at)?; - for inherent in self.inherent_extrinsics(at, inherent_data)? { - block_builder.push(inherent)?; - } - - Ok(block_builder) - } - - fn inherent_extrinsics(&self, at: &BlockId, inherent_data: InherentData) -> Result> { - let runtime_version = self.runtime_version_at(at)?; - Ok(self.call_api_at(at, "inherent_extrinsics", &(inherent_data, runtime_version.spec_version))?) - } -} - -impl> LocalPolkadotApi for Client>, Block> -{} - -#[cfg(test)] -mod tests { - use super::*; - use keyring::Keyring; - use client::LocalCallExecutor; - use client::in_mem::Backend as InMemory; - use substrate_executor::NativeExecutionDispatch; - use runtime::{GenesisConfig, ConsensusConfig, SessionConfig}; - - fn validators() -> Vec { - vec![ - Keyring::One.to_raw_public().into(), - Keyring::Two.to_raw_public().into(), - ] - } - - fn session_keys() -> Vec { - vec![ - Keyring::One.to_raw_public().into(), - Keyring::Two.to_raw_public().into(), - ] - } - - fn client() -> Client, LocalCallExecutor, NativeExecutor>, Block> { - let genesis_config = GenesisConfig { - consensus: Some(ConsensusConfig { - code: LocalDispatch::native_equivalent().to_vec(), - authorities: session_keys(), - }), - system: None, - balances: Some(Default::default()), - session: Some(SessionConfig { - validators: validators(), - session_length: 100, - }), - council: Some(Default::default()), - democracy: Some(Default::default()), - parachains: Some(Default::default()), - staking: Some(Default::default()), - timestamp: Some(Default::default()), - treasury: Some(Default::default()), - }; - - ::client::new_in_mem(LocalDispatch::new(), genesis_config).unwrap() - } - - #[test] - fn gets_session_and_validator_keys() { - let client = client(); - let id = BlockId::number(0); - assert_eq!(client.session_keys(&id).unwrap(), session_keys()); - assert_eq!(client.validators(&id).unwrap(), validators()); - } - - #[test] - fn build_block_implicit_succeeds() { - let client = client(); - - let id = BlockId::number(0); - let block_builder = client.build_block(&id, InherentData { - timestamp: 1_000_000, - parachain_heads: Vec::new(), - offline_indices: Vec::new(), - }).unwrap(); - let block = block_builder.bake().unwrap(); - - assert_eq!(block.header.number, 1); - assert!(block.header.extrinsics_root != Default::default()); - assert!(client.evaluate_block(&id, block).unwrap()); - } - - #[test] - fn build_block_with_inherent_succeeds() { - let client = client(); - - let id = BlockId::number(0); - let inherent = client.inherent_extrinsics(&id, InherentData { - timestamp: 1_000_000, - parachain_heads: Vec::new(), - offline_indices: Vec::new(), - }).unwrap(); - - let mut block_builder = client.new_block_at(&id).unwrap(); - for extrinsic in inherent { - block_builder.push(extrinsic).unwrap(); - } - - let block = block_builder.bake().unwrap(); - - assert_eq!(block.header.number, 1); - assert!(block.header.extrinsics_root != Default::default()); - assert!(client.evaluate_block(&id, block).unwrap()); - } - - #[test] - fn gets_random_seed_with_genesis() { - let client = client(); - - let id = BlockId::number(0); - client.random_seed(&id).unwrap(); - } -} diff --git a/api/src/lib.rs b/api/src/lib.rs deleted file mode 100644 index 288d6bd189f0..000000000000 --- a/api/src/lib.rs +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright 2017 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 . - -//! Strongly typed API for Polkadot based around the locally-compiled native -//! runtime. - -extern crate polkadot_executor; -extern crate polkadot_primitives as primitives; -extern crate polkadot_runtime as runtime; -extern crate parity_codec as codec; -extern crate sr_io as runtime_io; -extern crate substrate_client as client; -extern crate substrate_executor as substrate_executor; -extern crate srml_executive; -extern crate substrate_primitives; -extern crate sr_primitives as runtime_primitives; -extern crate substrate_state_machine as state_machine; - -#[macro_use] -extern crate error_chain; - -extern crate log; - -#[cfg(test)] -extern crate substrate_keyring as keyring; - -pub mod full; -pub mod light; - -use primitives::{ - AccountId, Block, BlockId, Hash, Index, SessionKey, Timestamp, - UncheckedExtrinsic, InherentData, -}; -use runtime::Address; -use primitives::parachain::{DutyRoster, Id as ParaId}; - -error_chain! { - errors { - /// Unknown runtime code. - UnknownRuntime { - description("Unknown runtime code") - display("Unknown runtime code") - } - /// Unknown block ID. - UnknownBlock(b: String) { - description("Unknown block") - display("Unknown block {}", b) - } - /// Execution error. - Execution(e: String) { - description("Execution error") - display("Execution error: {}", e) - } - /// Some other error. - // TODO: allow to be specified as associated type of PolkadotApi - Other(e: Box<::std::error::Error + Send>) { - description("Other error") - display("Other error: {}", e.description()) - } - } -} - -impl From for Error { - fn from(e: client::error::Error) -> Error { - match e { - client::error::Error(client::error::ErrorKind::UnknownBlock(b), _) => Error::from_kind(ErrorKind::UnknownBlock(b)), - client::error::Error(client::error::ErrorKind::Execution(e), _) => - Error::from_kind(ErrorKind::Execution(format!("{}", e))), - other => Error::from_kind(ErrorKind::Other(Box::new(other) as Box<_>)), - } - } -} - -/// Build new blocks. -pub trait BlockBuilder { - /// Push an extrinsic onto the block. Fails if the extrinsic is invalid. - fn push_extrinsic(&mut self, extrinsic: UncheckedExtrinsic) -> Result<()>; - - /// Bake the block with provided extrinsics. - fn bake(self) -> Result; -} - -/// Trait encapsulating the Polkadot API. -/// -/// All calls should fail when the exact runtime is unknown. -pub trait PolkadotApi { - /// The block builder for this API type. - type BlockBuilder: BlockBuilder; - - /// Get session keys at a given block. - fn session_keys(&self, at: &BlockId) -> Result>; - - /// Get validators at a given block. - fn validators(&self, at: &BlockId) -> Result>; - - /// Get the value of the randomness beacon at a given block. - fn random_seed(&self, at: &BlockId) -> Result; - - /// Get the authority duty roster at a block. - fn duty_roster(&self, at: &BlockId) -> Result; - - /// Get the timestamp registered at a block. - fn timestamp(&self, at: &BlockId) -> Result; - - /// Get the nonce (né index) of an account at a block. - fn index(&self, at: &BlockId, account: AccountId) -> Result; - - /// Get the account id of an address at a block. - fn lookup(&self, at: &BlockId, address: Address) -> Result>; - - /// Get the active parachains at a block. - fn active_parachains(&self, at: &BlockId) -> Result>; - - /// Get the validation code of a parachain at a block. If the parachain is active, this will always return `Some`. - fn parachain_code(&self, at: &BlockId, parachain: ParaId) -> Result>>; - - /// Get the chain head of a parachain. If the parachain is active, this will always return `Some`. - fn parachain_head(&self, at: &BlockId, parachain: ParaId) -> Result>>; - - /// Evaluate a block. Returns true if the block is good, false if it is known to be bad, - /// and an error if we can't evaluate for some reason. - fn evaluate_block(&self, at: &BlockId, block: Block) -> Result; - - /// Build a block on top of the given, with inherent extrinsics pre-pushed. - fn build_block(&self, at: &BlockId, inherent_data: InherentData) -> Result; - - /// Attempt to produce the (encoded) inherent extrinsics for a block being built upon the given. - /// This may vary by runtime and will fail if a runtime doesn't follow the same API. - fn inherent_extrinsics(&self, at: &BlockId, inherent_data: InherentData) -> Result>; -} - -/// Mark for all Polkadot API implementations, that are making use of state data, stored locally. -pub trait LocalPolkadotApi: PolkadotApi {} - -/// Mark for all Polkadot API implementations, that are fetching required state data from remote nodes. -pub trait RemotePolkadotApi: PolkadotApi {} diff --git a/api/src/light.rs b/api/src/light.rs deleted file mode 100644 index e148dfb83319..000000000000 --- a/api/src/light.rs +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2017 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 . - -//! Strongly typed API for light Polkadot client. - -use std::sync::Arc; -use client::backend::{Backend, RemoteBackend}; -use client::{Client, CallExecutor}; -use codec::Decode; -use primitives::{ - AccountId, Block, BlockId, Hash, Index, InherentData, - SessionKey, Timestamp, UncheckedExtrinsic, -}; -use runtime::Address; -use primitives::parachain::{DutyRoster, Id as ParaId}; -use {PolkadotApi, BlockBuilder, RemotePolkadotApi, Result, ErrorKind}; -use substrate_primitives::{Blake2Hasher, RlpCodec}; - -/// Light block builder. TODO: make this work (efficiently) -#[derive(Clone, Copy)] -pub struct LightBlockBuilder; - -impl BlockBuilder for LightBlockBuilder { - fn push_extrinsic(&mut self, _xt: UncheckedExtrinsic) -> Result<()> { - Err(ErrorKind::UnknownRuntime.into()) - } - - fn bake(self) -> Result { - Err(ErrorKind::UnknownRuntime.into()) - } -} - -/// Remote polkadot API implementation. -pub struct RemotePolkadotApiWrapper, E: CallExecutor>(pub Arc>); - -impl, E: CallExecutor> PolkadotApi for RemotePolkadotApiWrapper { - type BlockBuilder = LightBlockBuilder; - - fn session_keys(&self, at: &BlockId) -> Result> { - self.0.executor().call(at, "authorities", &[]) - .and_then(|r| Vec::::decode(&mut &r.return_data[..]) - .ok_or("error decoding session keys".into())) - .map_err(Into::into) - } - - fn validators(&self, _at: &BlockId) -> Result> { - Err(ErrorKind::UnknownRuntime.into()) - } - - fn random_seed(&self, _at: &BlockId) -> Result { - Err(ErrorKind::UnknownRuntime.into()) - } - - fn duty_roster(&self, _at: &BlockId) -> Result { - Err(ErrorKind::UnknownRuntime.into()) - } - - fn timestamp(&self, _at: &BlockId) -> Result { - Err(ErrorKind::UnknownRuntime.into()) - } - - fn evaluate_block(&self, _at: &BlockId, _block: Block) -> Result { - Err(ErrorKind::UnknownRuntime.into()) - } - - fn index(&self, _at: &BlockId, _account: AccountId) -> Result { - Err(ErrorKind::UnknownRuntime.into()) - } - - fn lookup(&self, _at: &BlockId, _address: Address) -> Result> { - Err(ErrorKind::UnknownRuntime.into()) - } - - fn active_parachains(&self, _at: &BlockId) -> Result> { - Err(ErrorKind::UnknownRuntime.into()) - } - - fn parachain_code(&self, _at: &BlockId, _parachain: ParaId) -> Result>> { - Err(ErrorKind::UnknownRuntime.into()) - } - - fn parachain_head(&self, _at: &BlockId, _parachain: ParaId) -> Result>> { - Err(ErrorKind::UnknownRuntime.into()) - } - - fn build_block(&self, _at: &BlockId, _inherent: InherentData) -> Result { - Err(ErrorKind::UnknownRuntime.into()) - } - - fn inherent_extrinsics(&self, _at: &BlockId, _inherent: InherentData) -> Result> { - Err(ErrorKind::UnknownRuntime.into()) - } -} - -impl, E: CallExecutor> RemotePolkadotApi for RemotePolkadotApiWrapper {} diff --git a/availability-store/Cargo.toml b/availability-store/Cargo.toml index 902a9a020504..331f882d6a58 100644 --- a/availability-store/Cargo.toml +++ b/availability-store/Cargo.toml @@ -8,7 +8,7 @@ authors = ["Parity Technologies "] polkadot-primitives = { path = "../primitives" } parking_lot = "0.4" log = "0.3" -parity-codec = { git = "https://github.com/paritytech/substrate" } +parity-codec = "2.1" substrate-primitives = { git = "https://github.com/paritytech/substrate" } kvdb = { git = "https://github.com/paritytech/parity-common.git" } kvdb-rocksdb = { git = "https://github.com/paritytech/parity-common.git" } diff --git a/availability-store/src/lib.rs b/availability-store/src/lib.rs index d481f8c17333..05c90facbb75 100644 --- a/availability-store/src/lib.rs +++ b/availability-store/src/lib.rs @@ -110,7 +110,7 @@ impl Store { let mut tx = DBTransaction::new(); // note the meta key. - let mut v = match self.inner.get(columns::META, &*data.relay_parent) { + let mut v = match self.inner.get(columns::META, data.relay_parent.as_ref()) { Ok(Some(raw)) => Vec::decode(&mut &raw[..]).expect("all stored data serialized correctly; qed"), Ok(None) => Vec::new(), Err(e) => { diff --git a/cli/Cargo.toml b/cli/Cargo.toml index a3ab18f0f575..908fc20c57b5 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -11,3 +11,4 @@ futures = "0.1.17" exit-future = "0.1" substrate-cli = { git = "https://github.com/paritytech/substrate" } polkadot-service = { path = "../service" } +structopt = "0.2.13" diff --git a/cli/src/lib.rs b/cli/src/lib.rs index 1a2e2f4850ba..3bec3b99795a 100644 --- a/cli/src/lib.rs +++ b/cli/src/lib.rs @@ -25,20 +25,27 @@ extern crate tokio; extern crate substrate_cli as cli; extern crate polkadot_service as service; extern crate exit_future; +extern crate structopt; #[macro_use] extern crate log; mod chain_spec; -pub use cli::error; - +use std::ops::Deref; use chain_spec::ChainSpec; - use futures::Future; use tokio::runtime::Runtime; -pub use service::{Components as ServiceComponents, Service, CustomConfiguration}; +use structopt::StructOpt; +use service::Service as BareService; + +pub use service::{ + Components as ServiceComponents, PolkadotService, CustomConfiguration, ServiceFactory, Factory, + ProvideRuntimeApi, CoreApi, ParachainHost, +}; + pub use cli::{VersionInfo, IntoExit}; +pub use cli::error; fn load_spec(id: &str) -> Result, String> { Ok(match ChainSpec::from(id) { @@ -62,7 +69,7 @@ pub trait Worker: IntoExit { fn configuration(&self) -> service::CustomConfiguration { Default::default() } /// Do work and schedule exit. - fn work(self, service: &service::Service) -> Self::Work; + fn work(self, service: &S) -> Self::Work; } /// Parse command line arguments into service configuration. @@ -78,10 +85,26 @@ pub fn run(args: I, worker: W, version: cli::VersionInfo) -> error::Res T: Into + Clone, W: Worker, { - - match cli::prepare_execution::(args, worker, version, load_spec, "parity-polkadot")? { + let full_version = polkadot_service::full_version_from_strs( + version.version, + version.commit + ); + + let matches = match cli::CoreParams::clap() + .name(version.executable_name) + .author(version.author) + .about(version.description) + .version(&(full_version + "\n")[..]) + .get_matches_from_safe(args) { + Ok(m) => m, + Err(e) => e.exit(), + }; + + let (spec, mut config) = cli::parse_matches::(load_spec, version, "parity-polkadot", &matches)?; + + match cli::execute_default::(spec, worker, &matches)? { cli::Action::ExecutedInternally => (), - cli::Action::RunService((mut config, worker)) => { + cli::Action::RunService(worker) => { info!("Parity ·:· Polkadot"); info!(" version {}", config.full_version()); info!(" by Parity Technologies, 2017, 2018"); @@ -92,20 +115,23 @@ pub fn run(args: I, worker: W, version: cli::VersionInfo) -> error::Res let mut runtime = Runtime::new()?; let executor = runtime.executor(); match config.roles == service::Roles::LIGHT { - true => run_until_exit(&mut runtime, service::new_light(config, executor)?, worker)?, - false => run_until_exit(&mut runtime, service::new_full(config, executor)?, worker)?, + true => run_until_exit(&mut runtime, Factory::new_light(config, executor)?, worker)?, + false => run_until_exit(&mut runtime, Factory::new_full(config, executor)?, worker)?, } } } Ok(()) } -fn run_until_exit( + +fn run_until_exit( runtime: &mut Runtime, - service: service::Service, + service: T, worker: W, ) -> error::Result<()> where + T: Deref>, C: service::Components, + BareService: PolkadotService, W: Worker, { let (exit_send, exit) = exit_future::signal(); @@ -113,7 +139,7 @@ fn run_until_exit( let executor = runtime.executor(); cli::informant::start(&service, exit.clone(), executor.clone()); - let _ = runtime.block_on(worker.work(&service)); + let _ = runtime.block_on(worker.work(&*service)); exit_send.fire(); Ok(()) } diff --git a/collator/Cargo.toml b/collator/Cargo.toml index de6fb8574730..0384a471f31b 100644 --- a/collator/Cargo.toml +++ b/collator/Cargo.toml @@ -7,9 +7,8 @@ description = "Collator node implementation" [dependencies] futures = "0.1.17" substrate-client = { git = "https://github.com/paritytech/substrate" } -parity-codec = { git = "https://github.com/paritytech/substrate" } +parity-codec = "2.1" substrate-primitives = { git = "https://github.com/paritytech/substrate" } -polkadot-api = { path = "../api" } polkadot-runtime = { path = "../runtime", version = "0.1" } polkadot-primitives = { path = "../primitives", version = "0.1" } polkadot-cli = { path = "../cli" } diff --git a/collator/src/lib.rs b/collator/src/lib.rs index 8c1b4bdb1b19..490b17ba05eb 100644 --- a/collator/src/lib.rs +++ b/collator/src/lib.rs @@ -50,7 +50,6 @@ extern crate parity_codec as codec; extern crate substrate_primitives as primitives; extern crate tokio; -extern crate polkadot_api; extern crate polkadot_cli; extern crate polkadot_runtime; extern crate polkadot_primitives; @@ -61,17 +60,16 @@ extern crate log; use std::collections::{BTreeSet, BTreeMap, HashSet}; use std::fmt; use std::sync::Arc; -use std::time::{Duration, Instant}; +use std::time::Duration; use futures::{future, stream, Stream, Future, IntoFuture}; use client::BlockchainEvents; -use polkadot_api::PolkadotApi; use primitives::ed25519; use polkadot_primitives::{AccountId, BlockId, SessionKey}; use polkadot_primitives::parachain::{self, BlockData, DutyRoster, HeadData, ConsolidatedIngress, Message, Id as ParaId}; -use polkadot_cli::{ServiceComponents, Service, CustomConfiguration}; -use polkadot_cli::{Worker, IntoExit}; -use tokio::timer::Deadline; +use polkadot_cli::{PolkadotService, CustomConfiguration, CoreApi, ParachainHost}; +use polkadot_cli::{Worker, IntoExit, ProvideRuntimeApi}; +use tokio::timer::Timeout; pub use polkadot_cli::VersionInfo; @@ -193,7 +191,7 @@ pub fn collate<'a, R, P>( ).map_err(Error::Collator)?; let block_data_hash = block_data.hash(); - let signature = key.sign(&block_data_hash.0[..]).into(); + let signature = key.sign(block_data_hash.as_ref()).into(); let receipt = parachain::CandidateReceipt { parachain_index: local_id, @@ -217,7 +215,7 @@ pub fn collate<'a, R, P>( struct ApiContext; impl RelayChainContext for ApiContext { - type Error = ::polkadot_api::Error; + type Error = client::error::Error; type FutureEgress = Result>, Self::Error>; fn routing_parachains(&self) -> BTreeSet { @@ -261,10 +259,12 @@ impl Worker for CollationNode where config } - fn work(self, service: &Service) -> Self::Work { + fn work(self, service: &S) -> Self::Work + where S: PolkadotService, + { + let CollationNode { parachain_context, exit, para_id, key } = self; let client = service.client(); - let api = service.api(); let network = service.network(); let work = client.import_notification_stream() @@ -282,19 +282,20 @@ impl Worker for CollationNode where let id = BlockId::hash(relay_parent); let network = network.clone(); - let api = api.clone(); + let client = client.clone(); let key = key.clone(); let parachain_context = parachain_context.clone(); let work = future::lazy(move || { - let last_head = match try_fr!(api.parachain_head(&id, para_id)) { + let api = client.runtime_api(); + let last_head = match try_fr!(api.parachain_head(&id, ¶_id)) { Some(last_head) => last_head, None => return future::Either::A(future::ok(())), }; let targets = compute_targets( para_id, - try_fr!(api.session_keys(&id)).as_slice(), + try_fr!(api.authorities(&id)).as_slice(), try_fr!(api.duty_roster(&id)), ); @@ -315,11 +316,11 @@ impl Worker for CollationNode where future::Either::B(collation_work) }); - let deadlined = Deadline::new(work, Instant::now() + COLLATION_TIMEOUT); + let deadlined = Timeout::new(work, COLLATION_TIMEOUT); let silenced = deadlined.then(|res| match res { Ok(()) => Ok(()), - Err(e) => { - warn!("Collation failure: {}", e); + Err(_) => { + warn!("Collation failure: timeout"); Ok(()) } }); diff --git a/consensus/Cargo.toml b/consensus/Cargo.toml index 3c8261ae2acf..bf95fd29db6a 100644 --- a/consensus/Cargo.toml +++ b/consensus/Cargo.toml @@ -10,17 +10,17 @@ tokio = "0.1.7" error-chain = "0.12" log = "0.3" exit-future = "0.1" -rhododendron = "0.3" -polkadot-api = { path = "../api" } +parity-codec = "2.1" polkadot-availability-store = { path = "../availability-store" } polkadot-parachain = { path = "../parachain" } polkadot-primitives = { path = "../primitives" } polkadot-runtime = { path = "../runtime" } polkadot-statement-table = { path = "../statement-table" } -polkadot-transaction-pool = { path = "../transaction-pool" } -substrate-bft = { git = "https://github.com/paritytech/substrate" } -parity-codec = { git = "https://github.com/paritytech/substrate" } +substrate-consensus-aura = { git = "https://github.com/paritytech/substrate" } +substrate-finality-grandpa = { git = "https://github.com/paritytech/substrate" } +substrate-consensus-common = { git = "https://github.com/paritytech/substrate" } substrate-primitives = { git = "https://github.com/paritytech/substrate" } +substrate-transaction-pool = { git = "https://github.com/paritytech/substrate" } srml-support = { git = "https://github.com/paritytech/substrate" } substrate-client = { git = "https://github.com/paritytech/substrate" } sr-primitives = { git = "https://github.com/paritytech/substrate" } diff --git a/consensus/src/collation.rs b/consensus/src/collation.rs index b02b49aaa695..33fcb63628de 100644 --- a/consensus/src/collation.rs +++ b/consensus/src/collation.rs @@ -21,9 +21,10 @@ use std::sync::Arc; -use polkadot_api::PolkadotApi; -use polkadot_primitives::{Hash, AccountId, BlockId}; +use polkadot_primitives::{Block, Hash, AccountId, BlockId}; use polkadot_primitives::parachain::{Id as ParaId, Collation, Extrinsic}; +use polkadot_primitives::parachain::ParachainHost; +use runtime_primitives::traits::ProvideRuntimeApi; use futures::prelude::*; @@ -52,7 +53,7 @@ pub trait Collators: Clone { /// A future which resolves when a collation is available. /// /// This future is fused. -pub struct CollationFetch { +pub struct CollationFetch { parachain: ParaId, relay_parent_hash: Hash, relay_parent: BlockId, @@ -61,7 +62,7 @@ pub struct CollationFetch { client: Arc

, } -impl CollationFetch { +impl CollationFetch { /// Create a new collation fetcher for the given chain. pub fn new(parachain: ParaId, relay_parent: BlockId, relay_parent_hash: Hash, collators: C, client: Arc

) -> Self { CollationFetch { @@ -80,7 +81,9 @@ impl CollationFetch { } } -impl Future for CollationFetch { +impl Future for CollationFetch + where P::Api: ParachainHost, +{ type Item = (Collation, Extrinsic); type Error = C::Error; @@ -133,19 +136,27 @@ error_chain! { } links { - PolkadotApi(::polkadot_api::Error, ::polkadot_api::ErrorKind); + Client(::client::error::Error, ::client::error::ErrorKind); } } /// Check whether a given collation is valid. Returns `Ok` on success, error otherwise. -pub fn validate_collation(client: &P, relay_parent: &BlockId, collation: &Collation) -> Result<(), Error> { +pub fn validate_collation

( + client: &P, + relay_parent: &BlockId, + collation: &Collation +) -> Result<(), Error> where + P: ProvideRuntimeApi, + P::Api: ParachainHost +{ use parachain::{self, ValidationParams}; + let api = client.runtime_api(); let para_id = collation.receipt.parachain_index; - let validation_code = client.parachain_code(relay_parent, para_id)? + let validation_code = api.parachain_code(relay_parent, ¶_id)? .ok_or_else(|| ErrorKind::InactiveParachain(para_id))?; - let chain_head = client.parachain_head(relay_parent, para_id)? + let chain_head = api.parachain_head(relay_parent, ¶_id)? .ok_or_else(|| ErrorKind::InactiveParachain(para_id))?; let params = ValidationParams { diff --git a/consensus/src/error.rs b/consensus/src/error.rs index 397fdee52ce9..2123ba791c01 100644 --- a/consensus/src/error.rs +++ b/consensus/src/error.rs @@ -20,8 +20,8 @@ use primitives::AuthorityId; error_chain! { links { - PolkadotApi(::polkadot_api::Error, ::polkadot_api::ErrorKind); - Bft(::bft::Error, ::bft::ErrorKind); + Client(::client::error::Error, ::client::error::ErrorKind); + Consensus(::consensus::error::Error, ::consensus::error::ErrorKind); } errors { @@ -48,8 +48,8 @@ error_chain! { } } -impl From<::bft::InputStreamConcluded> for Error { - fn from(err: ::bft::InputStreamConcluded) -> Self { - ::bft::Error::from(err).into() - } -} +// impl From<::bft::InputStreamConcluded> for Error { +// fn from(err: ::bft::InputStreamConcluded) -> Self { +// ::bft::Error::from(err).into() +// } +// } diff --git a/consensus/src/evaluation.rs b/consensus/src/evaluation.rs index d843e79de471..596e09caef43 100644 --- a/consensus/src/evaluation.rs +++ b/consensus/src/evaluation.rs @@ -18,14 +18,13 @@ use super::MAX_TRANSACTIONS_SIZE; -use codec::{Decode, Encode}; -use polkadot_runtime::{Block as PolkadotGenericBlock, CheckedBlock}; +use codec::Encode; use polkadot_primitives::{Block, Hash, BlockNumber, Timestamp}; use polkadot_primitives::parachain::Id as ParaId; error_chain! { links { - PolkadotApi(::polkadot_api::Error, ::polkadot_api::ErrorKind); + Client(::client::error::Error, ::client::error::ErrorKind); } errors { @@ -33,10 +32,6 @@ error_chain! { description("Proposal provided not a Polkadot block."), display("Proposal provided not a Polkadot block."), } - TimestampInFuture { - description("Proposal had timestamp too far in the future."), - display("Proposal had timestamp too far in the future."), - } TooManyCandidates(expected: usize, got: usize) { description("Proposal included more candidates than is possible."), display("Proposal included {} candidates for {} parachains", got, expected), @@ -71,18 +66,11 @@ error_chain! { /// upon any initial validity checks failing. pub fn evaluate_initial( proposal: &Block, - now: Timestamp, + _now: Timestamp, parent_hash: &Hash, parent_number: BlockNumber, - active_parachains: &[ParaId], -) -> Result { - const MAX_TIMESTAMP_DRIFT: Timestamp = 60; - - let encoded = Encode::encode(proposal); - let proposal = PolkadotGenericBlock::decode(&mut &encoded[..]) - .and_then(|b| CheckedBlock::new(b).ok()) - .ok_or_else(|| ErrorKind::ProposalNotForPolkadot)?; - + _active_parachains: &[ParaId], +) -> Result<()> { let transactions_size = proposal.extrinsics.iter().fold(0, |a, tx| { a + Encode::encode(tx).len() }); @@ -99,35 +87,5 @@ pub fn evaluate_initial( bail!(ErrorKind::WrongNumber(parent_number + 1, proposal.header.number)); } - let block_timestamp = proposal.timestamp(); - - // lenient maximum -- small drifts will just be delayed using a timer. - if block_timestamp > now + MAX_TIMESTAMP_DRIFT { - bail!(ErrorKind::TimestampInFuture) - } - - { - let n_parachains = active_parachains.len(); - if proposal.parachain_heads().len() > n_parachains { - bail!(ErrorKind::TooManyCandidates(n_parachains, proposal.parachain_heads().len())); - } - - let mut last_id = None; - let mut iter = active_parachains.iter(); - for head in proposal.parachain_heads() { - // proposed heads must be ascending order by parachain ID without duplicate. - if last_id.as_ref().map_or(false, |x| x >= &head.parachain_index) { - bail!(ErrorKind::ParachainOutOfOrder); - } - - if !iter.any(|x| x == &head.parachain_index) { - // must be unknown since active parachains are always sorted. - bail!(ErrorKind::UnknownParachain(head.parachain_index)) - } - - last_id = Some(head.parachain_index); - } - } - - Ok(proposal) + Ok(()) } diff --git a/consensus/src/lib.rs b/consensus/src/lib.rs index b4b99bbab2fc..4601b5b30d42 100644 --- a/consensus/src/lib.rs +++ b/consensus/src/lib.rs @@ -30,15 +30,12 @@ //! Groups themselves may be compromised by malicious authorities. extern crate parking_lot; -extern crate polkadot_api; extern crate polkadot_availability_store as extrinsic_store; extern crate polkadot_statement_table as table; extern crate polkadot_parachain as parachain; -extern crate polkadot_transaction_pool as transaction_pool; extern crate polkadot_runtime; extern crate polkadot_primitives; -extern crate substrate_bft as bft; extern crate parity_codec as codec; extern crate substrate_primitives as primitives; extern crate srml_support as runtime_support; @@ -47,7 +44,10 @@ extern crate substrate_client as client; extern crate exit_future; extern crate tokio; -extern crate rhododendron; +extern crate substrate_consensus_common as consensus; +extern crate substrate_consensus_aura as aura; +extern crate substrate_finality_grandpa as grandpa; +extern crate substrate_transaction_pool as transaction_pool; #[macro_use] extern crate error_chain; @@ -65,40 +65,40 @@ use std::collections::{HashMap, HashSet}; use std::sync::Arc; use std::time::{self, Duration, Instant}; +use aura::ExtraVerification; +use client::blockchain::HeaderBackend; +use client::block_builder::api::BlockBuilder; use codec::{Decode, Encode}; use extrinsic_store::Store as ExtrinsicStore; -use polkadot_api::PolkadotApi; -use polkadot_primitives::{AccountId, Hash, Block, BlockId, BlockNumber, Header, Timestamp, SessionKey}; +use parking_lot::Mutex; +use polkadot_primitives::{Hash, Block, BlockId, BlockNumber, Header, Timestamp, SessionKey}; +use polkadot_primitives::{Compact, UncheckedExtrinsic}; use polkadot_primitives::parachain::{Id as ParaId, Chain, DutyRoster, BlockData, Extrinsic as ParachainExtrinsic, CandidateReceipt, CandidateSignature}; +use polkadot_primitives::parachain::ParachainHost; use primitives::{AuthorityId, ed25519}; -use transaction_pool::TransactionPool; +use runtime_primitives::traits::ProvideRuntimeApi; use tokio::runtime::TaskExecutor; use tokio::timer::{Delay, Interval}; +use transaction_pool::txpool::{Pool, ChainApi as PoolChainApi}; use futures::prelude::*; -use futures::future; +use futures::future::{self, Either}; use collation::CollationFetch; use dynamic_inclusion::DynamicInclusion; -use parking_lot::RwLock; pub use self::collation::{validate_collation, Collators}; pub use self::error::{ErrorKind, Error}; -pub use self::offline_tracker::OfflineTracker; pub use self::shared_table::{SharedTable, StatementProducer, ProducedStatements, Statement, SignedStatement, GenericStatement}; pub use service::Service; mod dynamic_inclusion; mod evaluation; mod error; -mod offline_tracker; mod service; mod shared_table; pub mod collation; -/// Shared offline validator tracker. -pub type SharedOfflineTracker = Arc>; - // block size limit. const MAX_TRANSACTIONS_SIZE: usize = 4 * 1024 * 1024; @@ -129,14 +129,14 @@ pub trait Network { /// The table router type. This should handle importing of any statements, /// routing statements to peers, and driving completion of any `StatementProducers`. type TableRouter: TableRouter; - /// The input stream of BFT messages. Should never logically conclude. - type Input: Stream,Error=Error>; - /// The output sink of BFT messages. Messages sent here should eventually pass to all - /// current authorities. - type Output: Sink,SinkError=Error>; /// Instantiate a table router using the given shared table and task executor. - fn communication_for(&self, validators: &[SessionKey], table: Arc, task_executor: TaskExecutor) -> (Self::TableRouter, Self::Input, Self::Output); + fn communication_for( + &self, + validators: &[SessionKey], + table: Arc, + task_executor: TaskExecutor + ) -> Self::TableRouter; } /// Information about a specific group. @@ -157,7 +157,7 @@ pub struct GroupInfo { /// parent hash. pub fn sign_table_statement(statement: &Statement, key: &ed25519::Pair, parent_hash: &Hash) -> CandidateSignature { let mut encoded = statement.encode(); - encoded.extend(&parent_hash.0); + encoded.extend(parent_hash.as_ref()); key.sign(&encoded).into() } @@ -167,7 +167,7 @@ pub fn check_statement(statement: &Statement, signature: &CandidateSignature, si use runtime_primitives::traits::Verify; let mut encoded = statement.encode(); - encoded.extend(&parent_hash.0); + encoded.extend(parent_hash.as_ref()); signature.verify(&encoded[..], &signer.into()) } @@ -229,62 +229,58 @@ fn make_group_info(roster: DutyRoster, authorities: &[AuthorityId], local_id: Au } } -/// Polkadot proposer factory. -pub struct ProposerFactory - where - P: PolkadotApi + Send + Sync + 'static -{ +/// Constructs parachain-agreement instances. +struct ParachainConsensus { /// The client instance. - pub client: Arc

, - /// The transaction pool. - pub transaction_pool: Arc>, + client: Arc

, /// The backing network handle. - pub network: N, + network: N, /// Parachain collators. - pub collators: C, + collators: C, /// handle to remote task executor - pub handle: TaskExecutor, - /// The duration after which parachain-empty blocks will be allowed. - pub parachain_empty_duration: Duration, + handle: TaskExecutor, /// Store for extrinsic data. - pub extrinsic_store: ExtrinsicStore, - /// Offline-tracker. - pub offline: SharedOfflineTracker, + extrinsic_store: ExtrinsicStore, + /// The time after which no parachains may be included. + parachain_empty_duration: Duration, + /// Live agreements. + live_instances: Mutex>>, + } -impl bft::Environment for ProposerFactory - where - C: Collators + Send + 'static, - N: Network, - P: PolkadotApi + Send + Sync + 'static, - ::Future: Send + 'static, - N::TableRouter: Send + 'static, +impl ParachainConsensus where + C: Collators + Send + 'static, + N: Network, + P: ProvideRuntimeApi + HeaderBackend + Send + Sync + 'static, + P::Api: ParachainHost + BlockBuilder, + ::Future: Send + 'static, + N::TableRouter: Send + 'static, { - type Proposer = Proposer

; - type Input = N::Input; - type Output = N::Output; - type Error = Error; - - fn init( + /// Get an attestation table for given parent hash. + /// + /// This starts a parachain agreement process for given parent hash if + /// one has not already started. + fn get_or_instantiate( &self, - parent_header: &Header, + parent_hash: Hash, authorities: &[AuthorityId], sign_with: Arc, - ) -> Result<(Self::Proposer, Self::Input, Self::Output), Error> { + ) + -> Result, Error> + { use runtime_primitives::traits::{Hash as HashT, BlakeTwo256}; - // force delay in evaluation this long. - const FORCE_DELAY: Timestamp = 5; - - let parent_hash = parent_header.hash().into(); + let mut live_instances = self.live_instances.lock(); + if let Some(tracker) = live_instances.get(&parent_hash) { + return Ok(tracker.clone()); + } let id = BlockId::hash(parent_hash); - let duty_roster = self.client.duty_roster(&id)?; - let random_seed = self.client.random_seed(&id)?; - let random_seed = BlakeTwo256::hash(&*random_seed); + let duty_roster = self.client.runtime_api().duty_roster(&id)?; + let random_seed = self.client.runtime_api().random_seed(&id)?; + let _random_seed = BlakeTwo256::hash(random_seed.as_ref()); - let validators = self.client.validators(&id)?; - self.offline.write().note_new_block(&validators[..]); + let _validators = self.client.runtime_api().validators(&id)?; let (group_info, local_duty) = make_group_info( duty_roster, @@ -292,28 +288,21 @@ impl bft::Environment for ProposerFactory sign_with.public().into(), )?; - info!("Starting consensus session on top of parent {:?}. Local parachain duty is {:?}", + info!("Starting parachain attestation session on top of parent {:?}. Local parachain duty is {:?}", parent_hash, local_duty.validation); - let active_parachains = self.client.active_parachains(&id)?; + let active_parachains = self.client.runtime_api().active_parachains(&id)?; debug!(target: "consensus", "Active parachains: {:?}", active_parachains); - let n_parachains = active_parachains.len(); + let _n_parachains = active_parachains.len(); let table = Arc::new(SharedTable::new(group_info, sign_with.clone(), parent_hash, self.extrinsic_store.clone())); - let (router, input, output) = self.network.communication_for( + let router = self.network.communication_for( authorities, table.clone(), self.handle.clone() ); - let now = Instant::now(); - let dynamic_inclusion = DynamicInclusion::new( - n_parachains, - now, - self.parachain_empty_duration.clone(), - ); - let validation_para = match local_duty.validation { Chain::Relay => None, Chain::Parachain(id) => Some(id), @@ -326,6 +315,7 @@ impl bft::Environment for ProposerFactory self.collators.clone(), self.client.clone(), )); + let drop_signal = dispatch_collation_work( router.clone(), &self.handle, @@ -333,23 +323,96 @@ impl bft::Environment for ProposerFactory self.extrinsic_store.clone(), ); - let proposer = Proposer { - client: self.client.clone(), + let now = Instant::now(); + let dynamic_inclusion = DynamicInclusion::new( + table.num_parachains(), + now, + self.parachain_empty_duration.clone(), + ); + + let tracker = Arc::new(AttestationTracker { + table, dynamic_inclusion, - local_key: sign_with, + _drop_signal: drop_signal + }); + + live_instances.insert(parent_hash, tracker.clone()); + + Ok(tracker) + } + + /// Retain consensus sessions matching predicate. + fn retain bool>(&self, mut pred: F) { + self.live_instances.lock().retain(|k, _| pred(k)) + } +} + +/// Parachain consensus for a single block. +struct AttestationTracker { + _drop_signal: exit_future::Signal, + table: Arc, + dynamic_inclusion: DynamicInclusion, +} + +/// Polkadot proposer factory. +struct ProposerFactory { + parachain_consensus: Arc>, + transaction_pool: Arc>, +} + +impl ProposerFactory where + TxApi: PoolChainApi, +{ + /// Create a new proposer factory. + fn new( + parachain_consensus: Arc>, + transaction_pool: Arc>, + ) -> Self { + ProposerFactory { + parachain_consensus, + transaction_pool, + } + } +} + +impl consensus::Environment for ProposerFactory where + C: Collators + Send + 'static, + N: Network, + TxApi: PoolChainApi, + P: ProvideRuntimeApi + HeaderBackend + Send + Sync + 'static, + P::Api: ParachainHost + BlockBuilder, + ::Future: Send + 'static, + N::TableRouter: Send + 'static, +{ + type Proposer = Proposer; + type Error = Error; + + fn init( + &self, + parent_header: &Header, + authorities: &[AuthorityId], + sign_with: Arc, + ) -> Result { + // force delay in evaluation this long. + const FORCE_DELAY: Timestamp = Compact(5); + + let parent_hash = parent_header.hash(); + let parent_id = BlockId::hash(parent_hash); + let tracker = self.parachain_consensus.get_or_instantiate( parent_hash, - parent_id: id, + authorities, + sign_with, + )?; + + Ok(Proposer { + client: self.parachain_consensus.client.clone(), + tracker, + parent_hash, + parent_id, parent_number: parent_header.number, - random_seed, - table, transaction_pool: self.transaction_pool.clone(), - offline: self.offline.clone(), - validators, - minimum_timestamp: current_timestamp() + FORCE_DELAY, - _drop_signal: drop_signal, - }; - - Ok((proposer, input, output)) + minimum_timestamp: current_timestamp().0 + FORCE_DELAY.0, + }) } } @@ -362,7 +425,8 @@ fn dispatch_collation_work( extrinsic_store: ExtrinsicStore, ) -> exit_future::Signal where C: Collators + Send + 'static, - P: PolkadotApi + Send + Sync + 'static, + P: ProvideRuntimeApi + HeaderBackend + Send + Sync + 'static, + P::Api: ParachainHost, ::Future: Send + 'static, R: TableRouter + Send + 'static, { @@ -413,50 +477,35 @@ struct LocalDuty { } /// The Polkadot proposer logic. -pub struct Proposer { +pub struct Proposer where + C: ProvideRuntimeApi + HeaderBackend, +{ client: Arc, - dynamic_inclusion: DynamicInclusion, - local_key: Arc, parent_hash: Hash, parent_id: BlockId, parent_number: BlockNumber, - random_seed: Hash, - table: Arc, - transaction_pool: Arc>, - offline: SharedOfflineTracker, - validators: Vec, + tracker: Arc, + transaction_pool: Arc>, minimum_timestamp: u64, - _drop_signal: exit_future::Signal, -} - -impl Proposer { - fn primary_index(&self, round_number: usize, len: usize) -> usize { - use primitives::uint::U256; - - let big_len = U256::from(len); - let offset = U256::from_big_endian(&self.random_seed.0) % big_len; - let offset = offset.low_u64() as usize + round_number; - offset % len - } } -impl bft::Proposer for Proposer - where - C: PolkadotApi + Send + Sync, +impl consensus::Proposer for Proposer where + TxApi: PoolChainApi, + C: ProvideRuntimeApi + HeaderBackend + Send + Sync, + C::Api: ParachainHost + BlockBuilder, { type Error = Error; - type Create = future::Either< - CreateProposal, + type Create = Either< + CreateProposal, future::FutureResult, >; - type Evaluate = Box>; fn propose(&self) -> Self::Create { const ATTEMPT_PROPOSE_EVERY: Duration = Duration::from_millis(100); - let initial_included = self.table.includable_count(); + let initial_included = self.tracker.table.includable_count(); let now = Instant::now(); - let enough_candidates = self.dynamic_inclusion.acceptable_in( + let enough_candidates = self.tracker.dynamic_inclusion.acceptable_in( now, initial_included, ).unwrap_or_else(|| now + Duration::from_millis(1)); @@ -464,216 +513,69 @@ impl bft::Proposer for Proposer let timing = ProposalTiming { attempt_propose: Interval::new(now + ATTEMPT_PROPOSE_EVERY, ATTEMPT_PROPOSE_EVERY), enough_candidates: Delay::new(enough_candidates), - dynamic_inclusion: self.dynamic_inclusion.clone(), + dynamic_inclusion: self.tracker.dynamic_inclusion.clone(), last_included: initial_included, }; - future::Either::A(CreateProposal { + Either::A(CreateProposal { parent_hash: self.parent_hash.clone(), parent_number: self.parent_number.clone(), parent_id: self.parent_id.clone(), client: self.client.clone(), transaction_pool: self.transaction_pool.clone(), - table: self.table.clone(), - offline: self.offline.clone(), - validators: self.validators.clone(), - minimum_timestamp: self.minimum_timestamp, + table: self.tracker.table.clone(), + minimum_timestamp: self.minimum_timestamp.into(), timing, }) } +} - fn evaluate(&self, unchecked_proposal: &Block) -> Self::Evaluate { - debug!(target: "bft", "evaluating block on top of parent ({}, {:?})", self.parent_number, self.parent_hash); - - let active_parachains = match self.client.active_parachains(&self.parent_id) { - Ok(x) => x, - Err(e) => return Box::new(future::err(e.into())) as Box<_>, - }; - - let current_timestamp = current_timestamp(); - - // do initial serialization and structural integrity checks. - let maybe_proposal = evaluation::evaluate_initial( - unchecked_proposal, - current_timestamp, - &self.parent_hash, - self.parent_number, - &active_parachains, - ); - - let proposal = match maybe_proposal { - Ok(p) => p, - Err(e) => { - // TODO: these errors are easily re-checked in runtime. - debug!(target: "bft", "Invalid proposal: {:?}", e); - return Box::new(future::ok(false)); - } - }; - - let vote_delays = { - let now = Instant::now(); - - let included_candidate_hashes = proposal - .parachain_heads() - .iter() - .map(|candidate| candidate.hash()); - - // delay casting vote until we have proof that all candidates are - // includable. - let includability_tracker = self.table.track_includability(included_candidate_hashes) - .map_err(|_| ErrorKind::PrematureDestruction.into()); - - // the duration at which the given number of parachains is acceptable. - let count_delay = self.dynamic_inclusion.acceptable_in( - now, - proposal.parachain_heads().len(), - ); - - // the duration until the given timestamp is current - let proposed_timestamp = ::std::cmp::max(self.minimum_timestamp, proposal.timestamp()); - let timestamp_delay = if proposed_timestamp > current_timestamp { - let delay_s = proposed_timestamp - current_timestamp; - debug!(target: "bft", "Delaying evaluation of proposal for {} seconds", delay_s); - Some(now + Duration::from_secs(delay_s)) - } else { - None - }; +/// Does verification before importing blocks. +/// Should be used for further verification in aura. +pub struct BlockVerifier; - // delay casting vote until able according to minimum block time, - // timestamp delay, and count delay. - // construct a future from the maximum of the two durations. - let max_delay = ::std::cmp::max(timestamp_delay, count_delay); +impl ExtraVerification for BlockVerifier { + type Verified = Either< + future::FutureResult<(), String>, + Box>, + >; - let temporary_delay = match max_delay { - Some(duration) => future::Either::A( - Delay::new(duration).map_err(|e| Error::from(ErrorKind::Timer(e))) - ), - None => future::Either::B(future::ok(())), - }; + fn verify(&self, _header: &Header, body: Option<&[UncheckedExtrinsic]>) -> Self::Verified { + use polkadot_runtime::{Call, UncheckedExtrinsic, TimestampCall}; - includability_tracker.join(temporary_delay) + let body = match body { + None => return Either::A(future::ok(())), + Some(body) => body, }; - // refuse to vote if this block says a validator is offline that we - // think isn't. - let offline = proposal.noted_offline(); - if !self.offline.read().check_consistency(&self.validators[..], offline) { - return Box::new(futures::empty()); - } - - // evaluate whether the block is actually valid. - // TODO: is it better to delay this until the delays are finished? - let evaluated = self.client - .evaluate_block(&self.parent_id, unchecked_proposal.clone()) - .map_err(Into::into); - - let future = future::result(evaluated).and_then(move |good| { - let end_result = future::ok(good); - if good { - // delay a "good" vote. - future::Either::A(vote_delays.and_then(|_| end_result)) - } else { - // don't delay a "bad" evaluation. - future::Either::B(end_result) - } - }); - - Box::new(future) as Box<_> - } - - fn round_proposer(&self, round_number: usize, authorities: &[AuthorityId]) -> AuthorityId { - let offset = self.primary_index(round_number, authorities.len()); - let proposer = authorities[offset].clone(); - trace!(target: "bft", "proposer for round {} is {}", round_number, proposer); - - proposer - } - - fn import_misbehavior(&self, misbehavior: Vec<(AuthorityId, bft::Misbehavior)>) { - use rhododendron::Misbehavior as GenericMisbehavior; - use runtime_primitives::bft::{MisbehaviorKind, MisbehaviorReport}; - use polkadot_runtime::{Call, UncheckedExtrinsic, ConsensusCall, RawAddress}; - - let local_id = self.local_key.public().0.into(); - let mut next_index = { - let cur_index = self.transaction_pool.cull_and_get_pending(&BlockId::hash(self.parent_hash), |pending| pending - .filter(|tx| tx.verified.sender().map(|s| s == local_id).unwrap_or(false)) - .last() - .map(|tx| Ok(tx.verified.index())) - .unwrap_or_else(|| self.client.index(&self.parent_id, local_id)) - ); - - match cur_index { - Ok(Ok(cur_index)) => cur_index + 1, - Ok(Err(e)) => { - warn!(target: "consensus", "Error computing next transaction index: {}", e); - return; - } - Err(e) => { - warn!(target: "consensus", "Error computing next transaction index: {}", e); - return; - } - } - }; + // TODO: reintroduce or revisit necessaity for includability tracker. + let timestamp = current_timestamp(); - for (target, misbehavior) in misbehavior { - let report = MisbehaviorReport { - parent_hash: self.parent_hash, - parent_number: self.parent_number, - target, - misbehavior: match misbehavior { - GenericMisbehavior::ProposeOutOfTurn(_, _, _) => continue, - GenericMisbehavior::DoublePropose(_, _, _) => continue, - GenericMisbehavior::DoublePrepare(round, (h1, s1), (h2, s2)) - => MisbehaviorKind::BftDoublePrepare(round as u32, (h1, s1.signature), (h2, s2.signature)), - GenericMisbehavior::DoubleCommit(round, (h1, s1), (h2, s2)) - => MisbehaviorKind::BftDoubleCommit(round as u32, (h1, s1.signature), (h2, s2.signature)), + let maybe_in_block = body.iter() + .filter_map(|ex| { + let encoded = ex.encode(); + let runtime_ex = UncheckedExtrinsic::decode(&mut &encoded[..])?; + match runtime_ex.function { + Call::Timestamp(TimestampCall::set(t)) => Some(t), + _ => None, } - }; - let payload = (next_index, Call::Consensus(ConsensusCall::report_misbehavior(report))); - let signature = self.local_key.sign(&payload.encode()).into(); - next_index += 1; - - let local_id = self.local_key.public().0.into(); - let extrinsic = UncheckedExtrinsic { - signature: Some((RawAddress::Id(local_id), signature)), - index: payload.0, - function: payload.1, - }; - let uxt: Vec = Decode::decode(&mut extrinsic.encode().as_slice()).expect("Encoded extrinsic is valid"); - self.transaction_pool.submit_one(&BlockId::hash(self.parent_hash), polkadot_primitives::UncheckedExtrinsic(uxt)) - .expect("locally signed extrinsic is valid; qed"); - } - } + }) + .next(); - fn on_round_end(&self, round_number: usize, was_proposed: bool) { - let primary_validator = self.validators[ - self.primary_index(round_number, self.validators.len()) - ]; - - - // alter the message based on whether we think the empty proposer was forced to skip the round. - // this is determined by checking if our local validator would have been forced to skip the round. - let consider_online = was_proposed || { - let forced_delay = self.dynamic_inclusion.acceptable_in(Instant::now(), self.table.includable_count()); - let public = ed25519::Public::from_raw(primary_validator.0); - match forced_delay { - None => info!( - "Potential Offline Validator: {} failed to propose during assigned slot: {}", - public, - round_number, - ), - Some(_) => info!( - "Potential Offline Validator {} potentially forced to skip assigned slot: {}", - public, - round_number, - ), - } - - forced_delay.is_some() + let timestamp_in_block = match maybe_in_block { + None => return Either::A(future::ok(())), + Some(t) => t, }; - self.offline.write().note_round_end(primary_validator, consider_online); + // we wait until the block timestamp is earlier than current. + if timestamp.0 < timestamp_in_block.0 { + let diff_secs = timestamp_in_block.0 - timestamp.0; + let delay = Delay::new(Instant::now() + Duration::from_secs(diff_secs)) + .map_err(move |e| format!("Error waiting for {} seconds: {:?}", diff_secs, e)); + Either::B(Box::new(delay)) + } else { + Either::A(future::ok(())) + } } } @@ -681,6 +583,7 @@ fn current_timestamp() -> Timestamp { time::SystemTime::now().duration_since(time::UNIX_EPOCH) .expect("now always later than unix epoch; qed") .as_secs() + .into() } struct ProposalTiming { @@ -721,75 +624,62 @@ impl ProposalTiming { } /// Future which resolves upon the creation of a proposal. -pub struct CreateProposal { +pub struct CreateProposal { parent_hash: Hash, parent_number: BlockNumber, parent_id: BlockId, client: Arc, - transaction_pool: Arc>, + transaction_pool: Arc>, table: Arc, timing: ProposalTiming, - validators: Vec, - offline: SharedOfflineTracker, minimum_timestamp: Timestamp, } -impl CreateProposal where C: PolkadotApi + Send + Sync { +impl CreateProposal where + TxApi: PoolChainApi, + C: ProvideRuntimeApi + HeaderBackend + Send + Sync, + C::Api: ParachainHost + BlockBuilder, +{ fn propose_with(&self, candidates: Vec) -> Result { - use polkadot_api::BlockBuilder; + use client::block_builder::BlockBuilder; use runtime_primitives::traits::{Hash as HashT, BlakeTwo256}; use polkadot_primitives::InherentData; - const MAX_VOTE_OFFLINE_SECONDS: Duration = Duration::from_secs(60); - // TODO: handle case when current timestamp behind that in state. - let timestamp = ::std::cmp::max(self.minimum_timestamp, current_timestamp()); - - let elapsed_since_start = self.timing.dynamic_inclusion.started_at().elapsed(); - let offline_indices = if elapsed_since_start > MAX_VOTE_OFFLINE_SECONDS { - Vec::new() - } else { - self.offline.read().reports(&self.validators[..]) - }; + let timestamp = ::std::cmp::max(self.minimum_timestamp.0, current_timestamp().0).into(); - if !offline_indices.is_empty() { - info!( - "Submitting offline validators {:?} for slash-vote", - offline_indices.iter().map(|&i| self.validators[i as usize]).collect::>(), - ) - } + let _elapsed_since_start = self.timing.dynamic_inclusion.started_at().elapsed(); - let inherent_data = InherentData { + let _inherent_data = InherentData { timestamp, parachain_heads: candidates, - offline_indices, }; - let mut block_builder = self.client.build_block(&self.parent_id, inherent_data)?; + let mut block_builder = BlockBuilder::at_block(&self.parent_id, &*self.client)?; { let mut unqueue_invalid = Vec::new(); - let result = self.transaction_pool.cull_and_get_pending(&BlockId::hash(self.parent_hash), |pending_iterator| { - let mut pending_size = 0; - for pending in pending_iterator { - if pending_size + pending.verified.encoded_size() >= MAX_TRANSACTIONS_SIZE { break } - - match block_builder.push_extrinsic(pending.original.clone()) { - Ok(()) => { - pending_size += pending.verified.encoded_size(); - } - Err(e) => { - trace!(target: "transaction-pool", "Invalid transaction: {}", e); - unqueue_invalid.push(pending.verified.hash().clone()); - } + let mut pending_size = 0; + + let ready_iter = self.transaction_pool.ready(); + for ready in ready_iter { + let encoded_size = ready.data.encode().len(); + if pending_size + encoded_size >= MAX_TRANSACTIONS_SIZE { + break + } + + match block_builder.push(ready.data.clone()) { + Ok(()) => { + pending_size += encoded_size; + } + Err(e) => { + trace!(target: "transaction-pool", "Invalid transaction: {}", e); + unqueue_invalid.push(ready.hash.clone()); } } - }); - if let Err(e) = result { - warn!("Unable to get the pending set: {:?}", e); } - self.transaction_pool.remove(&unqueue_invalid, false); + self.transaction_pool.remove_invalid(&unqueue_invalid); } let polkadot_block = block_builder.bake()?; @@ -808,7 +698,7 @@ impl CreateProposal where C: PolkadotApi + Send + Sync { .expect("polkadot blocks defined to serialize to substrate blocks correctly; qed"); // TODO: full re-evaluation - let active_parachains = self.client.active_parachains(&self.parent_id)?; + let active_parachains = self.client.runtime_api().active_parachains(&self.parent_id)?; assert!(evaluation::evaluate_initial( &substrate_block, timestamp, @@ -821,7 +711,11 @@ impl CreateProposal where C: PolkadotApi + Send + Sync { } } -impl Future for CreateProposal where C: PolkadotApi + Send + Sync { +impl Future for CreateProposal where + TxApi: PoolChainApi, + C: ProvideRuntimeApi + HeaderBackend + Send + Sync, + C::Api: ParachainHost + BlockBuilder, +{ type Item = Block; type Error = Error; diff --git a/consensus/src/offline_tracker.rs b/consensus/src/offline_tracker.rs deleted file mode 100644 index eb6c2480c414..000000000000 --- a/consensus/src/offline_tracker.rs +++ /dev/null @@ -1,167 +0,0 @@ -// Copyright 2018 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 . - -//! Tracks offline validators. - -use polkadot_primitives::AccountId; - -use std::collections::HashMap; -use std::time::{Instant, Duration}; - -struct Observed { - last_round_end: Instant, - offline_since: Instant, -} - -#[derive(Eq, PartialEq)] -enum Activity { - Offline, - StillOffline(Duration), - Online, -} - -impl Observed { - fn new() -> Observed { - let now = Instant::now(); - Observed { - last_round_end: now, - offline_since: now, - } - } - - fn note_round_end(&mut self, now: Instant, was_online: Option) { - self.last_round_end = now; - if let Some(false) = was_online { - self.offline_since = now; - } - } - - /// Returns what we have observed about the online/offline state of the validator. - fn activity(&self) -> Activity { - // can happen if clocks are not monotonic - if self.offline_since > self.last_round_end { return Activity::Online } - if self.offline_since == self.last_round_end { return Activity::Offline } - Activity::StillOffline(self.last_round_end.duration_since(self.offline_since)) - } -} - -/// Tracks offline validators and can issue a report for those offline. -pub struct OfflineTracker { - observed: HashMap, - block_instant: Instant, -} - -impl OfflineTracker { - /// Create a new tracker. - pub fn new() -> Self { - OfflineTracker { observed: HashMap::new(), block_instant: Instant::now() } - } - - /// Note new consensus is starting with the given set of validators. - pub fn note_new_block(&mut self, validators: &[AccountId]) { - use std::collections::HashSet; - - let set: HashSet<_> = validators.iter().cloned().collect(); - self.observed.retain(|k, _| set.contains(k)); - - self.block_instant = Instant::now(); - } - - /// Note that a round has ended. - pub fn note_round_end(&mut self, validator: AccountId, was_online: bool) { - self.observed.entry(validator).or_insert_with(Observed::new); - for (val, obs) in self.observed.iter_mut() { - obs.note_round_end( - self.block_instant, - if val == &validator { - Some(was_online) - } else { - None - } - ) - } - } - - /// Generate a vector of indices for offline account IDs. - pub fn reports(&self, validators: &[AccountId]) -> Vec { - validators.iter() - .enumerate() - .filter_map(|(i, v)| if self.is_known_offline_now(v) { - Some(i as u32) - } else { - None - }) - .collect() - } - - /// Whether reports on a validator set are consistent with our view of things. - pub fn check_consistency(&self, validators: &[AccountId], reports: &[u32]) -> bool { - reports.iter().cloned().all(|r| { - let v = match validators.get(r as usize) { - Some(v) => v, - None => return false, - }; - - // we must think all validators reported externally are offline. - self.is_known_offline_now(v) - }) - } - - /// Rwturns true only if we have seen the validator miss the last round. For further - /// rounds where we can't say for sure that they're still offline, we give them the - /// benefit of the doubt. - fn is_known_offline_now(&self, v: &AccountId) -> bool { - self.observed.get(v).map(|o| o.activity() == Activity::Offline).unwrap_or(false) - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn validator_offline() { - let mut tracker = OfflineTracker::new(); - let v = [0; 32].into(); - let v2 = [1; 32].into(); - let v3 = [2; 32].into(); - tracker.note_new_block(&[v, v2, v3]); - tracker.note_round_end(v, true); - tracker.note_round_end(v2, true); - tracker.note_round_end(v3, true); - assert_eq!(tracker.reports(&[v, v2, v3]), vec![0u32; 0]); - - tracker.note_new_block(&[v, v2, v3]); - tracker.note_round_end(v, true); - tracker.note_round_end(v2, false); - tracker.note_round_end(v3, true); - assert_eq!(tracker.reports(&[v, v2, v3]), vec![1]); - - tracker.note_new_block(&[v, v2, v3]); - tracker.note_round_end(v, false); - assert_eq!(tracker.reports(&[v, v2, v3]), vec![0]); - - tracker.note_new_block(&[v, v2, v3]); - tracker.note_round_end(v, false); - tracker.note_round_end(v2, true); - tracker.note_round_end(v3, false); - assert_eq!(tracker.reports(&[v, v2, v3]), vec![0, 2]); - - tracker.note_new_block(&[v, v2]); - tracker.note_round_end(v, false); - assert_eq!(tracker.reports(&[v, v2, v3]), vec![0]); - } -} diff --git a/consensus/src/service.rs b/consensus/src/service.rs index 163ef4501b3d..a4ad40a80afd 100644 --- a/consensus/src/service.rs +++ b/consensus/src/service.rs @@ -27,47 +27,23 @@ use std::thread; use std::time::{Duration, Instant}; use std::sync::Arc; -use bft::{self, BftService}; use client::{BlockchainEvents, ChainHead, BlockBody}; +use client::block_builder::api::BlockBuilder; +use client::blockchain::HeaderBackend; +use client::runtime_api::Core; use primitives::ed25519; use futures::prelude::*; -use polkadot_api::LocalPolkadotApi; -use polkadot_primitives::{Block, Header}; -use transaction_pool::TransactionPool; +use polkadot_primitives::{Block, BlockId}; +use polkadot_primitives::parachain::ParachainHost; use extrinsic_store::Store as ExtrinsicStore; +use runtime_primitives::traits::ProvideRuntimeApi; +use transaction_pool::txpool::{ChainApi as PoolChainApi, Pool}; -use tokio::executor::current_thread::TaskExecutor as LocalThreadHandle; use tokio::runtime::TaskExecutor as ThreadPoolHandle; use tokio::runtime::current_thread::Runtime as LocalRuntime; use tokio::timer::Interval; use super::{Network, Collators, ProposerFactory}; -use error; - -const TIMER_DELAY_MS: u64 = 5000; -const TIMER_INTERVAL_MS: u64 = 500; - -// spin up an instance of BFT agreement on the current thread's executor. -// panics if there is no current thread executor. -fn start_bft( - header: Header, - bft_service: Arc>, -) where - F: bft::Environment + 'static, - C: bft::BlockImport + bft::Authorities + 'static, - F::Error: ::std::fmt::Debug, - >::Error: ::std::fmt::Display + Into, - >::Error: ::std::fmt::Display -{ - let mut handle = LocalThreadHandle::current(); - match bft_service.build_upon(&header) { - Ok(Some(bft_work)) => if let Err(e) = handle.spawn_local(Box::new(bft_work)) { - warn!(target: "bft", "Couldn't initialize BFT agreement: {:?}", e); - } - Ok(None) => trace!(target: "bft", "Could not start agreement on top of {}", header.hash()), - Err(e) => warn!(target: "bft", "BFT agreement error: {}", e), - } -} // creates a task to prune redundant entries in availability store upon block finalization // @@ -79,13 +55,11 @@ fn prune_unneeded_availability(client: Arc, extrinsic_store: ExtrinsicStor { use codec::{Encode, Decode}; use polkadot_primitives::BlockId; - use polkadot_runtime::CheckedBlock; enum NotifyError { NoBody, BodyFetch(::client::error::Error), UnexpectedFormat, - ExtrinsicsWrong, } impl NotifyError { @@ -94,31 +68,43 @@ fn prune_unneeded_availability(client: Arc, extrinsic_store: ExtrinsicStor NotifyError::NoBody => warn!("No block body for imported block {:?}", hash), NotifyError::BodyFetch(ref err) => warn!("Failed to fetch block body for imported block {:?}: {:?}", hash, err), NotifyError::UnexpectedFormat => warn!("Consensus outdated: Block {:?} has unexpected body format", hash), - NotifyError::ExtrinsicsWrong => warn!("Consensus outdated: Extrinsics cannot be decoded for {:?}", hash), } } } - client.import_notification_stream() + client.finality_notification_stream() .for_each(move |notification| { + use polkadot_runtime::{Call, ParachainsCall}; + let hash = notification.hash; let parent_hash = notification.header.parent_hash; - let checked_block = client.block_body(&BlockId::hash(hash)) + let runtime_block = client.block_body(&BlockId::hash(hash)) .map_err(NotifyError::BodyFetch) .and_then(|maybe_body| maybe_body.ok_or(NotifyError::NoBody)) .map(|extrinsics| Block { header: notification.header, extrinsics }) .map(|b: Block| ::polkadot_runtime::Block::decode(&mut b.encode().as_slice())) - .and_then(|maybe_block| maybe_block.ok_or(NotifyError::UnexpectedFormat)) - .and_then(|block| CheckedBlock::new(block).map_err(|_| NotifyError::ExtrinsicsWrong)); - - match checked_block { - Ok(block) => { - let candidate_hashes = block.parachain_heads().iter().map(|c| c.hash()).collect(); - if let Err(e) = extrinsic_store.candidates_finalized(parent_hash, candidate_hashes) { - warn!(target: "consensus", "Failed to prune unneeded available data: {:?}", e); - } - } - Err(e) => e.log(&hash) + .and_then(|maybe_block| maybe_block.ok_or(NotifyError::UnexpectedFormat)); + + let runtime_block = match runtime_block { + Ok(r) => r, + Err(e) => { e.log(&hash); return Ok(()) } + }; + + let candidate_hashes = match runtime_block.extrinsics + .iter() + .filter_map(|ex| match ex.function { + Call::Parachains(ParachainsCall::set_heads(ref heads)) => + Some(heads.iter().map(|c| c.hash()).collect()), + _ => None, + }) + .next() + { + Some(x) => x, + None => return Ok(()), + }; + + if let Err(e) = extrinsic_store.candidates_finalized(parent_hash, candidate_hashes) { + warn!(target: "consensus", "Failed to prune unneeded available data: {:?}", e); } Ok(()) @@ -133,90 +119,102 @@ pub struct Service { impl Service { /// Create and start a new instance. - pub fn new( + pub fn new( client: Arc, - api: Arc, network: N, - transaction_pool: Arc>, + transaction_pool: Arc>, thread_pool: ThreadPoolHandle, parachain_empty_duration: Duration, key: ed25519::Pair, extrinsic_store: ExtrinsicStore, ) -> Service where - A: LocalPolkadotApi + Send + Sync + 'static, C: BlockchainEvents + ChainHead + BlockBody, - C: bft::BlockImport + bft::Authorities + Send + Sync + 'static, - N: Network + Collators + Send + 'static, + C: ProvideRuntimeApi + HeaderBackend + Send + Sync + 'static, + C::Api: ParachainHost + Core + BlockBuilder, + N: Network + Collators + Send + Sync + 'static, N::TableRouter: Send + 'static, ::Future: Send + 'static, + TxApi: PoolChainApi + Send + 'static, { - use parking_lot::RwLock; - use super::OfflineTracker; + use parking_lot::Mutex; + use std::collections::HashMap; + + const TIMER_DELAY: Duration = Duration::from_secs(5); + const TIMER_INTERVAL: Duration = Duration::from_secs(30); let (signal, exit) = ::exit_future::signal(); let thread = thread::spawn(move || { let mut runtime = LocalRuntime::new().expect("Could not create local runtime"); let key = Arc::new(key); - let factory = ProposerFactory { - client: api.clone(), - transaction_pool: transaction_pool.clone(), + let parachain_consensus = Arc::new(::ParachainConsensus{ + client: client.clone(), + network: network.clone(), collators: network.clone(), - network, - parachain_empty_duration, handle: thread_pool.clone(), extrinsic_store: extrinsic_store.clone(), - offline: Arc::new(RwLock::new(OfflineTracker::new())), - }; - let bft_service = Arc::new(BftService::new(client.clone(), key, factory)); + parachain_empty_duration, + live_instances: Mutex::new(HashMap::new()), + }); + + let factory = ProposerFactory::new( + parachain_consensus.clone(), + transaction_pool + ); let notifications = { let client = client.clone(); - let bft_service = bft_service.clone(); + let consensus = parachain_consensus.clone(); + let key = key.clone(); client.import_notification_stream().for_each(move |notification| { + let parent_hash = notification.hash; if notification.is_new_best { - trace!(target: "bft", "Attempting to start new consensus round after import notification of {:?}", notification.hash); - start_bft(notification.header, bft_service.clone()); + let res = client + .runtime_api() + .authorities(&BlockId::hash(parent_hash)) + .map_err(Into::into) + .and_then(|authorities| { + consensus.get_or_instantiate( + parent_hash, + &authorities, + key.clone(), + ) + }); + + if let Err(e) = res { + warn!("Unable to start parachain consensus on top of {:?}: {}", + parent_hash, e); + } } Ok(()) }) }; - let interval = Interval::new( - Instant::now() + Duration::from_millis(TIMER_DELAY_MS), - Duration::from_millis(TIMER_INTERVAL_MS), - ); - - let mut prev_best = match client.best_block_header() { - Ok(header) => header.hash(), - Err(e) => { - warn!("Can't start consensus service. Error reading best block header: {:?}", e); - return; - } - }; - - let timed = { - let c = client.clone(); - let s = bft_service.clone(); - - interval.map_err(|e| debug!(target: "bft", "Timer error: {:?}", e)).for_each(move |_| { - if let Ok(best_block) = c.best_block_header() { - let hash = best_block.hash(); - - if hash == prev_best { - debug!(target: "bft", "Starting consensus round after a timeout"); - start_bft(best_block, s.clone()); + let prune_old_sessions = { + let client = client.clone(); + let interval = Interval::new( + Instant::now() + TIMER_DELAY, + TIMER_INTERVAL, + ); + + interval + .for_each(move |_| match client.leaves() { + Ok(leaves) => { + parachain_consensus.retain(|h| leaves.contains(h)); + Ok(()) } - prev_best = hash; - } - Ok(()) - }) + Err(e) => { + warn!("Error fetching leaves from client: {:?}", e); + Ok(()) + } + }) + .map_err(|e| warn!("Timer error {:?}", e)) }; runtime.spawn(notifications); - runtime.spawn(timed); + thread_pool.spawn(prune_old_sessions); let prune_available = prune_unneeded_availability(client, extrinsic_store) .select(exit.clone()) diff --git a/consensus/src/shared_table/mod.rs b/consensus/src/shared_table/mod.rs index a6122baaa985..7c0914ecf95b 100644 --- a/consensus/src/shared_table/mod.rs +++ b/consensus/src/shared_table/mod.rs @@ -449,6 +449,11 @@ impl SharedTable { f(inner.table.proposed_candidates(&*self.context)) } + /// Get the number of total parachains. + pub fn num_parachains(&self) -> usize { + self.group_info().len() + } + /// Get the number of parachains which have available candidates. pub fn includable_count(&self) -> usize { self.inner.lock().table.includable_count() diff --git a/executor/src/lib.rs b/executor/src/lib.rs index f8fc6a238b6b..c5338493ddb4 100644 --- a/executor/src/lib.rs +++ b/executor/src/lib.rs @@ -21,4 +21,9 @@ extern crate polkadot_runtime; #[macro_use] extern crate substrate_executor; extern crate substrate_primitives as primitives; -native_executor_instance!(pub Executor, polkadot_runtime::api::dispatch, polkadot_runtime::VERSION, include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm")); +native_executor_instance!( + pub Executor, + polkadot_runtime::api::dispatch, + polkadot_runtime::native_version, + include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm") +); diff --git a/network/Cargo.toml b/network/Cargo.toml index b1e2333218f9..df3b413a5edc 100644 --- a/network/Cargo.toml +++ b/network/Cargo.toml @@ -6,15 +6,14 @@ description = "Polkadot-specific networking protocol" [dependencies] parking_lot = "0.4" -polkadot-api = { path = "../api" } polkadot-availability-store = { path = "../availability-store" } polkadot-consensus = { path = "../consensus" } polkadot-primitives = { path = "../primitives" } -substrate-bft = { git = "https://github.com/paritytech/substrate" } -parity-codec = { git = "https://github.com/paritytech/substrate" } -parity-codec-derive = { git = "https://github.com/paritytech/substrate" } +parity-codec = "2.1" +parity-codec-derive = "2.1" substrate-network = { git = "https://github.com/paritytech/substrate" } substrate-primitives = { git = "https://github.com/paritytech/substrate" } +sr-primitives = { git = "https://github.com/paritytech/substrate" } futures = "0.1" tokio = "0.1.7" log = "0.4" diff --git a/network/src/consensus.rs b/network/src/consensus.rs index 4836051a2d83..0ff324c72dc0 100644 --- a/network/src/consensus.rs +++ b/network/src/consensus.rs @@ -15,17 +15,15 @@ // along with Polkadot. If not, see . //! The "consensus" networking code built on top of the base network service. +//! //! This fulfills the `polkadot_consensus::Network` trait, providing a hook to be called //! each time consensus begins on a new chain head. -use bft; -use substrate_primitives::ed25519; -use substrate_network::{self as net, generic_message as msg}; +use sr_primitives::traits::ProvideRuntimeApi; use substrate_network::consensus_gossip::ConsensusMessage; -use polkadot_api::{PolkadotApi, LocalPolkadotApi}; use polkadot_consensus::{Network, SharedTable, Collators}; use polkadot_primitives::{AccountId, Block, Hash, SessionKey}; -use polkadot_primitives::parachain::{Id as ParaId, Collation}; +use polkadot_primitives::parachain::{Id as ParaId, Collation, ParachainHost}; use codec::Decode; use futures::prelude::*; @@ -36,152 +34,32 @@ use std::sync::Arc; use tokio::runtime::TaskExecutor; use parking_lot::Mutex; -use super::{Message, NetworkService, Knowledge, CurrentConsensus}; +use super::{NetworkService, Knowledge, CurrentConsensus}; use router::Router; -/// Sink for output BFT messages. -pub struct BftSink { - network: Arc, - parent_hash: Hash, - _marker: ::std::marker::PhantomData, -} - -impl Sink for BftSink { - type SinkItem = bft::Communication; - // TODO: replace this with the ! type when that's stabilized - type SinkError = E; - - fn start_send(&mut self, message: bft::Communication) -> ::futures::StartSend, E> { - let network_message = net::LocalizedBftMessage { - message: match message { - ::rhododendron::Communication::Consensus(c) => msg::BftMessage::Consensus(match c { - ::rhododendron::LocalizedMessage::Propose(proposal) => msg::SignedConsensusMessage::Propose(msg::SignedConsensusProposal { - round_number: proposal.round_number as u32, - proposal: proposal.proposal, - digest: proposal.digest, - sender: proposal.sender, - digest_signature: proposal.digest_signature.signature, - full_signature: proposal.full_signature.signature, - }), - ::rhododendron::LocalizedMessage::Vote(vote) => msg::SignedConsensusMessage::Vote(msg::SignedConsensusVote { - sender: vote.sender, - signature: vote.signature.signature, - vote: match vote.vote { - ::rhododendron::Vote::Prepare(r, h) => msg::ConsensusVote::Prepare(r as u32, h), - ::rhododendron::Vote::Commit(r, h) => msg::ConsensusVote::Commit(r as u32, h), - ::rhododendron::Vote::AdvanceRound(r) => msg::ConsensusVote::AdvanceRound(r as u32), - } - }), - }), - ::rhododendron::Communication::Auxiliary(justification) => { - let unchecked: bft::UncheckedJustification<_> = justification.uncheck().into(); - msg::BftMessage::Auxiliary(unchecked.into()) - } - }, - parent_hash: self.parent_hash, - }; - self.network.with_spec( - move |spec, ctx| spec.consensus_gossip.multicast_bft_message(ctx, network_message) - ); - Ok(::futures::AsyncSink::Ready) - } - - fn poll_complete(&mut self) -> ::futures::Poll<(), E> { - Ok(Async::Ready(())) - } -} - -// check signature and authority validity of message. -fn process_bft_message(msg: msg::LocalizedBftMessage, local_id: &SessionKey, authorities: &[SessionKey]) -> Result>, bft::Error> { - Ok(Some(match msg.message { - msg::BftMessage::Consensus(c) => ::rhododendron::Communication::Consensus(match c { - msg::SignedConsensusMessage::Propose(proposal) => ::rhododendron::LocalizedMessage::Propose({ - if &proposal.sender == local_id { return Ok(None) } - let proposal = ::rhododendron::LocalizedProposal { - round_number: proposal.round_number as usize, - proposal: proposal.proposal, - digest: proposal.digest, - sender: proposal.sender, - digest_signature: ed25519::LocalizedSignature { - signature: proposal.digest_signature, - signer: ed25519::Public(proposal.sender.into()), - }, - full_signature: ed25519::LocalizedSignature { - signature: proposal.full_signature, - signer: ed25519::Public(proposal.sender.into()), - } - }; - bft::check_proposal(authorities, &msg.parent_hash, &proposal)?; - - trace!(target: "bft", "importing proposal message for round {} from {}", proposal.round_number, Hash::from(proposal.sender.0)); - proposal - }), - msg::SignedConsensusMessage::Vote(vote) => ::rhododendron::LocalizedMessage::Vote({ - if &vote.sender == local_id { return Ok(None) } - let vote = ::rhododendron::LocalizedVote { - sender: vote.sender, - signature: ed25519::LocalizedSignature { - signature: vote.signature, - signer: ed25519::Public(vote.sender.0), - }, - vote: match vote.vote { - msg::ConsensusVote::Prepare(r, h) => ::rhododendron::Vote::Prepare(r as usize, h), - msg::ConsensusVote::Commit(r, h) => ::rhododendron::Vote::Commit(r as usize, h), - msg::ConsensusVote::AdvanceRound(r) => ::rhododendron::Vote::AdvanceRound(r as usize), - } - }; - bft::check_vote::(authorities, &msg.parent_hash, &vote)?; - - trace!(target: "bft", "importing vote {:?} from {}", vote.vote, Hash::from(vote.sender.0)); - vote - }), - }), - msg::BftMessage::Auxiliary(a) => { - let justification = bft::UncheckedJustification::from(a); - // TODO: get proper error - let justification: Result<_, bft::Error> = bft::check_prepare_justification::(authorities, msg.parent_hash, justification) - .map_err(|_| bft::ErrorKind::InvalidJustification.into()); - ::rhododendron::Communication::Auxiliary(justification?) - }, - })) -} - // task that processes all gossipped consensus messages, // checking signatures -struct MessageProcessTask { - inner_stream: mpsc::UnboundedReceiver>, - bft_messages: mpsc::UnboundedSender>, - validators: Vec, +struct MessageProcessTask

{ + inner_stream: mpsc::UnboundedReceiver, + parent_hash: Hash, table_router: Router

, } -impl MessageProcessTask

{ - fn process_message(&self, msg: ConsensusMessage) -> Option> { - match msg { - ConsensusMessage::Bft(msg) => { - let local_id = self.table_router.session_key(); - match process_bft_message(msg, &local_id, &self.validators[..]) { - Ok(Some(msg)) => { - if let Err(_) = self.bft_messages.unbounded_send(msg) { - // if the BFT receiving stream has ended then - // we should just bail. - trace!(target: "bft", "BFT message stream appears to have closed"); - return Some(Async::Ready(())); - } - } - Ok(None) => {} // ignored local message - Err(e) => { - debug!("Message validation failed: {:?}", e); - } - } - } - ConsensusMessage::ChainSpecific(msg, _) => { - debug!(target: "consensus", "Processing consensus statement for live consensus"); - if let Some(Message::Statement(parent_hash, statement)) = Decode::decode(&mut msg.as_slice()) { - if ::polkadot_consensus::check_statement(&statement.statement, &statement.signature, statement.sender, &parent_hash) { - self.table_router.import_statement(statement); - } - } +impl MessageProcessTask

+ where P::Api: ParachainHost, +{ + fn process_message(&self, msg: ConsensusMessage) -> Option> { + use polkadot_consensus::SignedStatement; + + debug!(target: "consensus", "Processing consensus statement for live consensus"); + if let Some(statement) = SignedStatement::decode(&mut msg.as_slice()) { + if ::polkadot_consensus::check_statement( + &statement.statement, + &statement.signature, + statement.sender, + &self.parent_hash + ) { + self.table_router.import_statement(statement); } } @@ -189,7 +67,9 @@ impl MessageProcessTask

{ } } -impl Future for MessageProcessTask

{ +impl Future for MessageProcessTask

+ where P::Api: ParachainHost, +{ type Item = (); type Error = (); @@ -207,23 +87,6 @@ impl Future for MessageProcessTask< } } -/// Input stream from the consensus network. -pub struct InputAdapter { - input: mpsc::UnboundedReceiver>, -} - -impl Stream for InputAdapter { - type Item = bft::Communication; - type Error = ::polkadot_consensus::Error; - - fn poll(&mut self) -> Poll, Self::Error> { - match self.input.poll() { - Err(_) | Ok(Async::Ready(None)) => Err(bft::InputStreamConcluded.into()), - Ok(x) => Ok(x) - } - } -} - /// Wrapper around the network service pub struct ConsensusNetwork

{ network: Arc, @@ -246,27 +109,21 @@ impl

Clone for ConsensusNetwork

{ } } -/// A long-lived network which can create parachain statement and BFT message routing processes on demand. -impl Network for ConsensusNetwork

{ +/// A long-lived network which can create parachain statement routing processes on demand. +impl Network for ConsensusNetwork

+ where P::Api: ParachainHost, +{ type TableRouter = Router

; - /// The input stream of BFT messages. Should never logically conclude. - type Input = InputAdapter; - /// The output sink of BFT messages. Messages sent here should eventually pass to all - /// current validators. - type Output = BftSink<::polkadot_consensus::Error>; /// Instantiate a table router using the given shared table. - fn communication_for(&self, validators: &[SessionKey], table: Arc, task_executor: TaskExecutor) -> (Self::TableRouter, Self::Input, Self::Output) { + fn communication_for( + &self, + _validators: &[SessionKey], + table: Arc, + task_executor: TaskExecutor + ) -> Self::TableRouter { let parent_hash = table.consensus_parent_hash().clone(); - let sink = BftSink { - network: self.network.clone(), - parent_hash, - _marker: Default::default(), - }; - - let (bft_send, bft_recv) = mpsc::unbounded(); - let knowledge = Arc::new(Mutex::new(Knowledge::new())); let local_session_key = table.session_key(); @@ -279,9 +136,12 @@ impl Network for ConsensusNetwork

Network for ConsensusNetwork

task_executor.spawn(task), - None => warn!(target: "p_net", "Cannot process incoming messages: network appears to be down"), - } - - (table_router, InputAdapter { input: bft_recv }, sink) + table_router } } @@ -310,23 +164,21 @@ impl Network for ConsensusNetwork

>); +pub struct AwaitingCollation(::futures::sync::oneshot::Receiver); impl Future for AwaitingCollation { type Item = Collation; type Error = NetworkDown; fn poll(&mut self) -> Poll { - match self.0.poll().map_err(|_| NetworkDown)? { - Async::Ready(None) => Err(NetworkDown), - Async::Ready(Some(x)) => Ok(Async::Ready(x)), - Async::NotReady => Ok(Async::NotReady), - } + self.0.poll().map_err(|_| NetworkDown) } } -impl Collators for ConsensusNetwork

{ +impl Collators for ConsensusNetwork

+ where P::Api: ParachainHost, +{ type Error = NetworkDown; type Collation = AwaitingCollation; diff --git a/network/src/lib.rs b/network/src/lib.rs index 4f0ad2c6eda3..70ecfdf24f79 100644 --- a/network/src/lib.rs +++ b/network/src/lib.rs @@ -20,14 +20,13 @@ //! parachain block and extrinsic data fetching, communication between collators and validators, //! and more. -extern crate substrate_bft as bft; extern crate parity_codec as codec; extern crate substrate_network; extern crate substrate_primitives; +extern crate sr_primitives; -extern crate polkadot_api; -extern crate polkadot_availability_store as av_store; extern crate polkadot_consensus; +extern crate polkadot_availability_store as av_store; extern crate polkadot_primitives; extern crate futures; @@ -48,13 +47,12 @@ pub mod consensus; use codec::{Decode, Encode}; use futures::sync::oneshot; use parking_lot::Mutex; -use polkadot_consensus::{Statement, SignedStatement, GenericStatement}; +use polkadot_consensus::{Statement, GenericStatement}; use polkadot_primitives::{AccountId, Block, SessionKey, Hash, Header}; use polkadot_primitives::parachain::{Id as ParaId, BlockData, Extrinsic, CandidateReceipt, Collation}; use substrate_network::{NodeIndex, RequestId, Context, Severity}; -use substrate_network::consensus_gossip::ConsensusGossip; use substrate_network::{message, generic_message}; -use substrate_network::specialization::Specialization; +use substrate_network::specialization::NetworkSpecialization as Specialization; use substrate_network::StatusMessage as GenericFullStatus; use self::collator_pool::{CollatorPool, Role, Action}; use self::local_collations::LocalCollations; @@ -185,8 +183,6 @@ impl CurrentConsensus { /// Polkadot-specific messages. #[derive(Debug, Encode, Decode)] pub enum Message { - /// signed statement and localized parent hash. - Statement(Hash, SignedStatement), /// As a validator, tell the peer your current session key. // TODO: do this with a cryptographic proof of some kind SessionKey(SessionKey), @@ -210,7 +206,6 @@ fn send_polkadot_message(ctx: &mut Context, to: NodeIndex, message: Messa pub struct PolkadotProtocol { peers: HashMap, collating_for: Option<(AccountId, ParaId)>, - consensus_gossip: ConsensusGossip, collators: CollatorPool, validators: HashMap, local_collations: LocalCollations, @@ -226,7 +221,6 @@ impl PolkadotProtocol { pub fn new(collating_for: Option<(AccountId, ParaId)>) -> Self { PolkadotProtocol { peers: HashMap::new(), - consensus_gossip: ConsensusGossip::new(), collators: CollatorPool::new(), collating_for, validators: HashMap::new(), @@ -239,13 +233,6 @@ impl PolkadotProtocol { } } - /// Gossip a consensus statement. - fn gossip_statement(&mut self, ctx: &mut Context, parent_hash: Hash, statement: SignedStatement) { - // TODO: something more targeted than gossip. - let raw = Message::Statement(parent_hash, statement).encode(); - self.consensus_gossip.multicast_chain_specific(ctx, raw, parent_hash); - } - /// Fetch block data by candidate receipt. fn fetch_block_data(&mut self, ctx: &mut Context, candidate: &CandidateReceipt, relay_parent: Hash) -> oneshot::Receiver { let (tx, rx) = oneshot::channel(); @@ -279,7 +266,6 @@ impl PolkadotProtocol { } self.live_consensus = Some(consensus); - self.consensus_gossip.collect_garbage(old_data.as_ref().map(|&(ref hash, _)| hash)); } fn dispatch_pending_requests(&mut self, ctx: &mut Context) { @@ -332,11 +318,9 @@ impl PolkadotProtocol { self.pending = new_pending; } - fn on_polkadot_message(&mut self, ctx: &mut Context, who: NodeIndex, raw: Vec, msg: Message) { + fn on_polkadot_message(&mut self, ctx: &mut Context, who: NodeIndex, msg: Message) { trace!(target: "p_net", "Polkadot message from {}: {:?}", who, msg); match msg { - Message::Statement(parent_hash, _statement) => - self.consensus_gossip.on_chain_specific(ctx, who, raw, parent_hash), Message::SessionKey(key) => self.on_session_key(ctx, who, key), Message::RequestBlockData(req_id, relay_parent, candidate_hash) => { let block_data = self.live_consensus.as_ref() @@ -445,7 +429,7 @@ impl Specialization for PolkadotProtocol { } }; - let validator = status.roles.contains(substrate_network::Roles::AUTHORITY); + let validator = status.roles.contains(substrate_network::config::Roles::AUTHORITY); let send_key = validator || local_status.collating_for.is_some(); let mut peer_info = PeerInfo { @@ -479,7 +463,6 @@ impl Specialization for PolkadotProtocol { } self.peers.insert(who, peer_info); - self.consensus_gossip.new_peer(ctx, who, status.roles); self.dispatch_pending_requests(ctx); } @@ -521,37 +504,30 @@ impl Specialization for PolkadotProtocol { retain }); } - self.consensus_gossip.peer_disconnected(ctx, who); self.dispatch_pending_requests(ctx); } } - fn on_message(&mut self, ctx: &mut Context, who: NodeIndex, message: message::Message) { - match message { - generic_message::Message::BftMessage(msg) => { - trace!(target: "p_net", "Polkadot BFT message from {}: {:?}", who, msg); - // TODO: check signature here? what if relevant block is unknown? - self.consensus_gossip.on_bft_message(ctx, who, msg) - } - generic_message::Message::ChainSpecific(raw) => { + fn on_message(&mut self, ctx: &mut Context, who: NodeIndex, message: &mut Option>) { + match message.take() { + Some(generic_message::Message::ChainSpecific(raw)) => { match Message::decode(&mut raw.as_slice()) { - Some(msg) => self.on_polkadot_message(ctx, who, raw, msg), + Some(msg) => self.on_polkadot_message(ctx, who, msg), None => { trace!(target: "p_net", "Bad message from {}", who); ctx.report_peer(who, Severity::Bad("Invalid polkadot protocol message format")); + *message = Some(generic_message::Message::ChainSpecific(raw)); } } } + Some(other) => *message = Some(other), _ => {} } } - fn on_abort(&mut self) { - self.consensus_gossip.abort(); - } + fn on_abort(&mut self) { } fn maintain_peers(&mut self, ctx: &mut Context) { - self.consensus_gossip.collect_garbage(None); self.collators.collect_garbage(None); self.local_collations.collect_garbage(None); self.dispatch_pending_requests(ctx); diff --git a/network/src/router.rs b/network/src/router.rs index 79a50f42831a..4307c302fb73 100644 --- a/network/src/router.rs +++ b/network/src/router.rs @@ -22,11 +22,12 @@ //! the `TableRouter` trait from `polkadot-consensus`, which is expected to call into a shared statement table //! and dispatch evaluation work as necessary when new statements come in. -use polkadot_api::{PolkadotApi, LocalPolkadotApi}; +use sr_primitives::traits::{ProvideRuntimeApi, BlakeTwo256, Hash as HashT}; use polkadot_consensus::{SharedTable, TableRouter, SignedStatement, GenericStatement, StatementProducer}; -use polkadot_primitives::{Hash, BlockId, SessionKey}; -use polkadot_primitives::parachain::{BlockData, Extrinsic, CandidateReceipt}; +use polkadot_primitives::{Block, Hash, BlockId, SessionKey}; +use polkadot_primitives::parachain::{BlockData, Extrinsic, CandidateReceipt, ParachainHost}; +use codec::Encode; use futures::prelude::*; use tokio::runtime::TaskExecutor; use parking_lot::Mutex; @@ -37,18 +38,26 @@ use std::sync::Arc; use super::{NetworkService, Knowledge}; +fn attestation_topic(parent_hash: Hash) -> Hash { + let mut v = parent_hash.as_ref().to_vec(); + v.extend(b"attestations"); + + BlakeTwo256::hash(&v[..]) +} + /// Table routing implementation. -pub struct Router { +pub struct Router

{ table: Arc, network: Arc, api: Arc

, task_executor: TaskExecutor, parent_hash: Hash, + attestation_topic: Hash, knowledge: Arc>, deferred_statements: Arc>, } -impl Router

{ +impl

Router

{ pub(crate) fn new( table: Arc, network: Arc, @@ -63,17 +72,19 @@ impl Router

{ api, task_executor, parent_hash, + attestation_topic: attestation_topic(parent_hash), knowledge, deferred_statements: Arc::new(Mutex::new(DeferredStatements::new())), } } - pub(crate) fn session_key(&self) -> SessionKey { - self.table.session_key() + /// Get the attestation topic for gossip. + pub(crate) fn gossip_topic(&self) -> Hash { + self.attestation_topic } } -impl Clone for Router

{ +impl

Clone for Router

{ fn clone(&self) -> Self { Router { table: self.table.clone(), @@ -81,13 +92,16 @@ impl Clone for Router

{ api: self.api.clone(), task_executor: self.task_executor.clone(), parent_hash: self.parent_hash.clone(), + attestation_topic: self.attestation_topic.clone(), deferred_statements: self.deferred_statements.clone(), knowledge: self.knowledge.clone(), } } } -impl Router

{ +impl Router

+ where P::Api: ParachainHost +{ /// Import a statement whose signature has been checked already. pub(crate) fn import_statement(&self, statement: SignedStatement) { trace!(target: "p_net", "importing consensus statement {:?}", statement.statement); @@ -156,6 +170,7 @@ impl Router

{ let table = self.table.clone(); let network = self.network.clone(); let knowledge = self.knowledge.clone(); + let attestation_topic = self.attestation_topic.clone(); let work = producer.prime(validate) .map(move |produced| { @@ -166,15 +181,26 @@ impl Router

{ produced.extrinsic ); + if produced.validity.is_none() && produced.availability.is_none() { + return + } + + let mut gossip = network.consensus_gossip().write(); + // propagate the statements + // consider something more targeted than gossip in the future. if let Some(validity) = produced.validity { let signed = table.sign_and_import(validity.clone()).0; - network.with_spec(|spec, ctx| spec.gossip_statement(ctx, parent_hash, signed)); + network.with_spec(|_, ctx| + gossip.multicast(ctx, attestation_topic, signed.encode()) + ); } if let Some(availability) = produced.availability { let signed = table.sign_and_import(availability).0; - network.with_spec(|spec, ctx| spec.gossip_statement(ctx, parent_hash, signed)); + network.with_spec(|_, ctx| + gossip.multicast(ctx, attestation_topic, signed.encode()) + ); } }) .map_err(|e| debug!(target: "p_net", "Failed to produce statements: {:?}", e)); @@ -183,7 +209,9 @@ impl Router

{ } } -impl TableRouter for Router

{ +impl TableRouter for Router

+ where P::Api: ParachainHost +{ type Error = io::Error; type FetchCandidate = BlockDataReceiver; type FetchExtrinsic = Result; @@ -194,10 +222,11 @@ impl TableRouter for Router

{ let (candidate, availability) = self.table.sign_and_import(GenericStatement::Candidate(receipt)); self.knowledge.lock().note_candidate(hash, Some(block_data), Some(extrinsic)); - self.network.with_spec(|spec, ctx| { - spec.gossip_statement(ctx, self.parent_hash, candidate); + let mut gossip = self.network.consensus_gossip().write(); + self.network.with_spec(|_spec, ctx| { + gossip.multicast(ctx, self.attestation_topic, candidate.encode()); if let Some(availability) = availability { - spec.gossip_statement(ctx, self.parent_hash, availability); + gossip.multicast(ctx, self.attestation_topic, availability.encode()); } }); } @@ -215,7 +244,7 @@ impl TableRouter for Router

{ /// Receiver for block data. pub struct BlockDataReceiver { - inner: Option<::futures::sync::oneshot::Receiver>, + inner: ::futures::sync::oneshot::Receiver, } impl Future for BlockDataReceiver { @@ -223,16 +252,10 @@ impl Future for BlockDataReceiver { type Error = io::Error; fn poll(&mut self) -> Poll { - match self.inner { - Some(ref mut inner) => inner.poll().map_err(|_| io::Error::new( - io::ErrorKind::Other, - "Sending end of channel hung up", - )), - None => return Err(io::Error::new( - io::ErrorKind::Other, - "Network service is unavailable", - )), - } + self.inner.poll().map_err(|_| io::Error::new( + io::ErrorKind::Other, + "Sending end of channel hung up", + )) } } @@ -303,7 +326,7 @@ mod tests { fn deferred_statements_works() { let mut deferred = DeferredStatements::new(); let hash = [1; 32].into(); - let sig = H512([2; 64]).into(); + let sig = H512::from([2; 64]).into(); let sender = [255; 32].into(); let statement = SignedStatement { diff --git a/network/src/tests.rs b/network/src/tests.rs index f5ad78dae909..263a931b9e70 100644 --- a/network/src/tests.rs +++ b/network/src/tests.rs @@ -24,7 +24,11 @@ use polkadot_primitives::{Block, Hash, SessionKey}; use polkadot_primitives::parachain::{CandidateReceipt, HeadData, BlockData}; use substrate_primitives::H512; use codec::Encode; -use substrate_network::{Severity, NodeIndex, PeerInfo, ClientHandle, Context, Roles, message::Message as SubstrateMessage, specialization::Specialization, generic_message::Message as GenericMessage}; +use substrate_network::{ + Severity, NodeIndex, PeerInfo, ClientHandle, Context, config::Roles, + message::Message as SubstrateMessage, specialization::NetworkSpecialization, + generic_message::Message as GenericMessage +}; use std::sync::Arc; use futures::Future; @@ -93,7 +97,7 @@ fn make_consensus(parent_hash: Hash, local_key: SessionKey) -> (CurrentConsensus fn on_message(protocol: &mut PolkadotProtocol, ctx: &mut TestContext, from: NodeIndex, message: Message) { let encoded = message.encode(); - protocol.on_message(ctx, from, GenericMessage::ChainSpecific(encoded)); + protocol.on_message(ctx, from, &mut Some(GenericMessage::ChainSpecific(encoded))); } #[test] diff --git a/parachain/Cargo.toml b/parachain/Cargo.toml index 4f841ce5f513..a3cd006173b4 100644 --- a/parachain/Cargo.toml +++ b/parachain/Cargo.toml @@ -5,8 +5,8 @@ authors = ["Parity Technologies "] description = "Types and utilities for creating and working with parachains" [dependencies] -parity-codec = { git = "https://github.com/paritytech/substrate", default-features = false } -parity-codec-derive = { git = "https://github.com/paritytech/substrate", default-features = false } +parity-codec = { version = "2.1", default-features = false } +parity-codec-derive = { version = "2.1", default-features = false } wasmi = { version = "0.4", optional = true } error-chain = { version = "0.12", optional = true } diff --git a/parachain/tests/res/adder.wasm b/parachain/tests/res/adder.wasm index 77d5b37e7297..dd48b0d91687 100644 Binary files a/parachain/tests/res/adder.wasm and b/parachain/tests/res/adder.wasm differ diff --git a/primitives/Cargo.toml b/primitives/Cargo.toml index f8e6407d7b9b..1d30e53fd4b8 100644 --- a/primitives/Cargo.toml +++ b/primitives/Cargo.toml @@ -4,13 +4,15 @@ version = "0.1.0" authors = ["Parity Technologies "] [dependencies] -serde = { version = "1.0", default_features = false } +serde = { version = "1.0", default-features = false } serde_derive = { version = "1.0", optional = true } -parity-codec = { git = "https://github.com/paritytech/substrate", default_features = false } -parity-codec-derive = { git = "https://github.com/paritytech/substrate", default_features = false } -substrate-primitives = { git = "https://github.com/paritytech/substrate", default_features = false } -sr-std = { git = "https://github.com/paritytech/substrate", default_features = false } -sr-primitives = { git = "https://github.com/paritytech/substrate", default_features = false } +parity-codec = { version = "2.1", default-features = false } +parity-codec-derive = { version = "2.1", default-features = false } +substrate-primitives = { git = "https://github.com/paritytech/substrate", default-features = false } +substrate-client = { git = "https://github.com/paritytech/substrate", default-features = false } +sr-version = { git = "https://github.com/paritytech/substrate", default-features = false } +sr-std = { git = "https://github.com/paritytech/substrate", default-features = false } +sr-primitives = { git = "https://github.com/paritytech/substrate", default-features = false } [dev-dependencies] substrate-serializer = { git = "https://github.com/paritytech/substrate" } @@ -20,8 +22,11 @@ pretty_assertions = "0.4" default = ["std"] std = [ "parity-codec/std", + "parity-codec-derive/std", "substrate-primitives/std", + "substrate-client/std", "sr-std/std", + "sr-version/std", "sr-primitives/std", "serde_derive", "serde/std", diff --git a/primitives/src/lib.rs b/primitives/src/lib.rs index a32a32b1e639..01acdc4564b5 100644 --- a/primitives/src/lib.rs +++ b/primitives/src/lib.rs @@ -25,6 +25,7 @@ extern crate parity_codec as codec; extern crate substrate_primitives as primitives; extern crate sr_primitives as runtime_primitives; extern crate sr_std as rstd; +extern crate sr_version; #[cfg(test)] extern crate substrate_serializer; @@ -39,10 +40,16 @@ extern crate serde_derive; #[cfg(feature = "std")] extern crate serde; +#[macro_use] +extern crate substrate_client; + use rstd::prelude::*; -use runtime_primitives::{generic, traits::BlakeTwo256}; +use runtime_primitives::{generic, traits::{Extrinsic, BlakeTwo256}}; + pub mod parachain; +pub use codec::Compact; + #[cfg(feature = "std")] use primitives::bytes; @@ -76,7 +83,7 @@ pub type Index = u32; pub type Signature = runtime_primitives::Ed25519Signature; /// A timestamp: seconds since the unix epoch. -pub type Timestamp = u64; +pub type Timestamp = Compact; /// The balance of an account. /// 128-bits (or 38 significant decimal figures) will allow for 10m currency (10^7) at a resolution @@ -88,7 +95,7 @@ pub type Timestamp = u64; pub type Balance = u128; /// Header type. -pub type Header = generic::Header>; +pub type Header = generic::Header>; /// Block type. pub type Block = generic::Block; /// Block ID. @@ -99,6 +106,8 @@ pub type BlockId = generic::BlockId; #[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))] pub struct UncheckedExtrinsic(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec); +impl Extrinsic for UncheckedExtrinsic {} + /// Inherent data to include in a block. #[derive(Encode, Decode)] pub struct InherentData { @@ -106,6 +115,4 @@ pub struct InherentData { pub timestamp: Timestamp, /// Parachain heads update. pub parachain_heads: Vec<::parachain::CandidateReceipt>, - /// Indices of offline validators. - pub offline_indices: Vec, -} \ No newline at end of file +} diff --git a/primitives/src/parachain.rs b/primitives/src/parachain.rs index 8ceec3f9fd5f..29fecaae7359 100644 --- a/primitives/src/parachain.rs +++ b/primitives/src/parachain.rs @@ -20,6 +20,8 @@ use rstd::prelude::*; use rstd::cmp::Ordering; use super::Hash; +use {AccountId}; + #[cfg(feature = "std")] use primitives::bytes; @@ -110,7 +112,7 @@ impl CandidateReceipt { pub fn check_signature(&self) -> Result<(), ()> { use runtime_primitives::traits::Verify; - if self.signature.verify(&self.block_data_hash.0[..], &self.collator) { + if self.signature.verify(self.block_data_hash.as_ref(), &self.collator) { Ok(()) } else { Err(()) @@ -205,3 +207,27 @@ pub enum Statement { /// Vote to advance round after inactive primary. Available(Hash), } + +decl_runtime_apis! { + /// The API for querying the state of parachains on-chain. + pub trait ParachainHost { + /// Get the current validators. + fn validators() -> Vec; + /// Get the current duty roster. + fn duty_roster() -> DutyRoster; + /// Get the currently active parachains. + fn active_parachains() -> Vec; + /// Get the given parachain's head data blob. + fn parachain_head(id: Id) -> Option>; + /// Get the given parachain's head code blob. + fn parachain_code(id: Id) -> Option>; + } +} + +/// Runtime ID module. +pub mod id { + use sr_version::ApiId; + + /// Parachain host runtime API id. + pub const PARACHAIN_HOST: ApiId = *b"parahost"; +} diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 2a5c21f5bb7b..241e7c4450df 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -6,18 +6,19 @@ authors = ["Parity Technologies "] [dependencies] rustc-hex = "1.0" log = { version = "0.3", optional = true } -serde = { version = "1.0", default_features = false } +serde = { version = "1.0", default-features = false } serde_derive = { version = "1.0", optional = true } -safe-mix = { version = "1.0", default_features = false} -polkadot-primitives = { path = "../primitives", default_features = false } -parity-codec = { git = "https://github.com/paritytech/substrate" } -parity-codec-derive = { git = "https://github.com/paritytech/substrate" } +safe-mix = { version = "1.0", default-features = false} +polkadot-primitives = { path = "../primitives", default-features = false } +parity-codec = "2.1" +parity-codec-derive = "2.1" substrate-serializer = { git = "https://github.com/paritytech/substrate" } sr-std = { git = "https://github.com/paritytech/substrate" } sr-io = { git = "https://github.com/paritytech/substrate" } srml-support = { git = "https://github.com/paritytech/substrate" } substrate-primitives = { git = "https://github.com/paritytech/substrate" } substrate-keyring = { git = "https://github.com/paritytech/substrate" } +substrate-client = { git = "https://github.com/paritytech/substrate" } srml-balances = { git = "https://github.com/paritytech/substrate" } srml-consensus = { git = "https://github.com/paritytech/substrate" } srml-council = { git = "https://github.com/paritytech/substrate" } diff --git a/runtime/src/checked_block.rs b/runtime/src/checked_block.rs deleted file mode 100644 index 8089b039fd63..000000000000 --- a/runtime/src/checked_block.rs +++ /dev/null @@ -1,118 +0,0 @@ -// Copyright 2017 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 . - -//! Typesafe block interaction. - -use super::{Call, Block, TIMESTAMP_SET_POSITION, PARACHAINS_SET_POSITION, NOTE_OFFLINE_POSITION}; -use timestamp::Call as TimestampCall; -use parachains::Call as ParachainsCall; -use consensus::Call as ConsensusCall; -use primitives::parachain::CandidateReceipt; - -/// Provides a type-safe wrapper around a structurally valid block. -pub struct CheckedBlock { - inner: Block, - file_line: Option<(&'static str, u32)>, -} - -impl CheckedBlock { - /// Create a new checked block. Fails if the block is not structurally valid. - pub fn new(block: Block) -> Result { - let has_timestamp = block.extrinsics.get(TIMESTAMP_SET_POSITION as usize).map_or(false, |xt| { - !xt.is_signed() && match xt.function { - Call::Timestamp(TimestampCall::set(_)) => true, - _ => false, - } - }); - - if !has_timestamp { return Err(block) } - - let has_heads = block.extrinsics.get(PARACHAINS_SET_POSITION as usize).map_or(false, |xt| { - !xt.is_signed() && match xt.function { - Call::Parachains(ParachainsCall::set_heads(_)) => true, - _ => false, - } - }); - - if !has_heads { return Err(block) } - - Ok(CheckedBlock { - inner: block, - file_line: None, - }) - } - - // Creates a new checked block, asserting that it is valid. - #[doc(hidden)] - pub fn new_unchecked(block: Block, file: &'static str, line: u32) -> Self { - CheckedBlock { - inner: block, - file_line: Some((file, line)), - } - } - - /// Extract the timestamp from the block. - pub fn timestamp(&self) -> ::primitives::Timestamp { - let x = self.inner.extrinsics.get(TIMESTAMP_SET_POSITION as usize).and_then(|xt| match xt.function { - Call::Timestamp(TimestampCall::set(x)) => Some(x), - _ => None - }); - - match x { - Some(x) => x, - None => panic!("Invalid polkadot block asserted at {:?}", self.file_line), - } - } - - /// Extract the parachain heads from the block. - pub fn parachain_heads(&self) -> &[CandidateReceipt] { - let x = self.inner.extrinsics.get(PARACHAINS_SET_POSITION as usize).and_then(|xt| match xt.function { - Call::Parachains(ParachainsCall::set_heads(ref x)) => Some(&x[..]), - _ => None - }); - - match x { - Some(x) => x, - None => panic!("Invalid polkadot block asserted at {:?}", self.file_line), - } - } - - /// Extract the noted missed proposal validator indices (if any) from the block. - pub fn noted_offline(&self) -> &[u32] { - self.inner.extrinsics.get(NOTE_OFFLINE_POSITION as usize).and_then(|xt| match xt.function { - Call::Consensus(ConsensusCall::note_offline(ref x)) => Some(&x[..]), - _ => None, - }).unwrap_or(&[]) - } - - /// Convert into inner block. - pub fn into_inner(self) -> Block { self.inner } -} - -impl ::std::ops::Deref for CheckedBlock { - type Target = Block; - - fn deref(&self) -> &Block { &self.inner } -} - -/// Assert that a block is structurally valid. May lead to panic in the future -/// in case it isn't. -#[macro_export] -macro_rules! assert_polkadot_block { - ($block: expr) => { - $crate::CheckedBlock::new_unchecked($block, file!(), line!()) - } -} diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index 02e85b389448..133ce258dabf 100644 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -17,39 +17,28 @@ //! The Polkadot runtime. This can be compiled with ``#[no_std]`, ready for Wasm. #![cfg_attr(not(feature = "std"), no_std)] - -#[cfg(feature = "std")] -#[macro_use] -extern crate serde_derive; - -#[cfg(feature = "std")] -extern crate serde; +// `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. +#![recursion_limit="256"] #[macro_use] -extern crate sr_io as runtime_io; - -#[macro_use] -extern crate srml_support; +extern crate parity_codec_derive; +extern crate parity_codec as codec; +extern crate substrate_primitives; #[macro_use] -extern crate sr_primitives as runtime_primitives; +extern crate substrate_client as client; -#[cfg(test)] #[macro_use] -extern crate hex_literal; - +extern crate sr_std as rstd; #[cfg(test)] -extern crate substrate_serializer; - -extern crate substrate_primitives; - +extern crate sr_io; #[macro_use] -extern crate sr_std as rstd; +extern crate sr_version as version; #[macro_use] -extern crate parity_codec_derive; +extern crate sr_primitives; -extern crate polkadot_primitives as primitives; -extern crate parity_codec as codec; +#[macro_use] +extern crate srml_support; extern crate srml_balances as balances; extern crate srml_consensus as consensus; extern crate srml_council as council; @@ -60,69 +49,78 @@ extern crate srml_staking as staking; extern crate srml_system as system; extern crate srml_timestamp as timestamp; extern crate srml_treasury as treasury; -#[macro_use] -extern crate sr_version as version; -#[cfg(feature = "std")] -mod checked_block; +extern crate polkadot_primitives as primitives; + mod parachains; -mod utils; #[cfg(feature = "std")] -pub use checked_block::CheckedBlock; -pub use utils::{inherent_extrinsics, check_extrinsic}; -pub use balances::address::Address as RawAddress; - +use codec::{Encode, Decode}; use rstd::prelude::*; -use codec::{Encode, Decode, Input}; use substrate_primitives::u32_trait::{_2, _4}; -use primitives::{AccountId, AccountIndex, Balance, BlockNumber, Hash, Index, SessionKey, Signature}; -use runtime_primitives::{generic, traits::{Convert, BlakeTwo256, DigestItem}}; +use primitives::{ + AccountId, AccountIndex, Balance, BlockNumber, Hash, Index, SessionKey, Signature, + parachain, parachain::runtime::ParachainHost, parachain::id::PARACHAIN_HOST, +}; +#[cfg(feature = "std")] +use primitives::Block as GBlock; +use client::{block_builder::api::runtime::*, runtime_api::{runtime::*, id::*}}; +#[cfg(feature = "std")] +use client::runtime_api::ApiExt; +use sr_primitives::ApplyResult; +use sr_primitives::transaction_validity::TransactionValidity; +use sr_primitives::generic; +use sr_primitives::traits::{Convert, BlakeTwo256, Block as BlockT}; +#[cfg(feature = "std")] +use sr_primitives::traits::ApiRef; +#[cfg(feature = "std")] +use substrate_primitives::AuthorityId; use version::RuntimeVersion; use council::{motions as council_motions, voting as council_voting}; - #[cfg(feature = "std")] -pub use runtime_primitives::BuildStorage; +use council::seats as council_seats; +#[cfg(any(feature = "std", test))] +use version::NativeVersion; +use substrate_primitives::OpaqueMetadata; +#[cfg(any(feature = "std", test))] +pub use sr_primitives::BuildStorage; pub use consensus::Call as ConsensusCall; pub use timestamp::Call as TimestampCall; +pub use balances::Call as BalancesCall; pub use parachains::Call as ParachainsCall; +pub use sr_primitives::{Permill, Perbill}; +pub use timestamp::BlockPeriod; +pub use srml_support::{StorageValue, RuntimeMetadata}; -/// The position of the timestamp set extrinsic. -pub const TIMESTAMP_SET_POSITION: u32 = 0; -/// The position of the parachains set extrinsic. -pub const PARACHAINS_SET_POSITION: u32 = 1; -/// The position of the note_offline in the block, if it exists. -pub const NOTE_OFFLINE_POSITION: u32 = 2; +const TIMESTAMP_SET_POSITION: u32 = 0; +const NOTE_OFFLINE_POSITION: u32 = 1; +const PARACHAINS_SET_POSITION: u32 = 2; -/// Block header type as expected by this runtime. -pub type Header = generic::Header; -/// The address format for describing accounts. -pub type Address = balances::Address; -/// Block Id type for this block. -pub type BlockId = generic::BlockId; -/// Unchecked extrinsic type as expected by this runtime. -pub type UncheckedExtrinsic = generic::UncheckedExtrinsic; -/// Extrinsic type that has already been checked. -pub type CheckedExtrinsic = generic::CheckedExtrinsic; -/// Block type as expected by this runtime. -pub type Block = generic::Block; - -/// Runtime runtime type used to parameterize the various modules. -// Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. -#[derive(Clone, Copy, PartialEq, Eq)] -#[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] -pub struct Runtime; - -/// Polkadot runtime version. +/// Runtime version. pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: ver_str!("polkadot"), impl_name: ver_str!("parity-polkadot"), authoring_version: 1, spec_version: 101, impl_version: 0, + apis: apis_vec!([ + (BLOCK_BUILDER, 1), + (TAGGED_TRANSACTION_QUEUE, 1), + (METADATA, 1), + (PARACHAIN_HOST, 1), + ]), }; +/// Native version. +#[cfg(any(feature = "std", test))] +pub fn native_version() -> NativeVersion { + NativeVersion { + runtime_version: VERSION, + can_author_with: Default::default(), + } +} + impl system::Trait for Runtime { type Origin = Origin; type Index = Index; @@ -131,11 +129,10 @@ impl system::Trait for Runtime { type Hashing = BlakeTwo256; type Digest = generic::Digest; type AccountId = AccountId; - type Header = Header; + type Header = generic::Header; type Event = Event; + type Log = Log; } -/// System module for this concrete runtime. -pub type System = system::Module; impl balances::Trait for Runtime { type Balance = Balance; @@ -144,8 +141,6 @@ impl balances::Trait for Runtime { type EnsureAccountLiquid = Staking; type Event = Event; } -/// Staking module for this concrete runtime. -pub type Balances = balances::Module; impl consensus::Trait for Runtime { const NOTE_OFFLINE_POSITION: u32 = NOTE_OFFLINE_POSITION; @@ -153,21 +148,17 @@ impl consensus::Trait for Runtime { type SessionKey = SessionKey; type OnOfflineValidator = Staking; } -/// Consensus module for this concrete runtime. -pub type Consensus = consensus::Module; impl timestamp::Trait for Runtime { const TIMESTAMP_SET_POSITION: u32 = TIMESTAMP_SET_POSITION; type Moment = u64; } -/// Timestamp module for this concrete runtime. -pub type Timestamp = timestamp::Module; /// Session key conversion. pub struct SessionKeyConversion; impl Convert for SessionKeyConversion { fn convert(a: AccountId) -> SessionKey { - a.0.into() + a.to_fixed_bytes().into() } } @@ -176,297 +167,316 @@ impl session::Trait for Runtime { type OnSessionChange = Staking; type Event = Event; } -/// Session module for this concrete runtime. -pub type Session = session::Module; impl staking::Trait for Runtime { type OnRewardMinted = Treasury; type Event = Event; } -/// Staking module for this concrete runtime. -pub type Staking = staking::Module; impl democracy::Trait for Runtime { type Proposal = Call; type Event = Event; } -/// Democracy module for this concrete runtime. -pub type Democracy = democracy::Module; impl council::Trait for Runtime { type Event = Event; } -/// Council module for this concrete runtime. -pub type Council = council::Module; - impl council::voting::Trait for Runtime { type Event = Event; } -/// Council voting module for this concrete runtime. -pub type CouncilVoting = council::voting::Module; - impl council::motions::Trait for Runtime { type Origin = Origin; type Proposal = Call; type Event = Event; } -/// Council motions module for this concrete runtime. -pub type CouncilMotions = council_motions::Module; - impl treasury::Trait for Runtime { type ApproveOrigin = council_motions::EnsureMembers<_4>; type RejectOrigin = council_motions::EnsureMembers<_2>; type Event = Event; } -/// Treasury module for this concrete runtime. -pub type Treasury = treasury::Module; - impl parachains::Trait for Runtime { const SET_POSITION: u32 = PARACHAINS_SET_POSITION; } -pub type Parachains = parachains::Module; - -impl_outer_event! { - pub enum Event for Runtime { - //consensus, - balances, - //timetstamp, - session, - staking, - democracy, - council, - council_voting, - council_motions, - treasury + +construct_runtime!( + pub enum Runtime with Log(InternalLog: DigestItem) where + Block = Block, + UncheckedExtrinsic = UncheckedExtrinsic + { + System: system::{default, Log(ChangesTrieRoot)}, + Timestamp: timestamp::{Module, Call, Storage, Config, Inherent}, + Consensus: consensus::{Module, Call, Storage, Config, Log(AuthoritiesChange), Inherent}, + Balances: balances, + Session: session, + Staking: staking, + Democracy: democracy, + Council: council::{Module, Call, Storage, Event}, + CouncilVoting: council_voting, + CouncilMotions: council_motions::{Module, Call, Storage, Event, Origin}, + CouncilSeats: council_seats::{Config}, + Treasury: treasury, + Parachains: parachains::{Module, Call, Storage, Config, Inherent}, } +); + +/// The address format for describing accounts. +pub use balances::address::Address as RawAddress; +/// The address format for describing accounts. +pub type Address = balances::Address; +/// Block header type as expected by this runtime. +pub type Header = generic::Header; +/// Block type as expected by this runtime. +pub type Block = generic::Block; +/// A Block signed with a Justification +pub type SignedBlock = generic::SignedBlock; +/// BlockId type as expected by this runtime. +pub type BlockId = generic::BlockId; +/// Unchecked extrinsic type as expected by this runtime. +pub type UncheckedExtrinsic = generic::UncheckedMortalExtrinsic; +/// Extrinsic type that has already been checked. +pub type CheckedExtrinsic = generic::CheckedExtrinsic; +/// Executive: handles dispatch to the various modules. +pub type Executive = executive::Executive, Balances, AllModules>; + +#[cfg(feature = "std")] +pub struct ClientWithApi { + call: ::std::ptr::NonNull>, + commit_on_success: ::std::cell::RefCell, + initialised_block: ::std::cell::RefCell>, + changes: ::std::cell::RefCell, } -impl_outer_log! { - pub enum Log(InternalLog: DigestItem) for Runtime { - consensus(AuthoritiesChange) +#[cfg(feature = "std")] +unsafe impl Send for ClientWithApi {} +#[cfg(feature = "std")] +unsafe impl Sync for ClientWithApi {} + +#[cfg(feature = "std")] +impl ApiExt for ClientWithApi { + fn map_api_result Result, R, E>(&self, map_call: F) -> Result { + *self.commit_on_success.borrow_mut() = false; + let res = map_call(self); + *self.commit_on_success.borrow_mut() = true; + + self.commit_on_ok(&res); + + res } } -impl_outer_origin! { - pub enum Origin for Runtime { - council_motions +#[cfg(feature = "std")] +impl client::runtime_api::ConstructRuntimeApi for ClientWithApi { + fn construct_runtime_api<'a, T: client::runtime_api::CallApiAt>(call: &'a T) -> ApiRef<'a, Self> { + ClientWithApi { + call: unsafe { + ::std::ptr::NonNull::new_unchecked( + ::std::mem::transmute( + call as &client::runtime_api::CallApiAt + ) + ) + }, + commit_on_success: true.into(), + initialised_block: None.into(), + changes: Default::default(), + }.into() } } -impl_outer_dispatch! { - /// Call type for polkadot transactions. - pub enum Call where origin: ::Origin { - Consensus, - Balances, - Session, - Staking, - Timestamp, - Democracy, - Council, - CouncilVoting, - CouncilMotions, - Parachains, - Treasury, +#[cfg(feature = "std")] +impl ClientWithApi { + fn call_api_at( + &self, + at: &GBlockId, + function: &'static str, + args: &A + ) -> client::error::Result { + let res = unsafe { + self.call.as_ref().call_api_at( + at, + function, + args.encode(), + &mut *self.changes.borrow_mut(), + &mut *self.initialised_block.borrow_mut() + ).and_then(|r| + R::decode(&mut &r[..]) + .ok_or_else(|| + client::error::ErrorKind::CallResultDecode(function).into() + ) + ) + }; + + self.commit_on_ok(&res); + res } -} -impl_outer_config! { - pub struct GenesisConfig for Runtime { - ConsensusConfig => consensus, - SystemConfig => system, - BalancesConfig => balances, - SessionConfig => session, - StakingConfig => staking, - DemocracyConfig => democracy, - CouncilConfig => council, - TimestampConfig => timestamp, - TreasuryConfig => treasury, - ParachainsConfig => parachains, + fn commit_on_ok(&self, res: &Result) { + if *self.commit_on_success.borrow() { + if res.is_err() { + self.changes.borrow_mut().discard_prospective(); + } else { + self.changes.borrow_mut().commit_prospective(); + } + } } } -type AllModules = ( - Consensus, - Balances, - Session, - Staking, - Timestamp, - Democracy, - Council, - CouncilVoting, - CouncilMotions, - Parachains, - Treasury, -); +#[cfg(feature = "std")] +type GBlockId = generic::BlockId; -impl_json_metadata!( - for Runtime with modules - system::Module with Storage, - consensus::Module with Storage, - balances::Module with Storage, - timestamp::Module with Storage, - session::Module with Storage, - staking::Module with Storage, - democracy::Module with Storage, - council::Module with Storage, - council_voting::Module with Storage, - council_motions::Module with Storage, - treasury::Module with Storage, - parachains::Module with Storage, -); +#[cfg(feature = "std")] +impl client::runtime_api::Core for ClientWithApi { + fn version(&self, at: &GBlockId) -> Result { + self.call_api_at(at, "version", &()) + } -impl DigestItem for Log { - type AuthorityId = SessionKey; + fn authorities(&self, at: &GBlockId) -> Result, client::error::Error> { + self.call_api_at(at, "authorities", &()) + } - fn as_authorities_change(&self) -> Option<&[Self::AuthorityId]> { - match self.0 { - InternalLog::consensus(ref item) => item.as_authorities_change(), - } + fn execute_block(&self, at: &GBlockId, block: &GBlock) -> Result<(), client::error::Error> { + self.call_api_at(at, "execute_block", block) } -} -/// Executive: handles dispatch to the various modules. -pub type Executive = executive::Executive; - -pub mod api { - impl_stubs!( - version => |()| super::VERSION, - json_metadata => |()| super::Runtime::json_metadata(), - authorities => |()| super::Consensus::authorities(), - initialise_block => |header| super::Executive::initialise_block(&header), - apply_extrinsic => |extrinsic| super::Executive::apply_extrinsic(extrinsic), - execute_block => |block| super::Executive::execute_block(block), - finalise_block => |()| super::Executive::finalise_block(), - inherent_extrinsics => |(inherent, spec_version)| super::inherent_extrinsics(inherent, spec_version), - validator_count => |()| super::Session::validator_count(), - validators => |()| super::Session::validators(), - timestamp => |()| super::Timestamp::get(), - random_seed => |()| super::System::random_seed(), - account_nonce => |account| super::System::account_nonce(&account), - lookup_address => |address| super::Balances::lookup_address(address), - duty_roster => |()| super::Parachains::calculate_duty_roster(), - active_parachains => |()| super::Parachains::active_parachains(), - parachain_head => |id| super::Parachains::parachain_head(&id), - parachain_code => |id| super::Parachains::parachain_code(&id) - ); + fn initialise_block(&self, at: &GBlockId, header: &::Header) -> Result<(), client::error::Error> { + self.call_api_at(at, "initialise_block", header) + } } -#[cfg(test)] -mod tests { - use super::*; - use substrate_primitives as primitives; - use codec::{Encode, Decode}; - use substrate_primitives::hexdisplay::HexDisplay; - use substrate_serializer as ser; - use runtime_primitives::traits::Header as HeaderT; - type Digest = generic::Digest; +#[cfg(feature = "std")] +impl client::block_builder::api::BlockBuilder for ClientWithApi { + fn apply_extrinsic(&self, at: &GBlockId, extrinsic: &::Extrinsic) -> Result { + self.call_api_at(at, "apply_extrinsic", extrinsic) + } - #[test] - fn test_header_serialization() { - let header = Header { - parent_hash: 5.into(), - number: 67, - state_root: 3.into(), - extrinsics_root: 6.into(), - digest: Digest::default(), - }; + fn finalise_block(&self, at: &GBlockId) -> Result<::Header, client::error::Error> { + self.call_api_at(at, "finalise_block", &()) + } - assert_eq!(ser::to_string_pretty(&header), r#"{ - "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000005", - "number": 67, - "stateRoot": "0x0000000000000000000000000000000000000000000000000000000000000003", - "extrinsicsRoot": "0x0000000000000000000000000000000000000000000000000000000000000006", - "digest": { - "logs": [] - } -}"#); - - let v = header.encode(); - assert_eq!(Header::decode(&mut &v[..]).unwrap(), header); + fn inherent_extrinsics( + &self, at: &GBlockId, inherent: &Inherent + ) -> Result, client::error::Error> { + self.call_api_at(at, "inherent_extrinsics", inherent) } - #[test] - fn block_encoding_round_trip() { - let mut block = Block { - header: Header::new(1, Default::default(), Default::default(), Default::default(), Default::default()), - extrinsics: vec![ - UncheckedExtrinsic::new_unsigned( - Default::default(), - Call::Timestamp(timestamp::Call::set(100_000_000)) - ) - ], - }; + fn check_inherents(&self, at: &GBlockId, block: &GBlock, inherent: &Inherent) -> Result, client::error::Error> { + self.call_api_at(at, "check_inherents", &(block, inherent)) + } - let raw = block.encode(); - let decoded = Block::decode(&mut &raw[..]).unwrap(); + fn random_seed(&self, at: &GBlockId) -> Result<::Hash, client::error::Error> { + self.call_api_at(at, "random_seed", &()) + } +} - assert_eq!(block, decoded); +#[cfg(feature = "std")] +impl client::runtime_api::TaggedTransactionQueue for ClientWithApi { + fn validate_transaction( + &self, + at: &GBlockId, + utx: &::Extrinsic + ) -> Result { + self.call_api_at(at, "validate_transaction", utx) + } +} + +#[cfg(feature = "std")] +impl client::runtime_api::Metadata for ClientWithApi { + fn metadata(&self, at: &GBlockId) -> Result { + self.call_api_at(at, "metadata", &()) + } +} + +#[cfg(feature = "std")] +impl ::primitives::parachain::ParachainHost for ClientWithApi { + fn validators(&self, at: &GBlockId) -> Result, client::error::Error> { + self.call_api_at(at, "validators", &()) + } + fn duty_roster(&self, at: &GBlockId) -> Result { + self.call_api_at(at, "calculate_duty_roster", &()) + } + fn active_parachains(&self, at: &GBlockId) -> Result, client::error::Error> { + self.call_api_at(at, "active_parachains", &()) + } + fn parachain_head(&self, at: &GBlockId, id: ¶chain::Id) -> Result>, client::error::Error> { + self.call_api_at(at, "parachain_head", &id) + } + fn parachain_code(&self, at: &GBlockId, id: ¶chain::Id) -> Result>, client::error::Error> { + self.call_api_at(at, "parachain_code", &id) + } +} - block.extrinsics.push(UncheckedExtrinsic::new_unsigned( - 10101, - Call::Staking(staking::Call::stake()) - )); +impl_runtime_apis! { + impl Core for Runtime { + fn version() -> RuntimeVersion { + VERSION + } + + fn authorities() -> Vec { + Consensus::authorities() + } + + fn execute_block(block: Block) { + Executive::execute_block(block) + } - let raw = block.encode(); - let decoded = Block::decode(&mut &raw[..]).unwrap(); + fn initialise_block(header: ::Header) { + Executive::initialise_block(&header) + } + } - assert_eq!(block, decoded); + impl Metadata for Runtime { + fn metadata() -> OpaqueMetadata { + Runtime::metadata().into() + } } - #[test] - fn block_encoding_substrate_round_trip() { - let mut block = Block { - header: Header::new(1, Default::default(), Default::default(), Default::default(), Default::default()), - extrinsics: vec![ - UncheckedExtrinsic::new_unsigned( - Default::default(), - Call::Timestamp(timestamp::Call::set(100_000_000)) - ) - ], - }; + impl BlockBuilder for Runtime { + fn apply_extrinsic(extrinsic: ::Extrinsic) -> ApplyResult { + Executive::apply_extrinsic(extrinsic) + } + + fn finalise_block() -> ::Header { + Executive::finalise_block() + } - block.extrinsics.push(UncheckedExtrinsic::new_unsigned( - 10101, - Call::Staking(staking::Call::stake()) - )); + fn inherent_extrinsics(data: InherentData) -> Vec { + data.create_inherent_extrinsics() + } - let raw = block.encode(); - let decoded_primitive = ::primitives::Block::decode(&mut &raw[..]).unwrap(); - let encoded_primitive = decoded_primitive.encode(); - let decoded = Block::decode(&mut &encoded_primitive[..]).unwrap(); + fn check_inherents(block: Block, data: InherentData) -> Result<(), InherentError> { + data.check_inherents(block) + } - assert_eq!(block, decoded); + fn random_seed() -> ::Hash { + System::random_seed() + } } - #[test] - fn serialize_unchecked() { - let tx = UncheckedExtrinsic::new_signed( - 999, - Call::Timestamp(TimestampCall::set(135135)), - AccountId::from([1; 32]).into(), - runtime_primitives::Ed25519Signature(primitives::hash::H512([0; 64])).into() - ); - - // 6f000000 - // ff0101010101010101010101010101010101010101010101010101010101010101 - // e7030000 - // 0300 - // df0f0200 - // 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 - - let v = Encode::encode(&tx); - assert_eq!(&v[..], &hex!["7000000001ff010101010101010101010101010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e70300000400df0f020000000000"][..]); - println!("{}", HexDisplay::from(&v)); - assert_eq!(UncheckedExtrinsic::decode(&mut &v[..]).unwrap(), tx); + impl TaggedTransactionQueue for Runtime { + fn validate_transaction(tx: ::Extrinsic) -> TransactionValidity { + Executive::validate_transaction(tx) + } } - #[test] - fn parachain_calls_are_privcall() { - let _register = Call::Parachains(parachains::Call::register_parachain(0.into(), vec![1, 2, 3], vec![])); - let _deregister = Call::Parachains(parachains::Call::deregister_parachain(0.into())); + impl ParachainHost for Runtime { + fn validators() -> Vec { + Session::validators() + } + fn duty_roster() -> parachain::DutyRoster { + Parachains::calculate_duty_roster() + } + fn active_parachains() -> Vec { + Parachains::active_parachains() + } + fn parachain_head(id: parachain::Id) -> Option> { + Parachains::parachain_head(&id) + } + fn parachain_code(id: parachain::Id) -> Option> { + Parachains::parachain_code(&id) + } } } + diff --git a/runtime/src/parachains.rs b/runtime/src/parachains.rs index f98942949a40..0426ea7d5b5f 100644 --- a/runtime/src/parachains.rs +++ b/runtime/src/parachains.rs @@ -19,7 +19,8 @@ use rstd::prelude::*; use codec::Decode; -use runtime_primitives::traits::{Hash, BlakeTwo256, OnFinalise}; +use sr_primitives::{RuntimeString, traits::{Extrinsic, Block as BlockT, + Hash, BlakeTwo256, ProvideInherent}}; use primitives::parachain::{Id, Chain, DutyRoster, CandidateReceipt}; use {system, session}; @@ -27,43 +28,133 @@ use srml_support::{StorageValue, StorageMap}; use srml_support::dispatch::Result; #[cfg(any(feature = "std", test))] -use rstd::marker::PhantomData; +use sr_primitives::{self, ChildrenStorageMap}; -#[cfg(any(feature = "std", test))] -use runtime_primitives; - -#[cfg(any(feature = "std", test))] -use std::collections::HashMap; +use system::ensure_inherent; -use system::{ensure_root, ensure_inherent}; - -pub trait Trait: system::Trait + session::Trait { +pub trait Trait: session::Trait { /// The position of the set_heads call in the block. const SET_POSITION: u32; } -decl_module! { - /// Parachains module. - pub struct Module for enum Call where origin: T::Origin { - /// Provide candidate receipts for parachains, in ascending order by id. - fn set_heads(origin, heads: Vec) -> Result; - - fn register_parachain(origin, id: Id, code: Vec, initial_head_data: Vec) -> Result; - fn deregister_parachain(origin, id: Id) -> Result; - } -} - decl_storage! { trait Store for Module as Parachains { // Vector of all parachain IDs. - pub Parachains get(active_parachains): default Vec; + pub Parachains get(active_parachains): Vec; // The parachains registered at present. - pub Code get(parachain_code): map [ Id => Vec ]; + pub Code get(parachain_code): map Id => Option>; // The heads of the parachains registered at present. these are kept sorted. - pub Heads get(parachain_head): map [ Id => Vec ]; + pub Heads get(parachain_head): map Id => Option>; // Did the parachain heads get updated in this block? - DidUpdate: default bool; + DidUpdate: bool; + } + add_extra_genesis { + config(parachains): Vec<(Id, Vec, Vec)>; + build(|storage: &mut sr_primitives::StorageMap, _: &mut ChildrenStorageMap, config: &GenesisConfig| { + use codec::Encode; + + let mut p = config.parachains.clone(); + p.sort_unstable_by_key(|&(ref id, _, _)| id.clone()); + p.dedup_by_key(|&mut (ref id, _, _)| id.clone()); + + let only_ids: Vec<_> = p.iter().map(|&(ref id, _, _)| id).cloned().collect(); + + storage.insert(GenesisConfig::::hash(>::key()).to_vec(), only_ids.encode()); + + for (id, code, genesis) in p { + let code_key = GenesisConfig::::hash(&>::key_for(&id)).to_vec(); + let head_key = GenesisConfig::::hash(&>::key_for(&id)).to_vec(); + + storage.insert(code_key, code.encode()); + storage.insert(head_key, genesis.encode()); + } + }); + } +} + +decl_module! { + /// Parachains module. + pub struct Module for enum Call where origin: T::Origin { + /// Provide candidate receipts for parachains, in ascending order by id. + fn set_heads(origin, heads: Vec) -> Result { + ensure_inherent(origin)?; + ensure!(!>::exists(), "Parachain heads must be updated only once in the block"); + ensure!( + >::extrinsic_index() == Some(T::SET_POSITION), + "Parachain heads update extrinsic must be at position {} in the block" + // , T::SET_POSITION + ); + + let active_parachains = Self::active_parachains(); + + // perform integrity checks before writing to storage. + { + let n_parachains = active_parachains.len(); + ensure!(heads.len() <= n_parachains, "Too many parachain candidates"); + + let mut last_id = None; + let mut iter = active_parachains.iter(); + for head in &heads { + // proposed heads must be ascending order by parachain ID without duplicate. + ensure!( + last_id.as_ref().map_or(true, |x| x < &head.parachain_index), + "Parachain candidates out of order by ID" + ); + + // must be unknown since active parachains are always sorted. + ensure!( + iter.find(|x| x == &&head.parachain_index).is_some(), + "Submitted candidate for unregistered or out-of-order parachain {}" + ); + + last_id = Some(head.parachain_index); + } + } + + for head in heads { + let id = head.parachain_index.clone(); + >::insert(id, head.head_data.0); + } + + >::put(true); + + Ok(()) + } + + /// Register a parachain with given code. + /// Fails if given ID is already used. + pub fn register_parachain(id: Id, code: Vec, initial_head_data: Vec) -> Result { + let mut parachains = Self::active_parachains(); + match parachains.binary_search(&id) { + Ok(_) => fail!("Parachain already exists"), + Err(idx) => parachains.insert(idx, id), + } + + >::insert(id, code); + >::put(parachains); + >::insert(id, initial_head_data); + + Ok(()) + } + + /// Deregister a parachain with given id + pub fn deregister_parachain(id: Id) -> Result { + let mut parachains = Self::active_parachains(); + match parachains.binary_search(&id) { + Ok(idx) => { parachains.remove(idx); } + Err(_) => {} + } + + >::remove(id); + >::remove(id); + >::put(parachains); + Ok(()) + } + + fn on_finalise(_n: T::BlockNumber) { + assert!(::DidUpdate::take(), "Parachain heads must be updated once in the block"); + } } } @@ -85,7 +176,7 @@ impl Module { let mut roles_gua = roles_val.clone(); - let mut random_seed = system::Module::::random_seed().to_vec(); + let mut random_seed = system::Module::::random_seed().as_ref().to_vec(); random_seed.extend(b"validator_role_pairs"); let mut seed = BlakeTwo256::hash(&random_seed); @@ -103,7 +194,7 @@ impl Module { if offset == 24 { // into the last 8 bytes - rehash to gather new entropy - seed = BlakeTwo256::hash(&seed); + seed = BlakeTwo256::hash(seed.as_ref()); } // exchange last item with randomly chosen first. @@ -117,134 +208,60 @@ impl Module { } } - /// Register a parachain with given code. - /// Fails if given ID is already used. - pub fn register_parachain(origin: T::Origin, id: Id, code: Vec, initial_head_data: Vec) -> Result { - ensure_root(origin)?; - let mut parachains = Self::active_parachains(); - match parachains.binary_search(&id) { - Ok(_) => fail!("Parachain already exists"), - Err(idx) => parachains.insert(idx, id), - } - - >::insert(id, code); - >::put(parachains); - >::insert(id, initial_head_data); - - Ok(()) - } +/* + // TODO: Consider integrating if needed. + /// Extract the parachain heads from the block. + pub fn parachain_heads(&self) -> &[CandidateReceipt] { + let x = self.inner.extrinsics.get(PARACHAINS_SET_POSITION as usize).and_then(|xt| match xt.function { + Call::Parachains(ParachainsCall::set_heads(ref x)) => Some(&x[..]), + _ => None + }); - /// Deregister a parachain with given id - pub fn deregister_parachain(origin: T::Origin, id: Id) -> Result { - ensure_root(origin)?; - let mut parachains = Self::active_parachains(); - match parachains.binary_search(&id) { - Ok(idx) => { parachains.remove(idx); } - Err(_) => {} + match x { + Some(x) => x, + None => panic!("Invalid polkadot block asserted at {:?}", self.file_line), } - - >::remove(id); - >::remove(id); - >::put(parachains); - Ok(()) - } - - fn set_heads(origin: T::Origin, heads: Vec) -> Result { - ensure_inherent(origin)?; - ensure!(!>::exists(), "Parachain heads must be updated only once in the block"); - ensure!( - >::extrinsic_index() == Some(T::SET_POSITION), - "Parachain heads update extrinsic must be at position {} in the block" -// , T::SET_POSITION - ); - - let active_parachains = Self::active_parachains(); - let mut iter = active_parachains.iter(); - - // perform this check before writing to storage. - for head in &heads { - ensure!( - iter.find(|&p| p == &head.parachain_index).is_some(), - "Submitted candidate for unregistered or out-of-order parachain {}" -// , head.parachain_index.into_inner() - ); - } - - for head in heads { - let id = head.parachain_index.clone(); - >::insert(id, head.head_data.0); - } - - >::put(true); - - Ok(()) } +*/ } -impl OnFinalise for Module { - fn on_finalise(_n: T::BlockNumber) { - assert!(::DidUpdate::take(), "Parachain heads must be updated once in the block"); - } -} +impl ProvideInherent for Module { + type Inherent = Vec; + type Call = Call; + type Error = RuntimeString; -/// Parachains module genesis configuration. -#[cfg(any(feature = "std", test))] -#[derive(Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -#[serde(deny_unknown_fields)] -pub struct GenesisConfig { - /// The initial parachains, mapped to code and initial head data - pub parachains: Vec<(Id, Vec, Vec)>, - /// Phantom data. - #[serde(skip)] - pub phantom: PhantomData, -} - -#[cfg(any(feature = "std", test))] -impl Default for GenesisConfig { - fn default() -> Self { - GenesisConfig { - parachains: Vec::new(), - phantom: PhantomData, - } + fn create_inherent_extrinsics(data: Self::Inherent) -> Vec<(u32, Self::Call)> { + vec![(T::SET_POSITION, Call::set_heads(data))] } -} -#[cfg(any(feature = "std", test))] -impl runtime_primitives::BuildStorage for GenesisConfig -{ - fn build_storage(mut self) -> ::std::result::Result, Vec>, String> { - use codec::Encode; - - self.parachains.sort_unstable_by_key(|&(ref id, _, _)| id.clone()); - self.parachains.dedup_by_key(|&mut (ref id, _, _)| id.clone()); - - let only_ids: Vec<_> = self.parachains.iter().map(|&(ref id, _, _)| id).cloned().collect(); - - let mut map: HashMap<_, _> = map![ - Self::hash(>::key()).to_vec() => only_ids.encode() - ]; + fn check_inherent Option<&Self::Call>>( + block: &Block, _data: Self::Inherent, extract_function: &F + ) -> ::rstd::result::Result<(), Self::Error> { + let has_heads = block + .extrinsics() + .get(T::SET_POSITION as usize) + .map_or(false, |xt| { + xt.is_signed() == Some(true) && match extract_function(&xt) { + Some(Call::set_heads(_)) => true, + _ => false, + } + }); - for (id, code, genesis) in self.parachains { - let code_key = Self::hash(&>::key_for(&id)).to_vec(); - let head_key = Self::hash(&>::key_for(&id)).to_vec(); + if !has_heads { return Err("No valid parachains inherent in block".into()) } - map.insert(code_key, code.encode()); - map.insert(head_key, genesis.encode()); - } - - Ok(map) + Ok(()) } } #[cfg(test)] mod tests { use super::*; - use runtime_io::{TestExternalities, with_externalities}; + use rstd::marker::PhantomData; + use sr_io::{TestExternalities, with_externalities}; use substrate_primitives::{H256, Blake2Hasher}; - use runtime_primitives::BuildStorage; - use runtime_primitives::traits::{Identity, BlakeTwo256}; - use runtime_primitives::testing::{Digest, Header}; + use sr_primitives::BuildStorage; + use sr_primitives::traits::{Identity, BlakeTwo256}; + use sr_primitives::testing::{Digest, Header, DigestItem}; use {consensus, timestamp}; impl_outer_origin! { @@ -257,7 +274,7 @@ mod tests { const NOTE_OFFLINE_POSITION: u32 = 1; type SessionKey = u64; type OnOfflineValidator = (); - type Log = u64; + type Log = DigestItem; } impl system::Trait for Test { type Origin = Origin; @@ -269,6 +286,7 @@ mod tests { type AccountId = u64; type Header = Header; type Event = (); + type Log = DigestItem; } impl session::Trait for Test { type ConvertAccountIdToSessionKey = Identity; @@ -286,19 +304,21 @@ mod tests { type Parachains = Module; fn new_test_ext(parachains: Vec<(Id, Vec, Vec)>) -> TestExternalities { - let mut t = system::GenesisConfig::::default().build_storage().unwrap(); + let mut t = system::GenesisConfig::::default().build_storage().unwrap().0; t.extend(consensus::GenesisConfig::{ code: vec![], authorities: vec![1, 2, 3], - }.build_storage().unwrap()); + _genesis_phantom_data: PhantomData, + }.build_storage().unwrap().0); t.extend(session::GenesisConfig::{ session_length: 1000, validators: vec![1, 2, 3, 4, 5, 6, 7, 8], - }.build_storage().unwrap()); + _genesis_phantom_data: PhantomData, + }.build_storage().unwrap().0); t.extend(GenesisConfig::{ parachains: parachains, - phantom: PhantomData, - }.build_storage().unwrap()); + _genesis_phantom_data: PhantomData, + }.build_storage().unwrap().0); t.into() } @@ -329,12 +349,12 @@ mod tests { assert_eq!(Parachains::parachain_code(&5u32.into()), Some(vec![1,2,3])); assert_eq!(Parachains::parachain_code(&100u32.into()), Some(vec![4,5,6])); - assert_ok!(Parachains::register_parachain(Origin::ROOT, 99u32.into(), vec![7,8,9], vec![1, 1, 1])); + assert_ok!(Parachains::register_parachain(99u32.into(), vec![7,8,9], vec![1, 1, 1])); assert_eq!(Parachains::active_parachains(), vec![5u32.into(), 99u32.into(), 100u32.into()]); assert_eq!(Parachains::parachain_code(&99u32.into()), Some(vec![7,8,9])); - assert_ok!(Parachains::deregister_parachain(Origin::ROOT, 5u32.into())); + assert_ok!(Parachains::deregister_parachain(5u32.into())); assert_eq!(Parachains::active_parachains(), vec![99u32.into(), 100u32.into()]); assert_eq!(Parachains::parachain_code(&5u32.into()), None); diff --git a/runtime/src/utils.rs b/runtime/src/utils.rs deleted file mode 100644 index 1bb23f2c7be8..000000000000 --- a/runtime/src/utils.rs +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2017 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 . - -//! Utils for block interaction. - -use rstd::prelude::*; -use super::{Call, UncheckedExtrinsic, Balances}; -use runtime_primitives::traits::{Checkable, Lookup}; -use timestamp::Call as TimestampCall; -use parachains::Call as ParachainsCall; -use consensus::Call as ConsensusCall; - -/// Produces the list of inherent extrinsics. -pub fn inherent_extrinsics(data: ::primitives::InherentData, spec_version: u32) -> Vec { - let make_inherent = |function| UncheckedExtrinsic::new_unsigned(0, function); - - let mut inherent = vec![ - make_inherent(Call::Timestamp(TimestampCall::set(data.timestamp))), - make_inherent(Call::Parachains(ParachainsCall::set_heads(data.parachain_heads))), - ]; - - if !data.offline_indices.is_empty() && spec_version == 5 { - inherent.push(make_inherent( - Call::Consensus(ConsensusCall::note_offline(data.offline_indices)) - )); - } - - inherent -} - -/// Checks an unchecked extrinsic for validity. -pub fn check_extrinsic(xt: UncheckedExtrinsic) -> bool { - xt.check_with(Balances::lookup).is_ok() -} diff --git a/runtime/wasm/Cargo.lock b/runtime/wasm/Cargo.lock index c8f40fcbf696..5f6afdfae853 100644 --- a/runtime/wasm/Cargo.lock +++ b/runtime/wasm/Cargo.lock @@ -3,12 +3,12 @@ name = "arrayvec" version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "byteorder" -version = "1.2.6" +version = "1.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -17,14 +17,30 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "fixed-hash" -version = "0.2.2" +name = "crunchy" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "hashdb" -version = "0.2.1" +name = "fixed-hash" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "static_assertions 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hash-db" +version = "0.9.0" +source = "git+https://github.com/paritytech/trie#2616db2a2529098949e5d39aa06dd4e502a9e5f7" + +[[package]] +name = "hash256-std-hasher" +version = "0.9.0" +source = "git+https://github.com/paritytech/trie#2616db2a2529098949e5d39aa06dd4e502a9e5f7" +dependencies = [ + "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "hex-literal" @@ -32,7 +48,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "hex-literal-impl 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-hack 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -40,7 +56,7 @@ name = "hex-literal-impl" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro-hack 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -48,51 +64,68 @@ name = "integer-sqrt" version = "0.1.0" source = "git+https://github.com/paritytech/integer-sqrt-rs.git#886e9cb983c46498003878afe965d55caa762025" +[[package]] +name = "integer-sqrt" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "mashup" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "mashup-impl 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "mashup-impl" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "nodrop" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "num-traits" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "parity-codec" -version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "parity-codec-derive" -version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" -dependencies = [ - "proc-macro2 0.4.15 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "plain_hasher" -version = "0.2.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "polkadot-primitives" version = "0.1.0" dependencies = [ - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", - "serde 1.0.75 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", + "sr-version 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-client 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", ] @@ -101,8 +134,8 @@ name = "polkadot-runtime" version = "0.1.0" dependencies = [ "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "polkadot-primitives 0.1.0", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -120,50 +153,37 @@ dependencies = [ "srml-system 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-timestamp 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-treasury 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-client 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", ] [[package]] name = "proc-macro-hack" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro-hack-impl 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack-impl 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "proc-macro-hack-impl" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "proc-macro2" -version = "0.4.15" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "pwasm-alloc" -version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" -dependencies = [ - "pwasm-libc 0.1.0 (git+https://github.com/paritytech/substrate)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "pwasm-libc" -version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" - [[package]] name = "quote" -version = "0.6.8" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.15 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -202,16 +222,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde" -version = "1.0.75" +version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "sr-io" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#c10123e41c2f4bfa7aa82f65c229920111c66d19" dependencies = [ - "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", + "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", + "parity-codec 2.1.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 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -220,24 +240,12 @@ dependencies = [ [[package]] name = "sr-primitives" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" -dependencies = [ - "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", - "num-traits 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", - "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", - "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", -] - -[[package]] -name = "sr-sandbox" -version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#c10123e41c2f4bfa7aa82f65c229920111c66d19" dependencies = [ - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "integer-sqrt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -246,34 +254,33 @@ dependencies = [ [[package]] name = "sr-std" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#c10123e41c2f4bfa7aa82f65c229920111c66d19" dependencies = [ - "pwasm-alloc 0.1.0 (git+https://github.com/paritytech/substrate)", - "pwasm-libc 0.1.0 (git+https://github.com/paritytech/substrate)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sr-version" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#c10123e41c2f4bfa7aa82f65c229920111c66d19" dependencies = [ - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", - "serde 1.0.75 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", ] [[package]] name = "srml-balances" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#c10123e41c2f4bfa7aa82f65c229920111c66d19" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (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.75 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -285,12 +292,12 @@ dependencies = [ [[package]] name = "srml-consensus" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#c10123e41c2f4bfa7aa82f65c229920111c66d19" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", - "serde 1.0.75 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -302,19 +309,17 @@ dependencies = [ [[package]] name = "srml-council" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#c10123e41c2f4bfa7aa82f65c229920111c66d19" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (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.75 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-balances 0.1.0 (git+https://github.com/paritytech/substrate)", - "srml-consensus 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-democracy 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-support 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-system 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -324,18 +329,17 @@ dependencies = [ [[package]] name = "srml-democracy" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#c10123e41c2f4bfa7aa82f65c229920111c66d19" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (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.75 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-balances 0.1.0 (git+https://github.com/paritytech/substrate)", - "srml-consensus 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-support 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-system 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -344,11 +348,12 @@ dependencies = [ [[package]] name = "srml-executive" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#c10123e41c2f4bfa7aa82f65c229920111c66d19" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "serde 1.0.75 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -356,16 +361,27 @@ dependencies = [ "srml-system 0.1.0 (git+https://github.com/paritytech/substrate)", ] +[[package]] +name = "srml-metadata" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate#c10123e41c2f4bfa7aa82f65c229920111c66d19" +dependencies = [ + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", +] + [[package]] name = "srml-session" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#c10123e41c2f4bfa7aa82f65c229920111c66d19" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (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.75 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -379,16 +395,15 @@ dependencies = [ [[package]] name = "srml-staking" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#c10123e41c2f4bfa7aa82f65c229920111c66d19" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (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.75 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", - "sr-sandbox 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-balances 0.1.0 (git+https://github.com/paritytech/substrate)", "srml-consensus 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -402,26 +417,27 @@ dependencies = [ [[package]] name = "srml-support" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#c10123e41c2f4bfa7aa82f65c229920111c66d19" dependencies = [ - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "serde 1.0.75 (registry+https://github.com/rust-lang/crates.io-index)", + "mashup 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-metadata 0.1.0 (git+https://github.com/paritytech/substrate)", - "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", + "srml-metadata 0.1.0 (git+https://github.com/paritytech/substrate)", ] [[package]] name = "srml-system" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#c10123e41c2f4bfa7aa82f65c229920111c66d19" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (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.75 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -432,11 +448,12 @@ dependencies = [ [[package]] name = "srml-timestamp" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#c10123e41c2f4bfa7aa82f65c229920111c66d19" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "serde 1.0.75 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -449,12 +466,12 @@ dependencies = [ [[package]] name = "srml-treasury" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#c10123e41c2f4bfa7aa82f65c229920111c66d19" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", - "serde 1.0.75 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -465,29 +482,38 @@ dependencies = [ ] [[package]] -name = "substrate-metadata" +name = "static_assertions" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "substrate-client" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" +source = "git+https://github.com/paritytech/substrate#c10123e41c2f4bfa7aa82f65c229920111c66d19" dependencies = [ - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", + "sr-version 0.1.0 (git+https://github.com/paritytech/substrate)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", ] [[package]] name = "substrate-primitives" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#b9849fe33203fd34105452ca8e8e638f3918d357" -dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)", - "parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)", - "plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +source = "git+https://github.com/paritytech/substrate#c10123e41c2f4bfa7aa82f65c229920111c66d19" +dependencies = [ + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fixed-hash 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", + "hash256-std-hasher 0.9.0 (git+https://github.com/paritytech/trie)", + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 2.1.0 (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.75 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", - "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "uint 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -495,18 +521,18 @@ name = "syn" version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.15 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (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 = "uint" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy 0.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)", ] @@ -517,33 +543,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] "checksum arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a1e964f9e24d588183fcb43503abda40d288c8657dfc27311516ce2f05675aef" -"checksum byteorder 1.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "90492c5858dd7d2e78691cfb89f90d273a2800fc11d98f60786e5d87e2f83781" +"checksum byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "94f88df23a25417badc922ab0f5716cc1330e87f71ddd9203b3a3ccd9cedf75d" "checksum crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a2f4a431c5c9f662e1200b7c7f02c34e91361150e382089a8f2dec3ba680cbda" -"checksum fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0d5ec8112f00ea8a483e04748a85522184418fd1cf02890b626d8fc28683f7de" -"checksum hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f1c71fc577cde89b3345d5f2880fecaf462a32e96c619f431279bdaf1ba5ddb1" +"checksum crunchy 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c240f247c278fa08a6d4820a6a222bfc6e0d999e51ba67be94f44c905b2161f2" +"checksum fixed-hash 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a557e80084b05c32b455963ff565a9de6f2866da023d6671705c6aff6f65e01c" +"checksum hash-db 0.9.0 (git+https://github.com/paritytech/trie)" = "" +"checksum hash256-std-hasher 0.9.0 (git+https://github.com/paritytech/trie)" = "" "checksum hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4da5f0e01bd8a71a224a4eedecaacfcabda388dbb7a80faf04d3514287572d95" "checksum hex-literal-impl 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1d340b6514f232f6db1bd16db65302a5278a04fef9ce867cb932e7e5fa21130a" "checksum integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)" = "" -"checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" -"checksum num-traits 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "630de1ef5cc79d0cdd78b7e33b81f083cbfe90de0f4b2b2f07f905867c70e9fe" -"checksum parity-codec 0.1.0 (git+https://github.com/paritytech/substrate)" = "" -"checksum parity-codec-derive 0.1.0 (git+https://github.com/paritytech/substrate)" = "" -"checksum plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "95fa6386b1d34aaf0adb9b7dd2885dbe7c34190e6263785e5a7ec2b19044a90f" -"checksum proc-macro-hack 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ba8d4f9257b85eb6cdf13f055cea3190520aab1409ca2ab43493ea4820c25f0" -"checksum proc-macro-hack-impl 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d5cb6f960ad471404618e9817c0e5d10b1ae74cfdf01fab89ea0641fe7fb2892" -"checksum proc-macro2 0.4.15 (registry+https://github.com/rust-lang/crates.io-index)" = "295af93acfb1d5be29c16ca5b3f82d863836efd9cb0c14fd83811eb9a110e452" -"checksum pwasm-alloc 0.1.0 (git+https://github.com/paritytech/substrate)" = "" -"checksum pwasm-libc 0.1.0 (git+https://github.com/paritytech/substrate)" = "" -"checksum quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)" = "dd636425967c33af890042c483632d33fa7a18f19ad1d7ea72e8998c6ef8dea5" +"checksum integer-sqrt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ea155abb3ba6f382a75f1418988c05fe82959ed9ce727de427f9cfd425b0c903" +"checksum mashup 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f2d82b34c7fb11bb41719465c060589e291d505ca4735ea30016a91f6fc79c3b" +"checksum mashup-impl 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "aa607bfb674b4efb310512527d64266b065de3f894fc52f84efcbf7eaa5965fb" +"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" +"checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" +"checksum parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "dca389ea5e1632c89b2ce54f7e2b4a8a8c9d278042222a91e0bf95451218cb4c" +"checksum parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ffa42c2cb493b60b12c75b26e8c94cb734af4df4d7f2cc229dc04c1953dac189" +"checksum proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2c725b36c99df7af7bf9324e9c999b9e37d92c8f8caf106d82e1d7953218d2d8" +"checksum proc-macro-hack-impl 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2b753ad9ed99dd8efeaa7d2fb8453c8f6bc3e54b97966d35f1bc77ca6865254a" +"checksum proc-macro2 0.4.23 (registry+https://github.com/rust-lang/crates.io-index)" = "88dae56b29da695d783ea7fc5a90de281f79eb38407e77f6d674dd8befc4ac47" +"checksum quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "53fa22a1994bd0f9372d7a816207d8a2677ad0325b073f5c5332760f0fb62b5c" "checksum rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "403bb3a286107a04825a5f82e1270acc1e14028d3d554d7a1e08914549575ab8" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" "checksum safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7f7bf422d23a88c16d5090d455f182bc99c60af4df6a345c63428acf5129e347" "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 serde 1.0.75 (registry+https://github.com/rust-lang/crates.io-index)" = "22d340507cea0b7e6632900a176101fea959c7065d93ba555072da90aaaafc87" +"checksum serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)" = "15c141fc7027dd265a47c090bf864cf62b42c4d228bbcf4e51a0c9e2b0d3f7ef" "checksum sr-io 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate)" = "" -"checksum sr-sandbox 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum sr-std 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum sr-version 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum srml-balances 0.1.0 (git+https://github.com/paritytech/substrate)" = "" @@ -551,14 +578,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum srml-council 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum srml-democracy 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum srml-executive 0.1.0 (git+https://github.com/paritytech/substrate)" = "" +"checksum srml-metadata 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum srml-session 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum srml-staking 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum srml-support 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum srml-system 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum srml-timestamp 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum srml-treasury 0.1.0 (git+https://github.com/paritytech/substrate)" = "" -"checksum substrate-metadata 0.1.0 (git+https://github.com/paritytech/substrate)" = "" +"checksum static_assertions 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c19be23126415861cb3a23e501d34a708f7f9b2183c5252d690941c2e69199d5" +"checksum substrate-client 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)" = "" "checksum syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)" = "261ae9ecaa397c42b960649561949d69311f08eeaea86a65696e6e46517cf741" -"checksum uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "754ba11732b9161b94c41798e5197e5e75388d012f760c42adb5000353e98646" +"checksum uint 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "082df6964410f6aa929a61ddfafc997e4f32c62c22490e439ac351cec827f436" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" diff --git a/runtime/wasm/Cargo.toml b/runtime/wasm/Cargo.toml index 48ff7b67b971..a718d695a2d3 100644 --- a/runtime/wasm/Cargo.toml +++ b/runtime/wasm/Cargo.toml @@ -10,9 +10,10 @@ crate-type = ["cdylib"] integer-sqrt = { git = "https://github.com/paritytech/integer-sqrt-rs.git", branch = "master" } polkadot-primitives = { path = "../../primitives", default-features = false } safe-mix = { version = "1.0", default-features = false } -parity-codec = { git = "https://github.com/paritytech/substrate", default-features = false } -parity-codec-derive = { git = "https://github.com/paritytech/substrate", default-features = false } +parity-codec = { version = "2.1", default-features = false } +parity-codec-derive = { version = "2.1", default-features = false } substrate-primitives = { git = "https://github.com/paritytech/substrate", default-features = false } +substrate-client = { git = "https://github.com/paritytech/substrate", default-features = false } sr-std = { git = "https://github.com/paritytech/substrate", default-features = false } sr-io = { git = "https://github.com/paritytech/substrate", default-features = false } srml-support = { git = "https://github.com/paritytech/substrate", default-features = false } diff --git a/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm b/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm index 3774559aca27..e70997545ae5 100644 Binary files a/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm and b/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm differ diff --git a/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm b/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm index 7f2d3a864d52..665b570b511b 100755 Binary files a/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm and b/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm differ diff --git a/service/Cargo.toml b/service/Cargo.toml index 5e332fa9511c..ad4cf73b9e2e 100644 --- a/service/Cargo.toml +++ b/service/Cargo.toml @@ -14,14 +14,14 @@ hex-literal = "0.1" polkadot-availability-store = { path = "../availability-store" } polkadot-primitives = { path = "../primitives" } polkadot-runtime = { path = "../runtime" } -polkadot-consensus = { path = "../consensus" } polkadot-executor = { path = "../executor" } -polkadot-api = { path = "../api" } -polkadot-transaction-pool = { path = "../transaction-pool" } -polkadot-network = { path = "../network" } +polkadot-network = { path = "../network" } sr-io = { git = "https://github.com/paritytech/substrate" } +sr-primitives = { git = "https://github.com/paritytech/substrate" } substrate-primitives = { git = "https://github.com/paritytech/substrate" } substrate-network = { git = "https://github.com/paritytech/substrate" } substrate-client = { git = "https://github.com/paritytech/substrate" } +substrate-consensus-aura = { git = "https://github.com/paritytech/substrate" } substrate-service = { git = "https://github.com/paritytech/substrate" } substrate-telemetry = { git = "https://github.com/paritytech/substrate" } +substrate-transaction-pool = { git = "https://github.com/paritytech/substrate" } diff --git a/service/src/chain_spec.rs b/service/src/chain_spec.rs index aeb7c4a09708..0bae2a809646 100644 --- a/service/src/chain_spec.rs +++ b/service/src/chain_spec.rs @@ -17,13 +17,16 @@ //! Polkadot chain configurations. use primitives::{AuthorityId, ed25519}; -use polkadot_runtime::{GenesisConfig, ConsensusConfig, CouncilConfig, DemocracyConfig, - SessionConfig, StakingConfig, TimestampConfig, BalancesConfig}; -use service::ChainSpec; +use polkadot_runtime::{GenesisConfig, ConsensusConfig, CouncilSeatsConfig, DemocracyConfig, + SessionConfig, StakingConfig, TimestampConfig, BalancesConfig, Perbill, CouncilVotingConfig}; const STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/"; +const DEFAULT_PROTOCOL_ID: &str = "dot"; -pub fn poc_1_testnet_config() -> Result, String> { +/// Specialised `ChainSpec`. +pub type ChainSpec = ::service::ChainSpec; + +pub fn poc_1_testnet_config() -> Result { ChainSpec::from_embedded(include_bytes!("../res/krummelanke.json")) } @@ -41,6 +44,7 @@ fn staging_testnet_config_genesis() -> GenesisConfig { consensus: Some(ConsensusConfig { code: include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm").to_vec(), // TODO change authorities: initial_authorities.clone(), + _genesis_phantom_data: Default::default(), }), system: None, balances: Some(BalancesConfig { @@ -51,28 +55,34 @@ fn staging_testnet_config_genesis() -> GenesisConfig { creation_fee: 0, reclaim_rebate: 0, balances: endowed_accounts.iter().map(|&k|(k, 1u128 << 60)).collect(), + _genesis_phantom_data: Default::default(), }), session: Some(SessionConfig { validators: initial_authorities.iter().cloned().map(Into::into).collect(), session_length: 60, // that's 5 minutes per session. + _genesis_phantom_data: Default::default(), }), staking: Some(StakingConfig { current_era: 0, intentions: initial_authorities.iter().cloned().map(Into::into).collect(), - offline_slash: 10000, - session_reward: 100, + offline_slash: Perbill::from_billionths(1_000_000), + session_reward: Perbill::from_billionths(60), + current_offline_slash: 0, + current_session_reward: 0, validator_count: 12, sessions_per_era: 12, // 1 hour per era bonding_duration: 24 * 60 * 12, // 1 day per bond. offline_slash_grace: 4, minimum_validator_count: 4, + _genesis_phantom_data: Default::default(), }), democracy: Some(DemocracyConfig { launch_period: 12 * 60 * 24, // 1 day per public referendum voting_period: 12 * 60 * 24 * 3, // 3 days to discuss & vote on an active referendum minimum_deposit: 5000, // 12000 as the minimum deposit for a referendum + _genesis_phantom_data: Default::default(), }), - council: Some(CouncilConfig { + council_seats: Some(CouncilSeatsConfig { active_council: vec![], candidacy_bond: 5000, // 5000 to become a council candidate voter_bond: 1000, // 1000 down to vote for a candidate @@ -83,20 +93,24 @@ fn staging_testnet_config_genesis() -> GenesisConfig { term_duration: 12 * 60 * 24 * 24, // 24 day term duration for the council. desired_seats: 0, // start with no council: we'll raise this once the stake has been dispersed a bit. inactive_grace_period: 1, // one addition vote should go by before an inactive voter can be reaped. - - cooloff_period: 12 * 60 * 24 * 4, // 4 day cooling off period if council member vetoes a proposal. - voting_period: 12 * 60 * 24, // 1 day voting period for council members. + _genesis_phantom_data: Default::default(), + }), + council_voting: Some(CouncilVotingConfig { + cooloff_period: 75, + voting_period: 20, + _genesis_phantom_data: Default::default(), }), parachains: Some(Default::default()), timestamp: Some(TimestampConfig { period: 5, // 5 second block time. + _genesis_phantom_data: Default::default(), }), treasury: Some(Default::default()), } } /// Staging testnet config. -pub fn staging_testnet_config() -> ChainSpec { +pub fn staging_testnet_config() -> ChainSpec { let boot_nodes = vec![]; ChainSpec::from_genesis( "Staging Testnet", @@ -104,6 +118,9 @@ pub fn staging_testnet_config() -> ChainSpec { staging_testnet_config_genesis, boot_nodes, Some(STAGING_TELEMETRY_URL.into()), + Some(DEFAULT_PROTOCOL_ID), + None, + None, ) } @@ -120,6 +137,7 @@ fn testnet_genesis(initial_authorities: Vec) -> GenesisConfig { consensus: Some(ConsensusConfig { code: include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm").to_vec(), authorities: initial_authorities.clone(), + _genesis_phantom_data: Default::default(), }), system: None, balances: Some(BalancesConfig { @@ -130,10 +148,12 @@ fn testnet_genesis(initial_authorities: Vec) -> GenesisConfig { creation_fee: 0, reclaim_rebate: 0, balances: endowed_accounts.iter().map(|&k|(k, (1u128 << 60))).collect(), + _genesis_phantom_data: Default::default(), }), session: Some(SessionConfig { validators: initial_authorities.iter().cloned().map(Into::into).collect(), session_length: 10, + _genesis_phantom_data: Default::default(), }), staking: Some(StakingConfig { current_era: 0, @@ -142,17 +162,21 @@ fn testnet_genesis(initial_authorities: Vec) -> GenesisConfig { validator_count: 2, sessions_per_era: 5, bonding_duration: 2 * 60 * 12, - offline_slash: 0, - session_reward: 0, + offline_slash: Perbill::zero(), + session_reward: Perbill::zero(), + current_offline_slash: 0, + current_session_reward: 0, offline_slash_grace: 0, + _genesis_phantom_data: Default::default(), }), democracy: Some(DemocracyConfig { launch_period: 9, voting_period: 18, minimum_deposit: 10, + _genesis_phantom_data: Default::default(), }), - council: Some(CouncilConfig { - active_council: endowed_accounts.iter().filter(|a| initial_authorities.iter().find(|&b| a.0 == b.0).is_none()).map(|a| (a.clone(), 1000000)).collect(), + council_seats: Some(CouncilSeatsConfig { + active_council: endowed_accounts.iter().filter(|a| initial_authorities.iter().find(|&b| a[..] == b.0).is_none()).map(|a| (a.clone(), 1000000)).collect(), candidacy_bond: 10, voter_bond: 2, present_slash_per_voter: 1, @@ -162,13 +186,17 @@ fn testnet_genesis(initial_authorities: Vec) -> GenesisConfig { term_duration: 1000000, desired_seats: (endowed_accounts.len() - initial_authorities.len()) as u32, inactive_grace_period: 1, - + _genesis_phantom_data: Default::default(), + }), + council_voting: Some(CouncilVotingConfig { cooloff_period: 75, voting_period: 20, + _genesis_phantom_data: Default::default(), }), parachains: Some(Default::default()), timestamp: Some(TimestampConfig { period: 5, // 5 second block time. + _genesis_phantom_data: Default::default(), }), treasury: Some(Default::default()), } @@ -181,8 +209,17 @@ fn development_config_genesis() -> GenesisConfig { } /// Development config (single validator Alice) -pub fn development_config() -> ChainSpec { - ChainSpec::from_genesis("Development", "development", development_config_genesis, vec![], None) +pub fn development_config() -> ChainSpec { + ChainSpec::from_genesis( + "Development", + "development", + development_config_genesis, + vec![], + None, + Some(DEFAULT_PROTOCOL_ID), + None, + None, + ) } fn local_testnet_genesis() -> GenesisConfig { @@ -193,6 +230,15 @@ fn local_testnet_genesis() -> GenesisConfig { } /// Local testnet config (multivalidator Alice + Bob) -pub fn local_testnet_config() -> ChainSpec { - ChainSpec::from_genesis("Local Testnet", "local_testnet", local_testnet_genesis, vec![], None) +pub fn local_testnet_config() -> ChainSpec { + ChainSpec::from_genesis( + "Local Testnet", + "local_testnet", + local_testnet_genesis, + vec![], + None, + Some(DEFAULT_PROTOCOL_ID), + None, + None, + ) } diff --git a/service/src/lib.rs b/service/src/lib.rs index 0e4569cf080a..d82d26ada763 100644 --- a/service/src/lib.rs +++ b/service/src/lib.rs @@ -22,14 +22,16 @@ extern crate polkadot_availability_store as av_store; extern crate polkadot_primitives; extern crate polkadot_runtime; extern crate polkadot_executor; -extern crate polkadot_api; -extern crate polkadot_consensus as consensus; -extern crate polkadot_transaction_pool as transaction_pool; extern crate polkadot_network; +extern crate sr_primitives; extern crate substrate_primitives as primitives; +#[macro_use] extern crate substrate_network as network; extern crate substrate_client as client; +#[macro_use] extern crate substrate_service as service; +extern crate substrate_consensus_aura as consensus; +extern crate substrate_transaction_pool as transaction_pool; extern crate tokio; #[macro_use] @@ -40,51 +42,27 @@ extern crate hex_literal; pub mod chain_spec; use std::sync::Arc; -use tokio::prelude::{Stream, Future}; -use transaction_pool::TransactionPool; -use polkadot_api::{PolkadotApi, light::RemotePolkadotApiWrapper}; -use polkadot_primitives::{parachain, AccountId, Block, BlockId, Hash}; -use polkadot_runtime::GenesisConfig; -use client::{Client, BlockchainEvents}; -use polkadot_network::{PolkadotProtocol, consensus::ConsensusNetwork}; +use polkadot_primitives::{parachain, AccountId, Block}; +use polkadot_runtime::{GenesisConfig, ClientWithApi}; use tokio::runtime::TaskExecutor; -use service::FactoryFullConfiguration; -use primitives::{Blake2Hasher, RlpCodec}; - -pub use service::{Roles, PruningMode, ExtrinsicPoolOptions, - ErrorKind, Error, ComponentBlock, LightComponents, FullComponents}; -pub use client::ExecutionStrategy; - -/// Specialised polkadot `ChainSpec`. -pub type ChainSpec = service::ChainSpec; -/// Polkadot client type for specialised `Components`. -pub type ComponentClient = Client<::Backend, ::Executor, Block>; -pub type NetworkService = network::Service::NetworkProtocol, Hash>; - -/// A collection of type to generalise Polkadot specific components over full / light client. -pub trait Components: service::Components { - /// Polkadot API. - type Api: 'static + PolkadotApi + Send + Sync; - /// Client backend. - type Backend: 'static + client::backend::Backend; - /// Client executor. - type Executor: 'static + client::CallExecutor + Send + Sync; -} - -impl Components for service::LightComponents { - type Api = RemotePolkadotApiWrapper< - as service::Components>::Backend, - as service::Components>::Executor, - >; - type Executor = service::LightExecutor; - type Backend = service::LightBackend; -} - -impl Components for service::FullComponents { - type Api = service::FullClient; - type Executor = service::FullExecutor; - type Backend = service::FullBackend; -} +use service::{FactoryFullConfiguration, FullBackend, LightBackend, FullExecutor, LightExecutor}; +use transaction_pool::txpool::{Pool as TransactionPool}; +use consensus::{import_queue, start_aura, Config as AuraConfig, AuraImportQueue, NothingExtra}; + +pub use service::{ + Roles, PruningMode, TransactionPoolOptions, ComponentClient, + ErrorKind, Error, ComponentBlock, LightComponents, FullComponents, + FullClient, LightClient, Components, Service, ServiceFactory +}; +pub use service::config::full_version_from_strs; +pub use client::{backend::Backend, runtime_api::Core as CoreApi, ExecutionStrategy}; +pub use polkadot_network::{PolkadotProtocol, NetworkService}; +pub use polkadot_primitives::parachain::ParachainHost; +pub use primitives::{Blake2Hasher}; +pub use sr_primitives::traits::ProvideRuntimeApi; +pub use chain_spec::ChainSpec; + +const AURA_SLOT_DURATION: u64 = 6; /// All configuration for the polkadot node. pub type Configuration = FactoryFullConfiguration; @@ -97,169 +75,123 @@ pub struct CustomConfiguration { pub collating_for: Option<(AccountId, parachain::Id)>, } -/// Polkadot config for the substrate service. -pub struct Factory; +/// Chain API type for the transaction pool. +pub type TxChainApi = transaction_pool::ChainApi< + client::Client, + Block, +>; -impl service::ServiceFactory for Factory { - type Block = Block; - type ExtrinsicHash = Hash; - type NetworkProtocol = PolkadotProtocol; - type RuntimeDispatch = polkadot_executor::Executor; - type FullExtrinsicPoolApi = transaction_pool::ChainApi>; - type LightExtrinsicPoolApi = transaction_pool::ChainApi< - RemotePolkadotApiWrapper, service::LightExecutor> - >; - type Genesis = GenesisConfig; - type Configuration = CustomConfiguration; +/// Provides polkadot types. +pub trait PolkadotService { + /// The client's backend type. + type Backend: 'static + client::backend::Backend; + /// The client's call executor type. + type Executor: 'static + client::CallExecutor + Send + Sync + Clone; - const NETWORK_PROTOCOL_ID: network::ProtocolId = ::polkadot_network::DOT_PROTOCOL_ID; + /// Get a handle to the client. + fn client(&self) -> Arc>; - fn build_full_extrinsic_pool(config: ExtrinsicPoolOptions, client: Arc>) - -> Result>, Error> - { - let api = client.clone(); - Ok(TransactionPool::new(config, transaction_pool::ChainApi::new(api))) - } + /// Get a handle to the network. + fn network(&self) -> Arc; - fn build_light_extrinsic_pool(config: ExtrinsicPoolOptions, client: Arc>) - -> Result, service::LightExecutor>>, Error> - { - let api = Arc::new(RemotePolkadotApiWrapper(client.clone())); - Ok(TransactionPool::new(config, transaction_pool::ChainApi::new(api))) - } - - fn build_network_protocol(config: &Configuration) - -> Result - { - if let Some((_, ref para_id)) = config.custom.collating_for { - info!("Starting network in Collator mode for parachain {:?}", para_id); - } - Ok(PolkadotProtocol::new(config.custom.collating_for)) - } + /// Get a handle to the transaction pool. + fn transaction_pool(&self) -> Arc>>; } -/// Polkadot service. -pub struct Service { - inner: service::Service, - client: Arc>, - network: Arc, - api: Arc<::Api>, - _consensus: Option, -} +impl PolkadotService for Service> { + type Backend = as Components>::Backend; + type Executor = as Components>::Executor; -impl Service { - pub fn client(&self) -> Arc> { - self.client.clone() + fn client(&self) -> Arc> { + Service::client(self) } - - pub fn network(&self) -> Arc { - self.network.clone() + fn network(&self) -> Arc { + Service::network(self) } - pub fn api(&self) -> Arc<::Api> { - self.api.clone() + fn transaction_pool(&self) -> Arc>> { + Service::transaction_pool(self) } } -/// Creates light client and register protocol with the network service -pub fn new_light(config: Configuration, executor: TaskExecutor) - -> Result>, Error> -{ - let service = service::Service::>::new(config, executor.clone())?; - let api = Arc::new(RemotePolkadotApiWrapper(service.client())); - let pool = service.extrinsic_pool(); - let events = service.client().import_notification_stream() - .for_each(move |notification| { - // re-verify all transactions without the sender. - pool.retry_verification(&BlockId::hash(notification.hash), None) - .map_err(|e| warn!("Error re-verifying transactions: {:?}", e))?; - Ok(()) - }) - .then(|_| Ok(())); - executor.spawn(events); - Ok(Service { - client: service.client(), - network: service.network(), - api: api, - inner: service, - _consensus: None, - }) -} - -/// Creates full client and register protocol with the network service -pub fn new_full(config: Configuration, executor: TaskExecutor) - -> Result>, Error> -{ - // open availability store. - let av_store = { - use std::path::PathBuf; - - let mut path = PathBuf::from(config.database_path.clone()); - path.push("availability"); - - ::av_store::Store::new(::av_store::Config { - cache_size: None, - path, - })? - }; - - let is_validator = (config.roles & Roles::AUTHORITY) == Roles::AUTHORITY; - let service = service::Service::>::new(config, executor.clone())?; - let pool = service.extrinsic_pool(); - let events = service.client().import_notification_stream() - .for_each(move |notification| { - // re-verify all transactions without the sender. - pool.retry_verification(&BlockId::hash(notification.hash), None) - .map_err(|e| warn!("Error re-verifying transactions: {:?}", e))?; - Ok(()) - }) - .then(|_| Ok(())); - executor.spawn(events); - // Spin consensus service if configured - let consensus = if is_validator { - // Load the first available key - let key = service.keystore().load(&service.keystore().contents()?[0], "")?; - info!("Using authority key {}", key.public()); - - let client = service.client(); - - let consensus_net = ConsensusNetwork::new(service.network(), client.clone()); - Some(consensus::Service::new( - client.clone(), - client.clone(), - consensus_net, - service.extrinsic_pool(), - executor, - ::std::time::Duration::from_secs(4), // TODO: dynamic - key, - av_store.clone(), - )) - } else { - None - }; +impl PolkadotService for Service> { + type Backend = as Components>::Backend; + type Executor = as Components>::Executor; - service.network().with_spec(|spec, _| spec.register_availability_store(av_store)); - - Ok(Service { - client: service.client(), - network: service.network(), - api: service.client(), - inner: service, - _consensus: consensus, - }) -} + fn client(&self) -> Arc> { + Service::client(self) + } + fn network(&self) -> Arc { + Service::network(self) + } -/// Creates bare client without any networking. -pub fn new_client(config: Configuration) --> Result>>, Error> -{ - service::new_client::(config) + fn transaction_pool(&self) -> Arc>> { + Service::transaction_pool(self) + } } -impl ::std::ops::Deref for Service { - type Target = service::Service; - - fn deref(&self) -> &Self::Target { - &self.inner +construct_service_factory! { + struct Factory { + Block = Block, + RuntimeApi = ClientWithApi, + NetworkProtocol = PolkadotProtocol { |config: &Configuration| Ok(PolkadotProtocol::new(config.custom.collating_for)) }, + RuntimeDispatch = polkadot_executor::Executor, + FullTransactionPoolApi = TxChainApi, FullExecutor> + { |config, client| Ok(TransactionPool::new(config, TxChainApi::new(client))) }, + LightTransactionPoolApi = TxChainApi, LightExecutor> + { |config, client| Ok(TransactionPool::new(config, TxChainApi::new(client))) }, + Genesis = GenesisConfig, + Configuration = CustomConfiguration, + FullService = FullComponents + { |config: FactoryFullConfiguration, executor: TaskExecutor| { + let is_auth = config.roles == Roles::AUTHORITY; + FullComponents::::new(config, executor.clone()).map(move |service|{ + if is_auth { + if let Ok(Some(Ok(key))) = service.keystore().contents() + .map(|keys| keys.get(0).map(|k| service.keystore().load(k, ""))) + { + info!("Using authority key {}", key.public()); + let task = start_aura( + AuraConfig { + local_key: Some(Arc::new(key)), + slot_duration: AURA_SLOT_DURATION, + }, + service.client(), + service.proposer(), + service.network(), + ); + + executor.spawn(task); + } + } + + service + }) + } + }, + AuthoritySetup = { |service, _, _| Ok(service) }, + LightService = LightComponents + { |config, executor| >::new(config, executor) }, + FullImportQueue = AuraImportQueue, NothingExtra> + { |config, client| Ok(import_queue( + AuraConfig { + local_key: None, + slot_duration: 5 + }, + client, + NothingExtra, + )) + }, + LightImportQueue = AuraImportQueue, NothingExtra> + { |config, client| Ok(import_queue( + AuraConfig { + local_key: None, + slot_duration: 5 + }, + client, + NothingExtra, + )) + }, } } + diff --git a/src/main.rs b/src/main.rs index d3e951596e20..ee86a93aba3f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -25,7 +25,7 @@ extern crate futures; #[macro_use] extern crate error_chain; -use cli::{ServiceComponents, Service, VersionInfo}; +use cli::{PolkadotService, VersionInfo}; use futures::sync::oneshot; use futures::{future, Future}; @@ -57,7 +57,7 @@ impl cli::IntoExit for Worker { impl cli::Worker for Worker { type Work = ::Exit; - fn work(self, _service: &Service) -> Self::Work { + fn work(self, _service: &S) -> Self::Work { use cli::IntoExit; self.into_exit() } diff --git a/statement-table/Cargo.toml b/statement-table/Cargo.toml index eda77e17795c..5616ca7af423 100644 --- a/statement-table/Cargo.toml +++ b/statement-table/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" authors = ["Parity Technologies "] [dependencies] -parity-codec = { git = "https://github.com/paritytech/substrate" } -parity-codec-derive = { git = "https://github.com/paritytech/substrate" } +parity-codec = "2.1" +parity-codec-derive = "2.1" substrate-primitives = { git = "https://github.com/paritytech/substrate" } polkadot-primitives = { path = "../primitives" } diff --git a/test-parachains/adder/Cargo.toml b/test-parachains/adder/Cargo.toml index faa07b81e01c..255f4303cbbb 100644 --- a/test-parachains/adder/Cargo.toml +++ b/test-parachains/adder/Cargo.toml @@ -6,5 +6,6 @@ description = "Test parachain which adds to a number as its state transition" [dependencies] polkadot-parachain = { path = "../../parachain/", default-features = false } -parity-codec-derive = { git = "https://github.com/paritytech/substrate", default-features = false } +parity-codec = { version = "2.1", default-features = false } +parity-codec-derive = { version = "2.1", default-features = false } tiny-keccak = "1.4" diff --git a/test-parachains/adder/src/lib.rs b/test-parachains/adder/src/lib.rs index ff237fb9c350..bc2e2ca02933 100644 --- a/test-parachains/adder/src/lib.rs +++ b/test-parachains/adder/src/lib.rs @@ -20,11 +20,11 @@ #[macro_use] extern crate parity_codec_derive; - +extern crate parity_codec; extern crate polkadot_parachain as parachain; extern crate tiny_keccak; -use parachain::codec::{self, Encode}; +use parity_codec::Encode; /// Head data for this parachain. #[derive(Default, Clone, Hash, Eq, PartialEq, Encode, Decode)] diff --git a/transaction-pool/Cargo.toml b/transaction-pool/Cargo.toml deleted file mode 100644 index bb4685ee4fc8..000000000000 --- a/transaction-pool/Cargo.toml +++ /dev/null @@ -1,18 +0,0 @@ -[package] -name = "polkadot-transaction-pool" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -log = "0.3.0" -error-chain = "0.12" -parking_lot = "0.4" -polkadot-api = { path = "../api" } -polkadot-primitives = { path = "../primitives" } -polkadot-runtime = { path = "../runtime" } -substrate-client = { git = "https://github.com/paritytech/substrate" } -parity-codec = { git = "https://github.com/paritytech/substrate" } -substrate-keyring = { git = "https://github.com/paritytech/substrate" } -substrate-extrinsic-pool = { git = "https://github.com/paritytech/substrate" } -substrate-primitives = { git = "https://github.com/paritytech/substrate" } -sr-primitives = { git = "https://github.com/paritytech/substrate" } diff --git a/transaction-pool/README.adoc b/transaction-pool/README.adoc deleted file mode 100644 index 868a3434b3e9..000000000000 --- a/transaction-pool/README.adoc +++ /dev/null @@ -1,5 +0,0 @@ - -= Polkadot Transactin pool - -placeholder -//TODO Write content :) diff --git a/transaction-pool/src/error.rs b/transaction-pool/src/error.rs deleted file mode 100644 index 66876bc6100a..000000000000 --- a/transaction-pool/src/error.rs +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2018 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 . - -use extrinsic_pool; -use polkadot_api; -use primitives::Hash; -use runtime::{Address, UncheckedExtrinsic}; - -error_chain! { - links { - Pool(extrinsic_pool::Error, extrinsic_pool::ErrorKind); - Api(polkadot_api::Error, polkadot_api::ErrorKind); - } - errors { - /// Unexpected extrinsic format submitted - InvalidExtrinsicFormat { - description("Invalid extrinsic format."), - display("Invalid extrinsic format."), - } - /// Attempted to queue an inherent transaction. - IsInherent(xt: UncheckedExtrinsic) { - description("Inherent transactions cannot be queued."), - display("Inherent transactions cannot be queued."), - } - /// Attempted to queue a transaction with bad signature. - BadSignature(e: &'static str) { - description("Transaction had bad signature."), - display("Transaction had bad signature: {}", e), - } - /// Attempted to queue a transaction that is already in the pool. - AlreadyImported(hash: Hash) { - description("Transaction is already in the pool."), - display("Transaction {:?} is already in the pool.", hash), - } - /// Import error. - Import(err: Box<::std::error::Error + Send>) { - description("Error importing transaction"), - display("Error importing transaction: {}", err.description()), - } - /// Runtime failure. - UnrecognisedAddress(who: Address) { - description("Unrecognised address in extrinsic"), - display("Unrecognised address in extrinsic: {}", who), - } - /// Extrinsic too large - TooLarge(got: usize, max: usize) { - description("Extrinsic too large"), - display("Extrinsic is too large ({} > {})", got, max), - } - } -} - -impl extrinsic_pool::IntoPoolError for Error { - fn into_pool_error(self) -> ::std::result::Result { - match self { - Error(ErrorKind::Pool(e), c) => Ok(extrinsic_pool::Error(e, c)), - e => Err(e), - } - } -} diff --git a/transaction-pool/src/lib.rs b/transaction-pool/src/lib.rs deleted file mode 100644 index acb0d10f1eb8..000000000000 --- a/transaction-pool/src/lib.rs +++ /dev/null @@ -1,579 +0,0 @@ -// Copyright 2018 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 . - -extern crate substrate_client as client; -extern crate parity_codec as codec; -extern crate substrate_extrinsic_pool as extrinsic_pool; -extern crate substrate_primitives; -extern crate sr_primitives; -extern crate polkadot_runtime as runtime; -extern crate polkadot_primitives as primitives; -extern crate polkadot_api; -extern crate parking_lot; - -#[cfg(test)] -extern crate substrate_keyring; - -#[macro_use] -extern crate error_chain; - -#[macro_use] -extern crate log; - -mod error; - -use std::{ - cmp::Ordering, - collections::HashMap, - sync::Arc, -}; - -use codec::{Decode, Encode}; -use extrinsic_pool::{Readiness, scoring::{Change, Choice}, VerifiedFor, ExtrinsicFor}; -use polkadot_api::PolkadotApi; -use primitives::{AccountId, BlockId, Block, Hash, Index}; -use runtime::{Address, UncheckedExtrinsic}; -use sr_primitives::traits::{Bounded, Checkable, Hash as HashT, BlakeTwo256}; - -pub use extrinsic_pool::{Options, Status, LightStatus, VerifiedTransaction as VerifiedTransactionOps}; -pub use error::{Error, ErrorKind, Result}; - -/// Maximal size of a single encoded extrinsic. -/// -/// See also polkadot-consensus::MAX_TRANSACTIONS_SIZE -const MAX_TRANSACTION_SIZE: usize = 4 * 1024 * 1024; - -/// Type alias for convenience. -pub type CheckedExtrinsic = std::result::Result>>::Checked; - -/// Type alias for polkadot transaction pool. -pub type TransactionPool = extrinsic_pool::Pool>; - -/// A verified transaction which should be includable and non-inherent. -#[derive(Clone, Debug)] -pub struct VerifiedTransaction { - inner: Option, - sender: Option, - hash: Hash, - encoded_size: usize, - index: Index, -} - -impl VerifiedTransaction { - /// Consume the verified transaction, yielding the checked counterpart. - pub fn into_inner(self) -> Option { - self.inner - } - - /// Get the 256-bit hash of this transaction. - pub fn hash(&self) -> &Hash { - &self.hash - } - - /// Get the account ID of the sender of this transaction. - pub fn sender(&self) -> Option { - self.sender - } - - /// Get the account ID of the sender of this transaction. - pub fn index(&self) -> Index { - self.index - } - - /// Get encoded size of the transaction. - pub fn encoded_size(&self) -> usize { - self.encoded_size - } - - /// Returns `true` if the transaction is not yet fully verified. - pub fn is_fully_verified(&self) -> bool { - self.inner.is_some() - } -} - -impl extrinsic_pool::VerifiedTransaction for VerifiedTransaction { - type Hash = Hash; - type Sender = Option; - - fn hash(&self) -> &Self::Hash { - &self.hash - } - - fn sender(&self) -> &Self::Sender { - &self.sender - } - - fn mem_usage(&self) -> usize { - self.encoded_size // TODO - } -} - -/// The polkadot transaction pool logic. -pub struct ChainApi { - api: Arc, -} - -impl ChainApi where - A: PolkadotApi, -{ - const NO_ACCOUNT: &'static str = "Account not found."; - /// Create a new instance. - pub fn new(api: Arc) -> Self { - ChainApi { - api, - } - } - - fn lookup(&self, at: &BlockId, address: Address) -> ::std::result::Result { - // TODO [ToDr] Consider introducing a cache for this. - match self.api.lookup(at, address.clone()) { - Ok(Some(address)) => Ok(address), - Ok(None) => Err(Self::NO_ACCOUNT.into()), - Err(e) => { - error!("Error looking up address: {:?}: {:?}", address, e); - Err("API error.") - }, - } - } -} - -impl extrinsic_pool::ChainApi for ChainApi where - A: PolkadotApi + Send + Sync, -{ - type Block = Block; - type Hash = Hash; - type Sender = Option; - type VEx = VerifiedTransaction; - type Ready = HashMap; - type Error = Error; - type Score = u64; - type Event = (); - - fn verify_transaction(&self, at: &BlockId, xt: &ExtrinsicFor) -> Result { - let encoded = xt.encode(); - let uxt = UncheckedExtrinsic::decode(&mut encoded.as_slice()).ok_or_else(|| ErrorKind::InvalidExtrinsicFormat)?; - if !uxt.is_signed() { - bail!(ErrorKind::IsInherent(uxt)) - } - - let (encoded_size, hash) = (encoded.len(), BlakeTwo256::hash(&encoded)); - if encoded_size > MAX_TRANSACTION_SIZE { - bail!(ErrorKind::TooLarge(encoded_size, MAX_TRANSACTION_SIZE)); - } - - debug!(target: "transaction-pool", "Transaction submitted: {}", ::substrate_primitives::hexdisplay::HexDisplay::from(&encoded)); - let inner = match uxt.clone().check_with(|a| self.lookup(at, a)) { - Ok(xt) => Some(xt), - // keep the transaction around in the future pool and attempt to promote it later. - Err(Self::NO_ACCOUNT) => None, - Err(e) => bail!(e), - }; - let sender = match inner.as_ref() { - Some(cxt) => match cxt.signed { - Some(ref sender) => Some(sender.clone()), - None => bail!(ErrorKind::IsInherent(uxt)) - }, - None => None, - }; - - if encoded_size < 1024 { - debug!(target: "transaction-pool", "Transaction verified: {} => {:?}", hash, uxt); - } else { - debug!(target: "transaction-pool", "Transaction verified: {} ({} bytes is too large to display)", hash, encoded_size); - } - - Ok(VerifiedTransaction { - index: uxt.index, - inner, - sender, - hash, - encoded_size, - }) - } - - fn ready(&self) -> Self::Ready { - HashMap::default() - } - - fn is_ready(&self, at: &BlockId, known_nonces: &mut Self::Ready, xt: &VerifiedFor) -> Readiness { - let sender = match xt.verified.sender() { - Some(sender) => sender, - None => return Readiness::Future - }; - - trace!(target: "transaction-pool", "Checking readiness of {} (from {})", xt.verified.hash, Hash::from(sender)); - - // TODO: find a way to handle index error properly -- will need changes to - // transaction-pool trait. - let api = &self.api; - let next_index = known_nonces.entry(sender) - .or_insert_with(|| api.index(at, sender).ok().unwrap_or_else(Bounded::max_value)); - - trace!(target: "transaction-pool", "Next index for sender is {}; xt index is {}", next_index, xt.verified.index); - - let result = match xt.verified.index.cmp(&next_index) { - // TODO: this won't work perfectly since accounts can now be killed, returning the nonce - // to zero. - // We should detect if the index was reset and mark all transactions as `Stale` for cull to work correctly. - // Otherwise those transactions will keep occupying the queue. - // Perhaps we could mark as stale if `index - state_index` > X? - Ordering::Greater => Readiness::Future, - Ordering::Equal => Readiness::Ready, - // TODO [ToDr] Should mark transactions referencing too old blockhash as `Stale` as well. - Ordering::Less => Readiness::Stale, - }; - - // remember to increment `next_index` - *next_index = next_index.saturating_add(1); - - result - } - - fn compare(old: &VerifiedFor, other: &VerifiedFor) -> Ordering { - old.verified.index().cmp(&other.verified.index()) - } - - fn choose(old: &VerifiedFor, new: &VerifiedFor) -> Choice { - if old.verified.is_fully_verified() { - assert!(new.verified.is_fully_verified(), "Scoring::choose called with transactions from different senders"); - if old.verified.index() == new.verified.index() { - return Choice::ReplaceOld; - } - } - - // This will keep both transactions, even though they have the same indices. - // It's fine for not fully verified transactions, we might also allow it for - // verified transactions but it would mean that only one of the two is actually valid - // (most likely the first to be included in the block). - Choice::InsertNew - } - - fn update_scores( - xts: &[extrinsic_pool::Transaction>], - scores: &mut [Self::Score], - _change: Change<()> - ) { - for i in 0..xts.len() { - if !xts[i].verified.is_fully_verified() { - scores[i] = 0; - } else { - // all the same score since there are no fees. - // TODO: prioritize things like misbehavior or fishermen reports - scores[i] = 1; - } - } - } - - fn should_replace(old: &VerifiedFor, _new: &VerifiedFor) -> Choice { - if old.verified.is_fully_verified() { - // Don't allow new transactions if we are reaching the limit. - Choice::RejectNew - } else { - // Always replace not fully verified transactions. - Choice::ReplaceOld - } - } -} - -#[cfg(test)] -mod tests { - use std::sync::{atomic::{self, AtomicBool}, Arc}; - use substrate_keyring::Keyring::{self, *}; - use codec::{Decode, Encode}; - use polkadot_api::{PolkadotApi, BlockBuilder, Result}; - use primitives::{AccountId, AccountIndex, Block, BlockId, Hash, Index, SessionKey, - UncheckedExtrinsic as FutureProofUncheckedExtrinsic}; - use runtime::{RawAddress, Call, TimestampCall, UncheckedExtrinsic}; - use primitives::parachain::{DutyRoster, Id as ParaId}; - use sr_primitives::generic; - use extrinsic_pool::Pool; - use super::ChainApi; - - struct TestBlockBuilder; - impl BlockBuilder for TestBlockBuilder { - fn push_extrinsic(&mut self, _extrinsic: FutureProofUncheckedExtrinsic) -> Result<()> { unimplemented!() } - fn bake(self) -> Result { unimplemented!() } - } - - fn number_of(at: &BlockId) -> u32 { - match at { - generic::BlockId::Number(n) => *n as u32, - _ => 0, - } - } - - #[derive(Default, Clone)] - struct TestPolkadotApi { - no_lookup: Arc, - } - - impl TestPolkadotApi { - fn without_lookup() -> Self { - TestPolkadotApi { - no_lookup: Arc::new(AtomicBool::new(true)), - } - } - - pub fn enable_lookup(&self) { - self.no_lookup.store(false, atomic::Ordering::SeqCst); - } - } - - impl PolkadotApi for TestPolkadotApi { - type BlockBuilder = TestBlockBuilder; - - fn session_keys(&self, _at: &BlockId) -> Result> { unimplemented!() } - fn validators(&self, _at: &BlockId) -> Result> { unimplemented!() } - fn random_seed(&self, _at: &BlockId) -> Result { unimplemented!() } - fn duty_roster(&self, _at: &BlockId) -> Result { unimplemented!() } - fn timestamp(&self, _at: &BlockId) -> Result { unimplemented!() } - fn evaluate_block(&self, _at: &BlockId, _block: Block) -> Result { unimplemented!() } - fn active_parachains(&self, _at: &BlockId) -> Result> { unimplemented!() } - fn parachain_code(&self, _at: &BlockId, _parachain: ParaId) -> Result>> { unimplemented!() } - fn parachain_head(&self, _at: &BlockId, _parachain: ParaId) -> Result>> { unimplemented!() } - fn build_block(&self, _at: &BlockId, _inherent: ::primitives::InherentData) -> Result { unimplemented!() } - fn inherent_extrinsics(&self, _at: &BlockId, _inherent: ::primitives::InherentData) -> Result> { unimplemented!() } - - fn index(&self, _at: &BlockId, _account: AccountId) -> Result { - Ok((_account[0] as u32) + number_of(_at)) - } - fn lookup(&self, _at: &BlockId, _address: RawAddress) -> Result> { - match _address { - RawAddress::Id(i) => Ok(Some(i)), - RawAddress::Index(_) if self.no_lookup.load(atomic::Ordering::SeqCst) => Ok(None), - RawAddress::Index(i) => Ok(match (i < 8, i + (number_of(_at) as u64) % 8) { - (false, _) => None, - (_, 0) => Some(Alice.to_raw_public().into()), - (_, 1) => Some(Bob.to_raw_public().into()), - (_, 2) => Some(Charlie.to_raw_public().into()), - (_, 3) => Some(Dave.to_raw_public().into()), - (_, 4) => Some(Eve.to_raw_public().into()), - (_, 5) => Some(Ferdie.to_raw_public().into()), - (_, 6) => Some(One.to_raw_public().into()), - (_, 7) => Some(Two.to_raw_public().into()), - _ => None, - }), - } - } - } - - fn uxt(who: Keyring, nonce: Index, use_id: bool) -> FutureProofUncheckedExtrinsic { - let sxt = (nonce, Call::Timestamp(TimestampCall::set(0))); - let sig = sxt.using_encoded(|e| who.sign(e)); - let signed = who.to_raw_public().into(); - let sender = if use_id { RawAddress::Id(signed) } else { RawAddress::Index( - match who { - Alice => 0, - Bob => 1, - Charlie => 2, - Dave => 3, - Eve => 4, - Ferdie => 5, - One => 6, - Two => 7, - } - )}; - UncheckedExtrinsic::new_signed(sxt.0, sxt.1, sender, sig.into()) - .using_encoded(|e| FutureProofUncheckedExtrinsic::decode(&mut &e[..])) - .unwrap() - } - - fn pool(api: &TestPolkadotApi) -> Pool> { - Pool::new(Default::default(), ChainApi { api: Arc::new(api.clone()) }) - } - - #[test] - fn id_submission_should_work() { - let api = TestPolkadotApi::default(); - let pool = pool(&api); - pool.submit_one(&BlockId::number(0), uxt(Alice, 209, true)).unwrap(); - - let pending: Vec<_> = pool.cull_and_get_pending(&BlockId::number(0), |p| p.map(|a| (a.verified.sender(), a.verified.index())).collect()).unwrap(); - assert_eq!(pending, vec![(Some(Alice.to_raw_public().into()), 209)]); - } - - #[test] - fn index_submission_should_work() { - let api = TestPolkadotApi::default(); - let pool = pool(&api); - pool.submit_one(&BlockId::number(0), uxt(Alice, 209, false)).unwrap(); - - let pending: Vec<_> = pool.cull_and_get_pending(&BlockId::number(0), |p| p.map(|a| (a.verified.sender(), a.verified.index())).collect()).unwrap(); - assert_eq!(pending, vec![(Some(Alice.to_raw_public().into()), 209)]); - } - - #[test] - fn multiple_id_submission_should_work() { - let api = TestPolkadotApi::default(); - let pool = pool(&api); - pool.submit_one(&BlockId::number(0), uxt(Alice, 209, true)).unwrap(); - pool.submit_one(&BlockId::number(0), uxt(Alice, 210, true)).unwrap(); - - let pending: Vec<_> = pool.cull_and_get_pending(&BlockId::number(0), |p| p.map(|a| (a.verified.sender(), a.verified.index())).collect()).unwrap(); - assert_eq!(pending, vec![(Some(Alice.to_raw_public().into()), 209), (Some(Alice.to_raw_public().into()), 210)]); - } - - #[test] - fn multiple_index_submission_should_work() { - let api = TestPolkadotApi::default(); - let pool = pool(&api); - pool.submit_one(&BlockId::number(0), uxt(Alice, 209, false)).unwrap(); - pool.submit_one(&BlockId::number(0), uxt(Alice, 210, false)).unwrap(); - - let pending: Vec<_> = pool.cull_and_get_pending(&BlockId::number(0), |p| p.map(|a| (a.verified.sender(), a.verified.index())).collect()).unwrap(); - assert_eq!(pending, vec![(Some(Alice.to_raw_public().into()), 209), (Some(Alice.to_raw_public().into()), 210)]); - } - - #[test] - fn id_based_early_nonce_should_be_culled() { - let api = TestPolkadotApi::default(); - let pool = pool(&api); - pool.submit_one(&BlockId::number(0), uxt(Alice, 208, true)).unwrap(); - - let pending: Vec<_> = pool.cull_and_get_pending(&BlockId::number(0), |p| p.map(|a| (a.verified.sender(), a.verified.index())).collect()).unwrap(); - assert_eq!(pending, vec![]); - } - - #[test] - fn index_based_early_nonce_should_be_culled() { - let api = TestPolkadotApi::default(); - let pool = pool(&api); - pool.submit_one(&BlockId::number(0), uxt(Alice, 208, false)).unwrap(); - - let pending: Vec<_> = pool.cull_and_get_pending(&BlockId::number(0), |p| p.map(|a| (a.verified.sender(), a.verified.index())).collect()).unwrap(); - assert_eq!(pending, vec![]); - } - - #[test] - fn id_based_late_nonce_should_be_queued() { - let api = TestPolkadotApi::default(); - let pool = pool(&api); - - pool.submit_one(&BlockId::number(0), uxt(Alice, 210, true)).unwrap(); - let pending: Vec<_> = pool.cull_and_get_pending(&BlockId::number(0), |p| p.map(|a| (a.verified.sender(), a.verified.index())).collect()).unwrap(); - assert_eq!(pending, vec![]); - - pool.submit_one(&BlockId::number(0), uxt(Alice, 209, true)).unwrap(); - let pending: Vec<_> = pool.cull_and_get_pending(&BlockId::number(0), |p| p.map(|a| (a.verified.sender(), a.verified.index())).collect()).unwrap(); - assert_eq!(pending, vec![(Some(Alice.to_raw_public().into()), 209), (Some(Alice.to_raw_public().into()), 210)]); - } - - #[test] - fn index_based_late_nonce_should_be_queued() { - let api = TestPolkadotApi::default(); - let pool = pool(&api); - - pool.submit_one(&BlockId::number(0), uxt(Alice, 210, false)).unwrap(); - let pending: Vec<_> = pool.cull_and_get_pending(&BlockId::number(0), |p| p.map(|a| (a.verified.sender(), a.verified.index())).collect()).unwrap(); - assert_eq!(pending, vec![]); - - pool.submit_one(&BlockId::number(0), uxt(Alice, 209, false)).unwrap(); - let pending: Vec<_> = pool.cull_and_get_pending(&BlockId::number(0), |p| p.map(|a| (a.verified.sender(), a.verified.index())).collect()).unwrap(); - assert_eq!(pending, vec![(Some(Alice.to_raw_public().into()), 209), (Some(Alice.to_raw_public().into()), 210)]); - } - - #[test] - fn index_then_id_submission_should_make_progress() { - let api = TestPolkadotApi::without_lookup(); - let pool = pool(&api); - pool.submit_one(&BlockId::number(0), uxt(Alice, 209, false)).unwrap(); - pool.submit_one(&BlockId::number(0), uxt(Alice, 210, true)).unwrap(); - - let pending: Vec<_> = pool.cull_and_get_pending(&BlockId::number(0), |p| p.map(|a| (a.verified.sender(), a.verified.index())).collect()).unwrap(); - assert_eq!(pending, vec![]); - - api.enable_lookup(); - pool.retry_verification(&BlockId::number(0), None).unwrap(); - - let pending: Vec<_> = pool.cull_and_get_pending(&BlockId::number(0), |p| p.map(|a| (a.verified.sender(), a.verified.index())).collect()).unwrap(); - assert_eq!(pending, vec![ - (Some(Alice.to_raw_public().into()), 209), - (Some(Alice.to_raw_public().into()), 210) - ]); - } - - #[test] - fn retrying_verification_might_not_change_anything() { - let api = TestPolkadotApi::without_lookup(); - let pool = pool(&api); - pool.submit_one(&BlockId::number(0), uxt(Alice, 209, false)).unwrap(); - pool.submit_one(&BlockId::number(0), uxt(Alice, 210, true)).unwrap(); - - let pending: Vec<_> = pool.cull_and_get_pending(&BlockId::number(0), |p| p.map(|a| (a.verified.sender(), a.verified.index())).collect()).unwrap(); - assert_eq!(pending, vec![]); - - pool.retry_verification(&BlockId::number(1), None).unwrap(); - - let pending: Vec<_> = pool.cull_and_get_pending(&BlockId::number(0), |p| p.map(|a| (a.verified.sender(), a.verified.index())).collect()).unwrap(); - assert_eq!(pending, vec![]); - } - - #[test] - fn id_then_index_submission_should_make_progress() { - let api = TestPolkadotApi::without_lookup(); - let pool = pool(&api); - pool.submit_one(&BlockId::number(0), uxt(Alice, 209, true)).unwrap(); - pool.submit_one(&BlockId::number(0), uxt(Alice, 210, false)).unwrap(); - - let pending: Vec<_> = pool.cull_and_get_pending(&BlockId::number(0), |p| p.map(|a| (a.verified.sender(), a.verified.index())).collect()).unwrap(); - assert_eq!(pending, vec![ - (Some(Alice.to_raw_public().into()), 209) - ]); - - // when - api.enable_lookup(); - pool.retry_verification(&BlockId::number(0), None).unwrap(); - - let pending: Vec<_> = pool.cull_and_get_pending(&BlockId::number(0), |p| p.map(|a| (a.verified.sender(), a.verified.index())).collect()).unwrap(); - assert_eq!(pending, vec![ - (Some(Alice.to_raw_public().into()), 209), - (Some(Alice.to_raw_public().into()), 210) - ]); - } - - #[test] - fn index_change_should_result_in_second_tx_culled_or_future() { - let api = TestPolkadotApi::default(); - let pool = pool(&api); - let block = BlockId::number(0); - pool.submit_one(&block, uxt(Alice, 209, false)).unwrap(); - let hash = *pool.submit_one(&block, uxt(Alice, 210, false)).unwrap().verified.hash(); - - let pending: Vec<_> = pool.cull_and_get_pending(&block, |p| p.map(|a| (a.verified.sender(), a.verified.index())).collect()).unwrap(); - assert_eq!(pending, vec![ - (Some(Alice.to_raw_public().into()), 209), - (Some(Alice.to_raw_public().into()), 210) - ]); - - // first xt is mined, but that has a side-effect of switching index 0 from Alice to Bob. - // second xt now invalid signature, so it fails. - - // there is no way of reporting this back to the queue right now (TODO). this should cause - // the queue to flush all information regarding the sender index/account. - - // after this, a re-evaluation of the second's readiness should result in it being thrown - // out (or maybe placed in future queue). - let err = pool.reverify_transaction(&BlockId::number(1), hash).unwrap_err(); - match *err.kind() { - ::error::ErrorKind::Msg(ref m) if m == "bad signature in extrinsic" => {}, - ref e => assert!(false, "The transaction should be rejected with BadSignature error, got: {:?}", e), - } - - let pending: Vec<_> = pool.cull_and_get_pending(&BlockId::number(1), |p| p.map(|a| (a.verified.sender(), a.verified.index())).collect()).unwrap(); - assert_eq!(pending, vec![]); - - } -}