diff --git a/Cargo.lock b/Cargo.lock index 71a90488..152c91af 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,1456 +4,1676 @@ name = "adler32" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2" [[package]] name = "aes-ctr" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2e5b0458ea3beae0d1d8c0f3946564f8e10f90646cf78c06b4351052058d1ee" dependencies = [ - "aes-soft 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "aesni 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ctr 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "aes-soft", + "aesni", + "ctr", + "stream-cipher", ] [[package]] name = "aes-soft" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfd7e7ae3f9a1fb5c03b389fc6bb9a51400d0c13053f0dca698c832bfd893a0d" dependencies = [ - "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "block-cipher-trait", + "byteorder", + "opaque-debug", ] [[package]] name = "aesni" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f70a6b5f971e473091ab7cfb5ffac6cde81666c4556751d8d5620ead8abf100" dependencies = [ - "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "block-cipher-trait", + "opaque-debug", + "stream-cipher", ] [[package]] name = "aho-corasick" -version = "0.7.6" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5e63fd144e18ba274ae7095c0197a870a7b9468abc801dd62f190d80817d2ec" dependencies = [ - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr", ] [[package]] name = "ansi_term" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8", ] [[package]] name = "ansi_term" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8", ] [[package]] name = "arrayref" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" [[package]] name = "arrayvec" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" [[package]] name = "atty" version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "hermit-abi", + "libc", + "winapi 0.3.8", ] [[package]] name = "autocfg" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" [[package]] name = "autocfg" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" [[package]] name = "backtrace" -version = "0.3.40" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4036b9bf40f3cf16aba72a3d65e8a520fc4bafcdc7079aea8f848c58c5b5536" dependencies = [ - "backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace-sys", + "cfg-if", + "libc", + "rustc-demangle", ] [[package]] name = "backtrace-sys" version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d6575f128516de27e3ce99689419835fce9643a9b215a14d2b5b685be018491" dependencies = [ - "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", + "libc", ] [[package]] name = "base64" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", + "safemem", ] [[package]] name = "base64" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", ] +[[package]] +name = "base64" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" + [[package]] name = "bech32" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58946044516aa9dc922182e0d6e9d124a31aafe6b421614654eb27cf90cec09c" [[package]] name = "bincode" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5753e2a71534719bf3f4e57006c3a4f0d2c672a4b676eec84161f763eca87dbf" dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", + "serde", ] [[package]] name = "bindgen" version = "0.50.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0e5a5f74b2bafe0b39379f616b5975e08bcaca4e779c078d5c31324147e9ba" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cexpr 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "clang-sys 0.28.1 (registry+https://github.com/rust-lang/crates.io-index)", - "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "shlex 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "which 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", + "cexpr", + "cfg-if", + "clang-sys", + "clap", + "env_logger", + "fxhash", + "lazy_static", + "log 0.4.8", + "peeking_take_while", + "proc-macro2 0.4.30", + "quote 0.6.13", + "regex", + "shlex", + "which", ] [[package]] name = "bit-vec" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb" [[package]] name = "bitcoin_hashes" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b7a2e9773ee7ae7f2560f0426c938f57902dcb9e39321b0cbd608f47ed579a4" dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", ] [[package]] name = "bitflags" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" [[package]] name = "blake2" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94cb07b0da6a73955f8fb85d24c466778e70cda767a568229b104f0264089330" dependencies = [ - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-tools", + "crypto-mac", + "digest", + "opaque-debug", ] [[package]] name = "blake2b-rs" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e35e362830ef90ecea16f09b21b75d22d33a8562a679c74ab4f4fa49b4fcb87" dependencies = [ - "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", ] [[package]] name = "blake2b_simd" version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a" dependencies = [ - "arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "constant_time_eq 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayref", + "arrayvec", + "constant_time_eq", ] [[package]] name = "block-buffer" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" dependencies = [ - "block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "block-padding", + "byte-tools", + "byteorder", + "generic-array", ] [[package]] name = "block-cipher-trait" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c924d49bd09e7c06003acda26cd9742e796e34282ec6c1189404dee0c1f4774" dependencies = [ - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array", ] [[package]] name = "block-padding" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" dependencies = [ - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-tools", ] [[package]] name = "bs58" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c95ee6bba9d950218b6cc910cf62bc9e0a171d0f4537e3627b0f54d08549b188" + +[[package]] +name = "bstr" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "502ae1441a0a5adb8fbd38a5955a6416b9493e92b465de5e4a9bde6a539c2c48" +dependencies = [ + "memchr", +] [[package]] name = "byte-tools" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" [[package]] name = "byteorder" -version = "1.3.2" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" [[package]] name = "bytes" version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" +dependencies = [ + "byteorder", + "either", + "iovec", +] + +[[package]] +name = "bytes" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "130aac562c0dd69c56b3b1cc8ffd2e17be31d0b6c25b61c96b76231aa23e39e1" dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", ] [[package]] name = "c2-chacha" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb" dependencies = [ - "ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "ppv-lite86", ] [[package]] name = "cassowary" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" [[package]] name = "cc" version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dae9c4b8fedcae85592ba623c4fd08cfdab3e3b72d6df780c6ead964a69bfff" dependencies = [ - "rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon", ] [[package]] name = "cexpr" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fce5b5fb86b0c57c20c834c1b412fd09c77c8a59b9473f86272709e78874cd1d" dependencies = [ - "nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "nom", ] [[package]] name = "cfg-if" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" [[package]] name = "chrono" version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31850b4a4d6bae316f7a09e691c944c28299298837edc0a03f755618c23cbc01" dependencies = [ - "num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer", + "num-traits", + "serde", + "time", ] [[package]] name = "ckb-build-info" -version = "0.27.1-pre" -source = "git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1#44b0d3595c31a29aef81e74360ba8613cd0dd27f" +version = "0.30.0-pre" +source = "git+https://github.com/nervosnetwork/ckb?tag=v0.30.0-rc1#97438bde8f7baf1a170fffc5b7af8d0eef4aea04" [[package]] name = "ckb-chain-spec" -version = "0.27.1-pre" -source = "git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1#44b0d3595c31a29aef81e74360ba8613cd0dd27f" +version = "0.30.0-pre" +source = "git+https://github.com/nervosnetwork/ckb?tag=v0.30.0-rc1#97438bde8f7baf1a170fffc5b7af8d0eef4aea04" dependencies = [ - "ckb-crypto 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-dao-utils 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-error 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-hash 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-jsonrpc-types 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-pow 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-rational 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-resource 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-types 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "toml 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "ckb-crypto", + "ckb-dao-utils", + "ckb-error", + "ckb-hash", + "ckb-jsonrpc-types", + "ckb-pow", + "ckb-rational", + "ckb-resource", + "ckb-types", + "failure", + "serde", + "toml", ] [[package]] name = "ckb-cli" -version = "0.27.1" -dependencies = [ - "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "ckb-build-info 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-crypto 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-dao-utils 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-hash 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-index 0.27.1", - "ckb-jsonrpc-types 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-resource 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-sdk 0.27.1", - "ckb-types 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-util 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", - "colored 1.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "dirs 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "eaglesong 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "faster-hex 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ipnetwork 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-client-core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-multiaddr 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rpassword 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustyline 4.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "secp256k1 0.15.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)", - "shell-words 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "termion 1.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "tui 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", +version = "0.30.0" +dependencies = [ + "ansi_term 0.11.0", + "atty", + "byteorder", + "chrono", + "ckb-build-info", + "ckb-crypto", + "ckb-dao-utils", + "ckb-hash", + "ckb-index", + "ckb-jsonrpc-types", + "ckb-resource", + "ckb-sdk", + "ckb-types", + "ckb-util", + "clap", + "colored", + "crossbeam-channel", + "dirs", + "dtoa", + "eaglesong", + "env_logger", + "faster-hex 0.4.1", + "ipnetwork", + "itertools", + "jsonrpc-client-core", + "jsonrpc-core 10.1.0", + "jsonrpc-derive", + "jsonrpc-http-server", + "jsonrpc-server-utils", + "log 0.4.8", + "parity-multiaddr", + "regex", + "rpassword", + "rustyline", + "secp256k1", + "serde", + "serde_derive", + "serde_json", + "serde_yaml", + "shell-words", + "termion", + "tui", + "url 1.7.2", + "yaml-rust", ] [[package]] name = "ckb-crypto" -version = "0.27.1-pre" -source = "git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1#44b0d3595c31a29aef81e74360ba8613cd0dd27f" +version = "0.30.0-pre" +source = "git+https://github.com/nervosnetwork/ckb?tag=v0.30.0-rc1#97438bde8f7baf1a170fffc5b7af8d0eef4aea04" dependencies = [ - "ckb-fixed-hash 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "faster-hex 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "secp256k1 0.15.5 (registry+https://github.com/rust-lang/crates.io-index)", + "ckb-fixed-hash", + "failure", + "faster-hex 0.4.1", + "lazy_static", + "rand 0.6.5", + "secp256k1", ] [[package]] name = "ckb-dao-utils" -version = "0.27.1-pre" -source = "git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1#44b0d3595c31a29aef81e74360ba8613cd0dd27f" +version = "0.30.0-pre" +source = "git+https://github.com/nervosnetwork/ckb?tag=v0.30.0-rc1#97438bde8f7baf1a170fffc5b7af8d0eef4aea04" dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "ckb-error 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-types 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "enum-display-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", + "ckb-error", + "ckb-types", + "enum-display-derive", + "failure", ] [[package]] name = "ckb-error" -version = "0.27.1-pre" -source = "git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1#44b0d3595c31a29aef81e74360ba8613cd0dd27f" +version = "0.30.0-pre" +source = "git+https://github.com/nervosnetwork/ckb?tag=v0.30.0-rc1#97438bde8f7baf1a170fffc5b7af8d0eef4aea04" dependencies = [ - "ckb-occupied-capacity 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "enum-display-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "ckb-occupied-capacity", + "enum-display-derive", + "failure", ] [[package]] name = "ckb-fixed-hash" -version = "0.27.1-pre" -source = "git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1#44b0d3595c31a29aef81e74360ba8613cd0dd27f" +version = "0.30.0-pre" +source = "git+https://github.com/nervosnetwork/ckb?tag=v0.30.0-rc1#97438bde8f7baf1a170fffc5b7af8d0eef4aea04" dependencies = [ - "ckb-fixed-hash-core 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-fixed-hash-hack 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", + "ckb-fixed-hash-core", + "ckb-fixed-hash-hack", + "proc-macro-hack", ] [[package]] name = "ckb-fixed-hash-core" -version = "0.27.1-pre" -source = "git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1#44b0d3595c31a29aef81e74360ba8613cd0dd27f" +version = "0.30.0-pre" +source = "git+https://github.com/nervosnetwork/ckb?tag=v0.30.0-rc1#97438bde8f7baf1a170fffc5b7af8d0eef4aea04" dependencies = [ - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "faster-hex 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "failure", + "faster-hex 0.4.1", + "serde", ] [[package]] name = "ckb-fixed-hash-hack" -version = "0.27.1-pre" -source = "git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1#44b0d3595c31a29aef81e74360ba8613cd0dd27f" +version = "0.30.0-pre" +source = "git+https://github.com/nervosnetwork/ckb?tag=v0.30.0-rc1#97438bde8f7baf1a170fffc5b7af8d0eef4aea04" dependencies = [ - "ckb-fixed-hash-core 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", + "ckb-fixed-hash-core", + "proc-macro-hack", + "proc-macro2 0.4.30", + "quote 0.6.13", + "syn 0.15.44", ] [[package]] name = "ckb-hash" -version = "0.27.1-pre" -source = "git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1#44b0d3595c31a29aef81e74360ba8613cd0dd27f" +version = "0.30.0-pre" +source = "git+https://github.com/nervosnetwork/ckb?tag=v0.30.0-rc1#97438bde8f7baf1a170fffc5b7af8d0eef4aea04" dependencies = [ - "blake2b-rs 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2b-rs", ] [[package]] name = "ckb-index" -version = "0.27.1" +version = "0.30.0" dependencies = [ - "bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ckb-sdk 0.27.1", - "ckb-types 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rocksdb 0.12.2 (git+https://github.com/nervosnetwork/rust-rocksdb?rev=14d2991)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "bincode", + "ckb-sdk", + "ckb-types", + "failure", + "log 0.4.8", + "rocksdb", + "serde", + "serde_derive", ] [[package]] name = "ckb-jsonrpc-types" -version = "0.27.1-pre" -source = "git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1#44b0d3595c31a29aef81e74360ba8613cd0dd27f" +version = "0.30.0-pre" +source = "git+https://github.com/nervosnetwork/ckb?tag=v0.30.0-rc1#97438bde8f7baf1a170fffc5b7af8d0eef4aea04" dependencies = [ - "ckb-types 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "faster-hex 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)", + "ckb-types", + "faster-hex 0.4.1", + "jsonrpc-core 14.0.5", + "serde", + "serde_json", ] [[package]] name = "ckb-logger" -version = "0.27.1-pre" -source = "git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1#44b0d3595c31a29aef81e74360ba8613cd0dd27f" +version = "0.30.0-pre" +source = "git+https://github.com/nervosnetwork/ckb?tag=v0.30.0-rc1#97438bde8f7baf1a170fffc5b7af8d0eef4aea04" dependencies = [ - "ansi_term 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", - "backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sentry 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "ansi_term 0.12.1", + "backtrace", + "chrono", + "crossbeam-channel", + "env_logger", + "lazy_static", + "log 0.4.8", + "parking_lot 0.7.1", + "regex", + "sentry", + "serde", + "serde_json", ] [[package]] name = "ckb-occupied-capacity" -version = "0.27.1-pre" -source = "git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1#44b0d3595c31a29aef81e74360ba8613cd0dd27f" +version = "0.30.0-pre" +source = "git+https://github.com/nervosnetwork/ckb?tag=v0.30.0-rc1#97438bde8f7baf1a170fffc5b7af8d0eef4aea04" dependencies = [ - "ckb-occupied-capacity-core 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-occupied-capacity-macros 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", + "ckb-occupied-capacity-core", + "ckb-occupied-capacity-macros", + "proc-macro-hack", ] [[package]] name = "ckb-occupied-capacity-core" -version = "0.27.1-pre" -source = "git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1#44b0d3595c31a29aef81e74360ba8613cd0dd27f" +version = "0.30.0-pre" +source = "git+https://github.com/nervosnetwork/ckb?tag=v0.30.0-rc1#97438bde8f7baf1a170fffc5b7af8d0eef4aea04" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", ] [[package]] name = "ckb-occupied-capacity-macros" -version = "0.27.1-pre" -source = "git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1#44b0d3595c31a29aef81e74360ba8613cd0dd27f" +version = "0.30.0-pre" +source = "git+https://github.com/nervosnetwork/ckb?tag=v0.30.0-rc1#97438bde8f7baf1a170fffc5b7af8d0eef4aea04" dependencies = [ - "ckb-occupied-capacity-core 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", + "ckb-occupied-capacity-core", + "proc-macro-hack", + "quote 0.6.13", + "syn 0.15.44", ] [[package]] name = "ckb-pow" -version = "0.27.1-pre" -source = "git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1#44b0d3595c31a29aef81e74360ba8613cd0dd27f" +version = "0.30.0-pre" +source = "git+https://github.com/nervosnetwork/ckb?tag=v0.30.0-rc1#97438bde8f7baf1a170fffc5b7af8d0eef4aea04" dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "ckb-types 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "eaglesong 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", + "ckb-types", + "eaglesong", + "serde", ] [[package]] name = "ckb-rational" -version = "0.27.1-pre" -source = "git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1#44b0d3595c31a29aef81e74360ba8613cd0dd27f" +version = "0.30.0-pre" +source = "git+https://github.com/nervosnetwork/ckb?tag=v0.30.0-rc1#97438bde8f7baf1a170fffc5b7af8d0eef4aea04" dependencies = [ - "numext-fixed-uint 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "numext-fixed-uint", ] [[package]] name = "ckb-resource" -version = "0.27.1-pre" -source = "git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1#44b0d3595c31a29aef81e74360ba8613cd0dd27f" +version = "0.30.0-pre" +source = "git+https://github.com/nervosnetwork/ckb?tag=v0.30.0-rc1#97438bde8f7baf1a170fffc5b7af8d0eef4aea04" dependencies = [ - "ckb-system-scripts 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ckb-types 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "includedir 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "includedir_codegen 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)", + "ckb-system-scripts", + "ckb-types", + "includedir", + "includedir_codegen", + "phf", + "serde", + "tempfile", + "walkdir", ] [[package]] name = "ckb-script" -version = "0.27.1-pre" -source = "git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1#44b0d3595c31a29aef81e74360ba8613cd0dd27f" +version = "0.30.0-pre" +source = "git+https://github.com/nervosnetwork/ckb?tag=v0.30.0-rc1#97438bde8f7baf1a170fffc5b7af8d0eef4aea04" dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "ckb-chain-spec 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-error 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-hash 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-logger 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-script-data-loader 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-types 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-vm 0.18.2 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "faster-hex 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", + "ckb-chain-spec", + "ckb-error", + "ckb-hash", + "ckb-logger", + "ckb-script-data-loader", + "ckb-types", + "ckb-vm", + "ckb-vm-definitions", + "failure", + "faster-hex 0.4.1", + "goblin 0.1.3", + "serde", ] [[package]] name = "ckb-script-data-loader" -version = "0.27.1-pre" -source = "git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1#44b0d3595c31a29aef81e74360ba8613cd0dd27f" +version = "0.30.0-pre" +source = "git+https://github.com/nervosnetwork/ckb?tag=v0.30.0-rc1#97438bde8f7baf1a170fffc5b7af8d0eef4aea04" dependencies = [ - "ckb-types 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", + "ckb-types", ] [[package]] name = "ckb-sdk" -version = "0.27.1" -dependencies = [ - "aes-ctr 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bech32 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bitcoin_hashes 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "ckb-crypto 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-hash 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-jsonrpc-types 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-resource 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-script 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-sdk-types 0.27.1", - "ckb-types 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "faster-hex 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-client-core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-client-http 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "scrypt 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "secp256k1 0.15.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)", - "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", +version = "0.30.0" +dependencies = [ + "aes-ctr", + "bech32", + "bitcoin_hashes", + "byteorder", + "chrono", + "ckb-crypto", + "ckb-hash", + "ckb-jsonrpc-types", + "ckb-resource", + "ckb-script", + "ckb-sdk-types", + "ckb-types", + "failure", + "faster-hex 0.4.1", + "fnv", + "jsonrpc-client-core", + "jsonrpc-client-http", + "lazy_static", + "log 0.4.8", + "rand 0.6.5", + "scrypt", + "secp256k1", + "serde", + "serde_derive", + "serde_json", + "tiny-keccak", + "uuid", ] [[package]] name = "ckb-sdk-types" -version = "0.27.1" +version = "0.30.0" dependencies = [ - "ckb-crypto 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-error 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-hash 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-jsonrpc-types 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-script 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-types 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "ckb-crypto", + "ckb-error", + "ckb-hash", + "ckb-jsonrpc-types", + "ckb-script", + "ckb-types", + "serde", + "serde_derive", ] [[package]] name = "ckb-system-scripts" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "261dd95a93c09ea24397c85b4fbca061e1da2d6573189749aeb99fe840aaf0c9" dependencies = [ - "blake2b-rs 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "faster-hex 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "includedir 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "includedir_codegen 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2b-rs", + "faster-hex 0.3.1", + "includedir", + "includedir_codegen", + "phf", ] [[package]] name = "ckb-types" -version = "0.27.1-pre" -source = "git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1#44b0d3595c31a29aef81e74360ba8613cd0dd27f" +version = "0.30.0-pre" +source = "git+https://github.com/nervosnetwork/ckb?tag=v0.30.0-rc1#97438bde8f7baf1a170fffc5b7af8d0eef4aea04" dependencies = [ - "bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "ckb-error 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-fixed-hash 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-hash 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-occupied-capacity 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "ckb-rational 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)", - "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "merkle-cbt 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "molecule 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "numext-fixed-uint 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bit-vec", + "bytes 0.5.4", + "ckb-error", + "ckb-fixed-hash", + "ckb-hash", + "ckb-occupied-capacity", + "ckb-rational", + "crossbeam-channel", + "failure", + "merkle-cbt", + "molecule", + "numext-fixed-uint", ] [[package]] name = "ckb-util" -version = "0.27.1-pre" -source = "git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1#44b0d3595c31a29aef81e74360ba8613cd0dd27f" +version = "0.30.0-pre" +source = "git+https://github.com/nervosnetwork/ckb?tag=v0.30.0-rc1#97438bde8f7baf1a170fffc5b7af8d0eef4aea04" dependencies = [ - "linked-hash-map 0.5.1 (git+https://github.com/nervosnetwork/linked-hash-map?rev=df27f21)", - "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "linked-hash-map 0.5.1", + "parking_lot 0.7.1", ] [[package]] name = "ckb-vm" -version = "0.18.2" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64d3ba078ad0a856b82a9e0c62f7ca564df027898bb2e6e367a26455f114fa67" dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", - "ckb-vm-definitions 0.18.2 (registry+https://github.com/rust-lang/crates.io-index)", - "derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", - "goblin 0.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", + "bytes 0.5.4", + "cc", + "ckb-vm-definitions", + "derive_more", + "goblin 0.2.0", + "libc", + "memmap", ] [[package]] name = "ckb-vm-definitions" -version = "0.18.2" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cfc1ed5a58a3015b236fda0956e0fe060823d072267b6d7bd68b3ccd0b290e1" [[package]] name = "clang-sys" version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81de550971c976f176130da4b2978d3b524eaa0fd9ac31f3ceb5ae1231fb4853" dependencies = [ - "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "glob 0.3.0", + "libc", + "libloading", ] [[package]] name = "clap" version = "2.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9" dependencies = [ - "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ansi_term 0.11.0", + "atty", + "bitflags", + "strsim", + "textwrap", + "unicode-width", + "vec_map", ] [[package]] name = "cloudabi" version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", ] [[package]] name = "colored" -version = "1.9.1" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4ffc801dacf156c5854b9df4f425a626539c3a6ef7893cc0c5084a23f0b6c59" dependencies = [ - "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "atty", + "lazy_static", + "winapi 0.3.8", ] [[package]] name = "constant_time_eq" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "cookie" version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5" dependencies = [ - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "time", + "url 1.7.2", ] [[package]] name = "cookie_store" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46750b3f362965f197996c4448e4a0935e791bf7d6631bfce9ee0af3d24c919c" dependencies = [ - "cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "publicsuffix 1.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "cookie", + "failure", + "idna 0.1.5", + "log 0.4.8", + "publicsuffix", + "serde", + "serde_json", + "time", + "try_from", + "url 1.7.2", ] [[package]] name = "core-foundation" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d" dependencies = [ - "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation-sys", + "libc", ] [[package]] name = "core-foundation-sys" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" [[package]] name = "crc32fast" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", ] [[package]] name = "crossbeam-channel" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ec7fcd21571dc78f96cc96243cab8d8f035247c3efd16c687be154c3fa9efa" dependencies = [ - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6", ] [[package]] name = "crossbeam-deque" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285" dependencies = [ - "crossbeam-epoch 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch", + "crossbeam-utils 0.7.2", + "maybe-uninit", ] [[package]] name = "crossbeam-epoch" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "memoffset 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "crossbeam-queue" -version = "0.1.2" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" dependencies = [ - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.0", + "cfg-if", + "crossbeam-utils 0.7.2", + "lazy_static", + "maybe-uninit", + "memoffset", + "scopeguard 1.1.0", ] [[package]] name = "crossbeam-queue" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c695eeca1e7173472a32221542ae469b3e9aac3a4fc81f7696bcad82029493db" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "crossbeam-utils 0.7.2", ] [[package]] name = "crossbeam-utils" version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "lazy_static", ] [[package]] name = "crossbeam-utils" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.0", + "cfg-if", + "lazy_static", ] [[package]] name = "crunchy" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-mac" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" dependencies = [ - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array", + "subtle", ] [[package]] name = "ctr" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "022cd691704491df67d25d006fe8eca083098253c4d43516c2206479c58c6736" dependencies = [ - "block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "block-cipher-trait", + "stream-cipher", ] [[package]] name = "data-encoding" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11c0346158a19b3627234e15596f5e465c360fcdb97d817bcb255e0510f5a788" [[package]] name = "debugid" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "088c9627adec1e494ff9dea77377f1e69893023d631254a0ec68b16ee20be3e9" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", + "regex", + "serde", + "uuid", ] [[package]] name = "derive_more" -version = "0.15.0" +version = "0.99.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a806e96c59a76a5ba6e18735b6cf833344671e61e7863f2edb5c518ea2cac95c" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.9", + "quote 1.0.2", + "syn 1.0.16", ] [[package]] name = "digest" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" dependencies = [ - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array", ] [[package]] name = "dirs" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_users 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "redox_users", + "winapi 0.3.8", ] [[package]] name = "dtoa" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4358a9e11b9a09cf52383b451b49a169e8d797b68aa02301ff586d70d9661ea3" [[package]] name = "eaglesong" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d978bd5d343e8ab9b5c0fc8d93ff9c602fdc96616ffff9c05ac7a155419b824" [[package]] name = "either" version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" [[package]] name = "encoding_rs" version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd8d03faa7fe0c1431609dfad7bbe827af30f82e1e2ae6f7ee4fca6bd764bc28" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", ] [[package]] name = "enum-display-derive" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53f76eb63c4bfc6fce5000f106254701b741fc9a65ee08445fde0ff39e583f1c" dependencies = [ - "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.3.15", + "syn 0.11.11", ] [[package]] name = "env_logger" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3" dependencies = [ - "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", - "humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "atty", + "humantime", + "log 0.4.8", + "regex", + "termcolor", ] [[package]] name = "error-chain" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d371106cc88ffdfb1eabd7111e432da544f16f3e2d7bf1dfe8bf575f1df045cd" dependencies = [ - "backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace", + "version_check 0.9.1", ] [[package]] name = "failure" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8273f13c977665c5db7eb2b99ae520952fe5ac831ae4cd09d80c4c7042b5ed9" dependencies = [ - "backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace", + "failure_derive", ] [[package]] name = "failure_derive" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bc225b78e0391e4b8683440bf2e63c2deeeb2ce5189eab46e2b68c6d3725d08" dependencies = [ - "proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", - "synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.9", + "quote 1.0.2", + "syn 1.0.16", + "synstructure", ] [[package]] name = "fake-simd" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" [[package]] name = "faster-hex" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5b8cccaafb5aae8c282692e5590f341925edea6c696e8715ff0d973320b2646" [[package]] name = "faster-hex" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "fixedbitset" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "348138dd23e03bb0018caef99647fb1a5befec5ff4b501991de88f09854d4c28" [[package]] name = "flate2" version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bd6d6f4752952feb71363cffc9ebac9411b75b87c6ab6058c40c8900cf43c0f" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "miniz_oxide 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "crc32fast", + "libc", + "miniz_oxide", ] [[package]] name = "fnv" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" [[package]] name = "foreign-types" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" dependencies = [ - "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "foreign-types-shared", ] [[package]] name = "foreign-types-shared" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "fuchsia-cprng" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" [[package]] name = "fuchsia-zircon" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", + "fuchsia-zircon-sys", ] [[package]] name = "fuchsia-zircon-sys" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" [[package]] name = "futures" version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef" [[package]] name = "futures-cpupool" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)", + "futures", + "num_cpus", ] [[package]] name = "fxhash" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", ] [[package]] name = "generic-array" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" dependencies = [ - "typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", + "typenum", ] [[package]] name = "getrandom" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "libc", + "wasi", ] [[package]] name = "glob" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" [[package]] name = "glob" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" + +[[package]] +name = "globset" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925aa2cac82d8834e2b2a4415b6f6879757fb5c0928fc445ae76461a12eed8f2" +dependencies = [ + "aho-corasick", + "bstr", + "fnv", + "log 0.4.8", + "regex", +] + +[[package]] +name = "goblin" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3081214398d39e4bd7f2c1975f0488ed04614ffdd976c6fc7a0708278552c0da" +dependencies = [ + "log 0.4.8", + "plain", + "scroll", +] [[package]] name = "goblin" -version = "0.0.24" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0259546d6aed5dd1f4efc3ae663cae62912ceb927c0e96ae1fc8a22ab1516763" dependencies = [ - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "plain 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "scroll 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8", + "plain", + "scroll", ] [[package]] name = "h2" version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", + "bytes 0.4.12", + "fnv", + "futures", + "http", + "indexmap", + "log 0.4.8", + "slab 0.4.2", + "string", + "tokio-io", ] [[package]] name = "heapsize" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1679e6ea370dee694f91f1dc469bf94cf8f52051d147aec3e1f9497c6fc22461" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8", ] [[package]] name = "hermit-abi" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1010591b26bbfe835e9faeabeb11866061cc7dcebffd56ad7d0942d0e61aefd8" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] [[package]] name = "hmac" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" dependencies = [ - "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crypto-mac", + "digest", ] [[package]] name = "hostname" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21ceb46a83a85e824ef93669c8b390009623863b5c195d1ba747292c0c72f94e" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "winutil 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "winutil", ] [[package]] name = "http" version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6ccf5ede3a895d8856620237b2f02972c1bbc78d2965ad7fe8838d4a0ed41f0" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "fnv", + "itoa", ] [[package]] name = "http-body" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures", + "http", + "tokio-buf", ] [[package]] name = "httparse" version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" [[package]] name = "httpdate" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" [[package]] name = "humantime" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" dependencies = [ - "quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error", ] [[package]] name = "hyper" version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "relay 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-proto 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "want 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", +checksum = "34a590ca09d341e94cddf8e5af0bbccde205d5fbc2fa3c09dd67c7f85cea59d7" +dependencies = [ + "base64 0.9.3", + "bytes 0.4.12", + "futures", + "futures-cpupool", + "httparse", + "iovec", + "language-tags", + "log 0.4.8", + "mime", + "net2", + "percent-encoding 1.0.1", + "relay", + "time", + "tokio-core", + "tokio-io", + "tokio-proto", + "tokio-service", + "unicase", + "want 0.0.4", ] [[package]] name = "hyper" version = "0.12.35" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", - "http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.9 (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.11 (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.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", - "want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +checksum = "9dbe6ed1438e1f8ad955a4701e9a944938e9519f6888d12d8558b645e247d5f6" +dependencies = [ + "bytes 0.4.12", + "futures", + "futures-cpupool", + "h2", + "http", + "http-body", + "httparse", + "iovec", + "itoa", + "log 0.4.8", + "net2", + "rustc_version", + "time", + "tokio", + "tokio-buf", + "tokio-executor", + "tokio-io", + "tokio-reactor", + "tokio-tcp", + "tokio-threadpool", + "tokio-timer", + "want 0.2.0", ] [[package]] name = "hyper-tls" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a800d6aa50af4b5850b2b0f659625ce9504df908e9733b635720483be26174f" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", - "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures", + "hyper 0.12.35", + "native-tls", + "tokio-io", ] [[package]] name = "idna" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" 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.11 (registry+https://github.com/rust-lang/crates.io-index)", + "matches", + "unicode-bidi", + "unicode-normalization", ] [[package]] name = "idna" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" 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.11 (registry+https://github.com/rust-lang/crates.io-index)", + "matches", + "unicode-bidi", + "unicode-normalization", ] [[package]] name = "im" version = "12.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de38d1511a0ce7677538acb1e31b5df605147c458e061b2cdb89858afb1cd182" dependencies = [ - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sized-chunks 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version", + "sized-chunks", + "typenum", ] [[package]] name = "includedir" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e97402f770a519ebea51b27131c3b6558cfd2375aff21294bad806bad91bf0b6" dependencies = [ - "flate2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", - "phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", + "flate2", + "phf", ] [[package]] name = "includedir_codegen" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af7d542be113fd84855692fb536c16cc4c09527724d1dca8953047d71cccadef" dependencies = [ - "flate2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", - "phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", - "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)", + "flate2", + "phf_codegen", + "walkdir", ] [[package]] name = "indexmap" -version = "1.3.0" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "076f042c5b7b98f31d205f1249267e12a6518c1481e9dae9764af19b707d2292" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.0", ] [[package]] name = "iovec" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] [[package]] name = "ipnetwork" version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3d862c86f7867f19b693ec86765e0252d82e53d4240b9b629815675a0714ad1" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", ] [[package]] name = "itertools" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484" dependencies = [ - "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "either", ] [[package]] name = "itoa" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e" [[package]] name = "jsonrpc-client-core" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29cb249837420fb0cee7fb0fbf1d22679e121b160e71bb5e0d90b9df241c23e" dependencies = [ - "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-core 8.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)", + "error-chain", + "futures", + "jsonrpc-core 8.0.1", + "log 0.4.8", + "serde", + "serde_json", ] [[package]] name = "jsonrpc-client-http" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e642eb74423b9dfcb4512fda167148746b76f788a823cd712fadf409f31d302" dependencies = [ - "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc-client-core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "error-chain", + "futures", + "hyper 0.11.27", + "jsonrpc-client-core", + "log 0.4.8", + "tokio-core", ] [[package]] name = "jsonrpc-core" version = "8.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddf83704f4e79979a424d1082dd2c1e52683058056c9280efa19ac5f6bc9033c" +dependencies = [ + "futures", + "log 0.3.9", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "jsonrpc-core" +version = "10.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc15eef5f8b6bef5ac5f7440a957ff95d036e2f98706947741bfc93d1976db4c" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)", + "futures", + "log 0.4.8", + "serde", + "serde_derive", + "serde_json", ] [[package]] name = "jsonrpc-core" version = "14.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe3b688648f1ef5d5072229e2d672ecb92cbff7d1c79bcf3fd5898f3f3df0970" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)", + "futures", + "log 0.4.8", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "jsonrpc-derive" +version = "10.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2dae61ca8a3b047fb11309b00661bc56837085bd07e46f907b9c562c0b03e68" +dependencies = [ + "proc-macro2 0.4.30", + "quote 0.6.13", + "syn 0.15.44", +] + +[[package]] +name = "jsonrpc-http-server" +version = "10.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d2a00824306155b8ef57fe957f31b8cd8ad24262f15cf911d84dcf9a3f206d" +dependencies = [ + "hyper 0.12.35", + "jsonrpc-core 10.1.0", + "jsonrpc-server-utils", + "log 0.4.8", + "net2", + "unicase", +] + +[[package]] +name = "jsonrpc-server-utils" +version = "10.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9527f01ef25f251d64082cbefc0c6d6f367349afe6848ef908a674e06b2bdd3" +dependencies = [ + "bytes 0.4.12", + "globset", + "jsonrpc-core 10.1.0", + "lazy_static", + "log 0.4.8", + "num_cpus", + "tokio", + "tokio-codec", + "unicase", ] [[package]] name = "keccak" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kernel32-sys" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 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)", + "winapi 0.2.8", + "winapi-build", ] [[package]] name = "language-tags" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.66" +version = "0.2.67" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb147597cdf94ed43ab7a9038716637d2d1bf2bc571da995d0028dec06bd3018" [[package]] name = "libloading" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" dependencies = [ - "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", + "winapi 0.3.8", ] [[package]] @@ -1461,10 +1681,10 @@ name = "librocksdb-sys" version = "5.18.3" source = "git+https://github.com/nervosnetwork/rust-rocksdb?rev=14d2991#14d2991fbfc5675a357542a44433738e9ebb9ea8" dependencies = [ - "bindgen 0.50.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", - "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "bindgen", + "cc", + "glob 0.2.11", + "libc", ] [[package]] @@ -1476,825 +1696,896 @@ source = "git+https://github.com/nervosnetwork/linked-hash-map?rev=df27f21#df27f name = "linked-hash-map" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" [[package]] name = "lock_api" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" 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)", + "owning_ref", + "scopeguard 0.3.3", ] [[package]] name = "lock_api" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79b2de95ecb4691949fea4716ca53cdbcfccb2c612e19644a8bad05edcf9f47b" dependencies = [ - "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 1.1.0", ] [[package]] name = "log" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" dependencies = [ - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8", ] [[package]] name = "log" version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", ] [[package]] name = "matches" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" [[package]] name = "maybe-uninit" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" [[package]] name = "memchr" -version = "2.2.1" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" [[package]] name = "memmap" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "winapi 0.3.8", ] [[package]] name = "memoffset" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75189eb85871ea5c2e2c15abbdd541185f63b408415e5051f5cac122d8c774b9" dependencies = [ - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version", ] [[package]] name = "merkle-cbt" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d589b5a7ca642540e7ccfbca3bcd0aa18693eb9287e2a6b17c79b1d062d52863" [[package]] name = "mime" version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" [[package]] name = "mime_guess" -version = "2.0.1" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2684d4c2e97d99848d30b324b00c8fcc7e5c897b7cbb5819b09e7c90e8baf212" dependencies = [ - "mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "mime", + "unicase", ] [[package]] name = "miniz_oxide" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa679ff6578b1cddee93d7e82e263b94a575e0bfced07284eb0c037c1d2416a5" dependencies = [ - "adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "adler32", ] [[package]] name = "mio" version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "302dec22bcf6bae6dfb69c647187f4b4d0fb6f535521f7bc022430ce8e12008f" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "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.4 (registry+https://github.com/rust-lang/crates.io-index)", - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "fuchsia-zircon", + "fuchsia-zircon-sys", + "iovec", + "kernel32-sys", + "libc", + "log 0.4.8", + "miow", + "net2", + "slab 0.4.2", + "winapi 0.2.8", ] [[package]] name = "mio-uds" version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" dependencies = [ - "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec", + "libc", + "mio", ] [[package]] name = "miow" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" 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)", + "kernel32-sys", + "net2", + "winapi 0.2.8", + "ws2_32-sys", ] [[package]] name = "molecule" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5492f99b99e29ec28391edf446abfe10dbc3ebc401c978f7c8ac9c0ef3b7cd93" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "faster-hex 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.5.4", + "cfg-if", + "faster-hex 0.4.1", ] [[package]] name = "native-tls" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b2df1a4c22fd44a62147fd8f13dd0f95c9d8ca7b2610299b2a2f9cf8964274e" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl 0.10.26 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.53 (registry+https://github.com/rust-lang/crates.io-index)", - "schannel 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", - "security-framework 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "security-framework-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", + "libc", + "log 0.4.8", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", ] [[package]] name = "net2" version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "libc", + "winapi 0.3.8", ] [[package]] name = "nix" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dbdc256eaac2e3bd236d93ad999d3479ef775c863dbda3068c4006a92eec51b" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", + "cc", + "cfg-if", + "libc", + "void", ] [[package]] name = "nom" version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" dependencies = [ - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr", + "version_check 0.1.5", ] [[package]] name = "num-integer" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f6ea62e9d81a77cd3ee9a2a5b9b609447857f3d358704331e4ef39eb247fcba" dependencies = [ - "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.0", + "num-traits", ] [[package]] name = "num-traits" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" dependencies = [ - "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.0", ] [[package]] name = "num_cpus" -version = "1.11.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46203554f085ff89c235cd12f7075f3233af9b11ed7c9e16dfe2560d03313ce6" dependencies = [ - "hermit-abi 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "hermit-abi", + "libc", ] [[package]] name = "numext-constructor" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "983983b13ec50f55d5b9536faa553d7fadaa12fae9e0dfda76ba74aebfcc7522" dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30", + "quote 0.6.13", + "syn 0.15.44", ] [[package]] name = "numext-fixed-uint" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84f38aa6a49599f6cf38edbf3af3da0eda190ed3f3889afa5f4cb13be5673259" dependencies = [ - "numext-fixed-uint-core 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "numext-fixed-uint-hack 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", + "numext-fixed-uint-core", + "numext-fixed-uint-hack", + "proc-macro-hack", ] [[package]] name = "numext-fixed-uint-core" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbae90b098c4ac5d5fd2fb48430c9141b7fac42e5fee31ee008c7880ec83adac" dependencies = [ - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "numext-constructor 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "failure", + "heapsize", + "numext-constructor", + "rand 0.5.6", + "serde", ] [[package]] name = "numext-fixed-uint-hack" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aba196a4ea541560fb7e44d328c87f25f024c727eeb09df4bb53610a575cfed7" dependencies = [ - "numext-fixed-uint-core 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", + "numext-fixed-uint-core", + "proc-macro-hack", + "proc-macro2 0.4.30", + "quote 0.6.13", + "syn 0.15.44", ] [[package]] name = "numtoa" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" [[package]] name = "opaque-debug" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" [[package]] name = "openssl" -version = "0.10.26" +version = "0.10.28" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "973293749822d7dd6370d6da1e523b0d1db19f06c459134c658b2a4261378b52" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cfg-if 0.1.10 (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.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "openssl-sys 0.9.53 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", + "cfg-if", + "foreign-types", + "lazy_static", + "libc", + "openssl-sys", ] [[package]] name = "openssl-probe" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" [[package]] name = "openssl-sys" -version = "0.9.53" +version = "0.9.54" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1024c0a59774200a555087a6da3f253a9095a5f344e353b212ac4c8b8e450986" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", - "vcpkg 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.0", + "cc", + "libc", + "pkg-config", + "vcpkg", ] -[[package]] -name = "ordermap" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "owning_ref" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ff55baddef9e4ad00f88b6c743a2a8062d4c6ade126c2a528644b8e444d52ce" dependencies = [ - "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "stable_deref_trait", ] [[package]] name = "parity-multiaddr" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b574ca9f0c0235c04de4c5110542959f64c9b8882f638b70f6c6be52c75bdc46" dependencies = [ - "arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "bs58 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "data-encoding 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-multihash 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "unsigned-varint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayref", + "bs58", + "byteorder", + "bytes 0.4.12", + "data-encoding", + "parity-multihash", + "serde", + "unsigned-varint", + "url 1.7.2", ] [[package]] name = "parity-multihash" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3a17dc27848fd99e4f87eb0f8c9baba6ede0a6d555400c850ca45254ef4ce3" dependencies = [ - "blake2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "sha-1 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "unsigned-varint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2", + "bytes 0.4.12", + "rand 0.6.5", + "sha-1", + "sha2", + "sha3", + "unsigned-varint", ] [[package]] name = "parking_lot" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" 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)", + "lock_api 0.1.5", + "parking_lot_core 0.4.0", ] [[package]] name = "parking_lot" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" dependencies = [ - "lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "lock_api 0.3.3", + "parking_lot_core 0.6.2", + "rustc_version", ] [[package]] name = "parking_lot_core" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" dependencies = [ - "backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "petgraph 0.4.13 (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.13 (registry+https://github.com/rust-lang/crates.io-index)", - "thread-id 3.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "rand 0.6.5", + "rustc_version", + "smallvec 0.6.13", + "winapi 0.3.8", ] [[package]] name = "parking_lot_core" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (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.13 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "cloudabi", + "libc", + "redox_syscall", + "rustc_version", + "smallvec 0.6.13", + "winapi 0.3.8", ] [[package]] name = "pbkdf2" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9" dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", + "crypto-mac", ] [[package]] name = "peeking_take_while" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" [[package]] name = "percent-encoding" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" [[package]] name = "percent-encoding" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "petgraph" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "fixedbitset 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", -] +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" [[package]] name = "phf" version = "0.7.24" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3da44b85f8e8dfaec21adae67f95d93244b2ecf6ad2a692320598dcc8e6dd18" dependencies = [ - "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", + "phf_shared", ] [[package]] name = "phf_codegen" version = "0.7.24" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b03e85129e324ad4166b06b2c7491ae27fe3ec353af72e72cd1654c7225d517e" dependencies = [ - "phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", - "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", + "phf_generator", + "phf_shared", ] [[package]] name = "phf_generator" version = "0.7.24" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09364cc93c159b8b06b1f4dd8a4398984503483891b0c26b867cf431fb132662" dependencies = [ - "phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "phf_shared", + "rand 0.6.5", ] [[package]] name = "phf_shared" version = "0.7.24" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0" dependencies = [ - "siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "siphasher", ] [[package]] name = "pkg-config" version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677" [[package]] name = "plain" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "ppv-lite86" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b" [[package]] name = "proc-macro-hack" version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecd45702f76d6d3c75a80564378ae228a85f0b59d2f3ed43c91b4a69eb2ebfc5" dependencies = [ - "proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.9", + "quote 1.0.2", + "syn 1.0.16", ] [[package]] name = "proc-macro2" version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" dependencies = [ - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.1.0", ] [[package]] name = "proc-macro2" -version = "1.0.7" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c09721c6781493a2a492a96b5a5bf19b65917fe6728884e7c44dd0c60ca3435" dependencies = [ - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.2.0", ] [[package]] name = "publicsuffix" version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bbaa49075179162b49acac1c6aa45fb4dafb5f13cf6794276d77bc7fd95757b" dependencies = [ - "error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", - "idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "error-chain", + "idna 0.2.0", + "lazy_static", + "regex", + "url 2.1.1", ] [[package]] name = "quick-error" version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" [[package]] name = "quote" version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30", ] [[package]] name = "quote" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" dependencies = [ - "proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.9", ] [[package]] name = "rand" version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "rand 0.4.6", ] [[package]] name = "rand" version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" dependencies = [ - "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (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.8 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng", + "libc", + "rand_core 0.3.1", + "rdrand", + "winapi 0.3.8", ] [[package]] name = "rand" version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9" 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.66 (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.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cloudabi", + "fuchsia-cprng", + "libc", + "rand_core 0.3.1", + "winapi 0.3.8", ] [[package]] name = "rand" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (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.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "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.8 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7", + "libc", + "rand_chacha 0.1.1", + "rand_core 0.4.2", + "rand_hc 0.1.0", + "rand_isaac", + "rand_jitter", + "rand_os", + "rand_pcg", + "rand_xorshift", + "winapi 0.3.8", ] [[package]] name = "rand" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" dependencies = [ - "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom", + "libc", + "rand_chacha 0.2.1", + "rand_core 0.5.1", + "rand_hc 0.2.0", ] [[package]] name = "rand_chacha" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7", + "rand_core 0.3.1", ] [[package]] name = "rand_chacha" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" dependencies = [ - "c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "c2-chacha", + "rand_core 0.5.1", ] [[package]] name = "rand_core" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" dependencies = [ - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2", ] [[package]] name = "rand_core" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" [[package]] name = "rand_core" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" dependencies = [ - "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom", ] [[package]] name = "rand_hc" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "rand_hc" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" dependencies = [ - "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1", ] [[package]] name = "rand_isaac" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "rand_jitter" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "rand_core 0.4.2", + "winapi 0.3.8", ] [[package]] name = "rand_os" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" 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.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cloudabi", + "fuchsia-cprng", + "libc", + "rand_core 0.4.2", + "rdrand", + "winapi 0.3.8", ] [[package]] name = "rand_pcg" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7", + "rand_core 0.4.2", ] [[package]] name = "rand_xorshift" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "rayon" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db6ce3297f9c85e16621bb8cca38a06779ffc31bb8184e1be4bed2be4678a098" dependencies = [ - "crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rayon-core 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque", + "either", + "rayon-core", ] [[package]] name = "rayon-core" version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08a89b46efaf957e52b18062fb2f4660f8b8a4dde1807ca002690868ef2c85a9" dependencies = [ - "crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-queue 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque", + "crossbeam-queue", + "crossbeam-utils 0.7.2", + "lazy_static", + "num_cpus", ] [[package]] name = "rdrand" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "redox_syscall" version = "0.1.56" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" [[package]] name = "redox_termios" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" dependencies = [ - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall", ] [[package]] name = "redox_users" -version = "0.3.1" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b23093265f8d200fa7b4c2c76297f47e681c655f6f1285a8780d6a022f7431" dependencies = [ - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "rust-argon2 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom", + "redox_syscall", + "rust-argon2", ] [[package]] name = "regex" -version = "1.3.3" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "322cf97724bea3ee221b78fe25ac9c46114ebb51747ad5babd51a2fc6a8235a8" dependencies = [ - "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick", + "memchr", + "regex-syntax", + "thread_local", ] [[package]] name = "regex-syntax" -version = "0.6.13" +version = "0.6.16" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1132f845907680735a84409c3bebc64d1364a5683ffbce899550cd09d5eaefc1" [[package]] name = "relay" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1576e382688d7e9deecea24417e350d3062d97e32e45d70b1cde65994ff1489a" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "futures", ] [[package]] name = "remove_dir_all" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8", ] [[package]] name = "reqwest" version = "0.9.24" source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "encoding_rs 0.8.22 (registry+https://github.com/rust-lang/crates.io-index)", - "flate2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", - "mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.9 (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.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", +checksum = "f88643aea3c1343c804950d7bf983bd2067f5ab59db6d613a08e05572f2714ab" +dependencies = [ + "base64 0.10.1", + "bytes 0.4.12", + "cookie", + "cookie_store", + "encoding_rs", + "flate2", + "futures", + "http", + "hyper 0.12.35", + "hyper-tls", + "log 0.4.8", + "mime", + "mime_guess", + "native-tls", + "serde", + "serde_json", + "serde_urlencoded", + "time", + "tokio", + "tokio-executor", + "tokio-io", + "tokio-threadpool", + "tokio-timer", + "url 1.7.2", + "uuid", + "winreg", ] [[package]] @@ -2302,1387 +2593,1123 @@ name = "rocksdb" version = "0.12.2" source = "git+https://github.com/nervosnetwork/rust-rocksdb?rev=14d2991#14d2991fbfc5675a357542a44433738e9ebb9ea8" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "librocksdb-sys 5.18.3 (git+https://github.com/nervosnetwork/rust-rocksdb?rev=14d2991)", + "libc", + "librocksdb-sys", ] [[package]] name = "rpassword" version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34fa7bcae7fca3c8471e8417088bbc3ad9af8066b0ecf4f3c0d98a0d772716e" dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys", + "libc", + "winapi 0.2.8", ] [[package]] name = "rust-argon2" -version = "0.5.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bc8af4bda8e1ff4932523b94d3dd20ee30a87232323eda55903ffd71d2fb017" dependencies = [ - "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "blake2b_simd 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.11.0", + "blake2b_simd", + "constant_time_eq", + "crossbeam-utils 0.7.2", ] [[package]] name = "rustc-demangle" version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" [[package]] name = "rustc_version" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" dependencies = [ - "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "semver", ] [[package]] name = "rustyline" version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f47ea1ceb347d2deae482d655dc8eef4bd82363d3329baffa3818bd76fea48b" dependencies = [ - "dirs 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "nix 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-segmentation 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "utf8parse 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "dirs", + "libc", + "log 0.4.8", + "memchr", + "nix", + "unicode-segmentation", + "unicode-width", + "utf8parse", + "winapi 0.3.8", ] [[package]] name = "ryu" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8" [[package]] name = "safemem" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" [[package]] name = "same-file" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" dependencies = [ - "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util", ] [[package]] name = "schannel" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507a9e6e8ffe0a4e0ebb9a10293e62fdf7657c06f1b8bb07a8fcf697d2abf295" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", + "winapi 0.3.8", ] [[package]] name = "scoped-tls" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "332ffa32bf586782a3efaeb58f127980944bbc8c4d6913a86107ac2a5ab24b28" [[package]] name = "scopeguard" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" [[package]] name = "scopeguard" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "scroll" -version = "0.9.2" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb2332cb595d33f7edd5700f4cbf94892e680c7f0ae56adab58a35190b66cb1" dependencies = [ - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "scroll_derive 0.9.5 (registry+https://github.com/rust-lang/crates.io-index)", + "scroll_derive", ] [[package]] name = "scroll_derive" -version = "0.9.5" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8584eea9b9ff42825b46faf46a8c24d2cff13ec152fa2a50df788b87c07ee28" dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.9", + "quote 1.0.2", + "syn 1.0.16", ] [[package]] name = "scrypt" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "656c79d0e90d0ab28ac86bf3c3d10bfbbac91450d3f190113b4e76d9fec3cfdd" dependencies = [ - "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.9.3", + "byte-tools", + "byteorder", + "hmac", + "pbkdf2", + "rand 0.5.6", + "sha2", + "subtle", ] [[package]] name = "secp256k1" version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d311229f403d64002e9eed9964dfa5a0a0c1ac443344f7546bf48e916c6053a" dependencies = [ - "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", + "rand 0.6.5", ] [[package]] name = "security-framework" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ef2429d7cefe5fd28bd1d2ed41c944547d4ff84776f5935b456da44593a16df" dependencies = [ - "core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "security-framework-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", ] [[package]] name = "security-framework-sys" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31493fc37615debb8c5090a7aeb4a9730bc61e77ab10b9af59f1a202284f895" dependencies = [ - "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "core-foundation-sys", ] [[package]] name = "semver" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" dependencies = [ - "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "semver-parser", ] [[package]] name = "semver-parser" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "sentry" version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "509c5fbb9e875fafcd9c4612c0e49d476083b848bf87380cfe1126ebc745c140" dependencies = [ - "backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "hostname 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "httpdate 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "im 12.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "reqwest 0.9.24 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "sentry-types 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "uname 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace", + "env_logger", + "failure", + "hostname", + "httpdate", + "im", + "lazy_static", + "libc", + "log 0.4.8", + "rand 0.6.5", + "regex", + "reqwest", + "rustc_version", + "sentry-types", + "uname", + "url 1.7.2", ] [[package]] name = "sentry-types" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b23e3d9c8c6e4a1523f24df6753c4088bfe16c44a73c8881c1d23c70f28ae280" dependencies = [ - "chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "debugid 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url_serde 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono", + "debugid", + "failure", + "serde", + "serde_json", + "url 1.7.2", + "url_serde", + "uuid", ] [[package]] name = "serde" version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449" dependencies = [ - "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive", ] [[package]] name = "serde_derive" version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64" dependencies = [ - "proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.9", + "quote 1.0.2", + "syn 1.0.16", ] [[package]] name = "serde_json" -version = "1.0.44" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9371ade75d4c2d6cb154141b9752cf3781ec9c05e0e5cf35060e1e70ee7b9c25" dependencies = [ - "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "itoa", + "ryu", + "serde", ] [[package]] name = "serde_urlencoded" version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "642dd69105886af2efd227f75a520ec9b44a820d65bc133a9131f7d229fd165a" dependencies = [ - "dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "dtoa", + "itoa", + "serde", + "url 1.7.2", ] [[package]] name = "serde_yaml" version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "691b17f19fc1ec9d94ec0b5864859290dff279dbd7b03f017afda54eb36c3c35" dependencies = [ - "dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "dtoa", + "linked-hash-map 0.5.2", + "serde", + "yaml-rust", ] [[package]] name = "sha-1" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" dependencies = [ - "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "block-buffer", + "digest", + "fake-simd", + "opaque-debug", ] [[package]] name = "sha2" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0" dependencies = [ - "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "block-buffer", + "digest", + "fake-simd", + "opaque-debug", ] [[package]] name = "sha3" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf" dependencies = [ - "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "keccak 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "block-buffer", + "byte-tools", + "digest", + "keccak", + "opaque-debug", ] [[package]] name = "shell-words" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39acde55a154c4cd3ae048ac78cc21c25f3a0145e44111b523279113dce0d94a" [[package]] name = "shlex" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" [[package]] name = "siphasher" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" [[package]] name = "sized-chunks" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d3e7f23bad2d6694e0f46f5e470ec27eb07b8f3e8b309a4b0dc17501928b9f2" dependencies = [ - "typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", + "typenum", ] [[package]] name = "slab" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17b4fcaed89ab08ef143da37bc52adbcc04d4a69014f4c1208d6b51f0c47bc23" [[package]] name = "slab" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" [[package]] name = "smallvec" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c8cbcd6df1e117c2210e13ab5109635ad68a929fcbb8964dc965b76cb5ee013" [[package]] name = "smallvec" version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" dependencies = [ - "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "maybe-uninit", ] [[package]] name = "smallvec" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c2fb2ec9bcd216a5b0d0ccf31ab17b5ed1d627960edff65bbe95d3ce221cefc" [[package]] name = "stable_deref_trait" version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" [[package]] name = "stream-cipher" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8131256a5896cabcf5eb04f4d6dacbe1aefda854b0d9896e09cb58829ec5638c" dependencies = [ - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array", ] [[package]] name = "string" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", ] [[package]] name = "strsim" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "subtle" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" [[package]] name = "syn" version = "0.11.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" dependencies = [ - "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", - "synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.3.15", + "synom", + "unicode-xid 0.0.4", ] [[package]] name = "syn" version = "0.15.44" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 0.4.30", + "quote 0.6.13", + "unicode-xid 0.1.0", ] [[package]] name = "syn" -version = "1.0.13" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "123bd9499cfb380418d509322d7a6d52e5315f064fe4b3ad18a53d6b92c07859" dependencies = [ - "proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.9", + "quote 1.0.2", + "unicode-xid 0.2.0", ] [[package]] name = "synom" version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" dependencies = [ - "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.0.4", ] [[package]] name = "synstructure" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545" dependencies = [ - "proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.9", + "quote 1.0.2", + "syn 1.0.16", + "unicode-xid 0.2.0", ] [[package]] name = "take" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b157868d8ac1f56b64604539990685fa7611d8fa9e5476cf0c02cf34d32917c5" [[package]] name = "tempfile" version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "libc", + "rand 0.7.3", + "redox_syscall", + "remove_dir_all", + "winapi 0.3.8", ] [[package]] name = "termcolor" -version = "1.0.5" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f" dependencies = [ - "wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util", ] [[package]] name = "termion" -version = "1.5.4" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22cec9d8978d906be5ac94bceb5a010d885c626c4c8855721a4dbd20e3ac905" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "numtoa", + "redox_syscall", + "redox_termios", ] [[package]] name = "textwrap" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" dependencies = [ - "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "thread-id" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width", ] [[package]] name = "thread_local" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", ] [[package]] name = "time" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "redox_syscall", + "winapi 0.3.8", ] [[package]] name = "tiny-keccak" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d8a021c69bb74a44ccedb824a046447e2c84a01df9e5c20779750acb38e11b2" dependencies = [ - "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy", ] [[package]] name = "tokio" version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.9 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-sync 0.1.7 (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.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-udp 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures", + "mio", + "num_cpus", + "tokio-codec", + "tokio-current-thread", + "tokio-executor", + "tokio-fs", + "tokio-io", + "tokio-reactor", + "tokio-sync", + "tokio-tcp", + "tokio-threadpool", + "tokio-timer", + "tokio-udp", + "tokio-uds", ] [[package]] name = "tokio-buf" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "either", + "futures", ] [[package]] name = "tokio-codec" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures", + "tokio-io", ] [[package]] name = "tokio-core" version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aeeffbbb94209023feaef3c196a41cbcdafa06b4a6f893f68779bb5e53796f71" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", - "scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.9 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-timer 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures", + "iovec", + "log 0.4.8", + "mio", + "scoped-tls", + "tokio", + "tokio-executor", + "tokio-io", + "tokio-reactor", + "tokio-timer", ] [[package]] name = "tokio-current-thread" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-executor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "futures", + "tokio-executor", ] [[package]] name = "tokio-executor" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" dependencies = [ - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.2", + "futures", ] [[package]] name = "tokio-fs" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4" dependencies = [ - "futures 0.1.29 (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.17 (registry+https://github.com/rust-lang/crates.io-index)", + "futures", + "tokio-io", + "tokio-threadpool", ] [[package]] name = "tokio-io" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures", + "log 0.4.8", ] [[package]] name = "tokio-proto" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fbb47ae81353c63c487030659494b295f6cb6576242f907f203473b191b0389" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "take 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures", + "log 0.3.9", + "net2", + "rand 0.3.23", + "slab 0.3.0", + "smallvec 0.2.1", + "take", + "tokio-core", + "tokio-io", + "tokio-service", ] [[package]] name = "tokio-reactor" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" dependencies = [ - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.9.0 (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.9 (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.7 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.2", + "futures", + "lazy_static", + "log 0.4.8", + "mio", + "num_cpus", + "parking_lot 0.9.0", + "slab 0.4.2", + "tokio-executor", + "tokio-io", + "tokio-sync", ] [[package]] name = "tokio-service" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24da22d077e0f15f55162bdbdc661228c1581892f52074fb242678d015b45162" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "futures", ] [[package]] name = "tokio-sync" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" dependencies = [ - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv", + "futures", ] [[package]] name = "tokio-tcp" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.21 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures", + "iovec", + "mio", + "tokio-io", + "tokio-reactor", ] [[package]] name = "tokio-threadpool" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89" dependencies = [ - "crossbeam-deque 0.7.2 (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.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.11.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.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque", + "crossbeam-queue", + "crossbeam-utils 0.7.2", + "futures", + "lazy_static", + "log 0.4.8", + "num_cpus", + "slab 0.4.2", + "tokio-executor", ] [[package]] name = "tokio-timer" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296" dependencies = [ - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (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.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.2", + "futures", + "slab 0.4.2", + "tokio-executor", ] [[package]] name = "tokio-udp" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.21 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures", + "log 0.4.8", + "mio", + "tokio-codec", + "tokio-io", + "tokio-reactor", ] [[package]] name = "tokio-uds" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5076db410d6fdc6523df7595447629099a1fdc47b3d9f896220780fa48faf798" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.21 (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.11 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.12", + "futures", + "iovec", + "libc", + "log 0.4.8", + "mio", + "mio-uds", + "tokio-codec", + "tokio-io", + "tokio-reactor", ] [[package]] name = "toml" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", ] [[package]] name = "try-lock" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee2aa4715743892880f70885373966c83d73ef1b0838a664ef0c76fffd35e7c2" [[package]] name = "try-lock" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" [[package]] name = "try_from" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "283d3b89e1368717881a9d51dad843cc435380d8109c9e47d38780a324698d8b" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", ] [[package]] name = "tui" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73b422ff4986065d33272b587907654f918a3fe8702786a8110bf68dede0d8ee" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cassowary 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "termion 1.5.4 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-segmentation 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", + "cassowary", + "either", + "itertools", + "log 0.4.8", + "termion", + "unicode-segmentation", + "unicode-width", ] [[package]] name = "typenum" version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9" [[package]] name = "uname" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b72f89f0ca32e4db1c04e2a72f5345d59796d4866a1ee0609084569f73683dc8" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] [[package]] name = "unicase" version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" dependencies = [ - "version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.9.1", ] [[package]] name = "unicode-bidi" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" dependencies = [ - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "matches", ] [[package]] name = "unicode-normalization" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5479532badd04e128284890390c1e876ef7a993d0570b3597ae43dfa1d59afa4" dependencies = [ - "smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0", ] [[package]] name = "unicode-segmentation" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0" [[package]] name = "unicode-width" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479" [[package]] name = "unicode-xid" version = "0.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" [[package]] name = "unicode-xid" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" [[package]] name = "unicode-xid" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" [[package]] name = "unsigned-varint" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7f0023a96687fe169081e8adce3f65e3874426b7886e9234d490af2dc077959" [[package]] name = "url" version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" 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)", + "idna 0.1.5", + "matches", + "percent-encoding 1.0.1", ] [[package]] name = "url" version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb" dependencies = [ - "idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "idna 0.2.0", + "matches", + "percent-encoding 2.1.0", ] [[package]] name = "url_serde" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74e7d099f1ee52f823d4bdd60c93c3602043c728f5db3b97bdb548467f7bddea" dependencies = [ - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", + "url 1.7.2", ] [[package]] name = "utf8parse" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8772a4ccbb4e89959023bc5b7cb8623a795caa7092d99f3aa9501b9484d4557d" [[package]] name = "uuid" version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" dependencies = [ - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5", + "serde", ] [[package]] name = "vcpkg" version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fc439f2794e98976c88a2a2dafce96b930fe8010b0a256b3c2199a773933168" [[package]] name = "vec_map" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" [[package]] name = "version_check" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" [[package]] name = "version_check" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce" [[package]] name = "void" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "walkdir" -version = "2.2.9" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" dependencies = [ - "same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "same-file", + "winapi 0.3.8", + "winapi-util", ] [[package]] name = "want" version = "0.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a05d9d966753fa4b5c8db73fcab5eed4549cfe0e1e4e66911e5564a0085c35d1" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "try-lock 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures", + "log 0.4.8", + "try-lock 0.1.0", ] [[package]] name = "want" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" dependencies = [ - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures", + "log 0.4.8", + "try-lock 0.2.2", ] [[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" [[package]] name = "which" version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b57acb10231b9493c8472b20cb57317d0679a49e0bdbee44b3b803a6473af164" dependencies = [ - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "failure", + "libc", ] [[package]] name = "winapi" version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" [[package]] name = "winapi" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" 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)", + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", ] [[package]] name = "winapi-build" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ccfbf554c6ad11084fb7517daca16cfdcaccbdadba4fc336f032a8b12c2ad80" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8", ] [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "wincolor" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", -] +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winreg" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8", ] [[package]] name = "winutil" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7daf138b6b14196e3830a588acf1e86966c694d3e8fb026fb105b8b5dca07e6e" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8", ] [[package]] name = "ws2_32-sys" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 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)", + "winapi 0.2.8", + "winapi-build", ] [[package]] name = "yaml-rust" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65923dd1784f44da1d2c3dbbc5e822045628c590ba72123e1c73d3c230c4434d" dependencies = [ - "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[metadata] -"checksum adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2" -"checksum aes-ctr 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d2e5b0458ea3beae0d1d8c0f3946564f8e10f90646cf78c06b4351052058d1ee" -"checksum aes-soft 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cfd7e7ae3f9a1fb5c03b389fc6bb9a51400d0c13053f0dca698c832bfd893a0d" -"checksum aesni 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2f70a6b5f971e473091ab7cfb5ffac6cde81666c4556751d8d5620ead8abf100" -"checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d" -"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" -"checksum ansi_term 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -"checksum arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee" -"checksum arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" -"checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -"checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" -"checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" -"checksum backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)" = "924c76597f0d9ca25d762c25a4d369d51267536465dc5064bdf0eb073ed477ea" -"checksum backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6575f128516de27e3ce99689419835fce9643a9b215a14d2b5b685be018491" -"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" -"checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" -"checksum bech32 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "58946044516aa9dc922182e0d6e9d124a31aafe6b421614654eb27cf90cec09c" -"checksum bincode 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5753e2a71534719bf3f4e57006c3a4f0d2c672a4b676eec84161f763eca87dbf" -"checksum bindgen 0.50.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cb0e5a5f74b2bafe0b39379f616b5975e08bcaca4e779c078d5c31324147e9ba" -"checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb" -"checksum bitcoin_hashes 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2b7a2e9773ee7ae7f2560f0426c938f57902dcb9e39321b0cbd608f47ed579a4" -"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" -"checksum blake2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "94cb07b0da6a73955f8fb85d24c466778e70cda767a568229b104f0264089330" -"checksum blake2b-rs 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6e35e362830ef90ecea16f09b21b75d22d33a8562a679c74ab4f4fa49b4fcb87" -"checksum blake2b_simd 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)" = "d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a" -"checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" -"checksum block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1c924d49bd09e7c06003acda26cd9742e796e34282ec6c1189404dee0c1f4774" -"checksum block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" -"checksum bs58 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c95ee6bba9d950218b6cc910cf62bc9e0a171d0f4537e3627b0f54d08549b188" -"checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" -"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" -"checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" -"checksum c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb" -"checksum cassowary 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" -"checksum cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)" = "8dae9c4b8fedcae85592ba623c4fd08cfdab3e3b72d6df780c6ead964a69bfff" -"checksum cexpr 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "fce5b5fb86b0c57c20c834c1b412fd09c77c8a59b9473f86272709e78874cd1d" -"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" -"checksum chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "31850b4a4d6bae316f7a09e691c944c28299298837edc0a03f755618c23cbc01" -"checksum ckb-build-info 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)" = "" -"checksum ckb-chain-spec 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)" = "" -"checksum ckb-crypto 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)" = "" -"checksum ckb-dao-utils 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)" = "" -"checksum ckb-error 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)" = "" -"checksum ckb-fixed-hash 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)" = "" -"checksum ckb-fixed-hash-core 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)" = "" -"checksum ckb-fixed-hash-hack 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)" = "" -"checksum ckb-hash 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)" = "" -"checksum ckb-jsonrpc-types 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)" = "" -"checksum ckb-logger 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)" = "" -"checksum ckb-occupied-capacity 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)" = "" -"checksum ckb-occupied-capacity-core 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)" = "" -"checksum ckb-occupied-capacity-macros 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)" = "" -"checksum ckb-pow 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)" = "" -"checksum ckb-rational 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)" = "" -"checksum ckb-resource 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)" = "" -"checksum ckb-script 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)" = "" -"checksum ckb-script-data-loader 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)" = "" -"checksum ckb-system-scripts 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "261dd95a93c09ea24397c85b4fbca061e1da2d6573189749aeb99fe840aaf0c9" -"checksum ckb-types 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)" = "" -"checksum ckb-util 0.27.1-pre (git+https://github.com/nervosnetwork/ckb?tag=v0.27.1-rc1)" = "" -"checksum ckb-vm 0.18.2 (registry+https://github.com/rust-lang/crates.io-index)" = "684aca846d958bc5c2196b10839b69ec573cc693b14dc701986adda123ffbef0" -"checksum ckb-vm-definitions 0.18.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5b4a65696efd8974a3c785619f2bfc4c40f2cf318ac184c30aa72d0f539a4a4f" -"checksum clang-sys 0.28.1 (registry+https://github.com/rust-lang/crates.io-index)" = "81de550971c976f176130da4b2978d3b524eaa0fd9ac31f3ceb5ae1231fb4853" -"checksum clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9" -"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -"checksum colored 1.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f930f8b286023ed451756fe2527d73484d667adf9e905e9932e81d52996a343a" -"checksum constant_time_eq 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "995a44c877f9212528ccc74b21a232f66ad69001e40ede5bcee2ac9ef2657120" -"checksum cookie 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "888604f00b3db336d2af898ec3c1d5d0ddf5e6d462220f2ededc33a87ac4bbd5" -"checksum cookie_store 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "46750b3f362965f197996c4448e4a0935e791bf7d6631bfce9ee0af3d24c919c" -"checksum core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d" -"checksum core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" -"checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" -"checksum crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c8ec7fcd21571dc78f96cc96243cab8d8f035247c3efd16c687be154c3fa9efa" -"checksum crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c3aa945d63861bfe624b55d153a39684da1e8c0bc8fba932f7ee3a3c16cea3ca" -"checksum crossbeam-epoch 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5064ebdbf05ce3cb95e45c8b086f72263f4166b29b97f6baff7ef7fe047b55ac" -"checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" -"checksum crossbeam-queue 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c695eeca1e7173472a32221542ae469b3e9aac3a4fc81f7696bcad82029493db" -"checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" -"checksum crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ce446db02cdc3165b94ae73111e570793400d0794e46125cc4056c81cbb039f4" -"checksum crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" -"checksum crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" -"checksum ctr 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "022cd691704491df67d25d006fe8eca083098253c4d43516c2206479c58c6736" -"checksum data-encoding 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f4f47ca1860a761136924ddd2422ba77b2ea54fe8cc75b9040804a0d9d32ad97" -"checksum debugid 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "088c9627adec1e494ff9dea77377f1e69893023d631254a0ec68b16ee20be3e9" -"checksum derive_more 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a141330240c921ec6d074a3e188a7c7ef95668bb95e7d44fa0e5778ec2a7afe" -"checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -"checksum dirs 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" -"checksum dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ea57b42383d091c85abcc2706240b94ab2a8fa1fc81c10ff23c4de06e2a90b5e" -"checksum eaglesong 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8d978bd5d343e8ab9b5c0fc8d93ff9c602fdc96616ffff9c05ac7a155419b824" -"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" -"checksum encoding_rs 0.8.22 (registry+https://github.com/rust-lang/crates.io-index)" = "cd8d03faa7fe0c1431609dfad7bbe827af30f82e1e2ae6f7ee4fca6bd764bc28" -"checksum enum-display-derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "53f76eb63c4bfc6fce5000f106254701b741fc9a65ee08445fde0ff39e583f1c" -"checksum env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3" -"checksum error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3ab49e9dcb602294bc42f9a7dfc9bc6e936fca4418ea300dbfb84fe16de0b7d9" -"checksum failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f8273f13c977665c5db7eb2b99ae520952fe5ac831ae4cd09d80c4c7042b5ed9" -"checksum failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0bc225b78e0391e4b8683440bf2e63c2deeeb2ce5189eab46e2b68c6d3725d08" -"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" -"checksum faster-hex 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b8cccaafb5aae8c282692e5590f341925edea6c696e8715ff0d973320b2646" -"checksum faster-hex 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "348138dd23e03bb0018caef99647fb1a5befec5ff4b501991de88f09854d4c28" -"checksum fixedbitset 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "86d4de0081402f5e88cdac65c8dcdcc73118c1a7a465e2a05f0da05843a8ea33" -"checksum flate2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6bd6d6f4752952feb71363cffc9ebac9411b75b87c6ab6058c40c8900cf43c0f" -"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.29 (registry+https://github.com/rust-lang/crates.io-index)" = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef" -"checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" -"checksum fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -"checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" -"checksum getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" -"checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" -"checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" -"checksum goblin 0.0.24 (registry+https://github.com/rust-lang/crates.io-index)" = "e3fa261d919c1ae9d1e4533c4a2f99e10938603c4208d56c05bec7a872b661b0" -"checksum h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" -"checksum heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1679e6ea370dee694f91f1dc469bf94cf8f52051d147aec3e1f9497c6fc22461" -"checksum hermit-abi 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "eff2656d88f158ce120947499e971d743c05dbcbed62e5bd2f38f1698bbc3772" -"checksum hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" -"checksum hostname 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "21ceb46a83a85e824ef93669c8b390009623863b5c195d1ba747292c0c72f94e" -"checksum http 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)" = "d6ccf5ede3a895d8856620237b2f02972c1bbc78d2965ad7fe8838d4a0ed41f0" -"checksum http-body 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6741c859c1b2463a423a1dbce98d418e6c3c3fc720fb0d45528657320920292d" -"checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" -"checksum httpdate 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" -"checksum humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" -"checksum hyper 0.11.27 (registry+https://github.com/rust-lang/crates.io-index)" = "34a590ca09d341e94cddf8e5af0bbccde205d5fbc2fa3c09dd67c7f85cea59d7" -"checksum hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)" = "9dbe6ed1438e1f8ad955a4701e9a944938e9519f6888d12d8558b645e247d5f6" -"checksum hyper-tls 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3a800d6aa50af4b5850b2b0f659625ce9504df908e9733b635720483be26174f" -"checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" -"checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" -"checksum im 12.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "de38d1511a0ce7677538acb1e31b5df605147c458e061b2cdb89858afb1cd182" -"checksum includedir 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e97402f770a519ebea51b27131c3b6558cfd2375aff21294bad806bad91bf0b6" -"checksum includedir_codegen 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "af7d542be113fd84855692fb536c16cc4c09527724d1dca8953047d71cccadef" -"checksum indexmap 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712d7b3ea5827fcb9d4fda14bf4da5f136f0db2ae9c8f4bd4e2d1c6fde4e6db2" -"checksum iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" -"checksum ipnetwork 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b3d862c86f7867f19b693ec86765e0252d82e53d4240b9b629815675a0714ad1" -"checksum itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484" -"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" -"checksum jsonrpc-client-core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f29cb249837420fb0cee7fb0fbf1d22679e121b160e71bb5e0d90b9df241c23e" -"checksum jsonrpc-client-http 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2e642eb74423b9dfcb4512fda167148746b76f788a823cd712fadf409f31d302" -"checksum jsonrpc-core 14.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fe3b688648f1ef5d5072229e2d672ecb92cbff7d1c79bcf3fd5898f3f3df0970" -"checksum jsonrpc-core 8.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ddf83704f4e79979a424d1082dd2c1e52683058056c9280efa19ac5f6bc9033c" -"checksum keccak 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" -"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -"checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" -"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -"checksum libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)" = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558" -"checksum libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" -"checksum librocksdb-sys 5.18.3 (git+https://github.com/nervosnetwork/rust-rocksdb?rev=14d2991)" = "" -"checksum linked-hash-map 0.5.1 (git+https://github.com/nervosnetwork/linked-hash-map?rev=df27f21)" = "" -"checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" -"checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" -"checksum lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "79b2de95ecb4691949fea4716ca53cdbcfccb2c612e19644a8bad05edcf9f47b" -"checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" -"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" -"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" -"checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" -"checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" -"checksum memmap 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" -"checksum memoffset 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "75189eb85871ea5c2e2c15abbdd541185f63b408415e5051f5cac122d8c774b9" -"checksum merkle-cbt 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d589b5a7ca642540e7ccfbca3bcd0aa18693eb9287e2a6b17c79b1d062d52863" -"checksum mime 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" -"checksum mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1a0ed03949aef72dbdf3116a383d7b38b4768e6f960528cd6a6044aa9ed68599" -"checksum miniz_oxide 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6f3f74f726ae935c3f514300cc6773a0c9492abc5e972d42ba0c0ebb88757625" -"checksum mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)" = "302dec22bcf6bae6dfb69c647187f4b4d0fb6f535521f7bc022430ce8e12008f" -"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 molecule 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba0619bb93e13e12d7e04ab7a1e57f2331f37fa7412f64cf8ef49d1603e0a82a" -"checksum native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4b2df1a4c22fd44a62147fd8f13dd0f95c9d8ca7b2610299b2a2f9cf8964274e" -"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" -"checksum nix 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4dbdc256eaac2e3bd236d93ad999d3479ef775c863dbda3068c4006a92eec51b" -"checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" -"checksum num-integer 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "3f6ea62e9d81a77cd3ee9a2a5b9b609447857f3d358704331e4ef39eb247fcba" -"checksum num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" -"checksum num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "76dac5ed2a876980778b8b85f75a71b6cbf0db0b1232ee12f826bccb00d09d72" -"checksum numext-constructor 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "983983b13ec50f55d5b9536faa553d7fadaa12fae9e0dfda76ba74aebfcc7522" -"checksum numext-fixed-uint 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "84f38aa6a49599f6cf38edbf3af3da0eda190ed3f3889afa5f4cb13be5673259" -"checksum numext-fixed-uint-core 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "dbae90b098c4ac5d5fd2fb48430c9141b7fac42e5fee31ee008c7880ec83adac" -"checksum numext-fixed-uint-hack 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "aba196a4ea541560fb7e44d328c87f25f024c727eeb09df4bb53610a575cfed7" -"checksum numtoa 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef" -"checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" -"checksum openssl 0.10.26 (registry+https://github.com/rust-lang/crates.io-index)" = "3a3cc5799d98e1088141b8e01ff760112bbd9f19d850c124500566ca6901a585" -"checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" -"checksum openssl-sys 0.9.53 (registry+https://github.com/rust-lang/crates.io-index)" = "465d16ae7fc0e313318f7de5cecf57b2fbe7511fd213978b457e1c96ff46736f" -"checksum ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063" -"checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" -"checksum parity-multiaddr 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b574ca9f0c0235c04de4c5110542959f64c9b8882f638b70f6c6be52c75bdc46" -"checksum parity-multihash 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "df3a17dc27848fd99e4f87eb0f8c9baba6ede0a6d555400c850ca45254ef4ce3" -"checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" -"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" -"checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" -"checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" -"checksum pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9" -"checksum peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" -"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" -"checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" -"checksum petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3659d1ee90221741f65dd128d9998311b0e40c5d3c23a62445938214abce4f" -"checksum phf 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "b3da44b85f8e8dfaec21adae67f95d93244b2ecf6ad2a692320598dcc8e6dd18" -"checksum phf_codegen 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "b03e85129e324ad4166b06b2c7491ae27fe3ec353af72e72cd1654c7225d517e" -"checksum phf_generator 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "09364cc93c159b8b06b1f4dd8a4398984503483891b0c26b867cf431fb132662" -"checksum phf_shared 0.7.24 (registry+https://github.com/rust-lang/crates.io-index)" = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0" -"checksum pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)" = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677" -"checksum plain 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" -"checksum ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b" -"checksum proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)" = "ecd45702f76d6d3c75a80564378ae228a85f0b59d2f3ed43c91b4a69eb2ebfc5" -"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -"checksum proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0319972dcae462681daf4da1adeeaa066e3ebd29c69be96c6abb1259d2ee2bcc" -"checksum publicsuffix 1.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3bbaa49075179162b49acac1c6aa45fb4dafb5f13cf6794276d77bc7fd95757b" -"checksum quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" -"checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" -"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" -"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" -"checksum rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)" = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" -"checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" -"checksum rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9" -"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" -"checksum rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3ae1b169243eaf61759b8475a998f0a385e42042370f3a7dbaf35246eacc8412" -"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -"checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" -"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" -"checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" -"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" -"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" -"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 rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "db6ce3297f9c85e16621bb8cca38a06779ffc31bb8184e1be4bed2be4678a098" -"checksum rayon-core 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08a89b46efaf957e52b18062fb2f4660f8b8a4dde1807ca002690868ef2c85a9" -"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" -"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" -"checksum redox_users 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ecedbca3bf205f8d8f5c2b44d83cd0690e39ee84b951ed649e9f1841132b66d" -"checksum regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b5508c1941e4e7cb19965abef075d35a9a8b5cdf0846f30b4050e9b55dc55e87" -"checksum regex-syntax 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "e734e891f5b408a29efbf8309e656876276f49ab6a6ac208600b4419bd893d90" -"checksum relay 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1576e382688d7e9deecea24417e350d3062d97e32e45d70b1cde65994ff1489a" -"checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" -"checksum reqwest 0.9.24 (registry+https://github.com/rust-lang/crates.io-index)" = "f88643aea3c1343c804950d7bf983bd2067f5ab59db6d613a08e05572f2714ab" -"checksum rocksdb 0.12.2 (git+https://github.com/nervosnetwork/rust-rocksdb?rev=14d2991)" = "" -"checksum rpassword 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c34fa7bcae7fca3c8471e8417088bbc3ad9af8066b0ecf4f3c0d98a0d772716e" -"checksum rust-argon2 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ca4eaef519b494d1f2848fc602d18816fed808a981aedf4f1f00ceb7c9d32cf" -"checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" -"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -"checksum rustyline 4.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0f47ea1ceb347d2deae482d655dc8eef4bd82363d3329baffa3818bd76fea48b" -"checksum ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8" -"checksum safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" -"checksum same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "585e8ddcedc187886a30fa705c47985c3fa88d06624095856b36ca0b82ff4421" -"checksum schannel 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "87f550b06b6cba9c8b8be3ee73f391990116bf527450d2556e9b9ce263b9a021" -"checksum scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "332ffa32bf586782a3efaeb58f127980944bbc8c4d6913a86107ac2a5ab24b28" -"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" -"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" -"checksum scroll 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2f84d114ef17fd144153d608fba7c446b0145d038985e7a8cc5d08bb0ce20383" -"checksum scroll_derive 0.9.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8f1aa96c45e7f5a91cb7fabe7b279f02fea7126239fc40b732316e8b6a2d0fcb" -"checksum scrypt 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "656c79d0e90d0ab28ac86bf3c3d10bfbbac91450d3f190113b4e76d9fec3cfdd" -"checksum secp256k1 0.15.5 (registry+https://github.com/rust-lang/crates.io-index)" = "4d311229f403d64002e9eed9964dfa5a0a0c1ac443344f7546bf48e916c6053a" -"checksum security-framework 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8ef2429d7cefe5fd28bd1d2ed41c944547d4ff84776f5935b456da44593a16df" -"checksum security-framework-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e31493fc37615debb8c5090a7aeb4a9730bc61e77ab10b9af59f1a202284f895" -"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 sentry 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)" = "509c5fbb9e875fafcd9c4612c0e49d476083b848bf87380cfe1126ebc745c140" -"checksum sentry-types 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b23e3d9c8c6e4a1523f24df6753c4088bfe16c44a73c8881c1d23c70f28ae280" -"checksum serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449" -"checksum serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64" -"checksum serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)" = "48c575e0cc52bdd09b47f330f646cf59afc586e9c4e3ccd6fc1f625b8ea1dad7" -"checksum serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "642dd69105886af2efd227f75a520ec9b44a820d65bc133a9131f7d229fd165a" -"checksum serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)" = "691b17f19fc1ec9d94ec0b5864859290dff279dbd7b03f017afda54eb36c3c35" -"checksum sha-1 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" -"checksum sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0" -"checksum sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf" -"checksum shell-words 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "39acde55a154c4cd3ae048ac78cc21c25f3a0145e44111b523279113dce0d94a" -"checksum shlex 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" -"checksum siphasher 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" -"checksum sized-chunks 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9d3e7f23bad2d6694e0f46f5e470ec27eb07b8f3e8b309a4b0dc17501928b9f2" -"checksum slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "17b4fcaed89ab08ef143da37bc52adbcc04d4a69014f4c1208d6b51f0c47bc23" -"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" -"checksum smallvec 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4c8cbcd6df1e117c2210e13ab5109635ad68a929fcbb8964dc965b76cb5ee013" -"checksum smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" -"checksum smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44e59e0c9fa00817912ae6e4e6e3c4fe04455e75699d06eedc7d85917ed8e8f4" -"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" -"checksum stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8131256a5896cabcf5eb04f4d6dacbe1aefda854b0d9896e09cb58829ec5638c" -"checksum string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" -"checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" -"checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" -"checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" -"checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" -"checksum syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1e4ff033220a41d1a57d8125eab57bf5263783dfdcc18688b1dacc6ce9651ef8" -"checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" -"checksum synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545" -"checksum take 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b157868d8ac1f56b64604539990685fa7611d8fa9e5476cf0c02cf34d32917c5" -"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" -"checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" -"checksum termion 1.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "818ef3700c2a7b447dca1a1dd28341fe635e6ee103c806c636bb9c929991b2cd" -"checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -"checksum thread-id 3.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c7fbf4c9d56b320106cd64fd024dadfa0be7cb4706725fc44a7d7ce952d820c1" -"checksum thread_local 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "88ddf1ad580c7e3d1efff877d972bcc93f995556b9087a5a259630985c88ceab" -"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" -"checksum tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d8a021c69bb74a44ccedb824a046447e2c84a01df9e5c20779750acb38e11b2" -"checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" -"checksum tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" -"checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" -"checksum tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "aeeffbbb94209023feaef3c196a41cbcdafa06b4a6f893f68779bb5e53796f71" -"checksum tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d16217cad7f1b840c5a97dfb3c43b0c871fef423a6e8d2118c604e843662a443" -"checksum tokio-executor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "ca6df436c42b0c3330a82d855d2ef017cd793090ad550a6bc2184f4b933532ab" -"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-proto 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fbb47ae81353c63c487030659494b295f6cb6576242f907f203473b191b0389" -"checksum tokio-reactor 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "6732fe6b53c8d11178dcb77ac6d9682af27fc6d4cb87789449152e5377377146" -"checksum tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "24da22d077e0f15f55162bdbdc661228c1581892f52074fb242678d015b45162" -"checksum tokio-sync 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "d06554cce1ae4a50f42fba8023918afa931413aded705b560e29600ccf7c6d76" -"checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" -"checksum tokio-threadpool 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "f0c32ffea4827978e9aa392d2f743d973c1dfa3730a2ed3f22ce1e6984da848c" -"checksum tokio-timer 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)" = "1739638e364e558128461fc1ad84d997702c8e31c2e6b18fb99842268199e827" -"checksum tokio-udp 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f02298505547f73e60f568359ef0d016d5acd6e830ab9bc7c4a5b3403440121b" -"checksum tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445" -"checksum toml 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "01d1404644c8b12b16bfcffa4322403a91a451584daaaa7c28d3152e6cbc98cf" -"checksum try-lock 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee2aa4715743892880f70885373966c83d73ef1b0838a664ef0c76fffd35e7c2" -"checksum try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382" -"checksum try_from 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "283d3b89e1368717881a9d51dad843cc435380d8109c9e47d38780a324698d8b" -"checksum tui 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "73b422ff4986065d33272b587907654f918a3fe8702786a8110bf68dede0d8ee" -"checksum typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9" -"checksum uname 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b72f89f0ca32e4db1c04e2a72f5345d59796d4866a1ee0609084569f73683dc8" -"checksum unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" -"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" -"checksum unicode-normalization 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b561e267b2326bb4cebfc0ef9e68355c7abe6c6f522aeac2f5bf95d56c59bdcf" -"checksum unicode-segmentation 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0" -"checksum unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479" -"checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" -"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" -"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" -"checksum unsigned-varint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a7f0023a96687fe169081e8adce3f65e3874426b7886e9234d490af2dc077959" -"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" -"checksum url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb" -"checksum url_serde 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "74e7d099f1ee52f823d4bdd60c93c3602043c728f5db3b97bdb548467f7bddea" -"checksum utf8parse 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8772a4ccbb4e89959023bc5b7cb8623a795caa7092d99f3aa9501b9484d4557d" -"checksum uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" -"checksum vcpkg 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3fc439f2794e98976c88a2a2dafce96b930fe8010b0a256b3c2199a773933168" -"checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a" -"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" -"checksum version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce" -"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -"checksum walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9658c94fa8b940eab2250bd5a457f9c48b748420d71293b165c8cdbe2f55f71e" -"checksum want 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a05d9d966753fa4b5c8db73fcab5eed4549cfe0e1e4e66911e5564a0085c35d1" -"checksum want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" -"checksum wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" -"checksum which 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b57acb10231b9493c8472b20cb57317d0679a49e0bdbee44b3b803a6473af164" -"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" -"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" -"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" -"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -"checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" -"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -"checksum wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "96f5016b18804d24db43cebf3c77269e7569b8954a8464501c216cc5e070eaa9" -"checksum winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9" -"checksum winutil 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7daf138b6b14196e3830a588acf1e86966c694d3e8fb026fb105b8b5dca07e6e" -"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" -"checksum yaml-rust 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "65923dd1784f44da1d2c3dbbc5e822045628c590ba72123e1c73d3c230c4434d" + "linked-hash-map 0.5.2", +] diff --git a/Cargo.toml b/Cargo.toml index 6f23a3db..d2bd00ec 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,25 +1,29 @@ [package] name = "ckb-cli" -version = "0.27.1" +version = "0.30.0" license = "MIT" authors = ["Linfeng Qian ", "Nervos Core Dev "] edition = "2018" [dependencies] -ckb-jsonrpc-types = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1" } -ckb-hash = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1" } -ckb-crypto = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1", features = ["secp"] } -ckb-build-info = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1" } -ckb-types = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1" } -ckb-util = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1" } +ckb-jsonrpc-types = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1" } +ckb-hash = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1" } +ckb-crypto = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1", features = ["secp"] } +ckb-build-info = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1" } +ckb-types = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1" } +ckb-util = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1" } ckb-sdk = { path = "ckb-sdk" } ckb-index = { path = "ckb-index" } -ckb-resource = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1" } -ckb-dao-utils = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1" } +ckb-resource = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1" } +ckb-dao-utils = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1" } jsonrpc-client-core = "0.5.0" +jsonrpc-core = "10.1" +jsonrpc-derive = "10.1" +jsonrpc-http-server = "10.1" +jsonrpc-server-utils = "10.1" secp256k1 = {version = "0.15.0" } -faster-hex = "0.3" +faster-hex = "0.4" env_logger = "0.6" crossbeam-channel = "0.3" clap = "2.33.0" @@ -51,7 +55,7 @@ tui = "0.6.0" termion = "1.5" [build-dependencies] -ckb-build-info = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1" } +ckb-build-info = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1" } [workspace] members = ["ckb-sdk", "ckb-index", "ckb-sdk-types"] diff --git a/Makefile b/Makefile index d3ff0ba2..66ca67c0 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ ci: fmt clippy test security-audit git diff --exit-code Cargo.lock integration: - bash devtools/ci/integration.sh v0.27.1-rc1 + bash devtools/ci/integration.sh v0.30.0-rc1 prod: ## Build binary with release profile. cargo build --release diff --git a/README.md b/README.md index c307f98b..4aad12c7 100644 --- a/README.md +++ b/README.md @@ -3,73 +3,18 @@ CKB command line tool ## Features ``` ->> rpc: Invoke RPC call to node - - get_block Get block content by hash - get_block_by_number Get block content by block number - get_block_hash Get block hash by block number - get_cellbase_output_capacity_details Get block header content by hash - get_cells_by_lock_hash Get cells by lock script hash - get_current_epoch Get current epoch information - get_epoch_by_number Get epoch information by epoch number - get_header Get block header content by hash - get_header_by_number Get block header by block number - get_live_cell Get live cell (live means unspent) - get_tip_block_number Get tip block number - get_tip_header Get tip header - get_transaction Get transaction content by transaction hash - deindex_lock_hash Remove index for live cells and transactions by the hash of lock script - get_live_cells_by_lock_hash Get the live cells collection by the hash of lock script - get_transactions_by_lock_hash Get the transactions collection by the hash of lock script. Returns - empty array when the `lock_hash` has not been indexed yet - index_lock_hash Create index for live cells and transactions by the hash of lock script - get_banned_addresses Get all banned IPs/Subnets - get_peers Get connected peers - local_node_info Get local node information - set_ban Insert or delete an IP/Subnet from the banned list - tx_pool_info Get transaction pool information - get_blockchain_info Get chain information - add_node Connect to a node - remove_node Disconnect a node - broadcast_transaction Broadcast transaction without verify - ->> wallet: Transfer / query balance (with local index) / key utils - - transfer Transfer capacity to an address (can have data) - deposit-dao Deposit capacity into NervosDAO(can have data) - withdraw-dao Withdraw capacity from NervosDAO(can have data) - get-capacity Get capacity by lock script hash or address or lock arg or pubkey - get-dao-capacity Get NervosDAO deposited capacity by lock script hash or address or lock arg or pubkey - get-live-cells Get live cells by lock/type/code hash - get-lock-by-address Get lock script (include hash) by address - db-metrics Show index database metrics - top-capacity Show top n capacity owned by lock script hash - ->> account: Manage accounts - - list List all accounts - new Create a new account and print related information. - import Import an unencrypted private key from and create a new account. - unlock Unlock an account - update Update password of an account - export Export master private key and chain code as hex plain text (USE WITH YOUR OWN RISK) - ->> util: Utilities - - key-info Show public information of a secp256k1 private key (from file) or public key - serialize-tx Serialize a transaction from json file to hex binary or hash - deserialize-tx Deserialize a transaction from binary hex to json - serialize-script Serialize a script from json file to hex binary or hash - deserialize-script Deserialize a script from hex binary to json - ->> mock-tx: Handle mock transactions (verify/send) - - template Print mock transaction template - complete Complete the mock transaction - verify Verify a mock transaction in local - send Complete then send a transaction + rpc Invoke RPC call to node + account Manage accounts + mock-tx Handle mock transactions (verify/send) + tx Handle common sighash/multisig transaction + util Utilities + molecule Molecule encode/decode utilities + wallet Transfer / query balance (with local index) / key utils + dao Deposit / prepare / withdraw / query NervosDAO balance (with local index) / key utils ``` +All second level sub-commands are listed in [wiki page](https://github.com/nervosnetwork/ckb-cli/wiki/Sub-Commands). + ## Build this project ``` git clone https://github.com/nervosnetwork/ckb-cli.git diff --git a/ckb-index/Cargo.toml b/ckb-index/Cargo.toml index 72bb777e..3b06680a 100644 --- a/ckb-index/Cargo.toml +++ b/ckb-index/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ckb-index" -version = "0.27.1" +version = "0.30.0" authors = ["Linfeng Qian ", "Nervos Core Dev "] edition = "2018" license = "MIT" @@ -11,7 +11,7 @@ serde_derive = "1.0" bincode = "1.1.4" log = "0.4.6" failure = "0.1.5" -ckb-types = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1" } +ckb-types = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1" } ckb-sdk = { path = "../ckb-sdk" } [dependencies.rocksdb] diff --git a/ckb-index/src/index/key.rs b/ckb-index/src/index/key.rs index 7fa7f8cc..d299f2a6 100644 --- a/ckb-index/src/index/key.rs +++ b/ckb-index/src/index/key.rs @@ -267,7 +267,7 @@ impl Key { Key::BlockDelta(number) } KeyType::LiveCellMap => { - let out_point = OutPoint::new_unchecked(args_bytes.into()); + let out_point = OutPoint::new_unchecked(args_bytes.to_vec().into()); Key::LiveCellMap(out_point) } KeyType::LiveCellIndex => { diff --git a/ckb-index/src/index/mod.rs b/ckb-index/src/index/mod.rs index 6a4125d8..3334d1bd 100644 --- a/ckb-index/src/index/mod.rs +++ b/ckb-index/src/index/mod.rs @@ -288,7 +288,7 @@ impl<'a> IndexDatabase<'a> { log::debug!("Block: {} => {:x}", header.number(), block_hash); // TODO: should forbid query when Init - self.last_header = Some(header.clone()); + self.last_header = Some(header); let blocks = if self.last_number().unwrap() < self.tip_header.number().saturating_sub(256) { self.init_block_buf.push(block); if self.init_block_buf.len() >= 200 { diff --git a/ckb-index/src/index/types.rs b/ckb-index/src/index/types.rs index e71efb57..ded734fc 100644 --- a/ckb-index/src/index/types.rs +++ b/ckb-index/src/index/types.rs @@ -66,7 +66,7 @@ impl BlockDeltaInfo { reader: &'r T, clear_old: bool, ) -> BlockDeltaInfo { - let block_header: HeaderView = block.header().clone(); + let block_header: HeaderView = block.header(); let block_number = block_header.number(); let timestamp = block_header.timestamp(); @@ -200,7 +200,7 @@ impl BlockDeltaInfo { cell_removed += inputs.len(); cell_added += outputs.len(); RichTxInfo { - tx_hash: tx.hash().clone().unpack(), + tx_hash: tx.hash().unpack(), tx_index: tx_index as u32, block_number, block_timestamp: timestamp, @@ -225,7 +225,7 @@ impl BlockDeltaInfo { let capacity_delta = (new_chain_capacity as i128 - old_chain_capacity as i128) as i64; let header_info = HeaderInfo { - header: block_header.data().as_slice().into(), + header: block_header.data().as_slice().to_vec().into(), txs_size: block.transactions().len() as u32, uncles_size: block.uncle_hashes().len() as u32, proposals_size: block.union_proposal_ids().len() as u32, @@ -555,7 +555,7 @@ impl LockInfo { } fn set_script(&mut self, script: Script) { - self.script_opt = Some(script.as_slice().into()); + self.script_opt = Some(script.as_slice().to_vec().into()); } fn add_input(&mut self, input_capacity: u64) { @@ -691,12 +691,12 @@ impl RichTxInfo { inputs: self .inputs .iter() - .map(|info| info.out_point().as_slice().into()) + .map(|info| info.out_point().as_slice().to_vec().into()) .collect::>(), outputs: self .outputs .iter() - .map(|info| info.out_point().as_slice().into()) + .map(|info| info.out_point().as_slice().to_vec().into()) .collect::>(), } } diff --git a/ckb-sdk-types/Cargo.toml b/ckb-sdk-types/Cargo.toml index 5a7f6152..32000758 100644 --- a/ckb-sdk-types/Cargo.toml +++ b/ckb-sdk-types/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ckb-sdk-types" -version = "0.27.1" +version = "0.30.0" authors = ["Linfeng Qian ", "Nervos Core Dev "] edition = "2018" license = "MIT" @@ -9,14 +9,14 @@ license = "MIT" serde = { version = "1.0", features = ["rc"] } serde_derive = "1.0" -ckb-types = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1" } -ckb-script = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1", default-features = false } -ckb-jsonrpc-types = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1" } -ckb-hash = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1" } -ckb-error = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1" } +ckb-types = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1" } +ckb-script = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1", default-features = false } +ckb-jsonrpc-types = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1" } +ckb-hash = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1" } +ckb-error = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1" } [dev-dependencies] -ckb-crypto = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1", features = ["secp"] } +ckb-crypto = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1", features = ["secp"] } [features] default = ["ckb-script/default"] diff --git a/ckb-sdk/Cargo.toml b/ckb-sdk/Cargo.toml index b3e9d923..cd3e611e 100644 --- a/ckb-sdk/Cargo.toml +++ b/ckb-sdk/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ckb-sdk" -version = "0.27.1" +version = "0.30.0" authors = ["Linfeng Qian ", "Nervos Core Dev "] edition = "2018" license = "MIT" @@ -14,7 +14,7 @@ log = "0.4.6" jsonrpc-client-core = "0.5.0" jsonrpc-client-http = "0.5.0" secp256k1 = "0.15.0" -faster-hex = "0.3" +faster-hex = "0.4" fnv = "1.0.3" aes-ctr = "0.3.0" scrypt = "0.2.0" @@ -27,10 +27,10 @@ chrono = "0.4.6" failure = "0.1.5" lazy_static = "1.4.0" -ckb-types = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1" } -ckb-script = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1" } -ckb-jsonrpc-types = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1" } -ckb-hash = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1" } -ckb-resource = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1" } -ckb-crypto = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1", features = ["secp"] } +ckb-types = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1" } +ckb-script = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1" } +ckb-jsonrpc-types = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1" } +ckb-hash = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1" } +ckb-resource = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1" } +ckb-crypto = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1", features = ["secp"] } ckb-sdk-types = { path = "../ckb-sdk-types" } diff --git a/ckb-sdk/src/transaction.rs b/ckb-sdk/src/transaction.rs index 8e6d11bc..d4363309 100644 --- a/ckb-sdk/src/transaction.rs +++ b/ckb-sdk/src/transaction.rs @@ -258,7 +258,7 @@ impl<'a> MockTransactionHelper<'a> { let mut message = [0u8; 32]; blake2b.finalize(&mut message); let message = H256::from(message); - let sig = signer(&lock_arg, &message).map(|data| Bytes::from(data.as_ref()))?; + let sig = signer(&lock_arg, &message).map(|data| Bytes::from(data.to_vec()))?; witnesses[idxs[0]] = WitnessArgs::new_builder() .lock(Some(sig).pack()) .build() @@ -356,7 +356,7 @@ mod test { let lock_script = Script::new_builder() .code_hash(genesis_info.sighash_type_hash().clone()) .hash_type(ScriptHashType::Type.into()) - .args(Bytes::from(lock_arg.as_bytes()).pack()) + .args(Bytes::from(lock_arg.as_bytes().to_vec()).pack()) .build(); let mut mock_tx = MockTransaction::default(); diff --git a/ckb-sdk/src/tx_helper.rs b/ckb-sdk/src/tx_helper.rs index 3971650d..db34299e 100644 --- a/ckb-sdk/src/tx_helper.rs +++ b/ckb-sdk/src/tx_helper.rs @@ -1,6 +1,6 @@ use ckb_hash::{blake2b_256, new_blake2b}; use ckb_types::{ - bytes::Bytes, + bytes::{Bytes, BytesMut}, core::{ScriptHashType, TransactionBuilder, TransactionView}, h256, packed::{self, Byte32, CellDep, CellInput, CellOutput, OutPoint, Script, WitnessArgs}, @@ -82,9 +82,12 @@ impl TxHelper { since_absolute_epoch_opt: Option, mut get_live_cell: F, genesis_info: &GenesisInfo, + skip_check: bool, ) -> Result<(), String> { let lock = get_live_cell(out_point.clone(), false)?.lock(); - check_lock_script(&lock)?; + if !skip_check { + check_lock_script(&lock)?; + } let since = if let Some(number) = since_absolute_epoch_opt { Since::new_absolute_epoch(number).value() @@ -106,7 +109,7 @@ impl TxHelper { self.transaction = self.transaction.as_advanced_builder().input(input).build(); let mut cell_deps: HashSet = HashSet::default(); - for ((code_hash, _), _) in self.input_group(get_live_cell)?.into_iter() { + for ((code_hash, _), _) in self.input_group(get_live_cell, skip_check)?.into_iter() { let code_hash: H256 = code_hash.unpack(); if code_hash == SIGHASH_TYPE_HASH { cell_deps.insert(genesis_info.sighash_dep()); @@ -138,16 +141,16 @@ impl TxHelper { if lock_arg.len() != 20 && lock_arg.len() != 28 { return Err(format!( "Invalid lock_arg(0x{}) length({}) with signature(0x{})", - hex_string(lock_arg.as_ref()).unwrap(), + hex_string(lock_arg.as_ref()), lock_arg.len(), - hex_string(signature.as_ref()).unwrap(), + hex_string(signature.as_ref()), )); } if signature.len() != SECP_SIGNATURE_SIZE { return Err(format!( "Invalid signature length({}) for lock_arg(0x{})", signature.len(), - hex_string(lock_arg.as_ref()).unwrap(), + hex_string(lock_arg.as_ref()), )); } @@ -164,11 +167,14 @@ impl TxHelper { pub fn input_group Result>( &self, mut get_live_cell: F, + skip_check: bool, ) -> Result>, String> { let mut input_group: HashMap<(Byte32, Bytes), Vec> = HashMap::default(); for (idx, input) in self.transaction.inputs().into_iter().enumerate() { let lock = get_live_cell(input.previous_output(), false)?.lock(); - check_lock_script(&lock).map_err(|err| format!("Input(no.{}) {}", idx + 1, err))?; + if !skip_check { + check_lock_script(&lock).map_err(|err| format!("Input(no.{}) {}", idx + 1, err))?; + } let lock_arg = lock.args().raw_data(); let code_hash = lock.code_hash(); @@ -202,6 +208,7 @@ impl TxHelper { &self, mut signer: S, get_live_cell: C, + skip_check: bool, ) -> Result, String> where S: FnMut(&HashSet, &H256) -> Result, String>, @@ -215,7 +222,9 @@ impl TxHelper { let witnesses = self.init_witnesses(); let mut signatures: HashMap = Default::default(); - for ((code_hash, lock_arg), idxs) in self.input_group(get_live_cell)?.into_iter() { + for ((code_hash, lock_arg), idxs) in + self.input_group(get_live_cell, skip_check)?.into_iter() + { let multisig_hash160 = H160::from_slice(&lock_arg[..20]).unwrap(); let lock_args = if code_hash == MULTISIG_TYPE_HASH.pack() { all_sighash_lock_args @@ -244,9 +253,15 @@ impl TxHelper { pub fn build_tx Result>( &self, get_live_cell: F, + skip_check: bool, ) -> Result { let mut witnesses = self.init_witnesses(); - for ((code_hash, lock_arg), idxs) in self.input_group(get_live_cell)?.into_iter() { + for ((code_hash, lock_arg), idxs) in + self.input_group(get_live_cell, skip_check)?.into_iter() + { + if skip_check && !self.signatures.contains_key(&lock_arg) { + continue; + } let signatures = self.signatures.get(&lock_arg).ok_or_else(|| { let lock_script = Script::new_builder() .hash_type(ScriptHashType::Type.into()) @@ -262,11 +277,11 @@ impl TxHelper { let hash160 = H160::from_slice(&lock_arg[..20]).unwrap(); let multisig_config = self.multisig_configs.get(&hash160).unwrap(); let threshold = multisig_config.threshold() as usize; - let mut data = multisig_config.to_witness_data(); + let mut data = BytesMut::from(&multisig_config.to_witness_data()[..]); if signatures.len() != threshold { return Err(format!( "Invalid multisig signature length for lock_arg: 0x{}, got: {}, expected: {}", - hex_string(&lock_arg).unwrap(), + hex_string(&lock_arg), signatures.len(), threshold, )); @@ -274,12 +289,12 @@ impl TxHelper { for signature in signatures { data.extend_from_slice(signature.as_ref()); } - data + data.freeze() } else { if signatures.len() != 1 { return Err(format!( "Invalid secp signature length for lock_arg: 0x{}, got: {}, expected: 1", - hex_string(&lock_arg).unwrap(), + hex_string(&lock_arg), signatures.len(), )); } @@ -427,9 +442,9 @@ impl MultisigConfig { let hash160 = self.hash160(); if let Some(absolute_epoch_number) = since_absolute_epoch { let since_value = Since::new_absolute_epoch(absolute_epoch_number).value(); - let mut args = Bytes::from(hash160.as_bytes()); + let mut args = BytesMut::from(hash160.as_bytes()); args.extend_from_slice(&since_value.to_le_bytes()[..]); - AddressPayload::new_full_type(MULTISIG_TYPE_HASH.pack(), args) + AddressPayload::new_full_type(MULTISIG_TYPE_HASH.pack(), args.freeze()) } else { AddressPayload::new_short(CodeHashIndex::Multisig, hash160) } @@ -488,9 +503,9 @@ pub fn build_signature Result<[u8; SECP_SIGNATURE_SIZE], Stri let init_witness = if let Some(multisig_config) = multisig_config_opt { let lock_without_sig = { let sig_len = (multisig_config.threshold() as usize) * SECP_SIGNATURE_SIZE; - let mut data = multisig_config.to_witness_data(); + let mut data = BytesMut::from(&multisig_config.to_witness_data()[..]); data.extend_from_slice(vec![0u8; sig_len].as_slice()); - data + data.freeze() }; init_witness .as_builder() @@ -515,5 +530,5 @@ pub fn build_signature Result<[u8; SECP_SIGNATURE_SIZE], Stri let mut message = [0u8; 32]; blake2b.finalize(&mut message); let message = H256::from(message); - signer(&message).map(|data| Bytes::from(&data[..])) + signer(&message).map(|data| Bytes::from(data.to_vec())) } diff --git a/ckb-sdk/src/types/address.rs b/ckb-sdk/src/types/address.rs index df5d7691..3b77a585 100644 --- a/ckb-sdk/src/types/address.rs +++ b/ckb-sdk/src/types/address.rs @@ -116,7 +116,7 @@ impl AddressPayload { pub fn args(&self) -> Bytes { match self { - AddressPayload::Short { hash, .. } => Bytes::from(hash.as_bytes()), + AddressPayload::Short { hash, .. } => Bytes::from(hash.as_bytes().to_vec()), AddressPayload::Full { args, .. } => args.clone(), } } @@ -284,7 +284,7 @@ impl FromStr for Address { ScriptHashType::Type }; let code_hash = Byte32::from_slice(&data[1..33]).unwrap(); - let args = Bytes::from(&data[33..]); + let args = Bytes::from(data[33..].to_vec()); let payload = AddressPayload::Full { hash_type, code_hash, diff --git a/ckb-sdk/src/wallet/bip32.rs b/ckb-sdk/src/wallet/bip32.rs index 066b99c5..0d8dc684 100644 --- a/ckb-sdk/src/wallet/bip32.rs +++ b/ckb-sdk/src/wallet/bip32.rs @@ -16,6 +16,7 @@ //! Implementation of BIP32 hierarchical deterministic wallets, as defined //! at https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki +use std::borrow::Borrow; use std::default::Default; use std::io::Write; use std::str::FromStr; @@ -344,6 +345,12 @@ impl<'a> ::std::iter::IntoIterator for &'a DerivationPath { } } +impl Borrow<[ChildNumber]> for DerivationPath { + fn borrow(&self) -> &[ChildNumber] { + &self.0 + } +} + impl AsRef<[ChildNumber]> for DerivationPath { fn as_ref(&self) -> &[ChildNumber] { &self.0 @@ -395,6 +402,10 @@ impl<'a> Iterator for DerivationPathIterator<'a> { } impl DerivationPath { + /// Create the empty [DerivationPath] which refers to the original key. + pub fn empty() -> Self { + DerivationPath(Vec::new()) + } /// Create a new [DerivationPath] that is a child of this one. pub fn child(&self, cn: ChildNumber) -> DerivationPath { let mut path = self.0.clone(); @@ -526,7 +537,7 @@ impl ExtendedPrivKey { /// Attempts to derive an extended private key from a path. /// /// The `path` argument can be both of type `DerivationPath` or `Vec`. - pub fn derive_priv>( + pub fn derive_priv>( &self, secp: &Secp256k1, path: &P, @@ -603,7 +614,7 @@ impl ExtendedPubKey { /// Attempts to derive an extended public key from a path. /// /// The `path` argument can be both of type `DerivationPath` or `Vec`. - pub fn derive_pub>( + pub fn derive_pub>( &self, secp: &Secp256k1, path: &P, diff --git a/ckb-sdk/src/wallet/keystore/mod.rs b/ckb-sdk/src/wallet/keystore/mod.rs index c1e0be30..5eb56ca2 100644 --- a/ckb-sdk/src/wallet/keystore/mod.rs +++ b/ckb-sdk/src/wallet/keystore/mod.rs @@ -174,66 +174,80 @@ impl KeyStore { Ok(key.master_privkey) } - pub fn sign( + pub fn sign

( &mut self, hash160: &H160, - path: Option<&DerivationPath>, + path: &P, message: &H256, - ) -> Result { + ) -> Result + where + P: ?Sized + AsRef<[ChildNumber]>, + { Ok(self .get_timed_key(hash160)? .master_privkey() .sign(message, path)) } - pub fn sign_recoverable( + pub fn sign_recoverable

( &mut self, hash160: &H160, - path: Option<&DerivationPath>, + path: &P, message: &H256, - ) -> Result { + ) -> Result + where + P: ?Sized + AsRef<[ChildNumber]>, + { Ok(self .get_timed_key(hash160)? .master_privkey() .sign_recoverable(message, path)) } - pub fn sign_with_password( + pub fn sign_with_password

( &self, hash160: &H160, - path: Option<&DerivationPath>, + path: &P, message: &H256, password: &[u8], - ) -> Result { + ) -> Result + where + P: ?Sized + AsRef<[ChildNumber]>, + { let filepath = self.get_filepath(hash160)?; let key = self.storage.get_key(hash160, &filepath, password)?; Ok(key.master_privkey.sign(message, path)) } - pub fn sign_recoverable_with_password( + pub fn sign_recoverable_with_password

( &self, hash160: &H160, - path: Option<&DerivationPath>, + path: &P, message: &H256, password: &[u8], - ) -> Result { + ) -> Result + where + P: ?Sized + AsRef<[ChildNumber]>, + { let filepath = self.get_filepath(hash160)?; let key = self.storage.get_key(hash160, &filepath, password)?; Ok(key.master_privkey.sign_recoverable(message, path)) } - pub fn extended_pubkey( - &mut self, - hash160: &H160, - path: Option<&DerivationPath>, - ) -> Result { + pub fn extended_pubkey

(&mut self, hash160: &H160, path: &P) -> Result + where + P: ?Sized + AsRef<[ChildNumber]>, + { Ok(self .get_timed_key(hash160)? .master_privkey() .extended_pubkey(path)?) } - pub fn extended_pubkey_with_password( + pub fn extended_pubkey_with_password

( &mut self, hash160: &H160, - path: Option<&DerivationPath>, + path: &P, password: &[u8], - ) -> Result { + ) -> Result + where + P: ?Sized + AsRef<[ChildNumber]>, + { let filepath = self.get_filepath(hash160)?; let key = self.storage.get_key(hash160, &filepath, password)?; Ok(key.master_privkey.extended_pubkey(path)?) @@ -498,7 +512,7 @@ pub struct Key { impl Key { pub fn new(master_privkey: MasterPrivKey) -> Key { let id = Uuid::new_v4(); - let hash160 = master_privkey.hash160(None); + let hash160 = master_privkey.hash160(&[]); Key { id, hash160, @@ -520,7 +534,7 @@ impl Key { for i in 0..external_max_len { let path_string = format!("m/44'/309'/0'/{}/{}", KeyChain::External as u8, i); let path = DerivationPath::from_str(path_string.as_str()).unwrap(); - let pubkey_hash = self.derived_pubkey_hash(path.clone()); + let pubkey_hash = self.derived_pubkey_hash(&path); external_key_set.push((path, pubkey_hash.clone())); } @@ -528,7 +542,7 @@ impl Key { for i in 0..change_max_len { let path_string = format!("m/44'/309'/0'/{}/{}", KeyChain::Change as u8, i); let path = DerivationPath::from_str(path_string.as_str()).unwrap(); - let pubkey_hash = self.derived_pubkey_hash(path.clone()); + let pubkey_hash = self.derived_pubkey_hash(&path); change_key_set.push((path, pubkey_hash.clone())); if change_last == &pubkey_hash { return Ok(DerivedKeySet { @@ -540,8 +554,11 @@ impl Key { Err(Error::SearchDerivedAddrFailed) } - pub fn derived_pubkey_hash(&self, path: DerivationPath) -> H160 { - let extended_pubkey = self.master_privkey.extended_pubkey(Some(&path)).unwrap(); + pub fn derived_pubkey_hash

(&self, path: &P) -> H160 + where + P: ?Sized + AsRef<[ChildNumber]>, + { + let extended_pubkey = self.master_privkey.extended_pubkey(path).unwrap(); let pubkey = extended_pubkey.public_key; H160::from_slice(&blake2b_256(&pubkey.serialize()[..])[0..20]) .expect("Generate hash(H160) from pubkey failed") @@ -583,7 +600,7 @@ impl Key { .map(|i| { let path_string = format!("m/44'/309'/0'/{}/{}", chain as u8, i + start); let path = DerivationPath::from_str(path_string.as_str()).unwrap(); - let extended_pubkey = self.master_privkey.extended_pubkey(Some(&path)).unwrap(); + let extended_pubkey = self.master_privkey.extended_pubkey(&path).unwrap(); (path, extended_pubkey) }) .collect() @@ -632,7 +649,7 @@ impl Key { key_bytes[..].copy_from_slice(&key_vec[..]); let master_privkey = MasterPrivKey::from_bytes(key_bytes)?; - let hash160 = master_privkey.hash160(None); + let hash160 = master_privkey.hash160(&[]); Ok(Key { id, hash160, @@ -705,7 +722,10 @@ impl MasterPrivKey { bytes } - fn sub_privkey(&self, path: Option<&DerivationPath>) -> ExtendedPrivKey { + fn sub_privkey

(&self, path: &P) -> ExtendedPrivKey + where + P: ?Sized + AsRef<[ChildNumber]>, + { let sk = ExtendedPrivKey { depth: 0, parent_fingerprint: Default::default(), @@ -713,38 +733,42 @@ impl MasterPrivKey { private_key: self.secp_secret_key, chain_code: ChainCode(self.chain_code), }; - if let Some(path) = path { - sk.derive_priv(&SECP256K1, path) - .expect("Derive sub-privkey error") - } else { - sk - } + sk.derive_priv(&SECP256K1, path) + .expect("Derive sub-privkey error") } - pub fn sign(&self, message: &H256, path: Option<&DerivationPath>) -> secp256k1::Signature { + pub fn sign

(&self, message: &H256, path: &P) -> secp256k1::Signature + where + P: ?Sized + AsRef<[ChildNumber]>, + { let message = secp256k1::Message::from_slice(message.as_bytes()).expect("Convert to message failed"); let sub_sk = self.sub_privkey(path); SECP256K1.sign(&message, &sub_sk.private_key) } - pub fn sign_recoverable( - &self, - message: &H256, - path: Option<&DerivationPath>, - ) -> RecoverableSignature { + pub fn sign_recoverable

(&self, message: &H256, path: &P) -> RecoverableSignature + where + P: ?Sized + AsRef<[ChildNumber]>, + { let message = secp256k1::Message::from_slice(message.as_bytes()).expect("Convert to message failed"); let sub_sk = self.sub_privkey(path); SECP256K1.sign_recoverable(&message, &sub_sk.private_key) } - pub fn extended_pubkey(&self, path: Option<&DerivationPath>) -> Result { + pub fn extended_pubkey

(&self, path: &P) -> Result + where + P: ?Sized + AsRef<[ChildNumber]>, + { let sub_sk = self.sub_privkey(path); Ok(ExtendedPubKey::from_private(&SECP256K1, &sub_sk)) } - pub fn hash160(&self, path: Option<&DerivationPath>) -> H160 { + pub fn hash160

(&self, path: &P) -> H160 + where + P: ?Sized + AsRef<[ChildNumber]>, + { let sub_sk = self.sub_privkey(path); let pubkey = secp256k1::PublicKey::from_secret_key(&SECP256K1, &sub_sk.private_key); H160::from_slice(&blake2b_256(&pubkey.serialize()[..])[0..20]) diff --git a/docs/API-Server.md b/docs/API-Server.md new file mode 100644 index 00000000..ef9594d6 --- /dev/null +++ b/docs/API-Server.md @@ -0,0 +1,255 @@ +# ckb-cli API Server + +**Usage**: +``` +ckb-cli server --help +Start advanced API server + +USAGE: + ckb-cli server [FLAGS] [OPTIONS] --listen + +FLAGS: + --wait-for-sync Ensure the index-store synchronizes completely before command being executed + +OPTIONS: + --listen Rpc server listen address (when --privkey-path is given ip MUST be 127.0.0.1) + [default: 127.0.0.1:3000] + --privkey-path Private key file path (only read first line) +``` + +* API Doc + * [`transfer`](#transfer) + * [`get_capacity_by_address`](#get_capacity_by_address) + * [`get_capacity_by_lock_hash`](#get_capacity_by_lock_hash) + * [`get_live_cells_by_address`](#get_live_cells_by_address) + * [`get_live_cells_by_lock_hash`](#get_live_cells_by_lock_hash) + * [`get_live_cells_by_type_hash`](#get_live_cells_by_type_hash) + * [`get_live_cells_by_code_hash`](#get_live_cells_by_code_hash) + + +## API Doc + +### `transfer` + +Transfer capacity to an address. Enabled when start server with `--privkey-path** argument. + +**Attention**: `capacity` and `tx_fee` unit are Shannon. + +See: `ckb-cli wallet transfer --help` + +#### Parameters +The parameters of `transfer` method is different from other methods, this method use only one object as it's parameter. + + transfer_args - A JSON object of type TransferArgs + +TransferArgs fields: + + capacity - The capacity (unit: Shannon) + tx_fee - The transaction fee capacity (unit: Shannon) + to_address - Target address + from_locked_address - (optional) The time locked multisig address to search live cells + to_data - (optional) Hex data store in target cell + +#### Examples + +```bash +echo '{ + "id": 2, + "jsonrpc": "2.0", + "method": "transfer", + "params": [{ + "capacity": 200000000000, + "tx_fee": 1000, + "to_address": "ckt1qyqdfjzl8ju2vfwjtl4mttx6me09hayzfldq8m3a0y", + "from_locked_address": null, + "to_data": null + }] +}' \ +| tr -d '\n' \ +| curl -H 'content-type: application/json' -d @- \ +http://localhost:3000 +``` + +```json +{ + "jsonrpc": "2.0", + "result": "0x14afd2df9bf130962f3d30e17fb68fbab91fbf93189240a77fdc633dc39e6d5a", + "id": 2 +} +``` + + +### `get_capacity_by_address` + +Get capacity by address + +See: `ckb-cli wallet get-capacity --help` + +#### Parameters + + address - Target address + +#### Examples + +```bash +echo '{ + "id": 2, + "jsonrpc": "2.0", + "method": "get_capacity_by_address", + "params": ["ckt1qyqdfjzl8ju2vfwjtl4mttx6me09hayzfldq8m3a0y"] +}' \ +| tr -d '\n' \ +| curl -H 'content-type: application/json' -d @- \ +http://localhost:3000 +``` + +```json +{ + "jsonrpc": "2.0", + "result": { + "dao": 0, + "immature": 0, + "total": 3000000009000 + }, + "id": 2 +} +``` + + +### `get_capacity_by_lock_hash` + +Get capacity by lock script hash + +See: `ckb-cli wallet get-capacity --help` + +#### Parameters + + lock_hash - Lock script hash + + +#### Examples + +```bash +echo '{ + "id": 2, + "jsonrpc": "2.0", + "method": "get_capacity_by_lock_hash", + "params": ["0x951f5af7606e2905a556a2774b99de803f0dac47e06129ecd3d4c42243b290ed"] +}' \ +| tr -d '\n' \ +| curl -H 'content-type: application/json' -d @- \ +http://localhost:3000 +``` + +```json +{ + "jsonrpc": "2.0", + "result": { + "dao": 0, + "immature": 0, + "total": 3000000009000 + }, + "id": 2 +} +``` + + +### `get_live_cells_by_address` + +Get live cells by address + +See: `ckb-cli wallet get-live-cells --help` + +#### Parameters + + address - Target address + from - (optional) Search from block number (included) + to - (optional) Search to block number (included) + limit - Get live cells <= limit + + +#### Examples + +```bash +echo '{ + "id": 2, + "jsonrpc": "2.0", + "method": "get_live_cells_by_address", + "params": ["ckt1qyqdfjzl8ju2vfwjtl4mttx6me09hayzfldq8m3a0y", null, null, 2] +}' \ +| tr -d '\n' \ +| curl -H 'content-type: application/json' -d @- \ +http://localhost:3000 +``` + +```json +{ + "jsonrpc": "2.0", + "result": { + "current_capacity": 2200000009000, + "current_count": 2, + "live_cells": [ + { + "info": { + "capacity": 2000000009000, + "data_bytes": 0, + "index": { + "output_index": 1, + "tx_index": 1 + }, + "lock_hash": "0x951f5af7606e2905a556a2774b99de803f0dac47e06129ecd3d4c42243b290ed", + "number": 62800, + "tx_hash": "0xd3f1df20a4b87c01d77b0ab9877c9270c512ce3e9a4443deb0eb685112fc24e5", + "tx_index": 1, + "type_hashes": null + }, + "mature": true + }, + { + "info": { + "capacity": 200000000000, + "data_bytes": 0, + "index": { + "output_index": 0, + "tx_index": 1 + }, + "lock_hash": "0x951f5af7606e2905a556a2774b99de803f0dac47e06129ecd3d4c42243b290ed", + "number": 86682, + "tx_hash": "0x962562e730cbab29fcfed8c2aff9da8936f669c2236957107da12c357d6847af", + "tx_index": 0, + "type_hashes": null + }, + "mature": true + } + ] + }, + "id": 2 +} +``` + + +### `get_live_cells_by_lock_hash` + +Get live cells by lock script hash + +See: `ckb-cli wallet get-live-cells --help` + +`Parameters`/`Examples` are similar to `get_live_cells_by_address`. + + +### `get_live_cells_by_type_hash` + +Get live cells by type script hash + +See: `ckb-cli wallet get-live-cells --help` + +`Parameters`/`Examples` are similar to `get_live_cells_by_address`. + + +### `get_live_cells_by_code_hash` + +Get live cells by type script's code hash + +See: `ckb-cli wallet get-live-cells --help` + +`Parameters`/`Examples` are similar to `get_live_cells_by_address`. diff --git a/rust-toolchain b/rust-toolchain index ebeef2f2..7d47e599 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1 +1 @@ -1.38.0 +1.41.0 diff --git a/src/interactive.rs b/src/interactive.rs index 08df00ca..b0e39c64 100644 --- a/src/interactive.rs +++ b/src/interactive.rs @@ -19,14 +19,10 @@ use crate::utils::{ completer::CkbCompleter, config::GlobalConfig, index::{IndexController, IndexRequest}, - other::{check_alerts, get_network_type, index_dirname}, + other::{check_alerts, get_key_store, get_network_type, index_dirname}, printer::{ColorWhen, OutputFormat, Printable}, }; -use ckb_sdk::{ - rpc::RawHttpRpcClient, - wallet::{KeyStore, ScryptType}, - GenesisInfo, HttpRpcClient, -}; +use ckb_sdk::{rpc::RawHttpRpcClient, wallet::KeyStore, GenesisInfo, HttpRpcClient}; const ENV_PATTERN: &str = r"\$\{\s*(?P\S+)\s*\}"; @@ -59,8 +55,6 @@ impl InteractiveEnv { config_file.push("config"); let mut index_dir = ckb_cli_dir.clone(); index_dir.push(index_dirname()); - let mut keystore_dir = ckb_cli_dir.clone(); - keystore_dir.push("keystore"); let mut env_file = ckb_cli_dir.clone(); env_file.push("env_vars"); @@ -76,9 +70,7 @@ impl InteractiveEnv { let parser = crate::build_interactive(); let rpc_client = HttpRpcClient::new(config.get_url().to_string()); let raw_rpc_client = RawHttpRpcClient::from_uri(config.get_url()); - fs::create_dir_all(&keystore_dir).map_err(|err| err.to_string())?; - let key_store = KeyStore::from_dir(keystore_dir, ScryptType::default()) - .map_err(|err| err.to_string())?; + let key_store = get_key_store(&ckb_cli_dir)?; Ok(InteractiveEnv { config, config_file, diff --git a/src/main.rs b/src/main.rs index c223c8b5..28aa3b9a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,8 +17,9 @@ use subcommands::TuiSubCommand; use crate::utils::other::get_genesis_info; use interactive::InteractiveEnv; use subcommands::{ - start_index_thread, AccountSubCommand, CliSubCommand, DAOSubCommand, MockTxSubCommand, - MoleculeSubCommand, RpcSubCommand, TxSubCommand, UtilSubCommand, WalletSubCommand, + start_index_thread, AccountSubCommand, ApiServerSubCommand, CliSubCommand, DAOSubCommand, + MockTxSubCommand, MoleculeSubCommand, RpcSubCommand, TxSubCommand, UtilSubCommand, + WalletSubCommand, }; use utils::other::sync_to_tip; use utils::{ @@ -110,12 +111,7 @@ fn main() -> Result<(), io::Error> { } let result = match matches.subcommand() { #[cfg(unix)] - ("tui", _) => TuiSubCommand::new( - api_uri.to_string(), - index_dir.clone(), - index_controller.clone(), - ) - .start(), + ("tui", _) => TuiSubCommand::new(api_uri, index_dir, index_controller.clone()).start(), ("rpc", Some(sub_matches)) => RpcSubCommand::new(&mut rpc_client, &mut raw_rpc_client) .process(&sub_matches, output_format, color, debug), ("account", Some(sub_matches)) => get_key_store(&ckb_cli_dir).and_then(|mut key_store| { @@ -150,6 +146,16 @@ fn main() -> Result<(), io::Error> { debug, ) }), + ("server", Some(sub_matches)) => get_key_store(&ckb_cli_dir).and_then(|mut key_store| { + ApiServerSubCommand::new( + &mut rpc_client, + &mut key_store, + None, + index_dir.clone(), + index_controller.clone(), + ) + .process(&sub_matches, output_format, color, debug) + }), ("molecule", Some(sub_matches)) => { MoleculeSubCommand::new().process(&sub_matches, output_format, color, debug) } @@ -249,6 +255,7 @@ pub fn build_cli<'a>(version_short: &'a str, version_long: &'a str) -> App<'a, ' .subcommand(AccountSubCommand::subcommand("account")) .subcommand(MockTxSubCommand::subcommand("mock-tx")) .subcommand(TxSubCommand::subcommand("tx")) + .subcommand(ApiServerSubCommand::subcommand("server")) .subcommand(UtilSubCommand::subcommand("util")) .subcommand(MoleculeSubCommand::subcommand("molecule")) .subcommand(WalletSubCommand::subcommand()) diff --git a/src/subcommands/account.rs b/src/subcommands/account.rs index 4e8394a1..d7ef2128 100644 --- a/src/subcommands/account.rs +++ b/src/subcommands/account.rs @@ -12,6 +12,7 @@ use clap::{App, Arg, ArgMatches, SubCommand}; use super::CliSubCommand; use crate::utils::{ + arg::lock_arg, arg_parser::{ ArgParser, DurationParser, ExtendedPrivkeyPathParser, FilePathParser, FixedHashParser, FromStrParser, PrivkeyPathParser, PrivkeyWrapper, @@ -30,12 +31,6 @@ impl<'a> AccountSubCommand<'a> { } pub fn subcommand(name: &'static str) -> App<'static, 'static> { - let arg_lock_arg = Arg::with_name("lock-arg") - .long("lock-arg") - .takes_value(true) - .validator(|input| FixedHashParser::::default().validate(input)) - .required(true) - .help("The lock_arg (identifier) of the account"); let arg_privkey_path = Arg::with_name("privkey-path") .long("privkey-path") .takes_value(true); @@ -74,7 +69,7 @@ impl<'a> AccountSubCommand<'a> { ), SubCommand::with_name("unlock") .about("Unlock an account") - .arg(arg_lock_arg.clone()) + .arg(lock_arg().required(true)) .arg( Arg::with_name("keep") .long("keep") @@ -85,10 +80,10 @@ impl<'a> AccountSubCommand<'a> { ), SubCommand::with_name("update") .about("Update password of an account") - .arg(arg_lock_arg.clone()), + .arg(lock_arg().required(true)), SubCommand::with_name("export") .about("Export master private key and chain code as hex plain text (USE WITH YOUR OWN RISK)") - .arg(arg_lock_arg.clone()) + .arg(lock_arg().required(true)) .arg( arg_extended_privkey_path .clone() @@ -129,10 +124,10 @@ impl<'a> AccountSubCommand<'a> { .validator(|input| FromStrParser::::default().validate(input)) .help("Change addresses length") ) - .arg(arg_lock_arg.clone()), + .arg(lock_arg().required(true)), SubCommand::with_name("extended-address") .about("Extended address (see: BIP-44)") - .arg(arg_lock_arg.clone()) + .arg(lock_arg().required(true)) .arg( Arg::with_name("path") .long("path") @@ -175,7 +170,7 @@ impl<'a> CliSubCommand for AccountSubCommand<'a> { "lock_hash": format!("{:#x}", lock_hash), "address": { "mainnet": Address::new(NetworkType::Mainnet, address_payload.clone()).to_string(), - "testnet": Address::new(NetworkType::Testnet, address_payload.clone()).to_string(), + "testnet": Address::new(NetworkType::Testnet, address_payload).to_string(), }, }) }) @@ -197,7 +192,7 @@ impl<'a> CliSubCommand for AccountSubCommand<'a> { "lock_hash": format!("{:#x}", lock_hash), "address": { "mainnet": Address::new(NetworkType::Mainnet, address_payload.clone()).to_string(), - "testnet": Address::new(NetworkType::Testnet, address_payload.clone()).to_string(), + "testnet": Address::new(NetworkType::Testnet, address_payload).to_string(), }, }); Ok(resp.render(format, color)) @@ -223,7 +218,7 @@ impl<'a> CliSubCommand for AccountSubCommand<'a> { "lock_arg": format!("{:x}", lock_arg), "address": { "mainnet": Address::new(NetworkType::Mainnet, address_payload.clone()).to_string(), - "testnet": Address::new(NetworkType::Testnet, address_payload.clone()).to_string(), + "testnet": Address::new(NetworkType::Testnet, address_payload).to_string(), }, }); Ok(resp.render(format, color)) @@ -245,7 +240,7 @@ impl<'a> CliSubCommand for AccountSubCommand<'a> { "lock_arg": format!("{:x}", lock_arg), "address": { "mainnet": Address::new(NetworkType::Mainnet, address_payload.clone()).to_string(), - "testnet": Address::new(NetworkType::Testnet, address_payload.clone()).to_string(), + "testnet": Address::new(NetworkType::Testnet, address_payload).to_string(), }, }); Ok(resp.render(format, color)) @@ -345,20 +340,21 @@ impl<'a> CliSubCommand for AccountSubCommand<'a> { ("extended-address", Some(m)) => { let lock_arg: H160 = FixedHashParser::::default().from_matches(m, "lock-arg")?; - let path: Option = - FromStrParser::::new().from_matches_opt(m, "path", false)?; + let path: DerivationPath = FromStrParser::::new() + .from_matches_opt(m, "path", false)? + .unwrap_or_else(DerivationPath::empty); let password = read_password(false, None)?; let extended_pubkey = self .key_store - .extended_pubkey_with_password(&lock_arg, path.as_ref(), password.as_bytes()) + .extended_pubkey_with_password(&lock_arg, &path, password.as_bytes()) .map_err(|err| err.to_string())?; let address_payload = AddressPayload::from_pubkey(&extended_pubkey.public_key); let resp = serde_json::json!({ "lock_arg": format!("{:#x}", H160::from_slice(address_payload.args().as_ref()).unwrap()), "address": { "mainnet": Address::new(NetworkType::Mainnet, address_payload.clone()).to_string(), - "testnet": Address::new(NetworkType::Testnet, address_payload.clone()).to_string(), + "testnet": Address::new(NetworkType::Testnet, address_payload).to_string(), }, }); Ok(resp.render(format, color)) diff --git a/src/subcommands/api_server.rs b/src/subcommands/api_server.rs new file mode 100644 index 00000000..f039c9ab --- /dev/null +++ b/src/subcommands/api_server.rs @@ -0,0 +1,459 @@ +use std::net::{IpAddr, Ipv4Addr, SocketAddr}; +use std::path::PathBuf; +use std::sync::{Arc, Mutex}; +use std::thread; +use std::time::Duration; + +use ckb_crypto::secp::SECP256K1; +use ckb_sdk::{ + wallet::KeyStore, Address, AddressPayload, GenesisInfo, HttpRpcClient, HumanCapacity, + NetworkType, +}; +use ckb_types::{ + bytes::Bytes, + core::{service::Request, BlockView}, + packed::Script, + prelude::*, + H256, +}; +use clap::{App, Arg, ArgMatches, SubCommand}; +use jsonrpc_core::{Error as RpcError, ErrorCode as RpcErrorCode, IoHandler, Result as RpcResult}; +use jsonrpc_derive::rpc; +use jsonrpc_http_server::{Server, ServerBuilder}; +use jsonrpc_server_utils::cors::AccessControlAllowOrigin; +use jsonrpc_server_utils::hosts::DomainsValidation; +use serde::{Deserialize, Serialize}; + +use super::{CliSubCommand, LiveCells, TransferArgs, WalletSubCommand}; +use crate::utils::{ + arg, + arg_parser::{AddressParser, ArgParser, FromStrParser, PrivkeyPathParser, PrivkeyWrapper}, + index::{IndexController, IndexRequest}, + other::get_network_type, + printer::OutputFormat, +}; + +pub struct ApiServerSubCommand<'a> { + rpc_client: &'a mut HttpRpcClient, + key_store: &'a mut KeyStore, + genesis_info: Option, + index_dir: PathBuf, + index_controller: IndexController, +} + +impl<'a> ApiServerSubCommand<'a> { + pub fn new( + rpc_client: &'a mut HttpRpcClient, + key_store: &'a mut KeyStore, + genesis_info: Option, + index_dir: PathBuf, + index_controller: IndexController, + ) -> ApiServerSubCommand<'a> { + ApiServerSubCommand { + rpc_client, + key_store, + genesis_info, + index_dir, + index_controller, + } + } + + pub fn subcommand(name: &'static str) -> App<'static, 'static> { + SubCommand::with_name(name) + .about("Start advanced API server") + .arg( + Arg::with_name("listen") + .long("listen") + .takes_value(true) + .required(true) + .default_value("127.0.0.1:3000") + .validator(|input| FromStrParser::::new().validate(input)) + .help("Rpc server listen address (when --privkey-path is given ip MUST be 127.0.0.1)"), + ) + .arg( + arg::privkey_path() + .help("Private key file path (only read first line)") + ) + } +} + +impl<'a> CliSubCommand for ApiServerSubCommand<'a> { + fn process( + &mut self, + matches: &ArgMatches, + _format: OutputFormat, + _color: bool, + _debug: bool, + ) -> Result { + let listen_addr: SocketAddr = + FromStrParser::::new().from_matches(matches, "listen")?; + let privkey_path: Option = matches.value_of("privkey-path").map(Into::into); + + let network_result = get_network_type(self.rpc_client); + if privkey_path.is_some() && listen_addr.ip() != IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)) { + return Err(format!( + "When privkey-path is given, listen ip MUST be 127.0.0.1, current ip: {}", + listen_addr.ip() + )); + } + let privkey_opt: Option = privkey_path + .clone() + .map(|input| PrivkeyPathParser.parse(&input)) + .transpose()?; + let network = match network_result { + Ok(network) => network, + Err(ref err) if privkey_opt.is_some() => { + return Err(format!("Get network type failed: {}", err)) + } + Err(_) => NetworkType::Mainnet, + }; + let address_opt = privkey_opt.map(|privkey| { + let pubkey = secp256k1::PublicKey::from_secret_key(&SECP256K1, &privkey); + let payload = AddressPayload::from_pubkey(&pubkey); + Address::new(network, payload).to_string() + }); + + Request::call(self.index_controller.sender(), IndexRequest::Kick); + + let mut io_handler = IoHandler::new(); + let handler = ApiRpcImpl { + rpc_client: Arc::new(Mutex::new(HttpRpcClient::new( + self.rpc_client.url().to_string(), + ))), + key_store: Arc::new(Mutex::new(self.key_store.clone())), + genesis_info: Arc::new(Mutex::new(self.genesis_info.clone())), + privkey_path, + index_dir: self.index_dir.clone(), + index_controller: self.index_controller.clone(), + }; + io_handler.extend_with(handler.to_delegate()); + + thread::sleep(Duration::from_millis(200)); + log::info!("Node rpc server: {}", self.rpc_client.url()); + log::info!("Network: {:?}", network_result); + log::info!("Index database directory: {:?}", self.index_dir); + log::info!( + "Index database state: {}", + *self.index_controller.state().read() + ); + log::info!("Wallet address: {:?}", address_opt); + log::info!("Listen on {}", listen_addr); + RpcServer::start(&listen_addr, io_handler).wait(); + Ok(String::from("Stopped")) + } +} + +struct RpcServer { + server: Server, +} + +impl RpcServer { + fn start(listen_addr: &SocketAddr, io_handler: IoHandler) -> RpcServer { + let server = ServerBuilder::new(io_handler) + .cors(DomainsValidation::AllowOnly(vec![ + AccessControlAllowOrigin::Null, + AccessControlAllowOrigin::Any, + ])) + .threads(2) + .max_request_body_size(50 * 1024 * 1024) + .start_http(listen_addr) + .expect("Jsonrpc initialize"); + RpcServer { server } + } + + fn wait(self) { + self.server.wait() + } +} + +#[rpc] +pub trait ApiRpc { + #[rpc(name = "transfer")] + fn transfer(&self, _args: HttpTransferArgs) -> RpcResult; + + #[rpc(name = "get_capacity_by_address")] + fn get_capacity_by_address(&self, _address: String) -> RpcResult; + + #[rpc(name = "get_capacity_by_lock_hash")] + fn get_capacity_by_lock_hash(&self, _lock_hash: H256) -> RpcResult; + + #[rpc(name = "get_live_cells_by_address")] + fn get_live_cells_by_address( + &self, + _address: String, + _from_number_opt: Option, + _to_number_opt: Option, + _limit: usize, + ) -> RpcResult; + + #[rpc(name = "get_live_cells_by_lock_hash")] + fn get_live_cells_by_lock_hash( + &self, + _lock_hash: H256, + _from_number_opt: Option, + _to_number_opt: Option, + _limit: usize, + ) -> RpcResult; + + #[rpc(name = "get_live_cells_by_type_hash")] + fn get_live_cells_by_type_hash( + &self, + _type_hash: H256, + _from_number_opt: Option, + _to_number_opt: Option, + _limit: usize, + ) -> RpcResult; + + #[rpc(name = "get_live_cells_by_code_hash")] + fn get_live_cells_by_code_hash( + &self, + _code_hash: H256, + _from_number_opt: Option, + _to_number_opt: Option, + _limit: usize, + ) -> RpcResult; +} + +struct ApiRpcImpl { + rpc_client: Arc>, + key_store: Arc>, + genesis_info: Arc>>, + privkey_path: Option, + index_dir: PathBuf, + index_controller: IndexController, +} + +impl ApiRpcImpl { + fn genesis_info(&self) -> Result { + let mut genesis_info = self.genesis_info.lock().unwrap(); + if genesis_info.is_none() { + let genesis_block: BlockView = self + .rpc_client + .lock() + .unwrap() + .get_block_by_number(0)? + .expect("Can not get genesis block?") + .into(); + *genesis_info = Some(GenesisInfo::from_block(&genesis_block)?); + } + Ok(genesis_info.clone().unwrap()) + } + + fn with_wallet Result>( + &self, + func: F, + ) -> Result { + let genesis_info = self.genesis_info().map_err(internal_err)?; + let mut rpc_client = self.rpc_client.lock().unwrap(); + let mut key_store = self.key_store.lock().unwrap(); + func(&mut WalletSubCommand::new( + &mut rpc_client, + &mut key_store, + Some(genesis_info), + self.index_dir.clone(), + self.index_controller.clone(), + )) + } +} + +impl ApiRpc for ApiRpcImpl { + fn transfer(&self, args: HttpTransferArgs) -> RpcResult { + log::info!("[call]: tranfer({:?})", args); + if let Some(privkey_path) = self.privkey_path.clone() { + self.with_wallet(|cmd| { + cmd.transfer(args.into_full_args(privkey_path), false) + .map_err(RpcError::invalid_params) + }) + .map(|tx| tx.hash().unpack()) + } else { + Err(internal_err( + "Please give privkey-path argument to enable transfer api".to_string(), + )) + } + } + + fn get_capacity_by_address(&self, address: String) -> RpcResult { + log::info!("[call]: get_capacity_by_address({})", address); + let network = { + let mut rpc_client = self.rpc_client.lock().unwrap(); + get_network_type(&mut rpc_client).map_err(internal_err)? + }; + let address = AddressParser::default() + .set_network(network) + .parse(&address) + .map_err(RpcError::invalid_params)?; + let lock_hash: H256 = Script::from(address.payload()).calc_script_hash().unpack(); + self.get_capacity_by_lock_hash(lock_hash) + } + + fn get_capacity_by_lock_hash(&self, lock_hash: H256) -> RpcResult { + log::info!("[call]: get_capacity_by_lock_hash({:#x})", lock_hash); + let lock_hashes = vec![lock_hash.pack()]; + self.with_wallet(|cmd| { + cmd.get_capacity(lock_hashes) + .map(|(total, immature, dao)| GetCapacityResponse { + total, + immature, + dao, + }) + .map_err(RpcError::invalid_params) + }) + } + + fn get_live_cells_by_address( + &self, + address: String, + from_number_opt: Option, + to_number_opt: Option, + limit: usize, + ) -> RpcResult { + log::info!( + "[call]: get_live_cells_by_address({}, {:?}, {:?}, {})", + address, + from_number_opt, + to_number_opt, + limit, + ); + let network = { + let mut rpc_client = self.rpc_client.lock().unwrap(); + get_network_type(&mut rpc_client).map_err(internal_err)? + }; + let address = AddressParser::default() + .set_network(network) + .parse(&address) + .map_err(RpcError::invalid_params)?; + let lock_hash: H256 = Script::from(address.payload()).calc_script_hash().unpack(); + self.get_live_cells_by_lock_hash(lock_hash, from_number_opt, to_number_opt, limit) + } + + fn get_live_cells_by_lock_hash( + &self, + lock_hash: H256, + from_number_opt: Option, + to_number_opt: Option, + limit: usize, + ) -> RpcResult { + log::info!( + "[call]: get_live_cells_by_lock_hash({:#x}, {:?}, {:?}, {})", + lock_hash, + from_number_opt, + to_number_opt, + limit, + ); + let to_number = to_number_opt.unwrap_or(std::u64::MAX); + self.with_wallet(|cmd| { + cmd.get_live_cells( + to_number, + limit, + |db, terminator| { + db.get_live_cells_by_lock(lock_hash.pack(), from_number_opt, terminator) + }, + true, + ) + .map(|result| result.0) + .map_err(RpcError::invalid_params) + }) + } + + fn get_live_cells_by_type_hash( + &self, + type_hash: H256, + from_number_opt: Option, + to_number_opt: Option, + limit: usize, + ) -> RpcResult { + log::info!( + "[call]: get_live_cells_by_type_hash({:#x}, {:?}, {:?}, {})", + type_hash, + from_number_opt, + to_number_opt, + limit, + ); + let to_number = to_number_opt.unwrap_or(std::u64::MAX); + self.with_wallet(|cmd| { + cmd.get_live_cells( + to_number, + limit, + |db, terminator| { + db.get_live_cells_by_type(type_hash.pack(), from_number_opt, terminator) + }, + true, + ) + .map(|result| result.0) + .map_err(RpcError::invalid_params) + }) + } + + fn get_live_cells_by_code_hash( + &self, + code_hash: H256, + from_number_opt: Option, + to_number_opt: Option, + limit: usize, + ) -> RpcResult { + log::info!( + "[call]: get_live_cells_by_code_hash({:#x}, {:?}, {:?}, {})", + code_hash, + from_number_opt, + to_number_opt, + limit, + ); + let to_number = to_number_opt.unwrap_or(std::u64::MAX); + self.with_wallet(|cmd| { + cmd.get_live_cells( + to_number, + limit, + |db, terminator| { + db.get_live_cells_by_code(code_hash.pack(), from_number_opt, terminator) + }, + true, + ) + .map(|result| result.0) + .map_err(RpcError::invalid_params) + }) + } +} + +fn internal_err(message: String) -> RpcError { + RpcError { + code: RpcErrorCode::InternalError, + message, + data: None, + } +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] +pub struct HttpTransferArgs { + pub capacity: u64, + pub tx_fee: u64, + pub to_address: String, + pub from_locked_address: Option, + pub to_data: Option, +} + +impl HttpTransferArgs { + pub fn into_full_args(self, privkey_path: String) -> TransferArgs { + let capacity = HumanCapacity::from(self.capacity).to_string(); + let tx_fee = HumanCapacity::from(self.tx_fee).to_string(); + TransferArgs { + privkey_path: Some(privkey_path), + from_account: None, + from_locked_address: self.from_locked_address, + password: None, + derive_receiving_address_length: None, + derive_change_address: None, + capacity, + tx_fee, + to_address: self.to_address, + to_data: self.to_data, + } + } +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct GetCapacityResponse { + pub total: u64, + pub immature: u64, + pub dao: u64, +} diff --git a/src/subcommands/dao/command.rs b/src/subcommands/dao/command.rs index fde0ecde..7a06fde8 100644 --- a/src/subcommands/dao/command.rs +++ b/src/subcommands/dao/command.rs @@ -167,9 +167,9 @@ impl TransactArgs { address_opt .map(|address| H160::from_slice(&address.payload().args()).unwrap()) }) - .map_err(|_| err) + .map_err(|_| format!("Invalid value for '--from-account': {}", err)) })?; - let payload = AddressPayload::from_pubkey_hash(account.clone().unwrap()); + let payload = AddressPayload::from_pubkey_hash(account.unwrap()); Address::new(network_type, payload) }; assert_eq!(address.payload().code_hash(), SIGHASH_TYPE_HASH.pack()); diff --git a/src/subcommands/dao/mod.rs b/src/subcommands/dao/mod.rs index 7779f2ea..e23ee947 100644 --- a/src/subcommands/dao/mod.rs +++ b/src/subcommands/dao/mod.rs @@ -1,12 +1,12 @@ use self::builder::DAOBuilder; use self::command::TransactArgs; -use self::util::blake2b_args; -use crate::subcommands::dao::util::is_mature; use crate::utils::index::IndexController; use crate::utils::other::{ - get_max_mature_number, get_network_type, get_privkey_signer, read_password, serialize_signature, + get_max_mature_number, get_network_type, get_privkey_signer, is_mature, read_password, + serialize_signature, }; use byteorder::{ByteOrder, LittleEndian}; +use ckb_hash::new_blake2b; use ckb_index::{with_index_db, IndexDatabase, LiveCellInfo}; use ckb_jsonrpc_types::JsonBytes; use ckb_sdk::{ @@ -199,7 +199,7 @@ impl<'a> DAOSubCommand<'a> { let lock_script = Script::new_builder() .hash_type(ScriptHashType::Type.into()) .code_hash(sighash_type_hash.clone()) - .args(Bytes::from(sighash_args.as_bytes()).pack()) + .args(Bytes::from(sighash_args.as_bytes().to_vec()).pack()) .build(); let outputs = transaction .outputs() @@ -244,19 +244,18 @@ impl<'a> DAOSubCommand<'a> { .lock(Some(Bytes::from(&[0u8; 65][..])).pack()) .build() }; - let message = { - let mut sign_args = vec![ - transaction.hash().raw_data().to_vec(), - (init_witness.as_bytes().len() as u64) - .to_le_bytes() - .to_vec(), - init_witness.as_bytes().to_vec(), - ]; + let digest = { + let mut blake2b = new_blake2b(); + blake2b.update(&transaction.hash().raw_data()); + blake2b.update(&(init_witness.as_bytes().len() as u64).to_le_bytes()); + blake2b.update(&init_witness.as_bytes()); for other_witness in witnesses.iter().skip(1) { - sign_args.push((other_witness.len() as u64).to_le_bytes().to_vec()); - sign_args.push(other_witness.to_vec()); + blake2b.update(&(other_witness.len() as u64).to_le_bytes()); + blake2b.update(&other_witness); } - sign_args + let mut message = [0u8; 32]; + blake2b.finalize(&mut message); + H256::from(message) }; let signature = { let account = self.transact_args().sighash_args(); @@ -268,14 +267,13 @@ impl<'a> DAOSubCommand<'a> { get_keystore_signer(self.key_store.clone(), account.clone(), password) } }; - let digest = H256::from_slice(&blake2b_args(&message)).unwrap(); let accounts = vec![account].into_iter().collect::>(); signer(&accounts, &digest)?.expect("signer missed") }; witnesses[0] = init_witness .as_builder() - .lock(Some(Bytes::from(&signature[..])).pack()) + .lock(Some(Bytes::from(signature[..].to_vec())).pack()) .build() .as_bytes(); @@ -329,7 +327,7 @@ fn get_keystore_signer(key_store: KeyStore, account: H160, password: String) -> Ok(Some([0u8; 65])) } else { key_store - .sign_recoverable_with_password(&account, None, message, password.as_bytes()) + .sign_recoverable_with_password(&account, &[], message, password.as_bytes()) .map(|signature| Some(serialize_signature(&signature))) .map_err(|err| err.to_string()) } diff --git a/src/subcommands/dao/util.rs b/src/subcommands/dao/util.rs index 6d0e6701..78c8f7fc 100644 --- a/src/subcommands/dao/util.rs +++ b/src/subcommands/dao/util.rs @@ -3,7 +3,6 @@ use crate::utils::{ printer::{OutputFormat, Printable}, }; use ckb_dao_utils::extract_dao_data; -use ckb_hash::new_blake2b; use ckb_index::LiveCellInfo; use ckb_sdk::HttpRpcClient; use ckb_types::core::{Capacity, TransactionView}; @@ -14,24 +13,6 @@ use ckb_types::{ prelude::*, }; -pub(crate) fn is_mature(info: &LiveCellInfo, max_mature_number: u64) -> bool { - // Not cellbase cell - info.index.tx_index > 0 - // Live cells in genesis are all mature - || info.number == 0 - || info.number <= max_mature_number -} - -pub(crate) fn blake2b_args(args: &[Vec]) -> [u8; 32] { - let mut blake2b = new_blake2b(); - for arg in args.iter() { - blake2b.update(&arg); - } - let mut digest = [0u8; 32]; - blake2b.finalize(&mut digest); - digest -} - pub(crate) fn calculate_dao_maximum_withdraw( rpc_client: &mut HttpRpcClient, prepare_cell: &LiveCellInfo, diff --git a/src/subcommands/mock_tx.rs b/src/subcommands/mock_tx.rs index 4c20e248..d6f018b9 100644 --- a/src/subcommands/mock_tx.rs +++ b/src/subcommands/mock_tx.rs @@ -20,6 +20,7 @@ use clap::{App, Arg, ArgMatches, SubCommand}; use super::CliSubCommand; use crate::utils::{ + arg::lock_arg, arg_parser::{ArgParser, FilePathParser, FixedHashParser}, other::{get_genesis_info, get_singer}, printer::{OutputFormat, Printable}, @@ -56,18 +57,12 @@ impl<'a> MockTxSubCommand<'a> { .takes_value(true) .validator(|input| FilePathParser::new(false).validate(input)) .help("Completed mock transaction data file (format: json)"); - let arg_lock_arg = Arg::with_name("lock-arg") - .long("lock-arg") - .takes_value(true) - .validator(|input| FixedHashParser::::default().validate(input)) - .required(true) - .help("The lock_arg (identifier) of the account"); SubCommand::with_name(name) .about("Handle mock transactions (verify/send)") .subcommands(vec![ SubCommand::with_name("template") .about("Print mock transaction template") - .arg(arg_lock_arg.clone().required(false)) + .arg(lock_arg().required(true).clone().required(false)) .arg(arg_output_file.clone().help("Save to a output file")), SubCommand::with_name("complete") .about("Complete the mock transaction") @@ -160,7 +155,7 @@ impl<'a> CliSubCommand for MockTxSubCommand<'a> { Script::new_builder() .code_hash(sighash_type_hash.clone()) .hash_type(ScriptHashType::Type.into()) - .args(Bytes::from(lock_arg.as_ref()).pack()) + .args(Bytes::from(lock_arg.as_bytes().to_vec()).pack()) .build() }; let mock_cell_dep = MockCellDep { @@ -249,7 +244,6 @@ impl<'a> MockResourceLoader for Loader<'a> { self.rpc_client .get_header(hash) .map(|header_opt| header_opt.map(Into::into)) - .map_err(|err| err.to_string()) } fn get_live_cell( diff --git a/src/subcommands/mod.rs b/src/subcommands/mod.rs index ea45a579..553c81ba 100644 --- a/src/subcommands/mod.rs +++ b/src/subcommands/mod.rs @@ -1,4 +1,5 @@ pub mod account; +pub mod api_server; pub mod dao; pub mod mock_tx; pub mod molecule; @@ -13,13 +14,14 @@ pub mod wallet; pub use self::tui::TuiSubCommand; pub use account::AccountSubCommand; +pub use api_server::ApiServerSubCommand; pub use dao::DAOSubCommand; pub use mock_tx::MockTxSubCommand; pub use molecule::MoleculeSubCommand; pub use rpc::RpcSubCommand; pub use tx::TxSubCommand; pub use util::UtilSubCommand; -pub use wallet::{start_index_thread, WalletSubCommand}; +pub use wallet::{start_index_thread, LiveCells, TransferArgs, WalletSubCommand}; use clap::ArgMatches; diff --git a/src/subcommands/molecule.rs b/src/subcommands/molecule.rs index 2ede25c2..c3234629 100644 --- a/src/subcommands/molecule.rs +++ b/src/subcommands/molecule.rs @@ -214,8 +214,8 @@ impl CliSubCommand for MoleculeSubCommand { let binary = binary_result?; let output = match output_type { - "binary" => format!("0x{}", hex_string(&binary).unwrap()), - "hash" => format!("0x{}", hex_string(&blake2b_256(&binary)).unwrap()), + "binary" => format!("0x{}", hex_string(&binary)), + "hash" => format!("0x{}", hex_string(&blake2b_256(&binary))), _ => panic!("Invalid output type"), }; Ok(output) diff --git a/src/subcommands/tui/util.rs b/src/subcommands/tui/util.rs index 0381448f..98c514f0 100644 --- a/src/subcommands/tui/util.rs +++ b/src/subcommands/tui/util.rs @@ -36,7 +36,7 @@ pub struct TabsState { impl TabsState { pub fn new(titles: Vec<&str>) -> TabsState { - let titles = titles.iter().map(|s| s.to_string()).collect::>(); + let titles = titles.iter().map(|s| (*s).to_owned()).collect::>(); TabsState { titles, index: 0 } } pub fn fixed_titles(&self) -> Vec { @@ -111,7 +111,6 @@ impl Events { }) }; let tick_handle = { - let tx = tx.clone(); thread::spawn(move || { let tx = tx.clone(); loop { diff --git a/src/subcommands/tx.rs b/src/subcommands/tx.rs index bf929194..317be32b 100644 --- a/src/subcommands/tx.rs +++ b/src/subcommands/tx.rs @@ -89,6 +89,9 @@ impl<'a> TxSubCommand<'a> { .takes_value(true) .validator(|input| FromStrParser::::default().validate(input)) .help("Since absolute epoch number"); + let arg_skip_check = Arg::with_name("skip-check") + .long("skip-check") + .help("Send transaction without any check, be cautious to use this flag"); SubCommand::with_name(name) .about("Handle common sighash/multisig transaction") @@ -132,7 +135,8 @@ impl<'a> TxSubCommand<'a> { .help("Transaction output index"), ) .arg(arg_since_absolute_epoch.clone()) - .arg(arg_tx_file.clone()), + .arg(arg_tx_file.clone()) + .arg(arg_skip_check.clone()), SubCommand::with_name("add-output") .about("Add cell output") .arg( @@ -179,7 +183,7 @@ impl<'a> TxSubCommand<'a> { .validator(|input| match HexParser.parse(&input) { Ok(ref data) if data.len() == 20 || data.len() == 28 => Ok(()), Ok(ref data) => Err(format!("invalid data length: {}", data.len())), - Err(err) => Err(err.to_string()), + Err(err) => Err(err), }) .help("The lock_arg of input lock script (20 bytes or 28 bytes)"), ) @@ -191,7 +195,7 @@ impl<'a> TxSubCommand<'a> { .validator(|input| match HexParser.parse(&input) { Ok(ref data) if data.len() == SECP_SIGNATURE_SIZE => Ok(()), Ok(ref data) => Err(format!("invalid data length: {}", data.len())), - Err(err) => Err(err.to_string()), + Err(err) => Err(err), }) .help("The signature"), ) @@ -208,7 +212,8 @@ impl<'a> TxSubCommand<'a> { Arg::with_name("add-signatures") .long("add-signatures") .help("Sign and add signatures"), - ), + ) + .arg(arg_skip_check.clone()), SubCommand::with_name("send") .about("Send multisig transaction") .arg(arg_tx_file.clone()) @@ -219,7 +224,8 @@ impl<'a> TxSubCommand<'a> { .default_value("1.0") .validator(|input| CapacityParser.validate(input)) .help("Max transaction fee (unit: CKB)"), - ), + ) + .arg(arg_skip_check), SubCommand::with_name("build-multisig-address") .about( "Build multisig address with multisig config and since(optional) argument", @@ -282,6 +288,7 @@ impl<'a> CliSubCommand for TxSubCommand<'a> { let since_absolute_epoch_opt: Option = FromStrParser::::default() .from_matches_opt(m, "since-absolute-epoch", false)?; + let skip_check: bool = m.is_present("skip-check"); let genesis_info = get_genesis_info(&self.genesis_info, self.rpc_client)?; let out_point = OutPoint::new_builder() .tx_hash(tx_hash.pack()) @@ -296,6 +303,7 @@ impl<'a> CliSubCommand for TxSubCommand<'a> { since_absolute_epoch_opt, get_live_cell, &genesis_info, + skip_check, ) })?; @@ -450,6 +458,7 @@ impl<'a> CliSubCommand for TxSubCommand<'a> { PrivkeyPathParser.from_matches_opt(m, "privkey-path", false)?; let account_opt: Option = FixedHashParser::::default() .from_matches_opt(m, "from-account", false)?; + let skip_check: bool = m.is_present("skip-check"); let signer = if let Some(privkey) = privkey_opt { get_privkey_signer(privkey) @@ -473,7 +482,7 @@ impl<'a> CliSubCommand for TxSubCommand<'a> { }; let signatures = modify_tx_file(&tx_file, network, |helper| { - let signatures = helper.sign_inputs(signer, get_live_cell)?; + let signatures = helper.sign_inputs(signer, get_live_cell, skip_check)?; if m.is_present("add-signatures") { for (lock_arg, signature) in signatures.clone() { helper.add_signature(lock_arg, signature)?; @@ -495,6 +504,7 @@ impl<'a> CliSubCommand for TxSubCommand<'a> { ("send", Some(m)) => { let tx_file: PathBuf = FilePathParser::new(false).from_matches(m, "tx-file")?; let max_tx_fee: u64 = CapacityParser.from_matches(m, "max-tx-fee")?; + let skip_check: bool = m.is_present("skip-check"); let mut live_cell_cache: HashMap<(OutPoint, bool), (CellOutput, Bytes)> = Default::default(); @@ -513,16 +523,18 @@ impl<'a> CliSubCommand for TxSubCommand<'a> { serde_json::from_reader(&file).map_err(|err| err.to_string())?; let helper = TxHelper::try_from(repr)?; - let (input_total, output_total) = helper.check_tx(&mut get_live_cell)?; - let tx_fee = input_total - output_total; - if tx_fee > max_tx_fee { - return Err(format!( - "Too much transaction fee: {:#}, max: {:#}", - HumanCapacity(tx_fee), - HumanCapacity(max_tx_fee), - )); + if !skip_check { + let (input_total, output_total) = helper.check_tx(&mut get_live_cell)?; + let tx_fee = input_total - output_total; + if tx_fee > max_tx_fee { + return Err(format!( + "Too much transaction fee: {:#}, max: {:#}", + HumanCapacity(tx_fee), + HumanCapacity(max_tx_fee), + )); + } } - let tx = helper.build_tx(&mut get_live_cell)?; + let tx = helper.build_tx(&mut get_live_cell, skip_check)?; let rpc_tx = json_types::Transaction::from(tx.data()); if debug { println!("[send transaction]:\n{}", rpc_tx.render(format, color)); @@ -602,7 +614,7 @@ fn get_keystore_signer(key_store: KeyStore, account: H160, password: String) -> Ok(Some([0u8; 65])) } else { key_store - .sign_recoverable_with_password(&account, None, message, password.as_bytes()) + .sign_recoverable_with_password(&account, &[], message, password.as_bytes()) .map(|signature| Some(serialize_signature(&signature))) .map_err(|err| err.to_string()) } diff --git a/src/subcommands/util.rs b/src/subcommands/util.rs index 5575efc4..0cf21147 100644 --- a/src/subcommands/util.rs +++ b/src/subcommands/util.rs @@ -8,7 +8,7 @@ use ckb_sdk::{ Address, AddressPayload, CodeHashIndex, HttpRpcClient, NetworkType, OldAddress, }; use ckb_types::{ - bytes::Bytes, + bytes::BytesMut, core::{EpochNumberWithFraction, ScriptHashType}, packed, prelude::*, @@ -69,11 +69,6 @@ impl<'a> UtilSubCommand<'a> { .validator(|input| AddressParser::default().validate(input)) .required(true) .help("Target address (see: https://github.com/nervosnetwork/rfcs/blob/master/rfcs/0021-ckb-address-format/0021-ckb-address-format.md)"); - let arg_lock_arg = Arg::with_name("lock-arg") - .long("lock-arg") - .takes_value(true) - .validator(|input| FixedHashParser::::default().validate(input)) - .help("Lock argument (account identifier, blake2b(pubkey)[0..20])"); let binary_hex_arg = Arg::with_name("binary-hex") .long("binary-hex") @@ -111,7 +106,7 @@ impl<'a> UtilSubCommand<'a> { .arg(arg_privkey.clone().conflicts_with("pubkey")) .arg(arg_pubkey.clone().required(false)) .arg(arg_address.clone().required(false)) - .arg(arg_lock_arg.clone()), + .arg(arg::lock_arg().clone()), SubCommand::with_name("sign-data") .about("Sign data with secp256k1 signature ") .arg(arg::privkey_path().required_unless(arg::from_account().b.name)) @@ -280,7 +275,7 @@ message = "0x" "pubkey": pubkey_string_opt, "address": { "mainnet": Address::new(NetworkType::Mainnet, address_payload.clone()).to_string(), - "testnet": Address::new(NetworkType::Testnet, address_payload.clone()).to_string(), + "testnet": Address::new(NetworkType::Testnet, address_payload).to_string(), }, // NOTE: remove this later (after all testnet race reward received) "old-testnet-address": old_address.display_with_prefix(NetworkType::Testnet), @@ -389,7 +384,7 @@ message = "0x" } else if let Some(account) = from_account_opt { let password = read_password(false, None)?; self.key_store - .extended_pubkey_with_password(&account, None, password.as_bytes()) + .extended_pubkey_with_password(&account, &[], password.as_bytes()) .map_err(|err| err.to_string())? .public_key } else { @@ -516,23 +511,20 @@ message = "0x" DateTime::parse_from_rfc3339(m.value_of("locktime").unwrap()) .map(|dt| dt.timestamp_millis() as u64) .map_err(|err| err.to_string())?; - let (tip_epoch, tip_timestamp) = self - .rpc_client - .get_tip_header() - .map(|header_view| { + let (tip_epoch, tip_timestamp) = + self.rpc_client.get_tip_header().map(|header_view| { let header = header_view.inner; let epoch = EpochNumberWithFraction::from_full_value(header.epoch.0); let timestamp = header.timestamp; (epoch, timestamp) - }) - .map_err(|err| err.to_string())?; + })?; let elapsed = locktime_timestamp.saturating_sub(tip_timestamp.0); let (epoch, multisig_addr) = gen_multisig_addr(address.payload(), Some(tip_epoch), elapsed); let resp = serde_json::json!({ "address": { "mainnet": Address::new(NetworkType::Mainnet, multisig_addr.clone()).to_string(), - "testnet": Address::new(NetworkType::Testnet, multisig_addr.clone()).to_string(), + "testnet": Address::new(NetworkType::Testnet, multisig_addr).to_string(), }, "target_epoch": epoch.to_string(), }); @@ -564,14 +556,14 @@ fn sign_message( (None, Some((key_store, account)), false) => { let password = read_password(false, None)?; key_store - .sign_with_password(account, None, message, password.as_bytes()) + .sign_with_password(account, &[], message, password.as_bytes()) .map(|sig| sig.serialize_compact().to_vec()) .map_err(|err| err.to_string()) } (None, Some((key_store, account)), true) => { let password = read_password(false, None)?; key_store - .sign_recoverable_with_password(account, None, message, password.as_bytes()) + .sign_recoverable_with_password(account, &[], message, password.as_bytes()) .map(|sig| serialize_signature(&sig).to_vec()) .map_err(|err| err.to_string()) } @@ -599,9 +591,9 @@ fn gen_multisig_addr( let args = { let mut multi_script = vec![0u8, 0, 1, 1]; // [S, R, M, N] multi_script.extend_from_slice(sighash_address_payload.args().as_ref()); - let mut data = Bytes::from(&blake2b_256(multi_script)[..20]); - data.extend(since.to_le_bytes().iter()); - data + let mut data = BytesMut::from(&blake2b_256(multi_script)[..20]); + data.extend_from_slice(&since.to_le_bytes()[..]); + data.freeze() }; let payload = AddressPayload::new_full(ScriptHashType::Type, MULTISIG_TYPE_HASH.pack(), args); (epoch_fraction, payload) diff --git a/src/subcommands/wallet/mod.rs b/src/subcommands/wallet/mod.rs index 248780d0..3858e7f3 100644 --- a/src/subcommands/wallet/mod.rs +++ b/src/subcommands/wallet/mod.rs @@ -7,11 +7,12 @@ use ckb_types::{ bytes::Bytes, core::{BlockView, Capacity, ScriptHashType, TransactionView}, h256, - packed::{CellOutput, OutPoint, Script}, + packed::{Byte32, CellOutput, OutPoint, Script}, prelude::*, H160, H256, }; -use clap::{App, ArgMatches, SubCommand}; +use clap::{App, AppSettings, Arg, ArgMatches, SubCommand}; +use serde::{Deserialize, Serialize}; use super::CliSubCommand; use crate::utils::{ @@ -22,8 +23,9 @@ use crate::utils::{ }, index::IndexController, other::{ - check_capacity, get_address, get_live_cell_with_cache, get_max_mature_number, - get_network_type, get_privkey_signer, get_to_data, read_password, serialize_signature, + check_capacity, get_address, get_arg_value, get_live_cell_with_cache, + get_max_mature_number, get_network_type, get_privkey_signer, get_to_data, is_mature, + read_password, serialize_signature, }, printer::{OutputFormat, Printable}, }; @@ -134,9 +136,16 @@ impl<'a> WalletSubCommand<'a> { .arg(arg::address()) .arg(arg::live_cells_limit()) .arg(arg::from_block_number()) - .arg(arg::to_block_number()), + .arg(arg::to_block_number()) + .arg( + Arg::with_name("fast-mode") + .long("fast-mode") + .help("Only visit current range (by --from and --to) of live cells"), + ), // Move to index subcommand - SubCommand::with_name("db-metrics").about("Show index database metrics"), + SubCommand::with_name("db-metrics") + .about("Show index database metrics") + .setting(AppSettings::Hidden), SubCommand::with_name("top-capacity") .about("Show top n capacity owned by lock script hash") .arg(arg::top_n()), @@ -145,59 +154,83 @@ impl<'a> WalletSubCommand<'a> { pub fn transfer( &mut self, - m: &ArgMatches, - format: OutputFormat, - color: bool, - debug: bool, - ) -> Result { - let network_type = get_network_type(self.rpc_client)?; + args: TransferArgs, + skip_check: bool, + ) -> Result { + let TransferArgs { + privkey_path, + from_account, + from_locked_address, + password, + derive_receiving_address_length, + derive_change_address, + capacity, + tx_fee, + to_address, + to_data, + } = args; - let from_privkey_opt: Option = - PrivkeyPathParser.from_matches_opt(m, "privkey-path", false)?; - let from_account_opt: Option = FixedHashParser::::default() - .from_matches_opt(m, "from-account", false) - .or_else(|err| { - let result: Result, String> = AddressParser::new_sighash() - .set_network(network_type) - .from_matches_opt(m, "from-account", false); - result - .map(|address_opt| { - address_opt + let network_type = get_network_type(self.rpc_client)?; + let from_privkey: Option = privkey_path + .map(|input| PrivkeyPathParser.parse(&input)) + .transpose()?; + let from_account: Option = from_account + .map(|input| { + FixedHashParser::::default() + .parse(&input) + .or_else(|err| { + let result: Result = AddressParser::new_sighash() + .set_network(network_type) + .parse(&input); + result .map(|address| H160::from_slice(&address.payload().args()).unwrap()) + .map_err(|_| err) }) - .map_err(|_| err) - })?; - let from_locked_address_opt: Option

= AddressParser::default() - .set_network(network_type) - .set_full_type(MULTISIG_TYPE_HASH.clone()) - .from_matches_opt(m, "from-locked-address", false)?; - let to_capacity: u64 = CapacityParser.from_matches(m, "capacity")?; - let tx_fee: u64 = CapacityParser.from_matches(m, "tx-fee")?; - let receiving_address_length: u32 = - FromStrParser::::default().from_matches(m, "derive-receiving-address-length")?; - - let last_change_address_opt: Option
= AddressParser::default() + }) + .transpose()?; + let from_locked_address: Option
= from_locked_address + .map(|input| { + AddressParser::default() + .set_network(network_type) + .set_full_type(MULTISIG_TYPE_HASH.clone()) + .parse(&input) + }) + .transpose()?; + let to_capacity: u64 = CapacityParser.parse(&capacity)?.into(); + let tx_fee: u64 = CapacityParser.parse(&tx_fee)?.into(); + let receiving_address_length: u32 = derive_receiving_address_length + .map(|input| FromStrParser::::default().parse(&input)) + .transpose()? + .unwrap_or(1000); + let last_change_address_opt: Option
= derive_change_address + .map(|input| { + AddressParser::default() + .set_network(network_type) + .parse(&input) + }) + .transpose()?; + let to_address: Address = AddressParser::default() .set_network(network_type) - .from_matches_opt(m, "derive-change-address", false)?; + .parse(&to_address)?; + let to_data = to_data.unwrap_or_default(); - let (from_address_payload, password) = if let Some(from_privkey) = from_privkey_opt.as_ref() - { + let (from_address_payload, password) = if let Some(from_privkey) = from_privkey.as_ref() { let from_pubkey = secp256k1::PublicKey::from_secret_key(&SECP256K1, from_privkey); (AddressPayload::from_pubkey(&from_pubkey), String::new()) } else { - let password = read_password(false, None)?; + let password = if let Some(password) = password { + password + } else { + read_password(false, None)? + }; ( - AddressPayload::from_pubkey_hash(from_account_opt.clone().unwrap()), + AddressPayload::from_pubkey_hash(from_account.unwrap()), password, ) }; let from_address = Address::new(network_type, from_address_payload.clone()); - let to_address: Address = AddressParser::default() - .set_network(network_type) - .from_matches(m, "to-address")?; - - if let Some(from_locked_address) = from_locked_address_opt.as_ref() { + if let Some(from_locked_address) = from_locked_address.as_ref() { let args = from_locked_address.payload().args(); let err_prefix = "Invalid from-locked-address's args"; if args.len() != 28 { @@ -230,7 +263,6 @@ impl<'a> WalletSubCommand<'a> { { return Err(format!("Invalid to-address: {}", to_address)); } - let to_data = get_to_data(m)?; check_capacity(to_capacity, to_data.len())?; let genesis_info = self.genesis_info()?; @@ -271,7 +303,7 @@ impl<'a> WalletSubCommand<'a> { from_address.payload().clone() }; - if let Some(from_locked_address) = from_locked_address_opt.as_ref() { + if let Some(from_locked_address) = from_locked_address.as_ref() { lock_hashes.insert( 0, Script::from(from_locked_address.payload()).calc_script_hash(), @@ -350,7 +382,13 @@ impl<'a> WalletSubCommand<'a> { .map(|(output, _)| output) }; for info in &infos { - helper.add_input(info.out_point(), None, &mut get_live_cell_fn, &genesis_info)?; + helper.add_input( + info.out_point(), + None, + &mut get_live_cell_fn, + &genesis_info, + skip_check, + )?; } let to_output = CellOutput::new_builder() .capacity(Capacity::shannons(to_capacity).pack()) @@ -365,38 +403,114 @@ impl<'a> WalletSubCommand<'a> { helper.add_output(change_output, Bytes::default()); } - let signer = if let Some(from_privkey) = from_privkey_opt { + let signer = if let Some(from_privkey) = from_privkey { get_privkey_signer(from_privkey) } else { get_keystore_signer(key_store, path_map, from_lock_arg, password) }; - for (lock_arg, signature) in helper.sign_inputs(signer, &mut get_live_cell_fn)? { + for (lock_arg, signature) in + helper.sign_inputs(signer, &mut get_live_cell_fn, skip_check)? + { helper.add_signature(lock_arg, signature)?; } - let tx = helper.build_tx(&mut get_live_cell_fn)?; - self.send_transaction(tx, format, color, debug) + let tx = helper.build_tx(&mut get_live_cell_fn, skip_check)?; + let tx_hash = self + .rpc_client + .send_transaction(tx.data()) + .map_err(|err| format!("Send transaction error: {}", err))?; + assert_eq!(tx.hash(), tx_hash.pack()); + Ok(tx) } - fn send_transaction( + pub fn get_capacity(&mut self, lock_hashes: Vec) -> Result<(u64, u64, u64), String> { + let max_mature_number = get_max_mature_number(self.rpc_client)?; + self.with_db(|db| { + let mut total_capacity = 0; + let mut dao_capacity = 0; + let mut immature_capacity = 0; + let mut terminator = |_idx: usize, info: &LiveCellInfo| { + if !is_mature(info, max_mature_number) { + immature_capacity += info.capacity; + } + if info + .type_hashes + .as_ref() + .filter(|(code_hash, _)| code_hash == &DAO_TYPE_HASH) + .is_some() + { + dao_capacity += info.capacity; + } + total_capacity += info.capacity; + (false, false) + }; + for lock_hash in lock_hashes { + let _ = db.get_live_cells_by_lock(lock_hash, None, &mut terminator); + } + (total_capacity, immature_capacity, dao_capacity) + }) + } + + pub fn get_live_cells( &mut self, - transaction: TransactionView, - format: OutputFormat, - color: bool, - debug: bool, - ) -> Result { - let transaction_view: ckb_jsonrpc_types::TransactionView = transaction.clone().into(); - if debug { - println!( - "[Send Transaction]:\n{}", - transaction_view.render(format, color) - ); - } + to_number: u64, + limit: usize, + mut func: F, + fast_mode: bool, + ) -> Result<(LiveCells, Option<(u32, u64)>), String> + where + F: FnMut( + &IndexDatabase, + &mut dyn FnMut(usize, &LiveCellInfo) -> (bool, bool), + ) -> Vec, + { + let (infos, total_count, total_capacity, current_count, current_capacity) = + self.with_db(|db| { + let mut total_count: u32 = 0; + let mut total_capacity: u64 = 0; + let mut current_count: u32 = 0; + let mut current_capacity: u64 = 0; + let mut terminator = |idx, info: &LiveCellInfo| { + let stop = idx >= limit || info.number > to_number; + let push_info = !stop; + total_count += 1; + total_capacity += info.capacity; + if push_info { + current_count += 1; + current_capacity += info.capacity; + } + (fast_mode && stop, push_info) + }; + let infos = func(&db, &mut terminator); + ( + infos, + total_count, + total_capacity, + current_count, + current_capacity, + ) + })?; - let resp = self - .rpc_client - .send_transaction(transaction.data()) - .map_err(|err| format!("Send transaction error: {}", err))?; - Ok(resp.render(format, color)) + let max_mature_number = get_max_mature_number(self.rpc_client)?; + let live_cells = infos + .into_iter() + .map(|info| { + let mature = is_mature(&info, max_mature_number); + LiveCell { info, mature } + }) + .collect::>(); + let total = if fast_mode { + None + } else { + Some((total_count, total_capacity)) + }; + Ok(( + LiveCells { + live_cells, + current_count, + current_capacity, + }, + total, + )) } } @@ -409,7 +523,33 @@ impl<'a> CliSubCommand for WalletSubCommand<'a> { debug: bool, ) -> Result { match matches.subcommand() { - ("transfer", Some(m)) => self.transfer(m, format, color, debug), + ("transfer", Some(m)) => { + let to_data = get_to_data(m)?; + let args = TransferArgs { + privkey_path: m.value_of("privkey-path").map(|s| s.to_string()), + from_account: m.value_of("from-account").map(|s| s.to_string()), + from_locked_address: m.value_of("from-locked-address").map(|s| s.to_string()), + password: None, + capacity: get_arg_value(m, "capacity")?, + tx_fee: get_arg_value(m, "tx-fee")?, + derive_receiving_address_length: Some(get_arg_value( + m, + "derive-receiving-address-length", + )?), + derive_change_address: m + .value_of("derive-change-address") + .map(|s| s.to_string()), + to_address: get_arg_value(m, "to-address")?, + to_data: Some(to_data), + }; + let tx = self.transfer(args, false)?; + if debug { + Ok(ckb_jsonrpc_types::TransactionView::from(tx).render(format, color)) + } else { + let tx_hash: H256 = tx.hash().unpack(); + Ok(tx_hash.render(format, color)) + } + } ("get-capacity", Some(m)) => { let lock_hash_opt: Option = FixedHashParser::::default().from_matches_opt(m, "lock-hash", false)?; @@ -454,53 +594,18 @@ impl<'a> CliSubCommand for WalletSubCommand<'a> { lock_hashes }; - let max_mature_number = get_max_mature_number(self.rpc_client)?; - let (total_capacity, immature_capacity, free_capacity, dao_capacity) = self - .with_db(|db| { - let mut total_capacity = 0; - let mut free_capacity = 0; - let mut dao_capacity = 0; - let mut immature_capacity = 0; - let mut terminator = |_idx: usize, info: &LiveCellInfo| { - if !is_mature(info, max_mature_number) { - immature_capacity += info.capacity; - } - if info - .type_hashes - .as_ref() - .filter(|(code_hash, _)| code_hash == &DAO_TYPE_HASH) - .is_some() - { - dao_capacity += info.capacity; - } else { - free_capacity += info.capacity; - } - total_capacity += info.capacity; - (false, false) - }; - for lock_hash in lock_hashes { - let _ = db.get_live_cells_by_lock(lock_hash, None, &mut terminator); - } - ( - total_capacity, - immature_capacity, - free_capacity, - dao_capacity, - ) - })?; + let (total, immature, dao) = self.get_capacity(lock_hashes)?; - let mut resp = serde_json::json!({ - "total": format!("{:#}", HumanCapacity::from(total_capacity)) - }); - if immature_capacity > 0 { + let mut resp = + serde_json::json!({ "total": format!("{:#}", HumanCapacity::from(total)) }); + if immature > 0 { resp["immature"] = - serde_json::json!(format!("{:#}", HumanCapacity::from(immature_capacity))); + serde_json::json!(format!("{:#}", HumanCapacity::from(immature))); } - if dao_capacity > 0 { - resp["dao"] = - serde_json::json!(format!("{:#}", HumanCapacity::from(dao_capacity))); - resp["free"] = - serde_json::json!(format!("{:#}", HumanCapacity::from(free_capacity))); + if dao > 0 { + let free = total - dao; + resp["dao"] = serde_json::json!(format!("{:#}", HumanCapacity::from(dao))); + resp["free"] = serde_json::json!(format!("{:#}", HumanCapacity::from(free))); } Ok(resp.render(format, color)) } @@ -516,6 +621,7 @@ impl<'a> CliSubCommand for WalletSubCommand<'a> { FromStrParser::::default().from_matches_opt(m, "from", false)?; let to_number_opt: Option = FromStrParser::::default().from_matches_opt(m, "to", false)?; + let fast_mode = m.is_present("fast-mode"); let network_type = get_network_type(self.rpc_client)?; let lock_hash_opt = if lock_hash_opt.is_none() { @@ -535,30 +641,24 @@ impl<'a> CliSubCommand for WalletSubCommand<'a> { } let to_number = to_number_opt.unwrap_or(std::u64::MAX); - let (infos, total_count, total_capacity, current_count, current_capacity) = self - .with_db(|db| { - let mut total_count: u32 = 0; - let mut total_capacity: u64 = 0; - let mut current_count: u32 = 0; - let mut current_capacity: u64 = 0; - let terminator = |idx, info: &LiveCellInfo| { - let stop = idx >= limit || info.number > to_number; - let push_info = !stop; - total_count += 1; - total_capacity += info.capacity; - if push_info { - current_count += 1; - current_capacity += info.capacity; - } - (false, push_info) - }; - let infos = if let Some(lock_hash) = lock_hash_opt { + let ( + LiveCells { + live_cells, + current_count, + current_capacity, + }, + total, + ) = self.get_live_cells( + to_number, + limit, + |db, terminator| { + if let Some(lock_hash) = &lock_hash_opt { db.get_live_cells_by_lock( lock_hash.clone().pack(), from_number_opt, terminator, ) - } else if let Some(type_hash) = type_hash_opt { + } else if let Some(type_hash) = &type_hash_opt { db.get_live_cells_by_type( type_hash.clone().pack(), from_number_opt, @@ -570,31 +670,30 @@ impl<'a> CliSubCommand for WalletSubCommand<'a> { from_number_opt, terminator, ) - }; - ( - infos, - total_count, - total_capacity, - current_count, - current_capacity, - ) - })?; - let max_mature_number = get_max_mature_number(self.rpc_client)?; - let resp = serde_json::json!({ - "live_cells": infos.into_iter().map(|info| { + } + }, + fast_mode, + )?; + let mut resp = serde_json::json!({ + "live_cells": live_cells.into_iter().map(|live_cell| { + let LiveCell{ info, mature } = live_cell; let mut value = serde_json::to_value(&info).unwrap(); - let mature = serde_json::Value::Bool(is_mature(&info, max_mature_number)); + let mature = serde_json::Value::Bool(mature); let capacity_string = serde_json::Value::String(format!("{:#}", HumanCapacity::from(info.capacity))); let map = value.as_object_mut().unwrap(); map.insert("capacity".to_string(), capacity_string); map.insert("mature".to_string(), mature); value }).collect::>(), - "total_capacity": format!("{:#}", HumanCapacity::from(total_capacity)), - "current_capacity": format!("{:#}", HumanCapacity::from(current_capacity)), - "total_count": total_count, "current_count": current_count, + "current_capacity": format!("{:#}", HumanCapacity::from(current_capacity)), }); + if let Some((total_count, total_capacity)) = total { + resp["total_count"] = serde_json::json!(total_count); + resp["total_capacity"] = + serde_json::json!(format!("{:#}", HumanCapacity::from(total_capacity))); + } + Ok(resp.render(format, color)) } ("top-capacity", Some(m)) => { @@ -634,20 +733,13 @@ fn get_keystore_signer( password: String, ) -> SignerFn { Box::new(move |lock_args: &HashSet, message: &H256| { - let path = if lock_args.contains(&account) { - None + let path: &[_] = if lock_args.contains(&account) { + &[] } else { - let mut path_opt = None; - for lock_arg in lock_args { - if let Some(path) = path_map.get(lock_arg) { - path_opt = Some(path); - break; - } + match lock_args.iter().find_map(|lock_arg| path_map.get(lock_arg)) { + None => return Ok(None), + Some(path) => path.as_ref(), } - if path_opt.is_none() { - return Ok(None); - } - path_opt }; if message == &h256!("0x0") { return Ok(Some([0u8; 65])); @@ -655,15 +747,33 @@ fn get_keystore_signer( let signature = key_store .sign_recoverable_with_password(&account, path, message, password.as_bytes()) .map_err(|err| err.to_string())?; - Ok(Some(serialize_signature(&signature))) }) } -fn is_mature(info: &LiveCellInfo, max_mature_number: u64) -> bool { - // Not cellbase cell - info.index.tx_index > 0 - // Live cells in genesis are all mature - || info.number == 0 - || info.number <= max_mature_number +#[derive(Clone, Debug)] +pub struct TransferArgs { + pub privkey_path: Option, + pub from_account: Option, + pub from_locked_address: Option, + pub password: Option, + pub derive_receiving_address_length: Option, + pub derive_change_address: Option, + pub capacity: String, + pub tx_fee: String, + pub to_address: String, + pub to_data: Option, +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct LiveCells { + pub live_cells: Vec, + pub current_count: u32, + pub current_capacity: u64, +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct LiveCell { + pub info: LiveCellInfo, + pub mature: bool, } diff --git a/src/utils/arg.rs b/src/utils/arg.rs index f825f1c3..c2f89efc 100644 --- a/src/utils/arg.rs +++ b/src/utils/arg.rs @@ -174,7 +174,7 @@ pub fn from_block_number<'a, 'b>() -> Arg<'a, 'b> { .long("from") .takes_value(true) .validator(|input| FromStrParser::::default().validate(input)) - .help("From block number") + .help("From block number (inclusive)") } pub fn to_block_number<'a, 'b>() -> Arg<'a, 'b> { @@ -182,7 +182,7 @@ pub fn to_block_number<'a, 'b>() -> Arg<'a, 'b> { .long("to") .takes_value(true) .validator(|input| FromStrParser::::default().validate(input)) - .help("To block number") + .help("To block number (inclusive)") } pub fn top_n<'a, 'b>() -> Arg<'a, 'b> { diff --git a/src/utils/arg_parser.rs b/src/utils/arg_parser.rs index 34831af8..fc40ebc1 100644 --- a/src/utils/arg_parser.rs +++ b/src/utils/arg_parser.rs @@ -19,9 +19,7 @@ pub trait ArgParser { fn parse(&self, input: &str) -> Result; fn validate(&self, input: String) -> Result<(), String> { - self.parse(&input) - .map(|_| ()) - .map_err(|err| err.to_string()) + self.parse(&input).map(|_| ()) } fn from_matches>(&self, matches: &ArgMatches, name: &str) -> Result { diff --git a/src/utils/completer.rs b/src/utils/completer.rs index ed2140b9..3d4cdac8 100644 --- a/src/utils/completer.rs +++ b/src/utils/completer.rs @@ -79,7 +79,7 @@ impl<'a, 'b> CkbCompleter<'a, 'b> { .map(|aliases| { aliases .iter() - .map(|(alias, _)| (alias.to_string(), alias.to_string())) + .map(|(alias, _)| ((*alias).to_owned(), (*alias).to_owned())) .collect::>() }) .unwrap_or_else(|| vec![]), @@ -158,7 +158,6 @@ impl<'a, 'b> Completer for CkbCompleter<'a, 'b> { if word_lower.is_empty() { let pairs = tmp_pair - .clone() .into_iter() .map(|(display, replacement)| Pair { display, @@ -182,7 +181,6 @@ impl<'a, 'b> Completer for CkbCompleter<'a, 'b> { .any(|ref mut x| x.replacement.to_lowercase().contains(&word_lower)) { let pairs = tmp_pair - .clone() .into_iter() .filter(|(_, replacement)| replacement.to_lowercase().contains(&word_lower)) .map(|(display, replacement)| Pair { diff --git a/src/utils/other.rs b/src/utils/other.rs index 42493d93..228091ac 100644 --- a/src/utils/other.rs +++ b/src/utils/other.rs @@ -6,7 +6,7 @@ use std::thread; use std::time::{Duration, SystemTime, UNIX_EPOCH}; use ckb_hash::blake2b_256; -use ckb_index::VERSION; +use ckb_index::{LiveCellInfo, VERSION}; use ckb_sdk::{ calc_max_mature_number, constants::{CELLBASE_MATURITY, MIN_SECP_CELL_CAPACITY, ONE_CKB}, @@ -80,7 +80,7 @@ pub fn get_singer( let prompt = format!("Password for [{:x}]", lock_arg); let password = read_password(false, Some(prompt.as_str()))?; let signature = key_store - .sign_recoverable_with_password(lock_arg, None, tx_hash_hash, password.as_bytes()) + .sign_recoverable_with_password(lock_arg, &[], tx_hash_hash, password.as_bytes()) .map_err(|err| err.to_string())?; let (recov_id, data) = signature.serialize_compact(); let mut signature_bytes = [0u8; 65]; @@ -314,3 +314,18 @@ pub fn serialize_signature(signature: &secp256k1::recovery::RecoverableSignature signature_bytes[64] = recov_id.to_i32() as u8; signature_bytes } + +pub fn is_mature(info: &LiveCellInfo, max_mature_number: u64) -> bool { + // Not cellbase cell + info.index.tx_index > 0 + // Live cells in genesis are all mature + || info.number == 0 + || info.number <= max_mature_number +} + +pub fn get_arg_value<'a>(matches: &'a ArgMatches, name: &str) -> Result { + matches + .value_of(name) + .map(|s| s.to_string()) + .ok_or_else(|| format!("<{}> is required", name)) +} diff --git a/src/utils/yaml_ser.rs b/src/utils/yaml_ser.rs index 2513fbd3..66ab5605 100644 --- a/src/utils/yaml_ser.rs +++ b/src/utils/yaml_ser.rs @@ -805,7 +805,7 @@ where T: ser::Serialize, { let mut vec = Vec::with_capacity(128); - to_writer(&mut vec, value, color).map_err(|err| err.to_string())?; + to_writer(&mut vec, value, color)?; Ok(vec) } diff --git a/test/Cargo.toml b/test/Cargo.toml index 1b138e8e..c1a71fd1 100644 --- a/test/Cargo.toml +++ b/test/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cli-test" -version = "0.27.1" +version = "0.30.0" authors = ["Linfeng Qian "] edition = "2018" @@ -14,11 +14,11 @@ env_logger = "0.6" toml = "0.5.0" serde_yaml = "0.8.9" ckb-sdk = { path = "../ckb-sdk" } -ckb-types = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1" } -ckb-app-config = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1" } -ckb-chain-spec = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1" } -ckb-crypto = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1", features = ["secp"] } -ckb-hash = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.27.1-rc1" } +ckb-types = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1" } +ckb-app-config = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1" } +ckb-chain-spec = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1" } +ckb-crypto = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1", features = ["secp"] } +ckb-hash = { git = "https://github.com/nervosnetwork/ckb", tag = "v0.30.0-rc1" } regex = "1.1.6" # Prevent this from interfering with workspaces