diff --git a/Cargo.lock b/Cargo.lock index 10a6e8510..eb82b87b9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1136,12 +1136,13 @@ dependencies = [ "criterion", "either", "ethereum-types", + "hex-literal", "keccak-hash", "log", "memmap", "parking_lot 0.10.0", "primal", - "rustc-hex 1.0.0", + "rustc-hex 2.1.0", "serde_json", "static_assertions", "tempdir", @@ -1293,7 +1294,7 @@ dependencies = [ "rlp", "rlp-derive", "rlp_compress", - "rustc-hex 1.0.0", + "rustc-hex 2.1.0", "tempdir", "triehash-ethereum", ] @@ -1453,7 +1454,7 @@ dependencies = [ "price-info", "registrar", "rlp", - "rustc-hex 1.0.0", + "rustc-hex 2.1.0", "serde", "serde_derive", "serde_json", @@ -1492,6 +1493,7 @@ dependencies = [ "ethcore-io", "ethcore-network", "ethereum-types", + "hex-literal", "igd", "ipnetwork", "keccak-hash", @@ -1507,7 +1509,6 @@ dependencies = [ "parking_lot 0.10.0", "rand 0.7.2", "rlp", - "rustc-hex 1.0.0", "serde", "serde_json", "slab 0.2.0", @@ -1551,7 +1552,7 @@ dependencies = [ "registrar", "rlp", "rlp-derive", - "rustc-hex 1.0.0", + "rustc-hex 2.1.0", "serde", "serde_derive", "serde_json", @@ -1636,7 +1637,7 @@ dependencies = [ "rand 0.7.2", "rand_xorshift 0.2.0", "rlp", - "rustc-hex 1.0.0", + "rustc-hex 2.1.0", "snapshot", "spec", "trace-time", @@ -1677,7 +1678,7 @@ version = "0.1.0" dependencies = [ "ethereum-types", "maplit", - "rustc-hex 1.0.0", + "rustc-hex 2.1.0", "serde", "serde_json", ] @@ -1704,7 +1705,7 @@ dependencies = [ "panic_hook", "parity-crypto", "parity-wordlist", - "rustc-hex 1.0.0", + "rustc-hex 2.1.0", "serde", "serde_derive", "threadpool", @@ -1724,7 +1725,7 @@ dependencies = [ "parity-wordlist", "parking_lot 0.10.0", "rand 0.7.2", - "rustc-hex 1.0.0", + "rustc-hex 2.1.0", "serde", "serde_derive", "serde_json", @@ -1747,7 +1748,7 @@ dependencies = [ "panic_hook", "parity-crypto", "parking_lot 0.10.0", - "rustc-hex 1.0.0", + "rustc-hex 2.1.0", "serde", "serde_derive", "tempdir", @@ -1768,7 +1769,6 @@ dependencies = [ "parity-bytes", "parity-util-mem", "parking_lot 0.10.0", - "rustc-hex 1.0.0", "vm", ] @@ -1785,10 +1785,11 @@ dependencies = [ "ethereum-types", "ethjson", "evm", + "hex-literal", "panic_hook", "parity-bytes", "pod", - "rustc-hex 1.0.0", + "rustc-hex 2.1.0", "serde", "serde_json", "spec", @@ -1809,6 +1810,7 @@ dependencies = [ "ethereum-types", "evm", "hash-db", + "hex-literal", "keccak-hash", "keccak-hasher 0.1.1", "kvdb", @@ -1818,7 +1820,6 @@ dependencies = [ "parity-crypto", "patricia-trie-ethereum", "pod", - "rustc-hex 1.0.0", "spec", "trace", "trie-db", @@ -2770,6 +2771,7 @@ dependencies = [ "ethereum-types", "ethjson", "evm", + "hex-literal", "keccak-hash", "log", "lru-cache", @@ -2777,7 +2779,6 @@ dependencies = [ "parity-crypto", "parking_lot 0.10.0", "rlp", - "rustc-hex 1.0.0", "spec", "state-db", "tempdir", @@ -3298,7 +3299,7 @@ dependencies = [ "registrar", "rlp", "rpassword", - "rustc-hex 1.0.0", + "rustc-hex 2.1.0", "rustc_version", "semver", "serde", @@ -3336,7 +3337,7 @@ dependencies = [ "parking_lot 0.10.0", "rand 0.7.2", "registrar", - "rustc-hex 1.0.0", + "rustc-hex 2.1.0", ] [[package]] @@ -3431,7 +3432,7 @@ dependencies = [ "rand 0.7.2", "rand_xorshift 0.2.0", "rlp", - "rustc-hex 1.0.0", + "rustc-hex 2.1.0", "semver", "serde", "serde_derive", @@ -3787,7 +3788,7 @@ dependencies = [ "parity-bytes", "patricia-trie-ethereum", "rlp", - "rustc-hex 1.0.0", + "rustc-hex 2.1.0", "serde", "trie-db", "triehash-ethereum", @@ -3926,7 +3927,7 @@ dependencies = [ "env_logger 0.5.13", "ethereum-types", "ethjson", - "rustc-hex 1.0.0", + "rustc-hex 2.1.0", "serde", "serde_derive", "serde_json", @@ -5595,7 +5596,7 @@ dependencies = [ "parity-util-mem", "parking_lot 0.10.0", "rlp", - "rustc-hex 1.0.0", + "rustc-hex 2.1.0", "spec", "triehash-ethereum", "unexpected", diff --git a/Cargo.toml b/Cargo.toml index 859cb3980..0c773ef40 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -66,7 +66,7 @@ regex = "1.0" registrar = { path = "util/registrar" } rlp = "0.4.0" rpassword = "1.0" -rustc-hex = "1.0" +rustc-hex = "2.1.0" semver = "0.9" serde = "1.0" serde_derive = "1.0" diff --git a/accounts/ethkey/cli/Cargo.toml b/accounts/ethkey/cli/Cargo.toml index 5dd8c4274..ca7f1e725 100644 --- a/accounts/ethkey/cli/Cargo.toml +++ b/accounts/ethkey/cli/Cargo.toml @@ -11,7 +11,7 @@ ethkey = { path = "../" } panic_hook = { path = "../../../util/panic-hook" } parity-crypto = { version = "0.5.0", features = ["publickey"] } parity-wordlist= "1.3.1" -rustc-hex = "1.0" +rustc-hex = "2.1.0" serde = "1.0" serde_derive = "1.0" threadpool = "1.7" diff --git a/accounts/ethkey/cli/src/main.rs b/accounts/ethkey/cli/src/main.rs index 3e54ca485..389e265eb 100644 --- a/accounts/ethkey/cli/src/main.rs +++ b/accounts/ethkey/cli/src/main.rs @@ -218,7 +218,7 @@ fn execute(command: I) -> Result where I: IntoIterator = args.arg_prefix.from_hex()?; let brain = args.flag_brain; in_threads(move || { let iterations = 1024; diff --git a/accounts/ethstore/Cargo.toml b/accounts/ethstore/Cargo.toml index 67beee718..9ebdaabca 100644 --- a/accounts/ethstore/Cargo.toml +++ b/accounts/ethstore/Cargo.toml @@ -12,7 +12,7 @@ ethkey = { path = "../ethkey" } serde = "1.0" serde_json = "1.0" serde_derive = "1.0" -rustc-hex = "1.0" +rustc-hex = "2.1.0" tiny-keccak = "1.4" time = "0.1.34" parking_lot = "0.10.0" diff --git a/accounts/ethstore/cli/Cargo.toml b/accounts/ethstore/cli/Cargo.toml index 7de7d729e..4d48900c3 100644 --- a/accounts/ethstore/cli/Cargo.toml +++ b/accounts/ethstore/cli/Cargo.toml @@ -8,7 +8,7 @@ authors = ["Parity Technologies "] docopt = "1.0" env_logger = "0.5" num_cpus = "1.6" -rustc-hex = "1.0" +rustc-hex = "2.1.0" serde = "1.0" serde_derive = "1.0" parking_lot = "0.10.0" diff --git a/accounts/ethstore/src/json/bytes.rs b/accounts/ethstore/src/json/bytes.rs index 0cb00c8d3..1900a1381 100644 --- a/accounts/ethstore/src/json/bytes.rs +++ b/accounts/ethstore/src/json/bytes.rs @@ -43,7 +43,7 @@ impl<'a> Deserialize<'a> for Bytes { impl Serialize for Bytes { fn serialize(&self, serializer: S) -> Result where S: Serializer { - serializer.serialize_str(&self.0.to_hex()) + serializer.serialize_str(&self.0.to_hex::()) } } diff --git a/accounts/ethstore/src/json/hash.rs b/accounts/ethstore/src/json/hash.rs index 1a699367a..16d4ec63b 100644 --- a/accounts/ethstore/src/json/hash.rs +++ b/accounts/ethstore/src/json/hash.rs @@ -49,8 +49,9 @@ macro_rules! impl_hash { impl Serialize for $name { fn serialize(&self, serializer: S) -> Result - where S: Serializer { - serializer.serialize_str(&self.0.to_hex()) + where S: Serializer + { + serializer.serialize_str(&self.0.to_hex::()) } } @@ -83,7 +84,7 @@ macro_rules! impl_hash { type Err = Error; fn from_str(value: &str) -> Result { - match value.from_hex() { + match value.from_hex::>() { Ok(ref hex) if hex.len() == $size => { let mut hash = [0u8; $size]; hash.clone_from_slice(hex); diff --git a/accounts/ethstore/src/json/id.rs b/accounts/ethstore/src/json/id.rs index 0da0a3b83..92e31cf00 100644 --- a/accounts/ethstore/src/json/id.rs +++ b/accounts/ethstore/src/json/id.rs @@ -15,6 +15,7 @@ // along with Parity Ethereum. If not, see . //! Universaly unique identifier. + use std::{fmt, str}; use rustc_hex::{ToHex, FromHex}; use serde::{Deserialize, Serialize, Deserializer, Serializer}; @@ -62,7 +63,7 @@ impl fmt::Display for Uuid { } fn copy_into(from: &str, into: &mut [u8]) -> Result<(), Error> { - let from = from.from_hex().map_err(|_| Error::InvalidUuid)?; + let from: Vec = from.from_hex().map_err(|_| Error::InvalidUuid)?; if from.len() != into.len() { return Err(Error::InvalidUuid); diff --git a/ethash/Cargo.toml b/ethash/Cargo.toml index 599777b9a..abf932f2d 100644 --- a/ethash/Cargo.toml +++ b/ethash/Cargo.toml @@ -17,7 +17,8 @@ static_assertions = "1.1.0" [dev-dependencies] criterion = "0.3" -rustc-hex = "1.0" +hex-literal = "0.2.1" +rustc-hex = "2.1.0" serde_json = "1.0" tempdir = "0.3" diff --git a/ethash/benches/progpow.rs b/ethash/benches/progpow.rs index fdf8415f1..e84bc602a 100644 --- a/ethash/benches/progpow.rs +++ b/ethash/benches/progpow.rs @@ -1,15 +1,17 @@ #[macro_use] extern crate criterion; -extern crate ethash; -extern crate rustc_hex; -extern crate tempdir; + +#[macro_use] +extern crate hex_literal; + extern crate common_types; +extern crate ethash; +extern crate tempdir; use criterion::Criterion; use ethash::progpow; use tempdir::TempDir; -use rustc_hex::FromHex; use ethash::NodeCacheBuilder; use ethash::compute::light_compute; use common_types::engines::OptimizeFor; @@ -18,7 +20,7 @@ fn bench_hashimoto_light(c: &mut Criterion) { let builder = NodeCacheBuilder::new(OptimizeFor::Memory, u64::max_value()); let tempdir = TempDir::new("").unwrap(); let light = builder.light(&tempdir.path(), 1); - let h = FromHex::from_hex("c9149cc0386e689d789a1c2f3d5d169a61a6218ed30e74414dc736e442ef3d1f").unwrap(); + let h = hex!("c9149cc0386e689d789a1c2f3d5d169a61a6218ed30e74414dc736e442ef3d1f"); let mut hash = [0; 32]; hash.copy_from_slice(&h); @@ -32,7 +34,7 @@ fn bench_progpow_light(c: &mut Criterion) { let tempdir = TempDir::new("").unwrap(); let cache = builder.new_cache(tempdir.into_path(), 0); - let h = FromHex::from_hex("c9149cc0386e689d789a1c2f3d5d169a61a6218ed30e74414dc736e442ef3d1f").unwrap(); + let h = hex!("c9149cc0386e689d789a1c2f3d5d169a61a6218ed30e74414dc736e442ef3d1f"); let mut hash = [0; 32]; hash.copy_from_slice(&h); @@ -56,7 +58,7 @@ fn bench_progpow_optimal_light(c: &mut Criterion) { let cache = builder.new_cache(tempdir.into_path(), 0); let c_dag = progpow::generate_cdag(cache.as_ref()); - let h = FromHex::from_hex("c9149cc0386e689d789a1c2f3d5d169a61a6218ed30e74414dc736e442ef3d1f").unwrap(); + let h = hex!("c9149cc0386e689d789a1c2f3d5d169a61a6218ed30e74414dc736e442ef3d1f"); let mut hash = [0; 32]; hash.copy_from_slice(&h); diff --git a/ethash/src/lib.rs b/ethash/src/lib.rs index 8fc4510a4..cb83a0daa 100644 --- a/ethash/src/lib.rs +++ b/ethash/src/lib.rs @@ -26,6 +26,10 @@ extern crate log; #[macro_use] extern crate static_assertions; +#[cfg(test)] +#[macro_use] +extern crate hex_literal; + #[cfg(test)] extern crate rustc_hex; @@ -35,6 +39,7 @@ extern crate serde_json; #[cfg(test)] extern crate tempdir; + #[cfg(feature = "bench")] pub mod compute; #[cfg(not(feature = "bench"))] diff --git a/ethash/src/progpow.rs b/ethash/src/progpow.rs index 4c18c255a..b02892a4a 100644 --- a/ethash/src/progpow.rs +++ b/ethash/src/progpow.rs @@ -431,7 +431,7 @@ mod test { use super::*; fn h256(hex: &str) -> H256 { - let bytes = FromHex::from_hex(hex).unwrap(); + let bytes: Vec = FromHex::from_hex(hex).unwrap(); let mut res = [0; 32]; res.copy_from_slice(&bytes); res @@ -549,8 +549,8 @@ mod test { &c_dag, ); - let expected_digest = FromHex::from_hex("b3bad9ca6f7c566cf0377d1f8cce29d6516a96562c122d924626281ec948ef02").unwrap(); - let expected_result = FromHex::from_hex("f4ac202715ded4136e72887c39e63a4738331c57fd9eb79f6ec421c281aa8743").unwrap(); + let expected_digest = hex!("b3bad9ca6f7c566cf0377d1f8cce29d6516a96562c122d924626281ec948ef02"); + let expected_result = hex!("f4ac202715ded4136e72887c39e63a4738331c57fd9eb79f6ec421c281aa8743"); assert_eq!( digest.to_vec(), diff --git a/ethcore/blockchain/Cargo.toml b/ethcore/blockchain/Cargo.toml index e718c74d9..9531d3664 100644 --- a/ethcore/blockchain/Cargo.toml +++ b/ethcore/blockchain/Cargo.toml @@ -30,6 +30,6 @@ triehash-ethereum = { version = "0.2", path = "../../util/triehash-ethereum" } [dev-dependencies] env_logger = "0.5" parity-crypto = { version = "0.5.0", features = ["publickey"] } -rustc-hex = "1.0" +rustc-hex = "2.1.0" tempdir = "0.3" kvdb-memorydb = "0.4.0" diff --git a/ethcore/engines/validator-set/Cargo.toml b/ethcore/engines/validator-set/Cargo.toml index 671a87f0a..aa8e34c49 100644 --- a/ethcore/engines/validator-set/Cargo.toml +++ b/ethcore/engines/validator-set/Cargo.toml @@ -36,9 +36,9 @@ call-contract = { package = "ethcore-call-contract", path = "../../call-contract engine = { path = "../../engine", features = ["test-helpers"] } env_logger = "0.6.2" ethcore = { path = "../..", features = ["test-helpers"] } -parity-crypto = { version = "0.5.0", features = ["publickey"] } +rustc-hex = "2.1.0" keccak-hash = "0.4.0" -rustc-hex = "1.0" +parity-crypto = { version = "0.5.0", features = ["publickey"] } spec = { path = "../../spec" } [features] diff --git a/ethcore/evm/Cargo.toml b/ethcore/evm/Cargo.toml index d43be54b4..f4f8f2665 100644 --- a/ethcore/evm/Cargo.toml +++ b/ethcore/evm/Cargo.toml @@ -17,9 +17,8 @@ parking_lot = "0.10.0" memory-cache = { path = "../../util/memory-cache" } [dev-dependencies] -rustc-hex = "1.0" criterion = "0.3" -hex-literal = "0.2.0" +hex-literal = "0.2.1" [features] evm-debug = [] diff --git a/ethcore/evm/benches/basic.rs b/ethcore/evm/benches/basic.rs index ed3a5b22a..9a5ccec7b 100644 --- a/ethcore/evm/benches/basic.rs +++ b/ethcore/evm/benches/basic.rs @@ -18,26 +18,29 @@ #[macro_use] extern crate criterion; + +#[macro_use] +extern crate hex_literal; + extern crate bit_set; extern crate ethereum_types; -extern crate parking_lot; -extern crate parity_util_mem as mem; -extern crate vm; extern crate evm; extern crate keccak_hash as hash; extern crate memory_cache; extern crate parity_bytes as bytes; -extern crate rustc_hex; +extern crate parity_util_mem as mem; +extern crate parking_lot; +extern crate vm; -use criterion::{Criterion, Bencher, black_box}; use std::str::FromStr; use std::sync::Arc; + +use criterion::{Criterion, Bencher, black_box}; use bytes::Bytes; use ethereum_types::{U256, Address}; use vm::{ActionParams, Result, GasLeft, Ext}; use vm::tests::FakeExt; use evm::Factory; -use rustc_hex::FromHex; criterion_group!( basic, @@ -91,9 +94,7 @@ fn simple_loop_log0(gas: U256, b: &mut Bencher) { let mut ext = FakeExt::new(); let address = Address::from_str("0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6").unwrap(); - let code = black_box( - "62ffffff5b600190036000600fa0600357".from_hex().unwrap() - ); + let code = black_box(hex!("62ffffff5b600190036000600fa0600357").to_vec()); b.iter(|| { let mut params = ActionParams::default(); @@ -109,7 +110,7 @@ fn simple_loop_log0(gas: U256, b: &mut Bencher) { fn mem_gas_calculation_same_usize(b: &mut Criterion) { b.bench_function("mem_gas_calculation_same_usize", |b| { - mem_gas_calculation_same(U256::from(::std::usize::MAX), b); + mem_gas_calculation_same(U256::from(std::usize::MAX), b); }); } @@ -127,7 +128,7 @@ fn mem_gas_calculation_same(gas: U256, b: &mut Bencher) { b.iter(|| { let code = black_box( - "6110006001556001546000555b610fff805560016000540380600055600c57".from_hex().unwrap() + hex!("6110006001556001546000555b610fff805560016000540380600055600c57").to_vec() ); let mut params = ActionParams::default(); @@ -143,7 +144,7 @@ fn mem_gas_calculation_same(gas: U256, b: &mut Bencher) { fn mem_gas_calculation_increasing_usize(b: &mut Criterion) { b.bench_function("mem_gas_calculation_increasing_usize", |b| { - mem_gas_calculation_increasing(U256::from(::std::usize::MAX), b); + mem_gas_calculation_increasing(U256::from(std::usize::MAX), b); }); } @@ -161,7 +162,7 @@ fn mem_gas_calculation_increasing(gas: U256, b: &mut Bencher) { b.iter(|| { let code = black_box( - "6110006001556001546000555b610fff60005401805560016000540380600055600c57".from_hex().unwrap() + hex!("6110006001556001546000555b610fff60005401805560016000540380600055600c57").to_vec() ); let mut params = ActionParams::default(); @@ -184,7 +185,7 @@ fn blockhash_mulmod_small(b: &mut Criterion) { b.iter(|| { let code = black_box( - "6080604052348015600f57600080fd5b5060005a90505b60c881111560de5760017effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095060017effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095060017effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095060017effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095060017effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8009505a90506016565b506035806100ed6000396000f3fe6080604052600080fdfea165627a7a72305820bde4a0ac6d0fac28fc879244baf8a6a0eda514bc95fb7ecbcaaebf2556e2687c0029".from_hex().unwrap() + hex!("6080604052348015600f57600080fd5b5060005a90505b60c881111560de5760017effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095060017effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095060017effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095060017effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095060017effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8009505a90506016565b506035806100ed6000396000f3fe6080604052600080fdfea165627a7a72305820bde4a0ac6d0fac28fc879244baf8a6a0eda514bc95fb7ecbcaaebf2556e2687c0029").to_vec() ); let mut params = ActionParams::default(); @@ -208,7 +209,7 @@ fn blockhash_mulmod_large(b: &mut Criterion) { b.iter(|| { let code = black_box( - "608060405234801561001057600080fd5b5060005a90505b60c8811115610177577efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff17efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08009507efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff17efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08009507efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff17efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08009507efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff17efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08009507efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff17efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08009505a9050610017565b506035806101866000396000f3fe6080604052600080fdfea165627a7a72305820dcaec306f67bb96f3044fff25c9af2ec66f01d0954d0656964f046f42f2780670029".from_hex().unwrap() + hex!("608060405234801561001057600080fd5b5060005a90505b60c8811115610177577efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff17efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08009507efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff17efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08009507efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff17efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08009507efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff17efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08009507efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff17efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08009505a9050610017565b506035806101866000396000f3fe6080604052600080fdfea165627a7a72305820dcaec306f67bb96f3044fff25c9af2ec66f01d0954d0656964f046f42f2780670029").to_vec() ); let mut params = ActionParams::default(); @@ -248,56 +249,56 @@ fn run_code(b: &mut Bencher, code: Bytes) { /// Compute mulmod(U256::MAX, U256::MAX, 1) 500 times. fn mulmod1_500(b: &mut Criterion) { b.bench_function("mulmod modulo 1, 500 times", |b| { - run_code(b, "6101f45b6001900360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095080600357".from_hex().unwrap()); + run_code(b, hex!("6101f45b6001900360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095080600357").to_vec()); }); } /// Compute mulmod(U256::MAX, U256::MAX, 1) 1000 times. fn mulmod1_1000(b: &mut Criterion) { b.bench_function("mulmod modulo 1, 1000 times", |b| { - run_code(b, "6103e85b6001900360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095080600357".from_hex().unwrap()); + run_code(b, hex!("6103e85b6001900360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095080600357").to_vec()); }); } /// Compute mulmod(U256::MAX, U256::MAX, 5) 500 times. fn mulmod5_500(b: &mut Criterion) { b.bench_function("mulmod modulo 5, 500 times", |b| { - run_code(b, "6101f45b6001900360057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095080600357".from_hex().unwrap()); + run_code(b, hex!("6101f45b6001900360057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095080600357").to_vec()); }); } /// Compute mulmod(U256::MAX, U256::MAX, 5) 1000 times. fn mulmod5_1000(b: &mut Criterion) { b.bench_function("mulmod modulo 5, 1000 times", |b| { - run_code(b, "6103e85b6001900360057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095080600357".from_hex().unwrap()); + run_code(b, hex!("6103e85b6001900360057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095080600357").to_vec()); }); } /// Compute mulmod(U256::MAX, U256::MAX, 11) 500 times. fn mulmod11_500(b: &mut Criterion) { b.bench_function("mulmod modulo 11, 500 times", |b| { - run_code(b, "6101f45b60019003600b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095080600357".from_hex().unwrap()); + run_code(b, hex!("6101f45b60019003600b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095080600357").to_vec()); }); } /// Compute mulmod(U256::MAX, U256::MAX, 11) 1000 times. fn mulmod11_1000(b: &mut Criterion) { b.bench_function("mulmod modulo 11, 1000 times", |b| { - run_code(b, "6103e85b60019003600b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095080600357".from_hex().unwrap()); + run_code(b, hex!("6103e85b60019003600b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095080600357").to_vec()); }); } /// Compute mulmod(U256::MAX, U256::MAX, 0x58bca9711298bc76cd73f173352c8bc1d1640f977c1ec9a849dfde6fdbfbd591) 500 times. fn mulmod_big_500(b: &mut Criterion) { b.bench_function("mulmod modulo random 256-bit number, 500 times", |b| { - run_code(b, "6101f45b600190037f58bca9711298bc76cd73f173352c8bc1d1640f977c1ec9a849dfde6fdbfbd5917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095080600357".from_hex().unwrap()); + run_code(b, hex!("6101f45b600190037f58bca9711298bc76cd73f173352c8bc1d1640f977c1ec9a849dfde6fdbfbd5917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095080600357").to_vec()); }); } /// Compute mulmod(U256::MAX, U256::MAX, 0x58bca9711298bc76cd73f173352c8bc1d1640f977c1ec9a849dfde6fdbfbd591) 1000 times. fn mulmod_big_1000(b: &mut Criterion) { b.bench_function("mulmod modulo random 256-bit number, 1000 times", |b| { - run_code(b, "6103e85b600190037f58bca9711298bc76cd73f173352c8bc1d1640f977c1ec9a849dfde6fdbfbd5917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095080600357".from_hex().unwrap()); + run_code(b, hex!("6103e85b600190037f58bca9711298bc76cd73f173352c8bc1d1640f977c1ec9a849dfde6fdbfbd5917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80095080600357").to_vec()); }); } @@ -321,97 +322,97 @@ fn mulmod_big_1000(b: &mut Criterion) { /// ``` fn mulmod500(b: &mut Criterion) { b.bench_function("mulmod randomly generated ints, 500 times", |b| { - run_code(b, "6101f45b600190037f5ed6db9489224124a1a4110ec8bec8b01369c8b549a4b8c4388a1796dc35a9377fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca095080600357".from_hex().unwrap()); + run_code(b, hex!("6101f45b600190037f5ed6db9489224124a1a4110ec8bec8b01369c8b549a4b8c4388a1796dc35a9377fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca095080600357").to_vec()); }); } /// Compute mulmod(a, b, c) for random 256-bit a, b and c. Iterate 1000 times. fn mulmod1000(b: &mut Criterion) { b.bench_function("mulmod randomly generated ints, 1000 times", |b| { - run_code(b, "6103e85b600190037f5ed6db9489224124a1a4110ec8bec8b01369c8b549a4b8c4388a1796dc35a9377fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca095080600357".from_hex().unwrap()); + run_code(b, hex!("6103e85b600190037f5ed6db9489224124a1a4110ec8bec8b01369c8b549a4b8c4388a1796dc35a9377fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca095080600357").to_vec()); }); } /// Compute addmod(a, b, c) for random 256-bit a, b and c. Iterate 500 times. fn addmod500(b: &mut Criterion) { b.bench_function("addmod randomly generated ints, 500 times", |b| { - run_code(b, "6101f45b600190037f5ed6db9489224124a1a4110ec8bec8b01369c8b549a4b8c4388a1796dc35a9377fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca085080600357".from_hex().unwrap()); + run_code(b, hex!("6101f45b600190037f5ed6db9489224124a1a4110ec8bec8b01369c8b549a4b8c4388a1796dc35a9377fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca085080600357").to_vec()); }); } /// Compute addmod(a, b, c) for random 256-bit a, b and c. Iterate 1000 times. fn addmod1000(b: &mut Criterion) { b.bench_function("addmod randomly generated ints, 1000 times", |b| { - run_code(b, "6103e85b600190037f5ed6db9489224124a1a4110ec8bec8b01369c8b549a4b8c4388a1796dc35a9377fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca085080600357".from_hex().unwrap()); + run_code(b, hex!("6103e85b600190037f5ed6db9489224124a1a4110ec8bec8b01369c8b549a4b8c4388a1796dc35a9377fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca085080600357").to_vec()); }); } /// Compute mul(a, b) for random 256-bit a and b. Iterate 500 times. fn mul500(b: &mut Criterion) { b.bench_function("mul randomly generated ints, 500 times", |b| { - run_code(b, "6101f45b600190037fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca025080600357".from_hex().unwrap()); + run_code(b, hex!("6101f45b600190037fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca025080600357").to_vec()); }); } /// Compute mul(a, b) for random 256-bit a and b. Iterate 1000 times. fn mul1000(b: &mut Criterion) { b.bench_function("mul randomly generated ints, 1000 times", |b| { - run_code(b, "6103e85b600190037fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca025080600357".from_hex().unwrap()); + run_code(b, hex!("6103e85b600190037fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca025080600357").to_vec()); }); } /// Compute div(a, b) for random 256-bit a and b. Iterate 500 times. fn div500(b: &mut Criterion) { b.bench_function("div randomly generated ints, 500 times", |b| { - run_code(b, "6101f45b600190037fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca045080600357".from_hex().unwrap()); + run_code(b, hex!("6101f45b600190037fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca045080600357").to_vec()); }); } /// Compute div(a, b) for random 256-bit a and b. Iterate 1000 times. fn div1000(b: &mut Criterion) { b.bench_function("div randomly generated ints, 1000 times", |b| { - run_code(b, "6103e85b600190037fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca045080600357".from_hex().unwrap()); + run_code(b, hex!("6103e85b600190037fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca045080600357").to_vec()); }); } /// Compute sdiv(a, b) for random 256-bit a and b. Iterate 500 times. fn sdiv500(b: &mut Criterion) { b.bench_function("sdiv randomly generated ints, 500 times", |b| { - run_code(b, "6101f45b600190037fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca055080600357".from_hex().unwrap()); + run_code(b, hex!("6101f45b600190037fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca055080600357").to_vec()); }); } /// Compute sdiv(a, b) for random 256-bit a and b. Iterate 1000 times. fn sdiv1000(b: &mut Criterion) { b.bench_function("sdiv randomly generated ints, 1000 times", |b| { - run_code(b, "6103e85b600190037fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca055080600357".from_hex().unwrap()); + run_code(b, hex!("6103e85b600190037fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca055080600357").to_vec()); }); } /// Compute mod(a, b) for random 256-bit a and b. Iterate 500 times. fn mod500(b: &mut Criterion) { b.bench_function("mod randomly generated ints, 500 times", |b| { - run_code(b, "6101f45b600190037fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca065080600357".from_hex().unwrap()); + run_code(b, hex!("6101f45b600190037fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca065080600357").to_vec()); }); } /// Compute mod(a, b) for random 256-bit a and b. Iterate 1000 times. fn mod1000(b: &mut Criterion) { b.bench_function("mod randomly generated ints, 1000 times", |b| { - run_code(b, "6103e85b600190037fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca065080600357".from_hex().unwrap()); + run_code(b, hex!("6103e85b600190037fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca065080600357").to_vec()); }); } /// Compute smod(a, b) for random 256-bit a and b. Iterate 500 times. fn smod500(b: &mut Criterion) { b.bench_function("smod randomly generated ints, 500 times", |b| { - run_code(b, "6101f45b600190037fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca075080600357".from_hex().unwrap()); + run_code(b, hex!("6101f45b600190037fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca075080600357").to_vec()); }); } /// Compute smod(a, b) for random 256-bit a and b. Iterate 1000 times. fn smod1000(b: &mut Criterion) { b.bench_function("smod randomly generated ints, 1000 times", |b| { - run_code(b, "6103e85b600190037fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca075080600357".from_hex().unwrap()); + run_code(b, hex!("6103e85b600190037fb8e0a2b6b1587398c28bf9e9d34ea24ba34df308eec2acedca363b2fce2c25db7fcc2de1f8ec6cc9a24ed2c48b856637f9e45f0a5feee21a196aa42a290ef454ca075080600357").to_vec()); }); } diff --git a/ethcore/evm/src/interpreter/mod.rs b/ethcore/evm/src/interpreter/mod.rs index 799566eeb..42b555ebb 100644 --- a/ethcore/evm/src/interpreter/mod.rs +++ b/ethcore/evm/src/interpreter/mod.rs @@ -31,7 +31,6 @@ use hash::keccak; use bytes::Bytes; use ethereum_types::{U256, U512, H256, Address, BigEndianHash}; - use vm::{ self, ActionParams, ParamsType, ActionValue, ActionType, MessageCallResult, ContractCreateResult, CreateContractAddress, ReturnData, GasLeft, Schedule, @@ -556,11 +555,11 @@ impl Interpreter { let contract_code = self.mem.read_slice(init_off, init_size); let create_result = ext.create( - &create_gas.as_u256(), - &endowment, - contract_code, - &self.params.code_version, - address_scheme, + &create_gas.as_u256(), + &endowment, + contract_code, + &self.params.code_version, + address_scheme, true, ); return match create_result { @@ -1221,7 +1220,6 @@ fn address_to_u256(value: Address) -> U256 { #[cfg(test)] mod tests { use std::sync::Arc; - use rustc_hex::FromHex; use factory::Factory; use vm::{self, Exec, ActionParams, ActionValue}; use vm::tests::{FakeExt, test_finalize}; @@ -1233,7 +1231,7 @@ mod tests { #[test] fn should_not_fail_on_tracing_mem() { - let code = "7feeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006000527faaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa6020526000620f120660406000601773945304eb96065b2a98b57a48a06ae28d285a71b56101f4f1600055".from_hex().unwrap(); + let code = hex!("7feeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006000527faaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa6020526000620f120660406000601773945304eb96065b2a98b57a48a06ae28d285a71b56101f4f1600055").to_vec(); let mut params = ActionParams::default(); params.address = Address::from_low_u64_be(5); @@ -1256,7 +1254,7 @@ mod tests { #[test] fn should_not_overflow_returndata() { - let code = "6001600160000360003e00".from_hex().unwrap(); + let code = hex!("6001600160000360003e00").to_vec(); let mut params = ActionParams::default(); params.address = Address::from_low_u64_be(5); diff --git a/ethcore/evm/src/interpreter/shared_cache.rs b/ethcore/evm/src/interpreter/shared_cache.rs index 7e6f2c3b5..6d6f0874b 100644 --- a/ethcore/evm/src/interpreter/shared_cache.rs +++ b/ethcore/evm/src/interpreter/shared_cache.rs @@ -101,9 +101,8 @@ impl Default for SharedCache { #[test] fn test_find_jump_destinations() { - use rustc_hex::FromHex; // given - let code = "7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b01600055".from_hex().unwrap(); + let code = hex!("7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b01600055"); // when let valid_jump_destinations = SharedCache::find_jump_destinations(&code); diff --git a/ethcore/evm/src/lib.rs b/ethcore/evm/src/lib.rs index 2a1fd3949..ea412f992 100644 --- a/ethcore/evm/src/lib.rs +++ b/ethcore/evm/src/lib.rs @@ -32,8 +32,7 @@ extern crate lazy_static; extern crate log; #[cfg(test)] -extern crate rustc_hex; -#[cfg(test)] +#[macro_use] extern crate hex_literal; pub mod evm; diff --git a/ethcore/executive-state/Cargo.toml b/ethcore/executive-state/Cargo.toml index 4d82d9b8e..e1b5500b4 100644 --- a/ethcore/executive-state/Cargo.toml +++ b/ethcore/executive-state/Cargo.toml @@ -28,7 +28,7 @@ parity-crypto = { version = "0.5.0", features = ["publickey"] } evm = { path = "../evm" } keccak-hash = "0.4.0" pod = { path = "../pod" } -rustc-hex = "1.0" +hex-literal = "0.2.1" spec = { path = "../spec" } trie-db = "0.20.0" ethtrie = { package = "patricia-trie-ethereum", path = "../../util/patricia-trie-ethereum" } diff --git a/ethcore/executive-state/src/lib.rs b/ethcore/executive-state/src/lib.rs index cf121c168..f41dba443 100644 --- a/ethcore/executive-state/src/lib.rs +++ b/ethcore/executive-state/src/lib.rs @@ -266,17 +266,13 @@ mod tests { use account_state::{Account, CleanupMode}; use common_types::transaction::*; + use ethereum_types::{H256, U256, Address, BigEndianHash}; + use ethcore::test_helpers::{get_temp_state, get_temp_state_db}; + use hex_literal::hex; use keccak_hash::{keccak, KECCAK_NULL_RLP}; use parity_crypto::publickey::Secret; - use ethereum_types::{H256, U256, Address, BigEndianHash}; - use ethcore::{ - test_helpers::{get_temp_state, get_temp_state_db} - }; - use ethtrie; use machine::Machine; - use pod::{self, PodAccount, PodState}; - use rustc_hex::FromHex; - use spec; + use pod::{PodAccount, PodState}; use ::trace::{FlatTrace, TraceError, trace}; use trie_db::{TrieFactory, TrieSpec}; use vm::EnvInfo; @@ -307,7 +303,7 @@ mod tests { gas: 100_000.into(), action: Action::Create, value: 100.into(), - data: FromHex::from_hex("601080600c6000396000f3006000355415600957005b60203560003555").unwrap(), + data: hex!("601080600c6000396000f3006000355415600957005b60203560003555").to_vec(), }.sign(&secret(), None); state.add_balance(&t.sender(), &(100.into()), CleanupMode::NoEmpty).unwrap(); @@ -366,7 +362,7 @@ mod tests { gas: 100_000.into(), action: Action::Create, value: 100.into(), - data: FromHex::from_hex("5b600056").unwrap(), + data: hex!("5b600056").to_vec(), }.sign(&secret(), None); state.add_balance(&t.sender(), &(100.into()), CleanupMode::NoEmpty).unwrap(); @@ -406,7 +402,7 @@ mod tests { data: vec![], }.sign(&secret(), None); - state.init_code(&Address::from_low_u64_be(0xa), FromHex::from_hex("6000").unwrap()).unwrap(); + state.init_code(&Address::from_low_u64_be(0xa), hex!("6000").to_vec()).unwrap(); state.add_balance(&t.sender(), &(100.into()), CleanupMode::NoEmpty).unwrap(); let result = state.apply(&info, &machine, &t, true).unwrap(); let expected_trace = vec![FlatTrace { @@ -530,7 +526,7 @@ mod tests { data: vec![], }.sign(&secret(), None); - state.init_code(&Address::from_low_u64_be(0xa), FromHex::from_hex("600060006000600060006001610be0f1").unwrap()).unwrap(); + state.init_code(&Address::from_low_u64_be(0xa), hex!("600060006000600060006001610be0f1").to_vec()).unwrap(); let result = state.apply(&info, &machine, &t, true).unwrap(); let expected_trace = vec![FlatTrace { @@ -572,8 +568,8 @@ mod tests { data: vec![], }.sign(&secret(), None); - state.init_code(&Address::from_low_u64_be(0xa), FromHex::from_hex("60006000600060006000600b611000f2").unwrap()).unwrap(); - state.init_code(&Address::from_low_u64_be(0xb), FromHex::from_hex("6000").unwrap()).unwrap(); + state.init_code(&Address::from_low_u64_be(0xa), hex!("60006000600060006000600b611000f2").to_vec()).unwrap(); + state.init_code(&Address::from_low_u64_be(0xb), hex!("6000").to_vec()).unwrap(); let result = state.apply(&info, &machine, &t, true).unwrap(); let expected_trace = vec![FlatTrace { @@ -631,8 +627,8 @@ mod tests { data: vec![], }.sign(&secret(), None); - state.init_code(&Address::from_low_u64_be(0xa), FromHex::from_hex("6000600060006000600b618000f4").unwrap()).unwrap(); - state.init_code(&Address::from_low_u64_be(0xb), FromHex::from_hex("60056000526001601ff3").unwrap()).unwrap(); + state.init_code(&Address::from_low_u64_be(0xa), hex!("6000600060006000600b618000f4").to_vec()).unwrap(); + state.init_code(&Address::from_low_u64_be(0xb), hex!("60056000526001601ff3").to_vec()).unwrap(); let result = state.apply(&info, &machine, &t, true).unwrap(); let expected_trace = vec![FlatTrace { @@ -689,7 +685,7 @@ mod tests { data: vec![], }.sign(&secret(), None); - state.init_code(&Address::from_low_u64_be(0xa), FromHex::from_hex("5b600056").unwrap()).unwrap(); + state.init_code(&Address::from_low_u64_be(0xa), hex!("5b600056").to_vec()).unwrap(); state.add_balance(&t.sender(), &(100.into()), CleanupMode::NoEmpty).unwrap(); let result = state.apply(&info, &machine, &t, true).unwrap(); let expected_trace = vec![FlatTrace { @@ -728,8 +724,8 @@ mod tests { data: vec![], }.sign(&secret(), None); - state.init_code(&Address::from_low_u64_be(0xa), FromHex::from_hex("60006000600060006000600b602b5a03f1").unwrap()).unwrap(); - state.init_code(&Address::from_low_u64_be(0xb), FromHex::from_hex("6000").unwrap()).unwrap(); + state.init_code(&Address::from_low_u64_be(0xa), hex!("60006000600060006000600b602b5a03f1").to_vec()).unwrap(); + state.init_code(&Address::from_low_u64_be(0xb), hex!("6000").to_vec()).unwrap(); state.add_balance(&t.sender(), &(100.into()), CleanupMode::NoEmpty).unwrap(); let result = state.apply(&info, &machine, &t, true).unwrap(); @@ -787,7 +783,7 @@ mod tests { data: vec![], }.sign(&secret(), None); - state.init_code(&Address::from_low_u64_be(0xa), FromHex::from_hex("60006000600060006045600b6000f1").unwrap()).unwrap(); + state.init_code(&Address::from_low_u64_be(0xa), hex!("60006000600060006045600b6000f1").to_vec()).unwrap(); state.add_balance(&t.sender(), &(100.into()), CleanupMode::NoEmpty).unwrap(); let result = state.apply(&info, &machine, &t, true).unwrap(); let expected_trace = vec![FlatTrace { @@ -841,7 +837,7 @@ mod tests { data: vec![], }.sign(&secret(), None); - state.init_code(&Address::from_low_u64_be(0xa), FromHex::from_hex("600060006000600060ff600b6000f1").unwrap()).unwrap(); // not enough funds. + state.init_code(&Address::from_low_u64_be(0xa), hex!("600060006000600060ff600b6000f1").to_vec()).unwrap(); // not enough funds. state.add_balance(&t.sender(), &(100.into()), CleanupMode::NoEmpty).unwrap(); let result = state.apply(&info, &machine, &t, true).unwrap(); let expected_trace = vec![FlatTrace { @@ -883,8 +879,8 @@ mod tests { data: vec![],//600480600b6000396000f35b600056 }.sign(&secret(), None); - state.init_code(&Address::from_low_u64_be(0xa), FromHex::from_hex("60006000600060006000600b602b5a03f1").unwrap()).unwrap(); - state.init_code(&Address::from_low_u64_be(0xb), FromHex::from_hex("5b600056").unwrap()).unwrap(); + state.init_code(&Address::from_low_u64_be(0xa), hex!("60006000600060006000600b602b5a03f1").to_vec()).unwrap(); + state.init_code(&Address::from_low_u64_be(0xb), hex!("5b600056").to_vec()).unwrap(); state.add_balance(&t.sender(), &(100.into()), CleanupMode::NoEmpty).unwrap(); let result = state.apply(&info, &machine, &t, true).unwrap(); let expected_trace = vec![FlatTrace { @@ -938,9 +934,9 @@ mod tests { data: vec![], }.sign(&secret(), None); - state.init_code(&Address::from_low_u64_be(0xa), FromHex::from_hex("60006000600060006000600b602b5a03f1").unwrap()).unwrap(); - state.init_code(&Address::from_low_u64_be(0xb), FromHex::from_hex("60006000600060006000600c602b5a03f1").unwrap()).unwrap(); - state.init_code(&Address::from_low_u64_be(0xc), FromHex::from_hex("6000").unwrap()).unwrap(); + state.init_code(&Address::from_low_u64_be(0xa), hex!("60006000600060006000600b602b5a03f1").to_vec()).unwrap(); + state.init_code(&Address::from_low_u64_be(0xb), hex!("60006000600060006000600c602b5a03f1").to_vec()).unwrap(); + state.init_code(&Address::from_low_u64_be(0xc), hex!("6000").to_vec()).unwrap(); state.add_balance(&t.sender(), &(100.into()), CleanupMode::NoEmpty).unwrap(); let result = state.apply(&info, &machine, &t, true).unwrap(); let expected_trace = vec![FlatTrace { @@ -1012,9 +1008,9 @@ mod tests { data: vec![],//600480600b6000396000f35b600056 }.sign(&secret(), None); - state.init_code(&Address::from_low_u64_be(0xa), FromHex::from_hex("60006000600060006000600b602b5a03f1").unwrap()).unwrap(); - state.init_code(&Address::from_low_u64_be(0xb), FromHex::from_hex("60006000600060006000600c602b5a03f1505b601256").unwrap()).unwrap(); - state.init_code(&Address::from_low_u64_be(0xc), FromHex::from_hex("6000").unwrap()).unwrap(); + state.init_code(&Address::from_low_u64_be(0xa), hex!("60006000600060006000600b602b5a03f1").to_vec()).unwrap(); + state.init_code(&Address::from_low_u64_be(0xb), hex!("60006000600060006000600c602b5a03f1505b601256").to_vec()).unwrap(); + state.init_code(&Address::from_low_u64_be(0xc), hex!("6000").to_vec()).unwrap(); state.add_balance(&t.sender(), &(100.into()), CleanupMode::NoEmpty).unwrap(); let result = state.apply(&info, &machine, &t, true).unwrap(); @@ -1084,7 +1080,7 @@ mod tests { data: vec![], }.sign(&secret(), None); - state.init_code(&Address::from_low_u64_be(0xa), FromHex::from_hex("73000000000000000000000000000000000000000bff").unwrap()).unwrap(); + state.init_code(&Address::from_low_u64_be(0xa), hex!("73000000000000000000000000000000000000000bff").to_vec()).unwrap(); state.add_balance(&Address::from_low_u64_be(0xa), &50.into(), CleanupMode::NoEmpty).unwrap(); state.add_balance(&t.sender(), &100.into(), CleanupMode::NoEmpty).unwrap(); let result = state.apply(&info, &machine, &t, true).unwrap(); diff --git a/ethcore/machine/Cargo.toml b/ethcore/machine/Cargo.toml index 77936fe8e..ba2d62d40 100644 --- a/ethcore/machine/Cargo.toml +++ b/ethcore/machine/Cargo.toml @@ -44,7 +44,7 @@ ethcore = { path = "../", features = ["test-helpers"] } ethcore-io = { path = "../../util/io" } ethjson = { path = "../../json" } parity-crypto = { version = "0.5.0", features = ["publickey"] } -rustc-hex = "1.0" +hex-literal = "0.2.1" spec = { path = "../spec" } tempdir = "0.3" trace = { path = "../trace" } diff --git a/ethcore/machine/src/executive.rs b/ethcore/machine/src/executive.rs index c15e00c3e..740075346 100644 --- a/ethcore/machine/src/executive.rs +++ b/ethcore/machine/src/executive.rs @@ -1223,16 +1223,15 @@ mod tests { collections::HashSet, }; - use rustc_hex::FromHex; - use ethereum_types::{H256, U256, U512, Address, BigEndianHash}; - use account_state::CleanupMode; use common_types::{ errors::ExecutionError, transaction::{Action, Transaction}, }; - use parity_crypto::publickey::{Generator, Random}; + use ethereum_types::{H256, U256, U512, Address, BigEndianHash}; use evm::{Factory, evm_test, evm_test_ignore}; + use hex_literal::hex; + use parity_crypto::publickey::{Generator, Random}; use vm::{ActionParams, ActionValue, EnvInfo, CreateContractAddress}; use ::trace::{ trace, @@ -1309,7 +1308,7 @@ mod tests { params.address = address.clone(); params.sender = sender.clone(); params.gas = U256::from(100_000); - params.code = Some(Arc::new("3331600055".from_hex().unwrap())); + params.code = Some(Arc::new(hex!("3331600055").to_vec())); params.value = ActionValue::Transfer(U256::from(0x7)); let mut state = get_temp_state_with_factory(factory); state.add_balance(&sender, &U256::from(0x100u64), CleanupMode::NoEmpty).unwrap(); @@ -1356,7 +1355,8 @@ mod tests { // 60 00 - push 0 // f3 - return - let code = "7c601080600c6000396000f3006000355415600957005b60203560003555600052601d60036017f0600055".from_hex().unwrap(); + let code = + hex!("7c601080600c6000396000f3006000355415600957005b60203560003555600052601d60036017f0600055").to_vec(); let sender = Address::from_str("cd1722f3947def4cf144679da39c4c32bdc35681").unwrap(); let address = contract_address(CreateContractAddress::FromSenderAndNonce, &sender, &U256::zero(), &[]).0; @@ -1399,7 +1399,7 @@ mod tests { // 61 ffff - push fff gas // f1 - CALL - let code = "60006000600060006001600361fffff1".from_hex().unwrap(); + let code = hex!("60006000600060006001600361fffff1").to_vec(); let sender = Address::from_str("4444444444444444444444444444444444444444").unwrap(); let address = Address::from_str("5555555555555555555555555555555555555555").unwrap(); @@ -1481,7 +1481,7 @@ mod tests { // 60 00 - push 0 // f3 - return - let code = "7c601080600c6000396000f3006000355415600957005b60203560003555600052601d60036017f0600055".from_hex().unwrap(); + let code = hex!("7c601080600c6000396000f3006000355415600957005b60203560003555600052601d60036017f0600055").to_vec(); let sender = Address::from_str("cd1722f3947def4cf144679da39c4c32bdc35681").unwrap(); let address = contract_address(CreateContractAddress::FromSenderAndNonce, &sender, &U256::zero(), &[]).0; @@ -1600,7 +1600,7 @@ mod tests { // 60 00 // fd - revert - let code = "6460016000fd6000526005601b6017f0600055".from_hex().unwrap(); + let code = hex!("6460016000fd6000526005601b6017f0600055").to_vec(); let sender = Address::from_str("cd1722f3947def4cf144679da39c4c32bdc35681").unwrap(); let address = contract_address(CreateContractAddress::FromSenderAndNonce, &sender, &U256::zero(), &[]).0; @@ -1673,7 +1673,7 @@ mod tests { // 60 00 - push 0 // f3 - return - let code = "601080600c6000396000f3006000355415600957005b60203560003555".from_hex().unwrap(); + let code = hex!("601080600c6000396000f3006000355415600957005b60203560003555").to_vec(); let sender = Address::from_str("cd1722f3947def4cf144679da39c4c32bdc35681").unwrap(); let address = contract_address(CreateContractAddress::FromSenderAndNonce, &sender, &U256::zero(), &[]).0; @@ -1762,7 +1762,7 @@ mod tests { // 60 00 - push 0 // f3 - return - let code = "7c601080600c6000396000f3006000355415600957005b60203560003555600052601d600360e6f0600055".from_hex().unwrap(); + let code = hex!("7c601080600c6000396000f3006000355415600957005b60203560003555600052601d600360e6f0600055").to_vec(); let sender = Address::from_str("cd1722f3947def4cf144679da39c4c32bdc35681").unwrap(); let address = contract_address(CreateContractAddress::FromSenderAndNonce, &sender, &U256::zero(), &[]).0; @@ -1815,7 +1815,7 @@ mod tests { // 60 00 - push 0 // f3 - return - let code = "7c601080600c6000396000f3006000355415600957005b60203560003555600052601d60036017f0".from_hex().unwrap(); + let code = hex!("7c601080600c6000396000f3006000355415600957005b60203560003555600052601d60036017f0").to_vec(); let sender = Address::from_str("cd1722f3947def4cf144679da39c4c32bdc35681").unwrap(); let address = contract_address(CreateContractAddress::FromSenderAndNonce, &sender, &U256::zero(), &[]).0; @@ -1858,7 +1858,7 @@ mod tests { // 58 - get PC // 55 - sstore - let code_a = "6000600060006000601873945304eb96065b2a98b57a48a06ae28d285a71b56103e8f15855".from_hex().unwrap(); + let code_a = hex!("6000600060006000601873945304eb96065b2a98b57a48a06ae28d285a71b56103e8f15855").to_vec(); // 60 00 - push 0 // 60 00 - push 0 @@ -1872,7 +1872,7 @@ mod tests { // 01 - add // 58 - get PC // 55 - sstore - let code_b = "60006000600060006017730f572e5295c57f15886f9b263e2f6d2d6c7b5ec66101f4f16001015855".from_hex().unwrap(); + let code_b = hex!("60006000600060006017730f572e5295c57f15886f9b263e2f6d2d6c7b5ec66101f4f16001015855").to_vec(); let address_a = Address::from_str("0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6").unwrap(); let address_b = Address::from_str("945304eb96065b2a98b57a48a06ae28d285a71b5" ).unwrap(); @@ -1933,7 +1933,7 @@ mod tests { // 60 01 - push 1 // 55 - sstore let sender = Address::from_str("cd1722f3947def4cf144679da39c4c32bdc35681").unwrap(); - let code = "600160005401600055600060006000600060003060e05a03f1600155".from_hex().unwrap(); + let code = hex!("600160005401600055600060006000600060003060e05a03f1600155").to_vec(); let address = contract_address(CreateContractAddress::FromSenderAndNonce, &sender, &U256::zero(), &[]).0; let mut params = ActionParams::default(); params.address = address.clone(); @@ -1964,7 +1964,7 @@ mod tests { let t = Transaction { action: Action::Create, value: U256::from(17), - data: "3331600055".from_hex().unwrap(), + data: hex!("3331600055").to_vec(), gas: U256::from(100_000), gas_price: U256::zero(), nonce: U256::zero() @@ -2003,7 +2003,7 @@ mod tests { let t = Transaction { action: Action::Create, value: U256::from(17), - data: "3331600055".from_hex().unwrap(), + data: hex!("3331600055").to_vec(), gas: U256::from(100_000), gas_price: U256::zero(), nonce: U256::one() @@ -2036,7 +2036,7 @@ mod tests { let t = Transaction { action: Action::Create, value: U256::from(17), - data: "3331600055".from_hex().unwrap(), + data: hex!("3331600055").to_vec(), gas: U256::from(80_001), gas_price: U256::zero(), nonce: U256::zero() @@ -2071,7 +2071,7 @@ mod tests { let t = Transaction { action: Action::Create, value: U256::from(18), - data: "3331600055".from_hex().unwrap(), + data: hex!("3331600055").to_vec(), gas: U256::from(100_000), gas_price: U256::one(), nonce: U256::zero() @@ -2100,7 +2100,7 @@ mod tests { evm_test!{test_keccak: test_keccak_int} fn test_keccak(factory: Factory) { - let code = "6064640fffffffff20600055".from_hex().unwrap(); + let code = hex!("6064640fffffffff20600055").to_vec(); let sender = Address::from_str("0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6").unwrap(); let address = contract_address(CreateContractAddress::FromSenderAndNonce, &sender, &U256::zero(), &[]).0; @@ -2136,8 +2136,8 @@ mod tests { let contract_address = Address::from_str("cd1722f3947def4cf144679da39c4c32bdc35681").unwrap(); let sender = Address::from_str("0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6").unwrap(); // EIP-140 test case - let code = "6c726576657274656420646174616000557f726576657274206d657373616765000000000000000000000000000000000000600052600e6000fd".from_hex().unwrap(); - let returns = "726576657274206d657373616765".from_hex().unwrap(); + let code = hex!("6c726576657274656420646174616000557f726576657274206d657373616765000000000000000000000000000000000000600052600e6000fd").to_vec(); + let returns = hex!("726576657274206d657373616765").to_vec(); let mut state = get_temp_state_with_factory(factory.clone()); state.add_balance(&sender, &U256::from_str("152d02c7e14af68000000").unwrap(), CleanupMode::NoEmpty).unwrap(); state.commit().unwrap(); @@ -2177,13 +2177,13 @@ mod tests { let mut state = get_temp_state_with_factory(factory.clone()); state.new_contract(&x1, U256::zero(), U256::from(1), U256::zero()).unwrap(); - state.init_code(&x1, "600160005560006000556001600055".from_hex().unwrap()).unwrap(); + state.init_code(&x1, hex!("600160005560006000556001600055").to_vec()).unwrap(); state.new_contract(&x2, U256::zero(), U256::from(1), U256::zero()).unwrap(); - state.init_code(&x2, "600060005560016000556000600055".from_hex().unwrap()).unwrap(); + state.init_code(&x2, hex!("600060005560016000556000600055").to_vec()).unwrap(); state.new_contract(&y1, U256::zero(), U256::from(1), U256::zero()).unwrap(); - state.init_code(&y1, "600060006000600061100062fffffff4".from_hex().unwrap()).unwrap(); + state.init_code(&y1, hex!("600060006000600061100062fffffff4").to_vec()).unwrap(); state.new_contract(&y2, U256::zero(), U256::from(1), U256::zero()).unwrap(); - state.init_code(&y2, "600060006000600061100162fffffff4".from_hex().unwrap()).unwrap(); + state.init_code(&y2, hex!("600060006000600061100162fffffff4").to_vec()).unwrap(); let info = EnvInfo::default(); let machine = new_constantinople_test_machine(); @@ -2194,7 +2194,7 @@ mod tests { let (FinalizationResult { gas_left, .. }, refund, gas) = { let gas = U256::from(0xffffffffffu64); let mut params = ActionParams::default(); - params.code = Some(Arc::new("6001600055600060006000600061200163fffffffff4".from_hex().unwrap())); + params.code = Some(Arc::new(hex!("6001600055600060006000600061200163fffffffff4").to_vec())); params.gas = gas; let mut substate = Substate::new(); let mut ex = Executive::new(&mut state, &info, &machine, &schedule); @@ -2212,7 +2212,7 @@ mod tests { let (FinalizationResult { gas_left, .. }, refund, gas) = { let gas = U256::from(0xffffffffffu64); let mut params = ActionParams::default(); - params.code = Some(Arc::new("6001600055600060006000600061200263fffffffff4".from_hex().unwrap())); + params.code = Some(Arc::new(hex!("6001600055600060006000600061200263fffffffff4").to_vec())); params.gas = gas; let mut substate = Substate::new(); let mut ex = Executive::new(&mut state, &info, &machine, &schedule); @@ -2228,9 +2228,7 @@ mod tests { fn wasm_sample_code() -> Arc> { Arc::new( - "0061736d01000000010d0360027f7f0060017f0060000002270303656e7603726574000003656e760673656e646572000103656e76066d656d6f727902010110030201020404017000000501000708010463616c6c00020901000ac10101be0102057f017e4100410028020441c0006b22043602042004412c6a41106a220041003602002004412c6a41086a22014200370200200441186a41106a22024100360200200441186a41086a220342003703002004420037022c2004410036021c20044100360218200441186a1001200020022802002202360200200120032903002205370200200441106a2002360200200441086a200537030020042004290318220537022c200420053703002004411410004100200441c0006a3602040b0b0a010041040b0410c00000" - .from_hex() - .unwrap() + hex!("0061736d01000000010d0360027f7f0060017f0060000002270303656e7603726574000003656e760673656e646572000103656e76066d656d6f727902010110030201020404017000000501000708010463616c6c00020901000ac10101be0102057f017e4100410028020441c0006b22043602042004412c6a41106a220041003602002004412c6a41086a22014200370200200441186a41106a22024100360200200441186a41086a220342003703002004420037022c2004410036021c20044100360218200441186a1001200020022802002202360200200120032903002205370200200441106a2002360200200441086a200537030020042004290318220537022c200420053703002004411410004100200441c0006a3602040b0b0a010041040b0410c00000").to_vec() ) } diff --git a/ethcore/machine/src/machine.rs b/ethcore/machine/src/machine.rs index 3f786f3b7..61643e5aa 100644 --- a/ethcore/machine/src/machine.rs +++ b/ethcore/machine/src/machine.rs @@ -407,8 +407,8 @@ fn round_block_gas_limit(gas_limit: U256, lower_limit: U256, upper_limit: U256) mod tests { use std::str::FromStr; use common_types::header::Header; + use hex_literal::hex; use super::*; - use spec; fn get_default_ethash_extensions() -> EthashExtensions { EthashExtensions { @@ -421,8 +421,8 @@ mod tests { #[test] fn should_disallow_unsigned_transactions() { - let rlp = "ea80843b9aca0083015f90948921ebb5f79e9e3920abe571004d0b1d5119c154865af3107a400080038080"; - let transaction: UnverifiedTransaction = ::rlp::decode(&::rustc_hex::FromHex::from_hex(rlp).unwrap()).unwrap(); + let rlp = hex!("ea80843b9aca0083015f90948921ebb5f79e9e3920abe571004d0b1d5119c154865af3107a400080038080").to_vec(); + let transaction: UnverifiedTransaction = rlp::decode(&rlp).unwrap(); assert_eq!( transaction::Error::from(transaction.verify_unordered().unwrap_err()), transaction::Error::InvalidSignature("invalid EC signature".into()), diff --git a/ethcore/pod/Cargo.toml b/ethcore/pod/Cargo.toml index dc97693cf..54c6e3b90 100644 --- a/ethcore/pod/Cargo.toml +++ b/ethcore/pod/Cargo.toml @@ -19,7 +19,7 @@ kvdb = "0.4.0" log = "0.4" parity-bytes = "0.1.0" rlp = "0.4" -rustc-hex = "1.0" +rustc-hex = "2.1.0" serde = { version = "1.0", features = ["derive"] } trie-db = "0.20.0" triehash = { package = "triehash-ethereum", version = "0.2", path = "../../util/triehash-ethereum" } diff --git a/ethcore/pod/src/account.rs b/ethcore/pod/src/account.rs index 46a2dc3dc..f3a3c9f4d 100644 --- a/ethcore/pod/src/account.rs +++ b/ethcore/pod/src/account.rs @@ -53,7 +53,7 @@ pub struct PodAccount { fn opt_bytes_to_hex(opt_bytes: &Option, serializer: S) -> Result where S: Serializer { - let readable = opt_bytes.as_ref().map(|b| b.to_hex()).unwrap_or_default(); + let readable: String = opt_bytes.as_ref().map(|b| b.to_hex()).unwrap_or_default(); serializer.collect_str(&format_args!("0x{}", readable)) } diff --git a/ethcore/private-tx/Cargo.toml b/ethcore/private-tx/Cargo.toml index e42a6e3d0..8a8104a97 100644 --- a/ethcore/private-tx/Cargo.toml +++ b/ethcore/private-tx/Cargo.toml @@ -38,7 +38,7 @@ patricia-trie-ethereum = { path = "../../util/patricia-trie-ethereum" } registrar = { path = "../../util/registrar" } rlp = "0.4.0" rlp-derive = "0.1" -rustc-hex = "1.0" +rustc-hex = "2.1.0" serde = "1.0" serde_derive = "1.0" serde_json = "1.0" diff --git a/ethcore/private-tx/tests/private_contract.rs b/ethcore/private-tx/tests/private_contract.rs index 6989d9052..2748a89ac 100644 --- a/ethcore/private-tx/tests/private_contract.rs +++ b/ethcore/private-tx/tests/private_contract.rs @@ -105,13 +105,13 @@ fn private_contract() { query_tx.nonce = 1.into(); let query_tx = query_tx.sign(&key1.secret(), chain_id); let result = pm.private_call(BlockId::Latest, &query_tx).unwrap(); - assert_eq!(&result.output[..], &("0000000000000000000000000000000000000000000000000000000000000000".from_hex().unwrap()[..])); + assert_eq!(&result.output[..], &("0000000000000000000000000000000000000000000000000000000000000000".from_hex::>().unwrap()[..])); assert_eq!(pm.get_validators(BlockId::Latest, &address).unwrap(), validators); trace!("Modifying private state"); let mut private_tx = Transaction::default(); private_tx.action = Action::Call(address.clone()); - private_tx.data = "bc64b76d2a00000000000000000000000000000000000000000000000000000000000000".from_hex().unwrap(); //setX(42) + private_tx.data = "bc64b76d2a00000000000000000000000000000000000000000000000000000000000000".from_hex::>().unwrap(); //setX(42) private_tx.gas = 120000.into(); private_tx.nonce = 1.into(); let private_tx = private_tx.sign(&key1.secret(), None); @@ -132,7 +132,7 @@ fn private_contract() { query_tx.nonce = 2.into(); let query_tx = query_tx.sign(&key1.secret(), chain_id); let result = pm.private_call(BlockId::Latest, &query_tx).unwrap(); - assert_eq!(&result.output[..], &("2a00000000000000000000000000000000000000000000000000000000000000".from_hex().unwrap()[..])); + assert_eq!(&result.output[..], &("2a00000000000000000000000000000000000000000000000000000000000000".from_hex::>().unwrap()[..])); assert_eq!(pm.get_validators(BlockId::Latest, &address).unwrap(), validators); // Now try modification with just one signature @@ -159,7 +159,7 @@ fn private_contract() { query_tx.nonce = 3.into(); let query_tx = query_tx.sign(&key1.secret(), chain_id); let result = pm.private_call(BlockId::Latest, &query_tx).unwrap(); - assert_eq!(result.output, "2a00000000000000000000000000000000000000000000000000000000000000".from_hex().unwrap()); + assert_eq!(result.output, "2a00000000000000000000000000000000000000000000000000000000000000".from_hex::>().unwrap()); } #[test] @@ -241,7 +241,7 @@ fn call_other_private_contract() { trace!("Creating private contract B"); // Build constructor data let mut deploy_data = "6060604052341561000f57600080fd5b6040516020806101c583398101604052808051906020019091905050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061014a8061007b6000396000f300606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680635197c7aa14610046575b600080fd5b341561005157600080fd5b61005961006f565b6040518082815260200191505060405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630c55699c6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156100fe57600080fd5b6102c65a03f1151561010f57600080fd5b505050604051805190509050905600a165627a7a723058207f8994e02725b47d76ec73e5c54a338d27b306dd1c830276bff2d75fcd1a5c920029000000000000000000000000".to_string(); - deploy_data.push_str(&address_a.as_bytes().to_vec().to_hex()); + deploy_data.push_str(&address_a.as_bytes().to_hex::()); let private_contract_b_test = deploy_data.from_hex().unwrap(); let mut private_create_tx2 = Transaction::default(); private_create_tx2.action = Action::Create; @@ -283,5 +283,5 @@ fn call_other_private_contract() { query_tx.nonce = 3.into(); let query_tx = query_tx.sign(&key1.secret(), chain_id); let result = pm.private_call(BlockId::Latest, &query_tx).unwrap(); - assert_eq!(&result.output[..], &("2a00000000000000000000000000000000000000000000000000000000000000".from_hex().unwrap()[..])); + assert_eq!(&result.output[..], &("2a00000000000000000000000000000000000000000000000000000000000000".from_hex::>().unwrap()[..])); } diff --git a/ethcore/sync/Cargo.toml b/ethcore/sync/Cargo.toml index 36fe32ed0..58898303c 100644 --- a/ethcore/sync/Cargo.toml +++ b/ethcore/sync/Cargo.toml @@ -43,5 +43,5 @@ ethcore-io = { path = "../../util/io", features = ["mio"] } kvdb-memorydb = "0.4.0" machine = { path = "../machine" } rand_xorshift = "0.2" -rustc-hex = "1.0" +rustc-hex = "2.1.0" spec = { path = "../spec" } diff --git a/ethcore/wasm/run/Cargo.toml b/ethcore/wasm/run/Cargo.toml index 31a43746c..4d32950e4 100644 --- a/ethcore/wasm/run/Cargo.toml +++ b/ethcore/wasm/run/Cargo.toml @@ -14,7 +14,7 @@ vm = { path = "../../vm" } wasm = { path = "../" } clap = "2.24" env_logger = "0.5" -rustc-hex = "1.0" +rustc-hex = "2.1.0" [features] default = ["ethereum-types/std"] diff --git a/ethcore/wasm/run/src/runner.rs b/ethcore/wasm/run/src/runner.rs index fe80415dd..07b7254b7 100644 --- a/ethcore/wasm/run/src/runner.rs +++ b/ethcore/wasm/run/src/runner.rs @@ -73,9 +73,9 @@ impl fmt::Display for Fail { write!( f, "Expected to return result: 0x{} ({} bytes), but got 0x{} ({} bytes)", - expected.to_hex(), + expected.to_hex::(), expected.len(), - actual.to_hex(), + actual.to_hex::(), actual.len() ), @@ -95,17 +95,17 @@ impl fmt::Display for Fail { write!( f, "Storage key {} value mismatch, expected {}, got: {}", - key.as_bytes().to_vec().to_hex(), - expected.as_bytes().to_vec().to_hex(), - actual.as_bytes().to_vec().to_hex(), + key.as_bytes().to_hex::(), + expected.as_bytes().to_hex::(), + actual.as_bytes().to_hex::(), ), StorageMismatch { ref key, ref expected, actual: None} => write!( f, "No expected storage value for key {} found, expected {}", - key.as_bytes().to_vec().to_hex(), - expected.as_bytes().to_vec().to_hex(), + key.as_bytes().to_hex::(), + expected.as_bytes().to_hex::(), ), Nonconformity(SpecNonconformity::Address) => diff --git a/evmbin/Cargo.toml b/evmbin/Cargo.toml index 92ada4ef6..a4566640e 100644 --- a/evmbin/Cargo.toml +++ b/evmbin/Cargo.toml @@ -21,7 +21,7 @@ evm = { path = "../ethcore/evm" } panic_hook = { path = "../util/panic-hook" } parity-bytes = "0.1" pod = { path = "../ethcore/pod" } -rustc-hex = "1.0" +rustc-hex = "2.1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" spec = { path = "../ethcore/spec" } @@ -30,6 +30,7 @@ vm = { path = "../ethcore/vm" } [dev-dependencies] criterion = "0.3" +hex-literal = "0.2.1" tempdir = "0.3" [features] diff --git a/evmbin/benches/mod.rs b/evmbin/benches/mod.rs index 593abcd6b..743df1e82 100644 --- a/evmbin/benches/mod.rs +++ b/evmbin/benches/mod.rs @@ -22,10 +22,13 @@ #[macro_use] extern crate criterion; + +#[macro_use] +extern crate hex_literal; + extern crate ethcore; extern crate evm; extern crate ethereum_types; -extern crate rustc_hex; extern crate vm; use std::sync::Arc; @@ -33,7 +36,6 @@ use criterion::{Criterion, black_box}; use ethereum_types::U256; use evm::Factory; -use rustc_hex::FromHex; use vm::tests::FakeExt; use vm::{ActionParams, Ext}; @@ -56,7 +58,7 @@ fn bench_simple_loop_u256(c: &mut Criterion) { fn simple_loop(gas: U256, c: &mut Criterion, bench_id: &str) { let code = black_box( - "606060405260005b620042408112156019575b6001016007565b600081905550600680602b6000396000f3606060405200".from_hex().unwrap() + hex!("606060405260005b620042408112156019575b6001016007565b600081905550600680602b6000396000f3606060405200").to_vec() ); c.bench_function(bench_id, move |b| { @@ -82,7 +84,7 @@ fn bench_rng_u256(c: &mut Criterion) { fn rng(gas: U256, c: &mut Criterion, bench_id: &str) { let code = black_box( - "6060604052600360056007600b60005b62004240811215607f5767ffe7649d5eca84179490940267f47ed85c4b9a6379019367f8e5dd9a5c994bba9390930267f91d87e4b8b74e55019267ff97f6f3b29cda529290920267f393ada8dd75c938019167fe8d437c45bb3735830267f47d9a7b5428ffec019150600101600f565b838518831882186000555050505050600680609a6000396000f3606060405200".from_hex().unwrap() + hex!("6060604052600360056007600b60005b62004240811215607f5767ffe7649d5eca84179490940267f47ed85c4b9a6379019367f8e5dd9a5c994bba9390930267f91d87e4b8b74e55019267ff97f6f3b29cda529290920267f393ada8dd75c938019167fe8d437c45bb3735830267f47d9a7b5428ffec019150600101600f565b838518831882186000555050505050600680609a6000396000f3606060405200").to_vec() ); c.bench_function(bench_id, move |b| { diff --git a/json/Cargo.toml b/json/Cargo.toml index ed773971d..097563289 100644 --- a/json/Cargo.toml +++ b/json/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] ethereum-types = "0.8.0" -rustc-hex = "1.0" +rustc-hex = "2.1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" diff --git a/miner/Cargo.toml b/miner/Cargo.toml index 8e24869b1..91edeb1d7 100644 --- a/miner/Cargo.toml +++ b/miner/Cargo.toml @@ -40,7 +40,7 @@ transaction-pool = "2.0.1" [dev-dependencies] env_logger = "0.5" parity-crypto = { version = "0.5.0", features = ["publickey"] } -rustc-hex = "1.0" +rustc-hex = "2.1.0" [features] work-notify = ["ethash", "fetch", "hyper", "url"] diff --git a/rpc/Cargo.toml b/rpc/Cargo.toml index 37804625a..dcf0bc702 100644 --- a/rpc/Cargo.toml +++ b/rpc/Cargo.toml @@ -16,7 +16,7 @@ multihash = "0.8" order-stat = "0.1" rand = "0.7" rand_xorshift = "0.2" -rustc-hex = "1.0" +rustc-hex = "2.1.0" semver = "0.9" serde = "1.0" serde_derive = "1.0" diff --git a/rpc/src/v1/helpers/errors.rs b/rpc/src/v1/helpers/errors.rs index 6651a6731..5fcf45ec8 100644 --- a/rpc/src/v1/helpers/errors.rs +++ b/rpc/src/v1/helpers/errors.rs @@ -513,7 +513,7 @@ pub fn vm(error: &VMError, output: &[u8]) -> Error { use rustc_hex::ToHex; let data = match error { - &VMError::Reverted => format!("{} 0x{}", VMError::Reverted, output.to_hex()), + &VMError::Reverted => format!("{} 0x{}", VMError::Reverted, output.to_hex::()), error => format!("{}", error), }; diff --git a/rpc/src/v1/tests/mocked/eth.rs b/rpc/src/v1/tests/mocked/eth.rs index 54c69a4fe..5e8fe52a8 100644 --- a/rpc/src/v1/tests/mocked/eth.rs +++ b/rpc/src/v1/tests/mocked/eth.rs @@ -564,12 +564,11 @@ fn rpc_eth_transaction_count_by_number_pending() { #[test] fn rpc_eth_pending_transaction_by_hash() { use ethereum_types::H256; - use rlp; use types::transaction::SignedTransaction; let tester = EthTester::default(); { - let bytes = FromHex::from_hex("f85f800182520894095e7baea6a6c7c4c2dfeb977efac326af552d870a801ba048b55bfa915ac795c431978d8a6a992b628d557da5ff759b307d495a36649353a0efffd310ac743f371de3b9f7f9cb56c0b28ad43601b4ab949f53faa07bd2c804").unwrap(); + let bytes: Vec = FromHex::from_hex("f85f800182520894095e7baea6a6c7c4c2dfeb977efac326af552d870a801ba048b55bfa915ac795c431978d8a6a992b628d557da5ff759b307d495a36649353a0efffd310ac743f371de3b9f7f9cb56c0b28ad43601b4ab949f53faa07bd2c804").unwrap(); let tx = rlp::decode(&bytes).expect("decoding failure"); let tx = SignedTransaction::new(tx).unwrap(); tester.miner.pending_transactions.lock().insert(H256::zero(), tx); @@ -913,7 +912,7 @@ fn rpc_eth_send_raw_transaction() { let signature = tester.accounts_provider.sign(address, None, t.hash(None)).unwrap(); let t = t.with_signature(signature, None); - let rlp = rlp::encode(&t).to_hex(); + let rlp: String = rlp::encode(&t).to_hex(); let req = r#"{ "jsonrpc": "2.0", diff --git a/rpc/src/v1/tests/mocked/parity_set.rs b/rpc/src/v1/tests/mocked/parity_set.rs index 249d2806f..6f11176cb 100644 --- a/rpc/src/v1/tests/mocked/parity_set.rs +++ b/rpc/src/v1/tests/mocked/parity_set.rs @@ -166,7 +166,7 @@ fn rpc_parity_set_extra_data() { let response = r#"{"jsonrpc":"2.0","result":true,"id":1}"#; assert_eq!(io.handle_request_sync(request), Some(response.to_owned())); - assert_eq!(miner.authoring_params().extra_data, "cd1722f3947def4cf144679da39c4c32bdc35681".from_hex().unwrap()); + assert_eq!(miner.authoring_params().extra_data, "cd1722f3947def4cf144679da39c4c32bdc35681".from_hex::>().unwrap()); } #[test] diff --git a/rpc/src/v1/tests/mocked/personal.rs b/rpc/src/v1/tests/mocked/personal.rs index 7b2cd4532..bf7138281 100644 --- a/rpc/src/v1/tests/mocked/personal.rs +++ b/rpc/src/v1/tests/mocked/personal.rs @@ -368,8 +368,8 @@ fn sign_eip191_with_validator() { data: keccak("hello world").as_bytes().to_vec().into() }).unwrap(); let result = eip191::hash_message(EIP191Version::PresignedTransaction, with_validator).unwrap(); - let result = tester.accounts.sign(address, Some("password123".into()), result).unwrap().into_electrum(); - let expected = r#"{"jsonrpc":"2.0","result":""#.to_owned() + &format!("0x{}", result.to_hex()) + r#"","id":1}"#; + let result: String = tester.accounts.sign(address, Some("password123".into()), result).unwrap().into_electrum().to_hex(); + let expected = r#"{"jsonrpc":"2.0","result":""#.to_owned() + &format!("0x{}", result) + r#"","id":1}"#; let response = tester.io.handle_request_sync(&request).unwrap(); assert_eq!(response, expected) } diff --git a/rpc/src/v1/tests/mocked/signing.rs b/rpc/src/v1/tests/mocked/signing.rs index c9008d1c2..5e9b9bd9f 100644 --- a/rpc/src/v1/tests/mocked/signing.rs +++ b/rpc/src/v1/tests/mocked/signing.rs @@ -87,13 +87,10 @@ fn eth_signing(signing_queue_enabled: bool) -> SigningTester { #[test] fn rpc_eth_sign() { - use rustc_hex::FromHex; - let tester = eth_signing(true); let account = tester.accounts.insert_account(Secret::from([69u8; 32]), &"abcd".into()).unwrap(); tester.accounts.unlock_account_permanently(account, "abcd".into()).unwrap(); - let _message = "0cc175b9c0f1b6a831c399e26977266192eb5ffee6ae2fec3ad71c777531578f".from_hex().unwrap(); let req = r#"{ "jsonrpc": "2.0", diff --git a/rpc/src/v1/tests/mocked/signing_unsafe.rs b/rpc/src/v1/tests/mocked/signing_unsafe.rs index 11d5f6055..ffc7e9bfe 100644 --- a/rpc/src/v1/tests/mocked/signing_unsafe.rs +++ b/rpc/src/v1/tests/mocked/signing_unsafe.rs @@ -165,10 +165,10 @@ fn rpc_eth_sign_transaction() { let signature = tester.accounts_provider.sign(address, None, t.hash(None)).unwrap(); let t = t.with_signature(signature, None); let signature = t.signature(); - let rlp = rlp::encode(&t); + let rlp: String = rlp::encode(&t).to_hex(); let response = r#"{"jsonrpc":"2.0","result":{"#.to_owned() + - r#""raw":"0x"# + &rlp.to_hex() + r#"","# + + r#""raw":"0x"# + &rlp + r#"","# + r#""tx":{"# + r#""blockHash":null,"blockNumber":null,"# + &format!("\"chainId\":{},", t.chain_id().map_or("null".to_owned(), |n| format!("{}", n))) + @@ -180,7 +180,7 @@ fn rpc_eth_sign_transaction() { r#""nonce":"0x1","# + &format!("\"publicKey\":\"0x{:x}\",", t.recover_public().unwrap()) + &format!("\"r\":\"0x{:x}\",", U256::from(signature.r())) + - &format!("\"raw\":\"0x{}\",", rlp.to_hex()) + + &format!("\"raw\":\"0x{}\",", rlp) + &format!("\"s\":\"0x{:x}\",", U256::from(signature.s())) + &format!("\"standardV\":\"0x{:x}\",", U256::from(t.standard_v())) + r#""to":"0xd46e8dd67c5d32be8058bb8eb970870f07244567","transactionIndex":null,"# + diff --git a/rpc/src/v1/types/bytes.rs b/rpc/src/v1/types/bytes.rs index f0891e22a..a43c91e47 100644 --- a/rpc/src/v1/types/bytes.rs +++ b/rpc/src/v1/types/bytes.rs @@ -50,9 +50,10 @@ impl Into> for Bytes { impl Serialize for Bytes { fn serialize(&self, serializer: S) -> Result - where S: Serializer { + where S: Serializer + { let mut serialized = "0x".to_owned(); - serialized.push_str(self.0.to_hex().as_ref()); + serialized.push_str(self.0.to_hex::().as_ref()); serializer.serialize_str(serialized.as_ref()) } } @@ -89,7 +90,6 @@ impl<'a> Visitor<'a> for BytesVisitor { #[cfg(test)] mod tests { use super::*; - use serde_json; use rustc_hex::FromHex; #[test] diff --git a/rpc/src/v1/types/call_request.rs b/rpc/src/v1/types/call_request.rs index 59658dc07..0d0829e1d 100644 --- a/rpc/src/v1/types/call_request.rs +++ b/rpc/src/v1/types/call_request.rs @@ -103,7 +103,7 @@ mod tests { gas_price: Some(U256::from_str("9184e72a000").unwrap()), gas: Some(U256::from_str("76c0").unwrap()), value: Some(U256::from_str("9184e72a").unwrap()), - data: Some("d46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675".from_hex().unwrap().into()), + data: Some("d46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675".from_hex::>().unwrap().into()), nonce: None }); } diff --git a/rpc/src/v1/types/transaction_request.rs b/rpc/src/v1/types/transaction_request.rs index b91d3eb2b..81a7bc3c6 100644 --- a/rpc/src/v1/types/transaction_request.rs +++ b/rpc/src/v1/types/transaction_request.rs @@ -186,7 +186,7 @@ mod tests { gas_price: Some(U256::from_str("9184e72a000").unwrap()), gas: Some(U256::from_str("76c0").unwrap()), value: Some(U256::from_str("9184e72a").unwrap()), - data: Some("d46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675".from_hex().unwrap().into()), + data: Some("d46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675".from_hex::>().unwrap().into()), nonce: None, condition: None, }); diff --git a/updater/hash-fetch/Cargo.toml b/updater/hash-fetch/Cargo.toml index 3fadd61a1..c3ea793a5 100644 --- a/updater/hash-fetch/Cargo.toml +++ b/updater/hash-fetch/Cargo.toml @@ -13,7 +13,7 @@ log = "0.4" mime = "0.3" mime_guess = "2.0.1" rand = "0.7" -rustc-hex = "1.0" +rustc-hex = "2.1.0" fetch = { path = "../../util/fetch" } parity-bytes = "0.1" ethereum-types = "0.8.0" diff --git a/updater/hash-fetch/src/client.rs b/updater/hash-fetch/src/client.rs index 09a70fee0..45bccc2fd 100644 --- a/updater/hash-fetch/src/client.rs +++ b/updater/hash-fetch/src/client.rs @@ -203,8 +203,8 @@ mod tests { fn registrar() -> FakeRegistrar { let mut registrar = FakeRegistrar::new(); registrar.responses = Mutex::new(vec![ - Ok(format!("000000000000000000000000{}", URLHINT).from_hex().unwrap()), - Ok("00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000deadcafebeefbeefcafedeaddeedfeedffffffff000000000000000000000000000000000000000000000000000000000000003c68747470733a2f2f7061726974792e696f2f6173736574732f696d616765732f657468636f72652d626c61636b2d686f72697a6f6e74616c2e706e6700000000".from_hex().unwrap()), + Ok(format!("000000000000000000000000{}", URLHINT).from_hex::>().unwrap()), + Ok("00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000deadcafebeefbeefcafedeaddeedfeedffffffff000000000000000000000000000000000000000000000000000000000000003c68747470733a2f2f7061726974792e696f2f6173736574732f696d616765732f657468636f72652d626c61636b2d686f72697a6f6e74616c2e706e6700000000".from_hex::>().unwrap()), ]); registrar } diff --git a/updater/hash-fetch/src/urlhint.rs b/updater/hash-fetch/src/urlhint.rs index dcb1347ab..708ecf19d 100644 --- a/updater/hash-fetch/src/urlhint.rs +++ b/updater/hash-fetch/src/urlhint.rs @@ -52,7 +52,7 @@ impl GithubApp { pub fn url(&self) -> String { // Since https fetcher doesn't support redirections we use direct link // format!("https://github.com/{}/{}/archive/{}.zip", self.account, self.repo, self.commit.to_hex()) - format!("https://codeload.github.com/{}/{}/zip/{}", self.account, self.repo, self.commit.to_hex()) + format!("https://codeload.github.com/{}/{}/zip/{}", self.account, self.repo, self.commit.to_hex::()) } fn commit(bytes: &[u8]) -> Option<[u8;COMMIT_LEN]> { @@ -313,11 +313,13 @@ pub mod tests { // when let res = urlhint.resolve(h256_from_short_str("test")).unwrap(); + let c: Vec = "ec4c1fe06c808fe3739858c347109b1f5f1ed4b5".from_hex().unwrap(); + // then assert_eq!(res, Some(URLHintResult::Dapp(GithubApp { account: "ethcore".into(), repo: "dao.claim".into(), - commit: GithubApp::commit(&"ec4c1fe06c808fe3739858c347109b1f5f1ed4b5".from_hex().unwrap()).unwrap(), + commit: GithubApp::commit(&c).unwrap(), owner: Address::from_str("deadcafebeefbeefcafedeaddeedfeedffffffff").unwrap(), }))) } diff --git a/util/network-devp2p/Cargo.toml b/util/network-devp2p/Cargo.toml index e7607a24c..541dc0265 100644 --- a/util/network-devp2p/Cargo.toml +++ b/util/network-devp2p/Cargo.toml @@ -8,36 +8,36 @@ authors = ["Parity Technologies "] edition = "2018" [dependencies] -log = "0.4" -mio = "0.6.8" -bytes = "0.4" -rand = "0.7" -tiny-keccak = "1.4" -slab = "0.2" -igd = "0.10.0" -libc = "0.2.7" -parking_lot = "0.10.0" ansi_term = "0.11" -rustc-hex = "1.0" +bytes = "0.4" ethcore-io = { path = "../io", features = ["mio"] } -parity-bytes = "0.1" -parity-crypto = { version = "0.5.0", features = ["publickey"] } -network = { package = "ethcore-network", path = "../network" } ethereum-types = "0.8.0" -rlp = "0.4.0" -parity-path = "0.1" +igd = "0.10.0" ipnetwork = "0.12.6" keccak-hash = "0.4.0" +libc = "0.2.7" +log = "0.4" +lru-cache = "0.1" +mio = "0.6.8" +natpmp = "0.2" +network = { package = "ethcore-network", path = "../network" } +parity-bytes = "0.1" +parity-crypto = { version = "0.5.0", features = ["publickey"] } +parity-path = "0.1" parity-snappy = "0.1" +parking_lot = "0.10.0" +rand = "0.7" +rlp = "0.4.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -lru-cache = "0.1" -natpmp = "0.2" +slab = "0.2" +tiny-keccak = "1.4" [dev-dependencies] -env_logger = "0.5" -tempdir = "0.3" assert_matches = "1.2" +env_logger = "0.5" +hex-literal = "0.2.1" +tempdir = "0.3" [features] default = [] diff --git a/util/network-devp2p/src/discovery.rs b/util/network-devp2p/src/discovery.rs index bcbf9244c..a468b04fc 100644 --- a/util/network-devp2p/src/discovery.rs +++ b/util/network-devp2p/src/discovery.rs @@ -899,12 +899,10 @@ mod tests { use std::net::{IpAddr, Ipv4Addr}; use std::str::FromStr; - use rustc_hex::FromHex; - + use hex_literal::hex; use parity_crypto::publickey::{Generator, Random}; use crate::node_table::{Node, NodeEndpoint, NodeId}; - use super::*; #[test] @@ -1197,60 +1195,60 @@ mod tests { discovery.check_timestamps = false; let from = SocketAddr::from_str("99.99.99.99:40445").unwrap(); - let packet = "\ - e9614ccfd9fc3e74360018522d30e1419a143407ffcce748de3e22116b7e8dc92ff74788c0b6663a\ - aa3d67d641936511c8f8d6ad8698b820a7cf9e1be7155e9a241f556658c55428ec0563514365799a\ - 4be2be5a685a80971ddcfa80cb422cdd0101ec04cb847f000001820cfa8215a8d790000000000000\ - 000000000000000000018208ae820d058443b9a3550102\ - ".from_hex().unwrap(); + let packet = hex!(" + e9614ccfd9fc3e74360018522d30e1419a143407ffcce748de3e22116b7e8dc92ff74788c0b6663a + aa3d67d641936511c8f8d6ad8698b820a7cf9e1be7155e9a241f556658c55428ec0563514365799a + 4be2be5a685a80971ddcfa80cb422cdd0101ec04cb847f000001820cfa8215a8d790000000000000 + 000000000000000000018208ae820d058443b9a3550102 + ").to_vec(); let _ = discovery.on_packet(&packet, from.clone()).expect("packet to be ok"); - let packet = "\ - 577be4349c4dd26768081f58de4c6f375a7a22f3f7adda654d1428637412c3d7fe917cadc56d4e5e\ - 7ffae1dbe3efffb9849feb71b262de37977e7c7a44e677295680e9e38ab26bee2fcbae207fba3ff3\ - d74069a50b902a82c9903ed37cc993c50001f83e82022bd79020010db83c4d001500000000abcdef\ - 12820cfa8215a8d79020010db885a308d313198a2e037073488208ae82823a8443b9a355c5010203\ - 040531b9019afde696e582a78fa8d95ea13ce3297d4afb8ba6433e4154caa5ac6431af1b80ba7602\ - 3fa4090c408f6b4bc3701562c031041d4702971d102c9ab7fa5eed4cd6bab8f7af956f7d565ee191\ - 7084a95398b6a21eac920fe3dd1345ec0a7ef39367ee69ddf092cbfe5b93e5e568ebc491983c09c7\ - 6d922dc3\ - ".from_hex().unwrap(); + let packet = hex!(" + 577be4349c4dd26768081f58de4c6f375a7a22f3f7adda654d1428637412c3d7fe917cadc56d4e5e + 7ffae1dbe3efffb9849feb71b262de37977e7c7a44e677295680e9e38ab26bee2fcbae207fba3ff3 + d74069a50b902a82c9903ed37cc993c50001f83e82022bd79020010db83c4d001500000000abcdef + 12820cfa8215a8d79020010db885a308d313198a2e037073488208ae82823a8443b9a355c5010203 + 040531b9019afde696e582a78fa8d95ea13ce3297d4afb8ba6433e4154caa5ac6431af1b80ba7602 + 3fa4090c408f6b4bc3701562c031041d4702971d102c9ab7fa5eed4cd6bab8f7af956f7d565ee191 + 7084a95398b6a21eac920fe3dd1345ec0a7ef39367ee69ddf092cbfe5b93e5e568ebc491983c09c7 + 6d922dc3 + ").to_vec(); let _ = discovery.on_packet(&packet, from.clone()).expect("packet to be ok"); - let packet = "\ - 09b2428d83348d27cdf7064ad9024f526cebc19e4958f0fdad87c15eb598dd61d08423e0bf66b206\ - 9869e1724125f820d851c136684082774f870e614d95a2855d000f05d1648b2d5945470bc187c2d2\ - 216fbe870f43ed0909009882e176a46b0102f846d79020010db885a308d313198a2e037073488208\ - ae82823aa0fbc914b16819237dcd8801d7e53f69e9719adecb3cc0e790c57e91ca4461c9548443b9\ + let packet = hex!(" + 09b2428d83348d27cdf7064ad9024f526cebc19e4958f0fdad87c15eb598dd61d08423e0bf66b206 + 9869e1724125f820d851c136684082774f870e614d95a2855d000f05d1648b2d5945470bc187c2d2 + 216fbe870f43ed0909009882e176a46b0102f846d79020010db885a308d313198a2e037073488208 + ae82823aa0fbc914b16819237dcd8801d7e53f69e9719adecb3cc0e790c57e91ca4461c9548443b9 a355c6010203c2040506a0c969a58f6f9095004c0177a6b47f451530cab38966a25cca5cb58f0555 - 42124e\ - ".from_hex().unwrap(); + 42124e + ").to_vec(); let _ = discovery.on_packet(&packet, from.clone()).expect("packet to be ok"); - let packet = "\ - c7c44041b9f7c7e41934417ebac9a8e1a4c6298f74553f2fcfdcae6ed6fe53163eb3d2b52e39fe91\ - 831b8a927bf4fc222c3902202027e5e9eb812195f95d20061ef5cd31d502e47ecb61183f74a504fe\ - 04c51e73df81f25c4d506b26db4517490103f84eb840ca634cae0d49acb401d8a4c6b6fe8c55b70d\ - 115bf400769cc1400f3258cd31387574077f301b421bc84df7266c44e9e6d569fc56be0081290476\ - 7bf5ccd1fc7f8443b9a35582999983999999280dc62cc8255c73471e0a61da0c89acdc0e035e260a\ - dd7fc0c04ad9ebf3919644c91cb247affc82b69bd2ca235c71eab8e49737c937a2c396\ - ".from_hex().unwrap(); + let packet = hex!(" + c7c44041b9f7c7e41934417ebac9a8e1a4c6298f74553f2fcfdcae6ed6fe53163eb3d2b52e39fe91 + 831b8a927bf4fc222c3902202027e5e9eb812195f95d20061ef5cd31d502e47ecb61183f74a504fe + 04c51e73df81f25c4d506b26db4517490103f84eb840ca634cae0d49acb401d8a4c6b6fe8c55b70d + 115bf400769cc1400f3258cd31387574077f301b421bc84df7266c44e9e6d569fc56be0081290476 + 7bf5ccd1fc7f8443b9a35582999983999999280dc62cc8255c73471e0a61da0c89acdc0e035e260a + dd7fc0c04ad9ebf3919644c91cb247affc82b69bd2ca235c71eab8e49737c937a2c396 + ").to_vec(); let _ = discovery.on_packet(&packet, from.clone()).expect("packet to be ok"); - let packet = "\ - c679fc8fe0b8b12f06577f2e802d34f6fa257e6137a995f6f4cbfc9ee50ed3710faf6e66f932c4c8\ - d81d64343f429651328758b47d3dbc02c4042f0fff6946a50f4a49037a72bb550f3a7872363a83e1\ - b9ee6469856c24eb4ef80b7535bcf99c0004f9015bf90150f84d846321163782115c82115db84031\ - 55e1427f85f10a5c9a7755877748041af1bcd8d474ec065eb33df57a97babf54bfd2103575fa8291\ - 15d224c523596b401065a97f74010610fce76382c0bf32f84984010203040101b840312c55512422\ - cf9b8a4097e9a6ad79402e87a15ae909a4bfefa22398f03d20951933beea1e4dfa6f968212385e82\ - 9f04c2d314fc2d4e255e0d3bc08792b069dbf8599020010db83c4d001500000000abcdef12820d05\ - 820d05b84038643200b172dcfef857492156971f0e6aa2c538d8b74010f8e140811d53b98c765dd2\ - d96126051913f44582e8c199ad7c6d6819e9a56483f637feaac9448aacf8599020010db885a308d3\ - 13198a2e037073488203e78203e8b8408dcab8618c3253b558d459da53bd8fa68935a719aff8b811\ - 197101a4b2b47dd2d47295286fc00cc081bb542d760717d1bdd6bec2c37cd72eca367d6dd3b9df73\ - 8443b9a355010203b525a138aa34383fec3d2719a0\ - ".from_hex().unwrap(); + let packet = hex!(" + c679fc8fe0b8b12f06577f2e802d34f6fa257e6137a995f6f4cbfc9ee50ed3710faf6e66f932c4c8 + d81d64343f429651328758b47d3dbc02c4042f0fff6946a50f4a49037a72bb550f3a7872363a83e1 + b9ee6469856c24eb4ef80b7535bcf99c0004f9015bf90150f84d846321163782115c82115db84031 + 55e1427f85f10a5c9a7755877748041af1bcd8d474ec065eb33df57a97babf54bfd2103575fa8291 + 15d224c523596b401065a97f74010610fce76382c0bf32f84984010203040101b840312c55512422 + cf9b8a4097e9a6ad79402e87a15ae909a4bfefa22398f03d20951933beea1e4dfa6f968212385e82 + 9f04c2d314fc2d4e255e0d3bc08792b069dbf8599020010db83c4d001500000000abcdef12820d05 + 820d05b84038643200b172dcfef857492156971f0e6aa2c538d8b74010f8e140811d53b98c765dd2 + d96126051913f44582e8c199ad7c6d6819e9a56483f637feaac9448aacf8599020010db885a308d3 + 13198a2e037073488203e78203e8b8408dcab8618c3253b558d459da53bd8fa68935a719aff8b811 + 197101a4b2b47dd2d47295286fc00cc081bb542d760717d1bdd6bec2c37cd72eca367d6dd3b9df73 + 8443b9a355010203b525a138aa34383fec3d2719a0 + ").to_vec(); let _ = discovery.on_packet(&packet, from.clone()).expect("packet to be ok"); } diff --git a/util/network-devp2p/src/handshake.rs b/util/network-devp2p/src/handshake.rs index 72f11a25d..b869db41d 100644 --- a/util/network-devp2p/src/handshake.rs +++ b/util/network-devp2p/src/handshake.rs @@ -323,11 +323,10 @@ impl Handshake { mod test { use std::str::FromStr; - use ethereum_types::{H256, H512}; - use mio::tcp::TcpStream; - use rustc_hex::FromHex; - use ethcore_io::*; + use ethereum_types::{H256, H512}; + use hex_literal::hex; + use mio::tcp::TcpStream; use parity_crypto::publickey::Public; use super::*; @@ -370,16 +369,16 @@ mod test { let mut h = create_handshake(None); let secret = "b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291".parse().unwrap(); let auth = - "\ - 048ca79ad18e4b0659fab4853fe5bc58eb83992980f4c9cc147d2aa31532efd29a3d3dc6a3d89eaf\ - 913150cfc777ce0ce4af2758bf4810235f6e6ceccfee1acc6b22c005e9e3a49d6448610a58e98744\ - ba3ac0399e82692d67c1f58849050b3024e21a52c9d3b01d871ff5f210817912773e610443a9ef14\ - 2e91cdba0bd77b5fdf0769b05671fc35f83d83e4d3b0b000c6b2a1b1bba89e0fc51bf4e460df3105\ - c444f14be226458940d6061c296350937ffd5e3acaceeaaefd3c6f74be8e23e0f45163cc7ebd7622\ - 0f0128410fd05250273156d548a414444ae2f7dea4dfca2d43c057adb701a715bf59f6fb66b2d1d2\ - 0f2c703f851cbf5ac47396d9ca65b6260bd141ac4d53e2de585a73d1750780db4c9ee4cd4d225173\ - a4592ee77e2bd94d0be3691f3b406f9bba9b591fc63facc016bfa8\ - ".from_hex().unwrap(); + hex!(" + 048ca79ad18e4b0659fab4853fe5bc58eb83992980f4c9cc147d2aa31532efd29a3d3dc6a3d89eaf + 913150cfc777ce0ce4af2758bf4810235f6e6ceccfee1acc6b22c005e9e3a49d6448610a58e98744 + ba3ac0399e82692d67c1f58849050b3024e21a52c9d3b01d871ff5f210817912773e610443a9ef14 + 2e91cdba0bd77b5fdf0769b05671fc35f83d83e4d3b0b000c6b2a1b1bba89e0fc51bf4e460df3105 + c444f14be226458940d6061c296350937ffd5e3acaceeaaefd3c6f74be8e23e0f45163cc7ebd7622 + 0f0128410fd05250273156d548a414444ae2f7dea4dfca2d43c057adb701a715bf59f6fb66b2d1d2 + 0f2c703f851cbf5ac47396d9ca65b6260bd141ac4d53e2de585a73d1750780db4c9ee4cd4d225173 + a4592ee77e2bd94d0be3691f3b406f9bba9b591fc63facc016bfa8 + ").to_vec(); h.read_auth(&test_io(), &secret, &auth).unwrap(); assert_eq!(h.state, super::HandshakeState::StartSession); @@ -391,19 +390,19 @@ mod test { let mut h = create_handshake(None); let secret = "b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291".parse().unwrap(); let auth = - "\ - 01b304ab7578555167be8154d5cc456f567d5ba302662433674222360f08d5f1534499d3678b513b\ - 0fca474f3a514b18e75683032eb63fccb16c156dc6eb2c0b1593f0d84ac74f6e475f1b8d56116b84\ - 9634a8c458705bf83a626ea0384d4d7341aae591fae42ce6bd5c850bfe0b999a694a49bbbaf3ef6c\ - da61110601d3b4c02ab6c30437257a6e0117792631a4b47c1d52fc0f8f89caadeb7d02770bf999cc\ - 147d2df3b62e1ffb2c9d8c125a3984865356266bca11ce7d3a688663a51d82defaa8aad69da39ab6\ - d5470e81ec5f2a7a47fb865ff7cca21516f9299a07b1bc63ba56c7a1a892112841ca44b6e0034dee\ - 70c9adabc15d76a54f443593fafdc3b27af8059703f88928e199cb122362a4b35f62386da7caad09\ - c001edaeb5f8a06d2b26fb6cb93c52a9fca51853b68193916982358fe1e5369e249875bb8d0d0ec3\ - 6f917bc5e1eafd5896d46bd61ff23f1a863a8a8dcd54c7b109b771c8e61ec9c8908c733c0263440e\ - 2aa067241aaa433f0bb053c7b31a838504b148f570c0ad62837129e547678c5190341e4f1693956c\ - 3bf7678318e2d5b5340c9e488eefea198576344afbdf66db5f51204a6961a63ce072c8926c\ - ".from_hex().unwrap(); + hex!(" + 01b304ab7578555167be8154d5cc456f567d5ba302662433674222360f08d5f1534499d3678b513b + 0fca474f3a514b18e75683032eb63fccb16c156dc6eb2c0b1593f0d84ac74f6e475f1b8d56116b84 + 9634a8c458705bf83a626ea0384d4d7341aae591fae42ce6bd5c850bfe0b999a694a49bbbaf3ef6c + da61110601d3b4c02ab6c30437257a6e0117792631a4b47c1d52fc0f8f89caadeb7d02770bf999cc + 147d2df3b62e1ffb2c9d8c125a3984865356266bca11ce7d3a688663a51d82defaa8aad69da39ab6 + d5470e81ec5f2a7a47fb865ff7cca21516f9299a07b1bc63ba56c7a1a892112841ca44b6e0034dee + 70c9adabc15d76a54f443593fafdc3b27af8059703f88928e199cb122362a4b35f62386da7caad09 + c001edaeb5f8a06d2b26fb6cb93c52a9fca51853b68193916982358fe1e5369e249875bb8d0d0ec3 + 6f917bc5e1eafd5896d46bd61ff23f1a863a8a8dcd54c7b109b771c8e61ec9c8908c733c0263440e + 2aa067241aaa433f0bb053c7b31a838504b148f570c0ad62837129e547678c5190341e4f1693956c + 3bf7678318e2d5b5340c9e488eefea198576344afbdf66db5f51204a6961a63ce072c8926c + ").to_vec(); h.read_auth(&test_io(), &secret, &auth[0..super::V4_AUTH_PACKET_SIZE]).unwrap(); assert_eq!(h.state, super::HandshakeState::ReadingAuthEip8); @@ -417,20 +416,19 @@ mod test { let mut h = create_handshake(None); let secret = "b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291".parse().unwrap(); let auth = - "\ - 01b8044c6c312173685d1edd268aa95e1d495474c6959bcdd10067ba4c9013df9e40ff45f5bfd6f7\ - 2471f93a91b493f8e00abc4b80f682973de715d77ba3a005a242eb859f9a211d93a347fa64b597bf\ - 280a6b88e26299cf263b01b8dfdb712278464fd1c25840b995e84d367d743f66c0e54a586725b7bb\ - f12acca27170ae3283c1073adda4b6d79f27656993aefccf16e0d0409fe07db2dc398a1b7e8ee93b\ - cd181485fd332f381d6a050fba4c7641a5112ac1b0b61168d20f01b479e19adf7fdbfa0905f63352\ - bfc7e23cf3357657455119d879c78d3cf8c8c06375f3f7d4861aa02a122467e069acaf513025ff19\ - 6641f6d2810ce493f51bee9c966b15c5043505350392b57645385a18c78f14669cc4d960446c1757\ - 1b7c5d725021babbcd786957f3d17089c084907bda22c2b2675b4378b114c601d858802a55345a15\ - 116bc61da4193996187ed70d16730e9ae6b3bb8787ebcaea1871d850997ddc08b4f4ea668fbf3740\ - 7ac044b55be0908ecb94d4ed172ece66fd31bfdadf2b97a8bc690163ee11f5b575a4b44e36e2bfb2\ - f0fce91676fd64c7773bac6a003f481fddd0bae0a1f31aa27504e2a533af4cef3b623f4791b2cca6\ - d490\ - ".from_hex().unwrap(); + hex!(" + 01b8044c6c312173685d1edd268aa95e1d495474c6959bcdd10067ba4c9013df9e40ff45f5bfd6f7 + 2471f93a91b493f8e00abc4b80f682973de715d77ba3a005a242eb859f9a211d93a347fa64b597bf + 280a6b88e26299cf263b01b8dfdb712278464fd1c25840b995e84d367d743f66c0e54a586725b7bb + f12acca27170ae3283c1073adda4b6d79f27656993aefccf16e0d0409fe07db2dc398a1b7e8ee93b + cd181485fd332f381d6a050fba4c7641a5112ac1b0b61168d20f01b479e19adf7fdbfa0905f63352 + bfc7e23cf3357657455119d879c78d3cf8c8c06375f3f7d4861aa02a122467e069acaf513025ff19 + 6641f6d2810ce493f51bee9c966b15c5043505350392b57645385a18c78f14669cc4d960446c1757 + 1b7c5d725021babbcd786957f3d17089c084907bda22c2b2675b4378b114c601d858802a55345a15 + 116bc61da4193996187ed70d16730e9ae6b3bb8787ebcaea1871d850997ddc08b4f4ea668fbf3740 + 7ac044b55be0908ecb94d4ed172ece66fd31bfdadf2b97a8bc690163ee11f5b575a4b44e36e2bfb2 + f0fce91676fd64c7773bac6a003f481fddd0bae0a1f31aa27504e2a533af4cef3b623f4791b2cca6 + d490").to_vec(); h.read_auth(&test_io(), &secret, &auth[0..super::V4_AUTH_PACKET_SIZE]).unwrap(); assert_eq!(h.state, super::HandshakeState::ReadingAuthEip8); @@ -448,14 +446,14 @@ mod test { let mut h = create_handshake(Some(&remote)); let secret = "49a7b37aa6f6645917e7b807e9d1c00d4fa71f18343b0d4122a4d2df64dd6fee".parse().unwrap(); let ack = - "\ - 049f8abcfa9c0dc65b982e98af921bc0ba6e4243169348a236abe9df5f93aa69d99cadddaa387662\ - b0ff2c08e9006d5a11a278b1b3331e5aaabf0a32f01281b6f4ede0e09a2d5f585b26513cb794d963\ - 5a57563921c04a9090b4f14ee42be1a5461049af4ea7a7f49bf4c97a352d39c8d02ee4acc416388c\ - 1c66cec761d2bc1c72da6ba143477f049c9d2dde846c252c111b904f630ac98e51609b3b1f58168d\ - dca6505b7196532e5f85b259a20c45e1979491683fee108e9660edbf38f3add489ae73e3dda2c71b\ - d1497113d5c755e942d1\ - ".from_hex().unwrap(); + hex!(" + 049f8abcfa9c0dc65b982e98af921bc0ba6e4243169348a236abe9df5f93aa69d99cadddaa387662 + b0ff2c08e9006d5a11a278b1b3331e5aaabf0a32f01281b6f4ede0e09a2d5f585b26513cb794d963 + 5a57563921c04a9090b4f14ee42be1a5461049af4ea7a7f49bf4c97a352d39c8d02ee4acc416388c + 1c66cec761d2bc1c72da6ba143477f049c9d2dde846c252c111b904f630ac98e51609b3b1f58168d + dca6505b7196532e5f85b259a20c45e1979491683fee108e9660edbf38f3add489ae73e3dda2c71b + d1497113d5c755e942d1 + ").to_vec(); h.read_ack(&secret, &ack).unwrap(); assert_eq!(h.state, super::HandshakeState::StartSession); @@ -468,21 +466,21 @@ mod test { let mut h = create_handshake(Some(&remote)); let secret = "49a7b37aa6f6645917e7b807e9d1c00d4fa71f18343b0d4122a4d2df64dd6fee".parse().unwrap(); let ack = - "\ - 01ea0451958701280a56482929d3b0757da8f7fbe5286784beead59d95089c217c9b917788989470\ - b0e330cc6e4fb383c0340ed85fab836ec9fb8a49672712aeabbdfd1e837c1ff4cace34311cd7f4de\ - 05d59279e3524ab26ef753a0095637ac88f2b499b9914b5f64e143eae548a1066e14cd2f4bd7f814\ - c4652f11b254f8a2d0191e2f5546fae6055694aed14d906df79ad3b407d94692694e259191cde171\ - ad542fc588fa2b7333313d82a9f887332f1dfc36cea03f831cb9a23fea05b33deb999e85489e645f\ - 6aab1872475d488d7bd6c7c120caf28dbfc5d6833888155ed69d34dbdc39c1f299be1057810f34fb\ - e754d021bfca14dc989753d61c413d261934e1a9c67ee060a25eefb54e81a4d14baff922180c395d\ - 3f998d70f46f6b58306f969627ae364497e73fc27f6d17ae45a413d322cb8814276be6ddd13b885b\ - 201b943213656cde498fa0e9ddc8e0b8f8a53824fbd82254f3e2c17e8eaea009c38b4aa0a3f306e8\ - 797db43c25d68e86f262e564086f59a2fc60511c42abfb3057c247a8a8fe4fb3ccbadde17514b7ac\ - 8000cdb6a912778426260c47f38919a91f25f4b5ffb455d6aaaf150f7e5529c100ce62d6d92826a7\ - 1778d809bdf60232ae21ce8a437eca8223f45ac37f6487452ce626f549b3b5fdee26afd2072e4bc7\ - 5833c2464c805246155289f4\ - ".from_hex().unwrap(); + hex!(" + 01ea0451958701280a56482929d3b0757da8f7fbe5286784beead59d95089c217c9b917788989470 + b0e330cc6e4fb383c0340ed85fab836ec9fb8a49672712aeabbdfd1e837c1ff4cace34311cd7f4de + 05d59279e3524ab26ef753a0095637ac88f2b499b9914b5f64e143eae548a1066e14cd2f4bd7f814 + c4652f11b254f8a2d0191e2f5546fae6055694aed14d906df79ad3b407d94692694e259191cde171 + ad542fc588fa2b7333313d82a9f887332f1dfc36cea03f831cb9a23fea05b33deb999e85489e645f + 6aab1872475d488d7bd6c7c120caf28dbfc5d6833888155ed69d34dbdc39c1f299be1057810f34fb + e754d021bfca14dc989753d61c413d261934e1a9c67ee060a25eefb54e81a4d14baff922180c395d + 3f998d70f46f6b58306f969627ae364497e73fc27f6d17ae45a413d322cb8814276be6ddd13b885b + 201b943213656cde498fa0e9ddc8e0b8f8a53824fbd82254f3e2c17e8eaea009c38b4aa0a3f306e8 + 797db43c25d68e86f262e564086f59a2fc60511c42abfb3057c247a8a8fe4fb3ccbadde17514b7ac + 8000cdb6a912778426260c47f38919a91f25f4b5ffb455d6aaaf150f7e5529c100ce62d6d92826a7 + 1778d809bdf60232ae21ce8a437eca8223f45ac37f6487452ce626f549b3b5fdee26afd2072e4bc7 + 5833c2464c805246155289f4 + ").to_vec(); h.read_ack(&secret, &ack[0..super::V4_ACK_PACKET_SIZE]).unwrap(); assert_eq!(h.state, super::HandshakeState::ReadingAckEip8); @@ -497,21 +495,21 @@ mod test { let mut h = create_handshake(Some(&remote)); let secret = "49a7b37aa6f6645917e7b807e9d1c00d4fa71f18343b0d4122a4d2df64dd6fee".parse().unwrap(); let ack = - "\ - 01f004076e58aae772bb101ab1a8e64e01ee96e64857ce82b1113817c6cdd52c09d26f7b90981cd7\ - ae835aeac72e1573b8a0225dd56d157a010846d888dac7464baf53f2ad4e3d584531fa203658fab0\ - 3a06c9fd5e35737e417bc28c1cbf5e5dfc666de7090f69c3b29754725f84f75382891c561040ea1d\ - dc0d8f381ed1b9d0d4ad2a0ec021421d847820d6fa0ba66eaf58175f1b235e851c7e2124069fbc20\ - 2888ddb3ac4d56bcbd1b9b7eab59e78f2e2d400905050f4a92dec1c4bdf797b3fc9b2f8e84a482f3\ - d800386186712dae00d5c386ec9387a5e9c9a1aca5a573ca91082c7d68421f388e79127a5177d4f8\ - 590237364fd348c9611fa39f78dcdceee3f390f07991b7b47e1daa3ebcb6ccc9607811cb17ce51f1\ - c8c2c5098dbdd28fca547b3f58c01a424ac05f869f49c6a34672ea2cbbc558428aa1fe48bbfd6115\ - 8b1b735a65d99f21e70dbc020bfdface9f724a0d1fb5895db971cc81aa7608baa0920abb0a565c9c\ - 436e2fd13323428296c86385f2384e408a31e104670df0791d93e743a3a5194ee6b076fb6323ca59\ - 3011b7348c16cf58f66b9633906ba54a2ee803187344b394f75dd2e663a57b956cb830dd7a908d4f\ - 39a2336a61ef9fda549180d4ccde21514d117b6c6fd07a9102b5efe710a32af4eeacae2cb3b1dec0\ - 35b9593b48b9d3ca4c13d245d5f04169b0b1\ - ".from_hex().unwrap(); + hex!(" + 01f004076e58aae772bb101ab1a8e64e01ee96e64857ce82b1113817c6cdd52c09d26f7b90981cd7 + ae835aeac72e1573b8a0225dd56d157a010846d888dac7464baf53f2ad4e3d584531fa203658fab0 + 3a06c9fd5e35737e417bc28c1cbf5e5dfc666de7090f69c3b29754725f84f75382891c561040ea1d + dc0d8f381ed1b9d0d4ad2a0ec021421d847820d6fa0ba66eaf58175f1b235e851c7e2124069fbc20 + 2888ddb3ac4d56bcbd1b9b7eab59e78f2e2d400905050f4a92dec1c4bdf797b3fc9b2f8e84a482f3 + d800386186712dae00d5c386ec9387a5e9c9a1aca5a573ca91082c7d68421f388e79127a5177d4f8 + 590237364fd348c9611fa39f78dcdceee3f390f07991b7b47e1daa3ebcb6ccc9607811cb17ce51f1 + c8c2c5098dbdd28fca547b3f58c01a424ac05f869f49c6a34672ea2cbbc558428aa1fe48bbfd6115 + 8b1b735a65d99f21e70dbc020bfdface9f724a0d1fb5895db971cc81aa7608baa0920abb0a565c9c + 436e2fd13323428296c86385f2384e408a31e104670df0791d93e743a3a5194ee6b076fb6323ca59 + 3011b7348c16cf58f66b9633906ba54a2ee803187344b394f75dd2e663a57b956cb830dd7a908d4f + 39a2336a61ef9fda549180d4ccde21514d117b6c6fd07a9102b5efe710a32af4eeacae2cb3b1dec0 + 35b9593b48b9d3ca4c13d245d5f04169b0b1 + ").to_vec(); h.read_ack(&secret, &ack[0..super::V4_ACK_PACKET_SIZE]).unwrap(); assert_eq!(h.state, super::HandshakeState::ReadingAckEip8);