From 30f251ce6b395c4cece59189fd0afbaa552e6bf2 Mon Sep 17 00:00:00 2001 From: Benjamin Kolb Date: Thu, 7 Mar 2019 09:29:39 +0100 Subject: [PATCH 1/4] feat: add delegations --- Cargo.lock | 1 + runtime/Cargo.lock | 2170 ++++++++++++++++++++++++++++++++++++ runtime/Cargo.toml | 4 + runtime/src/attestation.rs | 77 +- runtime/src/ctype.rs | 2 +- runtime/src/delegation.rs | 96 ++ runtime/src/lib.rs | 8 +- runtime/wasm/Cargo.lock | 1 + src/main.rs | 2 - 9 files changed, 2318 insertions(+), 43 deletions(-) create mode 100644 runtime/Cargo.lock create mode 100644 runtime/src/delegation.rs diff --git a/Cargo.lock b/Cargo.lock index f07d3d7df..0550e2866 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1842,6 +1842,7 @@ dependencies = [ name = "node-template-runtime" version = "0.9.0" dependencies = [ + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/runtime/Cargo.lock b/runtime/Cargo.lock new file mode 100644 index 000000000..b2d6f7670 --- /dev/null +++ b/runtime/Cargo.lock @@ -0,0 +1,2170 @@ +[[package]] +name = "arrayref" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "arrayvec" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "autocfg" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "backtrace" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "backtrace-sys" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "base58" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "bitflags" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "blake2-rfc" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "block-buffer" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "byte-tools" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "byteorder" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "bytes" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "cc" +version = "1.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "cfg-if" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "chrono" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "cloudabi" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "constant_time_eq" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "crossbeam" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.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]] +name = "crossbeam-channel" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-deque" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-deque" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.7.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.7 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-queue" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-utils" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crunchy" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "crunchy" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "crypto-mac" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "digest" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "elastic-array" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "environmental" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "error-chain" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "backtrace 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fake-simd" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "fixed-hash" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "static_assertions 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fnv" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "fuchsia-cprng" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "futures" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "generic-array" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hash-db" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "hash256-std-hasher" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crunchy 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "heapsize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hex-literal" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "hex-literal-impl 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hex-literal-impl" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hmac" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crypto-mac 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hmac-drbg" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "digest 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", + "hmac 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "httparse" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "idna" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "impl-codec" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "parity-codec 3.1.0 (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.89 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "integer-sqrt" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "iovec" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "itoa" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "kvdb" +version = "0.1.0" +source = "git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d#b0317f649ab2c665b7987b8475878fc4d2e1f81d" +dependencies = [ + "elastic-array 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-bytes 0.1.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)", +] + +[[package]] +name = "lazy_static" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "lazycell" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "libc" +version = "0.2.50" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "libsecp256k1" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hmac-drbg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "lock_api" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "log" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "matches" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "memoffset" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "memory-db" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "hash-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "memory_units" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "mio" +version = "0.6.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "mio-extras" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "mio-uds" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "miow" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "net2" +version = "0.2.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "node-template-runtime" +version = "0.9.0" +dependencies = [ + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-version 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-aura 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-balances 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-consensus 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-executive 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-indices 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-sudo 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-support 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-system 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-timestamp 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-client 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-consensus-aura-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", +] + +[[package]] +name = "nodrop" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "num-integer" +version = "0.1.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "num-traits" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "num_cpus" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "once_cell" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "openssl" +version = "0.10.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.42 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "openssl-sys" +version = "0.9.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "owning_ref" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parity-bytes" +version = "0.1.0" +source = "git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d#b0317f649ab2c665b7987b8475878fc4d2e1f81d" + +[[package]] +name = "parity-codec" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parity-codec-derive" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-crate 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.27 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parity-wasm" +version = "0.31.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parking_lot" +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.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "paste" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "paste-impl 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "paste-impl" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-hack 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.27 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "percent-encoding" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "pkg-config" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "primitive-types" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fixed-hash 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "impl-codec 0.2.0 (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.6.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro-hack" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-hack-impl 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.27 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro-hack-impl" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "proc-macro2" +version = "0.4.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "quote" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_jitter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_chacha" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_core" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rand_hc" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_isaac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_jitter" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_os" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_pcg" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_xorshift" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rdrand" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "redox_syscall" +version = "0.1.51" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "ring" +version = "0.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "spin 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rustc-hex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ryu" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "safe-mix" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "scopeguard" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "serde" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "serde_derive" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.27 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_json" +version = "1.0.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sha1" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "sha2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "block-buffer 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "slab" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "slog" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "slog-async" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "slog-json" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "slog-scope" +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)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "smallvec" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "spin" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "sr-api-macros" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-crate 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.27 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sr-io" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "environmental 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libsecp256k1 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-state-machine 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-trie 0.4.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sr-primitives" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "integer-sqrt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", +] + +[[package]] +name = "sr-std" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sr-version" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "impl-serde 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", +] + +[[package]] +name = "srml-aura" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "hex-literal 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-staking 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-support 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-system 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-timestamp 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-inherents 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", +] + +[[package]] +name = "srml-balances" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "hex-literal 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-support 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-system 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-keyring 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", +] + +[[package]] +name = "srml-consensus" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "hex-literal 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-support 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-system 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-inherents 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", +] + +[[package]] +name = "srml-executive" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-support 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-system 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", +] + +[[package]] +name = "srml-indices" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "hex-literal 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-support 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-system 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-keyring 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", +] + +[[package]] +name = "srml-metadata" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", +] + +[[package]] +name = "srml-session" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "hex-literal 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-consensus 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-support 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-system 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-timestamp 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", +] + +[[package]] +name = "srml-staking" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "hex-literal 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-consensus 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-session 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-support 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-system 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-keyring 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", +] + +[[package]] +name = "srml-sudo" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "hex-literal 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-support 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-support-procedural 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-system 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", +] + +[[package]] +name = "srml-support" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "hex-literal 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "once_cell 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "paste 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-metadata 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-support-procedural 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-inherents 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", +] + +[[package]] +name = "srml-support-procedural" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-api-macros 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-support-procedural-tools 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "syn 0.15.27 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "srml-support-procedural-tools" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "proc-macro-crate 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "srml-support-procedural-tools-derive 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "syn 0.15.27 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "srml-support-procedural-tools-derive" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.27 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "srml-system" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "hex-literal 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-support 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", +] + +[[package]] +name = "srml-timestamp" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "hex-literal 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-consensus 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-support 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "srml-system 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-inherents 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", +] + +[[package]] +name = "stable_deref_trait" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "static_assertions" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "substrate-client" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "kvdb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.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-api-macros 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-version 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-consensus-common 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-executor 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-inherents 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-keyring 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-state-machine 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-telemetry 0.3.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-trie 0.4.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", +] + +[[package]] +name = "substrate-consensus-aura-primitives" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "substrate-client 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", +] + +[[package]] +name = "substrate-consensus-common" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +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 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.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/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-version 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-inherents 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-executor" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libsecp256k1 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 3.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)", + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-version 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-panic-handler 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-serializer 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-state-machine 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-trie 0.4.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-inherents" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.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/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", +] + +[[package]] +name = "substrate-keyring" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "hex-literal 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", +] + +[[package]] +name = "substrate-panic-handler" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "backtrace 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-primitives" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hash256-std-hasher 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.1.3 (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 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "primitive-types 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.14.6 (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.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "twox-hash 1.1.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]] +name = "substrate-serializer" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-state-machine" +version = "0.1.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "hash-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 3.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)", + "substrate-panic-handler 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "substrate-trie 0.4.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)", + "trie-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "trie-root 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-telemetry" +version = "0.3.0" +source = "git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "lazy_static 1.3.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.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.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/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c#6288a4774a5ca57832896f6c501ba04aa6ef398c" +dependencies = [ + "hash-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "memory-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "trie-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "trie-root 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "syn" +version = "0.15.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "take_mut" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "thread_local" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "time" +version = "0.1.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tiny-keccak" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-current-thread 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-codec" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-current-thread" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-executor" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-fs" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-io" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-reactor" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (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.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-sync" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "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)", +] + +[[package]] +name = "tokio-tcp" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-threadpool" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-timer" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-udp" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-uds" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", + "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "toml" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "trie-db" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "elastic-array 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hash-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "trie-root" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "hash-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "twox-hash" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "typenum" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "uint" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.1 (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)", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "unicode-normalization" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "unicode-xid" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "untrusted" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "url" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "vcpkg" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "wasmi" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "ws" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl 0.10.19 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[metadata] +"checksum arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee" +"checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71" +"checksum autocfg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a6d640bee2da49f60a4068a7fae53acde8982514ab7bae8b8cea9e88cbcfd799" +"checksum backtrace 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "cd5a90e2b463010cd0e0ce9a11d4a9d5d58d9f41d4a6ba3dcaf9e68b466e88b4" +"checksum backtrace-sys 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)" = "797c830ac25ccc92a7f8a7b9862bde440715531514594a6154e3d4a54dd769b6" +"checksum base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" +"checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" +"checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" +"checksum block-buffer 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1339a1042f5d9f295737ad4d9a6ab6bf81c84a933dba110b9200cd6d1448b814" +"checksum byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40" +"checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb" +"checksum bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "40ade3d27603c2cb345eb0912aec461a6dec7e06a4ae48589904e808335c7afa" +"checksum cc 1.0.30 (registry+https://github.com/rust-lang/crates.io-index)" = "d01c69d08ff207f231f07196e30f84c70f1c815b04f980f8b7b01ff01f05eb92" +"checksum cfg-if 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "11d43355396e872eefb45ce6342e4374ed7bc2b3a502d1b28e36d6e23c05d1f4" +"checksum chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "45912881121cb26fad7c38c17ba7daa18764771836b34fab7d3fbd93ed633878" +"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" +"checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e" +"checksum crossbeam 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad4c7ea749d9fb09e23c5cb17e3b70650860553a0e2744e38446b1803bf7db94" +"checksum crossbeam-channel 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f0ed1a4de2235cabda8558ff5840bffb97fcb64c97827f354a451307df5f72b" +"checksum crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "05e44b8cf3e1a625844d1750e1f7820da46044ff6d28f4d43e455ba3e5bb2c13" +"checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71" +"checksum crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04c9e3102cc2d69cd681412141b390abd55a362afc1540965dad0ad4d34280b4" +"checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" +"checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c" +"checksum crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a2f4a431c5c9f662e1200b7c7f02c34e91361150e382089a8f2dec3ba680cbda" +"checksum crunchy 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c240f247c278fa08a6d4820a6a222bfc6e0d999e51ba67be94f44c905b2161f2" +"checksum crypto-mac 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "779015233ac67d65098614aec748ac1c756ab6677fa2e14cf8b37c08dfed1198" +"checksum digest 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e5b29bf156f3f4b3c4f610a25ff69370616ae6e0657d416de22645483e72af0a" +"checksum elastic-array 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "073be79b6538296faf81c631872676600616073817dd9a440c477ad09b408983" +"checksum environmental 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "db746025e3ea695bfa0ae744dbacd5fcfc8db51b9760cf8bd0ab69708bb93c49" +"checksum error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "07e791d3be96241c77c43846b665ef1384606da2cd2a48730abe606a12906e02" +"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" +"checksum fixed-hash 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a557e80084b05c32b455963ff565a9de6f2866da023d6671705c6aff6f65e01c" +"checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" +"checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +"checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" +"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 generic-array 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fceb69994e330afed50c93524be68c42fa898c2d9fd4ee8da03bd7363acd26f2" +"checksum hash-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1b03501f6e1a2a97f1618879aba3156f14ca2847faa530c4e28859638bd11483" +"checksum hash256-std-hasher 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f5c13dbac3cc50684760f54af18545c9e80fb75e93a3e586d71ebdc13138f6a4" +"checksum heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1679e6ea370dee694f91f1dc469bf94cf8f52051d147aec3e1f9497c6fc22461" +"checksum hex-literal 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "27455ce8b4a6666c87220e4b59c9a83995476bdadc10197905e61dbe906e36fa" +"checksum hex-literal-impl 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1d340b6514f232f6db1bd16db65302a5278a04fef9ce867cb932e7e5fa21130a" +"checksum hmac 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7a13f4163aa0c5ca1be584aace0e2212b2e41be5478218d4f657f5f778b2ae2a" +"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.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d2050d823639fbeae26b2b5ba09aca8907793117324858070ade0673c49f793b" +"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 kvdb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)" = "" +"checksum lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bc5729f27f159ddd61f4df6228e827e86643d4d3e7c32183cb30a1c08f604a14" +"checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" +"checksum libc 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)" = "aab692d7759f5cd8c859e169db98ae5b52c924add2af5fbbca11d12fefb567c1" +"checksum libsecp256k1 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "688e8d65e495567c2c35ea0001b26b9debf0b4ea11f8cccc954233b75fc3428a" +"checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" +"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" +"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" +"checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" +"checksum memory-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94da53143d45f6bad3753f532e56ad57a6a26c0ca6881794583310c7cb4c885f" +"checksum memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882" +"checksum mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)" = "71646331f2619b1026cc302f87a2b8b648d5c6dd6937846a16cc8ce0f347f432" +"checksum mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "46e73a04c2fa6250b8d802134d56d554a9ec2922bf977777c805ea5def61ce40" +"checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" +"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" +"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" +"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" +"checksum num-integer 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "e83d528d2677f0518c570baf2b7abdcf0cd2d248860b68507bdcb3e91d4c0cea" +"checksum num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0b3a5d7cc97d6d30d8b9bc8fa19bf45349ffe46241e8816f50f62f6d6aaabee1" +"checksum num_cpus 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a23f0ed30a54abaa0c7e83b1d2d87ada7c3c23078d1d87815af3e3b6385fbba" +"checksum once_cell 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "532c29a261168a45ce28948f9537ddd7a5dd272cc513b3017b1e82a88f962c37" +"checksum openssl 0.10.19 (registry+https://github.com/rust-lang/crates.io-index)" = "84321fb9004c3bce5611188a644d6171f895fa2889d155927d528782edb21c5d" +"checksum openssl-sys 0.9.42 (registry+https://github.com/rust-lang/crates.io-index)" = "cb534d752bf98cf363b473950659ac2546517f9c6be9723771614ab3f03bbc9e" +"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=b0317f649ab2c665b7987b8475878fc4d2e1f81d)" = "" +"checksum parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67a4d27831e31e27f1454d6e3d3bb34bcac6bf7ad7032eed0ad0070dc8cf55c1" +"checksum parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "864e9f66b58c0b38f0d6b511b6576afa2b678ae801b64220553bced57ac12df9" +"checksum parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)" = "511379a8194230c2395d2f5fa627a5a7e108a9f976656ce723ae68fca4097bfc" +"checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" +"checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" +"checksum paste 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f50392d1265092fbee9273414cc40eb6d47d307bd66222c477bb8450c8504f9d" +"checksum paste-impl 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a3cd512fe3a55e8933b2dcad913e365639db86d512e4004c3084b86864d9467a" +"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.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "edb92f1ebfc177432c03287b15d48c202e6e2c95993a7af3ba039abb43b1492e" +"checksum proc-macro-crate 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4c6cf4e5b00300d151dfffae39f529dfa5188f42eeb14201229aa420d6aad10c" +"checksum proc-macro-hack 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2c725b36c99df7af7bf9324e9c999b9e37d92c8f8caf106d82e1d7953218d2d8" +"checksum proc-macro-hack 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3e90aa19cd73dedc2d0e1e8407473f073d735fef0ab521438de6da8ee449ab66" +"checksum proc-macro-hack-impl 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2b753ad9ed99dd8efeaa7d2fb8453c8f6bc3e54b97966d35f1bc77ca6865254a" +"checksum proc-macro2 0.4.27 (registry+https://github.com/rust-lang/crates.io-index)" = "4d317f9caece796be1980837fd5cb3dfec5613ebdb04ad0956deea83ce168915" +"checksum quote 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cdd8e04bd9c52e0342b406469d494fcb033be4bdbe5c606016defbb1681411e1" +"checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" +"checksum rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9" +"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" +"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" +"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +"checksum rand_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0e7a549d590831370895ab7ba4ea0c1b6b011d106b5ff2da6eee112615e6dc0" +"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" +"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" +"checksum rand_jitter 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b9ea758282efe12823e0d952ddb269d2e1897227e464919a554f2a03ef1b832" +"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" +"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" +"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" +"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" +"checksum redox_syscall 0.1.51 (registry+https://github.com/rust-lang/crates.io-index)" = "423e376fffca3dfa06c9e9790a9ccd282fafb3cc6e6397d01dbf64f9bacc6b85" +"checksum ring 0.14.6 (registry+https://github.com/rust-lang/crates.io-index)" = "426bc186e3e95cac1e4a4be125a4aca7e84c2d616ffc02244eef36e2a60a093c" +"checksum rustc-demangle 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "adacaae16d02b6ec37fdc7acfcddf365978de76d1983d3ee22afc260e1ca9619" +"checksum rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "403bb3a286107a04825a5f82e1270acc1e14028d3d554d7a1e08914549575ab8" +"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +"checksum 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 scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" +"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +"checksum serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)" = "92514fb95f900c9b5126e32d020f5c6d40564c27a5ea6d1d7d9f157a96623560" +"checksum serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)" = "bb6eabf4b5914e88e24eea240bb7c9f9a2cbc1bbbe8d961d381975ec3c6b806c" +"checksum serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)" = "5a23aa71d4a4d43fdbfaac00eff68ba8a06a51759a89ac3304323e800c4dd40d" +"checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" +"checksum sha2 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7d963c78ce367df26d7ea8b8cc655c651b42e8a1e584e869c1e17dae3ccb116a" +"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" +"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.1 (registry+https://github.com/rust-lang/crates.io-index)" = "60c04b4726fa04595ccf2c2dad7bcd15474242c4c5e109a8a376e8a2c9b1539a" +"checksum smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c4488ae950c49d403731982257768f48fada354a5203fe81f9bb6f43ca9002be" +"checksum spin 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44363f6f51401c34e7be73db0db371c04705d35efbe9f7d6082e03a921a32c55" +"checksum sr-api-macros 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum sr-io 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum sr-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum sr-std 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum sr-version 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum srml-aura 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum srml-balances 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum srml-consensus 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum srml-executive 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum srml-indices 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum srml-metadata 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum srml-session 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum srml-staking 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum srml-sudo 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum srml-support 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum srml-support-procedural 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum srml-support-procedural-tools 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum srml-support-procedural-tools-derive 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum srml-system 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum srml-timestamp 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" +"checksum static_assertions 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c19be23126415861cb3a23e501d34a708f7f9b2183c5252d690941c2e69199d5" +"checksum substrate-client 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum substrate-consensus-aura-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum substrate-consensus-common 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum substrate-executor 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum substrate-inherents 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum substrate-keyring 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum substrate-panic-handler 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum substrate-primitives 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum substrate-serializer 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum substrate-state-machine 0.1.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum substrate-telemetry 0.3.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum substrate-trie 0.4.0 (git+https://github.com/paritytech/substrate.git?rev=6288a4774a5ca57832896f6c501ba04aa6ef398c)" = "" +"checksum syn 0.15.27 (registry+https://github.com/rust-lang/crates.io-index)" = "525bd55255f03c816e5d7f615587bd13030c7103354fadb104993dcee6a788ec" +"checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" +"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" +"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" +"checksum tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e9175261fbdb60781fcd388a4d6cc7e14764a2b629a7ad94abb439aed223a44f" +"checksum tokio 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "fcaabb3cec70485d0df6e9454fe514393ad1c4070dee8915f11041e95630b230" +"checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" +"checksum tokio-current-thread 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c756b04680eea21902a46fca4e9f410a2332c04995af590e07ff262e2193a9a3" +"checksum tokio-executor 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "30c6dbf2d1ad1de300b393910e8a3aa272b724a400b6531da03eed99e329fbf0" +"checksum tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe6dc22b08d6993916647d108a1a7d15b9cd29c4f4496c62b92c45b5041b7af" +"checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" +"checksum tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6af16bfac7e112bea8b0442542161bfc41cbfa4466b580bdda7d18cb88b911ce" +"checksum tokio-sync 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1bf2b9dac2a0509b5cfd1df5aa25eafacb616a42a491a13604d6bbeab4486363" +"checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" +"checksum tokio-threadpool 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "742e511f6ce2298aeb86fc9ea0d8df81c2388c6ebae3dc8a7316e8c9df0df801" +"checksum tokio-timer 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "2910970404ba6fa78c5539126a9ae2045d62e3713041e447f695f41405a120c6" +"checksum tokio-udp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "66268575b80f4a4a710ef83d087fdfeeabdce9b74c797535fbac18a2cb906e92" +"checksum tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445" +"checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f" +"checksum trie-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c7319e28ca295f27359d944a682f7f65b419158bf1590c92cadc0000258d788" +"checksum trie-root 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e3c6fef2705af3258ec46a7e22286090394a44216201a1cf7d04b78db825e543" +"checksum twox-hash 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "555cd4909480122bbbf21e34faac4cb08a171f324775670447ed116726c474af" +"checksum typenum 1.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "612d636f949607bdf9b123b4a6f6d966dedf3ff669f7f045890d3a4a73948169" +"checksum uint 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e7780bb27fd8a22295e0d9d53ae3be253f715a0dccb1808527f478f1c2603708" +"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" +"checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426" +"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" +"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 wasmi 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "21ef487a11df1ed468cf613c78798c26282da5c30e9d49f824872d4c77b47d1d" +"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" +"checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" +"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" +"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +"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" diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 5d56ff397..e8378fb8f 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -84,6 +84,10 @@ version = '1.0' optional = true version = '1.0' +[dependencies.bitflags] +default-features = false +version = '1.0.4' + [dependencies.sudo] default_features = false git = 'https://github.com/paritytech/substrate.git' diff --git a/runtime/src/attestation.rs b/runtime/src/attestation.rs index 3e67b2a60..afe149a52 100644 --- a/runtime/src/attestation.rs +++ b/runtime/src/attestation.rs @@ -1,27 +1,42 @@ use rstd::prelude::*; -use runtime_primitives::codec::Codec; -use runtime_primitives::verify_encoded_lazy; -use runtime_primitives::traits::{Member, Verify}; use support::{dispatch::Result, StorageMap, decl_module, decl_storage}; -use {balances, system::ensure_signed}; +use {balances, super::delegation, super::ctype, system::ensure_signed}; -pub trait Trait: balances::Trait { - type Signature: Verify + Member + Codec + Default; +pub trait Trait: balances::Trait + delegation::Trait { } decl_module! { pub struct Module for enum Call where origin: T::Origin { - fn add(origin, claim_hash: T::Hash, signature: T::Signature) -> Result { + fn add(origin, claim_hash: T::Hash, ctype_hash: T::Hash, delegation_id: Option) -> Result { let sender = ensure_signed(origin)?; - if !verify_encoded_lazy(&signature, &claim_hash, &sender) { - return Err("bad signature") + if !>::exists(ctype_hash) { + return Err("CTYPE not found") + } + + match delegation_id { + Some(d) => { + let delegation = >::get(d.clone()); + if delegation.4 { + return Err("delgation revoked") + } else if delegation.2 != sender { + return Err("not delegated to attester") + } else if delegation.3 & delegation::Permissions::ATTEST != delegation::Permissions::ATTEST { + return Err("delegation not authorized to attest") + } else { + let root = >::get(delegation.0.clone()); + if root.0 == ctype_hash { + return Err("CTYPE of delegation does not match") + } + } + }, + None => {} } let mut existing_attestations_for_claim = >::get(claim_hash.clone()); - let mut last_attested : Option<(T::Hash,T::AccountId,T::Signature,bool)> = None; + let mut last_attested : Option<(T::Hash,T::AccountId,Option,bool)> = None; for v in existing_attestations_for_claim.clone() { - if v.1.eq(&sender) { + if v.1.eq(&sender) && v.2.eq(&delegation_id) { last_attested = Some(v); break; } @@ -29,18 +44,15 @@ decl_module! { match last_attested { Some(_v) => return Err("already attested"), None => { - existing_attestations_for_claim.push((claim_hash.clone(), sender.clone(), signature.clone(), false)); + existing_attestations_for_claim.push((ctype_hash.clone(), sender.clone(), delegation_id.clone(), false)); >::insert(claim_hash.clone(), existing_attestations_for_claim); Ok(()) }, } } - fn revoke(origin, claim_hash: T::Hash, signature: T::Signature) -> Result { + fn revoke(origin, claim_hash: T::Hash) -> Result { let sender = ensure_signed(origin)?; - if !verify_encoded_lazy(&signature, &claim_hash, &sender) { - return Err("bad signature") - } let mut last_attested : bool = false; let mut existing_attestations_for_claim = >::get(claim_hash.clone()); @@ -62,7 +74,8 @@ decl_module! { decl_storage! { trait Store for Module as Attestation { - Attestations get(attestations): map T::Hash => Vec<(T::Hash,T::AccountId,T::Signature,bool)>; + // Attestations: claim-hash -> [(ctype-hash, account, delegation-id?, revoked)] + Attestations get(attestations): map T::Hash => Vec<(T::Hash,T::AccountId,Option,bool)>; } } @@ -126,28 +139,18 @@ mod tests { return hash.encode(); } - #[test] - fn check_bad_signature() { - with_externalities(&mut new_test_ext(), || { - assert_err!(Attestation::add(Origin::signed(H256::from(1)), H256::from(2), Ed25519Signature::from(H512::from(3))), "bad signature"); - assert_err!(Attestation::revoke(Origin::signed(H256::from(1)), H256::from(2), Ed25519Signature::from(H512::from(3))), "bad signature"); - }); - } - #[test] fn check_add_attestation() { with_externalities(&mut new_test_ext(), || { let pair = ed25519::Pair::from_seed(b"Alice "); let hash = H256::from(1); let bytes = hash_to_u8(hash); - let signed = Ed25519Signature::from(pair.sign(&bytes)); let account_hash = H256::from(pair.public().0); - assert_ok!(Attestation::add(Origin::signed(account_hash.clone()), hash.clone(), signed.clone())); + assert_ok!(Attestation::add(Origin::signed(account_hash.clone()), hash.clone(), None)); let existing_attestations_for_claim = Attestation::attestations(hash.clone()); assert_eq!(existing_attestations_for_claim.len(), 1); assert_eq!(existing_attestations_for_claim[0].0, hash.clone()); assert_eq!(existing_attestations_for_claim[0].1, account_hash.clone()); - assert_eq!(existing_attestations_for_claim[0].2, signed.clone()); assert_eq!(existing_attestations_for_claim[0].3, false); }); } @@ -158,15 +161,13 @@ mod tests { let pair = ed25519::Pair::from_seed(b"Alice "); let hash = H256::from(1); let bytes = hash_to_u8(hash); - let signed = Ed25519Signature::from(pair.sign(&bytes)); let account_hash = H256::from(pair.public().0); - assert_ok!(Attestation::add(Origin::signed(account_hash.clone()), hash.clone(), signed.clone())); - assert_ok!(Attestation::revoke(Origin::signed(account_hash.clone()), hash.clone(), signed.clone())); + assert_ok!(Attestation::add(Origin::signed(account_hash.clone()), hash.clone(), None)); + assert_ok!(Attestation::revoke(Origin::signed(account_hash.clone()), hash.clone())); let existing_attestations_for_claim = Attestation::attestations(hash.clone()); assert_eq!(existing_attestations_for_claim.len(), 1); assert_eq!(existing_attestations_for_claim[0].0, hash.clone()); assert_eq!(existing_attestations_for_claim[0].1, account_hash.clone()); - assert_eq!(existing_attestations_for_claim[0].2, signed.clone()); assert_eq!(existing_attestations_for_claim[0].3, true); }); } @@ -177,10 +178,9 @@ mod tests { let pair = ed25519::Pair::from_seed(b"Alice "); let hash = H256::from(1); let bytes = hash_to_u8(hash); - let signed = Ed25519Signature::from(pair.sign(&bytes)); let account_hash = H256::from(pair.public().0); - assert_ok!(Attestation::add(Origin::signed(account_hash.clone()), hash.clone(), signed.clone())); - assert_err!(Attestation::add(Origin::signed(account_hash.clone()), hash.clone(), signed.clone()), "already attested"); + assert_ok!(Attestation::add(Origin::signed(account_hash.clone()), hash.clone(), None)); + assert_err!(Attestation::add(Origin::signed(account_hash.clone()), hash.clone(), None), "already attested"); }); } @@ -190,11 +190,10 @@ mod tests { let pair = ed25519::Pair::from_seed(b"Alice "); let hash = H256::from(1); let bytes = hash_to_u8(hash); - let signed = Ed25519Signature::from(pair.sign(&bytes)); let account_hash = H256::from(pair.public().0); - assert_ok!(Attestation::add(Origin::signed(account_hash.clone()), hash.clone(), signed.clone())); - assert_ok!(Attestation::revoke(Origin::signed(account_hash.clone()), hash.clone(), signed.clone())); - assert_err!(Attestation::revoke(Origin::signed(account_hash.clone()), hash.clone(), signed.clone()), "no valid attestation found"); + assert_ok!(Attestation::add(Origin::signed(account_hash.clone()), hash.clone(), None)); + assert_ok!(Attestation::revoke(Origin::signed(account_hash.clone()), hash.clone())); + assert_err!(Attestation::revoke(Origin::signed(account_hash.clone()), hash.clone()), "no valid attestation found"); }); } } diff --git a/runtime/src/ctype.rs b/runtime/src/ctype.rs index 0746e3ec8..02eb67b43 100644 --- a/runtime/src/ctype.rs +++ b/runtime/src/ctype.rs @@ -51,7 +51,7 @@ decl_module! { decl_storage! { trait Store for Module as Ctype { - CTYPEs get(ctypes): map T::Hash => (T::Hash,T::Signature,T::AccountId); + pub CTYPEs get(ctypes): map T::Hash => (T::Hash,T::Signature,T::AccountId); } } diff --git a/runtime/src/delegation.rs b/runtime/src/delegation.rs new file mode 100644 index 000000000..99e30f841 --- /dev/null +++ b/runtime/src/delegation.rs @@ -0,0 +1,96 @@ + +use rstd::prelude::*; +use runtime_primitives::traits::{CheckEqual, SimpleBitOps, Member, MaybeDisplay}; +use support::{dispatch::Result, StorageMap, Parameter, decl_module, decl_storage}; +use parity_codec_derive::{Encode, Decode}; +use core::default::Default; + +use runtime_primitives::codec::Codec; +use {balances, system::{self, ensure_signed}, super::ctype}; + + +bitflags! { + #[derive(Encode, Decode)] + pub struct Permissions: u32 { + const ATTEST = 0b00000001; + const DELEGATE = 0b00000010; + } +} + +impl Default for Permissions { + fn default() -> Self { + + return Permissions::ATTEST; + } +} + +pub trait Trait: ctype::Trait + balances::Trait { + type DelegationNodeId: Parameter + Member + Codec + MaybeDisplay + SimpleBitOps + + Default + Copy + CheckEqual + rstd::hash::Hash + AsRef<[u8]> + AsMut<[u8]>; +} + +decl_module! { + pub struct Module for enum Call where origin: T::Origin { + fn create_root(origin, root_id: T::DelegationNodeId, ctype_hash: T::Hash) -> Result { + let sender = ensure_signed(origin)?; + if >::exists(root_id) { + return Err("root already exist") + } + if !>::exists(ctype_hash) { + return Err("CTYPE does not exist") + } + + >::insert(root_id.clone(), (ctype_hash.clone(), sender.clone(), false)); + + return Ok(()); + } + + fn add_delegation(origin, delegation_id: T::DelegationNodeId, + root_id: T::DelegationNodeId, parent_id: Option, + permissions: Permissions) -> Result { + let sender = ensure_signed(origin)?; + if >::exists(delegation_id) { + return Err("delegation already exist") + } + if >::exists(root_id) { + let root = >::get(root_id.clone()); + match parent_id { + Some(p) => { + if >::exists(p) { + let parent = >::get(p.clone()); + if parent.2 != sender { + return Err("not owner of parent") + } else if parent.3 & Permissions::DELEGATE != Permissions::DELEGATE { + return Err("not authorized to delegate") + } else { + >::insert(delegation_id.clone(), (root_id.clone(), Some(p.clone()), sender, permissions, false)); + } + } else { + return Err("parent not found") + } + }, + None => { + if root.1 != sender { + return Err("not owner of root") + } + >::insert(delegation_id.clone(), (root_id.clone(), None, sender, permissions, false)); + } + } + } else { + return Err("root not found") + } + return Ok(()); + } + } +} + +decl_storage! { + trait Store for Module as Delegation { + // Root: root-id => (ctype-hash, account, revoked) + pub Root get(root): map T::DelegationNodeId => (T::Hash,T::AccountId,bool); + // Delegations: delegation-id => (root-id, parent-id?, account, permissions, revoked) + pub Delegations get(delegation): map T::DelegationNodeId => (T::DelegationNodeId,Option,T::AccountId,Permissions,bool); + // Children: root-or-delegation-id => [delegation-id] + pub Children get(children): map T::DelegationNodeId => Vec; + } +} diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index d60bbe492..e38c4e40a 100644 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -14,6 +14,8 @@ extern crate parity_codec_derive; extern crate runtime_io; +#[macro_use] +extern crate bitflags; use rstd::prelude::*; #[cfg(feature = "std")] @@ -43,6 +45,7 @@ pub use support::{StorageValue, construct_runtime}; mod ctype; mod attestation; +mod delegation; /// Alias to Ed25519 pubkey that identifies an account on the chain. @@ -179,7 +182,6 @@ impl sudo::Trait for Runtime { } impl attestation::Trait for Runtime { - type Signature = Ed25519Signature; } impl ctype::Trait for Runtime { @@ -193,6 +195,9 @@ impl ctype::Trait for Runtime { } } +impl delegation::Trait for Runtime { + type DelegationNodeId = Hash; +} construct_runtime!( pub enum Runtime with Log(InternalLog: DigestItem) where @@ -209,6 +214,7 @@ construct_runtime!( Sudo: sudo, Ctype: ctype::{Module, Call, Storage}, Attestation: attestation::{Module, Call, Storage}, + Delegation: delegation::{Module, Call, Storage}, } ); diff --git a/runtime/wasm/Cargo.lock b/runtime/wasm/Cargo.lock index ec46b0e74..54b9011bf 100644 --- a/runtime/wasm/Cargo.lock +++ b/runtime/wasm/Cargo.lock @@ -548,6 +548,7 @@ dependencies = [ name = "node-template-runtime" version = "0.9.0" dependencies = [ + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/src/main.rs b/src/main.rs index 464b66421..469ca0e05 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,8 +6,6 @@ #[macro_use] extern crate error_chain; #[macro_use] -extern crate log; -#[macro_use] extern crate substrate_network as network; #[macro_use] extern crate substrate_executor; From 183b95b20eb665ba1da31cf680dcc660796a6a2d Mon Sep 17 00:00:00 2001 From: Benjamin Kolb Date: Mon, 11 Mar 2019 08:23:36 +0100 Subject: [PATCH 2/4] fix attestation and type, improve delegation and introduce did --- runtime/src/attestation.rs | 72 ++++++++++++++---------------- runtime/src/ctype.rs | 89 ++++++++++---------------------------- runtime/src/delegation.rs | 54 ++++++++++++++++++----- runtime/src/did.rs | 87 +++++++++++++++++++++++++++++++++++++ runtime/src/lib.rs | 17 ++++---- 5 files changed, 195 insertions(+), 124 deletions(-) create mode 100644 runtime/src/did.rs diff --git a/runtime/src/attestation.rs b/runtime/src/attestation.rs index afe149a52..a51678283 100644 --- a/runtime/src/attestation.rs +++ b/runtime/src/attestation.rs @@ -1,14 +1,14 @@ use rstd::prelude::*; use support::{dispatch::Result, StorageMap, decl_module, decl_storage}; -use {balances, super::delegation, super::ctype, system::ensure_signed}; +use {system, super::delegation, super::ctype, system::ensure_signed}; -pub trait Trait: balances::Trait + delegation::Trait { +pub trait Trait: system::Trait + delegation::Trait { } decl_module! { pub struct Module for enum Call where origin: T::Origin { - fn add(origin, claim_hash: T::Hash, ctype_hash: T::Hash, delegation_id: Option) -> Result { + pub fn add(origin, claim_hash: T::Hash, ctype_hash: T::Hash, delegation_id: Option) -> Result { let sender = ensure_signed(origin)?; if !>::exists(ctype_hash) { return Err("CTYPE not found") @@ -44,6 +44,7 @@ decl_module! { match last_attested { Some(_v) => return Err("already attested"), None => { + ::runtime_io::print("insert Attestation"); existing_attestations_for_claim.push((ctype_hash.clone(), sender.clone(), delegation_id.clone(), false)); >::insert(claim_hash.clone(), existing_attestations_for_claim); Ok(()) @@ -51,7 +52,7 @@ decl_module! { } } - fn revoke(origin, claim_hash: T::Hash) -> Result { + pub fn revoke(origin, claim_hash: T::Hash) -> Result { let sender = ensure_signed(origin)?; let mut last_attested : bool = false; @@ -83,16 +84,15 @@ decl_storage! { #[cfg(test)] mod tests { use super::*; - use parity_codec::alloc::vec::Vec; use system; use runtime_io::with_externalities; - use primitives::{H256, H512, Blake2Hasher}; + use primitives::{H256, Blake2Hasher}; use runtime_primitives::Ed25519Signature; use primitives::*; - use parity_codec::Encode; + use support::{impl_outer_origin, assert_ok, assert_err}; - use sr_primitives::{ - BuildStorage, traits::{BlakeTwo256}, testing::{Digest, DigestItem, Header} + use runtime_primitives::{ + BuildStorage, traits::{BlakeTwo256, IdentityLookup}, testing::{Digest, DigestItem, Header} }; impl_outer_origin! { @@ -112,41 +112,35 @@ mod tests { type Header = Header; type Event = (); type Log = DigestItem; + type Lookup = IdentityLookup; } - impl balances::Trait for Test { - type Balance = u64; - type AccountIndex = u64; - type OnFreeBalanceZero = (); - type EnsureAccountLiquid = (); - type Event = (); + + impl ctype::Trait for Test { } - impl Trait for Test { + impl delegation::Trait for Test { type Signature = Ed25519Signature; + type DelegationNodeId = H256; } - type Attestation = Module; - // This function basically just builds a genesis storage key/value store according to - // our desired mockup. - fn new_test_ext() -> sr_io::TestExternalities { - let mut t = system::GenesisConfig::::default().build_storage().unwrap().0; - // We use default for brevity, but you can configure as desired if needed. - t.extend(balances::GenesisConfig::::default().build_storage().unwrap().0); - t.into() + impl Trait for Test { } - fn hash_to_u8 (hash : T) -> Vec{ - return hash.encode(); + type Attestation = Module; + type Ctype = ctype::Module; + + fn new_test_ext() -> runtime_io::TestExternalities { + system::GenesisConfig::::default().build_storage().unwrap().0.into() } #[test] fn check_add_attestation() { with_externalities(&mut new_test_ext(), || { let pair = ed25519::Pair::from_seed(b"Alice "); - let hash = H256::from(1); - let bytes = hash_to_u8(hash); + let hash = H256::from_low_u64_be(1); let account_hash = H256::from(pair.public().0); - assert_ok!(Attestation::add(Origin::signed(account_hash.clone()), hash.clone(), None)); + assert_ok!(Ctype::add(Origin::signed(account_hash.clone()), hash.clone())); + assert_ok!(Attestation::add(Origin::signed(account_hash.clone()), hash.clone(), hash.clone(), None)); let existing_attestations_for_claim = Attestation::attestations(hash.clone()); assert_eq!(existing_attestations_for_claim.len(), 1); assert_eq!(existing_attestations_for_claim[0].0, hash.clone()); @@ -159,10 +153,10 @@ mod tests { fn check_revoke_attestation() { with_externalities(&mut new_test_ext(), || { let pair = ed25519::Pair::from_seed(b"Alice "); - let hash = H256::from(1); - let bytes = hash_to_u8(hash); + let hash = H256::from_low_u64_be(1); let account_hash = H256::from(pair.public().0); - assert_ok!(Attestation::add(Origin::signed(account_hash.clone()), hash.clone(), None)); + assert_ok!(Ctype::add(Origin::signed(account_hash.clone()), hash.clone())); + assert_ok!(Attestation::add(Origin::signed(account_hash.clone()), hash.clone(), hash.clone(), None)); assert_ok!(Attestation::revoke(Origin::signed(account_hash.clone()), hash.clone())); let existing_attestations_for_claim = Attestation::attestations(hash.clone()); assert_eq!(existing_attestations_for_claim.len(), 1); @@ -176,11 +170,11 @@ mod tests { fn check_double_attestation() { with_externalities(&mut new_test_ext(), || { let pair = ed25519::Pair::from_seed(b"Alice "); - let hash = H256::from(1); - let bytes = hash_to_u8(hash); + let hash = H256::from_low_u64_be(1); let account_hash = H256::from(pair.public().0); - assert_ok!(Attestation::add(Origin::signed(account_hash.clone()), hash.clone(), None)); - assert_err!(Attestation::add(Origin::signed(account_hash.clone()), hash.clone(), None), "already attested"); + assert_ok!(Ctype::add(Origin::signed(account_hash.clone()), hash.clone())); + assert_ok!(Attestation::add(Origin::signed(account_hash.clone()), hash.clone(), hash.clone(), None)); + assert_err!(Attestation::add(Origin::signed(account_hash.clone()), hash.clone(), hash.clone(), None), "already attested"); }); } @@ -188,10 +182,10 @@ mod tests { fn check_double_revoke_attestation() { with_externalities(&mut new_test_ext(), || { let pair = ed25519::Pair::from_seed(b"Alice "); - let hash = H256::from(1); - let bytes = hash_to_u8(hash); + let hash = H256::from_low_u64_be(1); let account_hash = H256::from(pair.public().0); - assert_ok!(Attestation::add(Origin::signed(account_hash.clone()), hash.clone(), None)); + assert_ok!(Ctype::add(Origin::signed(account_hash.clone()), hash.clone())); + assert_ok!(Attestation::add(Origin::signed(account_hash.clone()), hash.clone(), hash.clone(), None)); assert_ok!(Attestation::revoke(Origin::signed(account_hash.clone()), hash.clone())); assert_err!(Attestation::revoke(Origin::signed(account_hash.clone()), hash.clone()), "no valid attestation found"); }); diff --git a/runtime/src/ctype.rs b/runtime/src/ctype.rs index 02eb67b43..6d98b9bfa 100644 --- a/runtime/src/ctype.rs +++ b/runtime/src/ctype.rs @@ -1,48 +1,23 @@ // initialise with: // post({sender: runtime.balances.ss58Decode('F7Gh'), call: calls.demo.setPayment(1000)}).tie(console.log) - - -use runtime_primitives::codec::Codec; -use runtime_primitives::verify_encoded_lazy; use support::{dispatch::Result, StorageMap, decl_module, decl_storage}; -use runtime_primitives::traits::{Member, Verify}; -use {balances, system::ensure_signed}; - -pub trait Trait: balances::Trait { - type Signature: Verify + Member + Codec + Default; +use {system, system::ensure_signed}; - fn print_account(_: Self::AccountId); - fn print_hash(_: Self::Hash); +pub trait Trait: system::Trait { } decl_module! { pub struct Module for enum Call where origin: T::Origin { - fn add(origin, hash: T::Hash, signature: T::Signature) -> Result { - ::runtime_io::print("got hash:"); - T::print_hash(hash.clone()); - + pub fn add(origin, hash: T::Hash) -> Result { if >::exists(hash) { - let existing_ctype_from_map = >::get(hash.clone()); - ::runtime_io::print("existing hash:"); - T::print_hash(existing_ctype_from_map.0.clone()); - ::runtime_io::print("existing origin:"); - T::print_account(existing_ctype_from_map.2.clone()); + return Err("CTYPE already exists") } let sender = ensure_signed(origin)?; - let h = hash.clone(); - if !verify_encoded_lazy(&signature, &h, &sender) { - return Err("bad signature") - } - - >::insert(hash.clone(), (hash.clone(), signature.clone(), sender.clone())); - let ctype_from_map = >::get(hash.clone()); - ::runtime_io::print("after insert hash:"); - T::print_hash(ctype_from_map.0.clone()); - ::runtime_io::print("after insert origin:"); - T::print_account(ctype_from_map.2.clone()); + ::runtime_io::print("insert CTYPE"); + >::insert(hash.clone(), (hash.clone(), sender.clone())); Ok(()) } @@ -51,7 +26,7 @@ decl_module! { decl_storage! { trait Store for Module as Ctype { - pub CTYPEs get(ctypes): map T::Hash => (T::Hash,T::Signature,T::AccountId); + pub CTYPEs get(ctypes): map T::Hash => (T::Hash,T::AccountId); } } @@ -59,14 +34,13 @@ decl_storage! { mod tests { use super::*; - use primitives::{Blake2Hasher, H256, H512}; + use primitives::{Blake2Hasher, H256}; use runtime_io::with_externalities; - use runtime_primitives::Ed25519Signature; use system; - - use sr_primitives::{ + use support::{impl_outer_origin, assert_ok, assert_err}; + use runtime_primitives::{ testing::{Digest, DigestItem, Header}, - traits::BlakeTwo256, + traits::{BlakeTwo256,IdentityLookup}, BuildStorage, }; @@ -87,49 +61,32 @@ mod tests { type Header = Header; type Event = (); type Log = DigestItem; - } - impl balances::Trait for Test { - type Balance = u64; - type AccountIndex = u64; - type OnFreeBalanceZero = (); - type EnsureAccountLiquid = (); - type Event = (); + type Lookup = IdentityLookup; } impl Trait for Test { - type Signature = Ed25519Signature; - fn print_account(_a: Self::AccountId) {} - fn print_hash(_a: Self::Hash) {} } type CType = Module; - // This function basically just builds a genesis storage key/value store according to - // our desired mockup. - fn new_test_ext() -> sr_io::TestExternalities { - let mut t = system::GenesisConfig::::default() - .build_storage() - .unwrap() - .0; - // We use default for brevity, but you can configure as desired if needed. - t.extend( - balances::GenesisConfig::::default() - .build_storage() - .unwrap() - .0, - ); - t.into() + fn new_test_ext() -> runtime_io::TestExternalities { + system::GenesisConfig::::default().build_storage().unwrap().0.into() } #[test] fn it_works_for_default_value() { with_externalities(&mut new_test_ext(), || { + assert_ok!( + CType::add( + Origin::signed(H256::from_low_u64_be(1)), + H256::from_low_u64_be(2) + ) + ); assert_err!( CType::add( - Origin::signed(H256::from(1)), - H256::from(2), - Ed25519Signature::from(H512::from(3)) + Origin::signed(H256::from_low_u64_be(1)), + H256::from_low_u64_be(2) ), - "bad signature" + "CTYPE already exists" ); }); } diff --git a/runtime/src/delegation.rs b/runtime/src/delegation.rs index 99e30f841..1b21865bf 100644 --- a/runtime/src/delegation.rs +++ b/runtime/src/delegation.rs @@ -1,12 +1,13 @@ use rstd::prelude::*; -use runtime_primitives::traits::{CheckEqual, SimpleBitOps, Member, MaybeDisplay}; +use runtime_primitives::traits::{Hash, CheckEqual, SimpleBitOps, Member, Verify, MaybeDisplay}; use support::{dispatch::Result, StorageMap, Parameter, decl_module, decl_storage}; use parity_codec_derive::{Encode, Decode}; use core::default::Default; use runtime_primitives::codec::Codec; -use {balances, system::{self, ensure_signed}, super::ctype}; +use {system::{self, ensure_signed}, super::ctype}; +use runtime_primitives::verify_encoded_lazy; bitflags! { @@ -17,21 +18,33 @@ bitflags! { } } + +impl Permissions { + fn as_u8(&self) -> [u8;4] { + let x: u32 = (*self).bits; + let b1 : u8 = ((x >> 24) & 0xff) as u8; + let b2 : u8 = ((x >> 16) & 0xff) as u8; + let b3 : u8 = ((x >> 8) & 0xff) as u8; + let b4 : u8 = (x & 0xff) as u8; + return [b1, b2, b3, b4]; + } +} + impl Default for Permissions { fn default() -> Self { - return Permissions::ATTEST; } } -pub trait Trait: ctype::Trait + balances::Trait { +pub trait Trait: ctype::Trait + system::Trait { + type Signature: Verify + Member + Codec + Default; type DelegationNodeId: Parameter + Member + Codec + MaybeDisplay + SimpleBitOps + Default + Copy + CheckEqual + rstd::hash::Hash + AsRef<[u8]> + AsMut<[u8]>; } decl_module! { pub struct Module for enum Call where origin: T::Origin { - fn create_root(origin, root_id: T::DelegationNodeId, ctype_hash: T::Hash) -> Result { + pub fn create_root(origin, root_id: T::DelegationNodeId, ctype_hash: T::Hash) -> Result { let sender = ensure_signed(origin)?; if >::exists(root_id) { return Err("root already exist") @@ -40,18 +53,36 @@ decl_module! { return Err("CTYPE does not exist") } + ::runtime_io::print("insert Delegation Root"); >::insert(root_id.clone(), (ctype_hash.clone(), sender.clone(), false)); - return Ok(()); } - fn add_delegation(origin, delegation_id: T::DelegationNodeId, + pub fn add_delegation(origin, delegation_id: T::DelegationNodeId, root_id: T::DelegationNodeId, parent_id: Option, - permissions: Permissions) -> Result { + delegate: T::AccountId, permissions: Permissions, delegate_signature: T::Signature) -> Result { let sender = ensure_signed(origin)?; if >::exists(delegation_id) { return Err("delegation already exist") } + + let mut xts : Vec> = Vec::new(); + xts.push(delegation_id.as_ref().to_vec()); + xts.push(root_id.as_ref().to_vec()); + match parent_id { + Some(p) => xts.push(p.as_ref().to_vec()), + None => {} + } + let p = permissions.as_u8(); + xts.push((&p).to_vec()); + let xt = xts.iter().map(Vec::as_slice).collect::>(); + let hash_root = T::Hashing::enumerated_trie_root(&xt); + if !verify_encoded_lazy(&delegate_signature, &hash_root, &delegate) { + // TODO: abort on signature error + ::runtime_io::print("WARNING: SIGNATURE DOES NOT MATCH!"); + // return Err("bad delegate signature") + } + if >::exists(root_id) { let root = >::get(root_id.clone()); match parent_id { @@ -63,7 +94,9 @@ decl_module! { } else if parent.3 & Permissions::DELEGATE != Permissions::DELEGATE { return Err("not authorized to delegate") } else { - >::insert(delegation_id.clone(), (root_id.clone(), Some(p.clone()), sender, permissions, false)); + // TODO: check for cycles + ::runtime_io::print("insert Delegation with parent"); + >::insert(delegation_id.clone(), (root_id.clone(), Some(p.clone()), delegate, permissions, false)); } } else { return Err("parent not found") @@ -73,7 +106,8 @@ decl_module! { if root.1 != sender { return Err("not owner of root") } - >::insert(delegation_id.clone(), (root_id.clone(), None, sender, permissions, false)); + ::runtime_io::print("insert Delegation without parent"); + >::insert(delegation_id.clone(), (root_id.clone(), None, delegate, permissions, false)); } } } else { diff --git a/runtime/src/did.rs b/runtime/src/did.rs new file mode 100644 index 000000000..9b91c1639 --- /dev/null +++ b/runtime/src/did.rs @@ -0,0 +1,87 @@ + + +use rstd::prelude::*; +use runtime_primitives::traits::{Member}; +use support::{dispatch::Result, StorageMap, Parameter, decl_module, decl_storage}; +use runtime_primitives::codec::Codec; +use {system, system::ensure_signed}; + +pub trait Trait: system::Trait { + type PublicSigningKey : Parameter + Member + Codec + Default; + type PublicBoxKey : Parameter + Member + Codec + Default; +} + +decl_module! { + pub struct Module for enum Call where origin: T::Origin { + + pub fn add(origin, sign_key: T::PublicSigningKey, box_key: T::PublicBoxKey, doc_ref: Option>) -> Result { + let sender = ensure_signed(origin)?; + >::insert(sender.clone(), (sign_key, box_key, doc_ref)); + Ok(()) + } + } +} + +decl_storage! { + trait Store for Module as DID { + // DID: account-id -> (did-reference?) + DID get(dids): map T::AccountId => (T::PublicSigningKey, T::PublicBoxKey, Option>); + } +} + + +#[cfg(test)] +mod tests { + use super::*; + use system; + use runtime_io::with_externalities; + use primitives::{H256, Blake2Hasher}; + use primitives::*; + use support::{impl_outer_origin, assert_ok}; + + use runtime_primitives::{ + BuildStorage, traits::{BlakeTwo256, IdentityLookup}, testing::{Digest, DigestItem, Header} + }; + + impl_outer_origin! { + pub enum Origin for Test {} + } + + #[derive(Clone, Eq, PartialEq)] + pub struct Test; + impl system::Trait for Test { + type Origin = Origin; + type Index = u64; + type BlockNumber = u64; + type Hash = H256; + type Hashing = BlakeTwo256; + type Digest = Digest; + type AccountId = H256; + type Header = Header; + type Event = (); + type Log = DigestItem; + type Lookup = IdentityLookup; + } + + impl Trait for Test { + type PublicSigningKey = H256; + type PublicBoxKey = H256; + } + + type DID = Module; + + fn new_test_ext() -> runtime_io::TestExternalities { + system::GenesisConfig::::default().build_storage().unwrap().0.into() + } + + #[test] + fn check_add_did() { + with_externalities(&mut new_test_ext(), || { + let pair = ed25519::Pair::from_seed(b"Alice "); + let hash = H256::from_low_u64_be(1); + let account_hash = H256::from(pair.public().0); + assert_ok!(DID::add(Origin::signed(account_hash.clone()), + hash.clone(), hash.clone(), Some(b"http://kilt.org/submit".to_vec()))); + }); + } +} diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index e38c4e40a..85d8341a2 100644 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -46,7 +46,7 @@ pub use support::{StorageValue, construct_runtime}; mod ctype; mod attestation; mod delegation; - +mod did; /// Alias to Ed25519 pubkey that identifies an account on the chain. pub type AccountId = primitives::H256; @@ -185,20 +185,18 @@ impl attestation::Trait for Runtime { } impl ctype::Trait for Runtime { - type Signature = Ed25519Signature; - - fn print_account(hash: primitives::H256) { - ::runtime_io::print(&hash.as_bytes()[..]); - } - fn print_hash(hash: primitives::H256) { - ::runtime_io::print(&hash.as_bytes()[..]); - } } impl delegation::Trait for Runtime { + type Signature = Ed25519Signature; type DelegationNodeId = Hash; } +impl did::Trait for Runtime { + type PublicSigningKey = primitives::H256; + type PublicBoxKey = primitives::H256; +} + construct_runtime!( pub enum Runtime with Log(InternalLog: DigestItem) where Block = Block, @@ -215,6 +213,7 @@ construct_runtime!( Ctype: ctype::{Module, Call, Storage}, Attestation: attestation::{Module, Call, Storage}, Delegation: delegation::{Module, Call, Storage}, + DID: did::{Module, Call, Storage}, } ); From 3de30afab566f395657ae75d2c2a945f5439ddcf Mon Sep 17 00:00:00 2001 From: Benjamin Kolb Date: Tue, 12 Mar 2019 16:30:37 +0100 Subject: [PATCH 3/4] fix: coreect naming --- runtime/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index 85d8341a2..311e83eb7 100644 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -213,7 +213,7 @@ construct_runtime!( Ctype: ctype::{Module, Call, Storage}, Attestation: attestation::{Module, Call, Storage}, Delegation: delegation::{Module, Call, Storage}, - DID: did::{Module, Call, Storage}, + Did: did::{Module, Call, Storage}, } ); From 9c594d9e3bcf069f9d8b77803c0de2198f41b80a Mon Sep 17 00:00:00 2001 From: Benjamin Kolb Date: Tue, 12 Mar 2019 19:21:04 +0100 Subject: [PATCH 4/4] fix: PR issues --- runtime/src/attestation.rs | 4 ++-- runtime/src/delegation.rs | 14 +++++++------- runtime/src/lib.rs | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/runtime/src/attestation.rs b/runtime/src/attestation.rs index a51678283..663018a7e 100644 --- a/runtime/src/attestation.rs +++ b/runtime/src/attestation.rs @@ -18,14 +18,14 @@ decl_module! { Some(d) => { let delegation = >::get(d.clone()); if delegation.4 { - return Err("delgation revoked") + return Err("delegation revoked") } else if delegation.2 != sender { return Err("not delegated to attester") } else if delegation.3 & delegation::Permissions::ATTEST != delegation::Permissions::ATTEST { return Err("delegation not authorized to attest") } else { let root = >::get(delegation.0.clone()); - if root.0 == ctype_hash { + if root.0 != ctype_hash { return Err("CTYPE of delegation does not match") } } diff --git a/runtime/src/delegation.rs b/runtime/src/delegation.rs index 1b21865bf..bb4a1166e 100644 --- a/runtime/src/delegation.rs +++ b/runtime/src/delegation.rs @@ -66,17 +66,17 @@ decl_module! { return Err("delegation already exist") } - let mut xts : Vec> = Vec::new(); - xts.push(delegation_id.as_ref().to_vec()); - xts.push(root_id.as_ref().to_vec()); + let mut hashed_values : Vec> = Vec::new(); + hashed_values.push(delegation_id.as_ref().to_vec()); + hashed_values.push(root_id.as_ref().to_vec()); match parent_id { - Some(p) => xts.push(p.as_ref().to_vec()), + Some(p) => hashed_values.push(p.as_ref().to_vec()), None => {} } let p = permissions.as_u8(); - xts.push((&p).to_vec()); - let xt = xts.iter().map(Vec::as_slice).collect::>(); - let hash_root = T::Hashing::enumerated_trie_root(&xt); + hashed_values.push((&p).to_vec()); + let hashed_value_array = hashed_values.iter().map(Vec::as_slice).collect::>(); + let hash_root = T::Hashing::enumerated_trie_root(&hashed_value_array); if !verify_encoded_lazy(&delegate_signature, &hash_root, &delegate) { // TODO: abort on signature error ::runtime_io::print("WARNING: SIGNATURE DOES NOT MATCH!"); diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index 311e83eb7..00538ec01 100644 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -193,8 +193,8 @@ impl delegation::Trait for Runtime { } impl did::Trait for Runtime { - type PublicSigningKey = primitives::H256; - type PublicBoxKey = primitives::H256; + type PublicSigningKey = Hash; + type PublicBoxKey = Hash; } construct_runtime!(