From 47221e6bac020d56644902da3911d0da98a054f5 Mon Sep 17 00:00:00 2001 From: Aton Date: Fri, 11 Jan 2019 19:23:59 +0800 Subject: [PATCH] update substrate (#195) update substrate for ce83a741420a3115e40be0f9aba0a8e524e3c0fa --- Cargo.lock | 508 ++++++++++-------- cli/Cargo.toml | 1 + cli/src/genesis_config.rs | 9 +- cli/src/lib.rs | 21 +- cli/src/service.rs | 37 +- primitives/Cargo.toml | 2 +- primitives/src/lib.rs | 2 +- rpc-servers/src/lib.rs | 5 +- rpc/src/author/mod.rs | 8 +- rpc/src/chain/mod.rs | 16 +- rpc/src/lib.rs | 2 +- rpc/src/state/mod.rs | 15 +- rpc/src/system/helpers.rs | 19 + rpc/src/system/mod.rs | 43 +- rpc/src/system/tests.rs | 52 +- runtime/src/fee.rs | 10 +- runtime/src/lib.rs | 1 - runtime/wasm/Cargo.lock | 249 ++++----- .../release/chainx_runtime_wasm.compact.wasm | Bin 523639 -> 524730 bytes xr-primitives/Cargo.toml | 6 +- xrml/xaccounts/src/lib.rs | 2 +- xrml/xassets/records/src/lib.rs | 2 +- xrml/xdex/spot/src/def.rs | 10 +- xrml/xdex/spot/src/lib.rs | 130 +++-- xrml/xdex/spot/src/mock.rs | 40 +- xrml/xdex/spot/src/tests.rs | 237 +++++--- xrml/xmining/staking/src/lib.rs | 2 +- 27 files changed, 774 insertions(+), 655 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index dff6777dc486f..06532b89c6336 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -376,6 +376,7 @@ dependencies = [ "sr-io 0.1.0 (git+https://github.com/chainpool/substrate)", "sr-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", "structopt 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-basic-authorship 0.1.0 (git+https://github.com/chainpool/substrate)", "substrate-cli 0.3.0 (git+https://github.com/chainpool/substrate)", "substrate-client 0.1.0 (git+https://github.com/chainpool/substrate)", "substrate-consensus-aura 0.1.0 (git+https://github.com/chainpool/substrate)", @@ -563,7 +564,7 @@ dependencies = [ "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -573,7 +574,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-epoch 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.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.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -715,7 +716,7 @@ 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=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +source = "git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec#997d0163bc8a7e11559524ad8466bc3b1850c8ec" dependencies = [ "base64 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "chashmap 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1150,6 +1151,23 @@ dependencies = [ "unicode-normalization 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "impl-codec" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "impl-serde" +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.83 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "indexmap" version = "1.0.2" @@ -1182,7 +1200,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "jsonrpc-core" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#cd27b905868d7919bed6ec8113e846c459e93831" +source = "git+https://github.com/paritytech/jsonrpc.git#16ed9f5097cdde3a5641c2aa8cd1402838bd3dc4" 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)", @@ -1194,7 +1212,7 @@ dependencies = [ [[package]] name = "jsonrpc-http-server" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#cd27b905868d7919bed6ec8113e846c459e93831" +source = "git+https://github.com/paritytech/jsonrpc.git#16ed9f5097cdde3a5641c2aa8cd1402838bd3dc4" dependencies = [ "hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", @@ -1207,7 +1225,7 @@ dependencies = [ [[package]] name = "jsonrpc-macros" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#cd27b905868d7919bed6ec8113e846c459e93831" +source = "git+https://github.com/paritytech/jsonrpc.git#16ed9f5097cdde3a5641c2aa8cd1402838bd3dc4" dependencies = [ "jsonrpc-core 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", "jsonrpc-pubsub 9.0.0 (git+https://github.com/paritytech/jsonrpc.git)", @@ -1217,17 +1235,17 @@ dependencies = [ [[package]] name = "jsonrpc-pubsub" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#cd27b905868d7919bed6ec8113e846c459e93831" +source = "git+https://github.com/paritytech/jsonrpc.git#16ed9f5097cdde3a5641c2aa8cd1402838bd3dc4" dependencies = [ "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)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "jsonrpc-server-utils" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#cd27b905868d7919bed6ec8113e846c459e93831" +source = "git+https://github.com/paritytech/jsonrpc.git#16ed9f5097cdde3a5641c2aa8cd1402838bd3dc4" 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)", @@ -1243,13 +1261,13 @@ dependencies = [ [[package]] name = "jsonrpc-ws-server" version = "9.0.0" -source = "git+https://github.com/paritytech/jsonrpc.git#cd27b905868d7919bed6ec8113e846c459e93831" +source = "git+https://github.com/paritytech/jsonrpc.git#16ed9f5097cdde3a5641c2aa8cd1402838bd3dc4" 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)", "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)", + "parking_lot 0.7.1 (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.9 (git+https://github.com/tomusdrw/ws-rs)", ] @@ -1313,11 +1331,6 @@ name = "language-tags" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "lazy_static" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "lazy_static" version = "1.2.0" @@ -1345,28 +1358,28 @@ dependencies = [ [[package]] name = "libp2p" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +source = "git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec#997d0163bc8a7e11559524ad8466bc3b1850c8ec" 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)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "libp2p-dns 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "libp2p-floodsub 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "libp2p-identify 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "libp2p-kad 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "libp2p-mplex 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "libp2p-peerstore 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "libp2p-ping 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "libp2p-ratelimit 0.1.1 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "libp2p-relay 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "libp2p-secio 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "libp2p-tcp-transport 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "libp2p-transport-timeout 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "libp2p-uds 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "libp2p-websocket 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "libp2p-yamux 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "multihash 0.8.1-pre (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "stdweb 0.1.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-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1376,20 +1389,20 @@ dependencies = [ [[package]] name = "libp2p-core" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +source = "git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec#997d0163bc8a7e11559524ad8466bc3b1850c8ec" dependencies = [ "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.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)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "multihash 0.8.1-pre (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "multistream-select 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "protobuf 2.2.1 (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=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "rw-stream-sink 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "smallvec 0.6.7 (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)", @@ -1400,12 +1413,12 @@ dependencies = [ [[package]] name = "libp2p-dns" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +source = "git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec#997d0163bc8a7e11559524ad8466bc3b1850c8ec" dependencies = [ "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-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "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)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "tokio-dns-unofficial 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1413,16 +1426,16 @@ dependencies = [ [[package]] name = "libp2p-floodsub" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +source = "git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec#997d0163bc8a7e11559524ad8466bc3b1850c8ec" dependencies = [ "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.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-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "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)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "protobuf 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1434,15 +1447,15 @@ dependencies = [ [[package]] name = "libp2p-identify" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +source = "git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec#997d0163bc8a7e11559524ad8466bc3b1850c8ec" 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)", "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)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "libp2p-peerstore 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "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)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "protobuf 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1455,21 +1468,21 @@ dependencies = [ [[package]] name = "libp2p-kad" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +source = "git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec#997d0163bc8a7e11559524ad8466bc3b1850c8ec" dependencies = [ "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "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)", + "datastore 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "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)", - "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)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "libp2p-identify 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "libp2p-ping 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "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)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "multihash 0.8.1-pre (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "protobuf 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1483,12 +1496,12 @@ dependencies = [ [[package]] name = "libp2p-mplex" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +source = "git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec#997d0163bc8a7e11559524ad8466bc3b1850c8ec" 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)", "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-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "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)", @@ -1499,13 +1512,13 @@ dependencies = [ [[package]] name = "libp2p-peerstore" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +source = "git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec#997d0163bc8a7e11559524ad8466bc3b1850c8ec" dependencies = [ "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)", + "datastore 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "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)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1514,15 +1527,15 @@ dependencies = [ [[package]] name = "libp2p-ping" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +source = "git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec#997d0163bc8a7e11559524ad8466bc3b1850c8ec" dependencies = [ "arrayvec 0.4.10 (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)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "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)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "multistream-select 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "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.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1534,11 +1547,11 @@ dependencies = [ [[package]] name = "libp2p-ratelimit" version = "0.1.1" -source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +source = "git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec#997d0163bc8a7e11559524ad8466bc3b1850c8ec" dependencies = [ "aio-limited 0.1.0 (git+https://github.com/paritytech/aio-limited.git)", "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-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "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)", @@ -1547,14 +1560,14 @@ dependencies = [ [[package]] name = "libp2p-relay" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +source = "git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec#997d0163bc8a7e11559524ad8466bc3b1850c8ec" 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)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "libp2p-peerstore 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "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)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "protobuf 2.2.1 (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)", @@ -1565,7 +1578,7 @@ dependencies = [ [[package]] name = "libp2p-secio" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +source = "git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec#997d0163bc8a7e11559524ad8466bc3b1850c8ec" dependencies = [ "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)", @@ -1575,28 +1588,28 @@ dependencies = [ "eth-secp256k1 0.5.7 (git+https://github.com/paritytech/rust-secp256k1)", "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)", + "libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "protobuf 2.2.1 (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)", - "rw-stream-sink 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rw-stream-sink 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "sha2 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "stdweb 0.4.12 (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)", + "untrusted 0.6.2 (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=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +source = "git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec#997d0163bc8a7e11559524ad8466bc3b1850c8ec" dependencies = [ "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-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "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)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "tk-listen 0.2.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)", @@ -1605,10 +1618,10 @@ dependencies = [ [[package]] name = "libp2p-transport-timeout" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +source = "git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec#997d0163bc8a7e11559524ad8466bc3b1850c8ec" dependencies = [ "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-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1616,25 +1629,25 @@ dependencies = [ [[package]] name = "libp2p-uds" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +source = "git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec#997d0163bc8a7e11559524ad8466bc3b1850c8ec" dependencies = [ "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-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "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)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "tokio-uds 0.2.4 (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=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +source = "git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec#997d0163bc8a7e11559524ad8466bc3b1850c8ec" dependencies = [ "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-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "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)", + "multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", + "rw-stream-sink 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "stdweb 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "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)", @@ -1643,15 +1656,15 @@ dependencies = [ [[package]] name = "libp2p-yamux" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +source = "git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec#997d0163bc8a7e11559524ad8466bc3b1850c8ec" 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-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "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.4 (git+https://github.com/paritytech/yamux)", + "yamux 0.1.6 (git+https://github.com/paritytech/yamux)", ] [[package]] @@ -1678,6 +1691,11 @@ dependencies = [ "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "linked-hash-map" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "linked-hash-map" version = "0.5.1" @@ -1713,6 +1731,14 @@ name = "lru" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "lru-cache" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "make-cmd" version = "0.1.0" @@ -1852,13 +1878,13 @@ dependencies = [ [[package]] name = "multiaddr" version = "0.3.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +source = "git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec#997d0163bc8a7e11559524ad8466bc3b1850c8ec" dependencies = [ "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)", "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)", + "multihash 0.8.1-pre (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "serde 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)", "unsigned-varint 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1866,7 +1892,7 @@ dependencies = [ [[package]] name = "multihash" version = "0.8.1-pre" -source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +source = "git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec#997d0163bc8a7e11559524ad8466bc3b1850c8ec" 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)", @@ -1878,7 +1904,7 @@ dependencies = [ [[package]] name = "multistream-select" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +source = "git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec#997d0163bc8a7e11559524ad8466bc3b1850c8ec" 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)", @@ -2070,11 +2096,11 @@ dependencies = [ [[package]] name = "parity-crypto" -version = "0.1.0" +version = "0.2.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)", - "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", "rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2126,7 +2152,7 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2192,6 +2218,18 @@ dependencies = [ "difference 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "primitive-types" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "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)", + "impl-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "impl-serde 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "uint 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "primitives" version = "0.1.0" @@ -2382,14 +2420,6 @@ dependencies = [ "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "rayon" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "rayon" version = "1.0.3" @@ -2490,14 +2520,13 @@ dependencies = [ [[package]] name = "ring" -version = "0.12.1" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "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)", + "cc 1.0.28 (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.45 (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)", + "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2552,7 +2581,7 @@ dependencies = [ [[package]] name = "rw-stream-sink" version = "0.1.0" -source = "git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5#d961e656a74d1bab5366d371a06f9e10d5f4a6c5" +source = "git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec#997d0163bc8a7e11559524ad8466bc3b1850c8ec" 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)", @@ -2771,7 +2800,7 @@ dependencies = [ [[package]] name = "slog-scope" -version = "4.1.0" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2790,7 +2819,7 @@ dependencies = [ [[package]] name = "sr-api-macros" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2801,7 +2830,7 @@ dependencies = [ [[package]] name = "sr-io" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "environmental 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", @@ -2816,7 +2845,7 @@ dependencies = [ [[package]] name = "sr-primitives" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -2833,19 +2862,19 @@ dependencies = [ [[package]] name = "sr-sandbox" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "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/chainpool/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", - "wasmi 0.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 = "sr-std" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2861,7 +2890,7 @@ dependencies = [ [[package]] name = "sr-version" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -2874,7 +2903,7 @@ dependencies = [ [[package]] name = "srml-aura" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2894,7 +2923,7 @@ dependencies = [ [[package]] name = "srml-balances" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2913,7 +2942,7 @@ dependencies = [ [[package]] name = "srml-consensus" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2930,7 +2959,7 @@ dependencies = [ [[package]] name = "srml-contract" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -2950,7 +2979,7 @@ dependencies = [ [[package]] name = "srml-council" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2970,7 +2999,7 @@ dependencies = [ [[package]] name = "srml-democracy" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2989,7 +3018,7 @@ dependencies = [ [[package]] name = "srml-grandpa" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3009,7 +3038,7 @@ dependencies = [ [[package]] name = "srml-metadata" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -3022,7 +3051,7 @@ dependencies = [ [[package]] name = "srml-session" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3042,7 +3071,7 @@ dependencies = [ [[package]] name = "srml-staking" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3065,7 +3094,7 @@ dependencies = [ [[package]] name = "srml-support" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -3074,7 +3103,7 @@ dependencies = [ "mashup 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "once_cell 0.1.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.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "redis 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3088,7 +3117,7 @@ dependencies = [ [[package]] name = "srml-support-procedural" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -3100,7 +3129,7 @@ dependencies = [ [[package]] name = "srml-support-procedural-tools" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -3111,7 +3140,7 @@ dependencies = [ [[package]] name = "srml-support-procedural-tools-derive" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -3121,7 +3150,7 @@ dependencies = [ [[package]] name = "srml-system" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3138,7 +3167,7 @@ dependencies = [ [[package]] name = "srml-timestamp" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3155,7 +3184,7 @@ dependencies = [ [[package]] name = "srml-treasury" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3267,10 +3296,25 @@ dependencies = [ "syn 0.15.23 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "substrate-basic-authorship" +version = "0.1.0" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" +dependencies = [ + "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)", + "sr-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", + "substrate-client 0.1.0 (git+https://github.com/chainpool/substrate)", + "substrate-consensus-aura-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", + "substrate-consensus-common 0.1.0 (git+https://github.com/chainpool/substrate)", + "substrate-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", + "substrate-transaction-pool 0.1.0 (git+https://github.com/chainpool/substrate)", +] + [[package]] name = "substrate-cli" version = "0.3.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -3303,7 +3347,7 @@ dependencies = [ [[package]] name = "substrate-client" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -3314,7 +3358,7 @@ dependencies = [ "kvdb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=616b40150ded71f57f650067fcbc5c99d7c343e6)", "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)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-api-macros 0.1.0 (git+https://github.com/chainpool/substrate)", "sr-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", @@ -3332,15 +3376,16 @@ dependencies = [ [[package]] name = "substrate-client-db" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", "kvdb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=616b40150ded71f57f650067fcbc5c99d7c343e6)", "kvdb-rocksdb 0.1.4 (git+https://github.com/paritytech/parity-common?rev=616b40150ded71f57f650067fcbc5c99d7c343e6)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lru-cache 0.1.1 (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)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", "substrate-client 0.1.0 (git+https://github.com/chainpool/substrate)", "substrate-executor 0.1.0 (git+https://github.com/chainpool/substrate)", @@ -3353,13 +3398,13 @@ dependencies = [ [[package]] name = "substrate-consensus-aura" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", "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)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/chainpool/substrate)", "sr-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", "sr-version 0.1.0 (git+https://github.com/chainpool/substrate)", @@ -3368,7 +3413,6 @@ dependencies = [ "substrate-client 0.1.0 (git+https://github.com/chainpool/substrate)", "substrate-consensus-aura-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", "substrate-consensus-common 0.1.0 (git+https://github.com/chainpool/substrate)", - "substrate-network 0.1.0 (git+https://github.com/chainpool/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", "tokio 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3376,7 +3420,7 @@ dependencies = [ [[package]] name = "substrate-consensus-aura-primitives" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/chainpool/substrate)", @@ -3390,12 +3434,14 @@ dependencies = [ [[package]] name = "substrate-consensus-common" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", "parity-codec-derive 2.1.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-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", "sr-version 0.1.0 (git+https://github.com/chainpool/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", @@ -3405,14 +3451,14 @@ dependencies = [ [[package]] name = "substrate-executor" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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.7.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.83 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/chainpool/substrate)", @@ -3421,20 +3467,20 @@ dependencies = [ "substrate-serializer 0.1.0 (git+https://github.com/chainpool/substrate)", "substrate-state-machine 0.1.0 (git+https://github.com/chainpool/substrate)", "substrate-trie 0.4.0 (git+https://github.com/chainpool/substrate)", - "wasmi 0.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/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", "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)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", "substrate-client 0.1.0 (git+https://github.com/chainpool/substrate)", @@ -3449,7 +3495,7 @@ dependencies = [ [[package]] name = "substrate-finality-grandpa-primitives" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -3462,7 +3508,7 @@ dependencies = [ [[package]] name = "substrate-keyring" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -3472,23 +3518,23 @@ dependencies = [ [[package]] name = "substrate-keystore" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", + "parity-crypto 0.2.0 (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.83 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.83 (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/chainpool/substrate)", - "subtle 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "substrate-network" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -3497,7 +3543,7 @@ dependencies = [ "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)", + "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)", "sr-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", @@ -3511,16 +3557,16 @@ dependencies = [ [[package]] name = "substrate-network-libp2p" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", "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)", "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", - "libp2p 0.1.0 (git+https://github.com/libp2p/rust-libp2p?rev=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)", + "libp2p 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)", "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)", + "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)", "serde 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3534,27 +3580,26 @@ dependencies = [ [[package]] name = "substrate-primitives" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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.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)", + "impl-serde 0.1.1 (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)", + "primitive-types 0.1.4 (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.83 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)", "sr-std 0.1.0 (git+https://github.com/chainpool/substrate)", "twox-hash 1.1.2 (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.2 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -3602,7 +3647,7 @@ dependencies = [ [[package]] name = "substrate-serializer" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "serde 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3611,7 +3656,7 @@ dependencies = [ [[package]] name = "substrate-service" version = "0.3.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -3619,7 +3664,7 @@ 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)", "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)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3628,7 +3673,6 @@ dependencies = [ "sr-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", "substrate-client 0.1.0 (git+https://github.com/chainpool/substrate)", "substrate-client-db 0.1.0 (git+https://github.com/chainpool/substrate)", - "substrate-consensus-aura-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", "substrate-consensus-common 0.1.0 (git+https://github.com/chainpool/substrate)", "substrate-executor 0.1.0 (git+https://github.com/chainpool/substrate)", "substrate-keystore 0.1.0 (git+https://github.com/chainpool/substrate)", @@ -3643,7 +3687,7 @@ dependencies = [ [[package]] name = "substrate-service-test" version = "0.3.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "fdlimit 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3662,26 +3706,26 @@ dependencies = [ [[package]] name = "substrate-state-db" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "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)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", ] [[package]] name = "substrate-state-machine" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "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.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)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", "substrate-trie 0.4.0 (git+https://github.com/chainpool/substrate)", "trie-db 0.9.0 (git+https://github.com/paritytech/trie)", @@ -3691,22 +3735,22 @@ dependencies = [ [[package]] name = "substrate-telemetry" version = "0.3.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", - "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.7.1 (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.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slog-scope 4.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-scope 4.1.1 (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/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", @@ -3722,7 +3766,7 @@ dependencies = [ [[package]] name = "substrate-test-runtime" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -3744,12 +3788,12 @@ dependencies = [ [[package]] name = "substrate-transaction-graph" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", @@ -3758,13 +3802,13 @@ dependencies = [ [[package]] name = "substrate-transaction-pool" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", "substrate-client 0.1.0 (git+https://github.com/chainpool/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", @@ -3774,7 +3818,7 @@ dependencies = [ [[package]] name = "substrate-trie" version = "0.4.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", "memory-db 0.9.0 (git+https://github.com/paritytech/trie)", @@ -3785,12 +3829,12 @@ dependencies = [ [[package]] name = "subtle" -version = "0.5.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "subtle" -version = "1.0.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -4192,6 +4236,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" 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)", + "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4266,7 +4311,7 @@ dependencies = [ [[package]] name = "untrusted" -version = "0.5.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -4316,7 +4361,7 @@ dependencies = [ [[package]] name = "wasmi" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4722,8 +4767,8 @@ dependencies = [ [[package]] name = "yamux" -version = "0.1.4" -source = "git+https://github.com/paritytech/yamux#2c1258ab3327101e916f6b022728157fb2896aec" +version = "0.1.6" +source = "git+https://github.com/paritytech/yamux#957bccae409e827db4be05abb67d1d6246d5f5c8" 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)", @@ -4731,6 +4776,7 @@ dependencies = [ "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)", + "rand 0.6.1 (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)", ] @@ -4805,7 +4851,7 @@ dependencies = [ "checksum ctrlc 3.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "630391922b1b893692c6334369ff528dcc3a9d8061ccf4c803aa8f83cb13db5e" "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 datastore 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)" = "" "checksum difference 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b3304d19798a8e067e48d8e69b2c37f0b5e9b4e462504ad9e27e9f3fce02bba8" "checksum digest 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e5b29bf156f3f4b3c4f610a25ff69370616ae6e0657d416de22645483e72af0a" "checksum digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "03b072242a8cbaf9c145665af9d250c59af3b958f83ed6824e13533cf76d5b90" @@ -4855,6 +4901,8 @@ dependencies = [ "checksum hyper 0.10.15 (registry+https://github.com/rust-lang/crates.io-index)" = "df0caae6b71d266b91b4a83111a61d2b94ed2e2bea024c532b933dcff867e58c" "checksum hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)" = "f1ebec079129e43af5e234ef36ee3d7e6085687d145b7ea653b262d16c6b65f1" "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" +"checksum impl-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9c88568d828291c50eed30cd7fb9f8e688ad0013620186fa3e777b9f206c79f2" +"checksum impl-serde 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5158079de9d4158e0ce1de3ae0bd7be03904efc40b3d7dd8b8c301cbf6b52b56" "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" @@ -4871,35 +4919,36 @@ dependencies = [ "checksum kvdb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=616b40150ded71f57f650067fcbc5c99d7c343e6)" = "" "checksum kvdb-rocksdb 0.1.4 (git+https://github.com/paritytech/parity-common?rev=616b40150ded71f57f650067fcbc5c99d7c343e6)" = "" "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.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1" "checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" "checksum libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)" = "2d2857ec59fadc0773853c664d2d18e7198e83883e7060b63c924cb077bd5c74" "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=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 libp2p 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)" = "" +"checksum libp2p-core 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)" = "" +"checksum libp2p-dns 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)" = "" +"checksum libp2p-floodsub 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)" = "" +"checksum libp2p-identify 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)" = "" +"checksum libp2p-kad 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)" = "" +"checksum libp2p-mplex 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)" = "" +"checksum libp2p-peerstore 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)" = "" +"checksum libp2p-ping 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)" = "" +"checksum libp2p-ratelimit 0.1.1 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)" = "" +"checksum libp2p-relay 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)" = "" +"checksum libp2p-secio 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)" = "" +"checksum libp2p-tcp-transport 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)" = "" +"checksum libp2p-transport-timeout 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)" = "" +"checksum libp2p-uds 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)" = "" +"checksum libp2p-websocket 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)" = "" +"checksum libp2p-yamux 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)" = "" "checksum librocksdb-sys 5.14.2 (registry+https://github.com/rust-lang/crates.io-index)" = "474d805d72e23a06310fa5201dfe182dc4b80ab1f18bb2823c1ac17ff9dcbaa2" "checksum libsecp256k1 0.2.1 (git+https://github.com/koushiro/libsecp256k1-rs?branch=support_der_lax)" = "" +"checksum linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7860ec297f7008ff7a1e3382d7f7e1dcd69efc94751a2284bafc3d013c2aa939" "checksum linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "70fb39025bc7cdd76305867c4eccf2f2dcf6e9a57f5b21a93e1c2d86cd03ec9e" "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.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" "checksum lru 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "6f5fb2abee91622dfb5fbcf2f277dc8c421c9259c6ce5484eee46ab7ae2282d6" +"checksum lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4d06ff7ff06f729ce5f4e227876cb88d10bc59cd4ae1e09fbb2bde15c850dc21" "checksum make-cmd 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a8ca8afbe8af1785e09636acb5a41e08a765f5f0340568716c18a8700ba3c0d3" "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" @@ -4915,9 +4964,9 @@ dependencies = [ "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=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 multiaddr 0.3.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)" = "" +"checksum multihash 0.8.1-pre (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)" = "" +"checksum multistream-select 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)" = "" "checksum names 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef320dab323286b50fb5cdda23f61c796a72a89998ab565ca32525c5c556f2da" "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" @@ -4940,13 +4989,13 @@ dependencies = [ "checksum parity-bytes 0.1.0 (git+https://github.com/paritytech/parity-common?rev=616b40150ded71f57f650067fcbc5c99d7c343e6)" = "" "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-crypto 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8adf489acb31f1922db0ce43803b6f48a425241a8473611be3cc625a8e4a4c47" "checksum parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)" = "511379a8194230c2395d2f5fa627a5a7e108a9f976656ce723ae68fca4097bfc" "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.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5" -"checksum parking_lot 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9723236a9525c757d9725b993511e3fc941e33f27751942232f0058298297edf" +"checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" "checksum parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "4db1a8ccf734a7bce794cc19b3df06ed87ab2f3907036b693c68f56b4d4537fa" "checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c" "checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" @@ -4954,6 +5003,7 @@ dependencies = [ "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" "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 primitive-types 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f47c18b4601125931d69fcf7b000c2c16a304e4f84d58218d6470b4502e00b58" "checksum primitives 0.1.0 (git+https://github.com/chainx-org/bitcoin-rust)" = "" "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" @@ -4976,7 +5026,6 @@ dependencies = [ "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" "checksum rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "086bd09a33c7044e56bb44d5bdde5a60e7f119a9e95b0775f545de759a32fe05" "checksum rand_xorshift 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "effa3fcaa47e18db002bdde6060944b6d2f9cfd8db471c30e873448ad9187be3" -"checksum rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b614fe08b6665cb9a231d07ac1364b0ef3cb3698f1239ee0c4c3a88a524f54c8" "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 redis 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f0c747d743d48233f9bc3ed3fb00cb84c1d98d8c7f54ed2d4cca9adf461a7ef3" @@ -4987,7 +5036,7 @@ dependencies = [ "checksum regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7d707a4fa2637f2dca2ef9fd02225ec7661fe01a53623c1e6515b6916511f7a7" "checksum regex-syntax 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4e47a2ed29da7a9e1960e1639e7a982e6edc6d49be308a3b02daf511504a16d1" "checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" -"checksum ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6f7d28b30a72c01b458428e0ae988d4149c20d902346902be881e3edc4bb325c" +"checksum ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2c4db68a2e35f3497146b7e4563df7d4773a2433230c5e4b448328e31740458a" "checksum rocksdb 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "39be726e556e6f21d54d21cdf1be9f6df30c0411a5856c1abf3f4bb12498f2ed" "checksum rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)" = "f76d05d3993fd5f4af9434e8e436db163a12a9d40e1a58a726f27a01dfd12a2a" "checksum rustc-demangle 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "01b90379b8664dd83460d59bdc5dd1fd3172b8913788db483ed1325171eab2f7" @@ -4995,7 +5044,7 @@ dependencies = [ "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=d961e656a74d1bab5366d371a06f9e10d5f4a6c5)" = "" +"checksum rw-stream-sink 0.1.0 (git+https://github.com/tomaka/libp2p-rs?rev=997d0163bc8a7e11559524ad8466bc3b1850c8ec)" = "" "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" @@ -5023,7 +5072,7 @@ dependencies = [ "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.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddc0d2aff1f8f325ef660d9a0eb6e6dcd20b30b3f581a5897f58bf42d061c37a" -"checksum slog-scope 4.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fb8490ed7795d9f147813515f8a62ab6c1d40c65edba8a73c414b63691f2769a" +"checksum slog-scope 4.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "60c04b4726fa04595ccf2c2dad7bcd15474242c4c5e109a8a376e8a2c9b1539a" "checksum smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b73ea3738b47563803ef814925e69be00799a8c07420be8b996f8e98fb2336db" "checksum sr-api-macros 0.1.0 (git+https://github.com/chainpool/substrate)" = "" "checksum sr-io 0.1.0 (git+https://github.com/chainpool/substrate)" = "" @@ -5061,6 +5110,7 @@ dependencies = [ "checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" "checksum structopt 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "670ad348dc73012fcf78c71f06f9d942232cdd4c859d4b6975e27836c3efc0c3" "checksum structopt-derive 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "ef98172b1a00b0bec738508d3726540edcbd186d50dfd326f2b1febbb3559f04" +"checksum substrate-basic-authorship 0.1.0 (git+https://github.com/chainpool/substrate)" = "" "checksum substrate-cli 0.3.0 (git+https://github.com/chainpool/substrate)" = "" "checksum substrate-client 0.1.0 (git+https://github.com/chainpool/substrate)" = "" "checksum substrate-client-db 0.1.0 (git+https://github.com/chainpool/substrate)" = "" @@ -5086,8 +5136,8 @@ dependencies = [ "checksum substrate-transaction-graph 0.1.0 (git+https://github.com/chainpool/substrate)" = "" "checksum substrate-transaction-pool 0.1.0 (git+https://github.com/chainpool/substrate)" = "" "checksum substrate-trie 0.4.0 (git+https://github.com/chainpool/substrate)" = "" -"checksum subtle 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc7f6353c2ee5407358d063a14cccc1630804527090a6fb5a9489ce4924280fb" "checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" +"checksum subtle 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "702662512f3ddeb74a64ce2fbbf3707ee1b6bb663d28bb054e0779bbc720d926" "checksum syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)" = "261ae9ecaa397c42b960649561949d69311f08eeaea86a65696e6e46517cf741" "checksum syn 0.15.23 (registry+https://github.com/rust-lang/crates.io-index)" = "9545a6a093a3f0bd59adb472700acc08cad3776f860f16a897dfce8c88721cbc" "checksum sysinfo 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4c747a1fbe091faa7bf76c19f40099f9f12495384c811485d81cf3d60c0eae62" @@ -5138,7 +5188,7 @@ dependencies = [ "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 untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "55cd1f4b4e96b46aeb8d4855db4a7a9bd96eeeb5c6a1ab54593328761642ce2f" "checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" "checksum utf8-ranges 1.0.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" @@ -5146,7 +5196,7 @@ dependencies = [ "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.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 wasmi 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "21ef487a11df1ed468cf613c78798c26282da5c30e9d49f824872d4c77b47d1d" "checksum websocket 0.21.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c9faed2bff8af2ea6b9f8b917d3d00b467583f6781fe3def174a9e33c879703" "checksum which 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e84a603e7e0b1ce1aa1ee2b109c7be00155ce52df5081590d1ffb93f4f515cb2" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" @@ -5160,4 +5210,4 @@ dependencies = [ "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.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d089681aa106a86fade1b0128fb5daf07d5867a509ab036d99988dec80429a57" -"checksum yamux 0.1.4 (git+https://github.com/paritytech/yamux)" = "" +"checksum yamux 0.1.6 (git+https://github.com/paritytech/yamux)" = "" diff --git a/cli/Cargo.toml b/cli/Cargo.toml index dcab69b11713c..8544d88bf17c1 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -14,6 +14,7 @@ slog = "^2" substrate-cli = { git = "https://github.com/chainpool/substrate" } substrate-client = { git = "https://github.com/chainpool/substrate" } substrate-primitives = { git = "https://github.com/chainpool/substrate" } +substrate-basic-authorship = { git = "https://github.com/chainpool/substrate" } substrate-service = { git = "https://github.com/chainpool/substrate" } substrate-transaction-pool = { git = "https://github.com/chainpool/substrate" } substrate-network = { git = "https://github.com/chainpool/substrate" } diff --git a/cli/src/genesis_config.rs b/cli/src/genesis_config.rs index 233739c5a0c9c..61e6f8d879996 100644 --- a/cli/src/genesis_config.rs +++ b/cli/src/genesis_config.rs @@ -8,8 +8,8 @@ extern crate substrate_keyring; extern crate substrate_primitives; use self::base58::FromBase58; -use chainx_runtime::GrandpaConfig; use chainx_runtime::xassets; +use chainx_runtime::GrandpaConfig; use chainx_runtime::{ xassets::{Asset, Chain, ChainT}, @@ -18,7 +18,7 @@ use chainx_runtime::{ use chainx_runtime::{ BalancesConfig, ConsensusConfig, GenesisConfig, Params, Perbill, Permill, SessionConfig, TimestampConfig, XAccountsConfig, XAssetsConfig, XBridgeOfBTCConfig, XFeeManagerConfig, - XSpotConfig, XStakingConfig, XSystemConfig, + XSpotConfig, XStakingConfig, XSystemConfig, }; use ed25519; @@ -75,7 +75,10 @@ pub fn testnet_genesis(genesis_spec: GenesisSpec) -> GenesisConfig { transfer_fee: 0, creation_fee: 0, reclaim_rebate: 0, - balances: vec![(Keyring::Alice.to_raw_public().into(), 1_000_000_000),(Keyring::Bob.to_raw_public().into(), 1_000_000_000)], + balances: vec![ + (Keyring::Alice.to_raw_public().into(), 1_000_000_000), + (Keyring::Bob.to_raw_public().into(), 1_000_000_000), + ], }; //let balances_config_copy = BalancesConfigCopy::create_from_src(&balances_config).src(); diff --git a/cli/src/lib.rs b/cli/src/lib.rs index 4f1a70d67fa1b..5b3c5d923368c 100644 --- a/cli/src/lib.rs +++ b/cli/src/lib.rs @@ -121,18 +121,15 @@ where let (spec, mut config) = cli::parse_matches::(load_spec, version, "chainx-node", &matches)?; - if cfg!(feature = "msgbus-redis") == false { - if matches.is_present("grandpa_authority_only") { - config.custom.grandpa_authority = true; - config.custom.grandpa_authority_only = true; - // Authority Setup is only called if validator is set as true - config.roles = ServiceRoles::AUTHORITY; - } else if matches.is_present("grandpa_authority") { - config.custom.grandpa_authority = true; - // Authority Setup is only called if validator is set as true - config.roles = ServiceRoles::AUTHORITY; - } - } + // if cfg!(feature = "msgbus-redis") == false { + // if matches.is_present("grandpa_authority_only") { + // // Authority Setup is only called if validator is set as true + // config.roles = ServiceRoles::AUTHORITY; + // } else if matches.is_present("grandpa_authority") { + // // Authority Setup is only called if validator is set as true + // config.roles = ServiceRoles::AUTHORITY; + // } + // } match cli::execute_default::(spec, exit, &matches, &config)? { cli::Action::ExecutedInternally => (), cli::Action::RunService(exit) => { diff --git a/cli/src/service.rs b/cli/src/service.rs index 2c18f42a983c3..72912b9870375 100644 --- a/cli/src/service.rs +++ b/cli/src/service.rs @@ -40,10 +40,6 @@ construct_simple_protocol! { /// Node specific configuration pub struct NodeConfig { - /// should run as a grandpa authority - pub grandpa_authority: bool, - /// should run as a grandpa authority only, don't validate as usual - pub grandpa_authority_only: bool, /// grandpa connection to import block // FIXME: rather than putting this on the config, let's have an actual intermediate setup state // https://github.com/paritytech/substrate/issues/1134 @@ -59,8 +55,6 @@ where { fn default() -> NodeConfig { NodeConfig { - grandpa_authority: false, - grandpa_authority_only: false, grandpa_import_setup: None, } } @@ -82,16 +76,13 @@ construct_service_factory! { { |config: FactoryFullConfiguration, executor: TaskExecutor| FullComponents::::new(config, executor) }, AuthoritySetup = { - |mut service: Self::FullService, executor: TaskExecutor, key: Option>| { + |mut service: Self::FullService, executor: TaskExecutor, local_key: Option>| { let (block_import, link_half) = service.config.custom.grandpa_import_setup.take() .expect("Link Half and Block Import are present for Full Services or setup failed before. qed"); - let mut producer = None; - - let local_key = if let Some(key) = key { - if !service.config.custom.grandpa_authority_only { + if let Some(ref key) = local_key { info!("Using authority key {}", key.public()); - let proposer = Arc::new(substrate_service::ProposerFactory { + let proposer = Arc::new(substrate_basic_authorship::ProposerFactory { client: service.client(), transaction_pool: service.transaction_pool(), }); @@ -104,26 +95,13 @@ construct_service_factory! { block_import.clone(), proposer, service.network(), + service.on_exit(), )); - producer = Some(key.clone()); - } - - if service.config.custom.grandpa_authority { info!("Running Grandpa session as Authority {}", key.public()); - Some(key) - } else { - None } - } else { - None - }; - if let Some(ref k) = producer { - set_blockproducer(k.public().0.into()); - } - - let voter = grandpa::run_grandpa( + executor.spawn(grandpa::run_grandpa( grandpa::Config { local_key, gossip_duration: Duration::new(4, 0), // FIXME: make this available through chainspec? @@ -131,9 +109,8 @@ construct_service_factory! { }, link_half, grandpa::NetworkBridge::new(service.network()), - )?; - - executor.spawn(voter); + service.on_exit(), + )?); Ok(service) } diff --git a/primitives/Cargo.toml b/primitives/Cargo.toml index a5e1151adf3e5..834c7b3cb1998 100644 --- a/primitives/Cargo.toml +++ b/primitives/Cargo.toml @@ -9,7 +9,7 @@ serde_derive = { version = "1.0", optional = true } parity-codec = { version = "2.0", default-features = false } parity-codec-derive = { version = "2.0", default-features = false } substrate-primitives = { git = "https://github.com/chainpool/substrate", default_features = false } -sr-std = { git = "https://github.com/chainpool/substrate/", default_features = false } +sr-std = { git = "https://github.com/chainpool/substrate", default_features = false } sr-primitives = { git = "https://github.com/chainpool/substrate", default_features = false } [dev-dependencies] diff --git a/primitives/src/lib.rs b/primitives/src/lib.rs index 01bccbce84c5c..15af592531b23 100644 --- a/primitives/src/lib.rs +++ b/primitives/src/lib.rs @@ -54,7 +54,7 @@ pub type CandidateSignature = ::runtime_primitives::Ed25519Signature; /// The Ed25519 pub key of an session that belongs to an authority of the relay chain. This is /// exactly equivalent to what the substrate calls an "authority". -pub type SessionKey = primitives::AuthorityId; +pub type SessionKey = primitives::Ed25519AuthorityId; /// A hash of some data used by the relay chain. pub type Hash = primitives::H256; diff --git a/rpc-servers/src/lib.rs b/rpc-servers/src/lib.rs index 6548c9c1b70b8..12007e2453e94 100644 --- a/rpc-servers/src/lib.rs +++ b/rpc-servers/src/lib.rs @@ -52,17 +52,16 @@ pub fn rpc_handler( where Block: BlockT + 'static, ExHash: Send + Sync + 'static + sr_primitives::Serialize + sr_primitives::DeserializeOwned, - SignedBlock: serde::Serialize + sr_primitives::DeserializeOwned, S: apis::state::StateApi, C: apis::chain::ChainApi< + NumberFor, Block::Hash, Block::Header, - NumberFor, SignedBlock, Metadata = Metadata, >, A: apis::author::AuthorApi, - Y: apis::system::SystemApi, + Y: apis::system::SystemApi>, { let mut io = pubsub::PubSubHandler::default(); io.extend_with(state.to_delegate()); diff --git a/rpc/src/author/mod.rs b/rpc/src/author/mod.rs index c6474c624d28c..c0ae58574e21c 100644 --- a/rpc/src/author/mod.rs +++ b/rpc/src/author/mod.rs @@ -57,7 +57,7 @@ build_rpc_trait! { /// Unsubscribe from extrinsic watching. #[rpc(name = "author_unwatchExtrinsic")] - fn unwatch_extrinsic(&self, Self::Metadata, SubscriptionId) -> Result; + fn unwatch_extrinsic(&self, Option, SubscriptionId) -> Result; } } @@ -162,7 +162,11 @@ where }) } - fn unwatch_extrinsic(&self, _metadata: Self::Metadata, id: SubscriptionId) -> Result { + fn unwatch_extrinsic( + &self, + _metadata: Option, + id: SubscriptionId, + ) -> Result { Ok(self.subscriptions.cancel(id)) } } diff --git a/rpc/src/chain/mod.rs b/rpc/src/chain/mod.rs index e6b71120db0bd..3aba247c0627c 100644 --- a/rpc/src/chain/mod.rs +++ b/rpc/src/chain/mod.rs @@ -26,6 +26,7 @@ use rpc::futures::{stream, Future, Sink, Stream}; use rpc::Result as RpcResult; use runtime_primitives::generic::{BlockId, SignedBlock}; use runtime_primitives::traits::{Block as BlockT, Header, NumberFor}; +use serde::Serialize; use subscriptions::Subscriptions; @@ -37,7 +38,10 @@ use self::error::Result; build_rpc_trait! { /// Substrate blockchain API - pub trait ChainApi { + pub trait ChainApi where + Header: Serialize, + SignedBlock: Serialize, + { type Metadata; /// Get header of a relay chain block. @@ -65,7 +69,7 @@ build_rpc_trait! { /// Unsubscribe from new head subscription. #[rpc(name = "chain_unsubscribeNewHead", alias = ["unsubscribe_newHead", ])] - fn unsubscribe_new_head(&self, Self::Metadata, SubscriptionId) -> RpcResult; + fn unsubscribe_new_head(&self, Option, SubscriptionId) -> RpcResult; } #[pubsub(name = "chain_finalisedHead")] { @@ -75,7 +79,7 @@ build_rpc_trait! { /// Unsubscribe from new head subscription. #[rpc(name = "chain_unsubscribeFinalisedHeads")] - fn unsubscribe_finalised_heads(&self, Self::Metadata, SubscriptionId) -> RpcResult; + fn unsubscribe_finalised_heads(&self, Option, SubscriptionId) -> RpcResult; } } } @@ -145,7 +149,7 @@ where } } -impl ChainApi, SignedBlock> +impl ChainApi, Block::Hash, Block::Header, SignedBlock> for Chain where Block: BlockT + 'static, @@ -198,7 +202,7 @@ where fn unsubscribe_new_head( &self, - _metadata: Self::Metadata, + _metadata: Option, id: SubscriptionId, ) -> RpcResult { Ok(self.subscriptions.cancel(id)) @@ -222,7 +226,7 @@ where fn unsubscribe_finalised_heads( &self, - _metadata: Self::Metadata, + _metadata: Option, id: SubscriptionId, ) -> RpcResult { Ok(self.subscriptions.cancel(id)) diff --git a/rpc/src/lib.rs b/rpc/src/lib.rs index 851d22307d497..85365a7120737 100644 --- a/rpc/src/lib.rs +++ b/rpc/src/lib.rs @@ -22,6 +22,7 @@ extern crate jsonrpc_core as rpc; extern crate jsonrpc_pubsub; extern crate parity_codec as codec; extern crate parking_lot; +extern crate serde; extern crate serde_json; extern crate sr_primitives as runtime_primitives; extern crate sr_version as runtime_version; @@ -37,7 +38,6 @@ extern crate error_chain; extern crate jsonrpc_macros; #[macro_use] extern crate log; -#[macro_use] extern crate serde_derive; #[cfg(test)] diff --git a/rpc/src/state/mod.rs b/rpc/src/state/mod.rs index 9e5456d6bd06e..925d1f6b94435 100644 --- a/rpc/src/state/mod.rs +++ b/rpc/src/state/mod.rs @@ -82,7 +82,7 @@ build_rpc_trait! { /// Unsubscribe from runtime version subscription #[rpc(name = "state_unsubscribeRuntimeVersion", alias = ["chain_unsubscribeRuntimeVersion", ])] - fn unsubscribe_runtime_version(&self, Self::Metadata, SubscriptionId) -> RpcResult; + fn unsubscribe_runtime_version(&self, Option, SubscriptionId) -> RpcResult; } #[pubsub(name = "state_storage")] { @@ -92,7 +92,7 @@ build_rpc_trait! { /// Unsubscribe from storage subscription #[rpc(name = "state_unsubscribeStorage")] - fn unsubscribe_storage(&self, Self::Metadata, SubscriptionId) -> RpcResult; + fn unsubscribe_storage(&self, Option, SubscriptionId) -> RpcResult; } } } @@ -141,8 +141,7 @@ where let return_data = self .client .executor() - .call(&BlockId::Hash(block), &method, &data.0)? - .return_data; + .call(&BlockId::Hash(block), &method, &data.0)?; Ok(Bytes(return_data)) } @@ -316,7 +315,11 @@ where }) } - fn unsubscribe_storage(&self, _meta: Self::Metadata, id: SubscriptionId) -> RpcResult { + fn unsubscribe_storage( + &self, + _meta: Option, + id: SubscriptionId, + ) -> RpcResult { Ok(self.subscriptions.cancel(id)) } @@ -375,7 +378,7 @@ where fn unsubscribe_runtime_version( &self, - _meta: Self::Metadata, + _meta: Option, id: SubscriptionId, ) -> RpcResult { Ok(self.subscriptions.cancel(id)) diff --git a/rpc/src/system/helpers.rs b/rpc/src/system/helpers.rs index 9bcee1909ed6a..30ea866265cf7 100644 --- a/rpc/src/system/helpers.rs +++ b/rpc/src/system/helpers.rs @@ -43,6 +43,25 @@ pub struct Health { pub peers: usize, /// Is the node syncing pub is_syncing: bool, + /// Should this node have any peers + pub should_have_peers: bool, +} + +/// Network Peer information +#[derive(Debug, PartialEq, Serialize)] +pub struct PeerInfo { + /// Peer Node Index + pub index: usize, + /// Peer ID + pub peer_id: String, + /// Roles + pub roles: String, + /// Protocol version + pub protocol_version: u32, + /// Peer best block hash + pub best_hash: Hash, + /// Peer best block number + pub best_number: Number, } impl fmt::Display for Health { diff --git a/rpc/src/system/mod.rs b/rpc/src/system/mod.rs index 7bba5f49ccb88..33002a86e6c4f 100644 --- a/rpc/src/system/mod.rs +++ b/rpc/src/system/mod.rs @@ -23,15 +23,15 @@ mod helpers; mod tests; use network; -use runtime_primitives::traits; +use runtime_primitives::traits::{self, Header as HeaderT}; use std::sync::Arc; use self::error::Result; -pub use self::helpers::{Health, Properties, SystemInfo}; +pub use self::helpers::{Health, PeerInfo, Properties, SystemInfo}; build_rpc_trait! { /// Substrate system RPC API - pub trait SystemApi { + pub trait SystemApi { /// Get the node's implementation name. Plain old string. #[rpc(name = "system_name")] fn system_name(&self) -> Result; @@ -55,6 +55,10 @@ build_rpc_trait! { /// - not performing a major sync #[rpc(name = "system_health")] fn system_health(&self) -> Result; + + /// Returns currently connected peers + #[rpc(name = "system_peers")] + fn system_peers(&self) -> Result>>; } } @@ -80,7 +84,7 @@ impl System { } } -impl SystemApi for System { +impl SystemApi::Number> for System { fn system_name(&self) -> Result { Ok(self.info.impl_name.clone()) } @@ -99,17 +103,26 @@ impl SystemApi for System { fn system_health(&self) -> Result { let status = self.sync.status(); + Ok(Health { + peers: status.num_peers, + is_syncing: status.sync.is_major_syncing(), + should_have_peers: self.should_have_peers, + }) + } - let is_syncing = status.sync.is_major_syncing(); - let peers = status.num_peers; - - let health = Health { peers, is_syncing }; - - let has_no_peers = peers == 0 && self.should_have_peers; - if has_no_peers || is_syncing { - Err(error::ErrorKind::NotHealthy(health))? - } else { - Ok(health) - } + fn system_peers(&self) -> Result::Number>>> { + Ok(self + .sync + .peers() + .into_iter() + .map(|(idx, peer_id, p)| PeerInfo { + index: idx, + peer_id: peer_id.map_or_else(Default::default, |p| p.to_base58()), + roles: format!("{:?}", p.roles), + protocol_version: p.protocol_version, + best_hash: p.best_hash, + best_number: p.best_number, + }) + .collect()) } } diff --git a/rpc/src/system/tests.rs b/rpc/src/system/tests.rs index 049b023c2ad01..718642a6f6d0a 100644 --- a/rpc/src/system/tests.rs +++ b/rpc/src/system/tests.rs @@ -16,7 +16,12 @@ use super::*; -use network::{self, ProtocolStatus, SyncState, SyncStatus}; +use network::config::Roles; +use network::{ + self, NodeIndex, PeerId, PeerInfo as NetworkPeerInfo, ProtocolStatus, PublicKey, SyncState, + SyncStatus, +}; +use primitives::H256; use test_client::runtime::Block; #[derive(Default)] @@ -41,6 +46,19 @@ impl network::SyncProvider for Status { num_active_peers: 0, } } + + fn peers(&self) -> Vec<(NodeIndex, Option, NetworkPeerInfo)> { + vec![( + 1, + Some(PublicKey::Ed25519((0..32).collect::>()).into()), + NetworkPeerInfo { + roles: Roles::FULL, + protocol_version: 1, + best_hash: Default::default(), + best_number: 1, + }, + )] + } } fn api>>(sync: T) -> System { @@ -84,11 +102,12 @@ fn system_properties_works() { #[test] fn system_health() { assert_matches!( - api(None).system_health().unwrap_err().kind(), - error::ErrorKind::NotHealthy(Health { + api(None).system_health().unwrap(), + Health { peers: 0, is_syncing: false, - }) + should_have_peers: true, + } ); assert_matches!( @@ -98,12 +117,12 @@ fn system_health() { is_dev: true, }) .system_health() - .unwrap_err() - .kind(), - error::ErrorKind::NotHealthy(Health { + .unwrap(), + Health { peers: 5, is_syncing: true, - }) + should_have_peers: false, + } ); assert_eq!( @@ -117,6 +136,7 @@ fn system_health() { Health { peers: 5, is_syncing: false, + should_have_peers: true, } ); @@ -131,6 +151,22 @@ fn system_health() { Health { peers: 0, is_syncing: false, + should_have_peers: false, } ); } + +#[test] +fn system_peers() { + assert_eq!( + api(None).system_peers().unwrap(), + vec![PeerInfo { + index: 1, + peer_id: "QmS5oyTmdjwBowwAH1D9YQnoe2HyWpVemH8qHiU5RqWPh4".into(), + roles: "FULL".into(), + protocol_version: 1, + best_hash: Default::default(), + best_number: 1u64, + }] + ); +} diff --git a/runtime/src/fee.rs b/runtime/src/fee.rs index c1fec3840b418..6c5515088aed6 100644 --- a/runtime/src/fee.rs +++ b/runtime/src/fee.rs @@ -3,8 +3,8 @@ use xassets::Call as XAssetsCall; use xbitcoin::Call as XbitcoinCall; use xprocess::Call as XAssetsProcessCall; -use xstaking::Call as XStakingCall; use xspot::Call as XSpotCall; +use xstaking::Call as XStakingCall; use Acceleration; use Call; @@ -49,10 +49,10 @@ impl CheckFee for Call { XStakingCall::claim(_) => Some(3), _ => None, }, - Call::XSpot(call)=>match call{ - XSpotCall::put_order(_,_,_,_,_) =>Some(8), - XSpotCall::cancel_order(_,_)=>Some(2), - _ => None, + Call::XSpot(call) => match call { + XSpotCall::put_order(_, _, _, _, _) => Some(8), + XSpotCall::cancel_order(_, _) => Some(2), + _ => None, }, _ => None, }; diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index 71a01dc9a6ba1..4f4f13af27828 100644 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -275,7 +275,6 @@ impl xspot::Trait for Runtime { type Price = Balance; } - construct_runtime!( pub enum Runtime with Log(InternalLog: DigestItem) where Block = Block, diff --git a/runtime/wasm/Cargo.lock b/runtime/wasm/Cargo.lock index 443b47ac5b9a9..00e3d935a85d0 100644 --- a/runtime/wasm/Cargo.lock +++ b/runtime/wasm/Cargo.lock @@ -227,7 +227,7 @@ dependencies = [ "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -237,20 +237,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam-epoch 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.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.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "crossbeam-deque" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "crossbeam-deque" version = "0.6.3" @@ -260,20 +251,6 @@ dependencies = [ "crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "crossbeam-epoch" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "arrayvec 0.4.10 (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.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.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.7.0" @@ -287,14 +264,6 @@ dependencies = [ "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "crossbeam-utils" -version = "0.2.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)", -] - [[package]] name = "crossbeam-utils" version = "0.6.3" @@ -406,11 +375,6 @@ name = "futures" version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "gcc" -version = "0.3.55" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "generic-array" version = "0.8.3" @@ -493,6 +457,23 @@ dependencies = [ "unicode-normalization 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "impl-codec" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "impl-serde" +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.83 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "integer-sqrt" version = "0.1.2" @@ -550,11 +531,6 @@ dependencies = [ "parity-bytes 0.1.0 (git+https://github.com/paritytech/parity-common?rev=616b40150ded71f57f650067fcbc5c99d7c343e6)", ] -[[package]] -name = "lazy_static" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "lazy_static" version = "1.2.0" @@ -778,14 +754,6 @@ dependencies = [ "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "owning_ref" -version = "0.3.3" -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 = "owning_ref" version = "0.4.0" @@ -826,15 +794,6 @@ dependencies = [ "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "parking_lot" -version = "0.4.8" -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_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "parking_lot" version = "0.6.4" @@ -846,24 +805,13 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "parking_lot_core" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.45 (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.7 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "parking_lot_core" version = "0.3.1" @@ -898,6 +846,18 @@ name = "pkg-config" version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "primitive-types" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "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)", + "impl-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "impl-serde 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "uint 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "primitives" version = "0.1.0" @@ -1057,25 +1017,6 @@ dependencies = [ "rand_core 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "rayon" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "rayon-core" -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.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "redox_syscall" version = "0.1.45" @@ -1083,14 +1024,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "ring" -version = "0.12.1" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "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)", + "cc 1.0.28 (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.45 (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)", + "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1263,7 +1203,7 @@ dependencies = [ [[package]] name = "slog-scope" -version = "4.1.0" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1282,7 +1222,7 @@ dependencies = [ [[package]] name = "sr-api-macros" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1293,7 +1233,7 @@ dependencies = [ [[package]] name = "sr-io" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "environmental 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", @@ -1308,7 +1248,7 @@ dependencies = [ [[package]] name = "sr-primitives" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -1325,7 +1265,7 @@ dependencies = [ [[package]] name = "sr-sandbox" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "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)", @@ -1337,7 +1277,7 @@ dependencies = [ [[package]] name = "sr-std" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1353,7 +1293,7 @@ dependencies = [ [[package]] name = "sr-version" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -1366,7 +1306,7 @@ dependencies = [ [[package]] name = "srml-aura" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1386,7 +1326,7 @@ dependencies = [ [[package]] name = "srml-balances" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1405,7 +1345,7 @@ dependencies = [ [[package]] name = "srml-consensus" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1422,7 +1362,7 @@ dependencies = [ [[package]] name = "srml-contract" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -1442,7 +1382,7 @@ dependencies = [ [[package]] name = "srml-council" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1462,7 +1402,7 @@ dependencies = [ [[package]] name = "srml-democracy" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1481,7 +1421,7 @@ dependencies = [ [[package]] name = "srml-grandpa" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1501,7 +1441,7 @@ dependencies = [ [[package]] name = "srml-metadata" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -1514,7 +1454,7 @@ dependencies = [ [[package]] name = "srml-session" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1534,7 +1474,7 @@ dependencies = [ [[package]] name = "srml-staking" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1557,7 +1497,7 @@ dependencies = [ [[package]] name = "srml-support" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -1575,7 +1515,7 @@ dependencies = [ [[package]] name = "srml-support-procedural" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -1587,7 +1527,7 @@ dependencies = [ [[package]] name = "srml-support-procedural-tools" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -1598,7 +1538,7 @@ dependencies = [ [[package]] name = "srml-support-procedural-tools-derive" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -1608,7 +1548,7 @@ dependencies = [ [[package]] name = "srml-system" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1625,7 +1565,7 @@ dependencies = [ [[package]] name = "srml-timestamp" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1642,7 +1582,7 @@ dependencies = [ [[package]] name = "srml-treasury" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1670,7 +1610,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "substrate-client" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -1681,7 +1621,7 @@ dependencies = [ "kvdb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=616b40150ded71f57f650067fcbc5c99d7c343e6)", "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)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-api-macros 0.1.0 (git+https://github.com/chainpool/substrate)", "sr-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", @@ -1699,7 +1639,7 @@ dependencies = [ [[package]] name = "substrate-consensus-aura-primitives" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "parity-codec 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/chainpool/substrate)", @@ -1713,12 +1653,14 @@ dependencies = [ [[package]] name = "substrate-consensus-common" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", "parity-codec-derive 2.1.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-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", "sr-version 0.1.0 (git+https://github.com/chainpool/substrate)", "substrate-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", @@ -1728,14 +1670,14 @@ dependencies = [ [[package]] name = "substrate-executor" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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.7.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.83 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0 (git+https://github.com/chainpool/substrate)", @@ -1750,7 +1692,7 @@ dependencies = [ [[package]] name = "substrate-finality-grandpa-primitives" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -1763,7 +1705,7 @@ dependencies = [ [[package]] name = "substrate-keyring" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", @@ -1773,33 +1715,32 @@ dependencies = [ [[package]] name = "substrate-primitives" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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.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)", + "impl-serde 0.1.1 (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)", + "primitive-types 0.1.4 (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.83 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)", "sr-std 0.1.0 (git+https://github.com/chainpool/substrate)", "twox-hash 1.1.2 (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)", + "untrusted 0.6.2 (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-serializer" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "serde 1.0.83 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1808,14 +1749,14 @@ dependencies = [ [[package]] name = "substrate-state-machine" version = "0.1.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "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.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)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0 (git+https://github.com/chainpool/substrate)", "substrate-trie 0.4.0 (git+https://github.com/chainpool/substrate)", "trie-db 0.9.0 (git+https://github.com/paritytech/trie)", @@ -1825,22 +1766,22 @@ dependencies = [ [[package]] name = "substrate-telemetry" version = "0.3.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" 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)", - "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.7.1 (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.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slog-scope 4.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-scope 4.1.1 (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-trie" version = "0.4.0" -source = "git+https://github.com/chainpool/substrate#c9f509f86e9fb8e0524e41eea0f96ec7c51b2c22" +source = "git+https://github.com/chainpool/substrate#ce83a741420a3115e40be0f9aba0a8e524e3c0fa" dependencies = [ "hash-db 0.9.0 (git+https://github.com/paritytech/trie)", "memory-db 0.9.0 (git+https://github.com/paritytech/trie)", @@ -2071,7 +2012,7 @@ name = "twox-hash" version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -2086,6 +2027,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" 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)", + "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2117,7 +2059,7 @@ dependencies = [ [[package]] name = "untrusted" -version = "0.5.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -2500,11 +2442,8 @@ dependencies = [ "checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e" "checksum crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad4c7ea749d9fb09e23c5cb17e3b70650860553a0e2744e38446b1803bf7db94" "checksum crossbeam-channel 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5b2a9ea8f77c7f9efd317a8a5645f515d903a2d86ee14d2337a5facd1bd52c12" -"checksum crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f739f8c5363aca78cfb059edf753d8f0d36908c348f3d8d1503f03d8b75d9cf3" "checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" -"checksum crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "927121f5407de9956180ff5e936fe3cf4324279280001cd56b669d28ee7e9150" "checksum crossbeam-epoch 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f10a4f8f409aaac4b16a5474fb233624238fcdeefb9ba50d5ea059aab63ba31c" -"checksum crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2760899e32a1d58d5abb31129f8fae5de75220bc2176e77ff7c627ae45c918d9" "checksum crossbeam-utils 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "41ee4864f4797060e52044376f7d107429ce1fb43460021b126424b7180ee21a" "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" @@ -2521,7 +2460,6 @@ dependencies = [ "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" -"checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" "checksum generic-array 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fceb69994e330afed50c93524be68c42fa898c2d9fd4ee8da03bd7363acd26f2" "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)" = "" @@ -2532,13 +2470,14 @@ dependencies = [ "checksum hmac-drbg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4fe727d41d2eec0a6574d887914347e5ff96a3b87177817e2a9820c5c87fecc2" "checksum httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e8734b0cfd3bc3e101ec59100e101c2eecd19282202e87808b3037b442777a83" "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" +"checksum impl-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9c88568d828291c50eed30cd7fb9f8e688ad0013620186fa3e777b9f206c79f2" +"checksum impl-serde 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5158079de9d4158e0ce1de3ae0bd7be03904efc40b3d7dd8b8c301cbf6b52b56" "checksum integer-sqrt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ea155abb3ba6f382a75f1418988c05fe82959ed9ce727de427f9cfd425b0c903" "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" "checksum itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1306f3464951f30e30d12373d31c79fbd52d236e5e896fd92f96ec7babbbe60b" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum keys 0.1.0 (git+https://github.com/chainx-org/bitcoin-rust)" = "" "checksum kvdb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=616b40150ded71f57f650067fcbc5c99d7c343e6)" = "" -"checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" "checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1" "checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" "checksum libc 0.2.45 (registry+https://github.com/rust-lang/crates.io-index)" = "2d2857ec59fadc0773853c664d2d18e7198e83883e7060b63c924cb077bd5c74" @@ -2565,20 +2504,18 @@ dependencies = [ "checksum once_cell 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d7ce3535d54560c937c1652ba4a0da66bfc63e0f8e07bed127483afb6e5ee925" "checksum openssl 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)" = "ec7bd7ca4cce6dbdc77e7c1230682740d307d1218a87fb0349a571272be749f9" "checksum openssl-sys 0.9.40 (registry+https://github.com/rust-lang/crates.io-index)" = "1bb974e77de925ef426b6bc82fce15fd45bdcbeb5728bffcfc7cdeeb7ce1c2d6" -"checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" "checksum parity-bytes 0.1.0 (git+https://github.com/paritytech/parity-common?rev=616b40150ded71f57f650067fcbc5c99d7c343e6)" = "" "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-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)" = "511379a8194230c2395d2f5fa627a5a7e108a9f976656ce723ae68fca4097bfc" -"checksum parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "149d8f5b97f3c1133e3cfcd8886449959e856b557ff281e292b733d7c69e005e" "checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5" -"checksum parking_lot 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9723236a9525c757d9725b993511e3fc941e33f27751942232f0058298297edf" -"checksum parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "4db1a8ccf734a7bce794cc19b3df06ed87ab2f3907036b693c68f56b4d4537fa" +"checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" "checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c" "checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" "checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" +"checksum primitive-types 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f47c18b4601125931d69fcf7b000c2c16a304e4f84d58218d6470b4502e00b58" "checksum primitives 0.1.0 (git+https://github.com/chainx-org/bitcoin-rust)" = "" "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" @@ -2596,10 +2533,8 @@ dependencies = [ "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" "checksum rand_pcg 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "086bd09a33c7044e56bb44d5bdde5a60e7f119a9e95b0775f545de759a32fe05" "checksum rand_xorshift 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "effa3fcaa47e18db002bdde6060944b6d2f9cfd8db471c30e873448ad9187be3" -"checksum rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b614fe08b6665cb9a231d07ac1364b0ef3cb3698f1239ee0c4c3a88a524f54c8" -"checksum rayon-core 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b055d1e92aba6877574d8fe604a63c8b5df60f60e5982bf7ccbb1338ea527356" "checksum redox_syscall 0.1.45 (registry+https://github.com/rust-lang/crates.io-index)" = "7b7aac97a11cf928b13c97f726b1bfe8542969fcbc39007ce566a888da5964a3" -"checksum ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6f7d28b30a72c01b458428e0ae988d4149c20d902346902be881e3edc4bb325c" +"checksum ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2c4db68a2e35f3497146b7e4563df7d4773a2433230c5e4b448328e31740458a" "checksum rustc-demangle 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "01b90379b8664dd83460d59bdc5dd1fd3172b8913788db483ed1325171eab2f7" "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" @@ -2623,7 +2558,7 @@ dependencies = [ "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.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ddc0d2aff1f8f325ef660d9a0eb6e6dcd20b30b3f581a5897f58bf42d061c37a" -"checksum slog-scope 4.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fb8490ed7795d9f147813515f8a62ab6c1d40c65edba8a73c414b63691f2769a" +"checksum slog-scope 4.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "60c04b4726fa04595ccf2c2dad7bcd15474242c4c5e109a8a376e8a2c9b1539a" "checksum smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b73ea3738b47563803ef814925e69be00799a8c07420be8b996f8e98fb2336db" "checksum sr-api-macros 0.1.0 (git+https://github.com/chainpool/substrate)" = "" "checksum sr-io 0.1.0 (git+https://github.com/chainpool/substrate)" = "" @@ -2688,7 +2623,7 @@ dependencies = [ "checksum unicode-normalization 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6a0180bc61fc5a987082bfa111f4cc95c4caff7f9799f3e46df09163a937aa25" "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 untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f392d7819dbe58833e26872f5f6f0d68b7bbbe90fc3667e98731c4a15ad9a7ae" +"checksum untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "55cd1f4b4e96b46aeb8d4855db4a7a9bd96eeeb5c6a1ab54593328761642ce2f" "checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" "checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" diff --git a/runtime/wasm/target/wasm32-unknown-unknown/release/chainx_runtime_wasm.compact.wasm b/runtime/wasm/target/wasm32-unknown-unknown/release/chainx_runtime_wasm.compact.wasm index 5e702eb4eb2b8ad413abf13355e2df6b1e9fdabf..08ba00686de098b7b56a83766aa753252a6a0e2e 100644 GIT binary patch delta 68338 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

Wrr~VgDis@Re?{%D$_M>F0ap?t delta 68166 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 diff --git a/xr-primitives/Cargo.toml b/xr-primitives/Cargo.toml index 1b825300d6c85..5b7c958a94b44 100644 --- a/xr-primitives/Cargo.toml +++ b/xr-primitives/Cargo.toml @@ -11,9 +11,9 @@ serde_derive = { version = "1.0", optional = true } parity-codec = { version = "2.1", default-features = false } parity-codec-derive = { version = "2.1", default-features = false } substrate-primitives = { git = "https://github.com/chainpool/substrate", default_features = false } -sr-std = { git = "https://github.com/chainpool/substrate/", default_features = false } -sr-io = { git = "https://github.com/chainpool/substrate/", default_features = false } -sr-primitives = { git = "https://github.com/chainpool/substrate/", default_features = false } +sr-std = { git = "https://github.com/chainpool/substrate", default_features = false } +sr-io = { git = "https://github.com/chainpool/substrate", default_features = false } +sr-primitives = { git = "https://github.com/chainpool/substrate", default_features = false } [dev-dependencies] serde_json = "1.0" diff --git a/xrml/xaccounts/src/lib.rs b/xrml/xaccounts/src/lib.rs index f5515a733e297..c8d9b74e66c5c 100644 --- a/xrml/xaccounts/src/lib.rs +++ b/xrml/xaccounts/src/lib.rs @@ -78,7 +78,7 @@ pub struct IntentionProps { decl_module! { pub struct Module for enum Call where origin: T::Origin { - fn deposit_event() = default; + fn deposit_event() = default; } } diff --git a/xrml/xassets/records/src/lib.rs b/xrml/xassets/records/src/lib.rs index 0fbfcf7ba5de9..4b97f8d0bfacb 100644 --- a/xrml/xassets/records/src/lib.rs +++ b/xrml/xassets/records/src/lib.rs @@ -63,7 +63,7 @@ pub trait Trait: system::Trait + balances::Trait + xassets::Trait { decl_module! { pub struct Module for enum Call where origin: T::Origin { - fn deposit_event() = default; + fn deposit_event() = default; } } diff --git a/xrml/xdex/spot/src/def.rs b/xrml/xdex/spot/src/def.rs index 235976c7b5f88..4305fa152cd28 100644 --- a/xrml/xdex/spot/src/def.rs +++ b/xrml/xdex/spot/src/def.rs @@ -1,5 +1,5 @@ -use xassets::assetdef::Token; use rstd::prelude::*; +use xassets::assetdef::Token; pub type ID = u128; pub type OrderPairID = u32; @@ -76,13 +76,7 @@ pub struct OrderPair { pub used: bool, } impl OrderPair { - pub fn new( - id: OrderPairID, - first: Token, - second: Token, - precision: u32, - status: bool, - ) -> Self { + pub fn new(id: OrderPairID, first: Token, second: Token, precision: u32, status: bool) -> Self { return OrderPair { id: id, first: first, diff --git a/xrml/xdex/spot/src/lib.rs b/xrml/xdex/spot/src/lib.rs index 95ca35405dd5e..3d03b2086425c 100644 --- a/xrml/xdex/spot/src/lib.rs +++ b/xrml/xdex/spot/src/lib.rs @@ -23,10 +23,10 @@ extern crate parity_codec as codec; // for substrate runtime // map!, vec! marco. //#[cfg_attr(feature = "std", macro_use)] -extern crate substrate_primitives; extern crate sr_io as runtime_io; extern crate sr_primitives as primitives; extern crate sr_std as rstd; +extern crate substrate_primitives; #[macro_use] extern crate srml_support as runtime_support; @@ -36,15 +36,14 @@ extern crate srml_timestamp as timestamp; #[cfg(test)] extern crate srml_consensus as consensus; -extern crate xrml_xbridge_bitcoin as xbitcoin; extern crate xrml_xassets_records as xrecords; +extern crate xrml_xbridge_bitcoin as xbitcoin; // for chainx runtime module lib extern crate xrml_xassets_assets as xassets; extern crate xrml_xsupport as xsupport; extern crate xrml_xsystem as xsystem; - #[cfg(test)] mod mock; #[cfg(test)] @@ -52,17 +51,17 @@ mod tests; mod def; -use xassets::assetdef::{ChainT, Token}; use codec::Codec; use def::{ Fill, Handicap, Order, OrderDirection, OrderPair, OrderPairID, OrderStatus, OrderType, ID, }; -use rstd::prelude::*; use primitives::traits::{As, Member, SimpleArithmetic, Zero}; use primitives::traits::{CheckedAdd, CheckedSub}; +use rstd::prelude::*; use runtime_support::dispatch::Result; use runtime_support::{Parameter, StorageMap, StorageValue}; use system::ensure_signed; +use xassets::assetdef::{ChainT, Token}; pub type OrderT = Order< OrderPairID, @@ -79,7 +78,7 @@ pub type FillT = Fill< >; pub type HandicapT = Handicap<::Price>; -pub trait Trait: balances::Trait + xassets::Trait + timestamp::Trait { +pub trait Trait: balances::Trait + xassets::Trait + timestamp::Trait { type Price: Parameter + Member + Codec @@ -97,7 +96,7 @@ pub trait Trait: balances::Trait + xassets::Trait + timestamp::Trait { decl_module! { pub struct Module for enum Call where origin: T::Origin { - fn deposit_event() = default; + fn deposit_event() = default; //委托 pub fn put_order(origin,pairid: OrderPairID,ordertype: OrderType,direction:OrderDirection,amount: T::Balance,price:T::Price) -> Result{ @@ -125,7 +124,7 @@ decl_module! { Some(_pair) => Err("have a existed pair in list"), None => { let pair_len=>::get(); - + let pair=OrderPair{ id:pair_len, first:first, @@ -182,11 +181,8 @@ decl_event!( ::Balance, ::Price { - UpdateOrder(AccountId,ID,OrderPairID,Price,OrderType,OrderDirection,Balance,Balance,BlockNumber,BlockNumber,OrderStatus,Balance,Vec), FillOrder(ID,OrderPairID,Price,AccountId,AccountId,ID,ID, Balance,u64), - - UpdateOrderPair(OrderPairID,Token,Token,u32,bool), PriceVolatility(u32), } @@ -194,7 +190,7 @@ decl_event!( decl_storage! { trait Store for Module as XSpot { - + //交易对列表 pub OrderPairLen get(pair_len): OrderPairID ; pub OrderPairOf get(pair_of):map ( OrderPairID ) => Option; @@ -222,7 +218,7 @@ decl_storage! { let src_r = storage.clone().build_storage().unwrap().0; let mut tmp_storage: runtime_io::TestExternalities = src_r.into(); with_externalities(&mut tmp_storage, || { - + for (first, second, precision, status) in config.pair_list.iter() { Module::::add_pair(first.clone(),second.clone(),*precision,*status).unwrap(); } @@ -382,8 +378,7 @@ impl Module { if let Some(sum) = Self::trans_amount(amount, price, &pair) { match direction { OrderDirection::Buy => { - if >::free_balance(&who, &pair.second) < sum - { + if >::free_balance(&who, &pair.second) < sum { return Err("transactor's free token balance too low, can't put buy order"); } reserve_last = As::sa(sum.as_()); @@ -398,8 +393,7 @@ impl Module { } } OrderDirection::Sell => { - if >::free_balance(&who, &pair.first) - < As::sa(amount.as_()) + if >::free_balance(&who, &pair.first) < As::sa(amount.as_()) { return Err("transactor's free token balance too low, can't put sell order"); } @@ -421,10 +415,10 @@ impl Module { // 更新用户的交易对的挂单index let id: ID = match >::get(who) { - Some(id) => id , + Some(id) => id, None => 0, }; - >::insert(who, id+1); + >::insert(who, id + 1); //新增挂单记录 let mut order = Order { @@ -456,7 +450,7 @@ impl Module { Ok(()) } - fn do_match(order: &mut OrderT, pair: &OrderPair, handicap: &HandicapT) { + fn do_match(order: &mut OrderT, pair: &OrderPair, handicap: &HandicapT) { let mut opponent_price: T::Price = match order.direction { OrderDirection::Buy => handicap.sell, OrderDirection::Sell => handicap.buy, @@ -519,7 +513,6 @@ impl Module { } else { amount = v1; } - //填充成交 if let Err(_msg) = Self::fill_order( @@ -549,20 +542,23 @@ impl Module { //移动对手价 match order.direction { OrderDirection::Buy => { - opponent_price = match opponent_price.checked_add(&As::sa(10_u64.pow(pair.precision.as_()))) { + opponent_price = match opponent_price + .checked_add(&As::sa(10_u64.pow(pair.precision.as_()))) + { Some(v) => v, None => Default::default(), }; } OrderDirection::Sell => { - opponent_price = match opponent_price.checked_sub(&As::sa(10_u64.pow(pair.precision.as_()))) { + opponent_price = match opponent_price + .checked_sub(&As::sa(10_u64.pow(pair.precision.as_()))) + { Some(v) => v, None => Default::default(), }; } } } - } fn new_order(order: &mut OrderT) { @@ -589,7 +585,7 @@ impl Module { match order.direction { OrderDirection::Buy => { if let Some(mut handicap) = >::get(order.pair) { - if order.price > handicap.buy || handicap.buy== Default::default() { + if order.price > handicap.buy || handicap.buy == Default::default() { handicap.buy = order.price; >::insert(order.pair, handicap); } @@ -624,8 +620,8 @@ impl Module { fn fill_order( pairid: OrderPairID, - maker_order:&mut OrderT, - taker_order:&mut OrderT, + maker_order: &mut OrderT, + taker_order: &mut OrderT, price: T::Price, amount: T::Balance, ) -> Result { @@ -654,8 +650,7 @@ impl Module { } maker_order.lastupdate_time = As::sa(>::now().as_()); - - } + } //更新taker对应的订单 { @@ -673,10 +668,9 @@ impl Module { } taker_order.lastupdate_time = As::sa(>::now().as_()); - - } - let maker_user=&maker_order.user; - let taker_user=&taker_order.user; + } + let maker_user = &maker_order.user; + let taker_user = &taker_order.user; //转移 maker和taker中的资产 match maker_order.direction { @@ -704,11 +698,10 @@ impl Module { //计算买家的数量,解锁second,并move 给卖家 let taker_back_token: &Token = &pair.second; - let taker_back_amount: T::Balance = - match Self::trans_amount(amount, price, &pair) { - Some(sum) => sum, - None => Zero::zero(), - }; + let taker_back_amount: T::Balance = match Self::trans_amount(amount, price, &pair) { + Some(sum) => sum, + None => Zero::zero(), + }; taker_order.reserve_last = match taker_order.reserve_last.checked_sub(&taker_back_amount) { Some(v) => v, @@ -730,11 +723,10 @@ impl Module { OrderDirection::Buy => { //买先解锁second token 并move给卖家,和手续费账户 let maker_back_token: &Token = &pair.second; - let maker_back_amount: T::Balance = - match Self::trans_amount(amount, price, &pair) { - Some(sum) => sum, - None => Zero::zero(), - }; + let maker_back_amount: T::Balance = match Self::trans_amount(amount, price, &pair) { + Some(sum) => sum, + None => Zero::zero(), + }; maker_order.reserve_last = match maker_order.reserve_last.checked_sub(&maker_back_amount) { Some(v) => v, @@ -785,7 +777,7 @@ impl Module { maker_user_order_index: maker_order.index, taker_user_order_index: taker_order.index, amount: amount, - time: (>::now().as_()) + time: (>::now().as_()), }; >::insert(pairid, new_fill_index); @@ -829,12 +821,7 @@ impl Module { { return Err(msg); } - if let Err(e) = >::move_free_balance( - &from, - &to, - &token, - value, - ) { + if let Err(e) = >::move_free_balance(&from, &to, &token, value) { return Err(e.info()); } @@ -851,7 +838,9 @@ impl Module { OrderDirection::Buy => { //更新卖一 if let Some(mut handicap) = >::get(pair.id) { - handicap.sell = match handicap.sell.checked_add(&As::sa(10_u64.pow(pair.precision))) + handicap.sell = match handicap + .sell + .checked_add(&As::sa(10_u64.pow(pair.precision))) { Some(v) => v, None => Default::default(), @@ -863,7 +852,10 @@ impl Module { OrderDirection::Sell => { //更新买一 if let Some(mut handicap) = >::get(pair.id) { - handicap.buy = match handicap.buy.checked_sub(&As::sa(10_u64.pow(pair.precision))) { + handicap.buy = match handicap + .buy + .checked_sub(&As::sa(10_u64.pow(pair.precision))) + { Some(v) => v, None => Default::default(), }; @@ -880,25 +872,23 @@ impl Module { seconds / period.as_() } fn update_last_average_price(pairid: OrderPairID, price: T::Price) { - - let blocks_per_day:u64=Self::blocks_per_day(); - let number=>::block_number(); - - match >::get(pairid){ - Some((last,mut aver,time))=>{ - if number-time < As::sa(blocks_per_day) { - let new_weight:u64=price.as_()*(number-time).as_(); - let old_weight:u64=aver.as_()*(blocks_per_day+time.as_()-number.as_()); - aver=As::sa((new_weight+old_weight)/blocks_per_day); - } - else { - aver=price; + let blocks_per_day: u64 = Self::blocks_per_day(); + let number = >::block_number(); + + match >::get(pairid) { + Some((last, mut aver, time)) => { + if number - time < As::sa(blocks_per_day) { + let new_weight: u64 = price.as_() * (number - time).as_(); + let old_weight: u64 = aver.as_() * (blocks_per_day + time.as_() - number.as_()); + aver = As::sa((new_weight + old_weight) / blocks_per_day); + } else { + aver = price; } - >::insert(pairid,(price,aver,number)); - }, - None=>{ - >::insert(pairid,(price,price,number)); - }, + >::insert(pairid, (price, aver, number)); + } + None => { + >::insert(pairid, (price, price, number)); + } } } //检查和更新报价 diff --git a/xrml/xdex/spot/src/mock.rs b/xrml/xdex/spot/src/mock.rs index ff0f08f72bbb0..12f5162ae2aaf 100644 --- a/xrml/xdex/spot/src/mock.rs +++ b/xrml/xdex/spot/src/mock.rs @@ -7,9 +7,9 @@ use primitives::BuildStorage; use runtime_io; use super::*; +use std::str; use xassets; use xassets::assetdef::{Asset, Chain, ChainT, Token}; -use std::str; impl_outer_origin! { pub enum Origin for Test {} @@ -55,7 +55,7 @@ impl xbitcoin::Trait for Test { impl xassets::Trait for Test { type Event = (); type OnAssetChanged = (); - type OnAssetRegistration=(); + type OnAssetRegistration = (); } impl xrecords::Trait for Test { type Event = (); @@ -93,7 +93,12 @@ pub fn new_test_ext( t.extend( balances::GenesisConfig:: { - balances: vec![(1, 1_000_000_000), (2, 1_000_000_000), (3, 1_000_000_000), (4, 1_000_000_000)], + balances: vec![ + (1, 1_000_000_000), + (2, 1_000_000_000), + (3, 1_000_000_000), + (4, 1_000_000_000), + ], transaction_base_fee: 0, transaction_byte_fee: 0, existential_deposit: ext_deposit, @@ -105,13 +110,20 @@ pub fn new_test_ext( .unwrap() .0, ); - t.extend( + t.extend( xassets::GenesisConfig:: { - pcx: (pcx_precision, pcx_desc), - memo_len: 128, - asset_list: vec![ - (btc_asset, true, vec![(1, 1_000_000_000),(2, 1_000_000_000),(3, 1_000_000_000),(4, 1_000_000_000)]) + pcx: (pcx_precision, pcx_desc), + memo_len: 128, + asset_list: vec![( + btc_asset, + true, + vec![ + (1, 1_000_000_000), + (2, 1_000_000_000), + (3, 1_000_000_000), + (4, 1_000_000_000), ], + )], } .build_storage() .unwrap() @@ -119,7 +131,12 @@ pub fn new_test_ext( ); t.extend( GenesisConfig:: { - pair_list: vec![( as ChainT>::TOKEN.to_vec(), as ChainT>::TOKEN.to_vec(),5,true)], + pair_list: vec![( + as ChainT>::TOKEN.to_vec(), + as ChainT>::TOKEN.to_vec(), + 5, + true, + )], // (OrderPair { first: Runtime::CHAINX_SYMBOL.to_vec(), second: BridgeOfBTC::SYMBOL.to_vec() }, 8) price_volatility: 10, _genesis_phantom_data: Default::default(), @@ -132,9 +149,6 @@ pub fn new_test_ext( runtime_io::TestExternalities::new(t) } - - - pub type Spot = Module; pub type Assets = xassets::Module; -pub type Balances = balances::Module; \ No newline at end of file +pub type Balances = balances::Module; diff --git a/xrml/xdex/spot/src/tests.rs b/xrml/xdex/spot/src/tests.rs index 34681293bbd6a..f0b446c62a523 100644 --- a/xrml/xdex/spot/src/tests.rs +++ b/xrml/xdex/spot/src/tests.rs @@ -1,123 +1,204 @@ // Copyright 2018 Chainpool. use super::*; +use mock::*; +use runtime_io::with_externalities; +use std::str; use xassets::assetdef::{Asset, Chain, ChainT, Token}; use xassets::AssetType::*; -use std::str; -use runtime_io::with_externalities; -use mock::*; - #[test] fn test_pair() { with_externalities(&mut new_test_ext(0, 3, 3, 0, true, 10), || { let a: u64 = 1; // accountid - let first:Token=b"EOS".to_vec(); - let second:Token=b"ETH".to_vec(); - Spot::add_pair(first.clone(),second.clone(),2,true).unwrap(); + let first: Token = b"EOS".to_vec(); + let second: Token = b"ETH".to_vec(); + Spot::add_pair(first.clone(), second.clone(), 2, true).unwrap(); assert_eq!(Spot::pair_len(), 2); - let pair=Spot::get_pair_by(&first,&second).unwrap(); - assert_eq!(pair.first,first); + let pair = Spot::get_pair_by(&first, &second).unwrap(); + assert_eq!(pair.first, first); }) } #[test] fn test_order() { with_externalities(&mut new_test_ext(0, 3, 3, 0, true, 10), || { - - let a: u64 = 3; + let a: u64 = 3; let b: u64 = 4; - let BTC=b"BTC".to_vec(); - let PCX=b"PCX".to_vec(); + let BTC = b"BTC".to_vec(); + let PCX = b"PCX".to_vec(); - assert_eq!(Assets::asset_balance(&a, &BTC,Free), 1_000_000_000); - assert_eq!(Assets::asset_balance(&a, &BTC,ReservedDexSpot), 0); - assert_eq!(Assets::asset_balance(&a,&PCX,Free), 1_000_000_000); - assert_eq!(Assets::asset_balance(&a, &PCX,ReservedDexSpot), 0); + assert_eq!(Assets::asset_balance(&a, &BTC, Free), 1_000_000_000); + assert_eq!(Assets::asset_balance(&a, &BTC, ReservedDexSpot), 0); + assert_eq!(Assets::asset_balance(&a, &PCX, Free), 1_000_000_000); + assert_eq!(Assets::asset_balance(&a, &PCX, ReservedDexSpot), 0); - assert_eq!(Assets::asset_balance(&b, &BTC,Free), 1_000_000_000); - assert_eq!(Assets::asset_balance(&b, &BTC,ReservedDexSpot), 0); - assert_eq!(Assets::asset_balance(&b,&PCX,Free), 1_000_000_000); - assert_eq!(Assets::asset_balance(&b, &PCX,ReservedDexSpot), 0); + assert_eq!(Assets::asset_balance(&b, &BTC, Free), 1_000_000_000); + assert_eq!(Assets::asset_balance(&b, &BTC, ReservedDexSpot), 0); + assert_eq!(Assets::asset_balance(&b, &PCX, Free), 1_000_000_000); + assert_eq!(Assets::asset_balance(&b, &PCX, ReservedDexSpot), 0); //a 第一笔挂买单 1000*100000 - assert_eq!(Spot::put_order(Some(a).into(),0,OrderType::Limit,OrderDirection::Buy,1000,100000),Ok(())); - assert_eq!(Assets::asset_balance(&a, &BTC,Free), 1_000_000_000-(1000*100000)); - assert_eq!(Assets::asset_balance(&a, &BTC,ReservedDexSpot), 1000*100000); - assert_eq!(Assets::asset_balance(&a,&PCX,Free), 1_000_000_000); - assert_eq!(Assets::asset_balance(&a, &PCX,ReservedDexSpot), 0); + assert_eq!( + Spot::put_order( + Some(a).into(), + 0, + OrderType::Limit, + OrderDirection::Buy, + 1000, + 100000 + ), + Ok(()) + ); + assert_eq!( + Assets::asset_balance(&a, &BTC, Free), + 1_000_000_000 - (1000 * 100000) + ); + assert_eq!( + Assets::asset_balance(&a, &BTC, ReservedDexSpot), + 1000 * 100000 + ); + assert_eq!(Assets::asset_balance(&a, &PCX, Free), 1_000_000_000); + assert_eq!(Assets::asset_balance(&a, &PCX, ReservedDexSpot), 0); //a 第二笔挂买单 1000*50 - assert_eq!(Spot::put_order(Some(a).into(),0,OrderType::Limit,OrderDirection::Buy,1000,50),Ok(())); - assert_eq!(Assets::asset_balance(&a, &BTC,Free), 1_000_000_000-(1000*100000)-(1000*50)); - assert_eq!(Assets::asset_balance(&a, &BTC,ReservedDexSpot), 1000*100000+1000*50); - assert_eq!(Assets::asset_balance(&a,&PCX,Free), 1_000_000_000); - assert_eq!(Assets::asset_balance(&a, &PCX,ReservedDexSpot), 0); - - assert_eq!(Spot::account_orders_len(&a).unwrap(),2); + assert_eq!( + Spot::put_order( + Some(a).into(), + 0, + OrderType::Limit, + OrderDirection::Buy, + 1000, + 50 + ), + Ok(()) + ); + assert_eq!( + Assets::asset_balance(&a, &BTC, Free), + 1_000_000_000 - (1000 * 100000) - (1000 * 50) + ); + assert_eq!( + Assets::asset_balance(&a, &BTC, ReservedDexSpot), + 1000 * 100000 + 1000 * 50 + ); + assert_eq!(Assets::asset_balance(&a, &PCX, Free), 1_000_000_000); + assert_eq!(Assets::asset_balance(&a, &PCX, ReservedDexSpot), 0); + + assert_eq!(Spot::account_orders_len(&a).unwrap(), 2); //b 第一笔挂卖单 1000*200000 - assert_eq!(Spot::put_order(Some(b).into(),0,OrderType::Limit,OrderDirection::Sell,1000,200000),Ok(())); - assert_eq!(Assets::asset_balance(&b, &BTC,Free), 1_000_000_000); - assert_eq!(Assets::asset_balance(&b, &BTC,ReservedDexSpot), 0); - assert_eq!(Assets::asset_balance(&b,&PCX,Free), 1_000_000_000-1000); - assert_eq!(Assets::asset_balance(&b, &PCX,ReservedDexSpot), 1000); - - let mut handicapMap=Spot::handicap_map(0).unwrap(); + assert_eq!( + Spot::put_order( + Some(b).into(), + 0, + OrderType::Limit, + OrderDirection::Sell, + 1000, + 200000 + ), + Ok(()) + ); + assert_eq!(Assets::asset_balance(&b, &BTC, Free), 1_000_000_000); + assert_eq!(Assets::asset_balance(&b, &BTC, ReservedDexSpot), 0); + assert_eq!(Assets::asset_balance(&b, &PCX, Free), 1_000_000_000 - 1000); + assert_eq!(Assets::asset_balance(&b, &PCX, ReservedDexSpot), 1000); + + let mut handicapMap = Spot::handicap_map(0).unwrap(); assert_eq!(handicapMap.buy, 100000); assert_eq!(handicapMap.sell, 200000); //b 第二笔挂卖单 500*100000 - assert_eq!(Spot::put_order(Some(b).into(),0,OrderType::Limit,OrderDirection::Sell,500,100000),Ok(())); - - - assert_eq!(Assets::asset_balance(&a, &BTC,Free), 1_000_000_000-(1000*100000)-(1000*50)); - assert_eq!(Assets::asset_balance(&a, &BTC,ReservedDexSpot), 1000*100000+1000*50-500*100000); - assert_eq!(Assets::asset_balance(&a,&PCX,Free), 1_000_000_000+500); - assert_eq!(Assets::asset_balance(&a, &PCX,ReservedDexSpot), 0); - - assert_eq!(Assets::asset_balance(&b, &BTC,Free), 1_000_000_000+500*100000); - assert_eq!(Assets::asset_balance(&b, &BTC,ReservedDexSpot), 0); - assert_eq!(Assets::asset_balance(&b,&PCX,Free), 1_000_000_000-1000-500); - assert_eq!(Assets::asset_balance(&b, &PCX,ReservedDexSpot), 1000); - - handicapMap=Spot::handicap_map(0).unwrap(); + assert_eq!( + Spot::put_order( + Some(b).into(), + 0, + OrderType::Limit, + OrderDirection::Sell, + 500, + 100000 + ), + Ok(()) + ); + + assert_eq!( + Assets::asset_balance(&a, &BTC, Free), + 1_000_000_000 - (1000 * 100000) - (1000 * 50) + ); + assert_eq!( + Assets::asset_balance(&a, &BTC, ReservedDexSpot), + 1000 * 100000 + 1000 * 50 - 500 * 100000 + ); + assert_eq!(Assets::asset_balance(&a, &PCX, Free), 1_000_000_000 + 500); + assert_eq!(Assets::asset_balance(&a, &PCX, ReservedDexSpot), 0); + + assert_eq!( + Assets::asset_balance(&b, &BTC, Free), + 1_000_000_000 + 500 * 100000 + ); + assert_eq!(Assets::asset_balance(&b, &BTC, ReservedDexSpot), 0); + assert_eq!( + Assets::asset_balance(&b, &PCX, Free), + 1_000_000_000 - 1000 - 500 + ); + assert_eq!(Assets::asset_balance(&b, &PCX, ReservedDexSpot), 1000); + + handicapMap = Spot::handicap_map(0).unwrap(); assert_eq!(handicapMap.buy, 100000); assert_eq!(handicapMap.sell, 200000); - let orderPairPriceOf=Spot::pair_price_of(0).unwrap(); + let orderPairPriceOf = Spot::pair_price_of(0).unwrap(); assert_eq!(orderPairPriceOf.0, 100000); assert_eq!(orderPairPriceOf.1, 100000); // a 取消第一笔买单 - assert_eq!(Spot::cancel_order(Some(a).into(),0,0),Ok(())); - - assert_eq!(Assets::asset_balance(&a, &BTC,Free), 1_000_000_000-(1000*100000)-(1000*50)+500*100000); - assert_eq!(Assets::asset_balance(&a, &BTC,ReservedDexSpot), 1000*100000+1000*50-500*100000-500*100000); - assert_eq!(Assets::asset_balance(&a,&PCX,Free), 1_000_000_000+500); - assert_eq!(Assets::asset_balance(&a, &PCX,ReservedDexSpot), 0); - - handicapMap=Spot::handicap_map(0).unwrap(); - - assert_eq!(handicapMap.buy, 100000-100000); + assert_eq!(Spot::cancel_order(Some(a).into(), 0, 0), Ok(())); + + assert_eq!( + Assets::asset_balance(&a, &BTC, Free), + 1_000_000_000 - (1000 * 100000) - (1000 * 50) + 500 * 100000 + ); + assert_eq!( + Assets::asset_balance(&a, &BTC, ReservedDexSpot), + 1000 * 100000 + 1000 * 50 - 500 * 100000 - 500 * 100000 + ); + assert_eq!(Assets::asset_balance(&a, &PCX, Free), 1_000_000_000 + 500); + assert_eq!(Assets::asset_balance(&a, &PCX, ReservedDexSpot), 0); + + handicapMap = Spot::handicap_map(0).unwrap(); + + assert_eq!(handicapMap.buy, 100000 - 100000); assert_eq!(handicapMap.sell, 200000); - //a 第三笔挂买单 - assert_eq!(Spot::put_order(Some(a).into(),0,OrderType::Limit,OrderDirection::Buy,1000,100),Ok(())); - assert_eq!(Assets::asset_balance(&a, &BTC,Free), 1_000_000_000-(1000*100000)-(1000*50)+500*100000-1000*100); - assert_eq!(Assets::asset_balance(&a, &BTC,ReservedDexSpot), 1000*100000+1000*50-500*100000-500*100000+1000*100); - assert_eq!(Assets::asset_balance(&a,&PCX,Free), 1_000_000_000+500); - assert_eq!(Assets::asset_balance(&a, &PCX,ReservedDexSpot), 0); - - assert_eq!(Spot::account_orders_len(&a).unwrap(),3); - - handicapMap=Spot::handicap_map(0).unwrap(); + //a 第三笔挂买单 + assert_eq!( + Spot::put_order( + Some(a).into(), + 0, + OrderType::Limit, + OrderDirection::Buy, + 1000, + 100 + ), + Ok(()) + ); + assert_eq!( + Assets::asset_balance(&a, &BTC, Free), + 1_000_000_000 - (1000 * 100000) - (1000 * 50) + 500 * 100000 - 1000 * 100 + ); + assert_eq!( + Assets::asset_balance(&a, &BTC, ReservedDexSpot), + 1000 * 100000 + 1000 * 50 - 500 * 100000 - 500 * 100000 + 1000 * 100 + ); + assert_eq!(Assets::asset_balance(&a, &PCX, Free), 1_000_000_000 + 500); + assert_eq!(Assets::asset_balance(&a, &PCX, ReservedDexSpot), 0); + + assert_eq!(Spot::account_orders_len(&a).unwrap(), 3); + + handicapMap = Spot::handicap_map(0).unwrap(); assert_eq!(handicapMap.buy, 100); assert_eq!(handicapMap.sell, 200000); - - - }) + }) } diff --git a/xrml/xmining/staking/src/lib.rs b/xrml/xmining/staking/src/lib.rs index 475aa425d9c3f..cb5aa40a37ed8 100644 --- a/xrml/xmining/staking/src/lib.rs +++ b/xrml/xmining/staking/src/lib.rs @@ -101,7 +101,7 @@ pub trait Trait: decl_module! { pub struct Module for enum Call where origin: T::Origin { - fn deposit_event() = default; + fn deposit_event() = default; /// Transactor could be an intention. fn nominate(