From fb077d700416e730ac7219de0f3d4d151dbee61c Mon Sep 17 00:00:00 2001 From: Yucong Sun Date: Thu, 14 Nov 2019 12:05:12 -0800 Subject: [PATCH 1/2] Copying rust client and change it to use libra-dev in someplaces --- .circleci/config.yml | 2 +- build.sh | 8 +- libra-dev/include/data.h | 1 + rust/.gitignore | 4 + rust/Cargo.lock | 3282 ++++++++++++++++++++++++++++++ rust/Cargo.toml | 58 + rust/build.rs | 28 + rust/consensus_peers.config.toml | 29 + rust/run.sh | 41 + rust/src/account_commands.rs | 152 ++ rust/src/bindings.rs | 5 + rust/src/client_proxy.rs | 1210 +++++++++++ rust/src/commands.rs | 141 ++ rust/src/dev_commands.rs | 106 + rust/src/grpc_client.rs | 305 +++ rust/src/lib.rs | 73 + rust/src/main.rs | 198 ++ rust/src/query_commands.rs | 230 +++ rust/src/transfer_commands.rs | 51 + rust/update_peers.sh | 2 + 20 files changed, 5924 insertions(+), 2 deletions(-) create mode 100644 rust/.gitignore create mode 100644 rust/Cargo.lock create mode 100644 rust/Cargo.toml create mode 100644 rust/build.rs create mode 100644 rust/consensus_peers.config.toml create mode 100755 rust/run.sh create mode 100644 rust/src/account_commands.rs create mode 100644 rust/src/bindings.rs create mode 100644 rust/src/client_proxy.rs create mode 100644 rust/src/commands.rs create mode 100644 rust/src/dev_commands.rs create mode 100644 rust/src/grpc_client.rs create mode 100644 rust/src/lib.rs create mode 100644 rust/src/main.rs create mode 100644 rust/src/query_commands.rs create mode 100644 rust/src/transfer_commands.rs create mode 100755 rust/update_peers.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index 6a8da638..a42cf132 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -11,7 +11,7 @@ jobs: command: | sudo sh -c 'echo "deb http://deb.debian.org/debian stretch-backports main" > /etc/apt/sources.list.d/backports.list' sudo apt-get update - sudo apt-get -t stretch-backports install cmake python3-dev python3-venv + sudo apt-get -t stretch-backports install cmake python3-dev python3-venv clang llvm - run: name: Build everything command: | diff --git a/build.sh b/build.sh index 23a07c0f..3130bd7c 100755 --- a/build.sh +++ b/build.sh @@ -3,11 +3,17 @@ set -euo pipefail # Build libra-dev first cd libra-dev +cargo build cargo test +cd .. + +# Then build rust client +cd rust cargo build +cargo test cd .. -# Then build everything else +# C Stuff rm -rf build mkdir build cd build diff --git a/libra-dev/include/data.h b/libra-dev/include/data.h index 59199a3d..be09775d 100644 --- a/libra-dev/include/data.h +++ b/libra-dev/include/data.h @@ -5,6 +5,7 @@ extern "C" { #endif +#include #include #include diff --git a/rust/.gitignore b/rust/.gitignore new file mode 100644 index 00000000..70d28dac --- /dev/null +++ b/rust/.gitignore @@ -0,0 +1,4 @@ +/target + +# Client stuff +/client.mnemonic \ No newline at end of file diff --git a/rust/Cargo.lock b/rust/Cargo.lock new file mode 100644 index 00000000..b31e2241 --- /dev/null +++ b/rust/Cargo.lock @@ -0,0 +1,3282 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "adler32" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "admission-control-proto" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +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)", + "grpcio 0.5.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "grpcio-compiler 0.5.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-mempool-shared-proto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "prost 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "prost-build 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "aho-corasick" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ansi_term" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "arc-swap" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "arrayref" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "arrayvec" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "atty" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "autocfg" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "backtrace" +version = "0.3.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +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.65 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "backtrace-sys" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "base64" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "base64" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "bech32" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "bindgen" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", + "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 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "shlex 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "which 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "bit-set" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "bit-vec" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "bit-vec" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "bitflags" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "blake2" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "blake2b_simd" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "block-buffer" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "block-padding" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "bs58" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "byte-tools" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "bytecode-source-map" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "bytecode-verifier 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "codespan 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "codespan-reporting 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ir-to-bytecode-syntax 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", + "structopt 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "vm 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + +[[package]] +name = "bytecode-verifier" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "mirai-annotations 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)", + "vm 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "vm-runtime-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + +[[package]] +name = "byteorder" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "bytes" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "c2-chacha" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "c_linked_list" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "cc" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "cexpr" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "chrono" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", + "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "clang-sys" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "clap" +version = "2.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.13 (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.6 (registry+https://github.com/rust-lang/crates.io-index)", + "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "clear_on_drop" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "client" +version = "0.1.0" +dependencies = [ + "admission-control-proto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "bindgen 0.51.1 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crash-handler 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "grpcio 0.5.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-canonical-serialization 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-config 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-dev 0.1.0", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-metrics 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-tools 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-wallet 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "num-traits 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", + "proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", + "reqwest 0.9.22 (registry+https://github.com/rust-lang/crates.io-index)", + "rust_decimal 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rustyline 5.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", + "structopt 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "transaction-builder 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + +[[package]] +name = "cloudabi" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "cmake" +version = "0.1.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "codespan" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "codespan-reporting" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "codespan 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "constant_time_eq" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "cookie" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "cookie_store" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +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.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (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)", +] + +[[package]] +name = "crash-handler" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crc32fast" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-channel 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-deque 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-epoch 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-queue 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-channel" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-deque" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-queue" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam-utils" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "crossbeam-utils" +version = "0.7.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)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "crypto-mac" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "curve25519-dalek" +version = "1.2.3" +source = "git+https://github.com/calibra/curve25519-dalek.git?branch=fiat#caa6b9028e90351d939cbee102ce91b1a1ca032b" +dependencies = [ + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "curve25519-dalek" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "data-encoding" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "derivative" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "derive-new" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.6 (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.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "digest" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "dirs" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "dirs-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "dirs-sys" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (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)", +] + +[[package]] +name = "dtoa" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "ed25519-dalek" +version = "1.0.0-pre.1" +source = "git+https://github.com/calibra/ed25519-dalek.git?branch=fiat#ecb1d36ade13e719c71ac818942170a2410ae910" +dependencies = [ + "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "curve25519-dalek 1.2.3 (git+https://github.com/calibra/curve25519-dalek.git?branch=fiat)", + "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.0-pre.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "curve25519-dalek 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "either" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "encoding_rs" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "endian-type" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "env_logger" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "atty 0.2.13 (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.1 (registry+https://github.com/rust-lang/crates.io-index)", + "termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "errno" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "errno-dragonfly 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "error-chain" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "failure" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "failure_derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.6 (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.8 (registry+https://github.com/rust-lang/crates.io-index)", + "synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fake-simd" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "fixedbitset" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "flate2" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +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.65 (registry+https://github.com/rust-lang/crates.io-index)", + "miniz_oxide 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fnv" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "fuchsia-cprng" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.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)", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "futures" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "futures-cpupool" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "gcc" +version = "0.3.55" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "generic-array" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "get_if_addrs" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "c_linked_list 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "get_if_addrs-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "get_if_addrs-sys" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "getrandom" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "glob" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "grpcio" +version = "0.5.0-alpha.4" +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)", + "grpcio-sys 0.5.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "grpcio-compiler" +version = "0.5.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "derive-new 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "prost-build 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "prost-types 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "grpcio-sys" +version = "0.5.0-alpha.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bindgen 0.51.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", + "cmake 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", + "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "h2" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +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.19 (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)", +] + +[[package]] +name = "heck" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-segmentation 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hermit-abi" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "hex" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "hex_fmt" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "hmac" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "http" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "http-body" +version = "0.1.0" +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)", + "http 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "httparse" +version = "1.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "humantime" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "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.19 (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.8 (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.10 (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.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "idna" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-normalization 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "idna" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-normalization 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "indexmap" +version = "1.3.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)", +] + +[[package]] +name = "iovec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ir-to-bytecode" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "bytecode-source-map 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "codespan 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "codespan-reporting 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ir-to-bytecode-syntax 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "vm 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + +[[package]] +name = "ir-to-bytecode-syntax" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "codespan 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "hex 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)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "itertools" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "itoa" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "keccak" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "libc" +version = "0.2.65" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "libloading" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libra-canonical-serialization" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libra-config" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "get_if_addrs 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-tools 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "mirai-annotations 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-multiaddr 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libra-crypto" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +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)", + "curve25519-dalek 1.2.3 (git+https://github.com/calibra/curve25519-dalek.git?branch=fiat)", + "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ed25519-dalek 1.0.0-pre.1 (git+https://github.com/calibra/ed25519-dalek.git?branch=fiat)", + "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-canonical-serialization 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-crypto-derive 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-nibble 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "pairing 0.14.2 (registry+https://github.com/rust-lang/crates.io-index)", + "proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proptest-derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", + "threshold_crypto 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "x25519-dalek 0.5.2 (git+https://github.com/calibra/x25519-dalek.git?branch=fiat)", +] + +[[package]] +name = "libra-crypto-derive" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "proc-macro2 1.0.6 (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.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libra-dev" +version = "0.1.0" +dependencies = [ + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + +[[package]] +name = "libra-failure-ext" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-failure-macros 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + +[[package]] +name = "libra-failure-macros" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" + +[[package]] +name = "libra-logger" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.8.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)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-async 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-envlogger 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-scope 4.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-term 2.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "thread-id 3.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libra-mempool-shared-proto" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "prost 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "prost-build 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libra-metrics" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "grpcio 0.5.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "prometheus 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libra-nibble" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libra-proptest-helpers" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "crossbeam 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proptest-derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libra-tools" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libra-types" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "bech32 0.6.0 (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)", + "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-canonical-serialization 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-proptest-helpers 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "num_enum 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proptest-derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "prost-build 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "radix_trie 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libra-wallet" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ed25519-dalek 1.0.0-pre.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "lock_api" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "log" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "mach_o_sys" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "matches" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "maybe-uninit" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "memchr" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "memoffset" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "memsec" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "getrandom 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "mach_o_sys 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)", +] + +[[package]] +name = "mime" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "mime_guess" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", + "unicase 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "miniz_oxide" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "mio" +version = "0.6.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.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.65 (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)", +] + +[[package]] +name = "miow" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "mirai-annotations" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "multimap" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "net2" +version = "0.2.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "nibble_vec" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "nix" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.47 (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.65 (registry+https://github.com/rust-lang/crates.io-index)", + "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "nom" +version = "4.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "num" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "num-bigint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "num-complex 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", + "num-iter 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", + "num-rational 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "num-bigint" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "num-complex" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "num-integer" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "num-iter" +version = "0.1.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "num-rational" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "num-bigint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "num-traits" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "num_cpus" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "hermit-abi 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "num_enum" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "derivative 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "num_enum_derive 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "num_enum_derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.6 (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.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "opaque-debug" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "ordermap" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "pairing" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parity-multiaddr" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", + "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (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)", +] + +[[package]] +name = "parity-multihash" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +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.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.0 (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)", +] + +[[package]] +name = "parking_lot" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lock_api 0.3.1 (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)", +] + +[[package]] +name = "parking_lot_core" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +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.65 (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)", +] + +[[package]] +name = "pbkdf2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "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)", + "hmac 0.7.1 (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.0 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "peeking_take_while" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "percent-encoding" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "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)", +] + +[[package]] +name = "pkg-config" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "ppv-lite86" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "proc-macro-crate" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "toml 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro-error" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.6 (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.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro2" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro2" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "prometheus" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proptest" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.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)", + "num-traits 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proptest-derive" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "prost" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", + "prost-derive 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "prost-build" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "multimap 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "prost-types 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "which 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "prost-derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.8.1 (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)", +] + +[[package]] +name = "prost-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "protobuf" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "publicsuffix" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +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.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "quick-error" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "quote" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "quote" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "radix_trie" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "endian-type 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "nibble_vec 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (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)", +] + +[[package]] +name = "rand" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (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)", +] + +[[package]] +name = "rand" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (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)", +] + +[[package]] +name = "rand" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "getrandom 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (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)", +] + +[[package]] +name = "rand04" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand04_compat" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand04 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_chacha" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_chacha" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "rand_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "getrandom 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_hc" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_isaac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rand_jitter" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.65 (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)", +] + +[[package]] +name = "rand_os" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (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)", +] + +[[package]] +name = "rand_pcg" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "rand_xorshift" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rdrand" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "redox_syscall" +version = "0.1.56" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "redox_users" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "regex" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +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.12 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "regex-syntax" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "remove_dir_all" +version = "0.5.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)", +] + +[[package]] +name = "reqwest" +version = "0.9.22" +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.20 (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.19 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.12.35 (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.14 (registry+https://github.com/rust-lang/crates.io-index)", + "mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (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.8 (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.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.11 (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)", +] + +[[package]] +name = "rust-argon2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2b_simd 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rust_decimal" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "num 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "rustc-hash" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rusty-fork" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wait-timeout 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rustyline" +version = "5.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (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.14.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.6 (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)", +] + +[[package]] +name = "ryu" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "safemem" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "same-file" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "scopeguard" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "serde" +version = "1.0.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_derive" +version = "1.0.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.6 (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.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_json" +version = "1.0.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +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.102 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "serde_urlencoded" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +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.102 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sha-1" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "sha2" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "sha3" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "shlex" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "slab" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "slog" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "slog-async" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "slog-envlogger" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-async 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-scope 4.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-stdlog 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-term 2.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "slog-scope" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arc-swap 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "slog-stdlog" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "slog-scope 4.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "slog-term" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "term 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "smallvec" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "stdlib" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "bytecode-source-map 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "bytecode-verifier 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "ir-to-bytecode 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + +[[package]] +name = "string" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "structopt" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", + "structopt-derive 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "structopt-derive" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-error 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.6 (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.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "subtle" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "subtle" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "syn" +version = "0.15.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "syn" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.6 (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)", +] + +[[package]] +name = "synstructure" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.6 (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.8 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "take_mut" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "tempfile" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (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)", +] + +[[package]] +name = "term" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "termcolor" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-width 0.1.6 (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.65 (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)", +] + +[[package]] +name = "thread_local" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "threshold_crypto" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "hex_fmt 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "memsec 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", + "pairing 0.14.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand04_compat 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "time" +version = "0.1.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.65 (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)", +] + +[[package]] +name = "tiny-keccak" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crunchy 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio" +version = "0.1.22" +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)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.11.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.8 (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.10 (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.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-buf" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "tokio-current-thread" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-executor" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "tokio-io" +version = "0.1.12" +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)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-reactor" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +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.19 (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.8 (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)", +] + +[[package]] +name = "tokio-sync" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-tcp" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.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.19 (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.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-threadpool" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +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.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-timer" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +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.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "toml" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "transaction-builder" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "ir-to-bytecode 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-config 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "stdlib 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "vm 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + +[[package]] +name = "try-lock" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "try_from" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "typenum" +version = "1.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "unicase" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "version_check 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "unicode-normalization" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "unicode-segmentation" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "unicode-width" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "unicode-xid" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "unicode-xid" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "unsigned-varint" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "url" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "url" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "utf8parse" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "uuid" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "vec_map" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "version_check" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "version_check" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "vm" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hex 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)", + "libra-canonical-serialization 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "mirai-annotations 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "vm-runtime-types" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "bit-vec 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-canonical-serialization 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "vm 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "walkdir" +version = "2.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "want" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + +[[package]] +name = "wasi" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "which" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "which" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi-util" +version = "0.1.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)", +] + +[[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)", +] + +[[package]] +name = "winreg" +version = "0.6.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)", +] + +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "x25519-dalek" +version = "0.5.2" +source = "git+https://github.com/calibra/x25519-dalek.git?branch=fiat#8d5b63010f8466d75a4fa2fb95f573092aed5611" +dependencies = [ + "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "curve25519-dalek 1.2.3 (git+https://github.com/calibra/curve25519-dalek.git?branch=fiat)", + "rand_core 0.3.1 (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 admission-control-proto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"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 arc-swap 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f1a1eca3195b729bbd64e292ef2f5fff6b1c28504fed762ce2b1013dde4d8e92" +"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.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90" +"checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" +"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 bindgen 0.51.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ebd71393f1ec0509b553aa012b9b58e81dadbdff7130bd3b8cba576e69b32f75" +"checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80" +"checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb" +"checksum bit-vec 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a4523a10839ffae575fb08aa3423026c8cb4687eef43952afb956229d4f246f7" +"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_simd 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b83b7baab1e671718d78204225800d6b170e648188ac7dc992e9d6bddf87d0c0" +"checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" +"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 bytecode-source-map 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum bytecode-verifier 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"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 c_linked_list 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4964518bd3b4a8190e832886cdc0da9794f12e8e6c1613a9e90ff331c4c8724b" +"checksum cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)" = "aa87058dce70a3ff5621797f1506cb837edd02ac4c0ae642b4542dce802908b8" +"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.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e8493056968583b0193c1bb04d6f7684586f3726992d6c573261941a895dbd68" +"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 clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "97276801e127ffb46b66ce23f35cc96bd454fa311294bced4bbace7baa8b1d17" +"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" +"checksum cmake 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "81fb25b677f8bf1eb325017cb6bb8452f87969db0fedb4f757b297bee78a7c62" +"checksum codespan 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "004def512a9848b23a68ed110927d102b0e6d9f3dc732e28570879afde051f8c" +"checksum codespan-reporting 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab081a14ab8f9598ce826890fe896d0addee68c7a58ab49008369ccbb51510a8" +"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 crash-handler 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" +"checksum crossbeam 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "69323bff1fb41c635347b8ead484a5ca6c3f11914d784170b158d8449ab07f8e" +"checksum crossbeam-channel 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "acec9a3b0b3559f15aee4f90746c4e5e293b701c0f7d3925d24e01645267b68c" +"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.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dfd6515864a82d2f877b42813d4553292c6659498c9a2aa31bab5a15243c2700" +"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 curve25519-dalek 1.2.3 (git+https://github.com/calibra/curve25519-dalek.git?branch=fiat)" = "" +"checksum curve25519-dalek 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8b7dcd30ba50cdf88b55b033456138b7c0ac4afdc436d82e1b79f370f24cc66d" +"checksum data-encoding 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f4f47ca1860a761136924ddd2422ba77b2ea54fe8cc75b9040804a0d9d32ad97" +"checksum derivative 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "942ca430eef7a3806595a6737bc388bf51adb888d3fc0dd1b50f1c170167ee3a" +"checksum derive-new 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)" = "71f31892cd5c62e414316f2963c5689242c43d8e7bbcaaeca97e5e28c95d91d9" +"checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +"checksum dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3" +"checksum dirs-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "afa0b23de8fd801745c471deffa6e12d248f962c9fd4b4c33787b055599bde7b" +"checksum dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ea57b42383d091c85abcc2706240b94ab2a8fa1fc81c10ff23c4de06e2a90b5e" +"checksum ed25519-dalek 1.0.0-pre.1 (git+https://github.com/calibra/ed25519-dalek.git?branch=fiat)" = "" +"checksum ed25519-dalek 1.0.0-pre.2 (registry+https://github.com/rust-lang/crates.io-index)" = "845aaacc16f01178f33349e7c992ecd0cee095aa5e577f0f4dee35971bd36455" +"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" +"checksum encoding_rs 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)" = "87240518927716f79692c2ed85bfe6e98196d18c6401ec75355760233a7e12e9" +"checksum endian-type 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" +"checksum env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3" +"checksum errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c2a071601ed01b988f896ab14b95e67335d1eeb50190932a1320f7fe3cadc84e" +"checksum errno-dragonfly 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067" +"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 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 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 gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" +"checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" +"checksum get_if_addrs 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "abddb55a898d32925f3148bd281174a68eeb68bbfd9a5938a57b18f506ee4ef7" +"checksum get_if_addrs-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0d04f9fb746cf36b191c00f3ede8bde9c8e64f9f4b05ae2694a9ccf5e3f5ab48" +"checksum getrandom 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "e7db7ca94ed4cd01190ceee0d8a8052f08a247aa1b469a7f68c6a3b71afcf407" +"checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" +"checksum grpcio 0.5.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ba77e7b81b58a12e2dff1271c20a1f8cd74916de09355a5777470d911e8de41c" +"checksum grpcio-compiler 0.5.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "3c8c6f6d181ac240958853a3b95a4eac9b23816a0a922b9d30b991142938b9ff" +"checksum grpcio-sys 0.5.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c8aebf59fdf3668edf163c1948ceca64c4ebb733d71c9055a12219d336bd5d51" +"checksum h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" +"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" +"checksum hermit-abi 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "307c3c9f937f38e3534b1d6447ecf090cafcc9744e4a6360e8b037b2cf5af120" +"checksum hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" +"checksum hex_fmt 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f" +"checksum hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" +"checksum http 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)" = "d7e06e336150b178206af098a055e3621e8336027e2b4d126bda0bc64824baaf" +"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 humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" +"checksum hyper 0.12.35 (registry+https://github.com/rust-lang/crates.io-index)" = "9dbe6ed1438e1f8ad955a4701e9a944938e9519f6888d12d8558b645e247d5f6" +"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 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 ir-to-bytecode 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum ir-to-bytecode-syntax 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum itertools 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "87fa75c9dea7b07be3138c49abbb83fd4bea199b5cdc76f9804458edc5da0d6e" +"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" +"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 lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +"checksum libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)" = "1a31a0627fdf1f6a39ec0dd577e101440b7db22672c0901fe00a9a6fbb5c24e8" +"checksum libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" +"checksum libra-canonical-serialization 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum libra-config 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum libra-crypto-derive 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum libra-failure-macros 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum libra-mempool-shared-proto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum libra-metrics 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum libra-nibble 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum libra-proptest-helpers 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum libra-tools 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum libra-wallet 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8912e782533a93a167888781b836336a6ca5da6175c05944c86cf28c31104dc" +"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" +"checksum mach_o_sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3e854583a83f20cf329bb9283366335387f7db59d640d1412167e05fedb98826" +"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 memoffset 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "75189eb85871ea5c2e2c15abbdd541185f63b408415e5051f5cac122d8c774b9" +"checksum memsec 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ccabb92f665f997bcb4f3ade019a8e07315148d8bcef3e65fbc5dbd65a22eb04" +"checksum mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "dd1d63acd1b78403cc0c325605908475dd9b9a3acbf65ed8bcab97e27014afcf" +"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.19 (registry+https://github.com/rust-lang/crates.io-index)" = "83f51996a3ed004ef184e16818edc51fadffe8e7ca68be67f9dee67d84d0ff23" +"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" +"checksum mirai-annotations 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7968d6cdc3c7a9632e45d738fd07fde89d04bbb0e88e7abb058871a82fa92645" +"checksum multimap 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2eb04b9f127583ed176e163fb9ec6f3e793b87e21deedd5734a69386a18a0151" +"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" +"checksum nibble_vec 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c8d77f3db4bce033f4d04db08079b2ef1c3d02b44e86f25d08886fafa7756ffa" +"checksum nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6c722bee1037d430d0f8e687bbdbf222f27cc6e4e68d5caf630857bb2b6dbdce" +"checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" +"checksum num 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cf4825417e1e1406b3782a8ce92f4d53f26ec055e3622e1881ca8e9f5f9e08db" +"checksum num-bigint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f9c3f34cdd24f334cb265d9bf8bfa8a241920d026916785747a92f0e55541a1a" +"checksum num-complex 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fcb0cf31fb3ff77e6d2a6ebd6800df7fdcd106f2ad89113c9130bcd07f93dffc" +"checksum num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09" +"checksum num-iter 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "76bd5272412d173d6bf9afdf98db8612bbabc9a7a830b7bfc9c188911716132e" +"checksum num-rational 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f2885278d5fe2adc2f75ced642d52d879bffaceb5a2e0b1d4309ffdfb239b454" +"checksum num-traits 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "443c53b3c3531dfcbfa499d8893944db78474ad7a1d87fa2d94d1a2231693ac6" +"checksum num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "76dac5ed2a876980778b8b85f75a71b6cbf0db0b1232ee12f826bccb00d09d72" +"checksum num_enum 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "be601e38e20a6f3d01049d85801cb9b7a34a8da7a0da70df507bbde7735058c8" +"checksum num_enum_derive 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b59f30f6a043f2606adbd0addbf1eef6f2e28e8c4968918b63b7ff97ac0db2a7" +"checksum opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" +"checksum ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063" +"checksum pairing 0.14.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ceda21136251c6d5a422d3d798d8ac22515a6e8d3521bb60c59a8349d36d0d57" +"checksum parity-multiaddr 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "045b3c7af871285146300da35b1932bb6e4639b66c7c98e85d06a32cbc4e8fa7" +"checksum parity-multihash 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "df3a17dc27848fd99e4f87eb0f8c9baba6ede0a6d555400c850ca45254ef4ce3" +"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" +"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 pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)" = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677" +"checksum ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b" +"checksum proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e10d4b51f154c8a7fb96fd6dad097cb74b863943ec010ac94b9fd1be8861fe1e" +"checksum proc-macro-error 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "aeccfe4d5d8ea175d5f0e4a2ad0637e0f4121d63bd99d356fb1f39ab2e7c6097" +"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +"checksum proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9c9e470a8dc4aeae2dee2f335e8f533e2d4b347e1434e5671afc49b054592f27" +"checksum prometheus 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5567486d5778e2c6455b1b90ff1c558f29e751fc018130fa182e15828e728af1" +"checksum proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cf147e022eacf0c8a054ab864914a7602618adba841d800a9a9868a5237a529f" +"checksum proptest-derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d31edb17edac73aeacc947bd61462dda15220584268896a58e12f053d767f15b" +"checksum prost 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "96d14b1c185652833d24aaad41c5832b0be5616a590227c1fbff57c616754b23" +"checksum prost-build 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eb788126ea840817128183f8f603dce02cb7aea25c2a0b764359d8e20010702e" +"checksum prost-derive 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5e7dc378b94ac374644181a2247cebf59a6ec1c88b49ac77f3a94b86b79d0e11" +"checksum prost-types 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1de482a366941c8d56d19b650fac09ca08508f2a696119ee7513ad590c8bac6f" +"checksum protobuf 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "40361836defdd5871ff7e84096c6f6444af7fc157f8ef1789f54f147687caa20" +"checksum publicsuffix 1.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3bbaa49075179162b49acac1c6aa45fb4dafb5f13cf6794276d77bc7fd95757b" +"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" +"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 radix_trie 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "deafbff7bda0a58975ce92723aa18be10eae2e9271f3c3f48de52d131d9f248c" +"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 rand04 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "58595cc8bb12add45412667f9b422d5a9842d61d36e8607bc7c84ff738bf9263" +"checksum rand04_compat 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0e4cc0eb4bbb0cbc6c2a8081aa11303b9520369eea474cf865f7b7e3f11b284b" +"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 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_users 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ecedbca3bf205f8d8f5c2b44d83cd0690e39ee84b951ed649e9f1841132b66d" +"checksum regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc220bd33bdce8f093101afe22a037b8eb0e5af33592e6a9caafff0d4cb81cbd" +"checksum regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716" +"checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" +"checksum reqwest 0.9.22 (registry+https://github.com/rust-lang/crates.io-index)" = "2c2064233e442ce85c77231ebd67d9eca395207dec2127fe0bbedde4bd29a650" +"checksum rust-argon2 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ca4eaef519b494d1f2848fc602d18816fed808a981aedf4f1f00ceb7c9d32cf" +"checksum rust_decimal 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f7a28ded8f10361cefb69a8d8e1d195acf59344150534c165c401d6611cf013d" +"checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" +"checksum rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7540fc8b0c49f096ee9c961cda096467dce8084bec6bdca2fc83895fd9b28cb8" +"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +"checksum rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3dd93264e10c577503e926bd1430193eeb5d21b059148910082245309b424fae" +"checksum rustyline 5.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e9d8eb9912bc492db051324d36f5cea56984fc2afeaa5c6fa84e0b0e3cde550f" +"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 scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" +"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +"checksum serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)" = "0c4b39bd9b0b087684013a792c59e3e07a46a01d2322518d8a1104641a0b1be0" +"checksum serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)" = "ca13fc1a832f793322228923fbb3aba9f3f44444898f835d31ad1b74fa0a2bf8" +"checksum serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)" = "2f72eb2a68a7dc3f9a691bfda9305a1c017a6215e5a4545c258500d2099a37c2" +"checksum serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "642dd69105886af2efd227f75a520ec9b44a820d65bc133a9131f7d229fd165a" +"checksum sha-1 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "23962131a91661d643c98940b20fcaffe62d776a823247be80a48fcb8b6fce68" +"checksum sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b4d8bfd0e469f417657573d8451fb33d16cfe0989359b93baf3a1ffc639543d" +"checksum sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf" +"checksum shlex 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" +"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" +"checksum slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1cc9c640a4adbfbcc11ffb95efe5aa7af7309e002adab54b185507dbf2377b99" +"checksum slog-async 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e544d16c6b230d84c866662fe55e31aacfca6ae71e6fc49ae9a311cb379bfc2f" +"checksum slog-envlogger 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "906a1a0bc43fed692df4b82a5e2fbfc3733db8dad8bb514ab27a4f23ad04f5c0" +"checksum slog-scope 4.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7c44c89dd8b0ae4537d1ae318353eaf7840b4869c536e31c41e963d1ea523ee6" +"checksum slog-stdlog 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "be4d87903baf655da2d82bc3ac3f7ef43868c58bf712b3a661fda72009304c23" +"checksum slog-term 2.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "54b50e85b73c2bd42ceb97b6ded235576d405bd1e974242ccfe634fa269f6da7" +"checksum smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" +"checksum spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +"checksum stdlib 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"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 structopt 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c167b61c7d4c126927f5346a4327ce20abf8a186b8041bbeb1ce49e5db49587b" +"checksum structopt-derive 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "519621841414165d2ad0d4c92be8f41844203f2b67e245f9345a5a12d40c69d7" +"checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" +"checksum subtle 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab3af2eb31c42e8f0ccf43548232556c42737e01a96db6e1777b0be108e79799" +"checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" +"checksum syn 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "661641ea2aa15845cddeb97dad000d22070bb5c1fb456b96c1cba883ec691e92" +"checksum synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545" +"checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" +"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" +"checksum term 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c0863a3345e70f61d613eab32ee046ccd1bcc5f9105fe402c61fcd0c13eeb8b5" +"checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" +"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 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" +"checksum threshold_crypto 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "95be1032c63011f20b01c5edb64930e2b51512782b43b458b1e3449613d70f87" +"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-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d16217cad7f1b840c5a97dfb3c43b0c871fef423a6e8d2118c604e843662a443" +"checksum tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f27ee0e6db01c5f0b2973824547ce7e637b2ed79b891a9677b0de9bd532b6ac" +"checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" +"checksum tokio-reactor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "c56391be9805bc80163151c0b9e5164ee64f4b0200962c346fea12773158f22d" +"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.16 (registry+https://github.com/rust-lang/crates.io-index)" = "2bd2c6a3885302581f4401c82af70d792bb9df1700e7437b0aeb4ada94d5388c" +"checksum tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "f2106812d500ed25a4f38235b9cae8f78a09edf43203e16e59c3b769a342a60e" +"checksum toml 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "01d1404644c8b12b16bfcffa4322403a91a451584daaaa7c28d3152e6cbc98cf" +"checksum transaction-builder 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"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 typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9" +"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.9 (registry+https://github.com/rust-lang/crates.io-index)" = "09c8070a9942f5e7cfccd93f490fdebd230ee3c3c9f107cb25bad5351ef671cf" +"checksum unicode-segmentation 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0" +"checksum unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7007dbd421b92cc6e28410fe7362e2e0a2503394908f417b68ec8d1c364c4e20" +"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.0 (registry+https://github.com/rust-lang/crates.io-index)" = "75b414f6c464c879d7f9babf951f23bc3743fb7313c081b2e6ca719067ea9d61" +"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 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 vm 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum vm-runtime-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" +"checksum wait-timeout 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +"checksum walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9658c94fa8b940eab2250bd5a457f9c48b748420d71293b165c8cdbe2f55f71e" +"checksum want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" +"checksum wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d" +"checksum which 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b57acb10231b9493c8472b20cb57317d0679a49e0bdbee44b3b803a6473af164" +"checksum which 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5475d47078209a02e60614f7ba5e645ef3ed60f771920ac1906d7c1cc65024c8" +"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 ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" +"checksum x25519-dalek 0.5.2 (git+https://github.com/calibra/x25519-dalek.git?branch=fiat)" = "" diff --git a/rust/Cargo.toml b/rust/Cargo.toml new file mode 100644 index 00000000..5397f5ee --- /dev/null +++ b/rust/Cargo.toml @@ -0,0 +1,58 @@ +[package] +name = "client" +version = "0.1.0" +authors = ["Libra Association "] +description = "Libra client" +repository = "https://github.com/libra/libra" +homepage = "https://libra.org" +license = "Apache-2.0" +publish = false +edition = "2018" + +[dependencies] + +chrono = "0.4.7" +futures = "0.1.28" +grpcio = { version = "=0.5.0-alpha.4", default-features = false, features = ["prost-codec"] } +hex = "0.3.2" +itertools = "0.8.0" +proptest = { version = "0.9.2", optional = true } +rustyline = "5.0.3" +rust_decimal = "1.0.2" +num-traits = "0.2" +reqwest = { version = "0.9.19", default-features = false } +serde = { version = "1.0.96", features = ["derive"] } +serde_json = "1.0.40" +structopt = "0.3.2" + +# Libra C API, that is all we should need! +libra-dev = { path="../libra-dev" } + +# All Libra dependencies, The goal is to remove this section down to zero! +# S0: Core types +fixme-libra-types = { package = "libra-types", git = "https://github.com/libra/libra.git", branch = "testnet" } +fixme-transaction-builder = { package="transaction-builder", git = "https://github.com/libra/libra.git", branch = "testnet" } +fixme-lcs = { package = "libra-canonical-serialization", git = "https://github.com/libra/libra.git", branch = "testnet" } +# S1: Crypto +libra-crypto = { git = "https://github.com/libra/libra.git", branch = "testnet" } +libra-wallet = { git = "https://github.com/libra/libra.git", branch = "testnet" } +# S2: Transport +admission-control-proto = { git = "https://github.com/libra/libra.git", branch = "testnet" } +libra-config = { package="libra-config", git = "https://github.com/libra/libra.git", branch = "testnet" } +# Miscs +crash-handler = { git = "https://github.com/libra/libra.git", branch = "testnet" } +failure = { package = "libra-failure-ext", git = "https://github.com/libra/libra.git", branch = "testnet" } +libra-logger = { git = "https://github.com/libra/libra.git", branch = "testnet" } +libra-metrics = { git = "https://github.com/libra/libra.git", branch = "testnet" } +libra-tools = { git = "https://github.com/libra/libra.git", branch = "testnet" } + +[build-dependencies] +bindgen = "0.51.1" + +[dev-dependencies] +proptest = "0.9.2" + +[features] +# FIXEME +default = ["libra-crypto/cloneable-private-keys"] +fuzzing = ["proptest", "libra-crypto/fuzzing", "fixme-libra-types/fuzzing"] \ No newline at end of file diff --git a/rust/build.rs b/rust/build.rs new file mode 100644 index 00000000..0a7298a8 --- /dev/null +++ b/rust/build.rs @@ -0,0 +1,28 @@ +use std::env; +use std::path::PathBuf; + +fn main() { + println!("cargo:rustc-link-lib=libra_dev"); + println!("cargo:rustc-link-search=native=../libra-dev/target/debug/"); + + // Tell cargo to invalidate the built crate whenever the wrapper changes + println!("cargo:rerun-if-changed=../libra-dev/include/data.h"); + + // The bindgen::Builder is the main entry point + // to bindgen, and lets you build up options for + // the resulting bindings. + let bindings = bindgen::Builder::default() + // The input header we would like to generate + // bindings for. + .header("../libra-dev/include/data.h") + // Finish the builder and generate the bindings. + .generate() + // Unwrap the Result and panic on failure. + .expect("Unable to generate bindings"); + + // Write the bindings to the $OUT_DIR/bindings.rs file. + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + bindings + .write_to_file(out_path.join("bindings.rs")) + .expect("Couldn't write bindings!"); +} diff --git a/rust/consensus_peers.config.toml b/rust/consensus_peers.config.toml new file mode 100644 index 00000000..3cdb6827 --- /dev/null +++ b/rust/consensus_peers.config.toml @@ -0,0 +1,29 @@ +[19f93314cbe8c0925a4492eb2f2f197ce6e11717449c218f50e043e37fa7a5f3] +c = "0397615aa5cc4cedadaa870511f381423e914012f5e341f474f3f608e0224e1d" + +[26873decd9330065988b0acf5027662b5097fb50913ae2a2652b50a9869df4fb] +c = "ada40b3c2039b0fe06e31f88c13505acc3d0731d9e6a09410f463a5c02ce5ef7" + +[3b7c756cce9ad7d801b078a08ee91df5f8122e44011b4fdf6d6c20c016823b8f] +c = "ef84908705e82f835d665a94aa39990b101de671935a108c7d979fec91cbac10" + +[4995559c4844b7e4101c486035329402a8ba4976c1be23080bac5bddf6a60f0d] +c = "d29b1294c223ec10749df7fee80c2ddf39c1fb32f1a89ae028e835b0502c19a0" + +[4d78ab90b759ecacafe4e687c5db9cc2936a7a29c84aa8be777f54db519d756b] +c = "cec7be0f4808b68823ffe3db481564568a37f91ccdaa3bfc5d0d31b664e53695" + +[6687e9a6e6c3de0dc4f7e91eacbc676a228a9c0c46450bbccbd1072780bfcb30] +c = "62767f364921a4446a8d141298362497ab74b6cf697f2aa49eb2916b41a1b1cc" + +[9102bd7b1ad7e8f31023c500371cc7d2971758b450cfa89c003efb3ab192a4b8] +c = "576e91b04632683a11c3be3dc47a19f9f0a31ae947211f59c5fe02dfa2d07d68" + +[c28b953590c58117ae8431456ea28f67c2f9e1733078b208e1a7bd5bd4081e9e] +c = "b62aa0cde6584521a9c5ba81fa0fe659eba8987356db81fc6f54e812ed0c2437" + +[dfb9c683d1788857e961160f28d4c9c79b23f042c80f770f37f0f93ee5fa6a96] +c = "3ca1400fb865befa8a21c58e90fc636ef2f84993a8396cb0e10008f876a00afd" + +[f9770caa0be0c0ad427f204c22a2c2d7b22ee373a1b9cf6fd768fbf48a079554] +c = "6d9e7d0d6c1c0acf7884ab8f8258f9f9dca74ca20653422c09652e348cf66b78" diff --git a/rust/run.sh b/rust/run.sh new file mode 100755 index 00000000..fde20b1a --- /dev/null +++ b/rust/run.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# Copyright (c) The Libra Core Contributors +# SPDX-License-Identifier: Apache-2.0 + +print_help() +{ + echo "Build client binary and connect to testnet." + echo "\`$0 -r|--release\` to use release build or" + echo "\`$0\` to use debug build." +} + +source "$HOME/.cargo/env" + +SCRIPT_PATH="$(dirname $0)" + +RUN_PARAMS="--host ac.testnet.libra.org --port 8000 -s $SCRIPT_PATH/consensus_peers.config.toml" +RELEASE="" + +while [[ ! -z "$1" ]]; do + case "$1" in + -h | --help) + print_help;exit 0;; + -r | --release) + RELEASE="--release" + ;; + --) + shift + break + ;; + *) echo "Invalid option"; print_help; exit 0; + esac + shift +done + +if [ -z "$RELEASE" ]; then + echo "Building and running client in debug mode." +else + echo "Building and running client in release mode." +fi + +cargo run -p client $RELEASE -- $RUN_PARAMS "$@" diff --git a/rust/src/account_commands.rs b/rust/src/account_commands.rs new file mode 100644 index 00000000..4785f89d --- /dev/null +++ b/rust/src/account_commands.rs @@ -0,0 +1,152 @@ +// Copyright (c) The Libra Core Contributors +// SPDX-License-Identifier: Apache-2.0 + +use crate::{client_proxy::ClientProxy, commands::*}; + +/// Major command for account related operations. +pub struct AccountCommand {} + +impl Command for AccountCommand { + fn get_aliases(&self) -> Vec<&'static str> { + vec!["account", "a"] + } + fn get_description(&self) -> &'static str { + "Account operations" + } + fn execute(&self, client: &mut ClientProxy, params: &[&str]) { + let commands: Vec> = vec![ + Box::new(AccountCommandCreate {}), + Box::new(AccountCommandListAccounts {}), + Box::new(AccountCommandRecoverWallet {}), + Box::new(AccountCommandWriteRecovery {}), + Box::new(AccountCommandMint {}), + ]; + + subcommand_execute(¶ms[0], commands, client, ¶ms[1..]); + } +} + +/// Sub command to create a random account. The account will not be saved on chain. +pub struct AccountCommandCreate {} + +impl Command for AccountCommandCreate { + fn get_aliases(&self) -> Vec<&'static str> { + vec!["create", "c"] + } + fn get_description(&self) -> &'static str { + "Create an account. Returns reference ID to use in other operations" + } + fn execute(&self, client: &mut ClientProxy, _params: &[&str]) { + println!(">> Creating/retrieving next account from wallet"); + match client.create_next_account(true) { + Ok(account_data) => println!( + "Created/retrieved account #{} address {}", + account_data.index, + hex::encode(account_data.address) + ), + Err(e) => report_error("Error creating account", e), + } + } +} + +/// Sub command to recover wallet from the file specified. +pub struct AccountCommandRecoverWallet {} + +impl Command for AccountCommandRecoverWallet { + fn get_aliases(&self) -> Vec<&'static str> { + vec!["recover", "r"] + } + fn get_params_help(&self) -> &'static str { + "" + } + fn get_description(&self) -> &'static str { + "Recover Libra wallet from the file path" + } + fn execute(&self, client: &mut ClientProxy, params: &[&str]) { + println!(">> Recovering Wallet"); + match client.recover_wallet_accounts(¶ms) { + Ok(account_data) => { + println!( + "Wallet recovered and the first {} child accounts were derived", + account_data.len() + ); + for data in account_data { + println!("#{} address {}", data.index, hex::encode(data.address)); + } + } + Err(e) => report_error("Error recovering Libra wallet", e), + } + } +} + +/// Sub command to backup wallet to the file specified. +pub struct AccountCommandWriteRecovery {} + +impl Command for AccountCommandWriteRecovery { + fn get_aliases(&self) -> Vec<&'static str> { + vec!["write", "w"] + } + fn get_params_help(&self) -> &'static str { + "" + } + fn get_description(&self) -> &'static str { + "Save Libra wallet mnemonic recovery seed to disk" + } + fn execute(&self, client: &mut ClientProxy, params: &[&str]) { + println!(">> Saving Libra wallet mnemonic recovery seed to disk"); + match client.write_recovery(¶ms) { + Ok(_) => println!("Saved mnemonic seed to disk"), + Err(e) => report_error("Error writing mnemonic recovery seed to file", e), + } + } +} + +/// Sub command to list all accounts information. +pub struct AccountCommandListAccounts {} + +impl Command for AccountCommandListAccounts { + fn get_aliases(&self) -> Vec<&'static str> { + vec!["list", "la"] + } + fn get_description(&self) -> &'static str { + "Print all accounts that were created or loaded" + } + fn execute(&self, client: &mut ClientProxy, _params: &[&str]) { + client.print_all_accounts(); + } +} + +/// Sub command to mint account. +pub struct AccountCommandMint {} + +impl Command for AccountCommandMint { + fn get_aliases(&self) -> Vec<&'static str> { + vec!["mint", "mintb", "m", "mb"] + } + fn get_params_help(&self) -> &'static str { + "| " + } + fn get_description(&self) -> &'static str { + "Mint coins to the account. Suffix 'b' is for blocking" + } + fn execute(&self, client: &mut ClientProxy, params: &[&str]) { + if params.len() != 3 { + println!("Invalid number of arguments for mint"); + return; + } + println!(">> Minting coins"); + let is_blocking = blocking_cmd(params[0]); + match client.mint_coins(¶ms, is_blocking) { + Ok(_) => { + if is_blocking { + println!("Finished minting!"); + } else { + // If this value is updated, it must also be changed in + // setup_scripts/docker/mint/server.py + println!("Mint request submitted"); + } + } + Err(e) => report_error("Error minting coins", e), + } + } +} diff --git a/rust/src/bindings.rs b/rust/src/bindings.rs new file mode 100644 index 00000000..c1b6d547 --- /dev/null +++ b/rust/src/bindings.rs @@ -0,0 +1,5 @@ +#![allow(non_upper_case_globals)] +#![allow(non_camel_case_types)] +#![allow(non_snake_case)] +#![allow(unused)] +include!(concat!(env!("OUT_DIR"), "/bindings.rs")); \ No newline at end of file diff --git a/rust/src/client_proxy.rs b/rust/src/client_proxy.rs new file mode 100644 index 00000000..47b8011a --- /dev/null +++ b/rust/src/client_proxy.rs @@ -0,0 +1,1210 @@ +// Copyright (c) The Libra Core Contributors +// SPDX-License-Identifier: Apache-2.0 + +use crate::{commands::*, grpc_client::GRPCClient, AccountData, AccountStatus}; +use admission_control_proto::proto::admission_control::SubmitTransactionRequest; +use failure::prelude::*; +use libra_config::{config::PersistableConfig, trusted_peers::ConsensusPeersConfig}; +use libra_crypto::{ed25519::*, test_utils::KeyPair}; +use libra_logger::prelude::*; +use libra_tools::tempdir::TempPath; +use fixme_libra_types::{ + access_path::AccessPath, + account_address::{AccountAddress, ADDRESS_LENGTH}, + account_config::{ + association_address, core_code_address, + ACCOUNT_RECEIVED_EVENT_PATH, ACCOUNT_SENT_EVENT_PATH, + }, + account_state_blob::{AccountStateBlob, AccountStateWithProof}, + contract_event::{ContractEvent, EventWithProof}, + transaction::{ + helpers::{create_unsigned_txn, create_user_txn, TransactionSigner}, + parse_as_transaction_argument, RawTransaction, Script, SignedTransaction, Transaction, + TransactionArgument, TransactionPayload, Version, + }, +}; +use libra_wallet::{io_utils, wallet_library::WalletLibrary}; +use num_traits::{ + cast::{FromPrimitive, ToPrimitive}, + identities::Zero, +}; +use reqwest; +use rust_decimal::Decimal; +use serde_json; +use std::{ + collections::{BTreeMap, HashMap}, + convert::TryFrom, + fmt, fs, + io::{stdout, Write}, + path::{Display, Path, PathBuf}, + process::{Command, Stdio}, + str::{self, FromStr}, + sync::Arc, + thread, time, +}; + +const CLIENT_WALLET_MNEMONIC_FILE: &str = "client.mnemonic"; +const GAS_UNIT_PRICE: u64 = 0; +const MAX_GAS_AMOUNT: u64 = 140_000; +const TX_EXPIRATION: i64 = 100; + +/// Enum used for error formatting. +#[derive(Debug)] +enum InputType { + Bool, + UnsignedInt, + Usize, +} + +/// Account data is stored in a map and referenced by an index. +#[derive(Debug)] +pub struct AddressAndIndex { + /// Address of the account. + pub address: AccountAddress, + /// The account_ref_id of this account in client. + pub index: usize, +} + +/// Account is represented either as an entry into accounts vector or as an address. +pub enum AccountEntry { + /// Index into client.accounts + Index(usize), + /// Address of the account + Address(AccountAddress), +} + +/// Used to return the sequence and sender account index submitted for a transfer +pub struct IndexAndSequence { + /// Index/key of the account in TestClient::accounts vector. + pub account_index: AccountEntry, + /// Sequence number of the account. + pub sequence_number: u64, +} + +/// Proxy handling CLI commands/inputs. +pub struct ClientProxy { + /// client for admission control interface. + pub client: GRPCClient, + /// Created accounts. + pub accounts: Vec, + /// Address to account_ref_id map. + address_to_ref_id: HashMap, + /// Host that operates a faucet service + faucet_server: String, + /// Account used for mint operations. + pub faucet_account: Option, + /// Wallet library managing user accounts. + wallet: WalletLibrary, + /// Whether to sync with validator on account creation. + sync_on_wallet_recovery: bool, + /// temp files (alive for duration of program) + temp_files: Vec, +} + +impl ClientProxy { + /// Construct a new TestClient. + pub fn new( + host: &str, + ac_port: u16, + validator_set_file: &str, + faucet_account_file: &str, + sync_on_wallet_recovery: bool, + faucet_server: Option, + mnemonic_file: Option, + ) -> Result { + let validator_verifier = Arc::new( + ConsensusPeersConfig::load_config(validator_set_file).get_validator_verifier(), + ); + ensure!( + !validator_verifier.is_empty(), + "Not able to load any validators from trusted peers config!" + ); + let client = GRPCClient::new(host, ac_port, validator_verifier)?; + + let accounts = vec![]; + + // If we have a faucet account file, then load it to get the keypair + let faucet_account = if faucet_account_file.is_empty() { + None + } else { + let faucet_account_keypair: KeyPair = + ClientProxy::load_faucet_account_file(faucet_account_file); + let faucet_account_data = Self::get_account_data_from_address( + &client, + association_address(), + true, + Some(KeyPair::::from( + faucet_account_keypair.private_key, + )), + )?; + // Load the keypair from file + Some(faucet_account_data) + }; + + let faucet_server = match faucet_server { + Some(server) => server.to_string(), + None => host.replace("ac", "faucet"), + }; + + let address_to_ref_id = accounts + .iter() + .enumerate() + .map(|(ref_id, acc_data): (usize, &AccountData)| (acc_data.address, ref_id)) + .collect::>(); + + Ok(ClientProxy { + client, + accounts, + address_to_ref_id, + faucet_server, + faucet_account, + wallet: Self::get_libra_wallet(mnemonic_file)?, + sync_on_wallet_recovery, + temp_files: vec![], + }) + } + + fn get_account_ref_id(&self, sender_account_address: &AccountAddress) -> Result { + Ok(*self + .address_to_ref_id + .get(&sender_account_address) + .ok_or_else(|| { + format_err!( + "Unable to find existing managing account by address: {}, to see all existing \ + accounts, run: 'account list'", + sender_account_address + ) + })?) + } + + /// Returns the account index that should be used by user to reference this account + pub fn create_next_account(&mut self, sync_with_validator: bool) -> Result { + let (address, _) = self.wallet.new_address()?; + + let account_data = + Self::get_account_data_from_address(&self.client, address, sync_with_validator, None)?; + + Ok(self.insert_account_data(account_data)) + } + + /// Print index and address of all accounts. + pub fn print_all_accounts(&self) { + if self.accounts.is_empty() { + println!("No user accounts"); + } else { + for (ref index, ref account) in self.accounts.iter().enumerate() { + println!( + "User account index: {}, address: {}, sequence number: {}, status: {:?}", + index, + hex::encode(&account.address), + account.sequence_number, + account.status, + ); + } + } + + if let Some(faucet_account) = &self.faucet_account { + println!( + "Faucet account address: {}, sequence_number: {}, status: {:?}", + hex::encode(&faucet_account.address), + faucet_account.sequence_number, + faucet_account.status, + ); + } + } + + /// Clone all accounts held in the client. + #[cfg(any(test, feature = "fuzzing"))] + pub fn copy_all_accounts(&self) -> Vec { + self.accounts.clone() + } + + /// Set the account of this client instance. + pub fn set_accounts(&mut self, accounts: Vec) -> Vec { + self.accounts.clear(); + self.address_to_ref_id.clear(); + let mut ret = vec![]; + for data in accounts { + ret.push(self.insert_account_data(data)); + } + ret + } + + /// Get balance from validator for the account specified. + pub fn get_balance(&mut self, space_delim_strings: &[&str]) -> Result { + ensure!( + space_delim_strings.len() == 2, + "Invalid number of arguments for getting balance" + ); + let address = self.get_account_address_from_parameter(space_delim_strings[1])?; + self.get_account_resource_and_update(address).map(|res| { + let whole_num = res.balance / 1_000_000; + let remainder = res.balance % 1_000_000; + format!("{}.{:0>6}", whole_num.to_string(), remainder.to_string()) + }) + } + + /// Get the latest sequence number from validator for the account specified. + pub fn get_sequence_number(&mut self, space_delim_strings: &[&str]) -> Result { + ensure!( + space_delim_strings.len() == 2 || space_delim_strings.len() == 3, + "Invalid number of arguments for getting sequence number" + ); + let address = self.get_account_address_from_parameter(space_delim_strings[1])?; + let sequence_number = self + .get_account_resource_and_update(address)? + .sequence; + + let reset_sequence_number = if space_delim_strings.len() == 3 { + parse_bool(space_delim_strings[2]).map_err(|error| { + format_parse_data_error( + "reset_sequence_number", + InputType::Bool, + space_delim_strings[2], + error, + ) + })? + } else { + false + }; + if reset_sequence_number { + if let Some(faucet_account) = &mut self.faucet_account { + if faucet_account.address == address { + faucet_account.sequence_number = sequence_number; + return Ok(sequence_number); + } + } + let mut account = self.mut_account_from_parameter(space_delim_strings[1])?; + // Set sequence_number to latest one. + account.sequence_number = sequence_number; + } + Ok(sequence_number) + } + + /// Mints coins for the receiver specified. + pub fn mint_coins(&mut self, space_delim_strings: &[&str], is_blocking: bool) -> Result<()> { + ensure!( + space_delim_strings.len() == 3, + "Invalid number of arguments for mint" + ); + let receiver = self.get_account_address_from_parameter(space_delim_strings[1])?; + let num_coins = Self::convert_to_micro_libras(space_delim_strings[2])?; + + match self.faucet_account { + Some(_) => self.mint_coins_with_local_faucet_account(&receiver, num_coins, is_blocking), + None => self.mint_coins_with_faucet_service(&receiver, num_coins, is_blocking), + } + } + + /// Waits for the next transaction for a specific address and prints it + pub fn wait_for_transaction(&mut self, account: AccountAddress, sequence_number: u64) { + let mut max_iterations = 5000; + print!("waiting "); + loop { + stdout().flush().unwrap(); + max_iterations -= 1; + + if let Ok(Some((_, Some(events)))) = + self.client + .get_txn_by_acc_seq(account, sequence_number - 1, true) + { + println!("transaction is stored!"); + if events.is_empty() { + println!("no events emitted"); + } + break; + } else if max_iterations == 0 { + panic!("wait_for_transaction timeout"); + } else { + print!("."); + } + thread::sleep(time::Duration::from_millis(10)); + } + } + + /// Transfer num_coins from sender account to receiver. If is_blocking = true, + /// it will keep querying validator till the sequence number is bumped up in validator. + pub fn transfer_coins_int( + &mut self, + sender_account_ref_id: usize, + receiver_address: &AccountAddress, + num_coins: u64, + gas_unit_price: Option, + max_gas_amount: Option, + is_blocking: bool, + ) -> Result { + let sender_address; + let sender_sequence; + { + let sender = self.accounts.get(sender_account_ref_id).ok_or_else(|| { + format_err!("Unable to find sender account: {}", sender_account_ref_id) + })?; + + let program = fixme_transaction_builder::encode_transfer_script(&receiver_address, num_coins); + let req = self.create_submit_transaction_req( + TransactionPayload::Script(program), + sender, + max_gas_amount, /* max_gas_amount */ + gas_unit_price, /* gas_unit_price */ + )?; + let sender_mut = self + .accounts + .get_mut(sender_account_ref_id) + .ok_or_else(|| { + format_err!("Unable to find sender account: {}", sender_account_ref_id) + })?; + self.client.submit_transaction(Some(sender_mut), &req)?; + sender_address = sender_mut.address; + sender_sequence = sender_mut.sequence_number; + } + + if is_blocking { + self.wait_for_transaction(sender_address, sender_sequence); + } + + Ok(IndexAndSequence { + account_index: AccountEntry::Index(sender_account_ref_id), + sequence_number: sender_sequence - 1, + }) + } + + /// Prepare a transfer transaction: return the unsigned raw transaction + pub fn prepare_transfer_coins( + &mut self, + sender_address: AccountAddress, + sender_sequence_number: u64, + receiver_address: AccountAddress, + num_coins: u64, + gas_unit_price: Option, + max_gas_amount: Option, + ) -> Result { + let program = fixme_transaction_builder::encode_transfer_script(&receiver_address, num_coins); + + Ok(create_unsigned_txn( + TransactionPayload::Script(program), + sender_address, + sender_sequence_number, + max_gas_amount.unwrap_or(MAX_GAS_AMOUNT), + gas_unit_price.unwrap_or(GAS_UNIT_PRICE), + TX_EXPIRATION, + )) + } + + /// Transfers coins from sender to receiver. + pub fn transfer_coins( + &mut self, + space_delim_strings: &[&str], + is_blocking: bool, + ) -> Result { + ensure!( + space_delim_strings.len() >= 4 && space_delim_strings.len() <= 6, + "Invalid number of arguments for transfer" + ); + + let sender_account_address = + self.get_account_address_from_parameter(space_delim_strings[1])?; + let receiver_address = self.get_account_address_from_parameter(space_delim_strings[2])?; + + let num_coins = Self::convert_to_micro_libras(space_delim_strings[3])?; + + let gas_unit_price = if space_delim_strings.len() > 4 { + Some(space_delim_strings[4].parse::().map_err(|error| { + format_parse_data_error( + "gas_unit_price", + InputType::UnsignedInt, + space_delim_strings[4], + error, + ) + })?) + } else { + None + }; + + let max_gas_amount = if space_delim_strings.len() > 5 { + Some(space_delim_strings[5].parse::().map_err(|error| { + format_parse_data_error( + "max_gas_amount", + InputType::UnsignedInt, + space_delim_strings[5], + error, + ) + })?) + } else { + None + }; + + let sender_account_ref_id = self.get_account_ref_id(&sender_account_address)?; + + self.transfer_coins_int( + sender_account_ref_id, + &receiver_address, + num_coins, + gas_unit_price, + max_gas_amount, + is_blocking, + ) + } + + /// Compile move program + pub fn compile_program(&mut self, space_delim_strings: &[&str]) -> Result { + let address = self.get_account_address_from_parameter(space_delim_strings[1])?; + let file_path = space_delim_strings[2]; + let is_module = match space_delim_strings[3] { + "module" => true, + "script" => false, + _ => bail!( + "Invalid program type: {}. Available options: module, script", + space_delim_strings[3] + ), + }; + + let tmp_source_path = TempPath::new().as_ref().with_extension("mvir"); + let output_path = &tmp_source_path.with_extension("mv"); + let mut tmp_source_file = std::fs::File::create(tmp_source_path.clone())?; + let mut code = fs::read_to_string(file_path)?; + code = code.replace("{{sender}}", &format!("0x{}", address)); + writeln!(tmp_source_file, "{}", code)?; + self.temp_files.push(output_path.to_path_buf()); + let dependencies_file = self.handle_dependencies(tmp_source_path.display(), is_module)?; + + let mut args = format!( + "run -p compiler -- {} -a {}{}", + tmp_source_path.display(), + address, + if is_module { " -m" } else { "" }, + ); + if let Some(file) = &dependencies_file { + args.push_str(&format!(" --deps={}", file.as_ref().display())); + } + + let status = Command::new("cargo") + .args(args.split(' ')) + .spawn()? + .wait()?; + if !status.success() { + return Err(format_err!("compilation failed")); + } + Ok(output_path + .to_str() + .expect( + "TempPath::new() should always generate a path that can be converted to a string", + ) + .to_string()) + } + + fn handle_dependencies( + &mut self, + source_path: Display, + is_module: bool, + ) -> Result> { + let mut args = format!("run -p compiler -- -l {}", source_path); + if is_module { + args.push_str(" -m"); + } + let child = Command::new("cargo") + .args(args.split(' ')) + .stdout(Stdio::piped()) + .spawn()?; + let output = child.wait_with_output()?; + let paths: Vec = serde_json::from_str(str::from_utf8(&output.stdout)?)?; + let mut dependencies = vec![]; + for path in paths { + if path.address != core_code_address() { + if let (Some(blob), _) = self.client.get_account_blob(path.address)? { + let map = BTreeMap::, Vec>::try_from(&blob)?; + if let Some(code) = map.get(&path.path) { + dependencies.push(code.clone()); + } + } + } + } + if dependencies.is_empty() { + return Ok(None); + } + let path = TempPath::new(); + let mut file = std::fs::File::create(path.as_ref())?; + file.write_all(&serde_json::to_vec(&dependencies)?)?; + Ok(Some(path)) + } + + /// Submit a transaction to the network given the unsigned raw transaction, sender public key + /// and signature + pub fn submit_signed_transaction( + &mut self, + raw_txn: RawTransaction, + public_key: Ed25519PublicKey, + signature: Ed25519Signature, + ) -> Result<()> { + let transaction = SignedTransaction::new(raw_txn, public_key.clone(), signature); + + let mut req = SubmitTransactionRequest::default(); + let sender_address = transaction.sender(); + let sender_sequence = transaction.sequence_number(); + + req.transaction = Some(transaction.into()); + self.client.submit_transaction(None, &req)?; + // blocking by default (until transaction completion) + self.wait_for_transaction(sender_address, sender_sequence + 1); + + Ok(()) + } + + fn submit_program( + &mut self, + space_delim_strings: &[&str], + program: TransactionPayload, + ) -> Result<()> { + let sender_address = self.get_account_address_from_parameter(space_delim_strings[1])?; + let sender_ref_id = self.get_account_ref_id(&sender_address)?; + let sender = self.accounts.get(sender_ref_id).unwrap(); + let sequence_number = sender.sequence_number; + + let req = self.create_submit_transaction_req(program, &sender, None, None)?; + + self.client + .submit_transaction(self.accounts.get_mut(sender_ref_id), &req)?; + self.wait_for_transaction(sender_address, sequence_number + 1); + + Ok(()) + } + + /// Publish move module + pub fn publish_module(&mut self, space_delim_strings: &[&str]) -> Result<()> { + let module = serde_json::from_slice(&fs::read(space_delim_strings[2])?)?; + self.submit_program(space_delim_strings, TransactionPayload::Module(module)) + } + + /// Execute custom script + pub fn execute_script(&mut self, space_delim_strings: &[&str]) -> Result<()> { + let script: Script = serde_json::from_slice(&fs::read(space_delim_strings[2])?)?; + let (script_bytes, _) = script.into_inner(); + let arguments: Vec<_> = space_delim_strings[3..] + .iter() + .filter_map(|arg| parse_as_transaction_argument_for_client(arg).ok()) + .collect(); + self.submit_program( + space_delim_strings, + TransactionPayload::Script(Script::new(script_bytes, arguments)), + ) + } + + /// Get the latest account state from validator. + pub fn get_latest_account_state( + &mut self, + space_delim_strings: &[&str], + ) -> Result<(Option, Version)> { + ensure!( + space_delim_strings.len() == 2, + "Invalid number of arguments to get latest account state" + ); + let account = self.get_account_address_from_parameter(space_delim_strings[1])?; + self.get_account_state_and_update(account) + } + + /// Get committed txn by account and sequence number. + pub fn get_committed_txn_by_acc_seq( + &mut self, + space_delim_strings: &[&str], + ) -> Result>)>> { + ensure!( + space_delim_strings.len() == 4, + "Invalid number of arguments to get transaction by account and sequence number" + ); + let account = self.get_account_address_from_parameter(space_delim_strings[1])?; + let sequence_number = space_delim_strings[2].parse::().map_err(|error| { + format_parse_data_error( + "account_sequence_number", + InputType::UnsignedInt, + space_delim_strings[2], + error, + ) + })?; + + let fetch_events = parse_bool(space_delim_strings[3]).map_err(|error| { + format_parse_data_error( + "fetch_events", + InputType::Bool, + space_delim_strings[3], + error, + ) + })?; + + self.client + .get_txn_by_acc_seq(account, sequence_number, fetch_events) + } + + /// Get committed txn by account and sequence number + pub fn get_committed_txn_by_range( + &mut self, + space_delim_strings: &[&str], + ) -> Result>)>> { + ensure!( + space_delim_strings.len() == 4, + "Invalid number of arguments to get transaction by range" + ); + let start_version = space_delim_strings[1].parse::().map_err(|error| { + format_parse_data_error( + "start_version", + InputType::UnsignedInt, + space_delim_strings[1], + error, + ) + })?; + let limit = space_delim_strings[2].parse::().map_err(|error| { + format_parse_data_error( + "limit", + InputType::UnsignedInt, + space_delim_strings[2], + error, + ) + })?; + let fetch_events = parse_bool(space_delim_strings[3]).map_err(|error| { + format_parse_data_error( + "fetch_events", + InputType::Bool, + space_delim_strings[3], + error, + ) + })?; + + self.client + .get_txn_by_range(start_version, limit, fetch_events) + } + + /// Get account address from parameter. If the parameter is string of address, try to convert + /// it to address, otherwise, try to convert to u64 and looking at TestClient::accounts. + pub fn get_account_address_from_parameter(&self, para: &str) -> Result { + match is_address(para) { + true => ClientProxy::address_from_strings(para), + false => { + let account_ref_id = para.parse::().map_err(|error| { + format_parse_data_error( + "account_reference_id/account_address", + InputType::Usize, + para, + error, + ) + })?; + let account_data = self.accounts.get(account_ref_id).ok_or_else(|| { + format_err!( + "Unable to find account by account reference id: {}, to see all existing \ + accounts, run: 'account list'", + account_ref_id + ) + })?; + Ok(account_data.address) + } + } + } + + /// Get events by account and event type with start sequence number and limit. + pub fn get_events_by_account_and_type( + &mut self, + space_delim_strings: &[&str], + ) -> Result<(Vec, AccountStateWithProof)> { + ensure!( + space_delim_strings.len() == 6, + "Invalid number of arguments to get events by access path" + ); + let account = self.get_account_address_from_parameter(space_delim_strings[1])?; + let path = match space_delim_strings[2] { + "sent" => ACCOUNT_SENT_EVENT_PATH.to_vec(), + "received" => ACCOUNT_RECEIVED_EVENT_PATH.to_vec(), + _ => bail!( + "Unknown event type: {:?}, only sent and received are supported", + space_delim_strings[2] + ), + }; + let access_path = AccessPath::new(account, path); + let start_seq_number = space_delim_strings[3].parse::().map_err(|error| { + format_parse_data_error( + "start_seq_number", + InputType::UnsignedInt, + space_delim_strings[3], + error, + ) + })?; + let ascending = parse_bool(space_delim_strings[4]).map_err(|error| { + format_parse_data_error("ascending", InputType::Bool, space_delim_strings[4], error) + })?; + let limit = space_delim_strings[5].parse::().map_err(|error| { + format_parse_data_error( + "start_seq_number", + InputType::UnsignedInt, + space_delim_strings[3], + error, + ) + })?; + self.client + .get_events_by_access_path(access_path, start_seq_number, ascending, limit) + } + + /// Write mnemonic recover to the file specified. + pub fn write_recovery(&self, space_delim_strings: &[&str]) -> Result<()> { + ensure!( + space_delim_strings.len() == 2, + "Invalid number of arguments for writing recovery" + ); + + self.wallet + .write_recovery(&Path::new(space_delim_strings[1]))?; + Ok(()) + } + + /// Recover wallet accounts from file and return vec<(account_address, index)>. + pub fn recover_wallet_accounts( + &mut self, + space_delim_strings: &[&str], + ) -> Result> { + ensure!( + space_delim_strings.len() == 2, + "Invalid number of arguments for recovering wallets" + ); + + let wallet = WalletLibrary::recover(&Path::new(space_delim_strings[1]))?; + let wallet_addresses = wallet.get_addresses()?; + let mut account_data = Vec::new(); + for address in wallet_addresses { + account_data.push(Self::get_account_data_from_address( + &self.client, + address, + self.sync_on_wallet_recovery, + None, + )?); + } + self.set_wallet(wallet); + // Clear current cached AccountData as we always swap the entire wallet completely. + Ok(self.set_accounts(account_data)) + } + + /// Insert the account data to Client::accounts and return its address and index.s + pub fn insert_account_data(&mut self, account_data: AccountData) -> AddressAndIndex { + let address = account_data.address; + + self.accounts.push(account_data); + self.address_to_ref_id + .insert(address, self.accounts.len() - 1); + + AddressAndIndex { + address, + index: self.accounts.len() - 1, + } + } + + /// Test gRPC client connection with validator. + pub fn test_validator_connection(&self) -> Result<()> { + self.client.get_with_proof_sync(vec![])?; + Ok(()) + } + + /// Get account state from validator and update status of account if it is cached locally. + fn get_account_state_and_update( + &mut self, + address: AccountAddress, + ) -> Result<(Option, Version)> { + let account_state = self.client.get_account_blob(address)?; + if self.address_to_ref_id.contains_key(&address) { + let account_ref_id = self + .address_to_ref_id + .get(&address) + .expect("Should have the key"); + let mut account_data: &mut AccountData = + self.accounts.get_mut(*account_ref_id).unwrap_or_else(|| panic!("Local cache not consistent, reference id {} not available in local accounts", account_ref_id)); + if account_state.0.is_some() { + account_data.status = AccountStatus::Persisted; + } + }; + Ok(account_state) + } + + /// Get account resource from validator and update status of account if it is cached locally. + fn get_account_resource_and_update( + &mut self, + address: AccountAddress, + ) -> Result { + let account_state = self.get_account_state_and_update(address)?; + + unsafe { + let buf = account_state.0.expect("Don't have!").as_ref().to_vec(); + Ok(crate::bindings::account_resource_from_lcs(buf.as_ptr(), buf.len())) + } + } + + /// Get account using specific address. + /// Sync with validator for account sequence number in case it is already created on chain. + /// This assumes we have a very low probability of mnemonic word conflict. + fn get_account_data_from_address( + client: &GRPCClient, + address: AccountAddress, + sync_with_validator: bool, + key_pair: Option>, + ) -> Result { + let (sequence_number, status) = if sync_with_validator { + match client.get_account_blob(address) { + Ok(resp) => match resp.0 { + Some(account_state_blob) => ( + unsafe { + let buf = account_state_blob.as_ref().to_vec(); + crate::bindings::account_resource_from_lcs(buf.as_ptr(), buf.len()) + }.sequence, + AccountStatus::Persisted, + ), + None => (0, AccountStatus::Local), + }, + Err(e) => { + error!("Failed to get account state from validator, error: {:?}", e); + (0, AccountStatus::Unknown) + } + } + } else { + (0, AccountStatus::Local) + }; + Ok(AccountData { + address, + key_pair, + sequence_number, + status, + }) + } + + fn get_libra_wallet(mnemonic_file: Option) -> Result { + let wallet_recovery_file_path = if let Some(input_mnemonic_word) = mnemonic_file { + Path::new(&input_mnemonic_word).to_path_buf() + } else { + let mut file_path = std::env::current_dir()?; + file_path.push(CLIENT_WALLET_MNEMONIC_FILE); + file_path + }; + + let wallet = if let Ok(recovered_wallet) = io_utils::recover(&wallet_recovery_file_path) { + recovered_wallet + } else { + let new_wallet = WalletLibrary::new(); + new_wallet.write_recovery(&wallet_recovery_file_path)?; + new_wallet + }; + Ok(wallet) + } + + /// Set wallet instance used by this client. + fn set_wallet(&mut self, wallet: WalletLibrary) { + self.wallet = wallet; + } + + fn load_faucet_account_file( + faucet_account_file: &str, + ) -> KeyPair { + match fs::read(faucet_account_file) { + Ok(data) => { + fixme_lcs::from_bytes(&data[..]).expect("Unable to deserialize faucet account file") + } + Err(e) => { + panic!( + "Unable to read faucet account file: {}, {}", + faucet_account_file, e + ); + } + } + } + + fn address_from_strings(data: &str) -> Result { + let account_vec: Vec = hex::decode(data.parse::()?)?; + ensure!( + account_vec.len() == ADDRESS_LENGTH, + "The address {:?} is of invalid length. Addresses must be 32-bytes long" + ); + let account = AccountAddress::try_from(&account_vec[..]).map_err(|error| { + format_err!( + "The address {:?} is invalid, error: {:?}", + &account_vec, + error, + ) + })?; + Ok(account) + } + + fn mint_coins_with_local_faucet_account( + &mut self, + receiver: &AccountAddress, + num_coins: u64, + is_blocking: bool, + ) -> Result<()> { + ensure!(self.faucet_account.is_some(), "No faucet account loaded"); + let sender = self.faucet_account.as_ref().unwrap(); + let sender_address = sender.address; + let program = fixme_transaction_builder::encode_mint_script(&receiver, num_coins); + let req = self.create_submit_transaction_req( + TransactionPayload::Script(program), + sender, + None, /* max_gas_amount */ + None, /* gas_unit_price */ + )?; + let mut sender_mut = self.faucet_account.as_mut().unwrap(); + let resp = self.client.submit_transaction(Some(&mut sender_mut), &req); + if is_blocking { + self.wait_for_transaction( + sender_address, + self.faucet_account.as_ref().unwrap().sequence_number, + ); + } + resp + } + + fn mint_coins_with_faucet_service( + &mut self, + receiver: &AccountAddress, + num_coins: u64, + is_blocking: bool, + ) -> Result<()> { + let client = reqwest::ClientBuilder::new().use_sys_proxy().build()?; + + let url = reqwest::Url::parse_with_params( + format!("http://{}", self.faucet_server).as_str(), + &[ + ("amount", num_coins.to_string().as_str()), + ("address", format!("{:?}", receiver).as_str()), + ], + )?; + + let mut response = client.post(url).send()?; + let status_code = response.status(); + let body = response.text()?; + if !status_code.is_success() { + return Err(format_err!( + "Failed to query remote faucet server[status={}]: {:?}", + status_code.as_str(), + body, + )); + } + let sequence_number = body.parse::()?; + if is_blocking { + self.wait_for_transaction(association_address(), sequence_number); + } + + Ok(()) + } + + /// convert number of Libras (main unit) given as string to number of micro Libras + pub fn convert_to_micro_libras(input: &str) -> Result { + ensure!(!input.is_empty(), "Empty input not allowed for libra unit"); + // This is not supposed to panic as it is used as constant here. + let max_value = Decimal::from_u64(std::u64::MAX).unwrap() / Decimal::new(1_000_000, 0); + let scale = input.find('.').unwrap_or(input.len() - 1); + ensure!( + scale <= 14, + "Input value is too big: {:?}, max: {:?}", + input, + max_value + ); + let original = Decimal::from_str(input)?; + ensure!( + original <= max_value, + "Input value is too big: {:?}, max: {:?}", + input, + max_value + ); + let value = original * Decimal::new(1_000_000, 0); + ensure!(value.fract().is_zero(), "invalid value"); + value.to_u64().ok_or_else(|| format_err!("invalid value")) + } + + /// Craft a transaction request. + fn create_submit_transaction_req( + &self, + program: TransactionPayload, + sender_account: &AccountData, + max_gas_amount: Option, + gas_unit_price: Option, + ) -> Result { + let signer: Box<&dyn TransactionSigner> = match &sender_account.key_pair { + Some(key_pair) => Box::new(key_pair), + None => Box::new(&self.wallet), + }; + let transaction = create_user_txn( + *signer, + program, + sender_account.address, + sender_account.sequence_number, + max_gas_amount.unwrap_or(MAX_GAS_AMOUNT), + gas_unit_price.unwrap_or(GAS_UNIT_PRICE), + TX_EXPIRATION, + ) + .unwrap(); + let mut req = SubmitTransactionRequest::default(); + req.transaction = Some(transaction.into()); + Ok(req) + } + + fn mut_account_from_parameter(&mut self, para: &str) -> Result<&mut AccountData> { + let account_ref_id = match is_address(para) { + true => { + let account_address = ClientProxy::address_from_strings(para)?; + *self + .address_to_ref_id + .get(&account_address) + .ok_or_else(|| { + format_err!( + "Unable to find local account by address: {:?}", + account_address + ) + })? + } + false => para.parse::()?, + }; + let account_data = self + .accounts + .get_mut(account_ref_id) + .ok_or_else(|| format_err!("Unable to find account by ref id: {}", account_ref_id))?; + Ok(account_data) + } +} + +fn parse_as_transaction_argument_for_client(s: &str) -> Result { + if is_address(s) { + let account_address = ClientProxy::address_from_strings(s)?; + return Ok(TransactionArgument::Address(account_address)); + } + parse_as_transaction_argument(s) +} + +fn format_parse_data_error( + field: &str, + input_type: InputType, + value: &str, + error: T, +) -> Error { + format_err!( + "Unable to parse input for {} - \ + please enter an {:?}. Input was: {}, error: {:?}", + field, + input_type, + value, + error + ) +} + +fn parse_bool(para: &str) -> Result { + Ok(para.to_lowercase().parse::()?) +} + +impl fmt::Display for AccountEntry { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match self { + AccountEntry::Index(i) => write!(f, "{}", i), + AccountEntry::Address(addr) => write!(f, "{}", addr), + } + } +} + +#[cfg(test)] +mod tests { + use crate::client_proxy::{parse_bool, AddressAndIndex, ClientProxy}; + use libra_config::{config::PersistableConfig, trusted_peers::ConfigHelpers}; + use libra_tools::tempdir::TempPath; + use libra_wallet::io_utils; + use proptest::prelude::*; + + fn generate_accounts_from_wallet(count: usize) -> (ClientProxy, Vec) { + let mut accounts = Vec::new(); + accounts.reserve(count); + let file = TempPath::new(); + let mnemonic_path = file.path().to_str().unwrap().to_string(); + let consensus_peer_file = TempPath::new(); + let consensus_peers_path = consensus_peer_file.path(); + let (_, consensus_peers_config, _) = ConfigHelpers::gen_validator_nodes(1, None); + consensus_peers_config.save_config(&consensus_peers_path); + let val_set_file = consensus_peers_path.to_str().unwrap().to_string(); + + // We don't need to specify host/port since the client won't be used to connect, only to + // generate random accounts + let mut client_proxy = ClientProxy::new( + "", /* host */ + 0, /* port */ + &val_set_file, + &"", + false, + None, + Some(mnemonic_path), + ) + .unwrap(); + for _ in 0..count { + accounts.push(client_proxy.create_next_account(false).unwrap()); + } + + (client_proxy, accounts) + } + + #[test] + fn test_parse_bool() { + assert!(parse_bool("true").unwrap()); + assert!(parse_bool("True").unwrap()); + assert!(parse_bool("TRue").unwrap()); + assert!(parse_bool("TRUE").unwrap()); + assert!(!parse_bool("false").unwrap()); + assert!(!parse_bool("False").unwrap()); + assert!(!parse_bool("FaLSe").unwrap()); + assert!(!parse_bool("FALSE").unwrap()); + assert!(parse_bool("1").is_err()); + assert!(parse_bool("0").is_err()); + assert!(parse_bool("2").is_err()); + assert!(parse_bool("1adf").is_err()); + assert!(parse_bool("ad13").is_err()); + assert!(parse_bool("ad1f").is_err()); + } + + #[test] + fn test_micro_libra_conversion() { + assert!(ClientProxy::convert_to_micro_libras("").is_err()); + assert!(ClientProxy::convert_to_micro_libras("-11").is_err()); + assert!(ClientProxy::convert_to_micro_libras("abc").is_err()); + assert!(ClientProxy::convert_to_micro_libras("11111112312321312321321321").is_err()); + assert!(ClientProxy::convert_to_micro_libras("0").is_ok()); + assert!(ClientProxy::convert_to_micro_libras("1").is_ok()); + assert!(ClientProxy::convert_to_micro_libras("0.1").is_ok()); + assert!(ClientProxy::convert_to_micro_libras("1.1").is_ok()); + // Max of micro libra is u64::MAX (18446744073709551615). + assert!(ClientProxy::convert_to_micro_libras("18446744073709.551615").is_ok()); + assert!(ClientProxy::convert_to_micro_libras("184467440737095.51615").is_err()); + assert!(ClientProxy::convert_to_micro_libras("18446744073709.551616").is_err()); + } + + #[test] + fn test_generate() { + let num = 1; + let (_, accounts) = generate_accounts_from_wallet(num); + assert_eq!(accounts.len(), num); + } + + #[test] + fn test_write_recover() { + let num = 100; + let (client, accounts) = generate_accounts_from_wallet(num); + assert_eq!(accounts.len(), num); + + let file = TempPath::new(); + let path = file.path(); + io_utils::write_recovery(&client.wallet, &path).expect("failed to write to file"); + + let wallet = io_utils::recover(&path).expect("failed to load from file"); + + assert_eq!(client.wallet.mnemonic(), wallet.mnemonic()); + } + + proptest! { + // Proptest is used to verify that the conversion will not panic with random input. + #[test] + fn test_micro_libra_conversion_random_string(req in any::()) { + let _res = ClientProxy::convert_to_micro_libras(&req); + } + #[test] + fn test_micro_libra_conversion_random_f64(req in any::()) { + let req_str = req.to_string(); + let _res = ClientProxy::convert_to_micro_libras(&req_str); + } + #[test] + fn test_micro_libra_conversion_random_u64(req in any::()) { + let req_str = req.to_string(); + let _res = ClientProxy::convert_to_micro_libras(&req_str); + } + } +} diff --git a/rust/src/commands.rs b/rust/src/commands.rs new file mode 100644 index 00000000..ff4449f4 --- /dev/null +++ b/rust/src/commands.rs @@ -0,0 +1,141 @@ +// Copyright (c) The Libra Core Contributors +// SPDX-License-Identifier: Apache-2.0 + +use crate::{ + account_commands::AccountCommand, client_proxy::ClientProxy, dev_commands::DevCommand, + query_commands::QueryCommand, transfer_commands::TransferCommand, +}; + +use failure::prelude::*; +use libra_metrics::counters::*; +use fixme_libra_types::account_address::ADDRESS_LENGTH; +use std::{collections::HashMap, sync::Arc}; + +/// Print the error and bump up error counter. +pub fn report_error(msg: &str, e: Error) { + println!("[ERROR] {}: {}", msg, pretty_format_error(e)); + COUNTER_CLIENT_ERRORS.inc(); +} + +fn pretty_format_error(e: Error) -> String { + if let Some(grpc_error) = e.downcast_ref::() { + if let grpcio::Error::RpcFailure(grpc_rpc_failure) = grpc_error { + if grpc_rpc_failure.status == grpcio::RpcStatusCode::UNAVAILABLE + || grpc_rpc_failure.status == grpcio::RpcStatusCode::DEADLINE_EXCEEDED + { + return "Server unavailable, please retry and/or check \ + if host passed to the client is running" + .to_string(); + } + } + } + + return format!("{}", e); +} + +/// Check whether a command is blocking. +pub fn blocking_cmd(cmd: &str) -> bool { + cmd.ends_with('b') +} + +/// Check whether a command is debugging command. +pub fn debug_format_cmd(cmd: &str) -> bool { + cmd.ends_with('?') +} + +/// Check whether the input string is a valid libra address. +pub fn is_address(data: &str) -> bool { + match hex::decode(data) { + Ok(vec) => vec.len() == ADDRESS_LENGTH, + Err(_) => false, + } +} + +/// Returns all the commands available, as well as the reverse index from the aliases to the +/// commands. +pub fn get_commands( + include_dev: bool, +) -> ( + Vec>, + HashMap<&'static str, Arc>, +) { + let mut commands: Vec> = vec![ + Arc::new(AccountCommand {}), + Arc::new(QueryCommand {}), + Arc::new(TransferCommand {}), + ]; + if include_dev { + commands.push(Arc::new(DevCommand {})); + } + let mut alias_to_cmd = HashMap::new(); + for command in &commands { + for alias in command.get_aliases() { + alias_to_cmd.insert(alias, Arc::clone(command)); + } + } + (commands, alias_to_cmd) +} + +/// Parse a cmd string, the first element in the returned vector is the command to run +pub fn parse_cmd(cmd_str: &str) -> Vec<&str> { + cmd_str.split_ascii_whitespace().collect() +} + +/// Print the help message for all sub commands. +pub fn print_subcommand_help(parent_command: &str, commands: &[Box]) { + println!( + "usage: {} \n\nUse the following args for this command:\n", + parent_command + ); + for cmd in commands { + println!( + "{} {}\n\t{}", + cmd.get_aliases().join(" | "), + cmd.get_params_help(), + cmd.get_description() + ); + } + println!("\n"); +} + +/// Execute sub command. +// TODO: Convert subcommands arrays to lazy statics +pub fn subcommand_execute( + parent_command_name: &str, + commands: Vec>, + client: &mut ClientProxy, + params: &[&str], +) { + let mut commands_map = HashMap::new(); + for (i, cmd) in commands.iter().enumerate() { + for alias in cmd.get_aliases() { + if commands_map.insert(alias, i) != None { + panic!("Duplicate alias {}", alias); + } + } + } + + if params.is_empty() { + print_subcommand_help(parent_command_name, &commands); + return; + } + + match commands_map.get(¶ms[0]) { + Some(&idx) => commands[idx].execute(client, ¶ms), + _ => print_subcommand_help(parent_command_name, &commands), + } +} + +/// Trait to perform client operations. +pub trait Command { + /// all commands and aliases this command support. + fn get_aliases(&self) -> Vec<&'static str>; + /// string that describes params. + fn get_params_help(&self) -> &'static str { + "" + } + /// string that describes what the command does. + fn get_description(&self) -> &'static str; + /// code to execute. + fn execute(&self, client: &mut ClientProxy, params: &[&str]); +} diff --git a/rust/src/dev_commands.rs b/rust/src/dev_commands.rs new file mode 100644 index 00000000..1f04a649 --- /dev/null +++ b/rust/src/dev_commands.rs @@ -0,0 +1,106 @@ +// Copyright (c) The Libra Core Contributors +// SPDX-License-Identifier: Apache-2.0 + +use crate::{client_proxy::ClientProxy, commands::*}; + +/// Major command for account related operations. +pub struct DevCommand {} + +impl Command for DevCommand { + fn get_aliases(&self) -> Vec<&'static str> { + vec!["dev"] + } + fn get_description(&self) -> &'static str { + "Local move development" + } + fn execute(&self, client: &mut ClientProxy, params: &[&str]) { + let commands: Vec> = vec![ + Box::new(DevCommandCompile {}), + Box::new(DevCommandPublish {}), + Box::new(DevCommandExecute {}), + ]; + subcommand_execute(¶ms[0], commands, client, ¶ms[1..]); + } +} + +/// Sub command to compile move program +pub struct DevCommandCompile {} + +impl Command for DevCommandCompile { + fn get_aliases(&self) -> Vec<&'static str> { + vec!["compile", "c"] + } + fn get_params_help(&self) -> &'static str { + "| [output_file_path (compile into tmp file by default)]" + } + fn get_description(&self) -> &'static str { + "Compile move program" + } + fn execute(&self, client: &mut ClientProxy, params: &[&str]) { + if params.len() < 4 || params.len() > 5 { + println!("Invalid number of arguments for compilation"); + return; + } + println!(">> Compiling program"); + match client.compile_program(params) { + Ok(path) => println!("Successfully compiled a program at {}", path), + Err(e) => println!("{}", e), + } + } +} + +/// Sub command to publish move resource +pub struct DevCommandPublish {} + +impl Command for DevCommandPublish { + fn get_aliases(&self) -> Vec<&'static str> { + vec!["publish", "p"] + } + + fn get_params_help(&self) -> &'static str { + "| " + } + + fn get_description(&self) -> &'static str { + "Publish move module on-chain" + } + + fn execute(&self, client: &mut ClientProxy, params: &[&str]) { + if params.len() != 3 { + println!("Invalid number of arguments to publish module"); + return; + } + match client.publish_module(params) { + Ok(_) => println!("Successfully published module"), + Err(e) => println!("{}", e), + } + } +} + +/// Sub command to execute custom move script +pub struct DevCommandExecute {} + +impl Command for DevCommandExecute { + fn get_aliases(&self) -> Vec<&'static str> { + vec!["execute", "e"] + } + + fn get_params_help(&self) -> &'static str { + "| [parameters]" + } + + fn get_description(&self) -> &'static str { + "Execute custom move script" + } + + fn execute(&self, client: &mut ClientProxy, params: &[&str]) { + if params.len() < 3 { + println!("Invalid number of arguments to execute script"); + return; + } + match client.execute_script(params) { + Ok(_) => println!("Successfully finished execution"), + Err(e) => println!("{}", e), + } + } +} diff --git a/rust/src/grpc_client.rs b/rust/src/grpc_client.rs new file mode 100644 index 00000000..bd92aa23 --- /dev/null +++ b/rust/src/grpc_client.rs @@ -0,0 +1,305 @@ +// Copyright (c) The Libra Core Contributors +// SPDX-License-Identifier: Apache-2.0 + +use crate::AccountData; +use admission_control_proto::{ + proto::admission_control::{ + AdmissionControlClient, SubmitTransactionRequest, + SubmitTransactionResponse as ProtoSubmitTransactionResponse, + }, + AdmissionControlStatus, SubmitTransactionResponse, +}; +use failure::prelude::*; +use futures::Future; +use grpcio::{CallOption, ChannelBuilder, EnvBuilder}; +use libra_crypto::ed25519::*; +use libra_logger::prelude::*; +use fixme_libra_types::{ + access_path::AccessPath, + account_address::AccountAddress, + account_state_blob::{AccountStateBlob, AccountStateWithProof}, + contract_event::{ContractEvent, EventWithProof}, + crypto_proxies::ValidatorVerifier, + get_with_proof::{ + RequestItem, ResponseItem, UpdateToLatestLedgerRequest, UpdateToLatestLedgerResponse, + }, + transaction::{Transaction, Version}, + vm_error::StatusCode, +}; +use std::convert::TryFrom; +use std::sync::Arc; + +const MAX_GRPC_RETRY_COUNT: u64 = 1; + +/// Struct holding dependencies of client. +pub struct GRPCClient { + client: AdmissionControlClient, + validator_verifier: Arc, +} + +impl GRPCClient { + /// Construct a new Client instance. + pub fn new(host: &str, port: u16, validator_verifier: Arc) -> Result { + let conn_addr = format!("{}:{}", host, port); + + // Create a GRPC client + let env = Arc::new(EnvBuilder::new().name_prefix("grpc-client-").build()); + let ch = ChannelBuilder::new(env).connect(&conn_addr); + let client = AdmissionControlClient::new(ch); + + Ok(GRPCClient { + client, + validator_verifier, + }) + } + + /// Submits a transaction and bumps the sequence number for the sender, pass in `None` for + /// sender_account if sender's address is not managed by the client. + pub fn submit_transaction( + &self, + sender_account_opt: Option<&mut AccountData>, + req: &SubmitTransactionRequest, + ) -> Result<()> { + let mut resp = self.submit_transaction_opt(req); + + let mut try_cnt = 0_u64; + while Self::need_to_retry(&mut try_cnt, &resp) { + resp = self.submit_transaction_opt(&req); + } + + let completed_resp = SubmitTransactionResponse::try_from(resp?)?; + + if let Some(ac_status) = completed_resp.ac_status { + if ac_status == AdmissionControlStatus::Accepted { + if let Some(sender_account) = sender_account_opt { + // Bump up sequence_number if transaction is accepted. + sender_account.sequence_number += 1; + } + } else { + bail!("Transaction failed with AC status: {:?}", ac_status,); + } + } else if let Some(vm_error) = completed_resp.vm_error { + if vm_error.major_status == StatusCode::SEQUENCE_NUMBER_TOO_OLD { + if let Some(sender_account) = sender_account_opt { + sender_account.sequence_number = + self.get_sequence_number(sender_account.address)?; + bail!( + "Transaction failed with vm status: {:?}, please retry your transaction.", + vm_error + ); + } + } + bail!("Transaction failed with vm status: {:?}", vm_error); + } else if let Some(mempool_error) = completed_resp.mempool_error { + bail!( + "Transaction failed with mempool status: {:?}", + mempool_error, + ); + } else { + bail!( + "Malformed SubmitTransactionResponse which has no status set, {:?}", + completed_resp, + ); + } + Ok(()) + } + + /// Async version of submit_transaction + pub fn submit_transaction_async( + &self, + req: &SubmitTransactionRequest, + ) -> Result<(impl Future)> { + let resp = self + .client + .submit_transaction_async_opt(&req, Self::get_default_grpc_call_option())? + .then(|proto_resp| { + let ret = SubmitTransactionResponse::try_from(proto_resp?)?; + Ok(ret) + }); + Ok(resp) + } + + fn submit_transaction_opt( + &self, + resp: &SubmitTransactionRequest, + ) -> Result { + Ok(self + .client + .submit_transaction_opt(resp, Self::get_default_grpc_call_option())?) + } + + fn get_with_proof_async( + &self, + requested_items: Vec, + ) -> Result< + impl Future, Error = failure::Error>, + > { + let req = UpdateToLatestLedgerRequest::new(0, requested_items.clone()); + debug!("get_with_proof with request: {:?}", req); + let proto_req = req.clone().into(); + let validator_verifier = Arc::clone(&self.validator_verifier); + let ret = self + .client + .update_to_latest_ledger_async_opt(&proto_req, Self::get_default_grpc_call_option())? + .then(move |get_with_proof_resp| { + // TODO: Cache/persist client_known_version to work with validator set change when + // the feature is available. + + let resp = UpdateToLatestLedgerResponse::try_from(get_with_proof_resp?)?; + resp.verify(validator_verifier, &req)?; + Ok(resp) + }); + Ok(ret) + } + + fn need_to_retry(try_cnt: &mut u64, ret: &Result) -> bool { + if *try_cnt <= MAX_GRPC_RETRY_COUNT { + *try_cnt += 1; + if let Err(error) = ret { + if let Some(grpc_error) = error.downcast_ref::() { + if let grpcio::Error::RpcFailure(grpc_rpc_failure) = grpc_error { + // Only retry when the connection is down to make sure we won't + // send one txn twice. + return grpc_rpc_failure.status == grpcio::RpcStatusCode::UNAVAILABLE; + } + } + } + } + false + } + /// Sync version of get_with_proof + pub(crate) fn get_with_proof_sync( + &self, + requested_items: Vec, + ) -> Result> { + let mut resp: Result> = + self.get_with_proof_async(requested_items.clone())?.wait(); + let mut try_cnt = 0_u64; + + while Self::need_to_retry(&mut try_cnt, &resp) { + resp = self.get_with_proof_async(requested_items.clone())?.wait(); + } + + Ok(resp?) + } + + /// Get the latest account sequence number for the account specified. + pub fn get_sequence_number(&self, address: AccountAddress) -> Result { + use crate::bindings::account_resource_from_lcs; + + let blob = self.get_account_blob(address)?.0.expect("Can't read blob"); + let account_resource = unsafe { + let buf = blob.as_ref().to_vec(); + account_resource_from_lcs(buf.as_ptr(), buf.len()) + }; + + Ok(account_resource.sequence) + } + + /// Get the latest account state blob from validator. + pub(crate) fn get_account_blob( + &self, + address: AccountAddress, + ) -> Result<(Option, Version)> { + let req_item = RequestItem::GetAccountState { address }; + + let mut response = self.get_with_proof_sync(vec![req_item])?; + let account_state_with_proof = response + .response_items + .remove(0) + .into_get_account_state_response()?; + + Ok(( + account_state_with_proof.blob, + response.ledger_info_with_sigs.ledger_info().version(), + )) + } + + /// Get transaction from validator by account and sequence number. + pub fn get_txn_by_acc_seq( + &self, + account: AccountAddress, + sequence_number: u64, + fetch_events: bool, + ) -> Result>)>> { + let req_item = RequestItem::GetAccountTransactionBySequenceNumber { + account, + sequence_number, + fetch_events, + }; + + let mut response = self.get_with_proof_sync(vec![req_item])?; + let (txn_with_proof, _) = response + .response_items + .remove(0) + .into_get_account_txn_by_seq_num_response()?; + + Ok(txn_with_proof.map(|t| (t.transaction, t.events))) + } + + /// Get transactions in range (start_version..start_version + limit - 1) from validator. + pub fn get_txn_by_range( + &self, + start_version: u64, + limit: u64, + fetch_events: bool, + ) -> Result>)>> { + // Make the request. + let req_item = RequestItem::GetTransactions { + start_version, + limit, + fetch_events, + }; + let mut response = self.get_with_proof_sync(vec![req_item])?; + let txn_list_with_proof = response + .response_items + .remove(0) + .into_get_transactions_response()?; + + // Transform the response. + let num_txns = txn_list_with_proof.transactions.len(); + let event_lists = txn_list_with_proof + .events + .map(|event_lists| event_lists.into_iter().map(Some).collect()) + .unwrap_or_else(|| vec![None; num_txns]); + + Ok(itertools::zip_eq(txn_list_with_proof.transactions, event_lists).collect()) + } + + /// Get event by access path from validator. AccountStateWithProof will be returned if + /// 1. No event is available. 2. Ascending and available event number < limit. + /// 3. Descending and start_seq_num > latest account event sequence number. + pub fn get_events_by_access_path( + &self, + access_path: AccessPath, + start_event_seq_num: u64, + ascending: bool, + limit: u64, + ) -> Result<(Vec, AccountStateWithProof)> { + let req_item = RequestItem::GetEventsByEventAccessPath { + access_path, + start_event_seq_num, + ascending, + limit, + }; + + let mut response = self.get_with_proof_sync(vec![req_item])?; + let value_with_proof = response.response_items.remove(0); + match value_with_proof { + ResponseItem::GetEventsByEventAccessPath { + events_with_proof, + proof_of_latest_event, + } => Ok((events_with_proof, proof_of_latest_event)), + _ => bail!( + "Incorrect type of response returned: {:?}", + value_with_proof + ), + } + } + + fn get_default_grpc_call_option() -> CallOption { + CallOption::default() + .wait_for_ready(true) + .timeout(std::time::Duration::from_millis(5000)) + } +} diff --git a/rust/src/lib.rs b/rust/src/lib.rs new file mode 100644 index 00000000..2f94dc60 --- /dev/null +++ b/rust/src/lib.rs @@ -0,0 +1,73 @@ +// Copyright (c) The Libra Core Contributors +// SPDX-License-Identifier: Apache-2.0 + +#![deny(missing_docs)] +//! Libra Client +//! +//! Client (binary) is the CLI tool to interact with Libra validator. +//! It supposes all public APIs. +pub use libra_crypto::{ed25519::*, test_utils::KeyPair, traits::ValidKeyStringExt}; +pub use fixme_libra_types::{ + account_address::AccountAddress, + transaction::{RawTransaction, TransactionArgument, TransactionPayload}, +}; +pub use libra_wallet::wallet_library::CryptoHash; +use serde::{Deserialize, Serialize}; + +// libra-dev bindings +mod bindings; + +pub(crate) mod account_commands; +/// Main instance of client holding corresponding information, e.g. account address. +pub mod client_proxy; +/// Command struct to interact with client. +pub mod commands; +pub(crate) mod dev_commands; +/// gRPC client wrapper to connect to validator. +pub(crate) mod grpc_client; +pub(crate) mod query_commands; +pub(crate) mod transfer_commands; + +/// Struct used to store data for each created account. We track the sequence number +/// so we can create new transactions easily +#[derive(Debug, Serialize, Deserialize, PartialEq)] +#[cfg_attr(any(test, feature = "fuzzing"), derive(Clone))] +pub struct AccountData { + /// Address of the account. + pub address: AccountAddress, + /// (private_key, public_key) pair if the account is not managed by wallet. + pub key_pair: Option>, + /// Latest sequence number maintained by client, it can be different from validator. + pub sequence_number: u64, + /// Whether the account is initialized on chain, cached local only, or status unknown. + pub status: AccountStatus, +} + +/// Enum used to represent account status. +#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +pub enum AccountStatus { + /// Account exists only in local cache, it is not persisted on chain. + Local, + /// Account is persisted on chain. + Persisted, + /// Not able to check account status, probably because client is not able to talk to the + /// validator. + Unknown, +} + +impl AccountData { + /// Serialize account keypair if exists. + pub fn keypair_as_string(&self) -> Option<(String, String)> { + self.key_pair.as_ref().and_then(|key_pair| { + let private_key_string = key_pair + .private_key + .to_encoded_string() + .expect("Account private key to convertible to string!"); + let public_key_string = key_pair + .public_key + .to_encoded_string() + .expect("Account public Key not convertible to string!"); + Some((private_key_string, public_key_string)) + }) + } +} diff --git a/rust/src/main.rs b/rust/src/main.rs new file mode 100644 index 00000000..f3a71454 --- /dev/null +++ b/rust/src/main.rs @@ -0,0 +1,198 @@ +// Copyright (c) The Libra Core Contributors +// SPDX-License-Identifier: Apache-2.0 + +use chrono::prelude::{SecondsFormat, Utc}; +use client::{client_proxy::ClientProxy, commands::*}; +use libra_logger::set_default_global_logger; +use rustyline::{config::CompletionType, error::ReadlineError, Config, Editor}; +use std::num::NonZeroU16; +use structopt::StructOpt; + +#[derive(Debug, StructOpt)] +#[structopt( + name = "Libra Client", + author = "The Libra Association", + about = "Libra client to connect to a specific validator" +)] +struct Args { + /// Admission Control port to connect to. + #[structopt(short = "p", long, default_value = "8000")] + pub port: NonZeroU16, + /// Host address/name to connect to. + #[structopt(short = "a", long)] + pub host: String, + /// Path to the generated keypair for the faucet account. The faucet account can be used to + /// mint coins. If not passed, a new keypair will be generated for + /// you and placed in a temporary directory. + /// To manually generate a keypair, use generate-keypair: + /// `cargo run -p generate-keypair -- -o ` + #[structopt(short = "m", long = "faucet-key-file-path")] + pub faucet_account_file: Option, + /// Host that operates a faucet service + /// If not passed, will be derived from host parameter + #[structopt(short = "f", long)] + pub faucet_server: Option, + /// File location from which to load mnemonic word for user account address/key generation. + /// If not passed, a new mnemonic file will be generated by libra-wallet in the current + /// directory. + #[structopt(short = "n", long)] + pub mnemonic_file: Option, + /// File location from which to load config of trusted validators. It is used to verify + /// validator signatures in validator query response. The file should at least include public + /// key of all validators trusted by the client - which should typically be all validators on + /// the network. To connect to testnet, use 'libra/scripts/cli/consensus_peers.config.toml'. + /// Can be generated by libra-config for local testing: + /// `cargo run --bin libra-config` + /// But the preferred method is to simply use libra-swarm to run local networks + #[structopt(short = "s", long)] + pub validator_set_file: String, + /// If set, client will sync with validator during wallet recovery. + #[structopt(short = "r", long = "sync")] + pub sync: bool, + /// Verbose output. + #[structopt(short = "v", long = "verbose")] + pub verbose: bool, +} + +fn main() -> std::io::Result<()> { + let _logger = set_default_global_logger(false /* async */, None); + crash_handler::setup_panic_handler(); + let args = Args::from_args(); + + let (commands, alias_to_cmd) = get_commands(args.faucet_account_file.is_some()); + + let faucet_account_file = args.faucet_account_file.unwrap_or_else(|| "".to_string()); + + let mut client_proxy = ClientProxy::new( + &args.host, + args.port.get(), + &args.validator_set_file, + &faucet_account_file, + args.sync, + args.faucet_server, + args.mnemonic_file, + ) + .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, &format!("{}", e)[..]))?; + + // Test connection to validator + let test_ret = client_proxy.test_validator_connection(); + + if let Err(e) = test_ret { + println!( + "Not able to connect to validator at {}:{}, error {:?}", + args.host, args.port, e + ); + return Ok(()); + } + let cli_info = format!("Connected to validator at: {}:{}", args.host, args.port); + print_help(&cli_info, &commands); + println!("Please, input commands: \n"); + + let config = Config::builder() + .history_ignore_space(true) + .completion_type(CompletionType::List) + .auto_add_history(true) + .build(); + let mut rl = Editor::<()>::with_config(config); + loop { + let readline = rl.readline("libra% "); + match readline { + Ok(line) => { + let params = parse_cmd(&line); + if params.is_empty() { + continue; + } + match alias_to_cmd.get(¶ms[0]) { + Some(cmd) => { + if args.verbose { + println!("{}", Utc::now().to_rfc3339_opts(SecondsFormat::Secs, true)); + } + cmd.execute(&mut client_proxy, ¶ms); + } + None => match params[0] { + "quit" | "q!" => break, + "help" | "h" => print_help(&cli_info, &commands), + "" => continue, + x => println!("Unknown command: {:?}", x), + }, + } + } + Err(ReadlineError::Interrupted) => { + println!("CTRL-C"); + break; + } + Err(ReadlineError::Eof) => { + println!("CTRL-D"); + break; + } + Err(err) => { + println!("Error: {:?}", err); + break; + } + } + } + + Ok(()) +} + +/// Print the help message for the client and underlying command. +fn print_help(client_info: &str, commands: &[std::sync::Arc]) { + println!("{}", client_info); + println!("usage: \n\nUse the following commands:\n"); + for cmd in commands { + println!( + "{} {}\n\t{}", + cmd.get_aliases().join(" | "), + cmd.get_params_help(), + cmd.get_description() + ); + } + + println!("help | h \n\tPrints this help"); + println!("quit | q! \n\tExit this client"); + println!("\n"); +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_args_port() { + let args = Args::from_iter(&["test", "--host=h", "--validator-set-file=vsf"]); + assert_eq!(args.port.get(), 8000); + assert_eq!(format!("{}:{}", args.host, args.port.get()), "h:8000"); + let args = Args::from_iter(&[ + "test", + "--port=65535", + "--host=h", + "--validator-set-file=vsf", + ]); + assert_eq!(args.port.get(), 65535); + } + + #[test] + fn test_args_port_too_large() { + let result = Args::from_iter_safe(&[ + "test", + "--port=65536", + "--host=h", + "--validator-set-file=vsf", + ]); + assert_eq!(result.is_ok(), false); + } + + #[test] + fn test_args_port_invalid() { + let result = + Args::from_iter_safe(&["test", "--port=abc", "--host=h", "--validator-set-file=vsf"]); + assert_eq!(result.is_ok(), false); + } + + #[test] + fn test_args_port_zero() { + let result = + Args::from_iter_safe(&["test", "--port=0", "--host=h", "--validator-set-file=vsf"]); + assert_eq!(result.is_ok(), false); + } +} diff --git a/rust/src/query_commands.rs b/rust/src/query_commands.rs new file mode 100644 index 00000000..326822c7 --- /dev/null +++ b/rust/src/query_commands.rs @@ -0,0 +1,230 @@ +// Copyright (c) The Libra Core Contributors +// SPDX-License-Identifier: Apache-2.0 + +use crate::{client_proxy::ClientProxy, commands::*}; +use fixme_libra_types::account_config::get_account_resource_or_default; +use fixme_transaction_builder::get_transaction_name; + +/// Major command for query operations. +pub struct QueryCommand {} + +impl Command for QueryCommand { + fn get_aliases(&self) -> Vec<&'static str> { + vec!["query", "q"] + } + fn get_description(&self) -> &'static str { + "Query operations" + } + fn execute(&self, client: &mut ClientProxy, params: &[&str]) { + let commands: Vec> = vec![ + Box::new(QueryCommandGetBalance {}), + Box::new(QueryCommandGetSeqNum {}), + Box::new(QueryCommandGetLatestAccountState {}), + Box::new(QueryCommandGetTxnByAccountSeq {}), + Box::new(QueryCommandGetTxnByRange {}), + Box::new(QueryCommandGetEvent {}), + ]; + + subcommand_execute(¶ms[0], commands, client, ¶ms[1..]); + } +} + +/// Sub commands to query balance for the account specified. +pub struct QueryCommandGetBalance {} + +impl Command for QueryCommandGetBalance { + fn get_aliases(&self) -> Vec<&'static str> { + vec!["balance", "b"] + } + fn get_params_help(&self) -> &'static str { + "|" + } + fn get_description(&self) -> &'static str { + "Get the current balance of an account" + } + fn execute(&self, client: &mut ClientProxy, params: &[&str]) { + if params.len() != 2 { + println!("Invalid number of arguments for balance query"); + return; + } + match client.get_balance(¶ms) { + Ok(balance) => println!("Balance is: {}", balance), + Err(e) => report_error("Failed to get balance", e), + } + } +} + +/// Sub command to get the latest sequence number from validator for the account specified. +pub struct QueryCommandGetSeqNum {} + +impl Command for QueryCommandGetSeqNum { + fn get_aliases(&self) -> Vec<&'static str> { + vec!["sequence", "s"] + } + fn get_params_help(&self) -> &'static str { + "| [reset_sequence_number=true|false]" + } + fn get_description(&self) -> &'static str { + "Get the current sequence number for an account, \ + and reset current sequence number in CLI (optional, default is false)" + } + fn execute(&self, client: &mut ClientProxy, params: &[&str]) { + println!(">> Getting current sequence number"); + match client.get_sequence_number(¶ms) { + Ok(sn) => println!("Sequence number is: {}", sn), + Err(e) => report_error("Error getting sequence number", e), + } + } +} + +/// Command to query latest account state from validator. +pub struct QueryCommandGetLatestAccountState {} + +impl Command for QueryCommandGetLatestAccountState { + fn get_aliases(&self) -> Vec<&'static str> { + vec!["account_state", "as"] + } + fn get_params_help(&self) -> &'static str { + "|" + } + fn get_description(&self) -> &'static str { + "Get the latest state for an account" + } + fn execute(&self, client: &mut ClientProxy, params: &[&str]) { + println!(">> Getting latest account state"); + match client.get_latest_account_state(¶ms) { + Ok((acc, version)) => match get_account_resource_or_default(&acc) { + Ok(_) => println!( + "Latest account state is: \n \ + Account: {:#?}\n \ + State: {:#?}\n \ + Blockchain Version: {}\n", + client + .get_account_address_from_parameter(params[1]) + .expect("Unable to parse account parameter"), + acc, + version, + ), + Err(e) => report_error("Error converting account blob to account resource", e), + }, + Err(e) => report_error("Error getting latest account state", e), + } + } +} + +/// Sub command to get transaction by account and sequence number from validator. +pub struct QueryCommandGetTxnByAccountSeq {} + +impl Command for QueryCommandGetTxnByAccountSeq { + fn get_aliases(&self) -> Vec<&'static str> { + vec!["txn_acc_seq", "ts"] + } + fn get_params_help(&self) -> &'static str { + "| " + } + fn get_description(&self) -> &'static str { + "Get the committed transaction by account and sequence number. \ + Optionally also fetch events emitted by this transaction." + } + fn execute(&self, client: &mut ClientProxy, params: &[&str]) { + println!(">> Getting committed transaction by account and sequence number"); + match client.get_committed_txn_by_acc_seq(¶ms) { + Ok(txn_and_events) => { + match txn_and_events { + Some((comm_txn, events)) => { + println!( + "Committed transaction: {}", + comm_txn.format_for_client(get_transaction_name) + ); + if let Some(events_inner) = &events { + println!("Events: "); + for event in events_inner { + println!("{}", event); + } + } + } + None => println!("Transaction not available"), + }; + } + Err(e) => report_error( + "Error getting committed transaction by account and sequence number", + e, + ), + } + } +} + +/// Sub command to query transactions by range from validator. +pub struct QueryCommandGetTxnByRange {} + +impl Command for QueryCommandGetTxnByRange { + fn get_aliases(&self) -> Vec<&'static str> { + vec!["txn_range", "tr"] + } + fn get_params_help(&self) -> &'static str { + " " + } + fn get_description(&self) -> &'static str { + "Get the committed transactions by version range. \ + Optionally also fetch events emitted by these transactions." + } + fn execute(&self, client: &mut ClientProxy, params: &[&str]) { + println!(">> Getting committed transaction by range"); + match client.get_committed_txn_by_range(¶ms) { + Ok(comm_txns_and_events) => { + // Note that this should never panic because we shouldn't return items + // if the version wasn't able to be parsed in the first place + let mut cur_version = params[1].parse::().expect("Unable to parse version"); + for (txn, opt_events) in comm_txns_and_events { + println!( + "Transaction at version {}: {}", + cur_version, + txn.format_for_client(get_transaction_name) + ); + if let Some(events) = opt_events { + if events.is_empty() { + println!("No events returned"); + } else { + for event in events { + println!("{}", event); + } + } + } + cur_version += 1; + } + } + Err(e) => report_error("Error getting committed transactions by range", e), + } + } +} + +/// Sub command to query events from validator. +pub struct QueryCommandGetEvent {} + +impl Command for QueryCommandGetEvent { + fn get_aliases(&self) -> Vec<&'static str> { + vec!["event", "ev"] + } + fn get_params_help(&self) -> &'static str { + "| " + } + fn get_description(&self) -> &'static str { + "Get events by account and event type (sent|received)." + } + fn execute(&self, client: &mut ClientProxy, params: &[&str]) { + println!(">> Getting events by account and event type."); + match client.get_events_by_account_and_type(¶ms) { + Ok((events, last_event_state)) => { + if events.is_empty() { + println!("No events returned"); + } else { + for event in events { + println!("{}", event); + } + } + println!("Last event state: {:#?}", last_event_state); + } + Err(e) => report_error("Error getting events by access path", e), + } + } +} diff --git a/rust/src/transfer_commands.rs b/rust/src/transfer_commands.rs new file mode 100644 index 00000000..7c505b72 --- /dev/null +++ b/rust/src/transfer_commands.rs @@ -0,0 +1,51 @@ +// Copyright (c) The Libra Core Contributors +// SPDX-License-Identifier: Apache-2.0 + +use crate::{client_proxy::ClientProxy, commands::*}; + +/// Command to transfer coins between two accounts. +pub struct TransferCommand {} + +impl Command for TransferCommand { + fn get_aliases(&self) -> Vec<&'static str> { + vec!["transfer", "transferb", "t", "tb"] + } + fn get_params_help(&self) -> &'static str { + "\n\t| \ + | \ + [gas_unit_price_in_micro_libras (default=0)] [max_gas_amount_in_micro_libras (default 140000)] \ + Suffix 'b' is for blocking. " + } + fn get_description(&self) -> &'static str { + "Transfer coins (in libra) from account to another." + } + fn execute(&self, client: &mut ClientProxy, params: &[&str]) { + if params.len() < 4 || params.len() > 6 { + println!("Invalid number of arguments for transfer"); + println!( + "{} {}", + self.get_aliases().join(" | "), + self.get_params_help() + ); + return; + } + + println!(">> Transferring"); + let is_blocking = blocking_cmd(¶ms[0]); + match client.transfer_coins(¶ms, is_blocking) { + Ok(index_and_seq) => { + if is_blocking { + println!("Finished transaction!"); + } else { + println!("Transaction submitted to validator"); + } + println!( + "To query for transaction status, run: query txn_acc_seq {} {} \ + ", + index_and_seq.account_index, index_and_seq.sequence_number + ); + } + Err(e) => report_error("Failed to perform transaction", e), + } + } +} diff --git a/rust/update_peers.sh b/rust/update_peers.sh new file mode 100755 index 00000000..08919f39 --- /dev/null +++ b/rust/update_peers.sh @@ -0,0 +1,2 @@ +#!/bin/sh +curl -o consensus_peers.config.toml 'https://raw.githubusercontent.com/libra/libra/testnet/scripts/cli/consensus_peers.config.toml' \ No newline at end of file From 181dd2a852fa3daa9227ed925e03473114539e54 Mon Sep 17 00:00:00 2001 From: Yucong Sun Date: Thu, 14 Nov 2019 14:12:14 -0800 Subject: [PATCH 2/2] Import testsuite --- build.sh | 2 +- rust/Cargo.lock | 1773 ++++++++++++++++- rust/Cargo.toml | 9 +- .../config/data/configs/full_node.config.toml | 24 + rust/config/data/configs/node.config.toml | 20 + .../persistent_data.node.config.override.toml | 2 + rust/config/data/metrics/prometheus.yml | 29 + rust/src/client_proxy.rs | 8 +- rust/test.sh | 3 + rust/tests/libratest/dev_modules/module.mvir | 12 + rust/tests/libratest/dev_modules/script.mvir | 13 + rust/tests/libratest/main.rs | 4 + rust/tests/libratest/smoke_test.rs | 684 +++++++ 13 files changed, 2553 insertions(+), 30 deletions(-) create mode 100644 rust/config/data/configs/full_node.config.toml create mode 100644 rust/config/data/configs/node.config.toml create mode 100644 rust/config/data/configs/overrides/persistent_data.node.config.override.toml create mode 100644 rust/config/data/metrics/prometheus.yml create mode 100755 rust/test.sh create mode 100644 rust/tests/libratest/dev_modules/module.mvir create mode 100644 rust/tests/libratest/dev_modules/script.mvir create mode 100644 rust/tests/libratest/main.rs create mode 100644 rust/tests/libratest/smoke_test.rs diff --git a/build.sh b/build.sh index 3130bd7c..82eb9ade 100755 --- a/build.sh +++ b/build.sh @@ -10,7 +10,6 @@ cd .. # Then build rust client cd rust cargo build -cargo test cd .. # C Stuff @@ -21,5 +20,6 @@ cmake .. make VERBOSE=1 # Test! +cd rust && ./test.sh && cd .. ./c/c-client ./cpp/cpp-client \ No newline at end of file diff --git a/rust/Cargo.lock b/rust/Cargo.lock index b31e2241..1200cefb 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -1,5 +1,15 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +[[package]] +name = "accumulator" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + [[package]] name = "adler32" version = "1.0.4" @@ -22,6 +32,40 @@ dependencies = [ "prost-build 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "admission-control-service" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "admission-control-proto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "bounded-executor 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "channel 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "debug-interface 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "executable-helpers 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "grpc-helpers 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "grpcio 0.5.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-config 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-mempool 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-mempool-shared-proto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-metrics 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-prost-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "network 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "storage-client 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "storage-service 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "tokio 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "vm-validator 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + [[package]] name = "aho-corasick" version = "0.7.6" @@ -38,6 +82,11 @@ dependencies = [ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "anyhow" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "arc-swap" version = "0.4.3" @@ -48,6 +97,14 @@ name = "arrayref" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "arrayvec" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "arrayvec" version = "0.5.1" @@ -67,6 +124,14 @@ name = "autocfg" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "backoff" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "backtrace" version = "0.3.40" @@ -110,6 +175,16 @@ name = "bech32" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "bincode" +version = "1.2.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)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "bindgen" version = "0.51.1" @@ -166,6 +241,15 @@ dependencies = [ "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "blake2-rfc" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "constant_time_eq 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "blake2b_simd" version = "0.5.9" @@ -195,11 +279,31 @@ dependencies = [ "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "bounded-executor" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-semaphore 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "tokio 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "bs58" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "build_const" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "bumpalo" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "byte-tools" version = "0.3.1" @@ -250,6 +354,15 @@ dependencies = [ "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "bzip2-sys" +version = "0.1.7" +source = "git+https://github.com/alexcrichton/bzip2-rs.git#96cc4909a1a180a62ca8e3716785dc6f7a7f9ac0" +dependencies = [ + "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "c2-chacha" version = "0.2.3" @@ -267,6 +380,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "cc" version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "jobserver 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "cexpr" @@ -281,6 +398,36 @@ name = "cfg-if" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "chacha20-poly1305-aead" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "constant_time_eq 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "channel" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-metrics 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + +[[package]] +name = "chashmap" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "chrono" version = "0.4.9" @@ -324,6 +471,37 @@ dependencies = [ "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "client" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "admission-control-proto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "crash-handler 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "grpcio 0.5.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-canonical-serialization 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-config 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-metrics 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-tools 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-wallet 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "num-traits 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", + "reqwest 0.9.22 (registry+https://github.com/rust-lang/crates.io-index)", + "rust_decimal 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rustyline 5.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", + "structopt 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "transaction-builder 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + [[package]] name = "client" version = "0.1.0" @@ -331,8 +509,10 @@ dependencies = [ "admission-control-proto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", "bindgen 0.51.1 (registry+https://github.com/rust-lang/crates.io-index)", "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "compiler 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", "crash-handler 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "generate-keypair 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", "grpcio 0.5.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "itertools 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -343,6 +523,8 @@ dependencies = [ "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", "libra-metrics 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-node 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-swarm 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", "libra-tools 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", "libra-wallet 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", @@ -393,6 +575,104 @@ dependencies = [ "termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "compiler" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "bytecode-source-map 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "bytecode-verifier 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "ir-to-bytecode 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", + "stdlib 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "structopt 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "vm 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + +[[package]] +name = "config-builder" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "generate-keypair 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-config 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-prost-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "parity-multiaddr 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "structopt 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "vm-genesis 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + +[[package]] +name = "consensus" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +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)", + "channel 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "consensus-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "debug-interface 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "executor 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "grpcio 0.5.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-canonical-serialization 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-config 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-mempool 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-metrics 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-prost-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-tools 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "mirai-annotations 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "network 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "num-derive 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-multiaddr 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "prometheus 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rmp-serde 0.13.7 (registry+https://github.com/rust-lang/crates.io-index)", + "rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "safety-rules 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "schemadb 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", + "siphasher 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "state-synchronizer 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "storage-client 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "termion 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "vm-runtime 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + +[[package]] +name = "consensus-types" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "executor 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-canonical-serialization 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "mirai-annotations 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "network 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rmp-serde 0.13.7 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "constant_time_eq" version = "0.1.4" @@ -435,6 +715,14 @@ dependencies = [ "toml 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "crc" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "crc32fast" version = "1.2.0" @@ -456,6 +744,14 @@ dependencies = [ "crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "crossbeam-channel" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "crossbeam-channel" version = "0.4.0" @@ -535,6 +831,15 @@ dependencies = [ "subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "ctrlc" +version = "3.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "curve25519-dalek" version = "1.2.3" @@ -564,6 +869,23 @@ name = "data-encoding" version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "debug-interface" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +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)", + "grpcio 0.5.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "grpcio-compiler 0.5.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-metrics 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "prost 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "derivative" version = "1.0.3" @@ -701,12 +1023,49 @@ dependencies = [ ] [[package]] -name = "failure" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "executable-helpers" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" 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)", + "crash-handler 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-config 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-metrics 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "slog-scope 4.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "executor" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "backoff 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "config-builder 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-config 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-metrics 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-prost-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-state-view 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "scratchpad 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "storage-client 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "vm-runtime 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + +[[package]] +name = "failure" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", ] [[package]] @@ -746,6 +1105,11 @@ name = "fnv" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "fs_extra" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "fuchsia-cprng" version = "0.1.1" @@ -770,6 +1134,20 @@ name = "futures" version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "futures-channel-preview" +version = "0.3.0-alpha.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-core-preview" +version = "0.3.0-alpha.19" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "futures-cpupool" version = "0.1.8" @@ -779,11 +1157,108 @@ dependencies = [ "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "futures-executor-preview" +version = "0.3.0-alpha.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-io-preview" +version = "0.3.0-alpha.19" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "futures-join-macro-preview" +version = "0.3.0-alpha.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.6 (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.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-preview" +version = "0.3.0-alpha.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-channel-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-executor-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-select-macro-preview" +version = "0.3.0-alpha.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.6 (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.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-semaphore" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "futures-sink-preview" +version = "0.3.0-alpha.19" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "futures-util-preview" +version = "0.3.0-alpha.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-channel-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-io-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-join-macro-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-select-macro-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-utils 0.1.0-alpha.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-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "gcc" version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "generate-keypair" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "libra-canonical-serialization 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-tools 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "structopt 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "generic-array" version = "0.12.3" @@ -827,6 +1302,19 @@ name = "glob" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "grpc-helpers" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "grpcio 0.5.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-metrics 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + [[package]] name = "grpcio" version = "0.5.0-alpha.4" @@ -838,6 +1326,7 @@ dependencies = [ "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "prost 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "protobuf 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1058,6 +1547,59 @@ name = "itoa" version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "jellyfish-merkle" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-nibble 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "num-derive 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "jemalloc-sys" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", + "fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "jemallocator" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "jemalloc-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "jobserver" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "getrandom 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "js-sys" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "wasm-bindgen 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "keccak" version = "0.1.0" @@ -1076,6 +1618,9 @@ dependencies = [ name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "libc" @@ -1199,6 +1744,37 @@ dependencies = [ "thread-id 3.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "libra-mempool" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "bounded-executor 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "grpc-helpers 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "grpcio 0.5.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "grpcio-compiler 0.5.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-config 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-mempool-shared-proto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-metrics 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "network 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "storage-client 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "tokio 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "ttl_cache 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "vm-validator 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + [[package]] name = "libra-mempool-shared-proto" version = "0.1.0" @@ -1233,6 +1809,40 @@ dependencies = [ "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "libra-node" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "admission-control-proto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "admission-control-service 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "consensus 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "crash-handler 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "debug-interface 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "executable-helpers 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "executor 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "grpc-helpers 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "grpcio 0.5.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "jemallocator 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-config 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-mempool 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-metrics 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "network 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "parity-multiaddr 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "signal-hook 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "state-synchronizer 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "storage-client 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "storage-service 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "structopt 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "vm-runtime 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + [[package]] name = "libra-proptest-helpers" version = "0.1.0" @@ -1243,6 +1853,43 @@ dependencies = [ "proptest-derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "libra-prost-ext" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libra-state-view" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + +[[package]] +name = "libra-swarm" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "client 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "config-builder 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "ctrlc 3.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "debug-interface 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "generate-keypair 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-config 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-tools 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "structopt 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "libra-tools" version = "0.1.0" @@ -1301,25 +1948,120 @@ dependencies = [ ] [[package]] -name = "lock_api" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "libradb" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" dependencies = [ - "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "accumulator 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "arc-swap 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "jellyfish-merkle 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-canonical-serialization 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-metrics 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-prost-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-tools 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "num-derive 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rusty-fork 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "schemadb 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "storage-proto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "strum 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "strum_macros 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "log" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "librocksdb_sys" +version = "0.1.0" +source = "git+https://github.com/pingcap/rust-rocksdb.git?rev=3cd18c44d160a3cdba586d6502d51b7cc67efc59#3cd18c44d160a3cdba586d6502d51b7cc67efc59" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "bzip2-sys 0.1.7 (git+https://github.com/alexcrichton/bzip2-rs.git)", + "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", + "cmake 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "libtitan_sys 0.0.1 (git+https://github.com/pingcap/rust-rocksdb.git?rev=3cd18c44d160a3cdba586d6502d51b7cc67efc59)", + "libz-sys 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", + "lz4-sys 1.8.3 (git+https://github.com/busyjay/lz4-rs.git?branch=adjust-build)", + "snappy-sys 0.1.0 (git+https://github.com/busyjay/rust-snappy.git?branch=static-link)", + "zstd-sys 1.4.15+zstd.1.4.4 (git+https://github.com/gyscos/zstd-rs.git)", ] [[package]] -name = "mach_o_sys" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "libtitan_sys" +version = "0.0.1" +source = "git+https://github.com/pingcap/rust-rocksdb.git?rev=3cd18c44d160a3cdba586d6502d51b7cc67efc59#3cd18c44d160a3cdba586d6502d51b7cc67efc59" +dependencies = [ + "bzip2-sys 0.1.7 (git+https://github.com/alexcrichton/bzip2-rs.git)", + "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", + "cmake 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "libz-sys 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)", + "lz4-sys 1.8.3 (git+https://github.com/busyjay/lz4-rs.git?branch=adjust-build)", + "snappy-sys 0.1.0 (git+https://github.com/busyjay/rust-snappy.git?branch=static-link)", + "zstd-sys 1.4.15+zstd.1.4.4 (git+https://github.com/gyscos/zstd-rs.git)", +] + +[[package]] +name = "libz-sys" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (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.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "lock_api" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "log" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "lru-cache" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "lz4-sys" +version = "1.8.3" +source = "git+https://github.com/busyjay/lz4-rs.git?branch=adjust-build#5a8afe4010c67899fc7af876a58d67fd6269bf81" +dependencies = [ + "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "mach_o_sys" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "matches" @@ -1355,6 +2097,16 @@ dependencies = [ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "memsocket" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "mime" version = "0.3.14" @@ -1394,6 +2146,16 @@ dependencies = [ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "mio-uds" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "miow" version = "0.2.1" @@ -1425,6 +2187,52 @@ dependencies = [ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "netcore" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +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-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "memsocket 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "parity-multiaddr 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "yamux 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "network" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "admission-control-proto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "bounded-executor 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "channel 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-config 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-metrics 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-prost-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "memsocket 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "netcore 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "noise 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "parity-multiaddr 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pin-project 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "prometheus 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "prost 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "prost-build 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-retry 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "nibble_vec" version = "0.0.4" @@ -1442,6 +2250,28 @@ dependencies = [ "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "nohash-hasher" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "noise" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "netcore 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "snow 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "nom" version = "4.2.3" @@ -1483,6 +2313,16 @@ dependencies = [ "num-traits 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "num-derive" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", +] + [[package]] name = "num-integer" version = "0.1.41" @@ -1550,6 +2390,11 @@ dependencies = [ "syn 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "numtoa" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "opaque-debug" version = "0.2.3" @@ -1560,6 +2405,14 @@ name = "ordermap" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "owning_ref" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "pairing" version = "0.14.2" @@ -1600,6 +2453,15 @@ dependencies = [ "unsigned-varint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "parking_lot" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "parking_lot" version = "0.9.0" @@ -1610,6 +2472,17 @@ dependencies = [ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "parking_lot_core" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (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)", +] + [[package]] name = "parking_lot_core" version = "0.6.2" @@ -1662,6 +2535,29 @@ dependencies = [ "ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "pin-project" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "pin-project-internal 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "pin-project-internal" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.6 (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.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "pin-utils" +version = "0.1.0-alpha.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "pkg-config" version = "0.3.17" @@ -1690,6 +2586,21 @@ dependencies = [ "syn 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "proc-macro-hack" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.6 (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.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "proc-macro-nested" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "proc-macro2" version = "0.4.30" @@ -2016,6 +2927,28 @@ dependencies = [ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rayon" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +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.6.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rayon-core" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +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)", + "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)", +] + [[package]] name = "rdrand" version = "0.4.0" @@ -2029,6 +2962,14 @@ name = "redox_syscall" version = "0.1.56" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "redox_termios" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "redox_users" version = "0.3.1" @@ -2064,6 +3005,25 @@ dependencies = [ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rental" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rental-impl 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rental-impl" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.6 (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.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "reqwest" version = "0.9.22" @@ -2095,6 +3055,49 @@ dependencies = [ "winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "ring" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.47 (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.65 (registry+https://github.com/rust-lang/crates.io-index)", + "spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "web-sys 0.3.31 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rmp" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rmp-serde" +version = "0.13.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rmp 0.8.8 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rocksdb" +version = "0.3.0" +source = "git+https://github.com/pingcap/rust-rocksdb.git?rev=3cd18c44d160a3cdba586d6502d51b7cc67efc59#3cd18c44d160a3cdba586d6502d51b7cc67efc59" +dependencies = [ + "crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "librocksdb_sys 0.1.0 (git+https://github.com/pingcap/rust-rocksdb.git?rev=3cd18c44d160a3cdba586d6502d51b7cc67efc59)", +] + [[package]] name = "rust-argon2" version = "0.5.1" @@ -2173,6 +3176,18 @@ name = "safemem" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "safety-rules" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "consensus-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "same-file" version = "1.0.5" @@ -2182,12 +3197,33 @@ dependencies = [ ] [[package]] -name = "scopeguard" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "semver" +name = "schemadb" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-metrics 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "rocksdb 0.3.0 (git+https://github.com/pingcap/rust-rocksdb.git?rev=3cd18c44d160a3cdba586d6502d51b7cc67efc59)", +] + +[[package]] +name = "scopeguard" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "scratchpad" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "itertools 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + +[[package]] +name = "semver" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ @@ -2277,6 +3313,29 @@ name = "shlex" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "signal-hook" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "signal-hook-registry 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "signal-hook-registry" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arc-swap 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "siphasher" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "slab" version = "0.4.2" @@ -2352,11 +3411,70 @@ dependencies = [ "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "snappy-sys" +version = "0.1.0" +source = "git+https://github.com/busyjay/rust-snappy.git?branch=static-link#8c12738bad811397600455d6982aff754ea2ac44" +dependencies = [ + "cmake 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "snow" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "chacha20-poly1305-aead 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.16.9 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "x25519-dalek 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sourcefile" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "spin" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "stable_deref_trait" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "state-synchronizer" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "executor 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "grpcio 0.5.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-config 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-metrics 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "network 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "prometheus 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "storage-client 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "tokio 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "vm-runtime 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + [[package]] name = "stdlib" version = "0.1.0" @@ -2369,6 +3487,62 @@ dependencies = [ "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", ] +[[package]] +name = "storage-client" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "grpcio 0.5.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-state-view 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "scratchpad 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "storage-proto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + +[[package]] +name = "storage-proto" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +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)", + "grpcio 0.5.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "grpcio-compiler 0.5.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "prost 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "storage-service" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "debug-interface 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "executable-helpers 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "grpc-helpers 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "grpcio 0.5.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-canonical-serialization 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-config 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-metrics 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libradb 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "storage-client 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "storage-proto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "structopt 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "string" version = "0.2.1" @@ -2403,6 +3577,22 @@ dependencies = [ "syn 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "strum" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "strum_macros" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "heck 0.3.1 (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)", +] + [[package]] name = "subtle" version = "1.0.0" @@ -2479,6 +3669,17 @@ dependencies = [ "wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "termion" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.65 (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)", +] + [[package]] name = "textwrap" version = "0.11.0" @@ -2560,6 +3761,27 @@ dependencies = [ "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "tokio" +version = "0.2.0-alpha.6" +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-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.19 (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.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-fs 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-macros 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-net 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing-core 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "tokio-buf" version = "0.1.1" @@ -2570,6 +3792,28 @@ dependencies = [ "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "tokio-codec" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.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)", +] + +[[package]] +name = "tokio-codec" +version = "0.2.0-alpha.6" +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-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "tokio-current-thread" version = "0.1.6" @@ -2588,6 +3832,37 @@ dependencies = [ "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "tokio-executor" +version = "0.2.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "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-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.19 (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)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-fs" +version = "0.2.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "tokio-io" version = "0.1.12" @@ -2598,6 +3873,52 @@ dependencies = [ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "tokio-io" +version = "0.2.0-alpha.6" +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-core-preview 0.3.0-alpha.19 (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)", + "pin-project 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-macros" +version = "0.2.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tokio-net" +version = "0.2.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "iovec 0.1.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.65 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-uds 0.6.7 (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-codec 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-io 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "tokio-reactor" version = "0.1.10" @@ -2616,6 +3937,16 @@ dependencies = [ "tokio-sync 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "tokio-retry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "tokio-sync" version = "0.1.7" @@ -2625,6 +3956,17 @@ dependencies = [ "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "tokio-sync" +version = "0.2.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "tokio-tcp" version = "0.1.3" @@ -2665,6 +4007,19 @@ dependencies = [ "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "tokio-timer" +version = "0.3.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util-preview 0.3.0-alpha.19 (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.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "toml" version = "0.5.5" @@ -2673,6 +4028,36 @@ dependencies = [ "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "tracing" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing-attributes 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing-core 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tracing-core" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "transaction-builder" version = "0.1.0" @@ -2700,6 +4085,19 @@ dependencies = [ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "ttl_cache" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "typed-arena" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "typenum" version = "1.11.2" @@ -2754,6 +4152,11 @@ name = "unsigned-varint" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "untrusted" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "url" version = "1.7.2" @@ -2787,6 +4190,11 @@ dependencies = [ "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "vcpkg" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "vec_map" version = "0.8.1" @@ -2818,6 +4226,61 @@ dependencies = [ "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "vm-cache-map" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "chashmap 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "typed-arena 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "vm-genesis" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-config 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-prost-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-state-view 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "stdlib 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "transaction-builder 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "vm 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "vm-cache-map 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "vm-runtime 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "vm-runtime-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + +[[package]] +name = "vm-runtime" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "bytecode-verifier 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "hex 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)", + "libra-canonical-serialization 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-config 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-crypto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-metrics 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-state-view 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "mirai-annotations 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "prometheus 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rental 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "vm 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "vm-cache-map 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "vm-runtime-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + [[package]] name = "vm-runtime-types" version = "0.1.0" @@ -2834,6 +4297,21 @@ dependencies = [ "vm 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", ] +[[package]] +name = "vm-validator" +version = "0.1.0" +source = "git+https://github.com/libra/libra.git?branch=testnet#7bfcd43b9a765ba42e05d682087fd8acde323a7d" +dependencies = [ + "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "libra-config 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-state-view 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "scratchpad 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "storage-client 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", + "vm-runtime 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)", +] + [[package]] name = "void" version = "1.0.2" @@ -2872,6 +4350,90 @@ name = "wasi" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "wasm-bindgen" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-macro 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bumpalo 2.6.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)", + "proc-macro2 1.0.6 (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.8 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-shared 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-macro-support 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.6 (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.8 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-backend 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-shared 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "wasm-bindgen-webidl" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "anyhow 1.0.19 (registry+https://github.com/rust-lang/crates.io-index)", + "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.6 (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.8 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-backend 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", + "weedle 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "web-sys" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "anyhow 1.0.19 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.31 (registry+https://github.com/rust-lang/crates.io-index)", + "sourcefile 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-webidl 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "weedle" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "which" version = "2.0.1" @@ -2962,55 +4524,112 @@ dependencies = [ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "x25519-dalek" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "curve25519-dalek 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "yamux" +version = "0.2.2" +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)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "nohash-hasher 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.2 (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)", +] + +[[package]] +name = "zstd-sys" +version = "1.4.15+zstd.1.4.4" +source = "git+https://github.com/gyscos/zstd-rs.git#9bdc44501ec3279e83d9bfe1ebc953bb7cf000b9" +dependencies = [ + "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", + "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", +] + [metadata] +"checksum accumulator 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2" "checksum admission-control-proto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum admission-control-service 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "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 anyhow 1.0.19 (registry+https://github.com/rust-lang/crates.io-index)" = "57114fc2a6cc374bce195d3482057c846e706d252ff3604363449695684d7a0d" "checksum arc-swap 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f1a1eca3195b729bbd64e292ef2f5fff6b1c28504fed762ce2b1013dde4d8e92" "checksum arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee" +"checksum arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" "checksum arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" "checksum atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90" "checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" +"checksum backoff 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "afe2eef13bc0f5a77e7c2fec6d863fa59eea6901e4949830b67f0c348d720100" "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.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b8ab639324e3ee8774d296864fbc0dbbb256cf1a41c490b94cba90c082915f92" "checksum bindgen 0.51.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ebd71393f1ec0509b553aa012b9b58e81dadbdff7130bd3b8cba576e69b32f75" "checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80" "checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb" "checksum bit-vec 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a4523a10839ffae575fb08aa3423026c8cb4687eef43952afb956229d4f246f7" "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 blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" "checksum blake2b_simd 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b83b7baab1e671718d78204225800d6b170e648188ac7dc992e9d6bddf87d0c0" "checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" "checksum block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" +"checksum bounded-executor 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum bs58 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c95ee6bba9d950218b6cc910cf62bc9e0a171d0f4537e3627b0f54d08549b188" +"checksum build_const 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "39092a32794787acd8525ee150305ff051b0aa6cc2abaf193924f5ab05425f39" +"checksum bumpalo 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad807f2fc2bf185eeb98ff3a901bd46dc5ad58163d0fa4577ba0d25674d71708" "checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" "checksum bytecode-source-map 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum bytecode-verifier 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "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 bzip2-sys 0.1.7 (git+https://github.com/alexcrichton/bzip2-rs.git)" = "" "checksum c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb" "checksum c_linked_list 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4964518bd3b4a8190e832886cdc0da9794f12e8e6c1613a9e90ff331c4c8724b" "checksum cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)" = "aa87058dce70a3ff5621797f1506cb837edd02ac4c0ae642b4542dce802908b8" "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 chacha20-poly1305-aead 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77d2058ba29594f69c75e8a9018e0485e3914ca5084e3613cd64529042f5423b" +"checksum channel 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum chashmap 2.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ff41a3c2c1e39921b9003de14bf0439c7b63a9039637c291e1a64925d8ddfa45" "checksum chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e8493056968583b0193c1bb04d6f7684586f3726992d6c573261941a895dbd68" "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 clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "97276801e127ffb46b66ce23f35cc96bd454fa311294bced4bbace7baa8b1d17" +"checksum client 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" "checksum cmake 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "81fb25b677f8bf1eb325017cb6bb8452f87969db0fedb4f757b297bee78a7c62" "checksum codespan 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "004def512a9848b23a68ed110927d102b0e6d9f3dc732e28570879afde051f8c" "checksum codespan-reporting 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab081a14ab8f9598ce826890fe896d0addee68c7a58ab49008369ccbb51510a8" +"checksum compiler 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum config-builder 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum consensus 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum consensus-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "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 crash-handler 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum crc 1.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb" "checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" "checksum crossbeam 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "69323bff1fb41c635347b8ead484a5ca6c3f11914d784170b158d8449ab07f8e" +"checksum crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c8ec7fcd21571dc78f96cc96243cab8d8f035247c3efd16c687be154c3fa9efa" "checksum crossbeam-channel 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "acec9a3b0b3559f15aee4f90746c4e5e293b701c0f7d3925d24e01645267b68c" "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" @@ -3020,9 +4639,11 @@ dependencies = [ "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 ctrlc 3.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c7dfd2d8b4c82121dfdff120f818e09fc4380b0b7e17a742081a89b94853e87f" "checksum curve25519-dalek 1.2.3 (git+https://github.com/calibra/curve25519-dalek.git?branch=fiat)" = "" "checksum curve25519-dalek 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8b7dcd30ba50cdf88b55b033456138b7c0ac4afdc436d82e1b79f370f24cc66d" "checksum data-encoding 2.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f4f47ca1860a761136924ddd2422ba77b2ea54fe8cc75b9040804a0d9d32ad97" +"checksum debug-interface 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum derivative 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "942ca430eef7a3806595a6737bc388bf51adb888d3fc0dd1b50f1c170167ee3a" "checksum derive-new 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)" = "71f31892cd5c62e414316f2963c5689242c43d8e7bbcaaeca97e5e28c95d91d9" "checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" @@ -3038,23 +4659,38 @@ dependencies = [ "checksum errno 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c2a071601ed01b988f896ab14b95e67335d1eeb50190932a1320f7fe3cadc84e" "checksum errno-dragonfly 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067" "checksum error-chain 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3ab49e9dcb602294bc42f9a7dfc9bc6e936fca4418ea300dbfb84fe16de0b7d9" +"checksum executable-helpers 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum executor 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "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 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 fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2a4a2034423744d2cc7ca2068453168dcdb82c438419e639a26bd87839c674" "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-channel-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "d5e5f4df964fa9c1c2f8bddeb5c3611631cacd93baf810fc8bb2fb4b495c263a" +"checksum futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "b35b6263fb1ef523c3056565fa67b1d16f0a8604ff12b11b08c25f28a734c60a" "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" +"checksum futures-executor-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "75236e88bd9fe88e5e8bfcd175b665d0528fe03ca4c5207fabc028c8f9d93e98" +"checksum futures-io-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "f4914ae450db1921a56c91bde97a27846287d062087d4a652efc09bb3a01ebda" +"checksum futures-join-macro-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "59e260e6b48ce7d99936c40a7088d782a499a67bef41da5481d21b439454bcea" +"checksum futures-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "3b1dce2a0267ada5c6ff75a8ba864b4e679a9e2aa44262af7a3b5516d530d76e" +"checksum futures-select-macro-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "df2ae43560eb10b5e50604c53bead6c9c75eade7081390cd3cce66e1582958f7" +"checksum futures-semaphore 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "86f148ef6b69f75bb610d4f9a2336d4fc88c4b5b67129d1a340dd0fd362efeec" +"checksum futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "5ce968633c17e5f97936bd2797b6e38fb56cf16a7422319f7ec2e30d3c470e8d" "checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" +"checksum generate-keypair 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" "checksum get_if_addrs 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "abddb55a898d32925f3148bd281174a68eeb68bbfd9a5938a57b18f506ee4ef7" "checksum get_if_addrs-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0d04f9fb746cf36b191c00f3ede8bde9c8e64f9f4b05ae2694a9ccf5e3f5ab48" "checksum getrandom 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "e7db7ca94ed4cd01190ceee0d8a8052f08a247aa1b469a7f68c6a3b71afcf407" "checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" +"checksum grpc-helpers 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum grpcio 0.5.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ba77e7b81b58a12e2dff1271c20a1f8cd74916de09355a5777470d911e8de41c" "checksum grpcio-compiler 0.5.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "3c8c6f6d181ac240958853a3b95a4eac9b23816a0a922b9d30b991142938b9ff" "checksum grpcio-sys 0.5.0-alpha.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c8aebf59fdf3668edf163c1948ceca64c4ebb733d71c9055a12219d336bd5d51" @@ -3077,6 +4713,11 @@ dependencies = [ "checksum ir-to-bytecode-syntax 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum itertools 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "87fa75c9dea7b07be3138c49abbb83fd4bea199b5cdc76f9804458edc5da0d6e" "checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" +"checksum jellyfish-merkle 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum jemalloc-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0d3b9f3f5c9b31aa0f5ed3260385ac205db665baa41d49bb8338008ae94ede45" +"checksum jemallocator 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "43ae63fcfc45e99ab3d1b29a46782ad679e98436c3169d15a167a1108a724b69" +"checksum jobserver 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "f2b1d42ef453b30b7387e113da1c83ab1605d90c5b4e0eb8e96d016ed3b8c160" +"checksum js-sys 0.3.31 (registry+https://github.com/rust-lang/crates.io-index)" = "d8657b7ca06a6044ece477f6900bf7670f8b5fd0cce177a1d7094eef51e0adf4" "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 lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" @@ -3089,35 +4730,55 @@ dependencies = [ "checksum libra-failure-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum libra-failure-macros 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum libra-logger 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum libra-mempool 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum libra-mempool-shared-proto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum libra-metrics 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum libra-nibble 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum libra-node 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum libra-proptest-helpers 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum libra-prost-ext 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum libra-state-view 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum libra-swarm 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum libra-tools 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum libra-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum libra-wallet 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum libradb 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum librocksdb_sys 0.1.0 (git+https://github.com/pingcap/rust-rocksdb.git?rev=3cd18c44d160a3cdba586d6502d51b7cc67efc59)" = "" +"checksum libtitan_sys 0.0.1 (git+https://github.com/pingcap/rust-rocksdb.git?rev=3cd18c44d160a3cdba586d6502d51b7cc67efc59)" = "" +"checksum libz-sys 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)" = "2eb5e43362e38e2bca2fd5f5134c4d4564a23a5c28e9b95411652021a8675ebe" +"checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" "checksum lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8912e782533a93a167888781b836336a6ca5da6175c05944c86cf28c31104dc" "checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" +"checksum lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" +"checksum lz4-sys 1.8.3 (git+https://github.com/busyjay/lz4-rs.git?branch=adjust-build)" = "" "checksum mach_o_sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3e854583a83f20cf329bb9283366335387f7db59d640d1412167e05fedb98826" "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 memoffset 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "75189eb85871ea5c2e2c15abbdd541185f63b408415e5051f5cac122d8c774b9" "checksum memsec 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ccabb92f665f997bcb4f3ade019a8e07315148d8bcef3e65fbc5dbd65a22eb04" +"checksum memsocket 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "dd1d63acd1b78403cc0c325605908475dd9b9a3acbf65ed8bcab97e27014afcf" "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.19 (registry+https://github.com/rust-lang/crates.io-index)" = "83f51996a3ed004ef184e16818edc51fadffe8e7ca68be67f9dee67d84d0ff23" +"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 mirai-annotations 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7968d6cdc3c7a9632e45d738fd07fde89d04bbb0e88e7abb058871a82fa92645" "checksum multimap 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2eb04b9f127583ed176e163fb9ec6f3e793b87e21deedd5734a69386a18a0151" "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" +"checksum netcore 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum network 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum nibble_vec 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c8d77f3db4bce033f4d04db08079b2ef1c3d02b44e86f25d08886fafa7756ffa" "checksum nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6c722bee1037d430d0f8e687bbdbf222f27cc6e4e68d5caf630857bb2b6dbdce" +"checksum nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" +"checksum nohash-hasher 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4e657a6ec97f9a3ba46f6f7034ea6db9fcd5b71d25ef1074b7bc03da49be0e8e" +"checksum noise 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" "checksum num 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cf4825417e1e1406b3782a8ce92f4d53f26ec055e3622e1881ca8e9f5f9e08db" "checksum num-bigint 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f9c3f34cdd24f334cb265d9bf8bfa8a241920d026916785747a92f0e55541a1a" "checksum num-complex 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fcb0cf31fb3ff77e6d2a6ebd6800df7fdcd106f2ad89113c9130bcd07f93dffc" +"checksum num-derive 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "eafd0b45c5537c3ba526f79d3e75120036502bebacbb3f3220914067ce39dbf2" "checksum num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09" "checksum num-iter 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "76bd5272412d173d6bf9afdf98db8612bbabc9a7a830b7bfc9c188911716132e" "checksum num-rational 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f2885278d5fe2adc2f75ced642d52d879bffaceb5a2e0b1d4309ffdfb239b454" @@ -3125,22 +4786,31 @@ dependencies = [ "checksum num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "76dac5ed2a876980778b8b85f75a71b6cbf0db0b1232ee12f826bccb00d09d72" "checksum num_enum 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "be601e38e20a6f3d01049d85801cb9b7a34a8da7a0da70df507bbde7735058c8" "checksum num_enum_derive 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b59f30f6a043f2606adbd0addbf1eef6f2e28e8c4968918b63b7ff97ac0db2a7" +"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 ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063" +"checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" "checksum pairing 0.14.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ceda21136251c6d5a422d3d798d8ac22515a6e8d3521bb60c59a8349d36d0d57" "checksum parity-multiaddr 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "045b3c7af871285146300da35b1932bb6e4639b66c7c98e85d06a32cbc4e8fa7" "checksum parity-multihash 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "df3a17dc27848fd99e4f87eb0f8c9baba6ede0a6d555400c850ca45254ef4ce3" +"checksum parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "149d8f5b97f3c1133e3cfcd8886449959e856b557ff281e292b733d7c69e005e" "checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" +"checksum parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "4db1a8ccf734a7bce794cc19b3df06ed87ab2f3907036b693c68f56b4d4537fa" "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 pin-project 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c5fce7042b4e4338a3f868e563fff394709c3ff62cf6908d407dd9e2caff96ed" +"checksum pin-project-internal 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "7644b4721cc27235f667e735da8732f5b781c442157315674c0cb7f28b4cabf3" +"checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" "checksum pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)" = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677" "checksum ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b" "checksum proc-macro-crate 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e10d4b51f154c8a7fb96fd6dad097cb74b863943ec010ac94b9fd1be8861fe1e" "checksum proc-macro-error 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "aeccfe4d5d8ea175d5f0e4a2ad0637e0f4121d63bd99d356fb1f39ab2e7c6097" +"checksum proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)" = "ecd45702f76d6d3c75a80564378ae228a85f0b59d2f3ed43c91b4a69eb2ebfc5" +"checksum proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" "checksum proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9c9e470a8dc4aeae2dee2f335e8f533e2d4b347e1434e5671afc49b054592f27" "checksum prometheus 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5567486d5778e2c6455b1b90ff1c558f29e751fc018130fa182e15828e728af1" @@ -3174,13 +4844,22 @@ dependencies = [ "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.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "83a27732a533a1be0a0035a111fe76db89ad312f6f0347004c220c57f209a123" +"checksum rayon-core 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "98dcf634205083b17d0861252431eb2acbfb698ab7478a2d20de07954f47ec7b" "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.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc220bd33bdce8f093101afe22a037b8eb0e5af33592e6a9caafff0d4cb81cbd" "checksum regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716" "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" +"checksum rental 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8545debe98b2b139fb04cad8618b530e9b07c152d99a5de83c860b877d67847f" +"checksum rental-impl 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "475e68978dc5b743f2f40d8e0a8fdc83f1c5e78cbf4b8fa5e74e73beebc340de" "checksum reqwest 0.9.22 (registry+https://github.com/rust-lang/crates.io-index)" = "2c2064233e442ce85c77231ebd67d9eca395207dec2127fe0bbedde4bd29a650" +"checksum ring 0.16.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6747f8da1f2b1fabbee1aaa4eb8a11abf9adef0bf58a41cee45db5d59cecdfac" +"checksum rmp 0.8.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f594cb7ff8f1c5a7907f6be91f15795c8301e0d5718eb007fb5832723dd716e" +"checksum rmp-serde 0.13.7 (registry+https://github.com/rust-lang/crates.io-index)" = "011e1d58446e9fa3af7cdc1fb91295b10621d3ac4cb3a85cc86385ee9ca50cd3" +"checksum rocksdb 0.3.0 (git+https://github.com/pingcap/rust-rocksdb.git?rev=3cd18c44d160a3cdba586d6502d51b7cc67efc59)" = "" "checksum rust-argon2 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ca4eaef519b494d1f2848fc602d18816fed808a981aedf4f1f00ceb7c9d32cf" "checksum rust_decimal 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f7a28ded8f10361cefb69a8d8e1d195acf59344150534c165c401d6611cf013d" "checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" @@ -3190,8 +4869,11 @@ dependencies = [ "checksum rustyline 5.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "e9d8eb9912bc492db051324d36f5cea56984fc2afeaa5c6fa84e0b0e3cde550f" "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 safety-rules 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "585e8ddcedc187886a30fa705c47985c3fa88d06624095856b36ca0b82ff4421" +"checksum schemadb 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" +"checksum scratchpad 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" "checksum serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)" = "0c4b39bd9b0b087684013a792c59e3e07a46a01d2322518d8a1104641a0b1be0" @@ -3202,6 +4884,9 @@ dependencies = [ "checksum sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b4d8bfd0e469f417657573d8451fb33d16cfe0989359b93baf3a1ffc639543d" "checksum sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf" "checksum shlex 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" +"checksum signal-hook 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "cb543aecec4ba8b867f41284729ddfdb7e8fcd70ec3d7d37fca3007a4b53675f" +"checksum signal-hook-registry 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1797d48f38f91643908bb14e35e79928f9f4b3cefb2420a564dde0991b4358dc" +"checksum siphasher 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "83da420ee8d1a89e640d0948c646c1c088758d3a3c538f943bfa97bdac17929d" "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum slog 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1cc9c640a4adbfbcc11ffb95efe5aa7af7309e002adab54b185507dbf2377b99" "checksum slog-async 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e544d16c6b230d84c866662fe55e31aacfca6ae71e6fc49ae9a311cb379bfc2f" @@ -3210,12 +4895,22 @@ dependencies = [ "checksum slog-stdlog 4.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "be4d87903baf655da2d82bc3ac3f7ef43868c58bf712b3a661fda72009304c23" "checksum slog-term 2.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "54b50e85b73c2bd42ceb97b6ded235576d405bd1e974242ccfe634fa269f6da7" "checksum smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" +"checksum snappy-sys 0.1.0 (git+https://github.com/busyjay/rust-snappy.git?branch=static-link)" = "" +"checksum snow 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "91eecae35b461ed26bda7a76bea2cc5bda2bf4b8dd06761879f19e6fdd50c2dd" +"checksum sourcefile 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4bf77cb82ba8453b42b6ae1d692e4cdc92f9a47beaf89a847c8be83f4e328ad3" "checksum spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" +"checksum state-synchronizer 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum stdlib 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum storage-client 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum storage-proto 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum storage-service 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "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 structopt 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c167b61c7d4c126927f5346a4327ce20abf8a186b8041bbeb1ce49e5db49587b" "checksum structopt-derive 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "519621841414165d2ad0d4c92be8f41844203f2b67e245f9345a5a12d40c69d7" +"checksum strum 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e5d1c33039533f051704951680f1adfd468fd37ac46816ded0d9ee068e60f05f" +"checksum strum_macros 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "47cd23f5c7dee395a00fa20135e2ec0fffcdfa151c56182966d7a3261343432e" "checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" "checksum subtle 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab3af2eb31c42e8f0ccf43548232556c42737e01a96db6e1777b0be108e79799" "checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" @@ -3225,6 +4920,7 @@ dependencies = [ "checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" "checksum term 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c0863a3345e70f61d613eab32ee046ccd1bcc5f9105fe402c61fcd0c13eeb8b5" "checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" +"checksum termion 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a8fb22f7cde82c8220e5aeacb3258ed7ce996142c77cba193f203515e26c330" "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 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" @@ -3232,19 +4928,35 @@ dependencies = [ "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 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "1f17f5d6ab0f35c1506678b28fb1798bdf74fcb737e9843c7b17b73e426eba38" "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-codec 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9f5d22fd1e84bd4045d28813491cb7d7caae34d45c80517c2213f09a85e8787a" "checksum tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d16217cad7f1b840c5a97dfb3c43b0c871fef423a6e8d2118c604e843662a443" "checksum tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f27ee0e6db01c5f0b2973824547ce7e637b2ed79b891a9677b0de9bd532b6ac" +"checksum tokio-executor 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9ee9ceecf69145923834ea73f32ba40c790fd877b74a7817dd0b089f1eb9c7c8" +"checksum tokio-fs 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0bf85e16971e06e680c622e0c1b455be94b086275c5ddcd6d4a83a2bfbb83cda" "checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" +"checksum tokio-io 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "112784d5543df30660b04a72ca423bfbd90e8bb32f94dcf610f15401218b22c5" +"checksum tokio-macros 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "86b616374bcdadd95974e1f0dfca07dc913f1163c53840c0d664aca35114964e" +"checksum tokio-net 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a441682cd32f3559383112c4a7f372f5c9fa1950c5cf8c8dd05274a2ce8c2654" "checksum tokio-reactor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "c56391be9805bc80163151c0b9e5164ee64f4b0200962c346fea12773158f22d" +"checksum tokio-retry 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9c03755b956458582182941061def32b8123a26c98b08fc6ddcf49ae89d18f33" "checksum tokio-sync 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "d06554cce1ae4a50f42fba8023918afa931413aded705b560e29600ccf7c6d76" +"checksum tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4f1aaeb685540f7407ea0e27f1c9757d258c7c6bf4e3eb19da6fc59b747239d2" "checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" "checksum tokio-threadpool 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "2bd2c6a3885302581f4401c82af70d792bb9df1700e7437b0aeb4ada94d5388c" "checksum tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "f2106812d500ed25a4f38235b9cae8f78a09edf43203e16e59c3b769a342a60e" +"checksum tokio-timer 0.3.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b97c1587fe71018eb245a4a9daa13a5a3b681bbc1f7fdadfe24720e141472c13" "checksum toml 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "01d1404644c8b12b16bfcffa4322403a91a451584daaaa7c28d3152e6cbc98cf" +"checksum tracing 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ff4e4f59e752cb3beb5b61c6d5e11191c7946231ba84faec2902c9efdd8691c5" +"checksum tracing-attributes 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a4263b12c3d3c403274493eb805966093b53214124796552d674ca1dd5d27c2b" +"checksum tracing-core 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "bc913647c520c959b6d21e35ed8fa6984971deca9f0a2fcb8c51207e0c56af1d" "checksum transaction-builder 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "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 ttl_cache 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d4d297cea97896dfff8e9a26a92005571d193aff369f3404a77708b65dcc68db" +"checksum typed-arena 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9b2228007eba4120145f785df0f6c92ea538f5a3635a612ecf4e334c8c1446d" "checksum typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9" "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" @@ -3254,20 +4966,34 @@ dependencies = [ "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 untrusted 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60369ef7a31de49bcb3f6ca728d4ba7300d9a1658f94c727d4cab8c8d9f4aece" "checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" "checksum url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "75b414f6c464c879d7f9babf951f23bc3743fb7313c081b2e6ca719067ea9d61" "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.7 (registry+https://github.com/rust-lang/crates.io-index)" = "33dd455d0f96e90a75803cfeb7f948768c08d70a6de9a8d2362461935698bf95" "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 vm 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum vm-cache-map 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum vm-genesis 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum vm-runtime 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum vm-runtime-types 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" +"checksum vm-validator 0.1.0 (git+https://github.com/libra/libra.git?branch=testnet)" = "" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" "checksum wait-timeout 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" "checksum walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9658c94fa8b940eab2250bd5a457f9c48b748420d71293b165c8cdbe2f55f71e" "checksum want 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b6395efa4784b027708f7451087e647ec73cc74f5d9bc2e418404248d679a230" "checksum wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d" +"checksum wasm-bindgen 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)" = "c4568ae1b4e07ca907b1a4de41174eaa3e5be4066c024475586b7842725f69a9" +"checksum wasm-bindgen-backend 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)" = "5a00cfdce37367770062065fd3abb9278cbae86a0d918cacd0978a7acd51b481" +"checksum wasm-bindgen-macro 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)" = "7c568f4d3cf6d7c1d72b165daf778fb0d6e09a24f96ac14fc8c4f66a96e86b72" +"checksum wasm-bindgen-macro-support 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)" = "430d12539ae324d16097b399e9d07a6d5ce0173b2a61a2d02346ca7c198daffe" +"checksum wasm-bindgen-shared 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)" = "8ae7167f0bbffd7fac2b12da0fa1f834c1d84671a1ae3c93ac8bde2e97179c39" +"checksum wasm-bindgen-webidl 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)" = "3021567c515a746a64ad0b269d120d46e687c0c95702a4750623db935ae6b5e7" +"checksum web-sys 0.3.31 (registry+https://github.com/rust-lang/crates.io-index)" = "ce8e893e021539beb87de8f06e77bdb390a3ab0db4cfeb569c4e377b55ed20de" +"checksum weedle 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3bb43f70885151e629e2a19ce9e50bd730fd436cfd4b666894c9ce4de9141164" "checksum which 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b57acb10231b9493c8472b20cb57317d0679a49e0bdbee44b3b803a6473af164" "checksum which 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5475d47078209a02e60614f7ba5e645ef3ed60f771920ac1906d7c1cc65024c8" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" @@ -3280,3 +5006,6 @@ dependencies = [ "checksum winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9" "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" "checksum x25519-dalek 0.5.2 (git+https://github.com/calibra/x25519-dalek.git?branch=fiat)" = "" +"checksum x25519-dalek 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7ee1585dc1484373cbc1cee7aafda26634665cf449436fd6e24bfd1fad230538" +"checksum yamux 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2758f29014c1cb7a6e74c1b1160ac8c8203be342d35b73462fc6a13cc6385423" +"checksum zstd-sys 1.4.15+zstd.1.4.4 (git+https://github.com/gyscos/zstd-rs.git)" = "" diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 5397f5ee..a20f1523 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -44,15 +44,18 @@ crash-handler = { git = "https://github.com/libra/libra.git", branch = "testnet failure = { package = "libra-failure-ext", git = "https://github.com/libra/libra.git", branch = "testnet" } libra-logger = { git = "https://github.com/libra/libra.git", branch = "testnet" } libra-metrics = { git = "https://github.com/libra/libra.git", branch = "testnet" } -libra-tools = { git = "https://github.com/libra/libra.git", branch = "testnet" } +libra-tools = { git = "https://github.com/libra/libra.git", branch = "testnet" } [build-dependencies] bindgen = "0.51.1" [dev-dependencies] proptest = "0.9.2" +libra-swarm = { git = "https://github.com/libra/libra.git", branch = "testnet" } +libra-node = { git = "https://github.com/libra/libra.git", branch = "testnet" } +generate-keypair = { git = "https://github.com/libra/libra.git", branch = "testnet" } +compiler = { git = "https://github.com/libra/libra.git", branch = "testnet" } [features] -# FIXEME -default = ["libra-crypto/cloneable-private-keys"] +default = [] fuzzing = ["proptest", "libra-crypto/fuzzing", "fixme-libra-types/fuzzing"] \ No newline at end of file diff --git a/rust/config/data/configs/full_node.config.toml b/rust/config/data/configs/full_node.config.toml new file mode 100644 index 00000000..c00af411 --- /dev/null +++ b/rust/config/data/configs/full_node.config.toml @@ -0,0 +1,24 @@ +# Defaults are now set in config.rs + +[[networks]] +seed_peers_file = "" # For direct validation of this file +network_keypairs_file = "" # For direct validation of this file +network_peers_file = "" # For direct validation of this file +role = "full_node" + +[consensus] +consensus_keypair_file = "" # For direct validation of this file +consensus_peers_file = "" # For direct validation of this file + +[state_sync] +upstream_peers = ["ae1b54220905fca36d046a6e093632ed1f219e0a35a4fd7ba82e6e0d515f0b8e"] + +[vm_config] + [vm_config.publishing_options] + type = "Locked" + whitelist = [ + "ae1b54220905fca36d046a6e093632ed1f219e0a35a4fd7ba82e6e0d515f0b8e", + "fb999f2d6f45efc9b991993e332f40760171de8a46db40ca93f1baff56842c44", + "6465374a3ecf6d1a3836bbab3bcd624244a0217530a601fa20de80d562f87d80", + "774b10985dd9bf17ddee899256942c1dc0ab2c1b07d99ec78f774651f01e04b8" + ] diff --git a/rust/config/data/configs/node.config.toml b/rust/config/data/configs/node.config.toml new file mode 100644 index 00000000..3db23556 --- /dev/null +++ b/rust/config/data/configs/node.config.toml @@ -0,0 +1,20 @@ +# Defaults are now set in config.rs +[[networks]] +seed_peers_file = "" # For direct validation of this file +network_keypairs_file = "" # For direct validation of this file +network_peers_file = "" # For direct validation of this file +role = "validator" + +[consensus] +consensus_keypair_file = "" # For direct validation of this file +consensus_peers_file = "" # For direct validation of this file + +[vm_config] + [vm_config.publishing_options] + type = "Locked" + whitelist = [ + "6aabc87f543f85e10216432d02b0251297d4c7723e906de481dfa04b057c2371", + "1cf66b5f5c911e80dad222b8ee8dfe3ad4830f75bb412ba12ea8e429203d9c83", + "a2180395d1632a0793f34e8a8a6be20b3b03bdceee35affe8c751fc8467b73a4", + "5ee07d4ac1ecf88f1b41c2c458f15699fe9d811c61563338253b3807b75c04c1", + ] diff --git a/rust/config/data/configs/overrides/persistent_data.node.config.override.toml b/rust/config/data/configs/overrides/persistent_data.node.config.override.toml new file mode 100644 index 00000000..8ded8c1f --- /dev/null +++ b/rust/config/data/configs/overrides/persistent_data.node.config.override.toml @@ -0,0 +1,2 @@ +[base] +data_dir_path = '/tmp/libra/test_persistent' diff --git a/rust/config/data/metrics/prometheus.yml b/rust/config/data/metrics/prometheus.yml new file mode 100644 index 00000000..fe663d40 --- /dev/null +++ b/rust/config/data/metrics/prometheus.yml @@ -0,0 +1,29 @@ +global: + scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. + evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. + # scrape_timeout is set to the global default (10s). + +# Alertmanager configuration +alerting: + alertmanagers: + - static_configs: + - targets: + # - alertmanager:9093 + +# Load rules once and periodically evaluate them according to the global 'evaluation_interval'. +rule_files: + # - "first_rules.yml" + # - "second_rules.yml" + +# A scrape configuration containing exactly one endpoint to scrape: +# Here it's Prometheus itself. +scrape_configs: + # The job name is added as a label `job=` to any timeseries scraped from this config. + - job_name: 'libra-node' + honor_labels: true + + # metrics_path defaults to '/metrics' + # scheme defaults to 'http'. + + static_configs: + - targets: ['127.0.0.1:9091'] diff --git a/rust/src/client_proxy.rs b/rust/src/client_proxy.rs index 47b8011a..381bd427 100644 --- a/rust/src/client_proxy.rs +++ b/rust/src/client_proxy.rs @@ -468,7 +468,7 @@ impl ClientProxy { let dependencies_file = self.handle_dependencies(tmp_source_path.display(), is_module)?; let mut args = format!( - "run -p compiler -- {} -a {}{}", + "{} -a {}{}", tmp_source_path.display(), address, if is_module { " -m" } else { "" }, @@ -477,7 +477,7 @@ impl ClientProxy { args.push_str(&format!(" --deps={}", file.as_ref().display())); } - let status = Command::new("cargo") + let status = Command::new("./target/debug/compiler") .args(args.split(' ')) .spawn()? .wait()?; @@ -497,11 +497,11 @@ impl ClientProxy { source_path: Display, is_module: bool, ) -> Result> { - let mut args = format!("run -p compiler -- -l {}", source_path); + let mut args = format!("-l {}", source_path); if is_module { args.push_str(" -m"); } - let child = Command::new("cargo") + let child = Command::new("./target/debug/compiler") .args(args.split(' ')) .stdout(Stdio::piped()) .spawn()?; diff --git a/rust/test.sh b/rust/test.sh new file mode 100755 index 00000000..44102fcb --- /dev/null +++ b/rust/test.sh @@ -0,0 +1,3 @@ +cargo build -p libra-node +cargo build -p compiler +cargo test --features=fuzzing \ No newline at end of file diff --git a/rust/tests/libratest/dev_modules/module.mvir b/rust/tests/libratest/dev_modules/module.mvir new file mode 100644 index 00000000..744304a4 --- /dev/null +++ b/rust/tests/libratest/dev_modules/module.mvir @@ -0,0 +1,12 @@ +// Copyright (c) The Libra Core Contributors +// SPDX-License-Identifier: Apache-2.0 + +module MyModule { + import 0x0.LibraCoin; + + // The identity function for coins: takes a LibraCoin.T as input and hands it back + public id(c: LibraCoin.T): LibraCoin.T { + return move(c); + } + +} diff --git a/rust/tests/libratest/dev_modules/script.mvir b/rust/tests/libratest/dev_modules/script.mvir new file mode 100644 index 00000000..6f7d5b91 --- /dev/null +++ b/rust/tests/libratest/dev_modules/script.mvir @@ -0,0 +1,13 @@ +// Copyright (c) The Libra Core Contributors +// SPDX-License-Identifier: Apache-2.0 + +import 0x0.LibraAccount; +import 0x0.LibraCoin; +import {{sender}}.MyModule; + +main(recipient: address, amount: u64) { + let coin: LibraCoin.T; + coin = LibraAccount.withdraw_from_sender(move(amount)); + LibraAccount.deposit(move(recipient), MyModule.id(move(coin))); + return; +} diff --git a/rust/tests/libratest/main.rs b/rust/tests/libratest/main.rs new file mode 100644 index 00000000..3fe41ed2 --- /dev/null +++ b/rust/tests/libratest/main.rs @@ -0,0 +1,4 @@ +// Copyright (c) The Libra Core Contributors +// SPDX-License-Identifier: Apache-2.0 + +mod smoke_test; diff --git a/rust/tests/libratest/smoke_test.rs b/rust/tests/libratest/smoke_test.rs new file mode 100644 index 00000000..fcb14989 --- /dev/null +++ b/rust/tests/libratest/smoke_test.rs @@ -0,0 +1,684 @@ +// Copyright (c) The Libra Core Contributors +// SPDX-License-Identifier: Apache-2.0 +#![allow(unused_mut)] +use client::{ + client_proxy::ClientProxy, AccountAddress, CryptoHash, TransactionArgument, TransactionPayload, +}; +use libra_config::config::{NodeConfig, RoleType}; +use libra_crypto::{ed25519::*, test_utils::KeyPair, SigningKey}; +use libra_logger::prelude::*; +use libra_swarm::{swarm::LibraSwarm, utils}; +use libra_tools::tempdir::TempPath; +use num_traits::cast::FromPrimitive; +use rust_decimal::Decimal; +use std::fs; +use std::str::FromStr; +use std::{thread, time}; + +struct TestEnvironment { + validator_swarm: LibraSwarm, + full_node_swarm: Option, + faucet_key: ( + KeyPair, + String, + Option, + ), + mnemonic_file: TempPath, +} + +impl TestEnvironment { + fn new(num_validators: usize) -> Self { + ::libra_logger::init_for_e2e_testing(); + let faucet_key = generate_keypair::load_faucet_key_or_create_default(None); + let validator_swarm = LibraSwarm::configure_swarm( + num_validators, + RoleType::Validator, + faucet_key.0.clone(), + None, + None, + None, + ) + .unwrap(); + + let mnemonic_file = libra_tools::tempdir::TempPath::new(); + mnemonic_file + .create_as_file() + .expect("could not create temporary mnemonic_file_path"); + Self { + validator_swarm, + full_node_swarm: None, + faucet_key, + mnemonic_file, + } + } + + fn setup_full_node_swarm(&mut self, num_full_nodes: usize) { + self.full_node_swarm = Some( + LibraSwarm::configure_swarm( + num_full_nodes, + RoleType::FullNode, + self.faucet_key.0.clone(), + None, + None, + Some(String::from( + self.validator_swarm + .dir + .as_ref() + .join("0") + .to_str() + .expect("Failed to convert std::fs::Path to String"), + )), + ) + .unwrap(), + ); + } + + fn launch_swarm(&mut self, role: RoleType) { + let mut swarm = match role { + RoleType::Validator => &mut self.validator_swarm, + RoleType::FullNode => self.full_node_swarm.as_mut().unwrap(), + }; + let num_attempts = 5; + for _ in 0..num_attempts { + match swarm.launch_attempt(role, false) { + Ok(_) => { + return; + } + Err(err) => { + error!("Error launching swarm: {}", err); + } + } + } + panic!("Max out {} attempts to launch test swarm", num_attempts); + } + + fn get_ac_client(&self, port: u16) -> ClientProxy { + let config = NodeConfig::load(&self.validator_swarm.config.configs[0]).unwrap(); + let validator_set_file = self + .validator_swarm + .dir + .as_ref() + .join("0") + .join(&config.consensus.consensus_peers_file); + let mnemonic_file_path = self + .mnemonic_file + .path() + .to_path_buf() + .canonicalize() + .expect("Unable to get canonical path of mnemonic_file_path") + .to_str() + .unwrap() + .to_string(); + + ClientProxy::new( + "localhost", + port, + validator_set_file.to_str().unwrap(), + &self.faucet_key.1, + false, + /* faucet server */ None, + Some(mnemonic_file_path), + ) + .unwrap() + } + + fn get_validator_ac_client(&self, node_index: usize) -> ClientProxy { + let port = self.validator_swarm.get_ac_port(node_index); + self.get_ac_client(port) + } + + fn get_full_node_ac_client(&self, node_index: usize) -> ClientProxy { + match &self.full_node_swarm { + Some(swarm) => { + let port = swarm.get_ac_port(node_index); + self.get_ac_client(port) + } + None => { + panic!("Full Node swarm is not initialized"); + } + } + } +} + +fn setup_swarm_and_client_proxy( + num_nodes: usize, + client_port_index: usize, +) -> (TestEnvironment, ClientProxy) { + let mut env = TestEnvironment::new(num_nodes); + env.launch_swarm(RoleType::Validator); + let ac_client = env.get_validator_ac_client(client_port_index); + (env, ac_client) +} + +fn test_smoke_script(mut client_proxy: ClientProxy) { + client_proxy.create_next_account(false).unwrap(); + client_proxy + .mint_coins(&["mintb", "0", "10"], true) + .unwrap(); + assert_eq!( + Decimal::from_f64(10.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "0"]).unwrap()).ok() + ); + client_proxy.create_next_account(false).unwrap(); + client_proxy.mint_coins(&["mintb", "1", "1"], true).unwrap(); + client_proxy + .transfer_coins(&["tb", "0", "1", "3"], true) + .unwrap(); + assert_eq!( + Decimal::from_f64(7.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "0"]).unwrap()).ok() + ); + assert_eq!( + Decimal::from_f64(4.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "1"]).unwrap()).ok() + ); + client_proxy.create_next_account(false).unwrap(); + client_proxy + .mint_coins(&["mintb", "2", "15"], true) + .unwrap(); + assert_eq!( + Decimal::from_f64(15.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "2"]).unwrap()).ok() + ); +} + +#[test] +fn test_execute_custom_module_and_script() { + let (_swarm, mut client_proxy) = setup_swarm_and_client_proxy(1, 0); + client_proxy.create_next_account(false).unwrap(); + client_proxy + .mint_coins(&["mintb", "0", "50"], true) + .unwrap(); + assert_eq!( + Decimal::from_f64(50.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "0"]).unwrap()).ok() + ); + + let recipient_address = client_proxy.create_next_account(false).unwrap().address; + client_proxy.mint_coins(&["mintb", "1", "1"], true).unwrap(); + + let module_path = + utils::workspace_root().join("tests/libratest/dev_modules/module.mvir"); + let unwrapped_module_path = module_path.to_str().unwrap(); + let module_params = &["compile", "0", unwrapped_module_path, "module"]; + let module_compiled_path = client_proxy.compile_program(module_params).unwrap(); + + client_proxy + .publish_module(&["publish", "0", &module_compiled_path[..]]) + .unwrap(); + + let script_path = + utils::workspace_root().join("tests/libratest/dev_modules/script.mvir"); + let unwrapped_script_path = script_path.to_str().unwrap(); + let script_params = &["execute", "0", unwrapped_script_path, "script"]; + let script_compiled_path = client_proxy.compile_program(script_params).unwrap(); + let formatted_recipient_address = format!("0x{}", recipient_address); + + client_proxy + .execute_script(&[ + "execute", + "0", + &script_compiled_path[..], + &formatted_recipient_address[..], + "10", + ]) + .unwrap(); + + assert_eq!( + Decimal::from_f64(49.999_990), + Decimal::from_str(&client_proxy.get_balance(&["b", "0"]).unwrap()).ok() + ); + assert_eq!( + Decimal::from_f64(1.000_010), + Decimal::from_str(&client_proxy.get_balance(&["b", "1"]).unwrap()).ok() + ); +} + +#[test] +fn smoke_test_single_node() { + let (_swarm, mut client_proxy) = setup_swarm_and_client_proxy(1, 0); + test_smoke_script(client_proxy); +} + +#[test] +fn smoke_test_multi_node() { + let (_swarm, mut client_proxy) = setup_swarm_and_client_proxy(4, 0); + test_smoke_script(client_proxy); +} + +#[test] +fn test_concurrent_transfers_single_node() { + let (_swarm, mut client_proxy) = setup_swarm_and_client_proxy(1, 0); + client_proxy.create_next_account(false).unwrap(); + client_proxy + .mint_coins(&["mintb", "0", "100"], true) + .unwrap(); + client_proxy.create_next_account(false).unwrap(); + for _ in 0..20 { + client_proxy + .transfer_coins(&["t", "0", "1", "1"], false) + .unwrap(); + } + client_proxy + .transfer_coins(&["tb", "0", "1", "1"], true) + .unwrap(); + assert_eq!( + Decimal::from_f64(79.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "0"]).unwrap()).ok() + ); + assert_eq!( + Decimal::from_f64(21.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "1"]).unwrap()).ok() + ); +} + +#[test] +fn test_basic_fault_tolerance() { + // A configuration with 4 validators should tolerate single node failure. + let (mut env, mut client_proxy) = setup_swarm_and_client_proxy(4, 1); + // kill the first validator + env.validator_swarm.kill_node(0); + // run the script for the smoke test by submitting requests to the second validator + test_smoke_script(client_proxy); +} + +#[test] +fn test_basic_restartability() { + let (mut env, mut client_proxy) = setup_swarm_and_client_proxy(4, 0); + client_proxy.create_next_account(false).unwrap(); + client_proxy.create_next_account(false).unwrap(); + client_proxy.mint_coins(&["mb", "0", "100"], true).unwrap(); + client_proxy + .transfer_coins(&["tb", "0", "1", "10"], true) + .unwrap(); + assert_eq!( + Decimal::from_f64(90.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "0"]).unwrap()).ok() + ); + assert_eq!( + Decimal::from_f64(10.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "1"]).unwrap()).ok() + ); + let peer_to_restart = 0; + // restart node + env.validator_swarm.kill_node(peer_to_restart); + assert!(env + .validator_swarm + .add_node(peer_to_restart, RoleType::Validator, false) + .is_ok()); + assert_eq!( + Decimal::from_f64(90.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "0"]).unwrap()).ok() + ); + assert_eq!( + Decimal::from_f64(10.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "1"]).unwrap()).ok() + ); + client_proxy + .transfer_coins(&["tb", "0", "1", "10"], true) + .unwrap(); + assert_eq!( + Decimal::from_f64(80.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "0"]).unwrap()).ok() + ); + assert_eq!( + Decimal::from_f64(20.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "1"]).unwrap()).ok() + ); +} + +#[test] +fn test_startup_sync_state() { + let (mut env, mut client_proxy) = setup_swarm_and_client_proxy(4, 0); + client_proxy.create_next_account(false).unwrap(); + client_proxy.create_next_account(false).unwrap(); + client_proxy.mint_coins(&["mb", "0", "100"], true).unwrap(); + client_proxy + .transfer_coins(&["tb", "0", "1", "10"], true) + .unwrap(); + assert_eq!( + Decimal::from_f64(90.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "0"]).unwrap()).ok() + ); + assert_eq!( + Decimal::from_f64(10.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "1"]).unwrap()).ok() + ); + let peer_to_stop = 0; + env.validator_swarm.kill_node(peer_to_stop); + let node_config = NodeConfig::load( + env.validator_swarm + .config + .configs + .get(peer_to_stop) + .unwrap(), + ) + .unwrap(); + // TODO Remove hardcoded path to state db + let state_db_path = node_config.get_storage_dir().join("libradb"); + // Verify that state_db_path exists and + // we are not deleting a non-existent directory + assert!(state_db_path.as_path().exists()); + // Delete the state db to simulate state db lagging + // behind consensus db and forcing a state sync + // during a node startup + fs::remove_dir_all(state_db_path).unwrap(); + assert!(env + .validator_swarm + .add_node(peer_to_stop, RoleType::Validator, false) + .is_ok()); + let max_tries = 60; + for retry in 0..max_tries { + if retry == max_tries - 1 { + panic!("Sync failed to complete"); + } + let expected_balance = Decimal::from_f64(90.0); + let actual_balance = + Decimal::from_str(&client_proxy.get_balance(&["b", "0"]).unwrap()).ok(); + if actual_balance == expected_balance { + break; + } + println!("Sync not complete. Retrying..."); + thread::sleep(time::Duration::from_secs(1)); + } + assert_eq!( + Decimal::from_f64(90.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "0"]).unwrap()).ok() + ); + assert_eq!( + Decimal::from_f64(10.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "1"]).unwrap()).ok() + ); + client_proxy + .transfer_coins(&["tb", "0", "1", "10"], true) + .unwrap(); + assert_eq!( + Decimal::from_f64(80.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "0"]).unwrap()).ok() + ); + assert_eq!( + Decimal::from_f64(20.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "1"]).unwrap()).ok() + ); +} + +#[test] +fn test_basic_state_synchronization() { + // + // - Start a swarm of 5 nodes (3 nodes forming a QC). + // - Kill one node and continue submitting transactions to the others. + // - Restart the node + // - Wait for all the nodes to catch up + // - Verify that the restarted node has synced up with the submitted transactions. + let (mut env, mut client_proxy) = setup_swarm_and_client_proxy(5, 1); + client_proxy.create_next_account(false).unwrap(); + client_proxy.create_next_account(false).unwrap(); + client_proxy.mint_coins(&["mb", "0", "100"], true).unwrap(); + client_proxy + .transfer_coins(&["tb", "0", "1", "10"], true) + .unwrap(); + assert_eq!( + Decimal::from_f64(90.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "0"]).unwrap()).ok() + ); + assert_eq!( + Decimal::from_f64(10.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "1"]).unwrap()).ok() + ); + let node_to_restart = 0; + env.validator_swarm.kill_node(node_to_restart); + // All these are executed while one node is down + assert_eq!( + Decimal::from_f64(90.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "0"]).unwrap()).ok() + ); + assert_eq!( + Decimal::from_f64(10.0), + Decimal::from_str(&client_proxy.get_balance(&["b", "1"]).unwrap()).ok() + ); + for _ in 0..5 { + client_proxy + .transfer_coins(&["tb", "0", "1", "1"], true) + .unwrap(); + } + + // Reconnect and synchronize the state + assert!(env + .validator_swarm + .add_node(node_to_restart, RoleType::Validator, false) + .is_ok()); + + // Wait for all the nodes to catch up + assert!(env.validator_swarm.wait_for_all_nodes_to_catchup()); + + // Connect to the newly recovered node and verify its state + let mut client_proxy2 = env.get_validator_ac_client(node_to_restart); + client_proxy2.set_accounts(client_proxy.copy_all_accounts()); + assert_eq!( + Decimal::from_f64(85.0), + Decimal::from_str(&client_proxy2.get_balance(&["b", "0"]).unwrap()).ok() + ); + assert_eq!( + Decimal::from_f64(15.0), + Decimal::from_str(&client_proxy2.get_balance(&["b", "1"]).unwrap()).ok() + ); +} + +#[test] +fn test_external_transaction_signer() { + let (_swarm, mut client_proxy) = setup_swarm_and_client_proxy(1, 0); + + // generate key pair + let mut seed: [u8; 32] = [0u8; 32]; + seed[..4].copy_from_slice(&[1, 2, 3, 4]); + let key_pair = compat::generate_keypair(None); + let private_key = key_pair.0; + let public_key = key_pair.1; + + // create transfer parameters + let sender_address = AccountAddress::from_public_key(&public_key); + let receiver_address = client_proxy + .get_account_address_from_parameter( + "1bfb3b36384dabd29e38b4a0eafd9797b75141bb007cea7943f8a4714d3d784a", + ) + .unwrap(); + let amount = ClientProxy::convert_to_micro_libras("1").unwrap(); + let gas_unit_price = 123; + let max_gas_amount = 1000; + + // mint to the sender address + client_proxy + .mint_coins(&["mintb", &format!("{}", sender_address), "10"], true) + .unwrap(); + + // prepare transfer transaction + let sequence_number = client_proxy + .get_sequence_number(&["sequence", &format!("{}", sender_address)]) + .unwrap(); + + let unsigned_txn = client_proxy + .prepare_transfer_coins( + sender_address, + sequence_number, + receiver_address, + amount, + Some(gas_unit_price), + Some(max_gas_amount), + ) + .unwrap(); + + assert_eq!(unsigned_txn.sender(), sender_address); + + // sign the transaction with the private key + let signature = private_key.sign_message(&unsigned_txn.hash()); + + // submit the transaction + let submit_txn_result = + client_proxy.submit_signed_transaction(unsigned_txn, public_key, signature); + + assert!(submit_txn_result.is_ok()); + + // query the transaction and check it contains the same values as requested + let txn = client_proxy + .get_committed_txn_by_acc_seq(&[ + "txn_acc_seq", + &format!("{}", sender_address), + &sequence_number.to_string(), + "false", + ]) + .unwrap() + .unwrap() + .0; + let submitted_signed_txn = txn + .as_signed_user_txn() + .expect("Query should get user transaction."); + + assert_eq!(submitted_signed_txn.sender(), sender_address); + assert_eq!(submitted_signed_txn.sequence_number(), sequence_number); + assert_eq!(submitted_signed_txn.gas_unit_price(), gas_unit_price); + assert_eq!(submitted_signed_txn.max_gas_amount(), max_gas_amount); + match submitted_signed_txn.payload() { + TransactionPayload::Script(program) => match program.args().len() { + 2 => match (&program.args()[0], &program.args()[1]) { + ( + TransactionArgument::Address(arg_receiver), + TransactionArgument::U64(arg_amount), + ) => { + assert_eq!(arg_receiver.clone(), receiver_address); + assert_eq!(arg_amount.clone(), amount); + } + _ => panic!( + "The first argument for payment transaction must be recipient address \ + and the second argument must be amount." + ), + }, + _ => panic!("Signed transaction payload arguments must have two arguments."), + }, + _ => panic!("Signed transaction payload expected to be of struct Script"), + } +} + +#[test] +fn test_full_node_basic_flow() { + // launch environment of 4 validator nodes and 2 full nodes + let mut env = TestEnvironment::new(4); + env.setup_full_node_swarm(2); + env.launch_swarm(RoleType::Validator); + env.launch_swarm(RoleType::FullNode); + + // execute smoke script + test_smoke_script(env.get_validator_ac_client(0)); + + // read state from full node client + let mut validator_ac_client = env.get_validator_ac_client(1); + let mut full_node_client = env.get_full_node_ac_client(1); + let mut full_node_client_2 = env.get_full_node_ac_client(0); + for idx in 0..3 { + validator_ac_client.create_next_account(false).unwrap(); + full_node_client.create_next_account(false).unwrap(); + full_node_client_2.create_next_account(false).unwrap(); + assert_eq!( + validator_ac_client + .get_balance(&["b", &idx.to_string()]) + .unwrap(), + full_node_client + .get_balance(&["b", &idx.to_string()]) + .unwrap(), + ); + } + + let sender_account = &format!( + "{}", + validator_ac_client.faucet_account.clone().unwrap().address + ); + // mint from full node and check both validator and full node have correct balance + let account3 = validator_ac_client + .create_next_account(false) + .unwrap() + .address; + full_node_client.create_next_account(false).unwrap(); + full_node_client_2.create_next_account(false).unwrap(); + + let mint_result = full_node_client.mint_coins(&["mintb", "3", "10"], true); + assert!(mint_result.is_ok()); + assert_eq!( + Decimal::from_f64(10.0), + Decimal::from_str(&full_node_client.get_balance(&["b", "3"]).unwrap()).ok() + ); + let sequence = full_node_client + .get_sequence_number(&["sequence", sender_account, "true"]) + .unwrap(); + validator_ac_client.wait_for_transaction( + validator_ac_client.faucet_account.clone().unwrap().address, + sequence, + ); + assert_eq!( + Decimal::from_f64(10.0), + Decimal::from_str(&validator_ac_client.get_balance(&["b", "3"]).unwrap()).ok() + ); + + // reset sequence number for sender account + validator_ac_client + .get_sequence_number(&["sequence", sender_account, "true"]) + .unwrap(); + full_node_client + .get_sequence_number(&["sequence", sender_account, "true"]) + .unwrap(); + + // mint from validator and check both nodes have correct balance + validator_ac_client.create_next_account(false).unwrap(); + full_node_client.create_next_account(false).unwrap(); + full_node_client_2.create_next_account(false).unwrap(); + + validator_ac_client + .mint_coins(&["mintb", "4", "10"], true) + .unwrap(); + let sequence = validator_ac_client + .get_sequence_number(&["sequence", sender_account, "true"]) + .unwrap(); + full_node_client.wait_for_transaction( + validator_ac_client.faucet_account.clone().unwrap().address, + sequence, + ); + + assert_eq!( + Decimal::from_f64(10.0), + Decimal::from_str(&validator_ac_client.get_balance(&["b", "4"]).unwrap()).ok() + ); + assert_eq!( + Decimal::from_f64(10.0), + Decimal::from_str(&full_node_client.get_balance(&["b", "4"]).unwrap()).ok() + ); + + // minting again on validator doesn't cause error since client sequence has been updated + validator_ac_client + .mint_coins(&["mintb", "4", "10"], true) + .unwrap(); + + // test transferring balance from 0 to 1 through full node proxy + full_node_client + .transfer_coins(&["tb", "3", "4", "10"], true) + .unwrap(); + + assert_eq!( + Decimal::from_f64(0.0), + Decimal::from_str(&full_node_client.get_balance(&["b", "3"]).unwrap()).ok() + ); + assert_eq!( + Decimal::from_f64(30.0), + Decimal::from_str(&validator_ac_client.get_balance(&["b", "4"]).unwrap()).ok() + ); + + let sequence = validator_ac_client + .get_sequence_number(&["sequence", &format!("{}", account3), "true"]) + .unwrap(); + full_node_client_2.wait_for_transaction(account3, sequence); + assert_eq!( + Decimal::from_f64(0.0), + Decimal::from_str(&full_node_client_2.get_balance(&["b", "3"]).unwrap()).ok() + ); + assert_eq!( + Decimal::from_f64(30.0), + Decimal::from_str(&full_node_client_2.get_balance(&["b", "4"]).unwrap()).ok() + ); +}