From b776e8eeb562166cc21e8aecf0f60327b5e851d8 Mon Sep 17 00:00:00 2001 From: Hajime Yamaguchi Date: Tue, 21 Apr 2020 03:22:22 +0900 Subject: [PATCH 1/5] Replace rust-bitcoin library to rust-tapyrus --- Cargo.lock | 87 ++++++++++++++----- Cargo.toml | 4 +- src/bin/tapyrus-signerd.rs | 6 +- src/blockdata.rs | 8 +- src/cli/setup/aggregate.rs | 10 +-- src/cli/setup/compute_sig.rs | 2 +- src/cli/setup/create_block_vss.rs | 4 +- src/cli/setup/create_key.rs | 4 +- src/cli/setup/create_node_vss.rs | 4 +- src/cli/setup/mod.rs | 6 +- src/cli/setup/sign.rs | 4 +- src/command_args.rs | 2 +- src/crypto/vss.rs | 4 +- src/errors.rs | 6 +- src/federation.rs | 4 +- src/key.rs | 14 +-- src/lib.rs | 2 +- src/net.rs | 2 +- src/rpc.rs | 4 +- src/sign.rs | 6 +- .../message_processor/process_blocksig.rs | 2 +- .../process_candidateblock.rs | 2 +- src/signer_node/mod.rs | 4 +- src/signer_node/node_parameters.rs | 4 +- src/signer_node/utils.rs | 2 +- src/tests/helper/keys.rs | 4 +- src/tests/helper/mod.rs | 6 +- src/tests/helper/node_parameters_builder.rs | 2 +- src/tests/helper/rpc.rs | 2 +- 29 files changed, 124 insertions(+), 87 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b1d62a6fd..061d987ee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -50,6 +50,11 @@ name = "autocfg" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "az" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "base64" version = "0.9.3" @@ -67,24 +72,6 @@ dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "bech32" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "bitcoin" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bech32 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bitcoin_hashes 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "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)", - "secp256k1 0.15.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "bitcoin_hashes" version = "0.3.2" @@ -95,10 +82,9 @@ dependencies = [ [[package]] name = "bitcoin_hashes" -version = "0.7.1" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "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)", ] @@ -372,6 +358,15 @@ dependencies = [ "typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "gmp-mpfr-sys" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "hermit-abi" version = "0.1.3" @@ -821,6 +816,16 @@ name = "regex-syntax" version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "rug" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "az 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "gmp-mpfr-sys 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rust-crypto" version = "0.2.36" @@ -883,6 +888,24 @@ dependencies = [ "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "secp256k1" +version = "0.17.2" +source = "git+https://github.com/rantan/rust-secp256k1?branch=add_negate_support#414c835d150e46f2fc69c02dac362239e1237bb7" +dependencies = [ + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "secp256k1-sys 0.1.2 (git+https://github.com/rantan/rust-secp256k1?branch=add_negate_support)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "secp256k1-sys" +version = "0.1.2" +source = "git+https://github.com/rantan/rust-secp256k1?branch=add_negate_support#414c835d150e46f2fc69c02dac362239e1237bb7" +dependencies = [ + "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "semver" version = "0.9.0" @@ -1003,12 +1026,23 @@ dependencies = [ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "tapyrus" +version = "0.2.0" +source = "git+https://github.com/chaintope/rust-tapyrus?tag=v0.2.0#14bc8bbcccd68e99855f063c039aa70ca075e6f3" +dependencies = [ + "bitcoin_hashes 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", + "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rug 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "secp256k1 0.17.2 (git+https://github.com/rantan/rust-secp256k1?branch=add_negate_support)", + "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "tapyrus_signer" version = "0.4.0" dependencies = [ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bitcoin 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", "bitcoin_hashes 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1029,6 +1063,7 @@ dependencies = [ "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "signal-hook 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "tapyrus 0.2.0 (git+https://github.com/chaintope/rust-tapyrus?tag=v0.2.0)", "toml 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1294,12 +1329,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum ascii 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" "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 az 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "41a6b78289a33e09b00818ca8c90ab17c5dabb6e74f4b29a6de679c0e0886ade" "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.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9e0089c35ab7c6f2bc55ab23f769913f0ac65b1023e7e74638a1f43128dd5df2" -"checksum bitcoin 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)" = "01337c65290ce0c948738d821aa9f87488ca6c2b0f02d672ef778f9ae54f22c8" "checksum bitcoin_hashes 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2b7a2e9773ee7ae7f2560f0426c938f57902dcb9e39321b0cbd608f47ed579a4" -"checksum bitcoin_hashes 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "db6b697833d852acea530c9e815e6adc724267856b6506bc500362a068a39c7b" +"checksum bitcoin_hashes 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b375d62f341cef9cd9e77793ec8f1db3fc9ce2e4d57e982c8fe697a2c16af3b6" "checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" "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" @@ -1333,6 +1367,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)" = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef" "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 gmp-mpfr-sys 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "63d7f805cf9df081683d463f62864bda8b8e3ce7162a8e11cd0c49f27b8ce89b" "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 http 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)" = "d7e06e336150b178206af098a055e3621e8336027e2b4d126bda0bc64824baaf" @@ -1386,6 +1421,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" "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 rug 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "72315b6d9cb7d886fb99724330c47ceb29e923df657c31da3849fe88c0ded710" "checksum rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)" = "f76d05d3993fd5f4af9434e8e436db163a12a9d40e1a58a726f27a01dfd12a2a" "checksum rust-gmp 0.5.0 (git+https://github.com/KZen-networks/rust-gmp)" = "" "checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" @@ -1394,6 +1430,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" "checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" "checksum secp256k1 0.15.5 (registry+https://github.com/rust-lang/crates.io-index)" = "4d311229f403d64002e9eed9964dfa5a0a0c1ac443344f7546bf48e916c6053a" +"checksum secp256k1 0.17.2 (git+https://github.com/rantan/rust-secp256k1?branch=add_negate_support)" = "" +"checksum secp256k1-sys 0.1.2 (git+https://github.com/rantan/rust-secp256k1?branch=add_negate_support)" = "" "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" @@ -1409,6 +1447,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" "checksum strsim 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" "checksum syn 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "661641ea2aa15845cddeb97dad000d22070bb5c1fb456b96c1cba883ec691e92" +"checksum tapyrus 0.2.0 (git+https://github.com/chaintope/rust-tapyrus?tag=v0.2.0)" = "" "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_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" diff --git a/Cargo.toml b/Cargo.toml index c2813d777..4f0b8147d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] http = "0.1.17" -bitcoin = { version = "0.20.0", features = ["serde"] } +tapyrus = { git = "https://github.com/chaintope/rust-tapyrus", tag = "v0.2.0", features = ["use-serde", "rand"] } secp256k1 = "0.15.3" log = "0.4.6" env_logger = "0.6.1" @@ -22,7 +22,7 @@ base64 = "0.10.1" redis = "0.10.0" clap = "2.33.0" toml = "0.5" -curv = { git = "https://github.com/KZen-networks/curv" , tag = "v0.2.0", features = ["ec_secp256k1"]} +curv = { git = "https://github.com/KZen-networks/curv", tag = "v0.2.0", features = ["ec_secp256k1"]} sha2 = "0.8.1" signal-hook = "0.1.12" libc = "0.2.66" diff --git a/src/bin/tapyrus-signerd.rs b/src/bin/tapyrus-signerd.rs index 38bec32a7..62ea39b76 100644 --- a/src/bin/tapyrus-signerd.rs +++ b/src/bin/tapyrus-signerd.rs @@ -2,7 +2,7 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -extern crate bitcoin; +extern crate tapyrus; extern crate clap; extern crate daemonize; extern crate env_logger; @@ -10,7 +10,7 @@ extern crate log; extern crate redis; extern crate tapyrus_signer; -use bitcoin::PublicKey; +use tapyrus::PublicKey; use daemonize::Daemonize; use std::fs::OpenOptions; @@ -164,7 +164,7 @@ fn load_federations(pubkey: &PublicKey, path: &Path) -> Federations { #[cfg(test)] mod tests { use crate::{connect_rpc, connect_signer_network, load_federations}; - use bitcoin::PublicKey; + use tapyrus::PublicKey; use std::path::Path; use std::str::FromStr; use tapyrus_signer::command_args::{RedisConfig, RpcConfig}; diff --git a/src/blockdata.rs b/src/blockdata.rs index de0f07ab4..6ead8639e 100644 --- a/src/blockdata.rs +++ b/src/blockdata.rs @@ -4,10 +4,10 @@ use crate::errors::Error; use crate::serialize::HexStrVisitor; -use bitcoin::consensus::encode::serialize; -use bitcoin::consensus::encode::Decodable; -use bitcoin::PublicKey; -use bitcoin::VarInt; +use tapyrus::consensus::encode::serialize; +use tapyrus::consensus::encode::Decodable; +use tapyrus::PublicKey; +use tapyrus::VarInt; use bitcoin_hashes::{sha256d, Hash}; use serde::{Deserialize, Deserializer, Serialize, Serializer}; use std::fmt::Debug; diff --git a/src/cli/setup/aggregate.rs b/src/cli/setup/aggregate.rs index 6cafa3c69..498bdb7b5 100644 --- a/src/cli/setup/aggregate.rs +++ b/src/cli/setup/aggregate.rs @@ -6,7 +6,7 @@ use crate::errors::Error; use crate::rpc::Rpc; use crate::sign::Sign; use crate::signer_node::NodeParameters; -use bitcoin::{PrivateKey, PublicKey}; +use tapyrus::{PrivateKey, PublicKey}; use clap::{App, Arg, ArgMatches, SubCommand}; use curv::arithmetic::traits::Converter; use curv::cryptographic_primitives::secret_sharing::feldman_vss::ShamirSecretSharing; @@ -70,10 +70,8 @@ impl<'a> AggregateCommand { let index = index_of(&private_key, &public_keys); let shared_keys = Sign::verify_vss_and_construct_key(&vss_map, &index)?; - let public_key = PublicKey { - compressed: true, - key: shared_keys.y.get_element(), - }; + let slice = shared_keys.y.pk_to_key_slice(); + let public_key = PublicKey::from_slice(&slice).map_err(|_| Error::InvalidKey)?; Ok(Box::new(AggregateResponse::new( public_key, @@ -102,7 +100,7 @@ impl<'a> AggregateCommand { mod tests { use super::*; - use bitcoin::PublicKey; + use tapyrus::PublicKey; use curv::elliptic::curves::traits::ECScalar; use curv::BigInt; use std::str::FromStr; diff --git a/src/cli/setup/compute_sig.rs b/src/cli/setup/compute_sig.rs index d323173fc..ffe6562a1 100644 --- a/src/cli/setup/compute_sig.rs +++ b/src/cli/setup/compute_sig.rs @@ -12,7 +12,7 @@ use crate::rpc::Rpc; use crate::sign::Sign; use crate::signer_node::NodeParameters; -use bitcoin::{PrivateKey, PublicKey}; +use tapyrus::{PrivateKey, PublicKey}; use clap::{App, Arg, ArgMatches, SubCommand}; use curv::cryptographic_primitives::secret_sharing::feldman_vss::ShamirSecretSharing; use curv::elliptic::curves::traits::{ECPoint, ECScalar}; diff --git a/src/cli/setup/create_block_vss.rs b/src/cli/setup/create_block_vss.rs index e564713bd..9dd8b1d34 100644 --- a/src/cli/setup/create_block_vss.rs +++ b/src/cli/setup/create_block_vss.rs @@ -5,7 +5,7 @@ use crate::errors::Error; use crate::rpc::Rpc; use crate::signer_node::NodeParameters; -use bitcoin::{PrivateKey, PublicKey}; +use tapyrus::{PrivateKey, PublicKey}; use clap::{App, Arg, ArgMatches, SubCommand}; use std::collections::BTreeMap; use std::fmt; @@ -67,7 +67,7 @@ impl<'a> CreateBlockVssCommand { secret_shares_for_negative, ) = Vss::create_block_shares(index, threshold as usize, public_keys.len()); let mut vss_map = BTreeMap::new(); - let secp = secp256k1::Secp256k1::new(); + let secp = tapyrus::secp256k1::Secp256k1::new(); let sender_public_key = PublicKey::from_private_key(&secp, &private_key); for j in 0..public_keys.len() { diff --git a/src/cli/setup/create_key.rs b/src/cli/setup/create_key.rs index 2985095f0..44708bf3e 100644 --- a/src/cli/setup/create_key.rs +++ b/src/cli/setup/create_key.rs @@ -1,7 +1,7 @@ use crate::cli::setup::traits::Response; use crate::errors::Error; use crate::key::generate_key_pair; -use bitcoin::{PrivateKey, PublicKey}; +use tapyrus::{PrivateKey, PublicKey}; use clap::{App, ArgMatches, SubCommand}; use std::fmt; @@ -47,7 +47,7 @@ impl<'a> CreateKeyCommand { #[cfg(test)] mod test { use super::*; - use bitcoin::{PrivateKey, PublicKey}; + use tapyrus::{PrivateKey, PublicKey}; use std::str::FromStr; #[test] diff --git a/src/cli/setup/create_node_vss.rs b/src/cli/setup/create_node_vss.rs index abd94cc26..8bced5256 100644 --- a/src/cli/setup/create_node_vss.rs +++ b/src/cli/setup/create_node_vss.rs @@ -3,7 +3,7 @@ use crate::crypto::vss::{Commitment, Vss}; use crate::errors::Error; use crate::rpc::Rpc; use crate::signer_node::node_parameters::NodeParameters; -use bitcoin::{PrivateKey, PublicKey}; +use tapyrus::{PrivateKey, PublicKey}; use clap::{App, Arg, ArgMatches, SubCommand}; use std::collections::BTreeMap; use std::fmt; @@ -60,7 +60,7 @@ impl<'a> CreateNodeVssCommand { Vss::create_node_shares(&private_key, threshold as usize, public_keys.len()); let mut vss_map = BTreeMap::new(); - let secp = secp256k1::Secp256k1::new(); + let secp = tapyrus::secp256k1::Secp256k1::new(); let sender_public_key = PublicKey::from_private_key(&secp, &private_key); let commitments: Vec = vss_scheme .commitments diff --git a/src/cli/setup/mod.rs b/src/cli/setup/mod.rs index 2c9b59c40..dbc641156 100644 --- a/src/cli/setup/mod.rs +++ b/src/cli/setup/mod.rs @@ -3,7 +3,7 @@ use crate::net::SignerID; use crate::signer_node::BidirectionalSharedSecretMap; use crate::signer_node::SharedSecret; use crate::signer_node::SharedSecretMap; -use bitcoin::{PrivateKey, PublicKey}; +use tapyrus::{PrivateKey, PublicKey}; use curv::cryptographic_primitives::secret_sharing::feldman_vss::{ ShamirSecretSharing, VerifiableSS, }; @@ -17,7 +17,7 @@ pub mod sign; pub mod traits; pub fn index_of(private_key: &PrivateKey, public_keys: &Vec) -> usize { - let secp = secp256k1::Secp256k1::new(); + let secp = tapyrus::secp256k1::Secp256k1::new(); let public_key = PublicKey::from_private_key(&secp, private_key); let pos = public_keys .iter() @@ -94,7 +94,7 @@ pub fn vss_to_bidirectional_shared_secret_map( #[cfg(test)] mod tests { use super::*; - use bitcoin::{PrivateKey, PublicKey}; + use tapyrus::{PrivateKey, PublicKey}; use std::str::FromStr; #[test] diff --git a/src/cli/setup/sign.rs b/src/cli/setup/sign.rs index d66ff1d40..9cdb7ebc5 100644 --- a/src/cli/setup/sign.rs +++ b/src/cli/setup/sign.rs @@ -9,7 +9,7 @@ use crate::errors::Error; use crate::rpc::Rpc; use crate::signer_node::NodeParameters; -use bitcoin::{PrivateKey, PublicKey}; +use tapyrus::{PrivateKey, PublicKey}; use clap::{App, Arg, ArgMatches, SubCommand}; use curv::arithmetic::traits::Converter; use curv::cryptographic_primitives::secret_sharing::feldman_vss::ShamirSecretSharing; @@ -110,7 +110,7 @@ impl<'a> SignCommand { &block, )?; - let secp = secp256k1::Secp256k1::new(); + let secp = tapyrus::secp256k1::Secp256k1::new(); let public_key = PublicKey::from_private_key(&secp, &private_key); Ok(Box::new(SignResponse::new(local_sig, public_key))) } diff --git a/src/command_args.rs b/src/command_args.rs index 064710f69..5df229c34 100644 --- a/src/command_args.rs +++ b/src/command_args.rs @@ -5,7 +5,7 @@ use std::str::FromStr; use crate::signer_node::{ROUND_INTERVAL_DEFAULT_SECS, ROUND_LIMIT_DEFAULT_SECS}; -use bitcoin::{Address, PublicKey}; +use tapyrus::{Address, PublicKey}; use clap::{App, Arg}; use log; use serde::Deserialize; diff --git a/src/crypto/vss.rs b/src/crypto/vss.rs index 0d845e607..58e238b6b 100644 --- a/src/crypto/vss.rs +++ b/src/crypto/vss.rs @@ -13,8 +13,8 @@ use crate::signer_node::SharedSecretMap; use crate::signer_node::ToSharedSecretMap; use crate::signer_node::ToVerifiableSS; use crate::util::jacobi; -use bitcoin::consensus::encode::{self, *}; -use bitcoin::{PrivateKey, PublicKey}; +use tapyrus::consensus::encode::{self, *}; +use tapyrus::{PrivateKey, PublicKey}; use curv::arithmetic::traits::Converter; use curv::cryptographic_primitives::secret_sharing::feldman_vss::VerifiableSS; use curv::elliptic::curves::traits::ECScalar; diff --git a/src/errors.rs b/src/errors.rs index ed40a12ea..058ca9061 100644 --- a/src/errors.rs +++ b/src/errors.rs @@ -10,7 +10,7 @@ pub enum Error { Json(serde_json::error::Error), InvalidLength(usize, usize), InvalidArgs(String), - BitcoinConsensusEncodeError(bitcoin::consensus::encode::Error), + BitcoinConsensusEncodeError(tapyrus::consensus::encode::Error), /// Errors cause sender side matter, like parameter was wrong. InvalidRequest(jsonrpc::error::RpcError), DuplicatedMessage, @@ -73,8 +73,8 @@ impl From for Error { } } -impl From for Error { - fn from(e: bitcoin::consensus::encode::Error) -> Error { +impl From for Error { + fn from(e: tapyrus::consensus::encode::Error) -> Error { Error::BitcoinConsensusEncodeError(e) } } diff --git a/src/federation.rs b/src/federation.rs index 36de196e8..3af541872 100644 --- a/src/federation.rs +++ b/src/federation.rs @@ -4,7 +4,7 @@ use crate::errors::Error; use crate::net::SignerID; use crate::sign::Sign; use crate::signer_node::{SharedSecret, SharedSecretMap}; -use bitcoin::PublicKey; +use tapyrus::PublicKey; use curv::cryptographic_primitives::secret_sharing::feldman_vss::{ ShamirSecretSharing, VerifiableSS, }; @@ -306,7 +306,7 @@ mod tests { use crate::net::SignerID; use crate::tests::helper::keys::TEST_KEYS; use crate::tests::helper::node_vss::node_vss; - use bitcoin::PublicKey; + use tapyrus::PublicKey; use curv::arithmetic::traits::Converter; use curv::elliptic::curves::traits::ECScalar; use curv::BigInt; diff --git a/src/key.rs b/src/key.rs index c58540204..7bbaeb939 100644 --- a/src/key.rs +++ b/src/key.rs @@ -1,14 +1,14 @@ -use bitcoin::network::constants::Network; -use bitcoin::{PrivateKey, PublicKey}; +use tapyrus::network::constants::Network; +use tapyrus::{PrivateKey, PublicKey}; use secp256k1::rand::thread_rng; -use secp256k1::Secp256k1; +use tapyrus::secp256k1::Secp256k1; pub fn generate_key_pair() -> (PrivateKey, PublicKey) { let s = Secp256k1::new(); let mut rng = thread_rng(); - let private_key = bitcoin::PrivateKey { + let private_key = tapyrus::PrivateKey { compressed: true, - network: Network::Bitcoin, + network: Network::Prod, key: s.generate_keypair(&mut rng).0, }; let public_key = PublicKey::from_private_key(&s, &private_key); @@ -18,13 +18,13 @@ pub fn generate_key_pair() -> (PrivateKey, PublicKey) { #[cfg(test)] mod tests { use super::*; - use bitcoin::network::constants::Network; + use tapyrus::network::constants::Network; #[test] fn test_generate_key_pair() { let (private_key, public_key) = generate_key_pair(); let s = Secp256k1::new(); - assert_eq!(private_key.network, Network::Bitcoin); + assert_eq!(private_key.network, Network::Prod); assert_eq!(private_key.public_key(&s), public_key); } } diff --git a/src/lib.rs b/src/lib.rs index aa67b4466..53efedf72 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,7 +2,7 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -extern crate bitcoin; +extern crate tapyrus; extern crate secp256k1; #[macro_use] extern crate log; diff --git a/src/net.rs b/src/net.rs index 1f0fa800d..e4b07243b 100644 --- a/src/net.rs +++ b/src/net.rs @@ -6,7 +6,7 @@ use crate::blockdata::hash::SHA256Hash; use crate::blockdata::Block; use crate::errors; use crate::serialize::{ByteBufVisitor, HexStrVisitor}; -use bitcoin::PublicKey; +use tapyrus::PublicKey; use redis::{Client, Commands, ControlFlow, PubSubCommands, RedisError}; use serde::{Deserialize, Deserializer, Serialize, Serializer}; use std::cmp::Ordering; diff --git a/src/rpc.rs b/src/rpc.rs index bff60785e..7b56cd556 100644 --- a/src/rpc.rs +++ b/src/rpc.rs @@ -2,7 +2,7 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -use bitcoin::Address; +use tapyrus::Address; use log::Level::Trace; use log::{log_enabled, trace}; use serde::Deserialize; @@ -117,7 +117,7 @@ impl TapyrusApi for Rpc { pub mod tests { use super::*; use crate::tests::helper::keys::TEST_KEYS; - use secp256k1::Secp256k1; + use tapyrus::secp256k1::Secp256k1; pub fn get_rpc_client() -> Rpc { Rpc::new( diff --git a/src/sign.rs b/src/sign.rs index 207bcd8f3..8dc927cd1 100644 --- a/src/sign.rs +++ b/src/sign.rs @@ -19,7 +19,7 @@ use secp256k1::rand::thread_rng; pub struct Sign; impl Sign { - pub fn private_key_to_big_int(key: secp256k1::SecretKey) -> Option { + pub fn private_key_to_big_int(key: tapyrus::secp256k1::SecretKey) -> Option { let value = format!("{}", key); let n = BigInt::from_hex(&value); Some(n) @@ -29,7 +29,7 @@ impl Sign { let u: FE = match pk { Some(i) => ECScalar::from(&i), None => { - let seckey = secp256k1::SecretKey::new(&mut thread_rng()); + let seckey = tapyrus::secp256k1::SecretKey::new(&mut thread_rng()); let bn = BigInt::from(&seckey[..]); ECScalar::from(&bn) } @@ -104,7 +104,7 @@ impl Sign { fn test_private_key_to_big_int() { use std::str::FromStr; - let key = secp256k1::SecretKey::from_str( + let key = tapyrus::secp256k1::SecretKey::from_str( "657440783dd10977c49f87c51dc68b63508e88c7ea9371dc19e6fcd0f5f8639e", ) .unwrap(); diff --git a/src/signer_node/message_processor/process_blocksig.rs b/src/signer_node/message_processor/process_blocksig.rs index 7fb0ddeec..d3b9bbe56 100644 --- a/src/signer_node/message_processor/process_blocksig.rs +++ b/src/signer_node/message_processor/process_blocksig.rs @@ -10,7 +10,7 @@ use crate::signer_node::message_processor::get_valid_block; use crate::signer_node::node_state::builder::{Builder, Master}; use crate::signer_node::NodeParameters; use crate::signer_node::NodeState; -use bitcoin::PublicKey; +use tapyrus::PublicKey; use curv::FE; use derive_builder::Builder; use serde::{Deserialize, Serialize}; diff --git a/src/signer_node/message_processor/process_candidateblock.rs b/src/signer_node/message_processor/process_candidateblock.rs index 8d922bda3..a527f03bd 100644 --- a/src/signer_node/message_processor/process_candidateblock.rs +++ b/src/signer_node/message_processor/process_candidateblock.rs @@ -127,7 +127,7 @@ mod tests { use crate::tests::helper::node_state_builder::BuilderForTest; use crate::tests::helper::node_vss::node_vss; use crate::tests::helper::rpc::MockRpc; - use bitcoin::PublicKey; + use tapyrus::PublicKey; use std::str::FromStr; fn sender_id() -> SignerID { diff --git a/src/signer_node/mod.rs b/src/signer_node/mod.rs index bcb73baf1..e1f6d9026 100644 --- a/src/signer_node/mod.rs +++ b/src/signer_node/mod.rs @@ -541,7 +541,7 @@ mod tests { use crate::tests::helper::keys::TEST_KEYS; use crate::tests::helper::node_vss::node_vss; use crate::tests::helper::{address, enable_log}; - use bitcoin::PublicKey; + use tapyrus::PublicKey; use redis::ControlFlow; use std::collections::HashSet; use std::str::FromStr; @@ -784,7 +784,7 @@ mod tests { use crate::rpc::{GetBlockchainInfoResult, TapyrusApi}; use crate::signer_node::tests::create_node; use crate::signer_node::{BidirectionalSharedSecretMap, NodeState}; - use bitcoin::Address; + use tapyrus::Address; use std::cell::Cell; use std::collections::HashSet; diff --git a/src/signer_node/node_parameters.rs b/src/signer_node/node_parameters.rs index 363570e53..bb2caa946 100644 --- a/src/signer_node/node_parameters.rs +++ b/src/signer_node/node_parameters.rs @@ -2,7 +2,7 @@ use crate::crypto::multi_party_schnorr::Parameters; use crate::federation::{Federation, Federations}; use crate::net::SignerID; use crate::rpc::TapyrusApi; -use bitcoin::{Address, PublicKey}; +use tapyrus::{Address, PublicKey}; use std::convert::TryInto; use std::sync::Arc; @@ -97,7 +97,7 @@ mod tests { use crate::signer_node::NodeParameters; use crate::tests::helper::keys::TEST_KEYS; use crate::tests::helper::rpc::MockRpc; - use bitcoin::PublicKey; + use tapyrus::PublicKey; #[test] fn test_sort_publickey() { diff --git a/src/signer_node/utils.rs b/src/signer_node/utils.rs index 3226fb64f..ba8ded9f6 100644 --- a/src/signer_node/utils.rs +++ b/src/signer_node/utils.rs @@ -1,5 +1,5 @@ use crate::net::SignerID; -use bitcoin::PublicKey; +use tapyrus::PublicKey; pub fn sender_index(sender_id: &SignerID, pubkey_list: &[PublicKey]) -> usize { //Unknown sender is already ignored. diff --git a/src/tests/helper/keys.rs b/src/tests/helper/keys.rs index cd11ba376..8e242b014 100644 --- a/src/tests/helper/keys.rs +++ b/src/tests/helper/keys.rs @@ -1,5 +1,5 @@ use crate::net::SignerID; -use bitcoin::{PrivateKey, PublicKey}; +use tapyrus::{PrivateKey, PublicKey}; use std::str::FromStr; pub struct TestKeys { @@ -26,7 +26,7 @@ impl TestKeys { /// Returns public keys sorted by compressed public key order. pub fn pubkeys(&self) -> Vec { - let secp = secp256k1::Secp256k1::new(); + let secp = tapyrus::secp256k1::Secp256k1::new(); self.key .iter() .map(|k| PublicKey::from_private_key(&secp, k)) diff --git a/src/tests/helper/mod.rs b/src/tests/helper/mod.rs index 01b8f168c..afa17a8c4 100644 --- a/src/tests/helper/mod.rs +++ b/src/tests/helper/mod.rs @@ -1,7 +1,7 @@ use crate::net::{Message, MessageType, SignerID}; use crate::tests::helper::blocks::get_block; use crate::tests::helper::keys::TEST_KEYS; -use bitcoin::{Address, PrivateKey}; +use tapyrus::{Address, PrivateKey}; pub mod blocks; pub mod keys; @@ -32,7 +32,7 @@ pub fn create_message() -> Message { } pub fn address(private_key: &PrivateKey) -> Address { - let secp = secp256k1::Secp256k1::new(); + let secp = tapyrus::secp256k1::Secp256k1::new(); let self_pubkey = private_key.public_key(&secp); Address::p2pkh(&self_pubkey, private_key.network) } @@ -48,7 +48,7 @@ pub mod test_vectors { use crate::tests::helper::node_parameters_builder::NodeParametersBuilder; use crate::tests::helper::rpc::MockRpc; - use bitcoin::{PrivateKey, PublicKey}; + use tapyrus::{PrivateKey, PublicKey}; use curv::{FE, GE}; use serde_json::Value; use std::collections::HashSet; diff --git a/src/tests/helper/node_parameters_builder.rs b/src/tests/helper/node_parameters_builder.rs index 2a0fcc5da..8dbc816c1 100644 --- a/src/tests/helper/node_parameters_builder.rs +++ b/src/tests/helper/node_parameters_builder.rs @@ -4,7 +4,7 @@ use crate::tests::helper::address; use crate::tests::helper::keys::TEST_KEYS; use crate::tests::helper::node_vss::node_vss; use crate::tests::helper::rpc::MockRpc; -use bitcoin::{Address, PublicKey}; +use tapyrus::{Address, PublicKey}; pub struct NodeParametersBuilder { rpc: Option, diff --git a/src/tests/helper/rpc.rs b/src/tests/helper/rpc.rs index a4ae0ad92..7c79f51fb 100644 --- a/src/tests/helper/rpc.rs +++ b/src/tests/helper/rpc.rs @@ -1,7 +1,7 @@ use crate::blockdata::Block; use crate::errors::Error; use crate::rpc::{GetBlockchainInfoResult, TapyrusApi}; -use bitcoin::Address; +use tapyrus::Address; use std::cell::RefCell; use std::collections::VecDeque; From 0d5f9e327b8e5e4f67194e0b0fadac527b1996db Mon Sep 17 00:00:00 2001 From: Hajime Yamaguchi Date: Wed, 22 Apr 2020 13:31:42 +0900 Subject: [PATCH 2/5] Replace tapyrus-signer::blockdata::Block to tapyrus::blockdata::block::Block --- src/blockdata.rs | 336 ------------------ src/cli/setup/compute_sig.rs | 26 +- src/cli/setup/sign.rs | 5 +- src/crypto/vss.rs | 10 +- src/lib.rs | 1 - src/net.rs | 10 +- src/rpc.rs | 10 +- src/sign.rs | 13 +- src/signer_node/message_processor/mod.rs | 38 +- .../process_blockparticipants.rs | 17 +- .../message_processor/process_blocksig.rs | 17 +- .../message_processor/process_blockvss.rs | 25 +- .../process_candidateblock.rs | 26 +- .../process_completedblock.rs | 2 +- src/signer_node/mod.rs | 22 +- src/signer_node/node_state.rs | 4 +- src/tests/helper/blocks.rs | 13 +- src/tests/helper/mod.rs | 9 +- src/tests/helper/rpc.rs | 2 +- .../resources/process_blockparticipants.json | 12 +- tests/resources/process_blocksig.json | 303 +++++++++++++++- tests/resources/process_blockvss.json | 10 +- 22 files changed, 435 insertions(+), 476 deletions(-) delete mode 100644 src/blockdata.rs diff --git a/src/blockdata.rs b/src/blockdata.rs deleted file mode 100644 index 6ead8639e..000000000 --- a/src/blockdata.rs +++ /dev/null @@ -1,336 +0,0 @@ -// Copyright (c) 2019 Chaintope Inc. -// Distributed under the MIT software license, see the accompanying -// file COPYING or http://www.opensource.org/licenses/mit-license.php. - -use crate::errors::Error; -use crate::serialize::HexStrVisitor; -use tapyrus::consensus::encode::serialize; -use tapyrus::consensus::encode::Decodable; -use tapyrus::PublicKey; -use tapyrus::VarInt; -use bitcoin_hashes::{sha256d, Hash}; -use serde::{Deserialize, Deserializer, Serialize, Serializer}; -use std::fmt::Debug; - -pub mod hash { - use crate::errors::Error; - use crate::serialize::HexStrVisitor; - use serde::{Deserialize, Deserializer, Serialize, Serializer}; - use std::fmt::Debug; - - /// This is hash value container struct. - /// This struct assumes porting value from sha256d::Hash. - #[derive(PartialEq, Clone, Copy)] - pub struct SHA256Hash([u8; 32]); - - impl SHA256Hash { - const LEN: usize = 32; - - pub fn from_slice(sl: &[u8]) -> Result { - if sl.len() != Self::LEN { - Err(Error::InvalidLength(Self::LEN, sl.len())) - } else { - let mut ret = [0; 32]; - ret.copy_from_slice(sl); - Ok(SHA256Hash(ret)) - } - } - - pub fn into_inner(self) -> [u8; 32] { - self.0 - } - pub fn borrow_inner(&self) -> &[u8; 32] { - &self.0 - } - } - - impl Debug for SHA256Hash { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - // Change byteorder to Big Endian - let mut rev = self.0.clone(); - rev.reverse(); - - let h = hex::encode(rev); - write!(f, "Hash({})", h) - } - } - - impl Serialize for SHA256Hash { - fn serialize( - &self, - serializer: S, - ) -> Result<::Ok, ::Error> - where - S: Serializer, - { - let hex = hex::encode(&self.into_inner()[..]); - serializer.serialize_str(&hex) - } - } - - impl<'de> Deserialize<'de> for SHA256Hash { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - let vec = deserializer.deserialize_str(HexStrVisitor::with_size(32))?; - Ok(SHA256Hash::from_slice(&vec[..]).unwrap()) - } - } -} - -#[derive(PartialEq, Clone)] -pub struct Block(Vec); - -impl Block { - const XFIELD_POSITION: usize = 105; - - pub fn new(data: Vec) -> Block { - Block(data) - } - - /// Length of block header without proof is 105 + len bytes. - /// Version: 4 - /// hasPrevBlock: 32 - /// hashMerkleRoot: 32 - /// hashImMerkleRoot: 32 - /// time: 4 - /// xfieldType: 1 - /// xfield: variable - pub fn get_header_without_proof(&self) -> &[u8] { - let position = match self.get_xfield_length() { - Ok(None) => Self::XFIELD_POSITION, - Ok(Some(i)) => Self::XFIELD_POSITION + i.len() + i.0 as usize, - Err(_) => panic!("xField is unsupported"), - }; - &self.0[..position] - } - - pub fn hex(&self) -> String { - hex::encode(&self.0) - } - - /// Returns hash for signing. This hash value doesn't include proof field. Actual block hash - /// includes proof data. - pub fn sighash(&self) -> hash::SHA256Hash { - let header = self.get_header_without_proof(); - let hash = sha256d::Hash::hash(header).into_inner(); - hash::SHA256Hash::from_slice(&hash) - .expect("couldn't convert to blockdata::hash::Hash from sha256d::hash") - } - - pub fn payload(&self) -> &[u8] { - &self.0 - } - - pub fn add_proof(&self, proof: Vec) -> Block { - let position = match self.get_xfield_length() { - Ok(None) => Self::XFIELD_POSITION, - Ok(Some(i)) => Self::XFIELD_POSITION + i.len() + i.0 as usize, - Err(_) => panic!("xField is invalid"), - }; - let (header, txs) = self.payload().split_at(position); - let new_payload = [header, &proof[..], &txs[1..]].concat(); - Block(new_payload) - } - - pub fn add_aggregated_public_key(&self, aggregated_public_key: PublicKey) -> Block { - let (header, rest) = self.payload().split_at(Self::XFIELD_POSITION - 1); - let bytes = aggregated_public_key.to_bytes(); - let size = serialize(&VarInt(bytes.len() as u64)); - let new_payload = [header, &[0x01], &size, &bytes[..], &rest[1..]].concat(); - Block(new_payload) - } - - pub fn get_aggregated_public_key(&self) -> Option { - match self.get_xfield_type() { - 1 => { - let len = match self.get_xfield_length() { - Ok(Some(i)) => i, - _ => panic!("xField is invalid"), - }; - let bytes = &self.payload()[Self::XFIELD_POSITION + len.len() - ..Self::XFIELD_POSITION + len.len() + len.0 as usize]; - PublicKey::from_slice(bytes).ok() - } - _ => None, - } - } - - pub fn get_xfield_type(&self) -> u8 { - self.0[Self::XFIELD_POSITION - 1] - } - - /// the length of xfield. - /// return 0 if xfieldType is None. - /// return 33 if xfieldType is AggregatePublicKey. - /// return value of the first byte if xfieldType is unknown, - /// this assumes that the leading of the new xfieldType added in the future is the length of the xfield value. - pub fn get_xfield_length(&self) -> Result, Error> { - if self.get_xfield_type() == 0 { - return Ok(None); - } - let mut slice = &self.0[Self::XFIELD_POSITION..]; - VarInt::consensus_decode(&mut slice) - .map(|i| Some(i)) - .map_err(|_| Error::InvalidBlock) - } -} - -impl Debug for Block { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - let h = hex::encode(&self.0); - write!(f, "Block({})", h) - } -} - -impl Serialize for Block { - fn serialize(&self, serializer: S) -> Result<::Ok, ::Error> - where - S: Serializer, - { - let hex = self.hex(); - serializer.serialize_str(&hex) - } -} - -impl<'de> Deserialize<'de> for Block { - fn deserialize(deserializer: D) -> Result - where - D: Deserializer<'de>, - { - let vec = deserializer.deserialize_str(HexStrVisitor::new())?; - Ok(Block::new(vec)) - } -} - -#[cfg(test)] -mod tests { - use super::*; - use std::str::FromStr; - - const TEST_BLOCK: &str = "010000000000000000000000000000000000000000000000000000000000000000000000c1457ff3e5c527e69858108edf0ff1f49eea9c58d8d37300a164b3b4f8c8c7cef1a2e72770d547feae29f2dd40123a97c580d44fd4493de072416d53331997617b96f05d00403a4c09253c7b583e5260074380c9b99b895f938e37799d326ded984fb707e91fa4df2e0524a4ccf5fe224945b4fb94784b411a760eb730d95402d3383dd7ffdc01010000000100000000000000000000000000000000000000000000000000000000000000000000000022210366262690cbdf648132ce0c088962c6361112582364ede120f3780ab73438fc4bffffffff0100f2052a010000002776a9226d70757956774d32596a454d755a4b72687463526b614a787062715447417346484688ac00000000"; - const TEST_BLOCK2: &str = "010000000000000000000000000000000000000000000000000000000000000000000000e7c526d0125538b13a50b06465fb8b72120be13fb1142e93aba2aabb2a4f369826c18219f76e4d0ebddbaa9b744837c2ac65b347673695a23c3cc1a2be4141e1427d735e0121025700236c2890233592fcef262f4520d22af9160e3d9705855140eb2aa06c35d3403a4c09253c7b583e5260074380c9b99b895f938e37799d326ded984fb707e91fa4df2e0524a4ccf5fe224945b4fb94784b411a760eb730d95402d3383dd7ffdc0101000000010000000000000000000000000000000000000000000000000000000000000000000000002221025700236c2890233592fcef262f4520d22af9160e3d9705855140eb2aa06c35d3ffffffff0100f2052a010000001976a914834e0737cdb9008db614cd95ec98824e952e3dc588ac00000000"; - const TEST_BLOCK_WITH_PUBKEY: &str = "010000000000000000000000000000000000000000000000000000000000000000000000e7c526d0125538b13a50b06465fb8b72120be13fb1142e93aba2aabb2a4f369826c18219f76e4d0ebddbaa9b744837c2ac65b347673695a23c3cc1a2be4141e1427d735e0121025700236c2890233592fcef262f4520d22af9160e3d9705855140eb2aa06c35d3000101000000010000000000000000000000000000000000000000000000000000000000000000000000002221025700236c2890233592fcef262f4520d22af9160e3d9705855140eb2aa06c35d3ffffffff0100f2052a010000001976a914834e0737cdb9008db614cd95ec98824e952e3dc588ac00000000"; - const TEST_BLOCK_WITHOUT_PUBKEY: &str = "010000000000000000000000000000000000000000000000000000000000000000000000e7c526d0125538b13a50b06465fb8b72120be13fb1142e93aba2aabb2a4f369826c18219f76e4d0ebddbaa9b744837c2ac65b347673695a23c3cc1a2be4141e1427d735e00000101000000010000000000000000000000000000000000000000000000000000000000000000000000002221025700236c2890233592fcef262f4520d22af9160e3d9705855140eb2aa06c35d3ffffffff0100f2052a010000001976a914834e0737cdb9008db614cd95ec98824e952e3dc588ac00000000"; - const TEST_BLOCK_WITHOUT_PROOF: &str = "010000000000000000000000000000000000000000000000000000000000000000000000c1457ff3e5c527e69858108edf0ff1f49eea9c58d8d37300a164b3b4f8c8c7cef1a2e72770d547feae29f2dd40123a97c580d44fd4493de072416d53331997617b96f05d000001010000000100000000000000000000000000000000000000000000000000000000000000000000000022210366262690cbdf648132ce0c088962c6361112582364ede120f3780ab73438fc4bffffffff0100f2052a010000002776a9226d70757956774d32596a454d755a4b72687463526b614a787062715447417346484688ac00000000"; - const TEST_BLOCK_WITH_UNKNOWN_XFIELD: &str = "010000000000000000000000000000000000000000000000000000000000000000000000e7c526d0125538b13a50b06465fb8b72120be13fb1142e93aba2aabb2a4f369826c18219f76e4d0ebddbaa9b744837c2ac65b347673695a23c3cc1a2be4141e1427d735efffd2602ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000101000000010000000000000000000000000000000000000000000000000000000000000000000000002221025700236c2890233592fcef262f4520d22af9160e3d9705855140eb2aa06c35d3ffffffff0100f2052a010000001976a914834e0737cdb9008db614cd95ec98824e952e3dc588ac00000000"; - - fn test_block() -> Block { - let raw_block = hex::decode(TEST_BLOCK).unwrap(); - Block(raw_block) - } - - fn test_block2() -> Block { - let raw_block = hex::decode(TEST_BLOCK2).unwrap(); - Block(raw_block) - } - - fn test_block_with_pubkey() -> Block { - let raw_block = hex::decode(TEST_BLOCK_WITH_PUBKEY).unwrap(); - Block(raw_block) - } - - fn test_block_without_pubkey() -> Block { - let raw_block = hex::decode(TEST_BLOCK_WITHOUT_PUBKEY).unwrap(); - Block(raw_block) - } - - fn test_block_without_proof() -> Block { - let raw_block = hex::decode(TEST_BLOCK_WITHOUT_PROOF).unwrap(); - Block(raw_block) - } - - fn test_block_with_unknown_xfield() -> Block { - let raw_block = hex::decode(TEST_BLOCK_WITH_UNKNOWN_XFIELD).unwrap(); - Block(raw_block) - } - - #[test] - fn test_get_header_without_proof() { - let block = test_block(); - - let hex_expect = "010000000000000000000000000000000000000000000000000000000000000000000000c1457ff3e5c527e69858108edf0ff1f49eea9c58d8d37300a164b3b4f8c8c7cef1a2e72770d547feae29f2dd40123a97c580d44fd4493de072416d53331997617b96f05d00"; - let raw_expect = hex::decode(hex_expect).unwrap(); - - assert_eq!(block.get_header_without_proof(), &raw_expect[..]); - - let block = test_block_with_pubkey(); - let hex_expect = "010000000000000000000000000000000000000000000000000000000000000000000000e7c526d0125538b13a50b06465fb8b72120be13fb1142e93aba2aabb2a4f369826c18219f76e4d0ebddbaa9b744837c2ac65b347673695a23c3cc1a2be4141e1427d735e0121025700236c2890233592fcef262f4520d22af9160e3d9705855140eb2aa06c35d3"; - let raw_expect = hex::decode(hex_expect).unwrap(); - - assert_eq!(block.get_header_without_proof(), &raw_expect[..]); - } - - #[test] - fn test_add_proof() { - let block = test_block_without_proof(); - let sig_hex = "403a4c09253c7b583e5260074380c9b99b895f938e37799d326ded984fb707e91fa4df2e0524a4ccf5fe224945b4fb94784b411a760eb730d95402d3383dd7ffdc"; - - assert_eq!(block.add_proof(hex::decode(sig_hex).unwrap()), test_block()); - - let block = test_block_with_pubkey(); - assert_eq!( - block.add_proof(hex::decode(sig_hex).unwrap()), - test_block2() - ); - } - - #[test] - fn test_add_aggregated_public_key() { - let public_key = PublicKey::from_str( - "025700236c2890233592fcef262f4520d22af9160e3d9705855140eb2aa06c35d3", - ) - .unwrap(); - let block = test_block_without_pubkey().add_aggregated_public_key(public_key); - assert_eq!(block, test_block_with_pubkey()); - } - - #[test] - fn test_get_aggregated_public_key() { - let public_key = PublicKey::from_str( - "025700236c2890233592fcef262f4520d22af9160e3d9705855140eb2aa06c35d3", - ) - .unwrap(); - let block = test_block_with_pubkey(); - assert_eq!(block.get_aggregated_public_key().unwrap(), public_key); - } - - #[test] - fn test_block_hash_debug_fmt() { - let block = test_block(); - let hash = block.sighash(); - - assert_eq!( - format!("{:?}", hash), - "Hash(3d856f50e0718f72bab6516c1ab020ce3390ebc97490b6d2bad4054dc7a40a93)" - ); - } - - #[test] - fn test_block_debug_fmt() { - let block = test_block(); - - assert_eq!(format!("{:?}", block), format!("Block({})", TEST_BLOCK)); - } - - #[test] - fn test_block_serialize() { - let block = test_block(); - - let json = serde_json::to_string(&block).unwrap(); - let deserialize_block: Block = serde_json::from_str(&json).unwrap(); - assert_eq!(deserialize_block, block); - } - - #[test] - fn test_get_xfield_length() { - let block = test_block_with_pubkey(); - let len = block.get_xfield_length().unwrap().unwrap(); - assert_eq!(len, VarInt(33)); - - let block = test_block_with_unknown_xfield(); - let len = block.get_xfield_length().unwrap().unwrap(); - assert_eq!(len, VarInt(550)); - } -} diff --git a/src/cli/setup/compute_sig.rs b/src/cli/setup/compute_sig.rs index ffe6562a1..fa0779f68 100644 --- a/src/cli/setup/compute_sig.rs +++ b/src/cli/setup/compute_sig.rs @@ -1,4 +1,3 @@ -use crate::blockdata::Block; use crate::cli::setup::index_of; use crate::cli::setup::traits::Response; use crate::cli::setup::vss_to_bidirectional_shared_secret_map; @@ -13,6 +12,8 @@ use crate::sign::Sign; use crate::signer_node::NodeParameters; use tapyrus::{PrivateKey, PublicKey}; +use tapyrus::blockdata::block::Block; +use tapyrus::consensus::encode::{serialize, deserialize}; use clap::{App, Arg, ArgMatches, SubCommand}; use curv::cryptographic_primitives::secret_sharing::feldman_vss::ShamirSecretSharing; use curv::elliptic::curves::traits::{ECPoint, ECScalar}; @@ -37,7 +38,7 @@ impl Response for ComputeSigResponse {} impl fmt::Display for ComputeSigResponse { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "{}", self.block_with_signature.hex()) + write!(f, "{}", hex::encode(serialize(&self.block_with_signature))) } } @@ -66,10 +67,10 @@ impl<'a> ComputeSigCommand { .map(|i| ECScalar::from(&i)) .ok_or(Error::InvalidArgs("node-secret-share".to_string()))?; - let block: Block = matches + let mut block: Block = matches .value_of("block") .and_then(|s| hex::decode(s).ok()) - .map(|hex| Block::new(hex)) + .and_then(|hex| deserialize::(&hex).ok()) .ok_or(Error::InvalidArgs("block".to_string()))?; let node_vss_vec: Vec = matches @@ -165,11 +166,12 @@ impl<'a> ComputeSigCommand { &shared_block_secrets, &priv_shared_keys, )?; - let hash = block.sighash().into_inner(); + let hash = block.header.signature_hash(); signature.verify(&hash, &priv_shared_keys.y)?; let sig_hex = Sign::format_signature(&signature); - let new_block: Block = block.add_proof(hex::decode(sig_hex).unwrap()); - Ok(Box::new(ComputeSigResponse::new(new_block))) + let sig: tapyrus::util::signature::Signature = deserialize(&hex::decode(sig_hex).map_err(|_| Error::InvalidSig)?)?; + block.header.proof = Some(sig); + Ok(Box::new(ComputeSigResponse::new(block))) } pub fn args<'b>() -> App<'a, 'b> { @@ -226,7 +228,15 @@ mod tests { use super::*; #[test] - fn test_execute() { + fn test_deserialize() { + let hex = "010000000000000000000000000000000000000000000000000000000000000000000000c0d6961ad2819f74eb6d085f04f9cceb0a9a6d5c153fd3c39fc47c3ca0bb548f85fbd09a5f7d8ac4c9552e52931ef6672984f64e52ad6d05d1cdb18907da8527db317c5e012103addb2555f37abf8f28f11f498bec7bd1460e7243c1813847c49a7ae326a97d1c00010100000001000000000000000000000000000000000000000000000000000000000000000000000000222103addb2555f37abf8f28f11f498bec7bd1460e7243c1813847c49a7ae326a97d1cffffffff0100f2052a010000001976a914a15f16ea2ba840d178e4c19781abca5f4fb1b4c288ac00000000"; + let vec = hex::decode(hex).unwrap(); + let block = deserialize::(&vec); + assert!(block.is_ok()); + } + + #[test] + fn test_execute_success() { let matches = ComputeSigCommand::args().get_matches_from(vec![ "computesig", "--threshold", diff --git a/src/cli/setup/sign.rs b/src/cli/setup/sign.rs index 9cdb7ebc5..e16fa2ab2 100644 --- a/src/cli/setup/sign.rs +++ b/src/cli/setup/sign.rs @@ -1,4 +1,3 @@ -use crate::blockdata::Block; use crate::cli::setup::index_of; use crate::cli::setup::traits::Response; use crate::cli::setup::vss_to_bidirectional_shared_secret_map; @@ -10,6 +9,8 @@ use crate::rpc::Rpc; use crate::signer_node::NodeParameters; use tapyrus::{PrivateKey, PublicKey}; +use tapyrus::blockdata::block::Block; +use tapyrus::consensus::encode::deserialize; use clap::{App, Arg, ArgMatches, SubCommand}; use curv::arithmetic::traits::Converter; use curv::cryptographic_primitives::secret_sharing::feldman_vss::ShamirSecretSharing; @@ -63,7 +64,7 @@ impl<'a> SignCommand { let block: Block = matches .value_of("block") .and_then(|s| hex::decode(s).ok()) - .map(|hex| Block::new(hex)) + .and_then(|hex| deserialize::(&hex).ok()) .ok_or(Error::InvalidArgs("block".to_string()))?; let node_secret_share: FE = matches diff --git a/src/crypto/vss.rs b/src/crypto/vss.rs index 58e238b6b..46c96c75d 100644 --- a/src/crypto/vss.rs +++ b/src/crypto/vss.rs @@ -1,4 +1,3 @@ -use crate::blockdata::Block; use crate::crypto::multi_party_schnorr::Keys; use crate::crypto::multi_party_schnorr::LocalSig; use crate::crypto::multi_party_schnorr::SharedKeys; @@ -15,6 +14,7 @@ use crate::signer_node::ToVerifiableSS; use crate::util::jacobi; use tapyrus::consensus::encode::{self, *}; use tapyrus::{PrivateKey, PublicKey}; +use tapyrus::blockdata::block::Block; use curv::arithmetic::traits::Converter; use curv::cryptographic_primitives::secret_sharing::feldman_vss::VerifiableSS; use curv::elliptic::curves::traits::ECScalar; @@ -128,7 +128,7 @@ impl Vss { let local_sig_for_positive = Sign::sign( &shared_keys_for_positive, &priv_shared_keys, - block.sighash(), + block.header.signature_hash(), ); let shared_keys_for_negative = @@ -136,7 +136,7 @@ impl Vss { let local_sig_for_negative = Sign::sign( &shared_keys_for_negative, &priv_shared_keys, - block.sighash(), + block.header.signature_hash(), ); let p = BigInt::from_str_radix( @@ -189,8 +189,8 @@ impl Vss { block_shared_keys.unwrap().2, ); let public_key = priv_shared_keys.y; - let hash = block.sighash().into_inner(); - signature.verify(&hash, &public_key)?; + let hash = block.header.signature_hash(); + signature.verify(&hash[..], &public_key)?; Ok(signature) } } diff --git a/src/lib.rs b/src/lib.rs index 53efedf72..8396b0828 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -18,7 +18,6 @@ extern crate lazy_static; extern crate derive_builder; extern crate sha2; -pub mod blockdata; pub mod cli; pub mod command_args; pub mod crypto; diff --git a/src/net.rs b/src/net.rs index e4b07243b..0230273c6 100644 --- a/src/net.rs +++ b/src/net.rs @@ -2,8 +2,6 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -use crate::blockdata::hash::SHA256Hash; -use crate::blockdata::Block; use crate::errors; use crate::serialize::{ByteBufVisitor, HexStrVisitor}; use tapyrus::PublicKey; @@ -25,6 +23,8 @@ use curv::FE; use serde::export::fmt::Error; use serde::export::Formatter; use std::collections::HashSet; +use tapyrus::blockdata::block::Block; +use tapyrus::hash_types::BlockSigHash; /// Signer identifier is his public key. #[derive(Eq, Hash, Copy, Clone)] @@ -101,9 +101,9 @@ impl<'de> Deserialize<'de> for SignerID { pub enum MessageType { Candidateblock(Block), Completedblock(Block), - Blockvss(SHA256Hash, VerifiableSS, FE, VerifiableSS, FE), - Blockparticipants(SHA256Hash, HashSet), - Blocksig(SHA256Hash, FE, FE), + Blockvss(BlockSigHash, VerifiableSS, FE, VerifiableSS, FE), + Blockparticipants(BlockSigHash, HashSet), + Blocksig(BlockSigHash, FE, FE), } impl Display for MessageType { diff --git a/src/rpc.rs b/src/rpc.rs index 7b56cd556..3f4fc90f0 100644 --- a/src/rpc.rs +++ b/src/rpc.rs @@ -7,8 +7,9 @@ use log::Level::Trace; use log::{log_enabled, trace}; use serde::Deserialize; -use crate::blockdata::Block; use crate::errors::Error; +use tapyrus::blockdata::block::Block; +use tapyrus::consensus::encode::{deserialize, serialize}; #[derive(Debug, Deserialize, Clone)] pub struct GetBlockchainInfoResult { @@ -93,19 +94,20 @@ impl TapyrusApi for Rpc { match resp { Ok(v) => { let raw_block = hex::decode(v).expect("Decoding block hex failed"); - Ok(Block::new(raw_block)) + deserialize(&raw_block).map_err(|_| Error::InvalidBlock) } Err(e) => Err(e), } } fn testproposedblock(&self, block: &Block) -> Result { - let blockhex = serde_json::Value::from(block.hex()); + let blockhex = serde_json::Value::from(hex::encode(serialize(block))); self.call::("testproposedblock", &[blockhex]) } fn submitblock(&self, block: &Block) -> Result<(), Error> { - self.call::<()>("submitblock", &[block.hex().into()]) + let blockhex = serde_json::Value::from(hex::encode(serialize(block))); + self.call::<()>("submitblock", &[blockhex]) } fn getblockchaininfo(&self) -> Result { diff --git a/src/sign.rs b/src/sign.rs index 8dc927cd1..1bc02cf2d 100644 --- a/src/sign.rs +++ b/src/sign.rs @@ -8,13 +8,13 @@ use curv::cryptographic_primitives::secret_sharing::feldman_vss::VerifiableSS; use curv::elliptic::curves::traits::*; use curv::{BigInt, FE, GE}; -use crate::blockdata::hash::SHA256Hash; use crate::errors::Error; use crate::signer_node::SharedSecretMap; use crate::signer_node::ToShares; use crate::signer_node::ToVerifiableSS; use crate::util::*; use secp256k1::rand::thread_rng; +use tapyrus::hash_types::BlockSigHash; pub struct Sign; @@ -74,11 +74,10 @@ impl Sign { pub fn sign( eph_shared_keys: &SharedKeys, priv_shared_keys: &SharedKeys, - message: SHA256Hash, + message: BlockSigHash, ) -> LocalSig { - let message_slice = message.borrow_inner(); let local_sig = - LocalSig::compute(&message_slice.clone(), &eph_shared_keys, &priv_shared_keys); + LocalSig::compute(&message[..], &eph_shared_keys, &priv_shared_keys); local_sig } @@ -96,7 +95,7 @@ impl Sign { let v_as_str = v_as_int.to_str_radix(16); let s_as_int = signature.sigma.to_big_int(); let s_as_str = s_as_int.to_str_radix(16); - format!("{:x}{:0>64}{:0>64}", 64, v_as_str, s_as_str) + format!("{:0>64}{:0>64}", v_as_str, s_as_str) } } @@ -165,11 +164,11 @@ fn test_format_signature() { sigma: ECScalar::from(&pk), v: Secp256k1Point::from_coor(&x, &y), }; - assert_eq!(Sign::format_signature(&sig), "40c726149bfb2d4ab64823e0cfd8245645a7950e605ef9222735d821ae570b1e91f2b3080d94faf40969c08b663ff1556fe7fbbcfcb648ac2763c16a15a08676f3"); + assert_eq!(Sign::format_signature(&sig), "c726149bfb2d4ab64823e0cfd8245645a7950e605ef9222735d821ae570b1e91f2b3080d94faf40969c08b663ff1556fe7fbbcfcb648ac2763c16a15a08676f3"); let sig_0 = Signature { sigma: ECScalar::from(&BigInt::one()), v: Secp256k1Point::from_coor(&x, &y), }; - assert_eq!(Sign::format_signature(&sig_0), "40c726149bfb2d4ab64823e0cfd8245645a7950e605ef9222735d821ae570b1e910000000000000000000000000000000000000000000000000000000000000001"); + assert_eq!(Sign::format_signature(&sig_0), "c726149bfb2d4ab64823e0cfd8245645a7950e605ef9222735d821ae570b1e910000000000000000000000000000000000000000000000000000000000000001"); } diff --git a/src/signer_node/message_processor/mod.rs b/src/signer_node/message_processor/mod.rs index 1afe1b39f..674484438 100644 --- a/src/signer_node/message_processor/mod.rs +++ b/src/signer_node/message_processor/mod.rs @@ -9,8 +9,6 @@ pub use process_blockvss::process_blockvss; pub use process_candidateblock::process_candidateblock; pub use process_completedblock::process_completedblock; -use crate::blockdata::hash::SHA256Hash; -use crate::blockdata::Block; use crate::crypto::multi_party_schnorr::Keys; use crate::crypto::multi_party_schnorr::{LocalSig, SharedKeys}; use crate::crypto::vss::Vss; @@ -22,8 +20,10 @@ use crate::net::SignerID; use crate::rpc::TapyrusApi; use crate::signer_node::SharedSecret; use crate::signer_node::{BidirectionalSharedSecretMap, NodeParameters, NodeState}; +use tapyrus::blockdata::block::Block; +use tapyrus::hash_types::BlockSigHash; -fn get_valid_block(state: &NodeState, blockhash: SHA256Hash) -> Result<&Block, Error> { +fn get_valid_block(state: &NodeState, blockhash: BlockSigHash) -> Result<&Block, Error> { let block_opt = match state { NodeState::Master { candidate_block, .. @@ -41,8 +41,8 @@ fn get_valid_block(state: &NodeState, blockhash: SHA256Hash) -> Result<&Block, E log::error!("Invalid message received. candidate block is not set."); Err(Error::InvalidBlock) } - Some(block) if block.sighash() != blockhash => { - log::error!("Invalid message received. Received message is based different block. expected: {:?}, actual: {:?}", block.sighash(), blockhash); + Some(block) if block.header.signature_hash() != blockhash => { + log::error!("Invalid message received. Received message is based different block. expected: {:?}, actual: {:?}", block.header.signature_hash(), blockhash); Err(Error::InvalidBlock) } Some(block) => Ok(block), @@ -88,7 +88,7 @@ where conman.send_message(Message { message_type: MessageType::Blockvss( - block.sighash(), + block.header.signature_hash(), vss_scheme_for_positive.clone(), secret_shares_for_positive[i], vss_scheme_for_negative.clone(), @@ -115,7 +115,7 @@ where } fn generate_local_sig( - blockhash: SHA256Hash, + blockhash: BlockSigHash, shared_block_secrets: &BidirectionalSharedSecretMap, prev_state: &NodeState, params: &NodeParameters, @@ -140,7 +140,7 @@ where } fn broadcast_localsig( - sighash: SHA256Hash, + sighash: BlockSigHash, local_sig: &LocalSig, conman: &C, signer_id: &SignerID, @@ -161,47 +161,49 @@ mod tests { use super::*; use crate::signer_node::node_state::builder::{Builder, Master, Member}; use crate::tests::helper::node_state_builder::BuilderForTest; + use tapyrus::consensus::encode::deserialize; + use tapyrus::hashes::hex::FromHex; const BLOCK: &str = "01000000a8b61e31f3d6b655eb8fc387a22d139f141a14cb79c3a12a18192aa4d25941dfcb2edbbd1385a5d5c3bd037b6fd0ca8d691c13875fa74014a115f096a59be33a3447345d02f1420d9f5bc070aa00dc2bcb201ef470842fa5ec4f5c9986345ee91ae23b5e00000101000000010000000000000000000000000000000000000000000000000000000000000000260000000401260101ffffffff0200f2052a010000001976a9145f3f3758e7a4cf159c7bdb441ae4ff80999c62e888ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000"; - const HASH: &str = "5b19db53903eb5d083a98e7d254f67b3985e7f2d2e5d9c138008e46059a83fa3"; + const HASH: &str = "a33fa85960e40880139c5d2e2d7f5e98b3674f257d8ea983d0b53e9053db195b"; const INVALID_HASH: &str = "0000db53903eb5d083a98e7d254f67b3985e7f2d2e5d9c138008e46059a83fa3"; #[test] fn test_get_valid_block_valid_for_master() { - let block = Some(Block::new(hex::decode(BLOCK).unwrap())); + let block = deserialize::(&hex::decode(BLOCK).unwrap()).ok(); let state = Master::for_test().candidate_block(block.clone()).build(); - let blockhash = SHA256Hash::from_slice(&hex::decode(HASH).unwrap()[..]).unwrap(); + let blockhash = BlockSigHash::from_hex(HASH).unwrap(); assert_eq!(*get_valid_block(&state, blockhash).unwrap(), block.unwrap()); } #[test] fn test_get_valid_block_valid_for_member() { - let block = Some(Block::new(hex::decode(BLOCK).unwrap())); + let block = deserialize::(&hex::decode(BLOCK).unwrap()).ok(); let state = Member::for_test().candidate_block(block.clone()).build(); - let blockhash = SHA256Hash::from_slice(&hex::decode(HASH).unwrap()[..]).unwrap(); + let blockhash = BlockSigHash::from_hex(HASH).unwrap(); assert_eq!(*get_valid_block(&state, blockhash).unwrap(), block.unwrap()); } #[test] fn test_get_valid_block_invalid_node_state() { let state = NodeState::Joining; - let blockhash = SHA256Hash::from_slice(&hex::decode(HASH).unwrap()[..]).unwrap(); + let blockhash = BlockSigHash::from_hex(HASH).unwrap(); assert!(get_valid_block(&state, blockhash).is_err()); } #[test] fn test_get_valid_block_invalid_blockhash_for_master() { - let block = Some(Block::new(hex::decode(BLOCK).unwrap())); + let block = deserialize::(&hex::decode(BLOCK).unwrap()).ok(); let state = Master::for_test().candidate_block(block.clone()).build(); - let blockhash = SHA256Hash::from_slice(&hex::decode(INVALID_HASH).unwrap()[..]).unwrap(); + let blockhash = BlockSigHash::from_hex(INVALID_HASH).unwrap(); assert!(get_valid_block(&state, blockhash).is_err()); } #[test] fn test_get_valid_block_invalid_blockhash_for_member() { - let block = Some(Block::new(hex::decode(BLOCK).unwrap())); + let block = deserialize::(&hex::decode(BLOCK).unwrap()).ok(); let state = Member::for_test().candidate_block(block.clone()).build(); - let blockhash = SHA256Hash::from_slice(&hex::decode(INVALID_HASH).unwrap()[..]).unwrap(); + let blockhash = BlockSigHash::from_hex(INVALID_HASH).unwrap(); assert!(get_valid_block(&state, blockhash).is_err()); } } diff --git a/src/signer_node/message_processor/process_blockparticipants.rs b/src/signer_node/message_processor/process_blockparticipants.rs index 7f080bf7a..23c608fa9 100644 --- a/src/signer_node/message_processor/process_blockparticipants.rs +++ b/src/signer_node/message_processor/process_blockparticipants.rs @@ -1,4 +1,3 @@ -use crate::blockdata::hash::SHA256Hash; use crate::crypto::multi_party_schnorr::LocalSig; use crate::net::{ConnectionManager, SignerID}; use crate::rpc::TapyrusApi; @@ -9,10 +8,11 @@ use crate::signer_node::node_state::builder::{Builder, Master, Member}; use crate::signer_node::{NodeParameters, NodeState}; use curv::{FE, GE}; use std::collections::HashSet; +use tapyrus::hash_types::BlockSigHash; pub fn process_blockparticipants( sender_id: &SignerID, - blockhash: SHA256Hash, + blockhash: BlockSigHash, participants: HashSet, prev_state: &NodeState, conman: &C, @@ -78,7 +78,7 @@ where // Generate local signature and broadcast it. let (block_shared_keys, local_sig) = match generate_local_sig( - block.sighash(), + block.header.signature_hash(), &shared_block_secrets_by_participants, prev_state, params, @@ -92,7 +92,7 @@ where } }; - broadcast_localsig(block.sighash(), &local_sig, conman, ¶ms.signer_id); + broadcast_localsig(block.header.signature_hash(), &local_sig, conman, ¶ms.signer_id); create_next_state( sender_id, @@ -135,7 +135,6 @@ fn create_next_state( #[cfg(test)] mod tests { use super::process_blockparticipants; - use crate::blockdata::hash::SHA256Hash; use crate::crypto::multi_party_schnorr::LocalSig; use crate::net::SignerID; use crate::signer_node::node_state::builder::{Builder, Master, Member}; @@ -148,6 +147,8 @@ mod tests { use curv::{FE, GE}; use serde_json::Value; use std::collections::HashSet; + use tapyrus::hash_types::BlockSigHash; + use tapyrus::hashes::hex::FromHex; #[test] fn test_process_blockparticipants_master() { @@ -397,7 +398,7 @@ mod tests { rpc: MockRpc, ) -> ( SignerID, - SHA256Hash, + BlockSigHash, HashSet, NodeState, NodeParameters, @@ -412,14 +413,14 @@ mod tests { let block = to_block(&v["candidate_block"]); let sender = to_signer_id(&v["received"]["sender"].as_str().unwrap().to_string()); - let hex = hex::decode(v["received"]["block_hash"].as_str().unwrap()).unwrap(); + let hex = v["received"]["block_hash"].as_str().unwrap(); let received_participants: HashSet = { let r: HashSet = serde_json::from_value(v["received"]["participants"].clone()) .unwrap_or(HashSet::new()); r.iter().map(|i| to_signer_id(i)).collect() }; - let blockhash = SHA256Hash::from_slice(&hex[..]).unwrap(); + let blockhash = BlockSigHash::from_hex(hex).unwrap(); let participants: HashSet = { let r: HashSet = serde_json::from_value(v["participants"].clone()).unwrap_or(HashSet::new()); diff --git a/src/signer_node/message_processor/process_blocksig.rs b/src/signer_node/message_processor/process_blocksig.rs index d3b9bbe56..865195f71 100644 --- a/src/signer_node/message_processor/process_blocksig.rs +++ b/src/signer_node/message_processor/process_blocksig.rs @@ -1,5 +1,3 @@ -use crate::blockdata::hash::SHA256Hash; -use crate::blockdata::Block; use crate::crypto::multi_party_schnorr::Signature; use crate::crypto::vss::Vss; use crate::errors::Error; @@ -11,14 +9,17 @@ use crate::signer_node::node_state::builder::{Builder, Master}; use crate::signer_node::NodeParameters; use crate::signer_node::NodeState; use tapyrus::PublicKey; +use tapyrus::blockdata::block::Block; +use tapyrus::consensus::encode::deserialize; use curv::FE; use derive_builder::Builder; use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; +use tapyrus::hash_types::BlockSigHash; pub fn process_blocksig( sender_id: &SignerID, - blockhash: SHA256Hash, + blockhash: BlockSigHash, gamma_i: FE, e: FE, prev_state: &NodeState, @@ -129,6 +130,8 @@ where .collect(); let federation = params.get_federation_by_block_height(block_height); + + let signature = match Vss::aggregate_and_verify_signature( candidate_block, new_signatures, @@ -154,14 +157,13 @@ where #[cfg(feature = "dump")] dump_builder.build().unwrap().log(); - return state_builder.build(); } }; log::info!( "Round Success. candidateblock(block hash for sign)={:?}", - candidate_block.sighash(), + candidate_block.header.signature_hash(), ); #[cfg(feature = "dump")] @@ -193,7 +195,8 @@ where T: TapyrusApi, { let sig_hex = Sign::format_signature(sig); - let new_block: Block = block.add_proof(hex::decode(sig_hex).unwrap()); + let mut new_block = block.clone(); + new_block.header.proof = Some(deserialize(&hex::decode(sig_hex).map_err(|_| Error::InvalidSig)?)?); match rpc.submitblock(&new_block) { Ok(_) => Ok(new_block), Err(e) => Err(e), @@ -236,7 +239,7 @@ impl Dump { #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Received { sender: SignerID, - block_hash: SHA256Hash, + block_hash: BlockSigHash, gamma_i: FE, e: FE, } diff --git a/src/signer_node/message_processor/process_blockvss.rs b/src/signer_node/message_processor/process_blockvss.rs index 784d84af9..33ece87e2 100644 --- a/src/signer_node/message_processor/process_blockvss.rs +++ b/src/signer_node/message_processor/process_blockvss.rs @@ -1,5 +1,3 @@ -use crate::blockdata::hash::SHA256Hash; -use crate::blockdata::Block; use crate::errors::Error; use crate::net::{ConnectionManager, Message, MessageType, SignerID}; use crate::rpc::TapyrusApi; @@ -12,10 +10,12 @@ use crate::signer_node::{BidirectionalSharedSecretMap, NodeState, SharedSecret}; use curv::cryptographic_primitives::secret_sharing::feldman_vss::VerifiableSS; use curv::FE; use std::collections::HashSet; +use tapyrus::blockdata::block::Block; +use tapyrus::hash_types::BlockSigHash; pub fn process_blockvss( sender_id: &SignerID, - blockhash: SHA256Hash, + blockhash: BlockSigHash, vss_for_positive: VerifiableSS, secret_share_for_positive: FE, vss_for_negative: VerifiableSS, @@ -78,7 +78,7 @@ where .collect(); let (block_shared_keys, local_sig) = match generate_local_sig( - candidate_block.sighash(), + candidate_block.header.signature_hash(), &shared_block_secrets_by_participants, prev_state, params, @@ -100,7 +100,7 @@ where ); broadcast_localsig( - candidate_block.sighash(), + candidate_block.header.signature_hash(), &local_sig, conman, ¶ms.signer_id, @@ -124,7 +124,7 @@ where // nodes got blockvss message first, node needs to broadcast blocksig at this time. if participants.contains(¶ms.signer_id) { let (block_shared_keys, local_sig) = match generate_local_sig( - candidate_block.sighash(), + candidate_block.header.signature_hash(), &new_shared_block_secrets, prev_state, params, @@ -139,7 +139,7 @@ where }; broadcast_localsig( - candidate_block.sighash(), + candidate_block.header.signature_hash(), &local_sig, conman, ¶ms.signer_id, @@ -163,7 +163,7 @@ fn broadcast_blockparticipants( self_signer_id: &SignerID, ) { conman.broadcast_message(Message { - message_type: MessageType::Blockparticipants(block.sighash(), participants.clone()), + message_type: MessageType::Blockparticipants(block.header.signature_hash(), participants.clone()), sender_id: self_signer_id.clone(), receiver_id: None, }); @@ -230,7 +230,6 @@ fn store_received_vss( #[cfg(test)] mod tests { use super::process_blockvss; - use crate::blockdata::hash::SHA256Hash; use crate::crypto::multi_party_schnorr::LocalSig; use crate::net::SignerID; use crate::signer_node::node_state::builder::{Builder, Master, Member}; @@ -244,6 +243,8 @@ mod tests { use curv::{FE, GE}; use serde_json::Value; use std::collections::HashSet; + use tapyrus::hash_types::BlockSigHash; + use tapyrus::hashes::hex::FromHex; #[test] fn test_process_blockvss_master_invalid_block() { @@ -621,7 +622,7 @@ mod tests { rpc: MockRpc, ) -> ( SignerID, - SHA256Hash, + BlockSigHash, VerifiableSS, FE, VerifiableSS, @@ -640,8 +641,8 @@ mod tests { let block = to_block(&v["candidate_block"]); let sender = to_signer_id(&v["received"]["sender"].as_str().unwrap().to_string()); - let hex = hex::decode(v["received"]["block_hash"].as_str().unwrap()).unwrap(); - let blockhash = SHA256Hash::from_slice(&hex[..]).unwrap(); + let hex = v["received"]["block_hash"].as_str().unwrap(); + let blockhash = BlockSigHash::from_hex(hex).unwrap(); let vss_for_positive: VerifiableSS = serde_json::from_value(v["received"]["vss_for_positive"].clone()).unwrap(); let secret_share_for_positive = to_fe(&v["received"]["secret_share_for_positive"]); diff --git a/src/signer_node/message_processor/process_candidateblock.rs b/src/signer_node/message_processor/process_candidateblock.rs index a527f03bd..8aa9fa389 100644 --- a/src/signer_node/message_processor/process_candidateblock.rs +++ b/src/signer_node/message_processor/process_candidateblock.rs @@ -1,4 +1,3 @@ -use crate::blockdata::Block; use crate::errors::Error; use crate::net::{ConnectionManager, SignerID}; use crate::rpc::TapyrusApi; @@ -6,6 +5,7 @@ use crate::signer_node::message_processor::create_block_vss; use crate::signer_node::node_state::builder::{Builder, Member}; use crate::signer_node::utils::sender_index; use crate::signer_node::{NodeParameters, NodeState}; +use tapyrus::blockdata::block::{Block, XField}; pub fn process_candidateblock( sender_id: &SignerID, @@ -36,7 +36,7 @@ where log::info!( "candidateblock received. block hash for signing: {:?}", - block.sighash() + block.header.signature_hash() ); if let Err(e) = params.rpc.testproposedblock(&block) { @@ -74,14 +74,10 @@ fn verify_block( where T: TapyrusApi, { - match block.get_xfield_type() { - 0 | 1 => {} - _ => return Err(Error::UnsupportedXField), + match block.header.xfield { + XField::Unknown(_, _) => return Err(Error::UnsupportedXField), + _ => {} } - - // validate length of xfield - block.get_xfield_length()?; - verify_aggregated_public_key(block, block_height, params) } @@ -95,7 +91,7 @@ where { let next_block_height = block_height + 1; let federation = params.get_federation_by_block_height(next_block_height); - if let Some(public_key) = block.get_aggregated_public_key() { + if let Some(public_key) = block.header.aggregated_public_key() { if public_key == federation.aggregated_public_key() && next_block_height == federation.block_height() { @@ -115,7 +111,6 @@ where #[cfg(test)] mod tests { use super::*; - use crate::blockdata::Block; use crate::federation::{Federation, Federations}; use crate::net::{Message, MessageType, SignerID}; use crate::signer_node::node_state::builder::{Builder, Master, Member}; @@ -128,6 +123,7 @@ mod tests { use crate::tests::helper::node_vss::node_vss; use crate::tests::helper::rpc::MockRpc; use tapyrus::PublicKey; + use tapyrus::consensus::encode::deserialize; use std::str::FromStr; fn sender_id() -> SignerID { @@ -198,7 +194,7 @@ mod tests { fn test_as_master_with_invalid_block() { let sender_id = sender_id(); // invalid block - let candidate_block = Block::new(hex::decode("00000020ed658cc40670cceda23bb0b614821fe6d48a41d107d19f3f3a5608ad3d483092b151160ab71133b428e1f62eaeb598ae858ff66017c99601f29088b7c64a481d6284e145d29b70bf54392d29701031d2af9fed5f9bb21fbb284fa71ceb238f69a6d4095d00010200000000010100000000000000000000000000000000000000000000000000000000000000000c000000035c0101ffffffff0200f2052a010000001976a914cf12dbc04bb0de6fb6a87a5aeb4b2e74c97006b288ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000").unwrap()); + let candidate_block: Block = deserialize(&hex::decode("00000020ed658cc40670cceda23bb0b614821fe6d48a41d107d19f3f3a5608ad3d483092b151160ab71133b428e1f62eaeb598ae858ff66017c99601f29088b7c64a481d6284e145d29b70bf54392d29701031d2af9fed5f9bb21fbb284fa71ceb238f69a6d4095d0000010200000000010100000000000000000000000000000000000000000000000000000000000000000c000000035c0101ffffffff0200f2052a010000001976a914cf12dbc04bb0de6fb6a87a5aeb4b2e74c97006b288ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000").unwrap()).unwrap(); let prev_state = Master::for_test().build(); let conman = TestConnectionManager::new(); let rpc = MockRpc::new(); @@ -221,7 +217,7 @@ mod tests { fn test_as_member_with_invalid_block() { let sender_id = sender_id(); // invalid block - let candidate_block = Block::new(hex::decode("00000020ed658cc40670cceda23bb0b614821fe6d48a41d107d19f3f3a5608ad3d483092b151160ab71133b428e1f62eaeb598ae858ff66017c99601f29088b7c64a481d6284e145d29b70bf54392d29701031d2af9fed5f9bb21fbb284fa71ceb238f69a6d4095d00010200000000010100000000000000000000000000000000000000000000000000000000000000000c000000035c0101ffffffff0200f2052a010000001976a914cf12dbc04bb0de6fb6a87a5aeb4b2e74c97006b288ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000").unwrap()); + let candidate_block: Block = deserialize(&hex::decode("00000020ed658cc40670cceda23bb0b614821fe6d48a41d107d19f3f3a5608ad3d483092b151160ab71133b428e1f62eaeb598ae858ff66017c99601f29088b7c64a481d6284e145d29b70bf54392d29701031d2af9fed5f9bb21fbb284fa71ceb238f69a6d4095d0000010200000000010100000000000000000000000000000000000000000000000000000000000000000c000000035c0101ffffffff0200f2052a010000001976a914cf12dbc04bb0de6fb6a87a5aeb4b2e74c97006b288ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000").unwrap()).unwrap(); let prev_state = Member::for_test().build(); let conman = TestConnectionManager::new(); let mut rpc = MockRpc::new(); @@ -291,12 +287,12 @@ mod tests { fn test_block_with_public_key() -> Block { let raw_block = hex::decode(TEST_BLOCK_WITH_PUBKEY).unwrap(); - Block::new(raw_block) + deserialize(&raw_block).unwrap() } fn test_block_without_public_key() -> Block { let raw_block = hex::decode(TEST_BLOCK_WITHOUT_PUBKEY).unwrap(); - Block::new(raw_block) + deserialize(&raw_block).unwrap() } #[test] fn test_verify_aggregated_public_key() { diff --git a/src/signer_node/message_processor/process_completedblock.rs b/src/signer_node/message_processor/process_completedblock.rs index 6711d90e9..68f60bd36 100644 --- a/src/signer_node/message_processor/process_completedblock.rs +++ b/src/signer_node/message_processor/process_completedblock.rs @@ -1,7 +1,7 @@ -use crate::blockdata::Block; use crate::net::SignerID; use crate::rpc::TapyrusApi; use crate::signer_node::{is_master, master_index, NodeParameters, NodeState}; +use tapyrus::blockdata::block::Block; pub fn process_completedblock( sender_id: &SignerID, diff --git a/src/signer_node/mod.rs b/src/signer_node/mod.rs index e1f6d9026..352c59d95 100644 --- a/src/signer_node/mod.rs +++ b/src/signer_node/mod.rs @@ -10,7 +10,6 @@ pub mod utils; pub use crate::signer_node::node_parameters::NodeParameters; pub use crate::signer_node::node_state::NodeState; -use crate::blockdata::Block; use crate::errors::Error; use crate::net::{ConnectionManager, Message, MessageType, SignerID}; use crate::rpc::{GetBlockchainInfoResult, TapyrusApi}; @@ -30,6 +29,8 @@ use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; use std::sync::mpsc::{channel, Receiver, Sender, TryRecvError}; use std::time::Duration; +use tapyrus::blockdata::block::Block; +use tapyrus::blockdata::block::XField; /// Round interval. pub static ROUND_INTERVAL_DEFAULT_SECS: u64 = 60; @@ -297,7 +298,7 @@ impl SignerNode { let block = self.add_aggregated_public_key_if_needed(block_height, block); log::info!( "Broadcast candidate block. block hash for signing: {:?}", - block.sighash() + block.header.signature_hash() ); self.connection_manager.broadcast_message(Message { message_type: MessageType::Candidateblock(block.clone()), @@ -331,14 +332,16 @@ impl SignerNode { federation.signers().contains(signer_id) } - fn add_aggregated_public_key_if_needed(&self, block_height: u64, block: Block) -> Block { + fn add_aggregated_public_key_if_needed(&self, block_height: u64, mut block: Block) -> Block { let next_block_height = block_height + 1; let federation = self .params .get_federation_by_block_height(next_block_height); if federation.block_height() == next_block_height { let aggregated_public_key = self.params.aggregated_public_key(next_block_height); - block.add_aggregated_public_key(aggregated_public_key) + // block.add_aggregated_public_key(aggregated_public_key) + block.header.xfield = XField::AggregatePublicKey(aggregated_public_key); + block } else { block } @@ -462,8 +465,8 @@ impl SignerNode { fn verify_block(&self, block: &Block) -> Result<(), Error> { // master node accepts the block that has None xfield type. - match block.get_xfield_type() { - 0 => Ok(()), + match block.header.xfield { + XField::None => Ok(()), _ => Err(Error::UnsupportedXField), } } @@ -529,7 +532,6 @@ where #[cfg(test)] mod tests { - use crate::blockdata::Block; use crate::federation::{Federation, Federations}; use crate::net::{ConnectionManager, ConnectionManagerError, Message, SignerID}; use crate::rpc::tests::{safety, MockRpc}; @@ -542,6 +544,8 @@ mod tests { use crate::tests::helper::node_vss::node_vss; use crate::tests::helper::{address, enable_log}; use tapyrus::PublicKey; + use tapyrus::blockdata::block::Block; + use tapyrus::consensus::encode::deserialize; use redis::ControlFlow; use std::collections::HashSet; use std::str::FromStr; @@ -662,7 +666,7 @@ mod tests { fn get_invalid_block() -> Block { const TEST_BLOCK_WITH_UNKNOWN_XFIELD: &str = "010000000000000000000000000000000000000000000000000000000000000000000000e7c526d0125538b13a50b06465fb8b72120be13fb1142e93aba2aabb2a4f369826c18219f76e4d0ebddbaa9b744837c2ac65b347673695a23c3cc1a2be4141e1427d735efffd2602ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000101000000010000000000000000000000000000000000000000000000000000000000000000000000002221025700236c2890233592fcef262f4520d22af9160e3d9705855140eb2aa06c35d3ffffffff0100f2052a010000001976a914834e0737cdb9008db614cd95ec98824e952e3dc588ac00000000"; let raw_block = hex::decode(TEST_BLOCK_WITH_UNKNOWN_XFIELD).unwrap(); - Block::new(raw_block) + deserialize(&raw_block).unwrap() } #[test] @@ -779,12 +783,12 @@ mod tests { } mod test_for_waiting_ibd_finish { - use crate::blockdata::Block; use crate::errors::Error; use crate::rpc::{GetBlockchainInfoResult, TapyrusApi}; use crate::signer_node::tests::create_node; use crate::signer_node::{BidirectionalSharedSecretMap, NodeState}; use tapyrus::Address; + use tapyrus::blockdata::block::Block; use std::cell::Cell; use std::collections::HashSet; diff --git a/src/signer_node/node_state.rs b/src/signer_node/node_state.rs index 8956dc612..e9867a53f 100644 --- a/src/signer_node/node_state.rs +++ b/src/signer_node/node_state.rs @@ -1,8 +1,8 @@ -use crate::blockdata::Block; use crate::net::SignerID; use crate::signer_node::BidirectionalSharedSecretMap; use curv::{FE, GE}; use std::collections::{BTreeMap, HashSet}; +use tapyrus::blockdata::block::Block; #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub enum NodeState { @@ -83,7 +83,6 @@ impl NodeState { } pub mod builder { - use crate::blockdata::Block; use crate::crypto::multi_party_schnorr::LocalSig; use crate::net::SignerID; use crate::signer_node::{ @@ -92,6 +91,7 @@ pub mod builder { use curv::{FE, GE}; use std::borrow::BorrowMut; use std::collections::{BTreeMap, HashSet}; + use tapyrus::blockdata::block::Block; pub trait Builder { fn build(&self) -> NodeState; diff --git a/src/tests/helper/blocks.rs b/src/tests/helper/blocks.rs index c32e3e3be..ad2041a8a 100644 --- a/src/tests/helper/blocks.rs +++ b/src/tests/helper/blocks.rs @@ -1,4 +1,5 @@ -use crate::blockdata::Block; +use tapyrus::blockdata::block::Block; +use tapyrus::consensus::encode::deserialize; pub fn get_block(index: u8) -> Block { let bytes: Vec = match index { @@ -8,7 +9,7 @@ pub fn get_block(index: u8) -> Block { 146, 147, 210, 142, 105, 133, 119, 45, 47, 25, 75, 133, 112, 7, 79, 233, 69, 167, 215, 96, 132, 19, 158, 148, 208, 190, 32, 64, 71, 79, 96, 189, 255, 240, 47, 231, 6, 230, 177, 165, 201, 103, 20, 170, 124, 253, 51, 113, 94, 190, 113, 177, 76, 137, 120, 230, - 165, 107, 85, 240, 52, 212, 5, 180, 11, 93, 0, 1, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, + 165, 107, 85, 240, 52, 212, 5, 180, 11, 93, 0, 0, 1, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 81, 1, 1, 255, 255, 255, 255, 2, 0, 242, 5, 42, 1, 0, 0, 0, 25, 118, 169, 20, 207, 18, 219, 192, 75, 176, 222, 111, 182, 168, 122, 90, 235, 75, 46, 116, 201, 112, 6, @@ -23,7 +24,7 @@ pub fn get_block(index: u8) -> Block { 149, 219, 233, 225, 40, 174, 239, 186, 110, 126, 114, 158, 187, 133, 180, 115, 192, 174, 15, 52, 120, 17, 197, 223, 9, 18, 11, 111, 128, 226, 116, 203, 147, 145, 238, 46, 204, 30, 42, 229, 70, 9, 69, 230, 127, 105, 106, 119, 146, 166, 27, 106, 192, 105, 200, - 12, 76, 61, 91, 129, 237, 0, 150, 182, 11, 93, 0, 1, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, + 12, 76, 61, 91, 129, 237, 0, 150, 182, 11, 93, 0, 0, 1, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 82, 1, 1, 255, 255, 255, 255, 2, 0, 242, 5, 42, 1, 0, 0, 0, 25, 118, 169, 20, 207, 18, 219, 192, 75, 176, 222, 111, 182, 168, 122, 90, 235, 75, 46, 116, 201, @@ -38,7 +39,7 @@ pub fn get_block(index: u8) -> Block { 118, 123, 237, 71, 125, 210, 251, 205, 126, 224, 44, 194, 68, 222, 67, 193, 39, 103, 35, 152, 193, 254, 92, 31, 49, 175, 51, 242, 97, 3, 255, 168, 205, 236, 137, 76, 249, 184, 71, 243, 0, 179, 67, 82, 232, 35, 12, 63, 53, 228, 59, 106, 81, 230, 100, 136, - 100, 29, 156, 198, 150, 131, 193, 182, 11, 93, 0, 1, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, + 100, 29, 156, 198, 150, 131, 193, 182, 11, 93, 0, 0, 1, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 3, 83, 1, 1, 255, 255, 255, 255, 2, 0, 242, 5, 42, 1, 0, 0, 0, 25, 118, 169, 20, 207, 18, 219, 192, 75, 176, 222, 111, 182, 168, 122, 90, 235, 75, 46, 116, 201, @@ -53,7 +54,7 @@ pub fn get_block(index: u8) -> Block { 88, 231, 157, 73, 44, 201, 62, 243, 225, 165, 26, 140, 133, 175, 75, 60, 52, 135, 76, 193, 192, 4, 193, 41, 168, 243, 73, 241, 14, 127, 162, 167, 40, 6, 35, 189, 255, 133, 131, 145, 20, 84, 74, 66, 123, 86, 155, 212, 121, 122, 107, 108, 149, 234, 119, 182, - 13, 247, 238, 44, 147, 13, 183, 11, 93, 0, 1, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 13, 247, 238, 44, 147, 13, 183, 11, 93, 0, 0, 1, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 3, 84, 1, 1, 255, 255, 255, 255, 2, 0, 242, 5, 42, 1, 0, 0, 0, 25, 118, 169, 20, 207, 18, 219, 192, 75, 176, 222, 111, 182, 168, 122, 90, 235, 75, 46, 116, 201, 112, 6, 178, @@ -78,5 +79,5 @@ pub fn get_block(index: u8) -> Block { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], }; - Block::new(bytes) + deserialize(&bytes).unwrap() } diff --git a/src/tests/helper/mod.rs b/src/tests/helper/mod.rs index afa17a8c4..edfa5ba4f 100644 --- a/src/tests/helper/mod.rs +++ b/src/tests/helper/mod.rs @@ -38,7 +38,6 @@ pub fn address(private_key: &PrivateKey) -> Address { } pub mod test_vectors { - use crate::blockdata::Block; use crate::crypto::multi_party_schnorr::LocalSig; use crate::crypto::vss::Vss; use crate::federation::{Federation, Federations}; @@ -49,6 +48,9 @@ pub mod test_vectors { use crate::tests::helper::rpc::MockRpc; use tapyrus::{PrivateKey, PublicKey}; + use tapyrus::blockdata::block::Block; + use tapyrus::consensus::encode::deserialize; + use curv::{FE, GE}; use serde_json::Value; use std::collections::HashSet; @@ -130,9 +132,8 @@ pub mod test_vectors { if block.is_null() { None } else { - let hex = hex::decode(block.as_str().unwrap()).unwrap(); - let block = Block::new(hex); - Some(block) + let bytes = hex::decode(block.as_str().unwrap()).unwrap(); + deserialize(&bytes).ok() } } diff --git a/src/tests/helper/rpc.rs b/src/tests/helper/rpc.rs index 7c79f51fb..5af1d4989 100644 --- a/src/tests/helper/rpc.rs +++ b/src/tests/helper/rpc.rs @@ -1,9 +1,9 @@ -use crate::blockdata::Block; use crate::errors::Error; use crate::rpc::{GetBlockchainInfoResult, TapyrusApi}; use tapyrus::Address; use std::cell::RefCell; use std::collections::VecDeque; +use tapyrus::blockdata::block::Block; /// Mock for Rpc /// diff --git a/tests/resources/process_blockparticipants.json b/tests/resources/process_blockparticipants.json index cdb9e75db..e543f4331 100644 --- a/tests/resources/process_blockparticipants.json +++ b/tests/resources/process_blockparticipants.json @@ -113,7 +113,7 @@ ], "received": { "sender": "02785a891f323acd6cef0fc509bb14304410595914267c50467e51c87142acbb5e", - "block_hash": "f219d9de91faeeec8ea6e20b86fb8d10ec187023f3107c8975543dd67423ae96", + "block_hash": "96ae2374d63d5475897c10f3237018ec108dfb860be2a68eeceefa91ded919f2", "participants": [ "02785a891f323acd6cef0fc509bb14304410595914267c50467e51c87142acbb5e", "02ce7edc292d7b747fab2f23584bbafaffde5c8ff17cf689969614441e0527b900" @@ -270,7 +270,7 @@ }, "received": { "sender": "02ce7edc292d7b747fab2f23584bbafaffde5c8ff17cf689969614441e0527b900", - "block_hash": "f219d9de91faeeec8ea6e20b86fb8d10ec187023f3107c8975543dd67423ae96", + "block_hash": "96ae2374d63d5475897c10f3237018ec108dfb860be2a68eeceefa91ded919f2", "participants": [ "02785a891f323acd6cef0fc509bb14304410595914267c50467e51c87142acbb5e", "02ce7edc292d7b747fab2f23584bbafaffde5c8ff17cf689969614441e0527b900" @@ -399,7 +399,7 @@ }, "received": { "sender": "02ce7edc292d7b747fab2f23584bbafaffde5c8ff17cf689969614441e0527b900", - "block_hash": "f219d9de91faeeec8ea6e20b86fb8d10ec187023f3107c8975543dd67423ae96", + "block_hash": "96ae2374d63d5475897c10f3237018ec108dfb860be2a68eeceefa91ded919f2", "participants": [ "03831a69b8009833ab5b0326012eaf489bfea35a7321b1ca15b11d88131423fafc", "02ce7edc292d7b747fab2f23584bbafaffde5c8ff17cf689969614441e0527b900" @@ -519,7 +519,7 @@ ], "received": { "sender": "03831a69b8009833ab5b0326012eaf489bfea35a7321b1ca15b11d88131423fafc", - "block_hash": "f219d9de91faeeec8ea6e20b86fb8d10ec187023f3107c8975543dd67423ae96", + "block_hash": "96ae2374d63d5475897c10f3237018ec108dfb860be2a68eeceefa91ded919f2", "participants": [ "03831a69b8009833ab5b0326012eaf489bfea35a7321b1ca15b11d88131423fafc", "02ce7edc292d7b747fab2f23584bbafaffde5c8ff17cf689969614441e0527b900" @@ -636,7 +636,7 @@ }, "received": { "sender": "02ce7edc292d7b747fab2f23584bbafaffde5c8ff17cf689969614441e0527b900", - "block_hash": "f219d9de91faeeec8ea6e20b86fb8d10ec187023f3107c8975543dd67423ae96", + "block_hash": "96ae2374d63d5475897c10f3237018ec108dfb860be2a68eeceefa91ded919f2", "participants": [ "02785a891f323acd6cef0fc509bb14304410595914267c50467e51c87142acbb5e", "02ce7edc292d7b747fab2f23584bbafaffde5c8ff17cf689969614441e0527b900" @@ -713,7 +713,7 @@ }, "received": { "sender": "02ce7edc292d7b747fab2f23584bbafaffde5c8ff17cf689969614441e0527b900", - "block_hash": "f219d9de91faeeec8ea6e20b86fb8d10ec187023f3107c8975543dd67423ae96", + "block_hash": "96ae2374d63d5475897c10f3237018ec108dfb860be2a68eeceefa91ded919f2", "participants": [ "02785a891f323acd6cef0fc509bb14304410595914267c50467e51c87142acbb5e", "02ce7edc292d7b747fab2f23584bbafaffde5c8ff17cf689969614441e0527b900" diff --git a/tests/resources/process_blocksig.json b/tests/resources/process_blocksig.json index c746e1345..bae7f22d6 100644 --- a/tests/resources/process_blocksig.json +++ b/tests/resources/process_blocksig.json @@ -16,7 +16,7 @@ ], "received": { "sender": "03831a69b8009833ab5b0326012eaf489bfea35a7321b1ca15b11d88131423fafc", - "block_hash": "7fe0f358fbb99460fe6b70a156ce7d87728c14238107e21ae285a8f1fea3feb8", + "block_hash": "b8fea3fef1a885e21ae2078123148c72877dce56a1706bfe6094b9fb58f3e07f", "gamma_i": "43f10faf1f6bd9cb400eebbbe6cd2493a451c285d297f7d1eaa4ee422bba7fdb", "e": "bb1ad50bf39b995dc04de2ea238e78fa3d3254cf1708dd1717e552f4d0cfb276" }, @@ -154,7 +154,41 @@ "y": "1ea8b8b6d8203f6821c6ac66a9f99ab730b5f43c3ae4490e6fcbc27fc424e43e" } ], - "candidate_block": "01000000954944fab7bca1d0bd42a346a5d981abc7a64f2f010dc4f3e32ad796fc84bfdbd2c07127f31ca5e3f380c30d39fbd273557d473ff3721a61a99fba385d8a2eae49dbbea59316df66bbe4ed6f5d25bc370a39b4fffe4d6b439371b345b15f1782743b7c5e000001010000000100000000000000000000000000000000000000000000000000000000000000000100000003510101ffffffff0200f2052a010000001976a9143f2ab2cc31283e0fa8467257f47bd47a7db1e51288ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000", + "candidate_block": { + "header": { + "version": 1, + "prev_blockhash": "dbbf84fc96d72ae3f3c40d012f4fa6c7ab81d9a546a342bdd0a1bcb7fa444995", + "merkle_root": "ae2e8a5d38ba9fa9611a72f33f477d5573d2fb390dc380f3e3a51cf32771c0d2", + "im_merkle_root": "82175fb145b37193436b4dfeffb4390a37bc255d6fede4bb66df1693a5bedb49", + "time": 1585199988, + "xfield": "00", + "proof": null + }, + "txdata":[ + { + "version": 1, + "lock_time": 0, + "input": [ + { + "previous_output": "0000000000000000000000000000000000000000000000000000000000000000:1", + "script_sig": "510101", + "sequence": 4294967295, + "witness": [] + } + ], + "output": [ + { + "value": 5000000000, + "script_pubkey": "76a9143f2ab2cc31283e0fa8467257f47bd47a7db1e51288ac" + }, + { + "value": 0, + "script_pubkey": "6a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf9" + } + ] + } + ] + }, "participants": [ "03831a69b8009833ab5b0326012eaf489bfea35a7321b1ca15b11d88131423fafc", "02785a891f323acd6cef0fc509bb14304410595914267c50467e51c87142acbb5e" @@ -317,7 +351,41 @@ "y": "1ea8b8b6d8203f6821c6ac66a9f99ab730b5f43c3ae4490e6fcbc27fc424e43e" } ], - "candidate_block": "01000000954944fab7bca1d0bd42a346a5d981abc7a64f2f010dc4f3e32ad796fc84bfdbd2c07127f31ca5e3f380c30d39fbd273557d473ff3721a61a99fba385d8a2eae49dbbea59316df66bbe4ed6f5d25bc370a39b4fffe4d6b439371b345b15f1782743b7c5e000001010000000100000000000000000000000000000000000000000000000000000000000000000100000003510101ffffffff0200f2052a010000001976a9143f2ab2cc31283e0fa8467257f47bd47a7db1e51288ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000", + "candidate_block": { + "header": { + "version": 1, + "prev_blockhash": "dbbf84fc96d72ae3f3c40d012f4fa6c7ab81d9a546a342bdd0a1bcb7fa444995", + "merkle_root": "ae2e8a5d38ba9fa9611a72f33f477d5573d2fb390dc380f3e3a51cf32771c0d2", + "im_merkle_root": "82175fb145b37193436b4dfeffb4390a37bc255d6fede4bb66df1693a5bedb49", + "time": 1585199988, + "xfield": "00", + "proof": null + }, + "txdata":[ + { + "version": 1, + "lock_time": 0, + "input": [ + { + "previous_output": "0000000000000000000000000000000000000000000000000000000000000000:1", + "script_sig": "510101", + "sequence": 4294967295, + "witness": [] + } + ], + "output": [ + { + "value": 5000000000, + "script_pubkey": "76a9143f2ab2cc31283e0fa8467257f47bd47a7db1e51288ac" + }, + { + "value": 0, + "script_pubkey": "6a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf9" + } + ] + } + ] + }, "signatures": { "02785a891f323acd6cef0fc509bb14304410595914267c50467e51c87142acbb5e": [ "f1235066960adfc36b3b5b311f85d5c752eb1b3d9385a4cb5a8b6defab9b7c68", @@ -348,7 +416,7 @@ ], "received": { "sender": "03831a69b8009833ab5b0326012eaf489bfea35a7321b1ca15b11d88131423fafc", - "block_hash": "7fe0f358fbb99460fe6b70a156ce7d87728c14238107e21ae285a8f1fea3feb8", + "block_hash": "b8fea3fef1a885e21ae2078123148c72877dce56a1706bfe6094b9fb58f3e07f", "gamma_i": "43f10faf1f6bd9cb400eebbbe6cd2493a451c285d297f7d1eaa4ee422bba7fdb", "e": "bb1ad50bf39b995dc04de2ea238e78fa3d3254cf1708dd1717e552f4d0cfb276" }, @@ -486,7 +554,41 @@ "y": "1ea8b8b6d8203f6821c6ac66a9f99ab730b5f43c3ae4490e6fcbc27fc424e43e" } ], - "candidate_block": "01000000954944fab7bca1d0bd42a346a5d981abc7a64f2f010dc4f3e32ad796fc84bfdbd2c07127f31ca5e3f380c30d39fbd273557d473ff3721a61a99fba385d8a2eae49dbbea59316df66bbe4ed6f5d25bc370a39b4fffe4d6b439371b345b15f1782743b7c5e000001010000000100000000000000000000000000000000000000000000000000000000000000000100000003510101ffffffff0200f2052a010000001976a9143f2ab2cc31283e0fa8467257f47bd47a7db1e51288ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000", + "candidate_block": { + "header": { + "version": 1, + "prev_blockhash": "dbbf84fc96d72ae3f3c40d012f4fa6c7ab81d9a546a342bdd0a1bcb7fa444995", + "merkle_root": "ae2e8a5d38ba9fa9611a72f33f477d5573d2fb390dc380f3e3a51cf32771c0d2", + "im_merkle_root": "82175fb145b37193436b4dfeffb4390a37bc255d6fede4bb66df1693a5bedb49", + "time": 1585199988, + "xfield": "00", + "proof": null + }, + "txdata":[ + { + "version": 1, + "lock_time": 0, + "input": [ + { + "previous_output": "0000000000000000000000000000000000000000000000000000000000000000:1", + "script_sig": "510101", + "sequence": 4294967295, + "witness": [] + } + ], + "output": [ + { + "value": 5000000000, + "script_pubkey": "76a9143f2ab2cc31283e0fa8467257f47bd47a7db1e51288ac" + }, + { + "value": 0, + "script_pubkey": "6a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf9" + } + ] + } + ] + }, "signatures": {}, "participants": [ "03831a69b8009833ab5b0326012eaf489bfea35a7321b1ca15b11d88131423fafc", @@ -512,7 +614,7 @@ ], "received": { "sender": "02ce7edc292d7b747fab2f23584bbafaffde5c8ff17cf689969614441e0527b900", - "block_hash": "7fe0f358fbb99460fe6b70a156ce7d87728c14238107e21ae285a8f1fea3feb8", + "block_hash": "b8fea3fef1a885e21ae2078123148c72877dce56a1706bfe6094b9fb58f3e07f", "gamma_i": "43f10faf1f6bd9cb400eebbbe6cd2493a451c285d297f7d1eaa4ee422bba7fdb", "e": "bb1ad50bf39b995dc04de2ea238e78fa3d3254cf1708dd1717e552f4d0cfb276" }, @@ -650,7 +752,41 @@ "y": "1ea8b8b6d8203f6821c6ac66a9f99ab730b5f43c3ae4490e6fcbc27fc424e43e" } ], - "candidate_block": "01000000954944fab7bca1d0bd42a346a5d981abc7a64f2f010dc4f3e32ad796fc84bfdbd2c07127f31ca5e3f380c30d39fbd273557d473ff3721a61a99fba385d8a2eae49dbbea59316df66bbe4ed6f5d25bc370a39b4fffe4d6b439371b345b15f1782743b7c5e000001010000000100000000000000000000000000000000000000000000000000000000000000000100000003510101ffffffff0200f2052a010000001976a9143f2ab2cc31283e0fa8467257f47bd47a7db1e51288ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000", + "candidate_block": { + "header": { + "version": 1, + "prev_blockhash": "dbbf84fc96d72ae3f3c40d012f4fa6c7ab81d9a546a342bdd0a1bcb7fa444995", + "merkle_root": "ae2e8a5d38ba9fa9611a72f33f477d5573d2fb390dc380f3e3a51cf32771c0d2", + "im_merkle_root": "82175fb145b37193436b4dfeffb4390a37bc255d6fede4bb66df1693a5bedb49", + "time": 1585199988, + "xfield": "00", + "proof": null + }, + "txdata":[ + { + "version": 1, + "lock_time": 0, + "input": [ + { + "previous_output": "0000000000000000000000000000000000000000000000000000000000000000:1", + "script_sig": "510101", + "sequence": 4294967295, + "witness": [] + } + ], + "output": [ + { + "value": 5000000000, + "script_pubkey": "76a9143f2ab2cc31283e0fa8467257f47bd47a7db1e51288ac" + }, + { + "value": 0, + "script_pubkey": "6a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf9" + } + ] + } + ] + }, "signatures": { "02785a891f323acd6cef0fc509bb14304410595914267c50467e51c87142acbb5e": [ "f1235066960adfc36b3b5b311f85d5c752eb1b3d9385a4cb5a8b6defab9b7c68", @@ -681,7 +817,7 @@ ], "received": { "sender": "03831a69b8009833ab5b0326012eaf489bfea35a7321b1ca15b11d88131423fafc", - "block_hash": "7fe0f358fbb99460fe6b70a156ce7d87728c14238107e21ae285a8f1fea3feb8", + "block_hash": "b8fea3fef1a885e21ae2078123148c72877dce56a1706bfe6094b9fb58f3e07f", "gamma_i": "0000000000000000000000000000000000000000000000000000000000000001", "e": "bb1ad50bf39b995dc04de2ea238e78fa3d3254cf1708dd1717e552f4d0cfb276" }, @@ -819,7 +955,41 @@ "y": "1ea8b8b6d8203f6821c6ac66a9f99ab730b5f43c3ae4490e6fcbc27fc424e43e" } ], - "candidate_block": "01000000954944fab7bca1d0bd42a346a5d981abc7a64f2f010dc4f3e32ad796fc84bfdbd2c07127f31ca5e3f380c30d39fbd273557d473ff3721a61a99fba385d8a2eae49dbbea59316df66bbe4ed6f5d25bc370a39b4fffe4d6b439371b345b15f1782743b7c5e000001010000000100000000000000000000000000000000000000000000000000000000000000000100000003510101ffffffff0200f2052a010000001976a9143f2ab2cc31283e0fa8467257f47bd47a7db1e51288ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000", + "candidate_block": { + "header": { + "version": 1, + "prev_blockhash": "dbbf84fc96d72ae3f3c40d012f4fa6c7ab81d9a546a342bdd0a1bcb7fa444995", + "merkle_root": "ae2e8a5d38ba9fa9611a72f33f477d5573d2fb390dc380f3e3a51cf32771c0d2", + "im_merkle_root": "82175fb145b37193436b4dfeffb4390a37bc255d6fede4bb66df1693a5bedb49", + "time": 1585199988, + "xfield": "00", + "proof": null + }, + "txdata":[ + { + "version": 1, + "lock_time": 0, + "input": [ + { + "previous_output": "0000000000000000000000000000000000000000000000000000000000000000:1", + "script_sig": "510101", + "sequence": 4294967295, + "witness": [] + } + ], + "output": [ + { + "value": 5000000000, + "script_pubkey": "76a9143f2ab2cc31283e0fa8467257f47bd47a7db1e51288ac" + }, + { + "value": 0, + "script_pubkey": "6a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf9" + } + ] + } + ] + }, "signatures": { "02785a891f323acd6cef0fc509bb14304410595914267c50467e51c87142acbb5e": [ "f1235066960adfc36b3b5b311f85d5c752eb1b3d9385a4cb5a8b6defab9b7c68", @@ -850,7 +1020,7 @@ ], "received": { "sender": "03831a69b8009833ab5b0326012eaf489bfea35a7321b1ca15b11d88131423fafc", - "block_hash": "7fe0f358fbb99460fe6b70a156ce7d87728c14238107e21ae285a8f1fea3feb8", + "block_hash": "b8fea3fef1a885e21ae2078123148c72877dce56a1706bfe6094b9fb58f3e07f", "gamma_i": "43f10faf1f6bd9cb400eebbbe6cd2493a451c285d297f7d1eaa4ee422bba7fdb", "e": "bb1ad50bf39b995dc04de2ea238e78fa3d3254cf1708dd1717e552f4d0cfb276" }, @@ -988,7 +1158,41 @@ "y": "1ea8b8b6d8203f6821c6ac66a9f99ab730b5f43c3ae4490e6fcbc27fc424e43e" } ], - "candidate_block": "01000000954944fab7bca1d0bd42a346a5d981abc7a64f2f010dc4f3e32ad796fc84bfdbd2c07127f31ca5e3f380c30d39fbd273557d473ff3721a61a99fba385d8a2eae49dbbea59316df66bbe4ed6f5d25bc370a39b4fffe4d6b439371b345b15f1782743b7c5e000001010000000100000000000000000000000000000000000000000000000000000000000000000100000003510101ffffffff0200f2052a010000001976a9143f2ab2cc31283e0fa8467257f47bd47a7db1e51288ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000", + "candidate_block": { + "header": { + "version": 1, + "prev_blockhash": "dbbf84fc96d72ae3f3c40d012f4fa6c7ab81d9a546a342bdd0a1bcb7fa444995", + "merkle_root": "ae2e8a5d38ba9fa9611a72f33f477d5573d2fb390dc380f3e3a51cf32771c0d2", + "im_merkle_root": "82175fb145b37193436b4dfeffb4390a37bc255d6fede4bb66df1693a5bedb49", + "time": 1585199988, + "xfield": "00", + "proof": null + }, + "txdata":[ + { + "version": 1, + "lock_time": 0, + "input": [ + { + "previous_output": "0000000000000000000000000000000000000000000000000000000000000000:1", + "script_sig": "510101", + "sequence": 4294967295, + "witness": [] + } + ], + "output": [ + { + "value": 5000000000, + "script_pubkey": "76a9143f2ab2cc31283e0fa8467257f47bd47a7db1e51288ac" + }, + { + "value": 0, + "script_pubkey": "6a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf9" + } + ] + } + ] + }, "signatures": { "02785a891f323acd6cef0fc509bb14304410595914267c50467e51c87142acbb5e": [ "0000000000000000000000000000000000000000000000000000000000000001", @@ -1019,7 +1223,7 @@ ], "received": { "sender": "03831a69b8009833ab5b0326012eaf489bfea35a7321b1ca15b11d88131423fafc", - "block_hash": "7fe0f358fbb99460fe6b70a156ce7d87728c14238107e21ae285a8f1fea3feb8", + "block_hash": "b8fea3fef1a885e21ae2078123148c72877dce56a1706bfe6094b9fb58f3e07f", "gamma_i": "43f10faf1f6bd9cb400eebbbe6cd2493a451c285d297f7d1eaa4ee422bba7fdb", "e": "bb1ad50bf39b995dc04de2ea238e78fa3d3254cf1708dd1717e552f4d0cfb276" }, @@ -1157,7 +1361,41 @@ "y": "1ea8b8b6d8203f6821c6ac66a9f99ab730b5f43c3ae4490e6fcbc27fc424e43e" } ], - "candidate_block": "01000000954944fab7bca1d0bd42a346a5d981abc7a64f2f010dc4f3e32ad796fc84bfdbd2c07127f31ca5e3f380c30d39fbd273557d473ff3721a61a99fba385d8a2eae49dbbea59316df66bbe4ed6f5d25bc370a39b4fffe4d6b439371b345b15f1782743b7c5e000001010000000100000000000000000000000000000000000000000000000000000000000000000100000003510101ffffffff0200f2052a010000001976a9143f2ab2cc31283e0fa8467257f47bd47a7db1e51288ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000", + "candidate_block": { + "header": { + "version": 1, + "prev_blockhash": "dbbf84fc96d72ae3f3c40d012f4fa6c7ab81d9a546a342bdd0a1bcb7fa444995", + "merkle_root": "ae2e8a5d38ba9fa9611a72f33f477d5573d2fb390dc380f3e3a51cf32771c0d2", + "im_merkle_root": "82175fb145b37193436b4dfeffb4390a37bc255d6fede4bb66df1693a5bedb49", + "time": 1585199988, + "xfield": "00", + "proof": null + }, + "txdata":[ + { + "version": 1, + "lock_time": 0, + "input": [ + { + "previous_output": "0000000000000000000000000000000000000000000000000000000000000000:1", + "script_sig": "510101", + "sequence": 4294967295, + "witness": [] + } + ], + "output": [ + { + "value": 5000000000, + "script_pubkey": "76a9143f2ab2cc31283e0fa8467257f47bd47a7db1e51288ac" + }, + { + "value": 0, + "script_pubkey": "6a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf9" + } + ] + } + ] + }, "signatures": { "02785a891f323acd6cef0fc509bb14304410595914267c50467e51c87142acbb5e": [ "f1235066960adfc36b3b5b311f85d5c752eb1b3d9385a4cb5a8b6defab9b7c68", @@ -1171,7 +1409,44 @@ "round_is_done": false } }, - "completed_block": "01000000954944fab7bca1d0bd42a346a5d981abc7a64f2f010dc4f3e32ad796fc84bfdbd2c07127f31ca5e3f380c30d39fbd273557d473ff3721a61a99fba385d8a2eae49dbbea59316df66bbe4ed6f5d25bc370a39b4fffe4d6b439371b345b15f1782743b7c5e0040ffdd2d890954c1acb89784d787faa0eaaef0fea6903e2a7b743c313f1597c5c1c7bc70c2515a62bf80d192ebbbe22e61cce059261c582b2a32957e800370da0e01010000000100000000000000000000000000000000000000000000000000000000000000000100000003510101ffffffff0200f2052a010000001976a9143f2ab2cc31283e0fa8467257f47bd47a7db1e51288ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf900000000" + "completed_block": { + "header": { + "version": 1, + "prev_blockhash": "dbbf84fc96d72ae3f3c40d012f4fa6c7ab81d9a546a342bdd0a1bcb7fa444995", + "merkle_root": "ae2e8a5d38ba9fa9611a72f33f477d5573d2fb390dc380f3e3a51cf32771c0d2", + "im_merkle_root": "82175fb145b37193436b4dfeffb4390a37bc255d6fede4bb66df1693a5bedb49", + "time": 1585199988, + "xfield": "00", + "proof": { + "r_x": [255, 221, 45, 137, 9, 84, 193, 172, 184, 151, 132, 215, 135, 250, 160, 234, 174, 240, 254, 166, 144, 62, 42, 123, 116, 60, 49, 63, 21, 151, 197, 193], + "sigma": [199, 188, 112, 194, 81, 90, 98, 191, 128, 209, 146, 235, 187, 226, 46, 97, 204, 224, 89, 38, 28, 88, 43, 42, 50, 149, 126, 128, 3, 112, 218, 14] + } + }, + "txdata":[ + { + "version": 1, + "lock_time": 0, + "input": [ + { + "previous_output": "0000000000000000000000000000000000000000000000000000000000000000:1", + "script_sig": "510101", + "sequence": 4294967295, + "witness": [] + } + ], + "output": [ + { + "value": 5000000000, + "script_pubkey": "76a9143f2ab2cc31283e0fa8467257f47bd47a7db1e51288ac" + }, + { + "value": 0, + "script_pubkey": "6a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf9" + } + ] + } + ] + } } } } diff --git a/tests/resources/process_blockvss.json b/tests/resources/process_blockvss.json index b0ae597b1..b22601c5c 100644 --- a/tests/resources/process_blockvss.json +++ b/tests/resources/process_blockvss.json @@ -147,7 +147,7 @@ "block_key": "619a25871f039bd9eff17e9239c0f6e1e39ca33ee66bfae6893f1524a024eed7", "received": { "sender": "02ce7edc292d7b747fab2f23584bbafaffde5c8ff17cf689969614441e0527b900", - "block_hash": "f219d9de91faeeec8ea6e20b86fb8d10ec187023f3107c8975543dd67423ae96", + "block_hash": "96ae2374d63d5475897c10f3237018ec108dfb860be2a68eeceefa91ded919f2", "vss_for_positive": { "parameters": { "threshold": 1, @@ -256,7 +256,7 @@ "block_key": "619a25871f039bd9eff17e9239c0f6e1e39ca33ee66bfae6893f1524a024eed7", "received": { "sender": "03831a69b8009833ab5b0326012eaf489bfea35a7321b1ca15b11d88131423fafc", - "block_hash": "f219d9de91faeeec8ea6e20b86fb8d10ec187023f3107c8975543dd67423ae96", + "block_hash": "96ae2374d63d5475897c10f3237018ec108dfb860be2a68eeceefa91ded919f2", "vss_for_positive": { "parameters": { "threshold": 1, @@ -394,7 +394,7 @@ "block_key": "619a25871f039bd9eff17e9239c0f6e1e39ca33ee66bfae6893f1524a024eed7", "received": { "sender": "02ce7edc292d7b747fab2f23584bbafaffde5c8ff17cf689969614441e0527b900", - "block_hash": "f219d9de91faeeec8ea6e20b86fb8d10ec187023f3107c8975543dd67423ae96", + "block_hash": "96ae2374d63d5475897c10f3237018ec108dfb860be2a68eeceefa91ded919f2", "vss_for_positive": { "parameters": { "threshold": 1, @@ -540,7 +540,7 @@ "block_key": "619a25871f039bd9eff17e9239c0f6e1e39ca33ee66bfae6893f1524a024eed7", "received": { "sender": "02ce7edc292d7b747fab2f23584bbafaffde5c8ff17cf689969614441e0527b900", - "block_hash": "f219d9de91faeeec8ea6e20b86fb8d10ec187023f3107c8975543dd67423ae96", + "block_hash": "96ae2374d63d5475897c10f3237018ec108dfb860be2a68eeceefa91ded919f2", "vss_for_positive": { "parameters": { "threshold": 1, @@ -634,7 +634,7 @@ "block_key": "619a25871f039bd9eff17e9239c0f6e1e39ca33ee66bfae6893f1524a024eed7", "received": { "sender": "02ce7edc292d7b747fab2f23584bbafaffde5c8ff17cf689969614441e0527b900", - "block_hash": "f219d9de91faeeec8ea6e20b86fb8d10ec187023f3107c8975543dd67423ae96", + "block_hash": "96ae2374d63d5475897c10f3237018ec108dfb860be2a68eeceefa91ded919f2", "vss_for_positive": { "parameters": { "threshold": 1, From 86ea9d7b3b0677a3e0226caf6f9a643e7a6f1014 Mon Sep 17 00:00:00 2001 From: Hajime Yamaguchi Date: Tue, 9 Jun 2020 16:11:06 +0900 Subject: [PATCH 3/5] cargo fmt --- src/bin/tapyrus-signerd.rs | 4 +- src/cli/setup/aggregate.rs | 4 +- src/cli/setup/compute_sig.rs | 9 +-- src/cli/setup/create_block_vss.rs | 2 +- src/cli/setup/create_key.rs | 4 +- src/cli/setup/create_node_vss.rs | 2 +- src/cli/setup/mod.rs | 4 +- src/cli/setup/sign.rs | 6 +- src/command_args.rs | 2 +- src/crypto/vss.rs | 6 +- src/federation.rs | 4 +- src/key.rs | 4 +- src/lib.rs | 2 +- src/net.rs | 2 +- src/rpc.rs | 2 +- src/sign.rs | 3 +- .../process_blockparticipants.rs | 7 +- .../message_processor/process_blocksig.rs | 11 ++-- .../message_processor/process_blockvss.rs | 5 +- .../process_candidateblock.rs | 4 +- src/signer_node/mod.rs | 10 +-- src/signer_node/node_parameters.rs | 2 +- src/tests/helper/blocks.rs | 66 ++++++++++--------- src/tests/helper/keys.rs | 2 +- src/tests/helper/mod.rs | 2 +- src/tests/helper/rpc.rs | 2 +- 26 files changed, 91 insertions(+), 80 deletions(-) diff --git a/src/bin/tapyrus-signerd.rs b/src/bin/tapyrus-signerd.rs index 62ea39b76..b179d66c8 100644 --- a/src/bin/tapyrus-signerd.rs +++ b/src/bin/tapyrus-signerd.rs @@ -2,12 +2,12 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -extern crate tapyrus; extern crate clap; extern crate daemonize; extern crate env_logger; extern crate log; extern crate redis; +extern crate tapyrus; extern crate tapyrus_signer; use tapyrus::PublicKey; @@ -164,9 +164,9 @@ fn load_federations(pubkey: &PublicKey, path: &Path) -> Federations { #[cfg(test)] mod tests { use crate::{connect_rpc, connect_signer_network, load_federations}; - use tapyrus::PublicKey; use std::path::Path; use std::str::FromStr; + use tapyrus::PublicKey; use tapyrus_signer::command_args::{RedisConfig, RpcConfig}; #[test] diff --git a/src/cli/setup/aggregate.rs b/src/cli/setup/aggregate.rs index 498bdb7b5..14310b029 100644 --- a/src/cli/setup/aggregate.rs +++ b/src/cli/setup/aggregate.rs @@ -6,7 +6,6 @@ use crate::errors::Error; use crate::rpc::Rpc; use crate::sign::Sign; use crate::signer_node::NodeParameters; -use tapyrus::{PrivateKey, PublicKey}; use clap::{App, Arg, ArgMatches, SubCommand}; use curv::arithmetic::traits::Converter; use curv::cryptographic_primitives::secret_sharing::feldman_vss::ShamirSecretSharing; @@ -15,6 +14,7 @@ use curv::elliptic::curves::traits::ECScalar; use curv::FE; use std::fmt; use std::str::FromStr; +use tapyrus::{PrivateKey, PublicKey}; pub struct AggregateResponse { aggregated_public_key: PublicKey, @@ -100,10 +100,10 @@ impl<'a> AggregateCommand { mod tests { use super::*; - use tapyrus::PublicKey; use curv::elliptic::curves::traits::ECScalar; use curv::BigInt; use std::str::FromStr; + use tapyrus::PublicKey; #[test] fn test_aggregate_response() { diff --git a/src/cli/setup/compute_sig.rs b/src/cli/setup/compute_sig.rs index fa0779f68..d7e1c2561 100644 --- a/src/cli/setup/compute_sig.rs +++ b/src/cli/setup/compute_sig.rs @@ -11,9 +11,6 @@ use crate::rpc::Rpc; use crate::sign::Sign; use crate::signer_node::NodeParameters; -use tapyrus::{PrivateKey, PublicKey}; -use tapyrus::blockdata::block::Block; -use tapyrus::consensus::encode::{serialize, deserialize}; use clap::{App, Arg, ArgMatches, SubCommand}; use curv::cryptographic_primitives::secret_sharing::feldman_vss::ShamirSecretSharing; use curv::elliptic::curves::traits::{ECPoint, ECScalar}; @@ -21,6 +18,9 @@ use curv::{BigInt, FE, GE}; use std::collections::BTreeMap; use std::fmt; use std::str::FromStr; +use tapyrus::blockdata::block::Block; +use tapyrus::consensus::encode::{deserialize, serialize}; +use tapyrus::{PrivateKey, PublicKey}; pub struct ComputeSigResponse { block_with_signature: Block, @@ -169,7 +169,8 @@ impl<'a> ComputeSigCommand { let hash = block.header.signature_hash(); signature.verify(&hash, &priv_shared_keys.y)?; let sig_hex = Sign::format_signature(&signature); - let sig: tapyrus::util::signature::Signature = deserialize(&hex::decode(sig_hex).map_err(|_| Error::InvalidSig)?)?; + let sig: tapyrus::util::signature::Signature = + deserialize(&hex::decode(sig_hex).map_err(|_| Error::InvalidSig)?)?; block.header.proof = Some(sig); Ok(Box::new(ComputeSigResponse::new(block))) } diff --git a/src/cli/setup/create_block_vss.rs b/src/cli/setup/create_block_vss.rs index 9dd8b1d34..d20799b75 100644 --- a/src/cli/setup/create_block_vss.rs +++ b/src/cli/setup/create_block_vss.rs @@ -5,11 +5,11 @@ use crate::errors::Error; use crate::rpc::Rpc; use crate::signer_node::NodeParameters; -use tapyrus::{PrivateKey, PublicKey}; use clap::{App, Arg, ArgMatches, SubCommand}; use std::collections::BTreeMap; use std::fmt; use std::str::FromStr; +use tapyrus::{PrivateKey, PublicKey}; pub struct CreateBlockVssResponse { vss: BTreeMap, diff --git a/src/cli/setup/create_key.rs b/src/cli/setup/create_key.rs index 44708bf3e..4f9935837 100644 --- a/src/cli/setup/create_key.rs +++ b/src/cli/setup/create_key.rs @@ -1,9 +1,9 @@ use crate::cli::setup::traits::Response; use crate::errors::Error; use crate::key::generate_key_pair; -use tapyrus::{PrivateKey, PublicKey}; use clap::{App, ArgMatches, SubCommand}; use std::fmt; +use tapyrus::{PrivateKey, PublicKey}; pub struct CreateKeyResponse { private_key: PrivateKey, @@ -47,8 +47,8 @@ impl<'a> CreateKeyCommand { #[cfg(test)] mod test { use super::*; - use tapyrus::{PrivateKey, PublicKey}; use std::str::FromStr; + use tapyrus::{PrivateKey, PublicKey}; #[test] fn test_format() { diff --git a/src/cli/setup/create_node_vss.rs b/src/cli/setup/create_node_vss.rs index 8bced5256..6334cd11d 100644 --- a/src/cli/setup/create_node_vss.rs +++ b/src/cli/setup/create_node_vss.rs @@ -3,11 +3,11 @@ use crate::crypto::vss::{Commitment, Vss}; use crate::errors::Error; use crate::rpc::Rpc; use crate::signer_node::node_parameters::NodeParameters; -use tapyrus::{PrivateKey, PublicKey}; use clap::{App, Arg, ArgMatches, SubCommand}; use std::collections::BTreeMap; use std::fmt; use std::str::FromStr; +use tapyrus::{PrivateKey, PublicKey}; pub struct CreateNodeVssResponse { vss: BTreeMap, diff --git a/src/cli/setup/mod.rs b/src/cli/setup/mod.rs index dbc641156..e802b001b 100644 --- a/src/cli/setup/mod.rs +++ b/src/cli/setup/mod.rs @@ -3,10 +3,10 @@ use crate::net::SignerID; use crate::signer_node::BidirectionalSharedSecretMap; use crate::signer_node::SharedSecret; use crate::signer_node::SharedSecretMap; -use tapyrus::{PrivateKey, PublicKey}; use curv::cryptographic_primitives::secret_sharing::feldman_vss::{ ShamirSecretSharing, VerifiableSS, }; +use tapyrus::{PrivateKey, PublicKey}; pub mod aggregate; pub mod compute_sig; @@ -94,8 +94,8 @@ pub fn vss_to_bidirectional_shared_secret_map( #[cfg(test)] mod tests { use super::*; - use tapyrus::{PrivateKey, PublicKey}; use std::str::FromStr; + use tapyrus::{PrivateKey, PublicKey}; #[test] fn test_index_of() { diff --git a/src/cli/setup/sign.rs b/src/cli/setup/sign.rs index e16fa2ab2..fe4db8c9b 100644 --- a/src/cli/setup/sign.rs +++ b/src/cli/setup/sign.rs @@ -8,9 +8,6 @@ use crate::errors::Error; use crate::rpc::Rpc; use crate::signer_node::NodeParameters; -use tapyrus::{PrivateKey, PublicKey}; -use tapyrus::blockdata::block::Block; -use tapyrus::consensus::encode::deserialize; use clap::{App, Arg, ArgMatches, SubCommand}; use curv::arithmetic::traits::Converter; use curv::cryptographic_primitives::secret_sharing::feldman_vss::ShamirSecretSharing; @@ -18,6 +15,9 @@ use curv::elliptic::curves::traits::{ECPoint, ECScalar}; use curv::{BigInt, FE, GE}; use std::fmt; use std::str::FromStr; +use tapyrus::blockdata::block::Block; +use tapyrus::consensus::encode::deserialize; +use tapyrus::{PrivateKey, PublicKey}; pub struct SignResponse { local_sig: LocalSig, diff --git a/src/command_args.rs b/src/command_args.rs index 5df229c34..58bdb9632 100644 --- a/src/command_args.rs +++ b/src/command_args.rs @@ -5,11 +5,11 @@ use std::str::FromStr; use crate::signer_node::{ROUND_INTERVAL_DEFAULT_SECS, ROUND_LIMIT_DEFAULT_SECS}; -use tapyrus::{Address, PublicKey}; use clap::{App, Arg}; use log; use serde::Deserialize; use std::path::{Path, PathBuf}; +use tapyrus::{Address, PublicKey}; pub const OPTION_NAME_CONFIG: &str = "config"; diff --git a/src/crypto/vss.rs b/src/crypto/vss.rs index 46c96c75d..4c565ca36 100644 --- a/src/crypto/vss.rs +++ b/src/crypto/vss.rs @@ -12,9 +12,6 @@ use crate::signer_node::SharedSecretMap; use crate::signer_node::ToSharedSecretMap; use crate::signer_node::ToVerifiableSS; use crate::util::jacobi; -use tapyrus::consensus::encode::{self, *}; -use tapyrus::{PrivateKey, PublicKey}; -use tapyrus::blockdata::block::Block; use curv::arithmetic::traits::Converter; use curv::cryptographic_primitives::secret_sharing::feldman_vss::VerifiableSS; use curv::elliptic::curves::traits::ECScalar; @@ -25,6 +22,9 @@ use std::collections::BTreeMap; use std::fmt; use std::io; use std::str::FromStr; +use tapyrus::blockdata::block::Block; +use tapyrus::consensus::encode::{self, *}; +use tapyrus::{PrivateKey, PublicKey}; // | name | size | explaination | // | -------------------- | --------- | ------------------------------------------------------------------------------------------------- | diff --git a/src/federation.rs b/src/federation.rs index 3af541872..1f6f66e79 100644 --- a/src/federation.rs +++ b/src/federation.rs @@ -4,11 +4,11 @@ use crate::errors::Error; use crate::net::SignerID; use crate::sign::Sign; use crate::signer_node::{SharedSecret, SharedSecretMap}; -use tapyrus::PublicKey; use curv::cryptographic_primitives::secret_sharing::feldman_vss::{ ShamirSecretSharing, VerifiableSS, }; use std::collections::HashSet; +use tapyrus::PublicKey; #[derive(Debug, Clone)] pub struct Federations { @@ -306,11 +306,11 @@ mod tests { use crate::net::SignerID; use crate::tests::helper::keys::TEST_KEYS; use crate::tests::helper::node_vss::node_vss; - use tapyrus::PublicKey; use curv::arithmetic::traits::Converter; use curv::elliptic::curves::traits::ECScalar; use curv::BigInt; use std::str::FromStr; + use tapyrus::PublicKey; #[test] fn test_get_by_block_height() { diff --git a/src/key.rs b/src/key.rs index 7bbaeb939..d6984106a 100644 --- a/src/key.rs +++ b/src/key.rs @@ -1,7 +1,7 @@ -use tapyrus::network::constants::Network; -use tapyrus::{PrivateKey, PublicKey}; use secp256k1::rand::thread_rng; +use tapyrus::network::constants::Network; use tapyrus::secp256k1::Secp256k1; +use tapyrus::{PrivateKey, PublicKey}; pub fn generate_key_pair() -> (PrivateKey, PublicKey) { let s = Secp256k1::new(); diff --git a/src/lib.rs b/src/lib.rs index 8396b0828..25881bec9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,8 +2,8 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -extern crate tapyrus; extern crate secp256k1; +extern crate tapyrus; #[macro_use] extern crate log; extern crate base64; diff --git a/src/net.rs b/src/net.rs index 0230273c6..eeba912e8 100644 --- a/src/net.rs +++ b/src/net.rs @@ -4,7 +4,6 @@ use crate::errors; use crate::serialize::{ByteBufVisitor, HexStrVisitor}; -use tapyrus::PublicKey; use redis::{Client, Commands, ControlFlow, PubSubCommands, RedisError}; use serde::{Deserialize, Deserializer, Serialize, Serializer}; use std::cmp::Ordering; @@ -17,6 +16,7 @@ use std::sync::Arc; use std::thread; use std::thread::JoinHandle; use std::time::Duration; +use tapyrus::PublicKey; use curv::cryptographic_primitives::secret_sharing::feldman_vss::VerifiableSS; use curv::FE; diff --git a/src/rpc.rs b/src/rpc.rs index 3f4fc90f0..711a6eb33 100644 --- a/src/rpc.rs +++ b/src/rpc.rs @@ -2,10 +2,10 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -use tapyrus::Address; use log::Level::Trace; use log::{log_enabled, trace}; use serde::Deserialize; +use tapyrus::Address; use crate::errors::Error; use tapyrus::blockdata::block::Block; diff --git a/src/sign.rs b/src/sign.rs index 1bc02cf2d..a1849b698 100644 --- a/src/sign.rs +++ b/src/sign.rs @@ -76,8 +76,7 @@ impl Sign { priv_shared_keys: &SharedKeys, message: BlockSigHash, ) -> LocalSig { - let local_sig = - LocalSig::compute(&message[..], &eph_shared_keys, &priv_shared_keys); + let local_sig = LocalSig::compute(&message[..], &eph_shared_keys, &priv_shared_keys); local_sig } diff --git a/src/signer_node/message_processor/process_blockparticipants.rs b/src/signer_node/message_processor/process_blockparticipants.rs index 23c608fa9..94767e1e5 100644 --- a/src/signer_node/message_processor/process_blockparticipants.rs +++ b/src/signer_node/message_processor/process_blockparticipants.rs @@ -92,7 +92,12 @@ where } }; - broadcast_localsig(block.header.signature_hash(), &local_sig, conman, ¶ms.signer_id); + broadcast_localsig( + block.header.signature_hash(), + &local_sig, + conman, + ¶ms.signer_id, + ); create_next_state( sender_id, diff --git a/src/signer_node/message_processor/process_blocksig.rs b/src/signer_node/message_processor/process_blocksig.rs index 865195f71..f3e4034f8 100644 --- a/src/signer_node/message_processor/process_blocksig.rs +++ b/src/signer_node/message_processor/process_blocksig.rs @@ -8,14 +8,14 @@ use crate::signer_node::message_processor::get_valid_block; use crate::signer_node::node_state::builder::{Builder, Master}; use crate::signer_node::NodeParameters; use crate::signer_node::NodeState; -use tapyrus::PublicKey; -use tapyrus::blockdata::block::Block; -use tapyrus::consensus::encode::deserialize; use curv::FE; use derive_builder::Builder; use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; +use tapyrus::blockdata::block::Block; +use tapyrus::consensus::encode::deserialize; use tapyrus::hash_types::BlockSigHash; +use tapyrus::PublicKey; pub fn process_blocksig( sender_id: &SignerID, @@ -131,7 +131,6 @@ where let federation = params.get_federation_by_block_height(block_height); - let signature = match Vss::aggregate_and_verify_signature( candidate_block, new_signatures, @@ -196,7 +195,9 @@ where { let sig_hex = Sign::format_signature(sig); let mut new_block = block.clone(); - new_block.header.proof = Some(deserialize(&hex::decode(sig_hex).map_err(|_| Error::InvalidSig)?)?); + new_block.header.proof = Some(deserialize( + &hex::decode(sig_hex).map_err(|_| Error::InvalidSig)?, + )?); match rpc.submitblock(&new_block) { Ok(_) => Ok(new_block), Err(e) => Err(e), diff --git a/src/signer_node/message_processor/process_blockvss.rs b/src/signer_node/message_processor/process_blockvss.rs index 33ece87e2..f279e70d5 100644 --- a/src/signer_node/message_processor/process_blockvss.rs +++ b/src/signer_node/message_processor/process_blockvss.rs @@ -163,7 +163,10 @@ fn broadcast_blockparticipants( self_signer_id: &SignerID, ) { conman.broadcast_message(Message { - message_type: MessageType::Blockparticipants(block.header.signature_hash(), participants.clone()), + message_type: MessageType::Blockparticipants( + block.header.signature_hash(), + participants.clone(), + ), sender_id: self_signer_id.clone(), receiver_id: None, }); diff --git a/src/signer_node/message_processor/process_candidateblock.rs b/src/signer_node/message_processor/process_candidateblock.rs index 8aa9fa389..7250e7fcd 100644 --- a/src/signer_node/message_processor/process_candidateblock.rs +++ b/src/signer_node/message_processor/process_candidateblock.rs @@ -122,9 +122,9 @@ mod tests { use crate::tests::helper::node_state_builder::BuilderForTest; use crate::tests::helper::node_vss::node_vss; use crate::tests::helper::rpc::MockRpc; - use tapyrus::PublicKey; - use tapyrus::consensus::encode::deserialize; use std::str::FromStr; + use tapyrus::consensus::encode::deserialize; + use tapyrus::PublicKey; fn sender_id() -> SignerID { TEST_KEYS.signer_ids()[2] diff --git a/src/signer_node/mod.rs b/src/signer_node/mod.rs index 352c59d95..6bf1b46aa 100644 --- a/src/signer_node/mod.rs +++ b/src/signer_node/mod.rs @@ -543,9 +543,6 @@ mod tests { use crate::tests::helper::keys::TEST_KEYS; use crate::tests::helper::node_vss::node_vss; use crate::tests::helper::{address, enable_log}; - use tapyrus::PublicKey; - use tapyrus::blockdata::block::Block; - use tapyrus::consensus::encode::deserialize; use redis::ControlFlow; use std::collections::HashSet; use std::str::FromStr; @@ -554,6 +551,9 @@ mod tests { use std::thread; use std::thread::JoinHandle; use std::time::Duration; + use tapyrus::blockdata::block::Block; + use tapyrus::consensus::encode::deserialize; + use tapyrus::PublicKey; pub type SpyMethod = Box) -> () + Send + 'static>; @@ -787,10 +787,10 @@ mod tests { use crate::rpc::{GetBlockchainInfoResult, TapyrusApi}; use crate::signer_node::tests::create_node; use crate::signer_node::{BidirectionalSharedSecretMap, NodeState}; - use tapyrus::Address; - use tapyrus::blockdata::block::Block; use std::cell::Cell; use std::collections::HashSet; + use tapyrus::blockdata::block::Block; + use tapyrus::Address; struct MockRpc { pub results: [GetBlockchainInfoResult; 2], diff --git a/src/signer_node/node_parameters.rs b/src/signer_node/node_parameters.rs index bb2caa946..c28bea3b9 100644 --- a/src/signer_node/node_parameters.rs +++ b/src/signer_node/node_parameters.rs @@ -2,9 +2,9 @@ use crate::crypto::multi_party_schnorr::Parameters; use crate::federation::{Federation, Federations}; use crate::net::SignerID; use crate::rpc::TapyrusApi; -use tapyrus::{Address, PublicKey}; use std::convert::TryInto; use std::sync::Arc; +use tapyrus::{Address, PublicKey}; pub struct NodeParameters { pub rpc: std::sync::Arc, diff --git a/src/tests/helper/blocks.rs b/src/tests/helper/blocks.rs index ad2041a8a..cbdd0160a 100644 --- a/src/tests/helper/blocks.rs +++ b/src/tests/helper/blocks.rs @@ -9,14 +9,14 @@ pub fn get_block(index: u8) -> Block { 146, 147, 210, 142, 105, 133, 119, 45, 47, 25, 75, 133, 112, 7, 79, 233, 69, 167, 215, 96, 132, 19, 158, 148, 208, 190, 32, 64, 71, 79, 96, 189, 255, 240, 47, 231, 6, 230, 177, 165, 201, 103, 20, 170, 124, 253, 51, 113, 94, 190, 113, 177, 76, 137, 120, 230, - 165, 107, 85, 240, 52, 212, 5, 180, 11, 93, 0, 0, 1, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 3, 81, 1, 1, 255, 255, 255, 255, 2, 0, 242, 5, 42, 1, 0, 0, 0, 25, 118, 169, 20, - 207, 18, 219, 192, 75, 176, 222, 111, 182, 168, 122, 90, 235, 75, 46, 116, 201, 112, 6, - 178, 136, 172, 0, 0, 0, 0, 0, 0, 0, 0, 38, 106, 36, 170, 33, 169, 237, 226, 246, 28, - 63, 113, 209, 222, 253, 63, 169, 153, 223, 163, 105, 83, 117, 92, 105, 6, 137, 121, - 153, 98, 180, 139, 235, 216, 54, 151, 78, 140, 249, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 165, 107, 85, 240, 52, 212, 5, 180, 11, 93, 0, 0, 1, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 3, 81, 1, 1, 255, 255, 255, 255, 2, 0, 242, 5, 42, 1, 0, 0, 0, 25, 118, 169, + 20, 207, 18, 219, 192, 75, 176, 222, 111, 182, 168, 122, 90, 235, 75, 46, 116, 201, + 112, 6, 178, 136, 172, 0, 0, 0, 0, 0, 0, 0, 0, 38, 106, 36, 170, 33, 169, 237, 226, + 246, 28, 63, 113, 209, 222, 253, 63, 169, 153, 223, 163, 105, 83, 117, 92, 105, 6, 137, + 121, 153, 98, 180, 139, 235, 216, 54, 151, 78, 140, 249, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], 1 => vec![ 0, 0, 0, 32, 125, 4, 68, 194, 18, 166, 21, 58, 24, 227, 192, 57, 180, 106, 161, 164, @@ -24,14 +24,15 @@ pub fn get_block(index: u8) -> Block { 149, 219, 233, 225, 40, 174, 239, 186, 110, 126, 114, 158, 187, 133, 180, 115, 192, 174, 15, 52, 120, 17, 197, 223, 9, 18, 11, 111, 128, 226, 116, 203, 147, 145, 238, 46, 204, 30, 42, 229, 70, 9, 69, 230, 127, 105, 106, 119, 146, 166, 27, 106, 192, 105, 200, - 12, 76, 61, 91, 129, 237, 0, 150, 182, 11, 93, 0, 0, 1, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, - 0, 0, 0, 3, 82, 1, 1, 255, 255, 255, 255, 2, 0, 242, 5, 42, 1, 0, 0, 0, 25, 118, 169, - 20, 207, 18, 219, 192, 75, 176, 222, 111, 182, 168, 122, 90, 235, 75, 46, 116, 201, - 112, 6, 178, 136, 172, 0, 0, 0, 0, 0, 0, 0, 0, 38, 106, 36, 170, 33, 169, 237, 226, - 246, 28, 63, 113, 209, 222, 253, 63, 169, 153, 223, 163, 105, 83, 117, 92, 105, 6, 137, - 121, 153, 98, 180, 139, 235, 216, 54, 151, 78, 140, 249, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 12, 76, 61, 91, 129, 237, 0, 150, 182, 11, 93, 0, 0, 1, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 3, 82, 1, 1, 255, 255, 255, 255, 2, 0, 242, 5, 42, 1, 0, 0, 0, 25, 118, + 169, 20, 207, 18, 219, 192, 75, 176, 222, 111, 182, 168, 122, 90, 235, 75, 46, 116, + 201, 112, 6, 178, 136, 172, 0, 0, 0, 0, 0, 0, 0, 0, 38, 106, 36, 170, 33, 169, 237, + 226, 246, 28, 63, 113, 209, 222, 253, 63, 169, 153, 223, 163, 105, 83, 117, 92, 105, 6, + 137, 121, 153, 98, 180, 139, 235, 216, 54, 151, 78, 140, 249, 1, 32, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, ], 2 => vec![ 0, 0, 0, 32, 246, 215, 42, 109, 124, 164, 225, 28, 168, 113, 148, 148, 129, 243, 236, @@ -39,14 +40,15 @@ pub fn get_block(index: u8) -> Block { 118, 123, 237, 71, 125, 210, 251, 205, 126, 224, 44, 194, 68, 222, 67, 193, 39, 103, 35, 152, 193, 254, 92, 31, 49, 175, 51, 242, 97, 3, 255, 168, 205, 236, 137, 76, 249, 184, 71, 243, 0, 179, 67, 82, 232, 35, 12, 63, 53, 228, 59, 106, 81, 230, 100, 136, - 100, 29, 156, 198, 150, 131, 193, 182, 11, 93, 0, 0, 1, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, - 0, 0, 0, 3, 83, 1, 1, 255, 255, 255, 255, 2, 0, 242, 5, 42, 1, 0, 0, 0, 25, 118, 169, - 20, 207, 18, 219, 192, 75, 176, 222, 111, 182, 168, 122, 90, 235, 75, 46, 116, 201, - 112, 6, 178, 136, 172, 0, 0, 0, 0, 0, 0, 0, 0, 38, 106, 36, 170, 33, 169, 237, 226, - 246, 28, 63, 113, 209, 222, 253, 63, 169, 153, 223, 163, 105, 83, 117, 92, 105, 6, 137, - 121, 153, 98, 180, 139, 235, 216, 54, 151, 78, 140, 249, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 100, 29, 156, 198, 150, 131, 193, 182, 11, 93, 0, 0, 1, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 3, 83, 1, 1, 255, 255, 255, 255, 2, 0, 242, 5, 42, 1, 0, 0, 0, 25, 118, + 169, 20, 207, 18, 219, 192, 75, 176, 222, 111, 182, 168, 122, 90, 235, 75, 46, 116, + 201, 112, 6, 178, 136, 172, 0, 0, 0, 0, 0, 0, 0, 0, 38, 106, 36, 170, 33, 169, 237, + 226, 246, 28, 63, 113, 209, 222, 253, 63, 169, 153, 223, 163, 105, 83, 117, 92, 105, 6, + 137, 121, 153, 98, 180, 139, 235, 216, 54, 151, 78, 140, 249, 1, 32, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, ], 3 => vec![ 0, 0, 0, 32, 89, 172, 150, 189, 5, 79, 214, 69, 204, 103, 197, 170, 46, 142, 57, 28, @@ -54,14 +56,14 @@ pub fn get_block(index: u8) -> Block { 88, 231, 157, 73, 44, 201, 62, 243, 225, 165, 26, 140, 133, 175, 75, 60, 52, 135, 76, 193, 192, 4, 193, 41, 168, 243, 73, 241, 14, 127, 162, 167, 40, 6, 35, 189, 255, 133, 131, 145, 20, 84, 74, 66, 123, 86, 155, 212, 121, 122, 107, 108, 149, 234, 119, 182, - 13, 247, 238, 44, 147, 13, 183, 11, 93, 0, 0, 1, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 3, 84, 1, 1, 255, 255, 255, 255, 2, 0, 242, 5, 42, 1, 0, 0, 0, 25, 118, 169, 20, 207, - 18, 219, 192, 75, 176, 222, 111, 182, 168, 122, 90, 235, 75, 46, 116, 201, 112, 6, 178, - 136, 172, 0, 0, 0, 0, 0, 0, 0, 0, 38, 106, 36, 170, 33, 169, 237, 226, 246, 28, 63, - 113, 209, 222, 253, 63, 169, 153, 223, 163, 105, 83, 117, 92, 105, 6, 137, 121, 153, - 98, 180, 139, 235, 216, 54, 151, 78, 140, 249, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 13, 247, 238, 44, 147, 13, 183, 11, 93, 0, 0, 1, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 3, 84, 1, 1, 255, 255, 255, 255, 2, 0, 242, 5, 42, 1, 0, 0, 0, 25, 118, 169, 20, + 207, 18, 219, 192, 75, 176, 222, 111, 182, 168, 122, 90, 235, 75, 46, 116, 201, 112, 6, + 178, 136, 172, 0, 0, 0, 0, 0, 0, 0, 0, 38, 106, 36, 170, 33, 169, 237, 226, 246, 28, + 63, 113, 209, 222, 253, 63, 169, 153, 223, 163, 105, 83, 117, 92, 105, 6, 137, 121, + 153, 98, 180, 139, 235, 216, 54, 151, 78, 140, 249, 1, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ], _n => vec![ 0, 0, 0, 32, 64, 225, 51, 188, 105, 152, 192, 107, 30, 88, 253, 28, 117, 144, 193, 138, diff --git a/src/tests/helper/keys.rs b/src/tests/helper/keys.rs index 8e242b014..ea7161536 100644 --- a/src/tests/helper/keys.rs +++ b/src/tests/helper/keys.rs @@ -1,6 +1,6 @@ use crate::net::SignerID; -use tapyrus::{PrivateKey, PublicKey}; use std::str::FromStr; +use tapyrus::{PrivateKey, PublicKey}; pub struct TestKeys { pub key: [PrivateKey; 5], diff --git a/src/tests/helper/mod.rs b/src/tests/helper/mod.rs index edfa5ba4f..2208fd330 100644 --- a/src/tests/helper/mod.rs +++ b/src/tests/helper/mod.rs @@ -47,9 +47,9 @@ pub mod test_vectors { use crate::tests::helper::node_parameters_builder::NodeParametersBuilder; use crate::tests::helper::rpc::MockRpc; - use tapyrus::{PrivateKey, PublicKey}; use tapyrus::blockdata::block::Block; use tapyrus::consensus::encode::deserialize; + use tapyrus::{PrivateKey, PublicKey}; use curv::{FE, GE}; use serde_json::Value; diff --git a/src/tests/helper/rpc.rs b/src/tests/helper/rpc.rs index 5af1d4989..f43afdc27 100644 --- a/src/tests/helper/rpc.rs +++ b/src/tests/helper/rpc.rs @@ -1,9 +1,9 @@ use crate::errors::Error; use crate::rpc::{GetBlockchainInfoResult, TapyrusApi}; -use tapyrus::Address; use std::cell::RefCell; use std::collections::VecDeque; use tapyrus::blockdata::block::Block; +use tapyrus::Address; /// Mock for Rpc /// From f323a5eb3924e08cc334757f04461495a7ea4286 Mon Sep 17 00:00:00 2001 From: Hajime Yamaguchi Date: Tue, 9 Jun 2020 16:40:21 +0900 Subject: [PATCH 4/5] Update libraries --- Cargo.lock | 1065 ++++++++++++++++++++++++++-------------------------- 1 file changed, 531 insertions(+), 534 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 061d987ee..f72c9350f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,206 +2,242 @@ # It is not intended for manual editing. [[package]] name = "aho-corasick" -version = "0.7.6" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8716408b8bc624ed7f65d223ddb9ac2d044c0547b6fa4b0d554f3a9540496ada" dependencies = [ - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr", ] [[package]] name = "ansi_term" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8", ] [[package]] name = "arc-swap" -version = "0.4.4" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d25d88fd6b8041580a654f9d0c581a047baee2b3efee13275f2fc392fc75034" [[package]] name = "arrayref" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" [[package]] name = "arrayvec" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" [[package]] name = "ascii" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" [[package]] name = "atty" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "hermit-abi", + "libc", + "winapi 0.3.8", ] [[package]] name = "autocfg" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" + +[[package]] +name = "autocfg" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" [[package]] name = "az" -version = "0.3.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9bcd47d94aa4eb8c076b50fc61a75020789394ffb9bd74a180b3379130f6569" [[package]] name = "base64" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", + "safemem", ] [[package]] name = "base64" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", ] [[package]] name = "bitcoin_hashes" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b7a2e9773ee7ae7f2560f0426c938f57902dcb9e39321b0cbd608f47ed579a4" dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", ] [[package]] name = "bitcoin_hashes" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b375d62f341cef9cd9e77793ec8f1db3fc9ce2e4d57e982c8fe697a2c16af3b6" dependencies = [ - "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", ] [[package]] name = "bitflags" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" [[package]] name = "blake2b_simd" -version = "0.5.9" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a" dependencies = [ - "arrayref 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "constant_time_eq 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "arrayref", + "arrayvec", + "constant_time_eq", ] [[package]] name = "block-buffer" version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" dependencies = [ - "block-padding 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "block-padding", + "byte-tools", + "byteorder", + "generic-array", ] [[package]] name = "block-padding" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" dependencies = [ - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byte-tools", ] [[package]] name = "boxfnonce" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5988cb1d626264ac94100be357308f29ff7cbdd3b36bda27f450a4ee3f713426" [[package]] name = "byte-tools" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" [[package]] name = "byteorder" -version = "1.3.2" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" [[package]] name = "bytes" version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder", + "iovec", ] [[package]] name = "cc" version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dae9c4b8fedcae85592ba623c4fd08cfdab3e3b72d6df780c6ead964a69bfff" [[package]] name = "cfg-if" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" [[package]] name = "clap" -version = "2.33.0" +version = "2.33.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdfa80d47f954d53a35a64987ca1422f495b8d6483c0fe9f7117b36c2a792129" 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)", + "ansi_term", + "atty", + "bitflags", + "strsim 0.8.0", + "textwrap", + "unicode-width", + "vec_map", ] [[package]] name = "cloudabi" version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", ] [[package]] name = "combine" version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" dependencies = [ - "ascii 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)", - "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ascii", + "byteorder", + "either", + "memchr", + "unreachable", ] [[package]] name = "constant_time_eq" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "crossbeam-utils" -version = "0.6.6" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" 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)", + "autocfg 1.0.0", + "cfg-if", + "lazy_static", ] [[package]] @@ -209,633 +245,707 @@ name = "curv" version = "0.2.0" source = "git+https://github.com/KZen-networks/curv?tag=v0.2.0#1d858a07d9e95f65e08b1c21b65d2124b2bc352a" dependencies = [ - "blake2b_simd 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", - "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "merkle-sha3 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", - "rust-gmp 0.5.0 (git+https://github.com/KZen-networks/rust-gmp)", - "secp256k1 0.15.5 (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)", - "sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2b_simd", + "hex", + "merkle-sha3", + "rand 0.6.5", + "rust-crypto", + "rust-gmp", + "secp256k1 0.15.5", + "serde", + "serde_derive", + "sha3", + "zeroize", ] [[package]] name = "daemonize" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70c24513e34f53b640819f0ac9f705b673fcf4006d7aab8778bee72ebfc89815" dependencies = [ - "boxfnonce 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "boxfnonce", + "libc", ] [[package]] name = "darling" version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" dependencies = [ - "darling_core 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", - "darling_macro 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", + "darling_core", + "darling_macro", ] [[package]] name = "darling_core" version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" dependencies = [ - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "ident_case 1.0.1 (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)", - "strsim 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.9.3", + "syn", ] [[package]] name = "darling_macro" version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" dependencies = [ - "darling_core 0.10.2 (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)", + "darling_core", + "quote", + "syn", ] [[package]] name = "derive_builder" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2658621297f2cf68762a6f7dc0bb7e1ff2cfd6583daef8ee0fed6f7ec468ec0" dependencies = [ - "darling 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", - "derive_builder_core 0.9.0 (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)", + "darling", + "derive_builder_core", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "derive_builder_core" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2791ea3e372c8495c0bc2033991d76b512cd799d07491fbd6890124db9458bef" dependencies = [ - "darling 0.10.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)", - "syn 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)", + "darling", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "digest" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" dependencies = [ - "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array", ] [[package]] name = "either" version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" [[package]] name = "env_logger" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3" 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)", + "atty", + "humantime", + "log 0.4.8", + "regex", + "termcolor", ] [[package]] name = "fake-simd" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" [[package]] name = "fnv" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fuchsia-cprng" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" [[package]] name = "fuchsia-zircon" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" dependencies = [ - "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags", + "fuchsia-zircon-sys", ] [[package]] name = "fuchsia-zircon-sys" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" [[package]] name = "futures" version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef" [[package]] name = "gcc" version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "generic-array" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" dependencies = [ - "typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", + "typenum", ] [[package]] name = "gmp-mpfr-sys" -version = "1.2.2" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c04ccc68f16a0be7164b9de26e65aab8507596cc1969cec2e32fb1692b53b1b" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "winapi 0.3.8", ] [[package]] name = "hermit-abi" -version = "0.1.3" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91780f809e750b0a89f5544be56617ff6b1227ee485bcb06ebe10cdf89bd3b71" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] [[package]] name = "hex" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" [[package]] name = "http" -version = "0.1.19" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6ccf5ede3a895d8856620237b2f02972c1bbc78d2965ad7fe8838d4a0ed41f0" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes", + "fnv", + "itoa", ] [[package]] name = "httparse" version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" [[package]] name = "humantime" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" dependencies = [ - "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error", ] [[package]] name = "hyper" version = "0.10.16" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a0652d9a2609a968c14be1a9ea00bf4b1d64e2e1f53a1b51b6fff3a6e829273" dependencies = [ - "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", - "traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.9.3", + "httparse", + "language-tags", + "log 0.3.9", + "mime", + "num_cpus", + "time", + "traitobject", + "typeable", + "unicase", + "url", ] [[package]] name = "ident_case" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" dependencies = [ - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-normalization 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "matches", + "unicode-bidi", + "unicode-normalization", ] [[package]] name = "iovec" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", ] [[package]] name = "itoa" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e" [[package]] name = "jsonrpc" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436f3455a8a4e9c7b14de9f1206198ee5d0bdc2db1b560339d2141093d7dd389" dependencies = [ - "hyper 0.10.16 (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)", - "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper", + "serde", + "serde_derive", + "serde_json", ] [[package]] name = "keccak" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" [[package]] name = "kernel32-sys" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8", + "winapi-build", ] [[package]] name = "language-tags" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.66" +version = "0.2.71" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9457b06509d27052635f90d6466700c65095fdf75409b3fbdd903e988b886f49" [[package]] name = "lock_api" -version = "0.3.1" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" dependencies = [ - "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard", ] [[package]] name = "log" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" dependencies = [ - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8", ] [[package]] name = "log" version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", ] [[package]] name = "matches" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" [[package]] name = "maybe-uninit" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" [[package]] name = "memchr" -version = "2.2.1" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" [[package]] name = "merkle-sha3" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dd5529ec9d248c34cedc964ae0d9511c1efb700cd0121c61299cab95cea1868" dependencies = [ - "rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", + "rust-crypto", ] [[package]] name = "mime" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" dependencies = [ - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9", ] [[package]] name = "mio" -version = "0.6.19" +version = "0.6.22" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430" 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.66 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "fuchsia-zircon", + "fuchsia-zircon-sys", + "iovec", + "kernel32-sys", + "libc", + "log 0.4.8", + "miow", + "net2", + "slab", + "winapi 0.2.8", ] [[package]] name = "miow" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" dependencies = [ - "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys", + "net2", + "winapi 0.2.8", + "ws2_32-sys", ] [[package]] name = "net2" -version = "0.2.33" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ba7c918ac76704fb42afcbbb43891e72731f3dcca3bef2a19786297baf14af7" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "libc", + "winapi 0.3.8", ] [[package]] name = "num-traits" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 1.0.0", ] [[package]] name = "num_cpus" -version = "1.11.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" dependencies = [ - "hermit-abi 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "hermit-abi", + "libc", ] [[package]] name = "opaque-debug" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" [[package]] name = "parking_lot" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" dependencies = [ - "lock_api 0.3.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)", + "lock_api", + "parking_lot_core", + "rustc_version", ] [[package]] name = "parking_lot_core" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" dependencies = [ - "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if", + "cloudabi", + "libc", + "redox_syscall", + "rustc_version", + "smallvec 0.6.13", + "winapi 0.3.8", ] [[package]] name = "percent-encoding" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" [[package]] name = "proc-macro2" -version = "1.0.6" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "beae6331a816b1f65d04c45b078fd8e6c93e8071771f41b8163255bbd8d7c8fa" dependencies = [ - "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid", ] [[package]] name = "quick-error" -version = "1.2.2" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.2" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" dependencies = [ - "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", ] [[package]] name = "rand" version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "rand 0.4.6", ] [[package]] name = "rand" version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" dependencies = [ - "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "fuchsia-cprng", + "libc", + "rand_core 0.3.1", + "rdrand", + "winapi 0.3.8", ] [[package]] name = "rand" version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7", + "libc", + "rand_chacha", + "rand_core 0.4.2", + "rand_hc", + "rand_isaac", + "rand_jitter", + "rand_os", + "rand_pcg", + "rand_xorshift", + "winapi 0.3.8", ] [[package]] name = "rand_chacha" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7", + "rand_core 0.3.1", ] [[package]] name = "rand_core" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" dependencies = [ - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.4.2", ] [[package]] name = "rand_core" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" [[package]] name = "rand_hc" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "rand_isaac" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "rand_jitter" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "rand_core 0.4.2", + "winapi 0.3.8", ] [[package]] name = "rand_os" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" dependencies = [ - "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "cloudabi", + "fuchsia-cprng", + "libc", + "rand_core 0.4.2", + "rdrand", + "winapi 0.3.8", ] [[package]] name = "rand_pcg" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" dependencies = [ - "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "autocfg 0.1.7", + "rand_core 0.4.2", ] [[package]] name = "rand_xorshift" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "rdrand" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" dependencies = [ - "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.3.1", ] [[package]] name = "redis" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b543b95de413ac964ca609e91fd9fd58419312e69988fb197f3ff8770312a1af" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "combine 3.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-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-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes", + "combine", + "futures", + "sha1", + "tokio-codec", + "tokio-executor", + "tokio-io", + "tokio-tcp", + "url", ] [[package]] name = "redox_syscall" version = "0.1.56" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" [[package]] name = "regex" -version = "1.3.1" +version = "1.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3780fcf44b193bc4d09f36d2a3c87b251da4a046c87795a0d35f4f927ad8e6" 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)", + "aho-corasick", + "memchr", + "regex-syntax", + "thread_local", ] [[package]] name = "regex-syntax" -version = "0.6.12" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8" [[package]] name = "rug" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cfccfa888f22369385e0fc5f37a37fca05782fc653df5fe7de0934cbe66632" dependencies = [ - "az 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "gmp-mpfr-sys 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "az", + "gmp-mpfr-sys", + "libc", ] [[package]] name = "rust-crypto" version = "0.2.36" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f76d05d3993fd5f4af9434e8e436db163a12a9d40e1a58a726f27a01dfd12a2a" dependencies = [ - "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", - "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc", + "libc", + "rand 0.3.23", + "rustc-serialize", + "time", ] [[package]] @@ -843,187 +953,214 @@ name = "rust-gmp" version = "0.5.0" source = "git+https://github.com/KZen-networks/rust-gmp#a15e0ec20cef8aee83e91edc7759ec3042253afa" dependencies = [ - "libc 0.2.66 (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)", - "serde_derive 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)", + "libc", + "num-traits", + "serde", + "serde_derive", + "serde_json", ] [[package]] name = "rustc-serialize" version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" [[package]] name = "rustc_version" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" dependencies = [ - "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", + "semver", ] [[package]] name = "ryu" -version = "1.0.2" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" [[package]] name = "safemem" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" [[package]] name = "scopeguard" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "secp256k1" version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d311229f403d64002e9eed9964dfa5a0a0c1ac443344f7546bf48e916c6053a" dependencies = [ - "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", + "rand 0.6.5", + "serde", ] [[package]] name = "secp256k1" version = "0.17.2" -source = "git+https://github.com/rantan/rust-secp256k1?branch=add_negate_support#414c835d150e46f2fc69c02dac362239e1237bb7" +source = "git+https://github.com/rantan/rust-secp256k1?branch=add_negate_support#1742973a1fb0d4e3e65220d972cfacb7ce59f821" dependencies = [ - "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "secp256k1-sys 0.1.2 (git+https://github.com/rantan/rust-secp256k1?branch=add_negate_support)", - "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5", + "secp256k1-sys", + "serde", ] [[package]] name = "secp256k1-sys" version = "0.1.2" -source = "git+https://github.com/rantan/rust-secp256k1?branch=add_negate_support#414c835d150e46f2fc69c02dac362239e1237bb7" +source = "git+https://github.com/rantan/rust-secp256k1?branch=add_negate_support#1742973a1fb0d4e3e65220d972cfacb7ce59f821" dependencies = [ - "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", + "cc", ] [[package]] name = "semver" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" dependencies = [ - "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "semver-parser", ] [[package]] name = "semver-parser" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.102" +version = "1.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9124df5b40cbd380080b2cc6ab894c040a3070d995f5c9dc77e18c34a8ae37d" dependencies = [ - "serde_derive 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.102" +version = "1.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f2c3ac8e6ca1e9c80b8be1023940162bf81ae3cffbb1809474152f2ce1eb250" 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)", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "serde_json" -version = "1.0.41" +version = "1.0.53" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993948e75b189211a9b31a7528f950c6adc21f9720b6438ff80a7fa2f864cea2" 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)", + "itoa", + "ryu", + "serde", ] [[package]] name = "sha1" version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" [[package]] name = "sha2" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" dependencies = [ - "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "block-buffer", + "digest", + "fake-simd", + "opaque-debug", ] [[package]] name = "sha3" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf" dependencies = [ - "block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", - "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "keccak 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "block-buffer", + "byte-tools", + "digest", + "keccak", + "opaque-debug", ] [[package]] name = "signal-hook" -version = "0.1.12" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ff2db2112d6c761e12522c65f7768548bd6e8cd23d2a9dae162520626629bd6" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "signal-hook-registry", ] [[package]] name = "signal-hook-registry" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41" dependencies = [ - "arc-swap 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", + "arc-swap", + "libc", ] [[package]] name = "slab" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" [[package]] name = "smallvec" version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" dependencies = [ - "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "maybe-uninit", ] +[[package]] +name = "smallvec" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7cb5678e1615754284ec264d9bb5b4c27d2018577fd90ac0ceb578591ed5ee4" + [[package]] name = "strsim" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "strsim" version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" [[package]] name = "syn" -version = "1.0.8" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93a56fabc59dce20fe48b6c832cc249c713e7ed88fa28b0ee0a3bfcaae5fe4e2" 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)", + "proc-macro2", + "quote", + "unicode-xid", ] [[package]] @@ -1031,453 +1168,313 @@ name = "tapyrus" version = "0.2.0" source = "git+https://github.com/chaintope/rust-tapyrus?tag=v0.2.0#14bc8bbcccd68e99855f063c039aa70ca075e6f3" dependencies = [ - "bitcoin_hashes 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", - "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "rug 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "secp256k1 0.17.2 (git+https://github.com/rantan/rust-secp256k1?branch=add_negate_support)", - "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "bitcoin_hashes 0.7.6", + "hex", + "rug", + "secp256k1 0.17.2", + "serde", ] [[package]] name = "tapyrus_signer" version = "0.4.0" dependencies = [ - "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bitcoin_hashes 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", - "curv 0.2.0 (git+https://github.com/KZen-networks/curv?tag=v0.2.0)", - "daemonize 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "derive_builder 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "http 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", - "jsonrpc 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "redis 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "secp256k1 0.15.5 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 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)", - "sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "signal-hook 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "tapyrus 0.2.0 (git+https://github.com/chaintope/rust-tapyrus?tag=v0.2.0)", - "toml 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", + "base64 0.10.1", + "bitcoin_hashes 0.3.2", + "byteorder", + "clap", + "curv", + "daemonize", + "derive_builder", + "env_logger", + "hex", + "http", + "jsonrpc", + "lazy_static", + "libc", + "log 0.4.8", + "redis", + "secp256k1 0.15.5", + "serde", + "serde_derive", + "serde_json", + "sha2", + "signal-hook", + "tapyrus", + "toml", ] [[package]] name = "termcolor" -version = "1.0.5" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f" dependencies = [ - "wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util", ] [[package]] name = "textwrap" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" dependencies = [ - "unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width", ] [[package]] name = "thread_local" -version = "0.3.6" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static", ] [[package]] name = "time" -version = "0.1.42" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" dependencies = [ - "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "libc", + "winapi 0.3.8", ] [[package]] name = "tokio-codec" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes", + "futures", + "tokio-io", ] [[package]] name = "tokio-executor" -version = "0.1.8" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" dependencies = [ - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "crossbeam-utils", + "futures", ] [[package]] name = "tokio-io" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes", + "futures", + "log 0.4.8", ] [[package]] name = "tokio-reactor" -version = "0.1.10" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" dependencies = [ - "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.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)", + "crossbeam-utils", + "futures", + "lazy_static", + "log 0.4.8", + "mio", + "num_cpus", + "parking_lot", + "slab", + "tokio-executor", + "tokio-io", + "tokio-sync", ] [[package]] name = "tokio-sync" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" dependencies = [ - "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv", + "futures", ] [[package]] name = "tokio-tcp" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" dependencies = [ - "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", - "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.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)", + "bytes", + "futures", + "iovec", + "mio", + "tokio-io", + "tokio-reactor", ] [[package]] name = "toml" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a" dependencies = [ - "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", ] [[package]] name = "traitobject" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" [[package]] name = "typeable" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" [[package]] name = "typenum" -version = "1.11.2" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" [[package]] name = "unicase" version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" dependencies = [ - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check", ] [[package]] name = "unicode-bidi" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" dependencies = [ - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "matches", ] [[package]] name = "unicode-normalization" -version = "0.1.9" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5479532badd04e128284890390c1e876ef7a993d0570b3597ae43dfa1d59afa4" dependencies = [ - "smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.4.0", ] [[package]] name = "unicode-width" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479" [[package]] name = "unicode-xid" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" [[package]] name = "unreachable" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" dependencies = [ - "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "void", ] [[package]] name = "url" version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" dependencies = [ - "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "idna", + "matches", + "percent-encoding", ] [[package]] name = "vec_map" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version_check" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" [[package]] name = "void" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "winapi" version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" [[package]] name = "winapi" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" dependencies = [ - "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", ] [[package]] name = "winapi-build" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.2" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8", ] [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "wincolor" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", -] +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "ws2_32-sys" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" dependencies = [ - "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8", + "winapi-build", ] [[package]] name = "zeroize" version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" - -[metadata] -"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.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d7b8a9123b8027467bce0099fe556c628a53c8d83df0507084c31e9ba2e39aff" -"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 ascii 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" -"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 az 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "41a6b78289a33e09b00818ca8c90ab17c5dabb6e74f4b29a6de679c0e0886ade" -"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 bitcoin_hashes 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2b7a2e9773ee7ae7f2560f0426c938f57902dcb9e39321b0cbd608f47ed579a4" -"checksum bitcoin_hashes 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b375d62f341cef9cd9e77793ec8f1db3fc9ce2e4d57e982c8fe697a2c16af3b6" -"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" -"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 boxfnonce 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5988cb1d626264ac94100be357308f29ff7cbdd3b36bda27f450a4ee3f713426" -"checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" -"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" -"checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" -"checksum cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)" = "8dae9c4b8fedcae85592ba623c4fd08cfdab3e3b72d6df780c6ead964a69bfff" -"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" -"checksum clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9" -"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -"checksum combine 3.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" -"checksum constant_time_eq 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "995a44c877f9212528ccc74b21a232f66ad69001e40ede5bcee2ac9ef2657120" -"checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" -"checksum curv 0.2.0 (git+https://github.com/KZen-networks/curv?tag=v0.2.0)" = "" -"checksum daemonize 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "70c24513e34f53b640819f0ac9f705b673fcf4006d7aab8778bee72ebfc89815" -"checksum darling 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" -"checksum darling_core 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" -"checksum darling_macro 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" -"checksum derive_builder 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a2658621297f2cf68762a6f7dc0bb7e1ff2cfd6583daef8ee0fed6f7ec468ec0" -"checksum derive_builder_core 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2791ea3e372c8495c0bc2033991d76b512cd799d07491fbd6890124db9458bef" -"checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" -"checksum env_logger 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "aafcde04e90a5226a6443b7aabdb016ba2f8307c847d524724bd9b346dd1a2d3" -"checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" -"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 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 gmp-mpfr-sys 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "63d7f805cf9df081683d463f62864bda8b8e3ce7162a8e11cd0c49f27b8ce89b" -"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 http 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)" = "d7e06e336150b178206af098a055e3621e8336027e2b4d126bda0bc64824baaf" -"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.10.16 (registry+https://github.com/rust-lang/crates.io-index)" = "0a0652d9a2609a968c14be1a9ea00bf4b1d64e2e1f53a1b51b6fff3a6e829273" -"checksum ident_case 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" -"checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" -"checksum iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" -"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" -"checksum jsonrpc 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "436f3455a8a4e9c7b14de9f1206198ee5d0bdc2db1b560339d2141093d7dd389" -"checksum keccak 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" -"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -"checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" -"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -"checksum libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)" = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558" -"checksum lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8912e782533a93a167888781b836336a6ca5da6175c05944c86cf28c31104dc" -"checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" -"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" -"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" -"checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" -"checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" -"checksum merkle-sha3 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5dd5529ec9d248c34cedc964ae0d9511c1efb700cd0121c61299cab95cea1868" -"checksum mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0" -"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 net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" -"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 opaque-debug 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" -"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 percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" -"checksum proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9c9e470a8dc4aeae2dee2f335e8f533e2d4b347e1434e5671afc49b054592f27" -"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" -"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" -"checksum rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)" = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c" -"checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" -"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" -"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" -"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" -"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -"checksum rand_jitter 0.1.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 redis 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b543b95de413ac964ca609e91fd9fd58419312e69988fb197f3ff8770312a1af" -"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" -"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 rug 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "72315b6d9cb7d886fb99724330c47ceb29e923df657c31da3849fe88c0ded710" -"checksum rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)" = "f76d05d3993fd5f4af9434e8e436db163a12a9d40e1a58a726f27a01dfd12a2a" -"checksum rust-gmp 0.5.0 (git+https://github.com/KZen-networks/rust-gmp)" = "" -"checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" -"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -"checksum 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 scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" -"checksum secp256k1 0.15.5 (registry+https://github.com/rust-lang/crates.io-index)" = "4d311229f403d64002e9eed9964dfa5a0a0c1ac443344f7546bf48e916c6053a" -"checksum secp256k1 0.17.2 (git+https://github.com/rantan/rust-secp256k1?branch=add_negate_support)" = "" -"checksum secp256k1-sys 0.1.2 (git+https://github.com/rantan/rust-secp256k1?branch=add_negate_support)" = "" -"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 sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" -"checksum sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0" -"checksum sha3 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf" -"checksum signal-hook 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "7a9c17dd3ba2d36023a5c9472ecddeda07e27fd0b05436e8c1e0c8f178185652" -"checksum signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41" -"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" -"checksum smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" -"checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" -"checksum strsim 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" -"checksum syn 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "661641ea2aa15845cddeb97dad000d22070bb5c1fb456b96c1cba883ec691e92" -"checksum tapyrus 0.2.0 (git+https://github.com/chaintope/rust-tapyrus?tag=v0.2.0)" = "" -"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_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" -"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" -"checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" -"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 toml 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "01d1404644c8b12b16bfcffa4322403a91a451584daaaa7c28d3152e6cbc98cf" -"checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" -"checksum typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" -"checksum typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9" -"checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" -"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-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7007dbd421b92cc6e28410fe7362e2e0a2503394908f417b68ec8d1c364c4e20" -"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" -"checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" -"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" -"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 void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -"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 ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" -"checksum zeroize 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4090487fa66630f7b166fba2bbb525e247a5449f41c468cc1d98f8ae6ac03120" +checksum = "4090487fa66630f7b166fba2bbb525e247a5449f41c468cc1d98f8ae6ac03120" From 00f9404f0c559d4f521827d18613d92d2b9ffab8 Mon Sep 17 00:00:00 2001 From: Hajime Yamaguchi Date: Wed, 10 Jun 2020 12:14:34 +0900 Subject: [PATCH 5/5] Remove an unnecessary test --- src/cli/setup/compute_sig.rs | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/cli/setup/compute_sig.rs b/src/cli/setup/compute_sig.rs index d7e1c2561..a201114af 100644 --- a/src/cli/setup/compute_sig.rs +++ b/src/cli/setup/compute_sig.rs @@ -228,14 +228,6 @@ impl<'a> ComputeSigCommand { mod tests { use super::*; - #[test] - fn test_deserialize() { - let hex = "010000000000000000000000000000000000000000000000000000000000000000000000c0d6961ad2819f74eb6d085f04f9cceb0a9a6d5c153fd3c39fc47c3ca0bb548f85fbd09a5f7d8ac4c9552e52931ef6672984f64e52ad6d05d1cdb18907da8527db317c5e012103addb2555f37abf8f28f11f498bec7bd1460e7243c1813847c49a7ae326a97d1c00010100000001000000000000000000000000000000000000000000000000000000000000000000000000222103addb2555f37abf8f28f11f498bec7bd1460e7243c1813847c49a7ae326a97d1cffffffff0100f2052a010000001976a914a15f16ea2ba840d178e4c19781abca5f4fb1b4c288ac00000000"; - let vec = hex::decode(hex).unwrap(); - let block = deserialize::(&vec); - assert!(block.is_ok()); - } - #[test] fn test_execute_success() { let matches = ComputeSigCommand::args().get_matches_from(vec![