From 82e866be42b55674f978d5307f9ce69e39426457 Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Tue, 29 Jan 2019 14:06:40 +0100 Subject: [PATCH] Use new externs for eth crypto (#114) * Add claims. * Failing build * Updatee to latest substrate, fix tests * Remove unneeded * Introduce tests with real work sig * Use right 64 bytes of pubkey to get eth addr * Fix for eth sig * Fix build * Fix wasm * Use new externs for eth crypto. * Bump spec version * New runtime --- polkadot/Cargo.lock | 129 +++++------ polkadot/runtime/Cargo.toml | 4 +- polkadot/runtime/src/claims.rs | 75 ++++--- polkadot/runtime/src/lib.rs | 11 +- polkadot/runtime/wasm/Cargo.lock | 207 +++++++++--------- .../release/polkadot_runtime.compact.wasm | Bin 1658721 -> 517588 bytes .../release/polkadot_runtime.wasm | Bin 1823205 -> 746229 bytes 7 files changed, 217 insertions(+), 209 deletions(-) diff --git a/polkadot/Cargo.lock b/polkadot/Cargo.lock index b420237a12..e456327378 100644 --- a/polkadot/Cargo.lock +++ b/polkadot/Cargo.lock @@ -669,18 +669,6 @@ dependencies = [ "heapsize 0.4.2 (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.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "env_logger" version = "0.6.0" @@ -2874,7 +2862,7 @@ dependencies = [ [[package]] name = "sr-api-macros" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2885,22 +2873,24 @@ dependencies = [ [[package]] name = "sr-io" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "environmental 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "hash-db 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libsecp256k1 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (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)", "substrate-trie 0.4.0 (git+https://github.com/paritytech/substrate)", + "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sr-primitives" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" 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)", @@ -2917,7 +2907,7 @@ dependencies = [ [[package]] name = "sr-std" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2925,7 +2915,7 @@ dependencies = [ [[package]] name = "sr-version" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "impl-serde 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2939,7 +2929,7 @@ dependencies = [ [[package]] name = "srml-aura" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2960,7 +2950,7 @@ dependencies = [ [[package]] name = "srml-balances" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2979,7 +2969,7 @@ dependencies = [ [[package]] name = "srml-consensus" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2997,7 +2987,7 @@ dependencies = [ [[package]] name = "srml-council" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3017,7 +3007,7 @@ dependencies = [ [[package]] name = "srml-democracy" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3036,7 +3026,7 @@ dependencies = [ [[package]] name = "srml-executive" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3052,7 +3042,7 @@ dependencies = [ [[package]] name = "srml-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3072,7 +3062,7 @@ dependencies = [ [[package]] name = "srml-indices" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3091,7 +3081,7 @@ dependencies = [ [[package]] name = "srml-metadata" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3104,7 +3094,7 @@ dependencies = [ [[package]] name = "srml-session" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3124,7 +3114,7 @@ dependencies = [ [[package]] name = "srml-staking" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3147,7 +3137,7 @@ dependencies = [ [[package]] name = "srml-sudo" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3165,7 +3155,7 @@ dependencies = [ [[package]] name = "srml-support" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "mashup 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3184,7 +3174,7 @@ dependencies = [ [[package]] name = "srml-support-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3196,7 +3186,7 @@ dependencies = [ [[package]] name = "srml-support-procedural-tools" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3207,7 +3197,7 @@ dependencies = [ [[package]] name = "srml-support-procedural-tools-derive" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3217,7 +3207,7 @@ dependencies = [ [[package]] name = "srml-system" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3234,7 +3224,7 @@ dependencies = [ [[package]] name = "srml-timestamp" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3253,7 +3243,7 @@ dependencies = [ [[package]] name = "srml-treasury" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3271,7 +3261,7 @@ dependencies = [ [[package]] name = "srml-upgrade-key" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3382,14 +3372,14 @@ dependencies = [ [[package]] name = "substrate-cli" version = "0.3.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "app_dirs 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "backtrace 0.3.13 (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.5.13 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.6.0 (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.3 (registry+https://github.com/rust-lang/crates.io-index)", "fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3414,7 +3404,7 @@ dependencies = [ [[package]] name = "substrate-client" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" 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)", @@ -3444,7 +3434,7 @@ dependencies = [ [[package]] name = "substrate-client-db" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hash-db 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "kvdb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)", @@ -3466,11 +3456,11 @@ dependencies = [ [[package]] name = "substrate-consensus-aura" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" 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.3.9 (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.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -3490,7 +3480,7 @@ dependencies = [ [[package]] name = "substrate-consensus-aura-primitives" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -3504,7 +3494,7 @@ dependencies = [ [[package]] name = "substrate-consensus-common" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" 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)", @@ -3522,12 +3512,13 @@ dependencies = [ [[package]] name = "substrate-executor" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "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)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libsecp256k1 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3539,13 +3530,14 @@ dependencies = [ "substrate-serializer 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)", + "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "wasmi 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-finality-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "finality-grandpa 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3567,7 +3559,7 @@ dependencies = [ [[package]] name = "substrate-finality-grandpa-primitives" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3580,7 +3572,7 @@ dependencies = [ [[package]] name = "substrate-inherents" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3592,7 +3584,7 @@ dependencies = [ [[package]] name = "substrate-keyring" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3602,12 +3594,12 @@ dependencies = [ [[package]] name = "substrate-keystore" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" 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.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3618,7 +3610,7 @@ dependencies = [ [[package]] name = "substrate-network" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3628,8 +3620,8 @@ dependencies = [ "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (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)", + "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 2.0.1 (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)", @@ -3641,7 +3633,7 @@ dependencies = [ [[package]] name = "substrate-network-libp2p" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "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)", @@ -3651,7 +3643,7 @@ dependencies = [ "libp2p 0.2.2 (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.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3666,7 +3658,7 @@ dependencies = [ [[package]] name = "substrate-primitives" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" 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)", @@ -3691,7 +3683,7 @@ dependencies = [ [[package]] name = "substrate-rpc" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", @@ -3716,7 +3708,7 @@ dependencies = [ [[package]] name = "substrate-rpc-servers" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "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)", @@ -3730,7 +3722,7 @@ dependencies = [ [[package]] name = "substrate-serializer" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3739,7 +3731,7 @@ dependencies = [ [[package]] name = "substrate-service" version = "0.3.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "exit-future 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3771,7 +3763,7 @@ dependencies = [ [[package]] name = "substrate-state-db" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3783,7 +3775,7 @@ dependencies = [ [[package]] name = "substrate-state-machine" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hash-db 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3800,7 +3792,7 @@ dependencies = [ [[package]] name = "substrate-telemetry" version = "0.3.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "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)", @@ -3815,7 +3807,7 @@ dependencies = [ [[package]] name = "substrate-transaction-graph" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" 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)", @@ -3829,7 +3821,7 @@ dependencies = [ [[package]] name = "substrate-transaction-pool" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" 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)", @@ -3845,7 +3837,7 @@ dependencies = [ [[package]] name = "substrate-trie" version = "0.4.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hash-db 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "memory-db 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4591,7 +4583,6 @@ dependencies = [ "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.5.13 (registry+https://github.com/rust-lang/crates.io-index)" = "15b0a4d2e39f8420210be8b27eeda28029729e2fd4291019455016c348240c38" "checksum env_logger 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "afb070faf94c85d17d50ca44f6ad076bce18ae92f0037d350947240a36e9d42e" "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" diff --git a/polkadot/runtime/Cargo.toml b/polkadot/runtime/Cargo.toml index 4d90d41582..457aff4702 100644 --- a/polkadot/runtime/Cargo.toml +++ b/polkadot/runtime/Cargo.toml @@ -38,11 +38,11 @@ srml-timestamp = { git = "https://github.com/paritytech/substrate", default-feat srml-treasury = { git = "https://github.com/paritytech/substrate", default-features = false } srml-upgrade-key = { git = "https://github.com/paritytech/substrate", default-features = false } sr-version = { git = "https://github.com/paritytech/substrate", default-features = false } -libsecp256k1 = "0.2.1" -tiny-keccak = "1.4.2" [dev-dependencies] hex-literal = "0.1.0" +libsecp256k1 = "0.2.1" +tiny-keccak = "1.4.2" substrate-keyring = { git = "https://github.com/paritytech/substrate" } [features] diff --git a/polkadot/runtime/src/claims.rs b/polkadot/runtime/src/claims.rs index 08aea08a30..41e09b12fd 100644 --- a/polkadot/runtime/src/claims.rs +++ b/polkadot/runtime/src/claims.rs @@ -17,8 +17,7 @@ //! Module to process claims from Ethereum addresses. use rstd::prelude::*; -use tiny_keccak::keccak256; -use secp256k1; +use sr_io::{keccak_256, secp256k1_ecdsa_recover}; use srml_support::{StorageValue, StorageMap}; use system::ensure_signed; use codec::Encode; @@ -33,7 +32,28 @@ pub trait Trait: balances::Trait { } type EthereumAddress = [u8; 20]; -type EcdsaSignature = ([u8; 32], [u8; 32], i8); + +// This is a bit of a workaround until codec supports [u8; 65] directly. +#[derive(Encode, Decode, Clone, PartialEq)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct EcdsaSignature([u8; 32], [u8; 32], i8); + +impl EcdsaSignature { + pub fn to_blob(&self) -> [u8; 65] { + let mut r = [0u8; 65]; + r[0..32].copy_from_slice(&self.0[..]); + r[32..64].copy_from_slice(&self.1[..]); + r[64] = self.2 as u8; + r + } + pub fn from_blob(blob: &[u8; 65]) -> Self { + let mut r = Self([0u8; 32], [0u8; 32], 0); + r.0[..].copy_from_slice(&blob[0..32]); + r.1[..].copy_from_slice(&blob[32..64]); + r.2 = blob[64] as i8; + r + } +} /// An event in this module. decl_event!( @@ -63,18 +83,10 @@ decl_storage! { } } -fn ecdsa_recover(sig: &EcdsaSignature, msg: &[u8; 32]) -> Option<[u8; 64]> { - let v = secp256k1::RecoveryId::parse(if sig.2 > 26 { sig.2 - 27 } else { sig.2 } as u8).ok()?; - let rs = (sig.0, sig.1).using_encoded(secp256k1::Signature::parse_slice).ok()?; - let pubkey = secp256k1::recover(&secp256k1::Message::parse(msg), &rs, &v).ok()?; - let mut res = [0u8; 64]; - res.copy_from_slice(&pubkey.serialize()[1..65]); - Some(res) -} - -fn create_msg(who: &[u8]) -> Vec { +// Constructs the message that Ethereum RPC's `personal_sign` and `eth_sign` would sign. +fn ethereum_signable_message(what: &[u8]) -> Vec { let prefix = b"Pay DOTs to the Polkadot account:"; - let mut l = prefix.len() + who.len(); + let mut l = prefix.len() + what.len(); let mut rev = Vec::new(); while l > 0 { rev.push(b'0' + (l % 10) as u8); @@ -83,14 +95,16 @@ fn create_msg(who: &[u8]) -> Vec { let mut v = b"\x19Ethereum Signed Message:\n".to_vec(); v.extend(rev.into_iter().rev()); v.extend_from_slice(&prefix[..]); - v.extend_from_slice(who); + v.extend_from_slice(what); v } -fn eth_recover(s: &EcdsaSignature, who: &[u8]) -> Option { - let msg = keccak256(&create_msg(who)); +// Attempts to recover the Ethereum address from a message signature signed by using +// the Ethereum RPC's `personal_sign` and `eth_sign`. +fn eth_recover(s: &EcdsaSignature, what: &[u8]) -> Option { + let msg = keccak_256(ðereum_signable_message(what)); let mut res = EthereumAddress::default(); - res.copy_from_slice(&keccak256(&ecdsa_recover(s, &msg)?[..])[12..]); + res.copy_from_slice(&keccak_256(&secp256k1_ecdsa_recover(&s.to_blob(), &msg).ok()?[..])[12..]); Some(res) } @@ -132,7 +146,7 @@ mod tests { use super::*; use sr_io::{self as runtime_io, with_externalities}; - use substrate_primitives::{H256, Blake2Hasher, hexdisplay::HexDisplay}; + use substrate_primitives::{H256, Blake2Hasher}; use codec::{Decode, Encode}; // The testing primitives are very useful for avoiding having to work with signatures // or public keys. `u64` is used as the `AccountId` and no `Signature`s are requried. @@ -187,28 +201,20 @@ mod tests { res.copy_from_slice(&keccak256(&alice_public().serialize()[1..65])[12..]); res } - fn alice_sig(who: &[u8]) -> EcdsaSignature { - let msg = keccak256(&create_msg(who)); + fn alice_sig(what: &[u8]) -> EcdsaSignature { + let msg = keccak256(ðereum_signable_message(what)); let (sig, recovery_id) = secp256k1::sign(&secp256k1::Message::parse(&msg), &alice_secret()).unwrap(); let sig: ([u8; 32], [u8; 32]) = Decode::decode(&mut &sig.serialize()[..]).unwrap(); - (sig.0, sig.1, recovery_id.serialize() as i8) + EcdsaSignature(sig.0, sig.1, recovery_id.serialize() as i8) } fn bob_secret() -> secp256k1::SecretKey { secp256k1::SecretKey::parse(&keccak256(b"Bob")).unwrap() } - fn bob_public() -> secp256k1::PublicKey { - secp256k1::PublicKey::from_secret_key(&bob_secret()) - } - fn bob_eth() -> EthereumAddress { - let mut res = EthereumAddress::default(); - res.copy_from_slice(&keccak256(&bob_public().serialize()[1..65])[12..]); - res - } - fn bob_sig(who: &[u8]) -> EcdsaSignature { - let msg = keccak256(&create_msg(who)); + fn bob_sig(what: &[u8]) -> EcdsaSignature { + let msg = keccak256(ðereum_signable_message(what)); let (sig, recovery_id) = secp256k1::sign(&secp256k1::Message::parse(&msg), &bob_secret()).unwrap(); let sig: ([u8; 32], [u8; 32]) = Decode::decode(&mut &sig.serialize()[..]).unwrap(); - (sig.0, sig.1, recovery_id.serialize() as i8) + EcdsaSignature(sig.0, sig.1, recovery_id.serialize() as i8) } // This function basically just builds a genesis storage key/value store according to @@ -269,9 +275,8 @@ mod tests { #[test] fn real_eth_sig_works() { let sig = hex!["7505f2880114da51b3f5d535f8687953c0ab9af4ab81e592eaebebf53b728d2b6dfd9b5bcd70fee412b1f31360e7c2774009305cb84fc50c1d0ff8034dfa5fff1c"]; - let sig = EcdsaSignature::decode(&mut &sig[..]).unwrap(); + let sig = EcdsaSignature::from_blob(&sig); let who = 42u64.encode(); - let msg = create_msg(&who); let signer = eth_recover(&sig, &who).unwrap(); assert_eq!(signer, hex!["DF67EC7EAe23D2459694685257b6FC59d1BAA1FE"]); } diff --git a/polkadot/runtime/src/lib.rs b/polkadot/runtime/src/lib.rs index c9c0f1b116..c08fd741b0 100644 --- a/polkadot/runtime/src/lib.rs +++ b/polkadot/runtime/src/lib.rs @@ -23,13 +23,15 @@ #[cfg(test)] #[macro_use] extern crate hex_literal; +#[cfg(test)] +extern crate secp256k1; +#[cfg(test)] +extern crate tiny_keccak; + #[macro_use] extern crate bitvec; -extern crate tiny_keccak; -extern crate secp256k1; - #[macro_use] extern crate parity_codec_derive; extern crate parity_codec as codec; @@ -41,7 +43,6 @@ extern crate substrate_inherents as inherents; extern crate substrate_client as client; extern crate sr_std as rstd; -#[cfg(test)] extern crate sr_io; extern crate sr_version as version; #[macro_use] @@ -111,7 +112,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { spec_name: create_runtime_str!("polkadot"), impl_name: create_runtime_str!("parity-polkadot"), authoring_version: 1, - spec_version: 105, + spec_version: 106, impl_version: 0, apis: RUNTIME_API_VERSIONS, }; diff --git a/polkadot/runtime/wasm/Cargo.lock b/polkadot/runtime/wasm/Cargo.lock index 17c0f21f56..8b4b041df2 100644 --- a/polkadot/runtime/wasm/Cargo.lock +++ b/polkadot/runtime/wasm/Cargo.lock @@ -240,7 +240,7 @@ dependencies = [ "byteorder 1.3.1 (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.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.6 (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)", ] @@ -263,6 +263,11 @@ name = "foreign-types-shared" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "fuchsia-cprng" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "fuchsia-zircon" version = "0.3.3" @@ -378,7 +383,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -441,7 +446,7 @@ dependencies = [ "arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "digest 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "hmac-drbg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -647,7 +652,7 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -705,7 +710,7 @@ version = "0.1.0" dependencies = [ "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (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.85 (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)", @@ -719,14 +724,13 @@ name = "polkadot-runtime" version = "0.1.0" dependencies = [ "bitvec 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libsecp256k1 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.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.85 (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.85 (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)", @@ -753,7 +757,6 @@ dependencies = [ "substrate-inherents 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)", - "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -805,10 +808,10 @@ dependencies = [ [[package]] name = "rand" -version = "0.4.5" +version = "0.4.6" 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-cprng 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -817,13 +820,13 @@ dependencies = [ [[package]] name = "rand" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" 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)", + "fuchsia-cprng 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -853,14 +856,6 @@ dependencies = [ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "rand_core" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "rand_core" version = "0.3.1" @@ -1000,7 +995,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde" -version = "1.0.85" +version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1020,7 +1015,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "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.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1066,7 +1061,7 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (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.37 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1092,7 +1087,7 @@ dependencies = [ [[package]] name = "sr-api-macros" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1103,29 +1098,31 @@ dependencies = [ [[package]] name = "sr-io" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "environmental 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "hash-db 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libsecp256k1 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (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)", "substrate-trie 0.4.0 (git+https://github.com/paritytech/substrate)", + "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "sr-primitives" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" 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.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (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.85 (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)", @@ -1135,7 +1132,7 @@ dependencies = [ [[package]] name = "sr-std" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1143,12 +1140,12 @@ dependencies = [ [[package]] name = "sr-version" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "impl-serde 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (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.85 (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)", @@ -1157,12 +1154,12 @@ dependencies = [ [[package]] name = "srml-aura" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (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)", @@ -1178,13 +1175,13 @@ dependencies = [ [[package]] name = "srml-balances" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.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.85 (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)", @@ -1197,12 +1194,12 @@ dependencies = [ [[package]] name = "srml-consensus" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (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)", @@ -1215,13 +1212,13 @@ dependencies = [ [[package]] name = "srml-council" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.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.85 (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)", @@ -1235,13 +1232,13 @@ dependencies = [ [[package]] name = "srml-democracy" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.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.85 (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)", @@ -1254,12 +1251,12 @@ dependencies = [ [[package]] name = "srml-executive" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (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)", @@ -1270,12 +1267,12 @@ dependencies = [ [[package]] name = "srml-grandpa" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (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.85 (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)", @@ -1290,13 +1287,13 @@ dependencies = [ [[package]] name = "srml-indices" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.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.85 (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)", @@ -1309,11 +1306,11 @@ dependencies = [ [[package]] name = "srml-metadata" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (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.85 (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)", @@ -1322,13 +1319,13 @@ dependencies = [ [[package]] name = "srml-session" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.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.85 (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)", @@ -1342,13 +1339,13 @@ dependencies = [ [[package]] name = "srml-staking" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.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.85 (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)", @@ -1365,12 +1362,12 @@ dependencies = [ [[package]] name = "srml-sudo" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (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)", @@ -1383,13 +1380,13 @@ dependencies = [ [[package]] name = "srml-support" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "mashup 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "once_cell 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (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.85 (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)", @@ -1402,7 +1399,7 @@ dependencies = [ [[package]] name = "srml-support-procedural" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1414,7 +1411,7 @@ dependencies = [ [[package]] name = "srml-support-procedural-tools" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1425,7 +1422,7 @@ dependencies = [ [[package]] name = "srml-support-procedural-tools-derive" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1435,13 +1432,13 @@ dependencies = [ [[package]] name = "srml-system" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.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.85 (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)", @@ -1452,12 +1449,12 @@ dependencies = [ [[package]] name = "srml-timestamp" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (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)", @@ -1471,12 +1468,12 @@ dependencies = [ [[package]] name = "srml-treasury" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (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)", @@ -1489,12 +1486,12 @@ dependencies = [ [[package]] name = "srml-upgrade-key" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (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)", @@ -1518,7 +1515,7 @@ 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#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" 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)", @@ -1548,7 +1545,7 @@ dependencies = [ [[package]] name = "substrate-consensus-aura-primitives" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/paritytech/substrate)", @@ -1562,7 +1559,7 @@ dependencies = [ [[package]] name = "substrate-consensus-common" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" 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)", @@ -1574,22 +1571,23 @@ dependencies = [ "sr-version 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-inherents 0.1.0 (git+https://github.com/paritytech/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate)", - "tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-executor" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "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)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libsecp256k1 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (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.85 (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)", @@ -1597,13 +1595,14 @@ dependencies = [ "substrate-serializer 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)", + "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "wasmi 0.4.3 (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#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1616,7 +1615,7 @@ dependencies = [ [[package]] name = "substrate-inherents" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1628,7 +1627,7 @@ dependencies = [ [[package]] name = "substrate-keyring" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1638,7 +1637,7 @@ dependencies = [ [[package]] name = "substrate-primitives" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" 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)", @@ -1652,7 +1651,7 @@ dependencies = [ "primitive-types 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.85 (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.85 (registry+https://github.com/rust-lang/crates.io-index)", "sr-std 0.1.0 (git+https://github.com/paritytech/substrate)", "twox-hash 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1663,16 +1662,16 @@ dependencies = [ [[package]] name = "substrate-serializer" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ - "serde 1.0.85 (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.37 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-state-machine" version = "0.1.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hash-db 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1689,7 +1688,7 @@ dependencies = [ [[package]] name = "substrate-telemetry" version = "0.3.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "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)", @@ -1704,7 +1703,7 @@ dependencies = [ [[package]] name = "substrate-trie" version = "0.4.0" -source = "git+https://github.com/paritytech/substrate#e2ebdf3a47a13d0a978949e478aff41c4f78b486" +source = "git+https://github.com/paritytech/substrate#01bff36cbb7a800720c8d867b63736ba233d22f3" dependencies = [ "hash-db 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "memory-db 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1756,7 +1755,7 @@ dependencies = [ [[package]] name = "tokio" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1769,9 +1768,10 @@ dependencies = [ "tokio-fs 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1811,7 +1811,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-threadpool 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1841,6 +1841,14 @@ dependencies = [ "tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "tokio-sync" +version = "0.1.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)", +] + [[package]] name = "tokio-tcp" version = "0.1.3" @@ -1856,9 +1864,10 @@ dependencies = [ [[package]] name = "tokio-threadpool" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-channel 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1866,12 +1875,13 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tokio-timer" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2059,7 +2069,7 @@ dependencies = [ "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.16 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (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.2 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2110,6 +2120,7 @@ dependencies = [ "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 fuchsia-cprng 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "81f7f8eb465745ea9b02e2704612a9946a59fa40572086c6fd49d6ddcf30bf31" "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.25 (registry+https://github.com/rust-lang/crates.io-index)" = "49e7653e374fe0d0c12de4250f0bdb60680b8c80eed558c5c7538eec9c89e21b" @@ -2169,11 +2180,10 @@ dependencies = [ "checksum proc-macro-hack-impl 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2b753ad9ed99dd8efeaa7d2fb8453c8f6bc3e54b97966d35f1bc77ca6865254a" "checksum proc-macro2 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)" = "38fddd23d98b2144d197c0eca5705632d4fe2667d14a6be5df8934f8d74f1978" "checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1" -"checksum rand 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "dee497e66d8d76bf08ce20c8d36e16f93749ab0bf89975b4f8ae5cee660c2da2" -"checksum rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e464cd887e869cddcae8792a4ee31d23c7edd516700695608f5b98c67ee0131c" +"checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" +"checksum rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9" "checksum rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3906503e80ac6cbcacb2c2973fa8e473f24d7e2747c8c92bb230c2441cad96b5" "checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -"checksum rand_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1961a422c4d189dfb50ffa9320bf1f2a9bd54ecb92792fb9477f99a1045f3372" "checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" "checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0" "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" @@ -2193,7 +2203,7 @@ dependencies = [ "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" "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.85 (registry+https://github.com/rust-lang/crates.io-index)" = "534b8b91a95e0f71bca3ed5824752d558da048d4248c91af873b63bd60519752" +"checksum serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)" = "15c141fc7027dd265a47c090bf864cf62b42c4d228bbcf4e51a0c9e2b0d3f7ef" "checksum serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)" = "a915306b0f1ac5607797697148c223bedeaa36bcc2e28a01441cd638cc6567b4" "checksum serde_json 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)" = "4b90a9fbe1211e57d3e1c15670f1cb00802988fb23a1a4aad7a2b63544f1920e" "checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" @@ -2248,16 +2258,17 @@ dependencies = [ "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" "checksum tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e9175261fbdb60781fcd388a4d6cc7e14764a2b629a7ad94abb439aed223a44f" -"checksum tokio 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "4790d0be6f4ba6ae4f48190efa2ed7780c9e3567796abdb285003cf39840d9c5" +"checksum tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "e0500b88064f08bebddd0c0bed39e19f5c567a5f30975bee52b0c0d3e2eeb38c" "checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" "checksum tokio-current-thread 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "331c8acc267855ec06eb0c94618dcbbfea45bed2d20b77252940095273fb58f6" "checksum tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30c6dbf2d1ad1de300b393910e8a3aa272b724a400b6531da03eed99e329fbf0" "checksum tokio-fs 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0e9cbbc8a3698b7ab652340f46633364f9eaa928ddaaee79d8b8f356dd79a09d" "checksum tokio-io 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b53aeb9d3f5ccf2ebb29e19788f96987fa1355f8fe45ea193928eaaaf3ae820f" "checksum tokio-reactor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "afbcdb0f0d2a1e4c440af82d7bbf0bf91a8a8c0575bcd20c05d15be7e9d3a02f" +"checksum tokio-sync 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0d65a58e2215c13179e6eeb2cf00511e0aee455cad40a9bfaef15a2fd8aab1c7" "checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" -"checksum tokio-threadpool 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "17465013014410310f9f61fa10bf4724803c149ea1d51efece131c38efca93aa" -"checksum tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "4f37f0111d76cc5da132fe9bc0590b9b9cfd079bc7e75ac3846278430a299ff8" +"checksum tokio-threadpool 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c3fd86cb15547d02daa2b21aadaf4e37dee3368df38a526178a5afa3c034d2fb" +"checksum tokio-timer 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "21c04a314a1f69f73c0227beba6250e06cdc1e9a62e7eff912bf54a59b6d1b94" "checksum tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "66268575b80f4a4a710ef83d087fdfeeabdce9b74c797535fbac18a2cb906e92" "checksum tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445" "checksum trie-db 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9ec6ceb1ad749359cedcf6fa95d7b5104acf70e871e2416e71cabcc3a8b2dbb8" diff --git a/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm b/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm index 110ca06ae2323bf50b0fbfa7881067193b08671e..a776a1126bdf47dad1cd0f07b92e79829346ccaf 100644 GIT binary patch literal 517588 zcmeFa3zS{gdEa*)_ceF!ow)-H9whiU_YxEbe29=t5j1IAIFLySh7?h@{wkEcnJq(7DJdNh0C zh4h6-^B3$VeIZdnV)x0TElRm*>ql?dz5hP1`}Fzb(Nq_SUV8q87r4*#A6|T(pWOb- z8_z$Q^VI6*I(yzKeV+g6)#r8F;YSzQEBQ)({OL~)j(_UZ(Nq7~GoL#8p7-9Dv{baL zqUVnD@6}2&xuJUavKmMsFpF8zj z^&ruMB|SKC{ISQ5ojCg5_ucEw?or`$#~*u^k`wPadi=4+pF4K+#^XP!BgWGdd>EPm{XV^4qV z_;dcaSGDo%Nd|ZH6Q_RozQhJH)Hh!E#PLsg*)1xoJ9G5-)1UbG@sr0+9e@1jsgqA0 z_bLr?jjwqpSx_^5ef{xcPd)X_V@Y2HJr(@$$>YcA<`Zf(|ZHQmqB{zw#*r2KDnb;pjKt#VC&;gf=s~p6Hh;O>d9xGK6>id4?T4}O%{(H zed74BXOI5SvFDBh@uNo{KX&REv-xYMQ=XgK)g>+>1$3AiDiDynedFsjI z&n2&=+pO⪻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