Extract Machine from ethcore (#10949)

* Add client-traits crate
Move the BlockInfo trait to new crate

* New crate `machine`
Contains code extracted from ethcore that defines `Machine`, `Externalities` and other execution related code.

* Use new machine and client-traits crates in ethcore

* Use new crates machine and client-traits instead of ethcore where appropriate

* Fix tests

* Don't re-export so many types from ethcore::client

* Fixing more fallout from removing re-export

* fix test

* More fallout from not re-exporting types

* Add some docs

* cleanup

* import the macro edition style

* Tweak docs

* Add missing import

* remove unused ethabi_derive imports

* Use latest ethabi-contract
This commit is contained in:
David 2019-08-13 12:33:34 +02:00 committed by GitHub
parent 509fda727b
commit 73f4564b66
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
107 changed files with 1042 additions and 583 deletions

276
Cargo.lock generated
View File

@ -9,7 +9,7 @@ dependencies = [
"keccak-hash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"keccak-hasher 0.1.1",
"kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@ -25,7 +25,7 @@ dependencies = [
"keccak-hash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"keccak-hasher 0.1.1",
"kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"memory-db 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -33,7 +33,7 @@ dependencies = [
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"patricia-trie-ethereum 0.1.0",
"pod 0.1.0",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp_compress 0.1.0",
"serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
"trace 0.1.0",
@ -147,7 +147,7 @@ version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -422,6 +422,14 @@ dependencies = [
"rpassword 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "client-traits"
version = "0.1.0"
dependencies = [
"common-types 0.1.0",
"ethereum-types 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "cloudabi"
version = "0.0.3"
@ -465,7 +473,7 @@ dependencies = [
"parity-snappy 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-util-mem 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"patricia-trie-ethereum 0.1.0",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp_derive 0.1.0",
"rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"unexpected 0.1.0",
@ -492,7 +500,7 @@ dependencies = [
"handlebars 0.32.4 (registry+https://github.com/rust-lang/crates.io-index)",
"itertools 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)",
"itertools-num 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
@ -763,7 +771,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
"humantime 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"termcolor 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -803,7 +811,7 @@ dependencies = [
[[package]]
name = "ethabi-contract"
version = "8.0.0"
version = "8.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
@ -827,7 +835,7 @@ dependencies = [
"either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethereum-types 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"keccak-hash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"memmap 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"primal 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
@ -857,12 +865,13 @@ dependencies = [
"account-state 0.1.0",
"ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
"blooms-db 0.1.0",
"client-traits 0.1.0",
"common-types 0.1.0",
"criterion 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
"crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
"env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-contract 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-contract 8.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-derive 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethash 1.12.0",
"ethcore-accounts 0.1.0",
@ -890,8 +899,9 @@ dependencies = [
"kvdb-rocksdb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"len-caching-lock 0.1.1",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"machine 0.1.0",
"macros 0.1.0",
"memory-cache 0.1.0",
"num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
@ -905,7 +915,7 @@ dependencies = [
"rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
"rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"rayon 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp_compress 0.1.0",
"rlp_derive 0.1.0",
"rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -934,7 +944,7 @@ dependencies = [
"ethereum-types 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethkey 0.3.0",
"ethstore 0.2.1",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
@ -957,13 +967,13 @@ dependencies = [
"keccak-hash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"kvdb-memorydb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-util-mem 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
"rayon 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp_compress 0.1.0",
"rlp_derive 0.1.0",
"rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -987,7 +997,7 @@ dependencies = [
"ethjson 0.1.0",
"ethkey 0.3.0",
"keccak-hash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"num 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-crypto 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1012,7 +1022,7 @@ dependencies = [
"kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-util-mem 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp_derive 0.1.0",
]
@ -1023,7 +1033,7 @@ dependencies = [
"crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
"fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
"futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)",
"num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1038,6 +1048,7 @@ name = "ethcore-light"
version = "1.12.0"
dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"client-traits 0.1.0",
"common-types 0.1.0",
"derive_more 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
"error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1058,7 +1069,8 @@ dependencies = [
"keccak-hasher 0.1.1",
"kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"kvdb-memorydb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"machine 0.1.0",
"memory-cache 0.1.0",
"memory-db 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1066,7 +1078,7 @@ dependencies = [
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"patricia-trie-ethereum 0.1.0",
"rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp_derive 0.1.0",
"serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1087,7 +1099,7 @@ dependencies = [
"atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
"env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1102,7 +1114,7 @@ dependencies = [
"env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)",
"error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-contract 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-contract 8.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-derive 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethash 1.12.0",
"ethcore-call-contract 0.1.0",
@ -1113,12 +1125,12 @@ dependencies = [
"hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)",
"keccak-hash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-runtime 0.1.0",
"parity-util-mem 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"price-info 1.12.0",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1142,7 +1154,7 @@ dependencies = [
"libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-crypto 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-snappy 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1165,7 +1177,7 @@ dependencies = [
"ipnetwork 0.12.8 (registry+https://github.com/rust-lang/crates.io-index)",
"keccak-hash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1174,7 +1186,7 @@ dependencies = [
"parity-snappy 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1188,11 +1200,12 @@ name = "ethcore-private-tx"
version = "1.0.0"
dependencies = [
"account-state 0.1.0",
"client-traits 0.1.0",
"common-types 0.1.0",
"derive_more 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
"env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-contract 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-contract 8.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-derive 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethcore 1.12.0",
"ethcore-call-contract 0.1.0",
@ -1204,14 +1217,15 @@ dependencies = [
"fetch 0.1.0",
"futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)",
"keccak-hash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"machine 0.1.0",
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-crypto 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-util-mem 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"patricia-trie-ethereum 0.1.0",
"rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp_derive 0.1.0",
"rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1235,7 +1249,7 @@ dependencies = [
"common-types 0.1.0",
"env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-contract 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-contract 8.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-derive 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethcore 1.12.0",
"ethcore-accounts 0.1.0",
@ -1250,7 +1264,7 @@ dependencies = [
"kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"kvdb-rocksdb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-crypto 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-runtime 0.1.0",
@ -1282,7 +1296,7 @@ dependencies = [
"ethereum-types 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"kvdb-rocksdb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
"trace-time 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -1296,7 +1310,7 @@ dependencies = [
"jsonrpc-core 12.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"jsonrpc-tcp-server 12.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"keccak-hash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1306,6 +1320,7 @@ dependencies = [
name = "ethcore-sync"
version = "1.12.0"
dependencies = [
"client-traits 0.1.0",
"common-types 0.1.0",
"enum_primitive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1325,7 +1340,8 @@ dependencies = [
"keccak-hasher 0.1.1",
"kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"kvdb-memorydb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"machine 0.1.0",
"macros 0.1.0",
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-runtime 0.1.0",
@ -1333,7 +1349,7 @@ dependencies = [
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
"rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"trace-time 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"triehash-ethereum 0.2.0",
@ -1371,7 +1387,7 @@ dependencies = [
"eth-secp256k1 0.5.7 (git+https://github.com/paritytech/rust-secp256k1)",
"ethereum-types 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-crypto 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-wordlist 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1407,7 +1423,7 @@ dependencies = [
"ethkey 0.3.0",
"itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-crypto 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-wordlist 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1449,7 +1465,7 @@ dependencies = [
"ethereum-types 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"keccak-hash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"memory-cache 0.1.0",
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-util-mem 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1552,7 +1568,7 @@ dependencies = [
"http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
"hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)",
"hyper-rustls 0.16.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
"url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -1668,7 +1684,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"aho-corasick 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)",
"fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"memchr 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -1684,7 +1700,7 @@ dependencies = [
"futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)",
"http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
"indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
"string 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1701,7 +1717,7 @@ version = "0.32.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"pest 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
"pest_derive 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
"quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1798,7 +1814,7 @@ dependencies = [
"httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"itoa 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1852,7 +1868,7 @@ dependencies = [
"attohttpc 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
"bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
"http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
"url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
"xmltree 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1871,7 +1887,7 @@ name = "impl-rlp"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@ -1976,7 +1992,7 @@ dependencies = [
"combine 3.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
"error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
"jni-sys 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -1997,12 +2013,12 @@ dependencies = [
"keccak-hasher 0.1.1",
"kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"kvdb-memorydb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"memory-db 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-util-mem 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@ -2011,7 +2027,7 @@ version = "12.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2036,7 +2052,7 @@ dependencies = [
"hyper 0.12.19 (registry+https://github.com/rust-lang/crates.io-index)",
"jsonrpc-core 12.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"jsonrpc-server-utils 12.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2049,7 +2065,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"jsonrpc-core 12.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"jsonrpc-server-utils 12.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-tokio-ipc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2061,7 +2077,7 @@ version = "12.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"jsonrpc-core 12.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -2075,7 +2091,7 @@ dependencies = [
"globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"jsonrpc-core 12.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2089,7 +2105,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"jsonrpc-core 12.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"jsonrpc-server-utils 12.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -2101,7 +2117,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"jsonrpc-core 12.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"jsonrpc-server-utils 12.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
"ws 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2247,12 +2263,12 @@ name = "log"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "log"
version = "0.4.6"
version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2274,6 +2290,40 @@ dependencies = [
"toolshed 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "machine"
version = "0.1.0"
dependencies = [
"account-state 0.1.0",
"client-traits 0.1.0",
"common-types 0.1.0",
"crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-contract 8.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-derive 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethcore 1.12.0",
"ethcore-builtin 0.1.0",
"ethcore-call-contract 0.1.0",
"ethcore-io 1.12.0",
"ethereum-types 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethjson 0.1.0",
"ethkey 0.3.0",
"evm 0.1.0",
"keccak-hash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"macros 0.1.0",
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"state-db 0.1.0",
"tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
"trace 0.1.0",
"trie-vm-factories 0.1.0",
"vm 0.1.0",
]
[[package]]
name = "macros"
version = "0.1.0"
@ -2354,7 +2404,7 @@ version = "0.1.0"
dependencies = [
"kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"kvdb-rocksdb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"macros 0.1.0",
"tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -2388,7 +2438,7 @@ dependencies = [
"iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
"slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2401,7 +2451,7 @@ version = "2.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"lazycell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)",
"slab 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -2411,7 +2461,7 @@ name = "mio-named-pipes"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)",
"miow 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2484,8 +2534,9 @@ dependencies = [
name = "node-filter"
version = "1.12.0"
dependencies = [
"common-types 0.1.0",
"ethabi 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-contract 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-contract 8.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-derive 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethcore 1.12.0",
"ethcore-io 1.12.0",
@ -2493,7 +2544,7 @@ dependencies = [
"ethcore-network-devp2p 1.12.0",
"ethereum-types 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"kvdb-memorydb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2664,7 +2715,7 @@ dependencies = [
"ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
"failure 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -2677,6 +2728,7 @@ dependencies = [
"blooms-db 0.1.0",
"clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)",
"cli-signer 1.4.0",
"client-traits 0.1.0",
"common-types 0.1.0",
"ctrlc 1.1.1 (git+https://github.com/paritytech/rust-ctrlc.git)",
"dir 0.1.2",
@ -2707,7 +2759,7 @@ dependencies = [
"keccak-hash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"kvdb-rocksdb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"migration-rocksdb 0.1.0",
"node-filter 1.12.0",
"num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2728,7 +2780,7 @@ dependencies = [
"pretty_assertions 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"regex 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"registrar 0.0.1",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rpassword 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2748,14 +2800,14 @@ name = "parity-hash-fetch"
version = "1.12.0"
dependencies = [
"ethabi 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-contract 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-contract 8.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-derive 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethereum-types 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"fake-fetch 0.0.1",
"fetch 0.1.0",
"futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)",
"keccak-hash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"mime 0.3.12 (registry+https://github.com/rust-lang/crates.io-index)",
"mime_guess 2.0.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2771,13 +2823,14 @@ name = "parity-ipfs-api"
version = "1.12.0"
dependencies = [
"cid 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"common-types 0.1.0",
"ethcore 1.12.0",
"ethereum-types 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"jsonrpc-core 12.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"jsonrpc-http-server 12.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"multihash 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -2790,8 +2843,8 @@ dependencies = [
"ethkey 0.3.0",
"kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"kvdb-memorydb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2830,6 +2883,7 @@ dependencies = [
"account-state 0.1.0",
"ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
"cid 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"client-traits 0.1.0",
"common-types 0.1.0",
"eip-712 0.1.0",
"ethash 1.12.0",
@ -2858,7 +2912,8 @@ dependencies = [
"jsonrpc-pubsub 12.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"jsonrpc-ws-server 12.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"keccak-hash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"machine 0.1.0",
"macros 0.1.0",
"multihash 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"order-stat 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2871,7 +2926,7 @@ dependencies = [
"pretty_assertions 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
"rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2896,7 +2951,7 @@ dependencies = [
"jsonrpc-core 12.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"jsonrpc-ws-server 12.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"keccak-hash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-rpc 1.12.0",
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2938,7 +2993,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
"futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"mio-named-pipes 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"miow 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2954,14 +3009,14 @@ version = "1.12.0"
dependencies = [
"common-types 0.1.0",
"ethabi 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-contract 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-contract 8.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-derive 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethcore 1.12.0",
"ethcore-sync 1.12.0",
"ethereum-types 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"keccak-hash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-hash-fetch 1.12.0",
@ -2994,7 +3049,7 @@ name = "parity-version"
version = "2.7.0"
dependencies = [
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
"target_info 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
@ -3079,7 +3134,7 @@ dependencies = [
"keccak-hasher 0.1.1",
"memory-db 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"trie-db 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -3181,11 +3236,11 @@ dependencies = [
"keccak-hash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"keccak-hasher 0.1.1",
"kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"macros 0.1.0",
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"patricia-trie-ethereum 0.1.0",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.89 (registry+https://github.com/rust-lang/crates.io-index)",
"trie-db 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)",
@ -3207,7 +3262,7 @@ dependencies = [
"fake-fetch 0.0.1",
"fetch 0.1.0",
"futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-runtime 0.1.0",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -3312,7 +3367,7 @@ version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -3556,7 +3611,7 @@ name = "registrar"
version = "0.0.1"
dependencies = [
"ethabi 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-contract 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-contract 8.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
"ethabi-derive 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)",
"keccak-hash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -3595,10 +3650,9 @@ dependencies = [
[[package]]
name = "rlp"
version = "0.4.0"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -3608,7 +3662,7 @@ version = "0.1.0"
dependencies = [
"elastic-array 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@ -3617,7 +3671,7 @@ version = "0.1.0"
dependencies = [
"proc-macro2 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)",
"quote 0.6.8 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"syn 0.15.26 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -3671,7 +3725,7 @@ version = "0.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"ring 0.14.6 (registry+https://github.com/rust-lang/crates.io-index)",
"sct 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
"untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
@ -3827,7 +3881,7 @@ version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"term 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -3907,7 +3961,7 @@ dependencies = [
"keccak-hash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"keccak-hasher 0.1.1",
"kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"memory-cache 0.1.0",
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -3927,7 +3981,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
name = "stats"
version = "0.1.0"
dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@ -4191,7 +4245,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
"futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@ -4214,7 +4268,7 @@ dependencies = [
"crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
"futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)",
"num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
"parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
@ -4263,7 +4317,7 @@ dependencies = [
"crossbeam-deque 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
"crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
"futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-executor 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
@ -4296,7 +4350,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
"futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
@ -4312,7 +4366,7 @@ dependencies = [
"futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)",
"iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)",
"mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-io 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
@ -4353,11 +4407,11 @@ dependencies = [
"ethereum-types 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"evm 0.1.0",
"kvdb 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-util-mem 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp_derive 0.1.0",
"vm 0.1.0",
]
@ -4367,7 +4421,7 @@ name = "trace-time"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@ -4375,7 +4429,7 @@ name = "transaction-pool"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
"trace-time 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -4393,7 +4447,7 @@ dependencies = [
"elastic-array 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)",
"hash-db 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)",
"hashmap_core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -4425,7 +4479,7 @@ version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"hash-db 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@ -4604,7 +4658,7 @@ dependencies = [
"keccak-hash 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-bytes 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"patricia-trie-ethereum 0.1.0",
"rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@ -4628,7 +4682,7 @@ version = "0.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"try-lock 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -4640,7 +4694,7 @@ dependencies = [
"env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)",
"ethereum-types 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)",
"pwasm-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
"vm 0.1.0",
@ -4730,7 +4784,7 @@ dependencies = [
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
"httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)",
"mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
@ -4868,7 +4922,7 @@ dependencies = [
"checksum error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "07e791d3be96241c77c43846b665ef1384606da2cd2a48730abe606a12906e02"
"checksum eth-secp256k1 0.5.7 (git+https://github.com/paritytech/rust-secp256k1)" = "<none>"
"checksum ethabi 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b312e5740d6e0369491ebe81a8752f7797b70e495530f28bbb7cc967ded3d77c"
"checksum ethabi-contract 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "272b7fcfada8d9b2631d75693385b505efc826752dbc7ae1815e56b35d5a3f9f"
"checksum ethabi-contract 8.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e0d6314f57a5451692753696f40903bacf870adf65d452911ab6b15bf6be41f8"
"checksum ethabi-derive 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "65cdef3199bf5d1821dc53b5ab992f853a13b2e28d7a63983095d9d61fae58d3"
"checksum ethbloom 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3932e82d64d347a045208924002930dc105a138995ccdc1479d0f05f0359f17c"
"checksum ethereum-types 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "62d1bc682337e2c5ec98930853674dd2b4bd5d0d246933a9e98e5280f7c76c5f"
@ -4950,7 +5004,7 @@ dependencies = [
"checksum lock_api 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "775751a3e69bde4df9b38dd00a1b5d6ac13791e4223d4a0506577f0dd27cfb7a"
"checksum lock_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ed946d4529956a20f2d63ebe1b69996d5a2137c91913fe3ebbeff957f5bca7ff"
"checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b"
"checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6"
"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7"
"checksum lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c"
"checksum lunarity-lexer 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8a1670671f305792567116d4660e6e5bd785d6fa973e817c3445c0a7a54cecb6"
"checksum malloc_size_of_derive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "35adee9ed962cf7d07d62cb58bc45029f3227f5b5b86246caa8632f06c187bc3"
@ -5054,7 +5108,7 @@ dependencies = [
"checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5"
"checksum ring 0.14.6 (registry+https://github.com/rust-lang/crates.io-index)" = "426bc186e3e95cac1e4a4be125a4aca7e84c2d616ffc02244eef36e2a60a093c"
"checksum ripemd160 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad5112e0dbbb87577bfbc56c42450235e3012ce336e29c5befd7807bd626da4a"
"checksum rlp 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3b0d56c1450bfbef1181fdeb78b902dc1d23178de77c23d705317508e03d1b7c"
"checksum rlp 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fa2f7f9c612d133da9101ef7bcd3e603ca7098901eca852e71f87a83dd3e6b59"
"checksum rpassword 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b273c91bd242ca03ad6d71c143b6f17a48790e61f21a6c78568fa2b6774a24a4"
"checksum rprompt 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1601f32bc5858aae3cbfa1c645c96c4d820cc5c16be0194f089560c00b6eb625"
"checksum rustc-demangle 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "bcfe5b13211b4d78e5c2cadfebd7769197d95c639c35a50057eb4c05de811395"

View File

@ -31,6 +31,7 @@ fdlimit = "0.1"
ctrlc = { git = "https://github.com/paritytech/rust-ctrlc.git" }
jsonrpc-core = "12.0.0"
parity-bytes = "0.1"
client-traits = { path = "ethcore/client-traits" }
common-types = { path = "ethcore/types" }
ethcore = { path = "ethcore", features = ["parity"] }
ethcore-accounts = { path = "accounts", optional = true }

View File

@ -10,6 +10,7 @@ authors = ["Parity Technologies <admin@parity.io>"]
account-db = { path = "account-db" }
ansi_term = "0.11"
blooms-db = { path = "../util/blooms-db", optional = true }
client-traits = { path = "./client-traits" }
common-types = { path = "types" }
crossbeam-utils = "0.6"
env_logger = { version = "0.5", optional = true }
@ -44,6 +45,7 @@ lazy_static = "1.2.0"
len-caching-lock = { path = "../util/len-caching-lock" }
log = "0.4"
lru-cache = "0.1"
machine = { path = "./machine" }
macros = { path = "../util/macros" }
memory-cache = { path = "../util/memory-cache" }
num_cpus = "1.2"
@ -85,6 +87,7 @@ rlp_compress = { path = "../util/rlp-compress" }
serde_json = "1.0"
tempdir = "0.3"
trie-standardmap = "0.12.4"
machine = { path = "./machine", features = ["test-helpers"] }
[features]
parity = ["work-notify", "price-info", "stratum"]

View File

@ -0,0 +1,12 @@
[package]
description = "Trait definitions relative the ethereum client"
name = "client-traits"
version = "0.1.0"
authors = ["Parity Technologies <admin@parity.io>"]
edition = "2018"
license = "GPL-3.0"
[dependencies]
ethereum-types = "0.6.0"
common-types = { path = "../types" }

View File

@ -0,0 +1,37 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
use ethereum_types::{Address, H256};
use common_types::{
header::Header,
encoded,
ids::BlockId,
};
/// Provides various information on a block by it's ID
pub trait BlockInfo {
/// Get raw block header data by block id.
fn block_header(&self, id: BlockId) -> Option<encoded::Header>;
/// Get the best block header.
fn best_block_header(&self) -> Header;
/// Get raw block data by block header hash.
fn block(&self, id: BlockId) -> Option<encoded::Block>;
/// Get address code hash at given block's state.
fn code_hash(&self, address: &Address, id: BlockId) -> Option<H256>;
}

View File

@ -9,12 +9,14 @@ authors = ["Parity Technologies <admin@parity.io>"]
[dependencies]
log = "0.4"
parity-bytes = "0.1"
client-traits = { path = "../client-traits" }
common-types = { path = "../types" }
derive_more = "0.14.0"
ethcore = { path = ".."}
ethcore-db = { path = "../db" }
ethcore-blockchain = { path = "../blockchain" }
ethereum-types = "0.6.0"
machine = { path = "../machine" }
memory-db = "0.12.4"
trie-db = "0.12.4"
patricia-trie-ethereum = { path = "../../util/patricia-trie-ethereum" }

View File

@ -54,6 +54,7 @@ extern crate serde_derive;
extern crate log;
extern crate bincode;
extern crate client_traits;
extern crate common_types;
extern crate ethcore_blockchain;
extern crate ethcore_db;
@ -71,6 +72,7 @@ extern crate failsafe;
extern crate futures;
extern crate itertools;
extern crate keccak_hasher;
extern crate machine;
extern crate memory_db;
extern crate trie_db as trie;
extern crate patricia_trie_ethereum as ethtrie;

View File

@ -39,8 +39,8 @@ use net::{
use cache::Cache;
use request::{self as basic_request, Request as NetworkRequest};
use self::request::CheckedRequest;
use machine::executed::ExecutionResult;
pub use ethcore::executed::ExecutionResult;
pub use self::request::{Request, Response, HeaderRef, Error as ValidityError};
pub use self::request_guard::{RequestGuard, Error as RequestError};
pub use self::response_guard::{ResponseGuard, Error as ResponseGuardError, Inner as ResponseGuardInner};

View File

@ -1099,7 +1099,8 @@ mod tests {
use trie::Recorder;
use hash::keccak;
use ethcore::client::{BlockChainClient, BlockInfo, TestBlockChainClient, EachBlockWith};
use ethcore::client::{BlockChainClient, TestBlockChainClient, EachBlockWith};
use client_traits::BlockInfo;
use common_types::header::Header;
use common_types::encoded;
use common_types::receipt::{Receipt, TransactionOutcome};

View File

@ -19,11 +19,14 @@
use std::sync::Arc;
use common_types::blockchain_info::BlockChainInfo;
use common_types::encoded;
use common_types::ids::BlockId;
use common_types::transaction::PendingTransaction;
use ethcore::client::{BlockChainClient, ProvingBlockChainClient, ChainInfo, BlockInfo as ClientBlockInfo};
use common_types::{
blockchain_info::BlockChainInfo,
encoded,
ids::BlockId,
transaction::PendingTransaction,
};
use ethcore::client::{BlockChainClient, ProvingBlockChainClient, ChainInfo};
use client_traits::BlockInfo as ClientBlockInfo;
use ethereum_types::H256;
use parking_lot::RwLock;

View File

@ -0,0 +1,46 @@
[package]
description = "Ethereum state machine"
name = "machine"
version = "0.1.0"
authors = ["Parity Technologies <admin@parity.io>"]
edition = "2018"
license = "GPL-3.0"
[dependencies]
account-state = { path = "../account-state" }
client-traits = { path = "../client-traits" }
common-types = { path = "../types" }
crossbeam-utils = "0.6"
ethabi = "8.0.0"
ethabi-contract = "8.0.0"
ethabi-derive = "8.0.0"
ethcore-builtin = { path = "../builtin" }
ethcore-call-contract = { path = "../call-contract" }
ethcore-io = { path = "../../util/io" }
ethereum-types = "0.6.0"
# Used for tests in other crates through the `test-helpers` feature
ethjson = { path = "../../json", optional = true }
evm = { path = "../evm" }
keccak-hash = "0.2.0"
log = "0.4"
lru-cache = "0.1.2"
parity-bytes = "0.1.0"
parking_lot = "0.8.0"
rlp = "0.4.2"
state-db = { path = "../state-db" }
trace = { path = "../trace" }
trie-vm-factories = { path = "../trie-vm-factories" }
vm = { path = "../vm" }
[dev-dependencies]
ethcore = { path = "../", features = ["test-helpers"] }
ethcore-io = { path = "../../util/io" }
ethjson = { path = "../../json" }
ethkey = { path = "../../accounts/ethkey" }
macros = { path = "../../util/macros" }
rustc-hex = "1.0"
tempdir = "0.3"
trace = { path = "../trace" }
[features]
test-helpers = ["ethjson"]

View File

@ -17,10 +17,10 @@
//! Transaction execution format module.
use ethereum_types::{U256, Address};
use bytes::Bytes;
use parity_bytes::Bytes;
use vm;
use trace::{VMTrace, FlatTrace};
use types::{
use common_types::{
state_diff::StateDiff,
log_entry::LogEntry,
errors::ExecutionError,

View File

@ -0,0 +1,101 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
//! `ExecutedBlock` is the underlying data structure used by other block types to store block
//! related info. As a block goes through processing we use different types to signal its state:
//! "open", "closed", "locked", "sealed". They all embed an `ExecutedBlock`.
use std::{
collections::HashSet,
sync::Arc,
};
use ethereum_types::{H256, U256};
use account_state::State;
use common_types::{
header::Header,
receipt::Receipt,
transaction::SignedTransaction,
};
use state_db::StateDB;
use trace::Tracing;
use vm::{EnvInfo, LastHashes};
/// An internal type for a block's common elements.
#[derive(Clone)]
pub struct ExecutedBlock {
/// Executed block header.
pub header: Header,
/// Executed transactions.
pub transactions: Vec<SignedTransaction>,
/// Uncles.
pub uncles: Vec<Header>,
/// Transaction receipts.
pub receipts: Vec<Receipt>,
/// Hashes of already executed transactions.
pub transactions_set: HashSet<H256>,
/// Underlying state.
pub state: State<StateDB>,
/// Transaction traces.
pub traces: Tracing,
/// Hashes of last 256 blocks.
pub last_hashes: Arc<LastHashes>,
}
impl ExecutedBlock {
/// Create a new block from the given `state`.
pub fn new(state: State<StateDB>, last_hashes: Arc<LastHashes>, tracing: bool) -> ExecutedBlock {
ExecutedBlock {
header: Default::default(),
transactions: Default::default(),
uncles: Default::default(),
receipts: Default::default(),
transactions_set: Default::default(),
state,
traces: if tracing {
Tracing::enabled()
} else {
Tracing::Disabled
},
last_hashes,
}
}
/// Get the environment info concerning this block.
pub fn env_info(&self) -> EnvInfo {
// TODO: memoise.
EnvInfo {
number: self.header.number(),
author: self.header.author().clone(),
timestamp: self.header.timestamp(),
difficulty: self.header.difficulty().clone(),
last_hashes: self.last_hashes.clone(),
gas_used: self.receipts.last().map_or(U256::zero(), |r| r.gas_used),
gas_limit: self.header.gas_limit().clone(),
}
}
/// Get mutable access to a state.
pub fn state_mut(&mut self) -> &mut State<StateDB> {
&mut self.state
}
/// Get mutable reference to traces.
pub fn traces_mut(&mut self) -> &mut Tracing {
&mut self.traces
}
}

View File

@ -15,30 +15,36 @@
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
//! Transaction Execution environment.
use std::cmp;
use std::convert::TryFrom;
use std::sync::Arc;
use hash::keccak;
use std::{cmp, convert::TryFrom, sync::Arc};
use crossbeam_utils::thread;
use ethereum_types::{H256, U256, U512, Address};
use bytes::{Bytes, BytesRef};
use keccak_hash::keccak;
use parity_bytes::{Bytes, BytesRef};
use rlp::RlpStream;
use log::trace;
use account_state::{Backend as StateBackend, State, CleanupMode};
use substate::Substate;
use machine::Machine;
use evm::{CallType, Finalize, FinalizationResult};
use vm::{
self, EnvInfo, CreateContractAddress, ReturnData, CleanDustMode, ActionParams,
ActionValue, Schedule, TrapError, ResumeCall, ResumeCreate
};
use trie_vm_factories::VmFactory;
use externalities::*;
use trace::{self, Tracer, VMTracer};
use types::{
use common_types::{
errors::ExecutionError,
transaction::{Action, SignedTransaction},
};
use transaction_ext::Transaction;
use crossbeam_utils::thread;
pub use executed::{Executed, ExecutionResult};
use crate::{
Machine,
substate::Substate,
externalities::{Externalities, OutputPolicy, OriginInfo}, // todo: make explicit
transaction_ext::Transaction,
executed::Executed,
};
#[cfg(debug_assertions)]
/// Roughly estimate what stack size each level of evm depth will use. (Debug build)
@ -58,8 +64,6 @@ const STACK_SIZE_ENTRY_OVERHEAD: usize = 20 * 1024;
/// Returns new address created from address, nonce, and code hash
pub fn contract_address(address_scheme: CreateContractAddress, sender: &Address, nonce: &U256, code: &[u8]) -> (Address, Option<H256>) {
use rlp::RlpStream;
match address_scheme {
CreateContractAddress::FromSenderAndNonce => {
let mut stream = RlpStream::new_list(2);
@ -995,7 +999,7 @@ impl<'a, B: 'a + StateBackend> Executive<'a, B> {
tracer: &mut T,
vm_tracer: &mut V
) -> vm::Result<FinalizationResult> where T: Tracer, V: VMTracer {
let local_stack_size = ::io::LOCAL_STACK_SIZE.with(|sz| sz.get());
let local_stack_size = ethcore_io::LOCAL_STACK_SIZE.with(|sz| sz.get());
let depth_threshold = local_stack_size.saturating_sub(STACK_SIZE_ENTRY_OVERHEAD) / STACK_SIZE_PER_DEPTH;
if stack_depth != depth_threshold {
@ -1086,7 +1090,7 @@ impl<'a, B: 'a + StateBackend> Executive<'a, B> {
tracer: &mut T,
vm_tracer: &mut V,
) -> vm::Result<FinalizationResult> where T: Tracer, V: VMTracer {
let local_stack_size = ::io::LOCAL_STACK_SIZE.with(|sz| sz.get());
let local_stack_size = ethcore_io::LOCAL_STACK_SIZE.with(|sz| sz.get());
let depth_threshold = local_stack_size.saturating_sub(STACK_SIZE_ENTRY_OVERHEAD) / STACK_SIZE_PER_DEPTH;
if stack_depth != depth_threshold {
@ -1208,36 +1212,52 @@ impl<'a, B: 'a + StateBackend> Executive<'a, B> {
#[cfg(test)]
#[allow(dead_code)]
mod tests {
use std::sync::Arc;
use std::str::FromStr;
use std::collections::HashSet;
use std::{
sync::Arc,
str::FromStr,
collections::HashSet,
};
use rustc_hex::FromHex;
use ethkey::{Generator, Random};
use super::*;
use ethereum_types::{H256, U256, U512, Address, BigEndianHash};
use vm::{ActionParams, ActionValue, CallType, EnvInfo, CreateContractAddress};
use evm::{Factory, VMType};
use machine::Machine;
use account_state::CleanupMode;
use substate::Substate;
use test_helpers::{get_temp_state_with_factory, get_temp_state};
use trace::trace;
use trace::{FlatTrace, Tracer, NoopTracer, ExecutiveTracer};
use trace::{VMTrace, VMOperation, VMExecutedOperation, MemoryDiff, StorageDiff, VMTracer, NoopVMTracer, ExecutiveVMTracer};
use types::{
use common_types::{
errors::ExecutionError,
transaction::{Action, Transaction},
};
use crate::spec;
use ethkey::{Generator, Random};
use evm::{Factory, VMType, evm_test, evm_test_ignore};
use macros::vec_into;
use vm::{ActionParams, ActionValue, CallType, EnvInfo, CreateContractAddress};
use ::trace::{
trace,
FlatTrace, Tracer, NoopTracer, ExecutiveTracer,
VMTrace, VMOperation, VMExecutedOperation, MemoryDiff, StorageDiff, VMTracer, NoopVMTracer, ExecutiveVMTracer,
};
use super::*;
use crate::{
Machine,
substate::Substate,
test_helpers::{
new_frontier_test_machine,
new_byzantium_test_machine,
new_constantinople_test_machine,
new_kovan_wasm_test_machine,
},
};
use ethcore::test_helpers::{get_temp_state_with_factory, get_temp_state};
fn make_frontier_machine(max_depth: usize) -> Machine {
let mut machine = spec::new_frontier_test_machine();
let mut machine = new_frontier_test_machine();
machine.set_schedule_creation_rules(Box::new(move |s, _| s.max_depth = max_depth));
machine
}
fn make_byzantium_machine(max_depth: usize) -> Machine {
let mut machine = spec::new_byzantium_test_machine();
let mut machine = new_byzantium_test_machine();
machine.set_schedule_creation_rules(Box::new(move |s, _| s.max_depth = max_depth));
machine
}
@ -1591,7 +1611,7 @@ mod tests {
let mut state = get_temp_state();
state.add_balance(&sender, &U256::from(100), CleanupMode::NoEmpty).unwrap();
let info = EnvInfo::default();
let machine = spec::new_byzantium_test_machine();
let machine = new_byzantium_test_machine();
let schedule = machine.schedule(info.number);
let mut substate = Substate::new();
let mut tracer = ExecutiveTracer::default();
@ -2123,7 +2143,7 @@ mod tests {
params.code = Some(Arc::new(code));
params.value = ActionValue::Transfer(U256::zero());
let info = EnvInfo::default();
let machine = spec::new_byzantium_test_machine();
let machine = new_byzantium_test_machine();
let schedule = machine.schedule(info.number);
let mut substate = Substate::new();
@ -2159,7 +2179,7 @@ mod tests {
state.init_code(&y2, "600060006000600061100162fffffff4".from_hex().unwrap()).unwrap();
let info = EnvInfo::default();
let machine = spec::new_constantinople_test_machine();
let machine = new_constantinople_test_machine();
let schedule = machine.schedule(info.number);
assert_eq!(state.storage_at(&operating_address, &k).unwrap(), BigEndianHash::from_uint(&U256::from(0)));
@ -2229,7 +2249,7 @@ mod tests {
info.number = 100;
// Network with wasm activated at block 10
let machine = spec::new_kovan_wasm_test_machine();
let machine = new_kovan_wasm_test_machine();
let mut output = [0u8; 20];
let FinalizationResult { gas_left: result, return_data, .. } = {

View File

@ -15,21 +15,36 @@
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
//! Transaction Execution environment.
use std::cmp;
use std::sync::Arc;
use std::{cmp, sync::Arc};
use ethereum_types::{H256, U256, Address, BigEndianHash};
use bytes::Bytes;
use parity_bytes::Bytes;
use log::{debug, trace, warn};
use account_state::{Backend as StateBackend, State, CleanupMode};
use substate::Substate;
use machine::Machine;
use executive::*;
use common_types::{
transaction::UNSIGNED_SENDER,
log_entry::LogEntry,
};
use trace::{Tracer, VMTracer};
use vm::{
self, ActionParams, ActionValue, EnvInfo, CallType, Schedule,
Ext, ContractCreateResult, MessageCallResult, CreateContractAddress,
ReturnData, TrapKind
};
use types::transaction::UNSIGNED_SENDER;
use trace::{Tracer, VMTracer};
use crate::{
Machine,
substate::Substate,
executive::{
Executive,
contract_address,
into_message_call_result,
into_contract_create_result,
cleanup_mode
},
};
/// Policy for handling output data on `RETURN` opcode.
pub enum OutputPolicy {
@ -97,18 +112,18 @@ impl<'a, T: 'a, V: 'a, B: 'a> Externalities<'a, T, V, B>
static_flag: bool,
) -> Self {
Externalities {
state: state,
env_info: env_info,
depth: depth,
stack_depth: stack_depth,
origin_info: origin_info,
substate: substate,
machine: machine,
schedule: schedule,
output: output,
tracer: tracer,
vm_tracer: vm_tracer,
static_flag: static_flag,
state,
env_info,
depth,
stack_depth,
origin_info,
substate,
machine,
schedule,
output,
tracer,
vm_tracer,
static_flag,
}
}
}
@ -137,10 +152,6 @@ impl<'a, T: 'a, V: 'a, B: 'a> Ext for Externalities<'a, T, V, B>
}
}
fn is_static(&self) -> bool {
return self.static_flag
}
fn exists(&self, address: &Address) -> vm::Result<bool> {
self.state.exists(address).map_err(Into::into)
}
@ -178,9 +189,9 @@ impl<'a, T: 'a, V: 'a, B: 'a> Ext for Externalities<'a, T, V, B>
origin: self.origin_info.origin.clone(),
gas: self.machine.params().eip210_contract_gas,
gas_price: 0.into(),
code: code,
code_hash: code_hash,
code_version: code_version,
code,
code_hash,
code_version,
data: Some(data.as_bytes().to_vec()),
call_type: CallType::Call,
params_type: vm::ParamsType::Separate,
@ -240,7 +251,7 @@ impl<'a, T: 'a, V: 'a, B: 'a> Ext for Externalities<'a, T, V, B>
gas_price: self.origin_info.gas_price,
value: ActionValue::Transfer(*value),
code: Some(Arc::new(code.to_vec())),
code_hash: code_hash,
code_hash,
code_version: *parent_version,
data: None,
call_type: CallType::None,
@ -296,11 +307,11 @@ impl<'a, T: 'a, V: 'a, B: 'a> Ext for Externalities<'a, T, V, B>
origin: self.origin_info.origin.clone(),
gas: *gas,
gas_price: self.origin_info.gas_price,
code: code,
code_hash: code_hash,
code_version: code_version,
code,
code_hash,
code_version,
data: Some(data.to_vec()),
call_type: call_type,
call_type,
params_type: vm::ParamsType::Separate,
};
@ -333,6 +344,21 @@ impl<'a, T: 'a, V: 'a, B: 'a> Ext for Externalities<'a, T, V, B>
Ok(self.state.code_size(address)?)
}
fn log(&mut self, topics: Vec<H256>, data: &[u8]) -> vm::Result<()> {
if self.static_flag {
return Err(vm::Error::MutableCallInStaticContext);
}
let address = self.origin_info.address.clone();
self.substate.logs.push(LogEntry {
address,
topics,
data: data.to_vec()
});
Ok(())
}
fn ret(self, gas: &U256, data: &ReturnData, apply_state: bool) -> vm::Result<U256>
where Self: Sized {
match self.output {
@ -356,23 +382,6 @@ impl<'a, T: 'a, V: 'a, B: 'a> Ext for Externalities<'a, T, V, B>
}
}
fn log(&mut self, topics: Vec<H256>, data: &[u8]) -> vm::Result<()> {
use types::log_entry::LogEntry;
if self.static_flag {
return Err(vm::Error::MutableCallInStaticContext);
}
let address = self.origin_info.address.clone();
self.substate.logs.push(LogEntry {
address: address,
topics: topics,
data: data.to_vec()
});
Ok(())
}
fn suicide(&mut self, refund_address: &Address) -> vm::Result<()> {
if self.static_flag {
return Err(vm::Error::MutableCallInStaticContext);
@ -430,19 +439,27 @@ impl<'a, T: 'a, V: 'a, B: 'a> Ext for Externalities<'a, T, V, B>
fn trace_executed(&mut self, gas_used: U256, stack_push: &[U256], mem: &[u8]) {
self.vm_tracer.trace_executed(gas_used, stack_push, mem)
}
fn is_static(&self) -> bool {
return self.static_flag
}
}
#[cfg(test)]
mod tests {
use std::str::FromStr;
use ethereum_types::{U256, Address};
use evm::{EnvInfo, Ext, CallType};
use account_state::State;
use substate::Substate;
use test_helpers::get_temp_state;
use super::*;
use ethcore::test_helpers::get_temp_state;
use trace::{NoopTracer, NoopVMTracer};
use std::str::FromStr;
use crate::spec;
use crate::{
machine::Machine,
substate::Substate,
test_helpers,
};
use super::*;
fn get_test_origin() -> OriginInfo {
OriginInfo {
@ -467,7 +484,7 @@ mod tests {
struct TestSetup {
state: State<::state_db::StateDB>,
machine: ::machine::Machine,
machine: Machine,
schedule: Schedule,
sub_state: Substate,
env_info: EnvInfo
@ -481,15 +498,15 @@ mod tests {
impl TestSetup {
fn new() -> Self {
let machine = spec::new_test_machine();
let machine = test_helpers::load_machine(include_bytes!("../../res/null_morden.json"));
let env_info = get_test_env_info();
let schedule = machine.schedule(env_info.number);
TestSetup {
state: get_temp_state(),
schedule: schedule,
machine: machine,
schedule,
machine,
sub_state: Substate::new(),
env_info: env_info,
env_info,
}
}
}

View File

@ -0,0 +1,36 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
//! This crate provides a state machine and the facilities needed to execute transactions and the
//! code contained therein, as well as contract based transaction permissions. All ethereum
//! engines embed a `Machine`.
pub mod executed;
pub mod executed_block;
pub mod executive;
pub mod externalities;
pub mod machine;
pub mod substate;
pub mod transaction_ext;
pub mod tx_filter;
pub use crate::{
executed_block::ExecutedBlock,
machine::Machine
};
#[cfg(any(test, feature = "test-helpers"))]
pub mod test_helpers;

View File

@ -22,7 +22,9 @@ use std::sync::Arc;
use ethereum_types::{U256, H256, Address};
use rlp::Rlp;
use types::{
use log::debug;
use common_types::{
BlockNumber,
header::Header,
engines::{
@ -35,15 +37,18 @@ use types::{
use vm::{CallType, ActionParams, ActionValue, ParamsType};
use vm::{EnvInfo, Schedule};
use block::ExecutedBlock;
use builtin::Builtin;
use call_contract::CallContract;
use client::BlockInfo;
use executive::Executive;
use account_state::CleanupMode;
use substate::Substate;
use client_traits::BlockInfo;
use ethcore_builtin::Builtin;
use ethcore_call_contract::CallContract;
use trace::{NoopTracer, NoopVMTracer};
use tx_filter::TransactionFilter;
use crate::{
executed_block::ExecutedBlock,
executive::Executive,
substate::Substate,
tx_filter::TransactionFilter,
};
/// Parity tries to round block.gas_limit to multiple of this constant
pub const PARITY_GAS_LIMIT_DETERMINANT: U256 = U256([37, 0, 0, 0]);
@ -93,7 +98,7 @@ impl Machine {
/// Execute a call as the system address. Block environment information passed to the
/// VM is modified to have its gas limit bounded at the upper limit of possible used
/// gases including this system call, capped at the maximum value able to be
/// gas, including this system call, capped at the maximum value able to be
/// represented by U256. This system call modifies the block state, but discards other
/// information. If suicides, logs or refunds happen within the system call, they
/// will not be executed or recorded. Gas used by this system call will not be counted
@ -400,9 +405,10 @@ fn round_block_gas_limit(gas_limit: U256, lower_limit: U256, upper_limit: U256)
#[cfg(test)]
mod tests {
use super::*;
use std::str::FromStr;
use crate::spec;
use common_types::header::Header;
use super::*;
use ethcore::spec;
fn get_default_ethash_extensions() -> EthashExtensions {
EthashExtensions {
@ -425,7 +431,7 @@ mod tests {
Default::default(),
ethparams,
);
let mut header = ::types::header::Header::new();
let mut header = Header::new();
header.set_number(15);
let res = machine.verify_transaction_basic(&transaction, &header);
@ -445,8 +451,8 @@ mod tests {
ethparams,
);
let mut parent = ::types::header::Header::new();
let mut header = ::types::header::Header::new();
let mut parent = Header::new();
let mut header = Header::new();
header.set_number(1);
// this test will work for this constant only

View File

@ -15,9 +15,10 @@
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
//! Execution environment substate.
use std::collections::HashSet;
use ethereum_types::Address;
use types::log_entry::LogEntry;
use common_types::log_entry::LogEntry;
/// State changes which should be applied in finalize,
/// after transaction is fully executed.
@ -58,7 +59,7 @@ impl Substate {
#[cfg(test)]
mod tests {
use ethereum_types::Address;
use types::log_entry::LogEntry;
use common_types::log_entry::LogEntry;
use super::Substate;
#[test]

View File

@ -0,0 +1,60 @@
// Copyright 2015-2019 Parity Technologies (UK) Ltd.
// This file is part of Parity Ethereum.
// Parity Ethereum is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Parity Ethereum is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
//! Provide facilities to create `Machine` instances for testing various networks.
use common_types::engines::params::CommonParams;
use ethjson;
use crate::Machine;
pub fn load_machine(reader: &[u8]) -> Machine {
let spec = ethjson::spec::Spec::load(reader).expect("chain spec is invalid");
let builtins = spec.accounts.builtins().into_iter().map(|p| (p.0.into(), From::from(p.1))).collect();
let params = CommonParams::from(spec.params);
if let ethjson::spec::Engine::Ethash(ref ethash) = spec.engine {
Machine::with_ethash_extensions(params, builtins, ethash.params.clone().into())
} else {
Machine::regular(params, builtins)
}
}
/// Create a new Foundation Frontier-era chain spec as though it never changes to Homestead.
pub fn new_frontier_test_machine() -> Machine { load_machine(include_bytes!("../../res/ethereum/frontier_test.json")) }
/// Create a new Foundation Homestead-era chain spec as though it never changed from Frontier.
pub fn new_homestead_test_machine() -> Machine { load_machine(include_bytes!("../../res/ethereum/homestead_test.json")) }
/// Create a new Foundation Homestead-EIP210-era chain spec as though it never changed from Homestead/Frontier.
pub fn new_eip210_test_machine() -> Machine { load_machine(include_bytes!("../../res/ethereum/eip210_test.json")) }
/// Create a new Foundation Byzantium era spec.
pub fn new_byzantium_test_machine() -> Machine { load_machine(include_bytes!("../../res/ethereum/byzantium_test.json")) }
/// Create a new Foundation Constantinople era spec.
pub fn new_constantinople_test_machine() -> Machine { load_machine(include_bytes!("../../res/ethereum/constantinople_test.json")) }
/// Create a new Foundation St. Peter's (Contantinople Fix) era spec.
pub fn new_constantinople_fix_test_machine() -> Machine { load_machine(include_bytes!("../../res/ethereum/st_peters_test.json")) }
/// Create a new Musicoin-MCIP3-era spec.
pub fn new_mcip3_test_machine() -> Machine { load_machine(include_bytes!("../../res/ethereum/mcip3_test.json")) }
/// Create new Kovan spec with wasm activated at certain block
pub fn new_kovan_wasm_test_machine() -> Machine { load_machine(include_bytes!("../../res/ethereum/kovan_wasm_test.json")) }

View File

@ -17,7 +17,7 @@
//! Ethereum transaction
use evm::Schedule;
use types::transaction::{self, Action};
use common_types::transaction::{self, Action};
/// Extends transaction with gas verification method.
pub trait Transaction {

View File

@ -16,22 +16,25 @@
//! Smart contract based transaction filter.
use ethereum_types::{H256, U256, Address};
use lru_cache::LruCache;
use ethabi::FunctionOutputDecoder;
use ethabi_contract::use_contract;
use ethereum_types::{H256, U256, Address};
use log::{trace, error};
use lru_cache::LruCache;
use call_contract::CallContract;
use client::{BlockId, BlockInfo};
use ethcore_call_contract::CallContract;
use client_traits::BlockInfo;
use parking_lot::Mutex;
use types::{
use common_types::{
BlockNumber,
ids::BlockId,
engines::params::CommonParams,
transaction::{Action, SignedTransaction}
};
use hash::KECCAK_EMPTY;
use keccak_hash::KECCAK_EMPTY;
use_contract!(transact_acl_deprecated, "res/contracts/tx_acl_deprecated.json");
use_contract!(transact_acl, "res/contracts/tx_acl.json");
use_contract!(transact_acl_deprecated, "res/tx_acl_deprecated.json");
use_contract!(transact_acl, "res/tx_acl.json");
const MAX_CACHE_SIZE: usize = 4096;
@ -146,21 +149,29 @@ impl TransactionFilter {
mod test {
use std::sync::Arc;
use std::str::FromStr;
use spec::Spec;
use client::{BlockChainClient, Client, ClientConfig, BlockId};
use miner::Miner;
use ethereum_types::{U256, Address};
use io::IoChannel;
use ethkey::{Secret, KeyPair};
use super::TransactionFilter;
use types::transaction::{Transaction, Action};
use tempdir::TempDir;
use test_helpers;
use ethereum_types::{U256, Address};
use common_types::{
ids::BlockId,
transaction::{Transaction, Action}
};
use ethcore::{
client::{BlockChainClient, Client, ClientConfig},
spec::Spec,
miner::Miner,
test_helpers,
};
use ethkey::{Secret, KeyPair};
use ethcore_io::IoChannel;
use super::TransactionFilter;
/// Contract code: https://gist.github.com/VladLupashevskyi/84f18eabb1e4afadf572cf92af3e7e7f
#[test]
fn transaction_filter() {
let spec_data = include_str!("../res/tx_permission_tests/contract_ver_2_genesis.json");
let spec_data = include_str!("../../res/tx_permission_tests/contract_ver_2_genesis.json");
let db = test_helpers::new_db();
let tempdir = TempDir::new("").unwrap();
@ -239,7 +250,7 @@ mod test {
/// Contract code: https://gist.github.com/arkpar/38a87cb50165b7e683585eec71acb05a
#[test]
fn transaction_filter_deprecated() {
let spec_data = include_str!("../res/tx_permission_tests/deprecated_contract_genesis.json");
let spec_data = include_str!("../../res/tx_permission_tests/deprecated_contract_genesis.json");
let db = test_helpers::new_db();
let tempdir = TempDir::new("").unwrap();

View File

@ -7,6 +7,7 @@ version = "1.12.0"
authors = ["Parity Technologies <admin@parity.io>"]
[dependencies]
common-types = { path = "../types" }
ethcore = { path = ".."}
ethcore-network = { path = "../../util/network" }
ethcore-network-devp2p = { path = "../../util/network-devp2p" }

View File

@ -16,6 +16,7 @@
//! Smart contract based node filter.
extern crate common_types;
extern crate ethabi;
extern crate ethcore;
extern crate ethcore_network as network;
@ -40,8 +41,8 @@ extern crate log;
use std::collections::{HashMap, VecDeque};
use std::sync::Weak;
use ethcore::client::{BlockChainClient, BlockId, ChainNotify, NewBlocks};
use common_types::ids::BlockId;
use ethcore::client::{BlockChainClient, ChainNotify, NewBlocks};
use ethereum_types::{H256, Address};
use ethabi::FunctionOutputDecoder;
use network::{ConnectionFilter, ConnectionDirection};
@ -68,7 +69,7 @@ pub const CACHE_SIZE: usize = MAX_NODES_IN_TABLE + 1024;
impl NodeFilter {
/// Create a new instance. Accepts a contract address.
pub fn new(client: Weak<BlockChainClient>, contract_address: Address) -> NodeFilter {
pub fn new(client: Weak<dyn BlockChainClient>, contract_address: Address) -> NodeFilter {
NodeFilter {
client,
contract_address,

View File

@ -7,6 +7,7 @@ authors = ["Parity Technologies <admin@parity.io>"]
[dependencies]
account-state = { path = "../account-state" }
client-traits = { path = "../client-traits" }
common-types = { path = "../types" }
derive_more = "0.14.0"
ethabi = "8.0"
@ -24,6 +25,7 @@ futures = "0.1"
parity-util-mem = "0.1"
keccak-hash = "0.2.0"
log = "0.4"
machine = { path = "../machine" }
parity-bytes = "0.1"
parity-crypto = "0.4.0"
parking_lot = "0.8"

View File

@ -20,7 +20,7 @@ use std::sync::Arc;
use parking_lot::RwLock;
use ethereum_types::{H256, Address};
use call_contract::{CallContract, RegistryInfo};
use ethcore::client::BlockId;
use types::ids::BlockId;
use ethabi::FunctionOutputDecoder;
const ACL_CHECKER_CONTRACT_REGISTRY_NAME: &'static str = "secretstore_acl_checker";

View File

@ -24,6 +24,7 @@ mod error;
mod log;
extern crate account_state;
extern crate client_traits;
extern crate common_types as types;
extern crate ethabi;
extern crate ethcore;
@ -37,6 +38,7 @@ extern crate fetch;
extern crate futures;
extern crate parity_util_mem;
extern crate keccak_hash as hash;
extern crate machine;
extern crate parity_bytes as bytes;
extern crate parity_crypto as crypto;
extern crate parking_lot;
@ -87,14 +89,18 @@ use parking_lot::RwLock;
use bytes::Bytes;
use ethkey::{Signature, recover, public_to_address};
use io::IoChannel;
use ethcore::executive::{Executive, TransactOptions};
use ethcore::executed::{Executed};
use types::transaction::{SignedTransaction, Transaction, Action, UnverifiedTransaction};
use ethcore::{contract_address as ethcore_contract_address};
use ethcore::client::{
Client, ChainNotify, NewBlocks, ChainMessageType, ClientIoMessage, BlockId,
Call, BlockInfo
use machine::{
executive::{Executive, TransactOptions, contract_address as ethcore_contract_address},
executed::Executed,
};
use types::{
ids::BlockId,
transaction::{SignedTransaction, Transaction, Action, UnverifiedTransaction}
};
use ethcore::client::{
Client, ChainNotify, NewBlocks, ChainMessageType, ClientIoMessage, Call
};
use client_traits::BlockInfo;
use ethcore::miner::{self, Miner, MinerService, pool_client::NonceCache};
use state_db::StateDB;
use account_state::State;

View File

@ -24,6 +24,7 @@ extern crate ethcore_private_tx;
extern crate ethkey;
extern crate keccak_hash as hash;
extern crate rustc_hex;
extern crate machine;
#[macro_use]
extern crate log;
@ -33,13 +34,15 @@ use rustc_hex::{FromHex, ToHex};
use types::ids::BlockId;
use types::transaction::{Transaction, Action};
use ethcore::CreateContractAddress;
use ethcore::client::BlockChainClient;
use ethcore::executive::contract_address;
use ethcore::miner::Miner;
use ethcore::test_helpers::{generate_dummy_client, push_block_with_transactions};
use ethcore::spec;
use ethcore::{
CreateContractAddress,
client::BlockChainClient,
test_helpers::{generate_dummy_client, push_block_with_transactions},
miner::Miner,
spec,
};
use ethkey::{Secret, KeyPair, Signature};
use machine::executive::contract_address;
use hash::keccak;
use ethcore_private_tx::{NoopEncryptor, Provider, ProviderConfig, StoringKeyProvider};

View File

@ -28,11 +28,10 @@
//! `LockedBlock` is a version of a `ClosedBlock` that cannot be reopened. It can be sealed
//! using an engine.
//!
//! `ExecutedBlock` is an underlying data structure used by all structs above to store block
//! related info.
//! `ExecutedBlock` from the `machine` crate is the underlying data structure used by all structs
//! above to store block related info.
use std::{cmp, ops};
use std::collections::HashSet;
use std::sync::Arc;
use bytes::Bytes;
@ -45,7 +44,7 @@ use account_state::State;
use trace::Tracing;
use triehash::ordered_trie_root;
use unexpected::{Mismatch, OutOfBounds};
use vm::{EnvInfo, LastHashes};
use vm::LastHashes;
use hash::keccak;
use rlp::{RlpStream, Encodable, encode_list};
@ -57,6 +56,7 @@ use types::{
receipt::{Receipt, TransactionOutcome},
};
use executive_state::ExecutiveState;
use machine::ExecutedBlock;
/// Block that is ready for transactions to be added.
///
@ -94,71 +94,6 @@ pub struct SealedBlock {
block: ExecutedBlock,
}
/// An internal type for a block's common elements.
#[derive(Clone)]
pub struct ExecutedBlock {
/// Executed block header.
pub header: Header,
/// Executed transactions.
pub transactions: Vec<SignedTransaction>,
/// Uncles.
pub uncles: Vec<Header>,
/// Transaction receipts.
pub receipts: Vec<Receipt>,
/// Hashes of already executed transactions.
pub transactions_set: HashSet<H256>,
/// Underlying state.
pub state: State<StateDB>,
/// Transaction traces.
pub traces: Tracing,
/// Hashes of last 256 blocks.
pub last_hashes: Arc<LastHashes>,
}
impl ExecutedBlock {
/// Create a new block from the given `state`.
fn new(state: State<StateDB>, last_hashes: Arc<LastHashes>, tracing: bool) -> ExecutedBlock {
ExecutedBlock {
header: Default::default(),
transactions: Default::default(),
uncles: Default::default(),
receipts: Default::default(),
transactions_set: Default::default(),
state,
traces: if tracing {
Tracing::enabled()
} else {
Tracing::Disabled
},
last_hashes,
}
}
/// Get the environment info concerning this block.
pub fn env_info(&self) -> EnvInfo {
// TODO: memoise.
EnvInfo {
number: self.header.number(),
author: self.header.author().clone(),
timestamp: self.header.timestamp(),
difficulty: self.header.difficulty().clone(),
last_hashes: self.last_hashes.clone(),
gas_used: self.receipts.last().map_or(U256::zero(), |r| r.gas_used),
gas_limit: self.header.gas_limit().clone(),
}
}
/// Get mutable access to a state.
pub fn state_mut(&mut self) -> &mut State<StateDB> {
&mut self.state
}
/// Get mutable reference to traces.
pub fn traces_mut(&mut self) -> &mut Tracing {
&mut self.traces
}
}
/// Trait for an object that owns an `ExecutedBlock`
pub trait Drain {
/// Returns `ExecutedBlock`

View File

@ -46,13 +46,18 @@ use client::{
BlockChainReset
};
use client::{
BlockId, TransactionId, UncleId, TraceId, ClientConfig, BlockChainClient,
ClientConfig, BlockChainClient,
TraceFilter, CallAnalytics, Mode,
ChainNotify, NewBlocks, ChainRoute, PruningInfo, ProvingBlockChainClient, EngineInfo, ChainMessageType,
IoClient, BadBlocks, bad_blocks, BlockInfo, ClientIoMessage,
IoClient, BadBlocks, bad_blocks, ClientIoMessage,
};
use client_traits::BlockInfo;
use engines::{Engine, EpochTransition, ForkChoice};
use executive::{Executive, Executed, TransactOptions, contract_address};
use machine::{
executed::Executed,
executive::{Executive, TransactOptions, contract_address},
transaction_ext::Transaction,
};
use trie_vm_factories::{Factories, VmFactory};
use miner::{Miner, MinerService};
use snapshot::{self, io as snapshot_io, SnapshotClient};
@ -61,7 +66,6 @@ use account_state::State;
use executive_state;
use state_db::StateDB;
use trace::{self, TraceDB, ImportRequest as TraceImportRequest, LocalizedTrace, Database as TraceDatabase};
use transaction_ext::Transaction;
use types::{
ancestry_action::AncestryAction,
BlockNumber,
@ -74,6 +78,7 @@ use types::{
machine::{AuxiliaryData, Call as MachineCall},
},
errors::{EngineError, ExecutionError, BlockError, EthcoreError, SnapshotError, ImportError, EthcoreResult},
ids::{BlockId, TransactionId, UncleId, TraceId},
transaction::{self, LocalizedTransaction, UnverifiedTransaction, SignedTransaction, Action, CallError},
filter::Filter,
log_entry::LocalizedLogEntry,
@ -1759,7 +1764,7 @@ impl BlockChainClient for Client {
self.config.spec_name.clone()
}
fn chain(&self) -> Arc<BlockProvider> {
fn chain(&self) -> Arc<dyn BlockProvider> {
self.chain.read().clone()
}
@ -2652,20 +2657,27 @@ impl IoChannelQueue {
#[cfg(test)]
mod tests {
use ethereum_types::{H256, Address};
#[test]
fn should_not_cache_details_before_commit() {
use client::{BlockChainClient, ChainInfo};
use test_helpers::{generate_dummy_client, get_good_dummy_block_hash};
use types::{
encoded,
ids::{BlockId, TransactionId},
log_entry::{LogEntry, LocalizedLogEntry},
receipt::{Receipt, LocalizedReceipt, TransactionOutcome},
transaction::{Transaction, LocalizedTransaction, Action},
};
use test_helpers::{generate_dummy_client, get_good_dummy_block_hash, generate_dummy_client_with_data};
use std::thread;
use std::time::Duration;
use std::sync::Arc;
use std::sync::atomic::{AtomicBool, Ordering};
use kvdb::DBTransaction;
use blockchain::ExtrasInsert;
use types::encoded;
use hash::keccak;
use super::transaction_receipt;
use ethkey::KeyPair;
#[test]
fn should_not_cache_details_before_commit() {
let client = generate_dummy_client(0);
let genesis = client.chain_info().best_block_hash;
let (new_hash, new_block) = get_good_dummy_block_hash();
@ -2693,9 +2705,6 @@ mod tests {
#[test]
fn should_return_block_receipts() {
use client::{BlockChainClient, BlockId, TransactionId};
use test_helpers::{generate_dummy_client_with_data};
let client = generate_dummy_client_with_data(2, 2, &[1.into(), 1.into()]);
let receipts = client.localized_block_receipts(BlockId::Latest).unwrap();
@ -2719,13 +2728,6 @@ mod tests {
#[test]
fn should_return_correct_log_index() {
use hash::keccak;
use super::transaction_receipt;
use ethkey::KeyPair;
use types::log_entry::{LogEntry, LocalizedLogEntry};
use types::receipt::{Receipt, LocalizedReceipt, TransactionOutcome};
use types::transaction::{Transaction, LocalizedTransaction, Action};
// given
let key = KeyPair::from_secret_slice(keccak("test").as_bytes()).unwrap();
let secret = key.secret();

View File

@ -21,7 +21,7 @@ use std::sync::Arc;
use ethereum_types::{H256, U256, H160};
use {trie_vm_factories, journaldb, trie, kvdb_memorydb};
use kvdb::{self, KeyValueDB};
use {state_db, client, executive, trace, db, spec};
use {state_db, client, trace, db, spec};
use pod::PodState;
use types::{
errors::EthcoreError,
@ -35,7 +35,11 @@ use evm::{VMType, FinalizationResult};
use vm::{self, ActionParams, CreateContractAddress};
use ethtrie;
use account_state::{CleanupMode, State};
use substate::Substate;
use machine::{
executive,
substate::Substate,
};
use executive_state::ExecutiveState;
/// EVM test Error.

View File

@ -35,19 +35,18 @@ pub use self::io_message::ClientIoMessage;
pub use self::test_client::{TestBlockChainClient, EachBlockWith, TestState};
pub use self::chain_notify::{ChainNotify, NewBlocks, ChainRoute, ChainRouteType, ChainMessageType};
pub use self::traits::{
Nonce, Balance, ChainInfo, BlockInfo, ReopenBlock, PrepareOpenBlock, TransactionInfo, ScheduleInfo, ImportSealedBlock, BroadcastProposalBlock, ImportBlock,
Nonce, Balance, ChainInfo, ReopenBlock, PrepareOpenBlock, TransactionInfo, ScheduleInfo, ImportSealedBlock, BroadcastProposalBlock, ImportBlock,
StateOrBlock, StateClient, Call, EngineInfo, AccountData, BlockChain, BlockProducer, SealedBlockImporter, BadBlocks,
BlockChainReset
BlockChainReset, BlockChainClient, EngineClient, ProvingBlockChainClient, IoClient
};
pub use account_state::state::StateInfo;
pub use self::traits::{BlockChainClient, EngineClient, ProvingBlockChainClient, IoClient};
pub use types::ids::*;
pub use types::trace_filter::Filter as TraceFilter;
pub use types::pruning_info::PruningInfo;
pub use types::call_analytics::CallAnalytics;
use types::{
trace_filter::Filter as TraceFilter,
pruning_info::PruningInfo,
call_analytics::CallAnalytics,
};
pub use executive::{Executed, Executive, TransactOptions};
pub use vm::{LastHashes, EnvInfo};
pub use verification::VerifierType;

View File

@ -37,33 +37,37 @@ use kvdb_memorydb;
use parking_lot::RwLock;
use rlp::{Rlp, RlpStream};
use rustc_hex::FromHex;
use types::transaction::{self, Transaction, LocalizedTransaction, SignedTransaction, Action, CallError};
use types::BlockNumber;
use types::basic_account::BasicAccount;
use types::encoded;
use types::errors::{EthcoreError as Error, EthcoreResult};
use types::filter::Filter;
use types::header::Header;
use types::log_entry::LocalizedLogEntry;
use types::pruning_info::PruningInfo;
use types::receipt::{Receipt, LocalizedReceipt, TransactionOutcome};
use types::view;
use types::views::BlockView;
use types::{
BlockNumber,
encoded,
ids::{BlockId, TransactionId, UncleId, TraceId},
basic_account::BasicAccount,
errors::{EthcoreError as Error, EthcoreResult},
transaction::{self, Transaction, LocalizedTransaction, SignedTransaction, Action, CallError},
filter::Filter,
trace_filter::Filter as TraceFilter,
call_analytics::CallAnalytics,
header::Header,
log_entry::LocalizedLogEntry,
pruning_info::PruningInfo,
receipt::{Receipt, LocalizedReceipt, TransactionOutcome},
view,
views::BlockView,
};
use vm::Schedule;
use block::{OpenBlock, SealedBlock, ClosedBlock};
use call_contract::{CallContract, RegistryInfo};
use client::{
Nonce, Balance, ChainInfo, ReopenBlock, TransactionInfo,
PrepareOpenBlock, BlockChainClient, BlockChainInfo, BlockStatus, BlockId, Mode,
TransactionId, UncleId, TraceId, TraceFilter, LastHashes, CallAnalytics,
ProvingBlockChainClient, ScheduleInfo, ImportSealedBlock, BroadcastProposalBlock, ImportBlock, StateOrBlock,
Call, StateClient, EngineInfo, AccountData, BlockChain, BlockProducer, SealedBlockImporter, IoClient,
BadBlocks
PrepareOpenBlock, BlockChainClient, BlockChainInfo, BlockStatus, Mode,
LastHashes, ProvingBlockChainClient, ScheduleInfo, ImportSealedBlock, BroadcastProposalBlock,
ImportBlock, StateOrBlock, Call, StateClient, EngineInfo, AccountData, BlockChain, BlockProducer,
SealedBlockImporter, IoClient, BadBlocks
};
use client::BlockInfo;
use client_traits::BlockInfo;
use engines::Engine;
use executive::Executed;
use machine::executed::Executed;
use journaldb;
use miner::{self, Miner, MinerService};
use spec::{Spec, self};
@ -704,7 +708,7 @@ impl BlockChainClient for TestBlockChainClient {
}
}
fn chain(&self) -> Arc<BlockProvider> {
fn chain(&self) -> Arc<dyn BlockProvider> {
unimplemented!()
}

View File

@ -20,6 +20,7 @@ use std::sync::Arc;
use blockchain::{BlockReceipts, TreeRoute, BlockProvider};
use bytes::Bytes;
use call_contract::{CallContract, RegistryInfo};
use client_traits::BlockInfo;
use ethcore_miner::pool::VerifiedTransaction;
use ethereum_types::{H256, U256, Address};
use evm::Schedule;
@ -49,7 +50,7 @@ use vm::LastHashes;
use block::{OpenBlock, SealedBlock, ClosedBlock};
use client::Mode;
use engines::Engine;
use executive::Executed;
use machine::executed::Executed;
use account_state::state::StateInfo;
use trace::LocalizedTrace;
use verification::queue::kind::blocks::Unverified; // todo this is reexported from common_types
@ -114,21 +115,6 @@ pub trait ChainInfo {
fn chain_info(&self) -> BlockChainInfo;
}
/// Provides various information on a block by it's ID
pub trait BlockInfo {
/// Get raw block header data by block id.
fn block_header(&self, id: BlockId) -> Option<encoded::Header>;
/// Get the best block header.
fn best_block_header(&self) -> Header;
/// Get raw block data by block header hash.
fn block(&self, id: BlockId) -> Option<encoded::Block>;
/// Get address code hash at given block's state.
fn code_hash(&self, address: &Address, id: BlockId) -> Option<H256>;
}
/// Provides various information on a transaction by it's ID
pub trait TransactionInfo {
/// Get the hash of block that contains the transaction, if any.
@ -233,7 +219,8 @@ pub trait BlockChainClient : Sync + Send + AccountData + BlockChain + CallContra
.expect("code will return Some if given BlockId::Latest; qed")
}
fn chain(&self) -> Arc<BlockProvider>;
/// Get a reference to the `BlockProvider`.
fn chain(&self) -> Arc<dyn BlockProvider>;
/// Get block queue information.
fn queue_info(&self) -> BlockQueueInfo;

View File

@ -24,13 +24,15 @@ use std::sync::atomic::{AtomicUsize, AtomicBool, Ordering as AtomicOrdering};
use std::sync::{Weak, Arc};
use std::time::{UNIX_EPOCH, Duration};
use block::*;
use client::EngineClient;
use engines::{Engine, Seal, ConstructedVerifier};
use engines::block_reward;
use engines::block_reward::{BlockRewardContract, RewardKind};
use ethjson;
use machine::Machine;
use machine::{
ExecutedBlock,
Machine,
};
use hash::keccak;
use super::signer::EngineSigner;
use super::validator_set::{ValidatorSet, SimpleList, new_validator_set};

View File

@ -20,12 +20,14 @@ use std::sync::Weak;
use ethereum_types::{H256, H520};
use parking_lot::RwLock;
use ethkey::{self, Signature};
use block::*;
use engines::{Engine, Seal, ConstructedVerifier};
use engines::signer::EngineSigner;
use ethjson;
use client::EngineClient;
use machine::Machine;
use machine::{
Machine,
executed_block::ExecutedBlock,
};
use types::{
header::Header,
engines::{

View File

@ -22,7 +22,7 @@ use ethereum_types::{Address, U256};
use std::sync::Arc;
use hash::keccak;
use machine::Machine;
use machine::{Machine, ExecutedBlock};
use trace;
use types::{
BlockNumber,
@ -30,7 +30,6 @@ use types::{
};
use super::{SystemOrCodeCall, SystemOrCodeCallKind};
use trace::{Tracer, ExecutiveTracer, Tracing};
use block::ExecutedBlock;
use_contract!(block_reward_contract, "res/contracts/block_reward.json");

View File

@ -65,8 +65,7 @@ use std::thread;
use std::time;
use std::time::{Instant, Duration, SystemTime, UNIX_EPOCH};
use block::ExecutedBlock;
use client::{BlockId, EngineClient};
use client::EngineClient;
use engines::clique::util::{extract_signers, recover_creator};
use engines::{Engine, Seal, SealingState, EthashSeal};
use ethereum_types::{Address, H64, H160, H256, U256};
@ -74,7 +73,10 @@ use ethkey::Signature;
use hash::KECCAK_EMPTY_LIST_RLP;
use itertools::Itertools;
use lru_cache::LruCache;
use machine::Machine;
use machine::{
ExecutedBlock,
Machine,
};
use parking_lot::RwLock;
use rand::Rng;
use super::signer::EngineSigner;
@ -82,6 +84,7 @@ use unexpected::{Mismatch, OutOfBounds};
use time_utils::CheckedSystemTime;
use types::{
BlockNumber,
ids::BlockId,
header::Header,
engines::{
params::CommonParams,

View File

@ -32,11 +32,13 @@ use types::{
use unexpected::{OutOfBounds, Mismatch};
use block::ExecutedBlock;
use engines::block_reward::{self, BlockRewardContract, RewardKind};
use engines::{self, Engine};
use ethash::{self, quick_get_difficulty, slow_hash_block_number, EthashManager, OptimizeFor};
use machine::Machine;
use machine::{
ExecutedBlock,
Machine,
};
/// Number of blocks in an ethash snapshot.
// make dependent on difficulty increment divisor?

View File

@ -15,7 +15,10 @@
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
use engines::{Engine, Seal};
use machine::Machine;
use machine::{
ExecutedBlock,
Machine
};
use types::{
header::Header,
engines::{
@ -25,7 +28,6 @@ use types::{
errors::EthcoreError as Error,
};
use block::ExecutedBlock;
/// `InstantSeal` params.
#[derive(Default, Debug, PartialEq)]

View File

@ -60,11 +60,13 @@ use types::{
use snapshot::SnapshotComponents;
use client::EngineClient;
use ethkey::{Signature};
use machine::Machine;
use ethkey::Signature;
use machine::{
Machine,
executed_block::ExecutedBlock,
};
use ethereum_types::{H256, U256, Address};
use bytes::Bytes;
use block::ExecutedBlock;
/// Seal type.
#[derive(Debug, PartialEq, Eq)]
@ -91,7 +93,7 @@ pub enum SystemOrCodeCallKind {
}
/// Default SystemOrCodeCall implementation.
pub fn default_system_or_code_call<'a>(machine: &'a Machine, block: &'a mut ::block::ExecutedBlock) -> impl FnMut(SystemOrCodeCallKind, Vec<u8>) -> Result<Vec<u8>, String> + 'a {
pub fn default_system_or_code_call<'a>(machine: &'a Machine, block: &'a mut ExecutedBlock) -> impl FnMut(SystemOrCodeCallKind, Vec<u8>) -> Result<Vec<u8>, String> + 'a {
move |to, data| {
let result = match to {
SystemOrCodeCallKind::Address(address) => {

View File

@ -17,14 +17,16 @@
use engines::Engine;
use engines::block_reward::{self, RewardKind};
use ethereum_types::U256;
use machine::Machine;
use machine::{
ExecutedBlock,
Machine,
};
use types::{
BlockNumber,
header::Header,
engines::params::CommonParams,
errors::EthcoreError as Error,
};
use block::ExecutedBlock;
/// Params for a null engine.
#[derive(Clone, Default)]

View File

@ -152,7 +152,7 @@ mod tests {
use test_helpers::generate_dummy_client_with_spec;
use call_contract::CallContract;
use client::{BlockChainClient, ChainInfo};
use client::BlockInfo;
use client_traits::BlockInfo;
use super::super::ValidatorSet;
use super::ValidatorContract;

View File

@ -156,7 +156,7 @@ mod tests {
use hash::keccak;
use accounts::AccountProvider;
use client::{BlockChainClient, ChainInfo, ImportBlock};
use client::BlockInfo;
use client_traits::BlockInfo;
use engines::EpochChange;
use engines::validator_set::ValidatorSet;
use ethkey::Secret;

View File

@ -458,7 +458,7 @@ mod tests {
use accounts::AccountProvider;
use types::transaction::{Transaction, Action};
use client::{ChainInfo, ImportBlock};
use client::BlockInfo;
use client_traits::BlockInfo;
use ethkey::Secret;
use miner::{self, MinerService};
use test_helpers::{generate_dummy_client_with_spec, generate_dummy_client_with_spec_and_data};

View File

@ -18,10 +18,12 @@
//! `account-state` crates and contains everything that requires `Machine` or `Executive` (or types
//! thereof).
use machine::Machine;
use machine::{
machine::Machine,
executive::{Executive, TransactOptions},
executed::Executed,
};
use vm::EnvInfo;
use executive::{Executive, TransactOptions};
use executed::Executed;
use types::{
errors::{ExecutionError, EthcoreError as Error},
transaction::SignedTransaction,

View File

@ -18,24 +18,27 @@ use std::path::Path;
use std::sync::Arc;
use super::test_common::*;
use account_state::{Backend as StateBackend, State};
use substate::Substate;
use executive::*;
use evm::{VMType, Finalize};
use vm::{
self, ActionParams, CallType, Schedule, Ext,
ContractCreateResult, EnvInfo, MessageCallResult,
CreateContractAddress, ReturnData,
};
use externalities::*;
use machine::{
Machine,
externalities::{OutputPolicy, OriginInfo, Externalities},
substate::Substate,
executive::contract_address,
test_helpers::new_frontier_test_machine,
};
use test_helpers::get_temp_state;
use ethjson;
use trace::{Tracer, NoopTracer};
use trace::{VMTracer, NoopVMTracer};
use trace::{Tracer, NoopTracer, VMTracer, NoopVMTracer};
use bytes::Bytes;
use ethtrie;
use rlp::RlpStream;
use hash::keccak;
use machine::Machine;
use ethereum_types::BigEndianHash;
use crate::spec;

View File

@ -24,7 +24,7 @@ use types::{
errors::EthcoreError as Error,
transaction::UnverifiedTransaction
};
use transaction_ext::Transaction;
use machine::transaction_ext::Transaction;
/// Run transaction jsontests on a given folder.
pub fn run_test_path<H: FnMut(&str, HookType)>(p: &Path, skip: &[&'static str], h: &mut H) {

View File

@ -56,6 +56,7 @@
extern crate account_db;
extern crate account_state;
extern crate ansi_term;
extern crate client_traits;
extern crate common_types as types;
extern crate crossbeam_utils;
extern crate ethabi;
@ -83,6 +84,7 @@ extern crate kvdb_memorydb;
extern crate len_caching_lock;
extern crate lru_cache;
extern crate machine;
extern crate memory_cache;
extern crate num_cpus;
extern crate parity_bytes as bytes;
@ -125,8 +127,6 @@ extern crate env_logger;
#[cfg(test)]
extern crate serde_json;
#[macro_use]
extern crate ethabi_derive;
#[macro_use]
extern crate ethabi_contract;
#[macro_use]
@ -152,20 +152,12 @@ extern crate parity_runtime;
pub mod block;
pub mod client;
pub mod engines;
pub mod executed;
pub mod executive;
pub mod executive_state;
pub mod machine;
pub mod miner;
pub mod snapshot;
pub mod spec;
pub mod verification;
mod externalities;
mod substate;
mod transaction_ext;
mod tx_filter;
#[cfg(test)]
mod tests;
#[cfg(feature = "json-tests")]
@ -173,6 +165,5 @@ pub mod json_tests;
#[cfg(any(test, feature = "test-helpers"))]
pub mod test_helpers;
pub use executive::contract_address;
pub use evm::CreateContractAddress;
pub use trie::TrieSpec;

View File

@ -45,8 +45,10 @@ use types::transaction::{
};
use types::{
BlockNumber,
ids::TransactionId,
block::Block,
header::Header,
ids::BlockId,
engines::{SealingState},
errors::{EthcoreError as Error, ExecutionError},
receipt::RichReceipt,
@ -55,11 +57,10 @@ use using_queue::{UsingQueue, GetAction};
use block::{ClosedBlock, SealedBlock};
use client::{
BlockChain, ChainInfo, BlockProducer, SealedBlockImporter, Nonce, TransactionInfo, TransactionId, ClientIoMessage,
BlockChain, ChainInfo, BlockProducer, SealedBlockImporter, Nonce, TransactionInfo, ClientIoMessage,
};
use client::BlockId;
use engines::{Engine, Seal, EngineSigner};
use executive::contract_address;
use machine::executive::contract_address;
use spec::Spec;
use account_state::State;
use vm::CreateContractAddress;

View File

@ -32,15 +32,18 @@ use types::transaction::{
UnverifiedTransaction,
SignedTransaction,
};
use types::header::Header;
use types::{
header::Header,
ids::TransactionId,
};
use parking_lot::RwLock;
use call_contract::CallContract;
use client::{TransactionId, Nonce};
use client::BlockInfo;
use client::Nonce;
use client_traits::BlockInfo;
use engines::Engine;
use machine::transaction_ext::Transaction;
use miner;
use transaction_ext::Transaction;
/// Cache for state nonces.
#[derive(Debug, Clone)]

View File

@ -28,7 +28,8 @@ use super::{ManifestData, StateRebuilder, Rebuilder, RestorationStatus, Snapshot
use super::io::{SnapshotReader, LooseReader, SnapshotWriter, LooseWriter};
use blockchain::{BlockChain, BlockChainDB, BlockChainDBHandler};
use client::{BlockChainClient, Client, ChainInfo, BlockInfo, ClientIoMessage};
use client::{BlockChainClient, Client, ChainInfo, ClientIoMessage};
use client_traits::BlockInfo;
use engines::Engine;
use hash::keccak;
use types::{

View File

@ -22,7 +22,7 @@ use std::sync::Arc;
use tempdir::TempDir;
use blockchain::BlockProvider;
use client::{Client, ClientConfig, ImportBlock};
use client::BlockInfo;
use client_traits::BlockInfo;
use types::ids::BlockId;
use snapshot::io::{PackedReader, PackedWriter, SnapshotReader, SnapshotWriter};
use snapshot::service::{Service, ServiceParams};

View File

@ -17,7 +17,8 @@
//! Watcher for snapshot-related chain events.
use parking_lot::Mutex;
use client::{BlockInfo, Client, ChainNotify, NewBlocks, ClientIoMessage};
use client::{Client, ChainNotify, NewBlocks, ClientIoMessage};
use client_traits::BlockInfo;
use types::ids::BlockId;
use io::IoChannel;

View File

@ -14,9 +14,7 @@
// You should have received a copy of the GNU General Public License
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
//! Ethereum protocol module.
//!
//! Loads all protocols supported by parity-ethereum client.
//! Load chain specifications for all chains supported by the parity-ethereum client.
macro_rules! bundle_release_spec {
($($path: expr => $name: ident), *) => {

View File

@ -43,14 +43,16 @@ use engines::{
Engine, NullEngine, InstantSeal, InstantSealParams, BasicAuthority, Clique,
AuthorityRound, Ethash,
};
use executive::Executive;
use machine::{
executive::Executive,
machine::Machine,
substate::Substate,
};
use trie_vm_factories::Factories;
use machine::Machine;
use pod::PodState;
use spec::Genesis;
use spec::seal::Generic as GenericSeal;
use account_state::{Backend, State, backend::Basic as BasicBackend};
use substate::Substate;
use trace::{NoopTracer, NoopVMTracer};
pub use ethash::OptimizeFor;
@ -96,7 +98,7 @@ impl<'a, T: AsRef<Path>> From<&'a T> for SpecParams<'a> {
fn run_constructors<T: Backend>(
genesis_state: &PodState,
constructors: &[(Address, Bytes)],
engine: &Engine,
engine: &dyn Engine,
author: Address,
timestamp: u64,
difficulty: U256,

View File

@ -22,15 +22,18 @@ use ethkey::KeyPair;
use hash::keccak;
use io::IoChannel;
use tempdir::TempDir;
use types::transaction::{PendingTransaction, Transaction, Action, Condition};
use types::filter::Filter;
use types::view;
use types::views::BlockView;
use types::{
ids::BlockId,
transaction::{PendingTransaction, Transaction, Action, Condition},
filter::Filter,
view,
views::BlockView,
};
use client::{BlockChainClient, BlockChainReset, Client, ClientConfig, BlockId, ChainInfo, PrepareOpenBlock, ImportSealedBlock, ImportBlock};
use client::BlockInfo;
use client::{BlockChainClient, BlockChainReset, Client, ClientConfig, ChainInfo, PrepareOpenBlock, ImportSealedBlock, ImportBlock};
use client_traits::BlockInfo;
use crate::spec;
use executive::{Executive, TransactOptions};
use machine::executive::{Executive, TransactOptions};
use miner::{Miner, PendingOrdering, MinerService};
use account_state::{State, CleanupMode, backend};
use test_helpers::{

View File

@ -20,8 +20,11 @@ use std::sync::Arc;
use hash::keccak;
use vm::{EnvInfo, ActionParams, ActionValue, CallType, ParamsType};
use evm::{Factory, VMType};
use executive::Executive;
use substate::Substate;
use machine::{
executive::Executive,
substate::Substate,
test_helpers::new_eip210_test_machine,
};
use test_helpers::get_temp_state_with_factory;
use trace::{NoopVMTracer, NoopTracer};
use types::transaction::SYSTEM_ADDRESS;
@ -29,7 +32,6 @@ use types::transaction::SYSTEM_ADDRESS;
use rustc_hex::FromHex;
use ethereum_types::{H256, Address};
use crate::spec;
evm_test!{test_blockhash_eip210: test_blockhash_eip210_int}
fn test_blockhash_eip210(factory: Factory) {
@ -39,7 +41,7 @@ fn test_blockhash_eip210(factory: Factory) {
let test_blockhash_contract = "73fffffffffffffffffffffffffffffffffffffffe33141561007a57600143036020526000356101006020510755600061010060205107141561005057600035610100610100602051050761010001555b6000620100006020510714156100755760003561010062010000602051050761020001555b61014a565b4360003512151561009057600060405260206040f35b610100600035430312156100b357610100600035075460605260206060f3610149565b62010000600035430312156100d157600061010060003507146100d4565b60005b156100f6576101006101006000350507610100015460805260206080f3610148565b630100000060003543031215610116576000620100006000350714610119565b60005b1561013c57610100620100006000350507610200015460a052602060a0f3610147565b600060c052602060c0f35b5b5b5b5b";
let blockhash_contract_code = Arc::new(test_blockhash_contract.from_hex().unwrap());
let blockhash_contract_code_hash = keccak(blockhash_contract_code.as_ref());
let machine = spec::new_eip210_test_machine();
let machine = new_eip210_test_machine();
let mut env_info = EnvInfo::default();
// populate state with 256 last hashes

View File

@ -28,14 +28,18 @@ use client::{BlockChainClient, Client, ClientConfig};
use std::sync::Arc;
use std::str::FromStr;
use miner::Miner;
use types::transaction::{Action, Transaction};
use trace::{RewardType, LocalizedTrace};
use trace::trace::Action::Reward;
use test_helpers;
use verification::queue::kind::blocks::Unverified;
use types::header::Header;
use types::view;
use types::views::BlockView;
use types::{
ids::BlockId,
transaction::{Action, Transaction},
trace_filter::Filter as TraceFilter,
header::Header,
view,
views::BlockView,
};
#[test]
fn can_trace_block_and_uncle_reward() {

View File

@ -17,7 +17,7 @@
//! Canonical verifier.
use call_contract::CallContract;
use client::BlockInfo;
use client_traits::BlockInfo;
use engines::Engine;
use types::{
header::Header,

View File

@ -29,7 +29,7 @@ pub use self::noop_verifier::NoopVerifier;
pub use self::queue::{BlockQueue, Config as QueueConfig, VerificationQueue, QueueInfo};
use call_contract::CallContract;
use client::BlockInfo;
use client_traits::BlockInfo;
/// Verifier type.
#[derive(Debug, PartialEq, Clone)]

View File

@ -17,7 +17,7 @@
//! No-op verifier.
use call_contract::CallContract;
use client::BlockInfo;
use client_traits::BlockInfo;
use engines::Engine;
use types::{
header::Header,

View File

@ -21,9 +21,7 @@ use engines::Engine;
use parity_util_mem::MallocSizeOf;
use ethereum_types::{H256, U256};
use types::{
errors::EthcoreError as Error,
};
use types::errors::EthcoreError as Error;
pub use self::blocks::Blocks;
pub use self::headers::Headers;

View File

@ -31,7 +31,7 @@ use unexpected::{Mismatch, OutOfBounds};
use blockchain::*;
use call_contract::CallContract;
use client::BlockInfo;
use client_traits::BlockInfo;
use engines::Engine;
use types::{
BlockNumber,

View File

@ -17,7 +17,7 @@
//! A generic verifier trait.
use call_contract::CallContract;
use client::BlockInfo;
use client_traits::BlockInfo;
use engines::Engine;
use types::{
header::Header,

View File

@ -8,6 +8,7 @@ authors = ["Parity Technologies <admin@parity.io>"]
[lib]
[dependencies]
client-traits = { path = "../client-traits" }
common-types = { path = "../types" }
enum_primitive = "0.1.1"
ethcore = { path = ".." }
@ -24,6 +25,7 @@ keccak-hash = "0.2.0"
keccak-hasher = { path = "../../util/keccak-hasher" }
kvdb = "0.1"
log = "0.4"
machine = { path = "../machine" }
macros = { path = "../../util/macros" }
parity-bytes = "0.1"
parking_lot = "0.8"

View File

@ -25,9 +25,10 @@ use ethereum_types::H256;
use rlp::{self, Rlp};
use types::{
BlockNumber,
block_status::BlockStatus,
ids::BlockId,
errors::{EthcoreError, BlockError, ImportError},
};
use ethcore::client::{BlockStatus, BlockId};
use sync_io::SyncIo;
use blocks::{BlockCollection, SyncBody, SyncHeader};
use chain::BlockSet;

View File

@ -541,8 +541,11 @@ impl BlockCollection {
#[cfg(test)]
mod test {
use super::{BlockCollection, SyncHeader};
use ethcore::client::{TestBlockChainClient, EachBlockWith, BlockId, BlockChainClient};
use types::BlockNumber;
use ethcore::client::{TestBlockChainClient, EachBlockWith, BlockChainClient};
use types::{
ids::BlockId,
BlockNumber
};
use ethcore::verification::queue::kind::blocks::Unverified;
use rlp::*;

View File

@ -108,7 +108,7 @@ use bytes::Bytes;
use rlp::{RlpStream, DecoderError};
use network::{self, PeerId, PacketId};
use network::client_version::ClientVersion;
use ethcore::client::{BlockChainClient, BlockStatus, BlockId, BlockChainInfo, BlockQueueInfo};
use ethcore::client::{BlockChainClient, BlockStatus, BlockChainInfo, BlockQueueInfo};
use ethcore::snapshot::RestorationStatus;
use sync_io::SyncIo;
use super::{WarpSync, SyncConfig};
@ -118,8 +118,11 @@ use snapshot::{Snapshot};
use api::{EthProtocolInfo as PeerInfoDigest, WARP_SYNC_PROTOCOL_ID, PriorityTask};
use private_tx::PrivateTxHandler;
use transactions_stats::{TransactionsStats, Stats as TransactionStats};
use types::transaction::UnverifiedTransaction;
use types::BlockNumber;
use types::{
BlockNumber,
ids::BlockId,
transaction::UnverifiedTransaction
};
use self::handler::SyncHandler;
use self::sync_packet::{PacketInfo, SyncPacket};
@ -1370,7 +1373,8 @@ pub mod tests {
use super::*;
use ::SyncConfig;
use super::{PeerInfo, PeerAsking};
use ethcore::client::{BlockChainClient, EachBlockWith, TestBlockChainClient, ChainInfo, BlockInfo};
use ethcore::client::{BlockChainClient, EachBlockWith, TestBlockChainClient, ChainInfo};
use client_traits::BlockInfo;
use ethcore::miner::{MinerService, PendingOrdering};
use types::header::Header;

View File

@ -335,12 +335,15 @@ impl SyncPropagator {
#[cfg(test)]
mod tests {
use ethcore::client::{BlockInfo, ChainInfo, EachBlockWith, TestBlockChainClient};
use ethcore::client::{ChainInfo, EachBlockWith, TestBlockChainClient};
use client_traits::BlockInfo;
use parking_lot::RwLock;
use rlp::{Rlp};
use std::collections::{VecDeque};
use tests::helpers::{TestIo};
use tests::snapshot::TestSnapshotService;
use rlp::Rlp;
use std::collections::VecDeque;
use tests::{
helpers::TestIo,
snapshot::TestSnapshotService,
};
use super::{*, super::{*, tests::*}};

View File

@ -46,6 +46,8 @@ extern crate ethcore_light as light;
#[cfg(test)] extern crate kvdb_memorydb;
#[cfg(test)] extern crate rustc_hex;
#[cfg(test)] extern crate rand_xorshift;
#[cfg(test)] extern crate client_traits;
#[cfg(test)] extern crate machine;
#[macro_use]
extern crate enum_primitive;

View File

@ -16,7 +16,9 @@
use tests::helpers::TestNet;
use ethcore::client::{BlockInfo, BlockId, EachBlockWith};
use ethcore::client::EachBlockWith;
use client_traits::BlockInfo;
use types::ids::BlockId;
mod test_net;

View File

@ -15,8 +15,10 @@
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::sync::Arc;
use ethcore::client::{TestBlockChainClient, BlockChainClient, BlockId, EachBlockWith, ChainInfo, BlockInfo};
use chain::{SyncState};
use types::ids::BlockId;
use ethcore::client::{TestBlockChainClient, BlockChainClient, EachBlockWith, ChainInfo};
use client_traits::BlockInfo;
use chain::SyncState;
use super::helpers::*;
use {SyncConfig, WarpSync};
use ethcore::spec;

View File

@ -19,15 +19,17 @@ use hash::keccak;
use io::{IoHandler, IoChannel};
use types::transaction::{Transaction, Action};
use types::ids::BlockId;
use ethcore::CreateContractAddress;
use ethcore::client::{ClientIoMessage, BlockChainClient};
use ethcore::executive::contract_address;
use ethcore::engines;
use ethcore::miner::{self, MinerService};
use ethcore::spec::Spec;
use ethcore::test_helpers::{push_block_with_transactions};
use ethcore::{
CreateContractAddress,
client::{ClientIoMessage, BlockChainClient},
engines,
miner::{self, MinerService},
spec::Spec,
test_helpers::push_block_with_transactions,
};
use ethcore_private_tx::{Provider, ProviderConfig, NoopEncryptor, Importer, SignedPrivateTransaction, StoringKeyProvider};
use ethkey::KeyPair;
use machine::executive::contract_address;
use tests::helpers::{TestNet, TestIoHandler};
use rustc_hex::FromHex;
use rlp::Rlp;

View File

@ -6,6 +6,7 @@ license = "GPL-3.0"
authors = ["Parity Technologies <admin@parity.io>"]
[dependencies]
common-types = { path = "../ethcore/types" }
ethcore = { path = "../ethcore" }
parity-bytes = "0.1"
ethereum-types = "0.6.0"

View File

@ -19,6 +19,7 @@ extern crate cid;
extern crate unicase;
extern crate rlp;
extern crate common_types;
extern crate ethcore;
extern crate parity_bytes as bytes;
extern crate ethereum_types;

View File

@ -18,10 +18,10 @@ use {rlp, multihash, IpfsHandler};
use error::{Error, Result};
use cid::{ToCid, Codec};
use common_types::ids::{BlockId, TransactionId};
use multihash::Hash;
use ethereum_types::H256;
use bytes::Bytes;
use ethcore::client::{BlockId, TransactionId};
type Reason = &'static str;

View File

@ -40,8 +40,6 @@ extern crate serde;
#[macro_use]
extern crate ethabi_contract;
#[macro_use]
extern crate ethabi_derive;
#[macro_use]
extern crate log;
#[macro_use]
extern crate serde_derive;

View File

@ -26,8 +26,9 @@ use hash::{keccak, KECCAK_NULL_RLP};
use ethereum_types::{U256, H256, Address};
use bytes::ToPretty;
use rlp::PayloadInfo;
use client_traits::BlockInfo;
use ethcore::client::{
Mode, DatabaseCompactionProfile, VMType, Nonce, Balance, BlockChainClient, BlockId, BlockInfo, ImportBlock, BlockChainReset
Mode, DatabaseCompactionProfile, VMType, Nonce, Balance, BlockChainClient, ImportBlock, BlockChainReset
};
use ethcore::miner::Miner;
use ethcore::verification::queue::VerifierSettings;
@ -42,7 +43,10 @@ use user_defaults::UserDefaults;
use ethcore_private_tx;
use db;
use ansi_term::Colour;
use types::errors::{ImportError, EthcoreError};
use types::{
ids::BlockId,
errors::{ImportError, EthcoreError}
};
#[derive(Debug, PartialEq)]
pub enum DataFormat {

View File

@ -1194,11 +1194,12 @@ mod tests {
use std::str::FromStr;
use tempdir::TempDir;
use ethcore::client::{VMType, BlockId};
use ethcore::client::VMType;
use ethcore::miner::MinerOptions;
use miner::pool::PrioritizationStrategy;
use parity_rpc::NetworkSettings;
use updater::{UpdatePolicy, UpdateFilter, ReleaseTrack};
use types::ids::BlockId;
use account::{AccountCmd, NewAccount, ImportAccounts, ListAccounts};
use blockchain::{BlockchainCmd, ImportBlockchain, ExportBlockchain, DataFormat, ExportState};

View File

@ -21,7 +21,7 @@ use std::fs::File;
use std::collections::HashSet;
use ethereum_types::{U256, Address};
use journaldb::Algorithm;
use ethcore::client::{Mode, BlockId, VMType, DatabaseCompactionProfile, ClientConfig, VerifierType};
use ethcore::client::{Mode, VMType, DatabaseCompactionProfile, ClientConfig, VerifierType};
use ethcore::miner::{PendingSet, Penalization};
use miner::pool::PrioritizationStrategy;
use cache::CacheConfig;
@ -32,6 +32,7 @@ use sync::{validate_node_url, self};
use db::migrate;
use path;
use ethkey::Password;
use types::ids::BlockId;
pub fn to_duration(s: &str) -> Result<Duration, String> {
to_seconds(s).map(Duration::from_secs)
@ -347,9 +348,10 @@ mod tests {
use std::collections::HashSet;
use tempdir::TempDir;
use ethereum_types::U256;
use ethcore::client::{Mode, BlockId};
use ethcore::client::Mode;
use ethcore::miner::PendingSet;
use ethkey::Password;
use types::ids::BlockId;
use super::{to_duration, to_mode, to_block_id, to_u256, to_pending_set, to_address, to_addresses, to_price, geth_ipc_path, to_bootnodes, join_set, password_from_file};
#[test]

View File

@ -24,10 +24,14 @@ use std::time::{Instant, Duration};
use atty;
use ethcore::client::{
BlockId, ChainInfo, BlockInfo, BlockChainInfo, BlockChainClient,
ChainInfo, BlockChainInfo, BlockChainClient,
BlockQueueInfo, ChainNotify, NewBlocks, ClientReport, Client, ClientIoMessage
};
use types::BlockNumber;
use client_traits::BlockInfo;
use types::{
BlockNumber,
ids::BlockId,
};
use ethcore::snapshot::{RestorationStatus, SnapshotService as SS};
use ethcore::snapshot::service::Service as SnapshotService;
use sync::{LightSyncProvider, LightSync, SyncProvider, ManageNetwork};

View File

@ -41,6 +41,8 @@ extern crate toml;
extern crate blooms_db;
extern crate cli_signer;
extern crate client_traits;
extern crate common_types as types;
extern crate ethcore;
extern crate ethcore_call_contract as call_contract;

View File

@ -22,7 +22,8 @@ use std::thread;
use ansi_term::Colour;
use bytes::Bytes;
use call_contract::CallContract;
use ethcore::client::{BlockId, Client, Mode, DatabaseCompactionProfile, VMType, BlockChainClient, BlockInfo};
use client_traits::BlockInfo;
use ethcore::client::{Client, Mode, DatabaseCompactionProfile, VMType, BlockChainClient};
use ethcore::miner::{self, stratum, Miner, MinerService, MinerOptions};
use ethcore::snapshot::{self, SnapshotConfiguration};
use ethcore::spec::{SpecParams, OptimizeFor};
@ -40,6 +41,7 @@ use miner::work_notify::WorkPoster;
use node_filter::NodeFilter;
use parity_runtime::Runtime;
use sync::{self, SyncConfig, PrivateTxHandler};
use types::ids::BlockId;
use parity_rpc::{
Origin, Metadata, NetworkSettings, informant, PubSubSession, FutureResult, FutureResponse, FutureOutput
};

View File

@ -47,6 +47,7 @@ ethcore-private-tx = { path = "../ethcore/private-tx" }
ethcore-sync = { path = "../ethcore/sync" }
ethereum-types = "0.6.0"
fastmap = { path = "../util/fastmap" }
machine = { path = "../ethcore/machine" }
parity-bytes = "0.1"
parity-crypto = "0.4.0"
@ -66,6 +67,7 @@ trace = { path = "../ethcore/trace" }
vm = { path = "../ethcore/vm" }
[dev-dependencies]
client-traits = { path = "../ethcore/client-traits" }
ethcore = { path = "../ethcore", features = ["test-helpers"] }
ethcore-accounts = { path = "../accounts" }
ethcore-io = { path = "../util/io" }

View File

@ -43,6 +43,7 @@ extern crate futures;
extern crate ansi_term;
extern crate cid;
extern crate itertools;
extern crate machine;
extern crate multihash;
extern crate order_stat;
extern crate parking_lot;
@ -120,6 +121,8 @@ extern crate fake_fetch;
#[cfg(test)]
extern crate ethcore_io as io;
#[cfg(test)]
extern crate client_traits;
pub extern crate jsonrpc_ws_server as ws;

View File

@ -18,7 +18,6 @@
use std::fmt;
use ethcore::client::BlockId;
use jsonrpc_core::{futures, Result as RpcResult, Error, ErrorCode, Value};
use rlp::DecoderError;
use types::transaction::Error as TransactionError;
@ -27,6 +26,7 @@ use vm::Error as VMError;
use light::on_demand::error::{Error as OnDemandError};
use ethcore::client::BlockChainClient;
use types::{
ids::BlockId,
blockchain_info::BlockChainInfo,
errors::{EthcoreError},
transaction::CallError,

View File

@ -39,11 +39,12 @@ use light::client::LightChainClient;
use light::{cht, MAX_HEADERS_PER_REQUEST};
use light::on_demand::{
request, OnDemandRequester, HeaderRef, Request as OnDemandRequest,
Response as OnDemandResponse, ExecutionResult,
Response as OnDemandResponse,
};
use light::on_demand::error::Error as OnDemandError;
use light::request::Field;
use light::TransactionQueue;
use machine::executed::ExecutionResult;
use sync::{LightNetworkDispatcher, ManageNetwork, LightSyncProvider};

View File

@ -25,16 +25,19 @@ use ethereum_types::{Address, H64, H160, H256, U64, U256, BigEndianHash};
use parking_lot::Mutex;
use ethash::{self, SeedHashCompute};
use ethcore::client::{BlockChainClient, BlockId, TransactionId, UncleId, StateOrBlock, StateClient, StateInfo, Call, EngineInfo, ProvingBlockChainClient};
use ethcore::client::{BlockChainClient, StateOrBlock, StateClient, StateInfo, Call, EngineInfo, ProvingBlockChainClient};
use ethcore::miner::{self, MinerService};
use ethcore::snapshot::SnapshotService;
use hash::keccak;
use miner::external::ExternalMinerService;
use sync::SyncProvider;
use types::transaction::{SignedTransaction, LocalizedTransaction};
use types::BlockNumber as EthBlockNumber;
use types::encoded;
use types::filter::Filter as EthcoreFilter;
use types::{
BlockNumber as EthBlockNumber,
encoded,
ids::{BlockId, TransactionId, UncleId},
filter::Filter as EthcoreFilter,
transaction::{SignedTransaction, LocalizedTransaction}
};
use jsonrpc_core::{BoxFuture, Result};
use jsonrpc_core::futures::future;

View File

@ -19,11 +19,14 @@
use std::sync::Arc;
use std::collections::{BTreeSet, VecDeque};
use ethcore::client::{BlockChainClient, BlockId};
use ethcore::client::BlockChainClient;
use ethcore::miner::{self, MinerService};
use ethereum_types::{H256, U256};
use parking_lot::Mutex;
use types::filter::Filter as EthcoreFilter;
use types::{
ids::BlockId,
filter::Filter as EthcoreFilter
};
use jsonrpc_core::{BoxFuture, Result};
use jsonrpc_core::futures::{future, Future};

View File

@ -31,7 +31,7 @@ use v1::traits::EthPubSub;
use v1::types::{pubsub, RichHeader, Log};
use sync::{SyncState, Notification};
use ethcore::client::{BlockChainClient, ChainNotify, NewBlocks, ChainRouteType, BlockId};
use ethcore::client::{BlockChainClient, ChainNotify, NewBlocks, ChainRouteType};
use ethereum_types::H256;
use light::cache::Cache;
use light::client::{LightChainClient, LightChainNotify};
@ -41,8 +41,11 @@ use parking_lot::{RwLock, Mutex};
use sync::{LightSyncProvider, LightNetworkDispatcher, ManageNetwork};
use types::encoded;
use types::filter::Filter as EthFilter;
use types::{
ids::BlockId,
encoded,
filter::Filter as EthFilter,
};
type Client = Sink<pubsub::Result>;

View File

@ -18,10 +18,14 @@
use std::sync::Arc;
use ethcore::client::{BlockChainClient, CallAnalytics, TransactionId, TraceId, StateClient, StateInfo, Call, BlockId};
use ethcore::client::{BlockChainClient, StateClient, StateInfo, Call};
use ethereum_types::H256;
use rlp::Rlp;
use types::transaction::SignedTransaction;
use types::{
call_analytics::CallAnalytics,
ids::{BlockId, TransactionId, TraceId},
transaction::SignedTransaction,
};
use jsonrpc_core::Result;
use v1::Metadata;

View File

@ -20,18 +20,22 @@ use std::sync::Arc;
use std::time::{Instant, Duration, SystemTime, UNIX_EPOCH};
use accounts::AccountProvider;
use ethcore::client::{BlockChainClient, BlockId, EachBlockWith, Executed, TestBlockChainClient, TransactionId};
use ethcore::client::{BlockChainClient, EachBlockWith, TestBlockChainClient};
use ethcore::miner::{self, MinerService};
use ethereum_types::{H160, H256, U256, Address, Bloom};
use machine::executed::Executed;
use miner::external::ExternalMiner;
use parity_runtime::Runtime;
use parking_lot::Mutex;
use rlp;
use rustc_hex::{FromHex, ToHex};
use sync::SyncState;
use types::transaction::{Transaction, Action};
use types::log_entry::{LocalizedLogEntry, LogEntry};
use types::receipt::{LocalizedReceipt, TransactionOutcome};
use types::{
ids::{BlockId, TransactionId},
transaction::{Transaction, Action},
log_entry::{LocalizedLogEntry, LogEntry},
receipt::{LocalizedReceipt, TransactionOutcome},
};
use jsonrpc_core::IoHandler;
use v1::{Eth, EthClient, EthClientOptions, EthFilter, EthFilterClient};

View File

@ -26,6 +26,12 @@ use v1::{EthPubSub, EthPubSubClient, Metadata};
use ethcore::client::{TestBlockChainClient, EachBlockWith, ChainNotify, NewBlocks, ChainRoute, ChainRouteType};
use parity_runtime::Runtime;
use ethereum_types::{Address, H256};
use client_traits::BlockInfo;
use types::{
log_entry::{LocalizedLogEntry, LogEntry},
ids::BlockId,
};
const DURATION_ZERO: Duration = Duration::from_millis(0);
@ -86,10 +92,6 @@ fn should_subscribe_to_new_heads() {
#[test]
fn should_subscribe_to_logs() {
use ethcore::client::BlockInfo;
use types::log_entry::{LocalizedLogEntry, LogEntry};
use types::ids::BlockId;
// given
let el = Runtime::with_thread_count(1);
let mut client = TestBlockChainClient::new();

View File

@ -15,13 +15,17 @@
// along with Parity Ethereum. If not, see <http://www.gnu.org/licenses/>.
use std::sync::Arc;
use ethcore::client::{TestBlockChainClient, Executed, TransactionId};
use ethcore::client::TestBlockChainClient;
use ethcore_logger::RotatingLogger;
use ethereum_types::{Address, U256, H256, BigEndianHash, Bloom};
use ethstore::ethkey::{Generator, Random};
use machine::executed::Executed;
use miner::pool::local_transactions::Status as LocalTransactionStatus;
use sync::ManageNetwork;
use types::receipt::{LocalizedReceipt, TransactionOutcome};
use types::{
ids::TransactionId,
receipt::{LocalizedReceipt, TransactionOutcome},
};
use jsonrpc_core::IoHandler;
use v1::{Parity, ParityClient};

View File

@ -16,7 +16,7 @@
use std::sync::Arc;
use ethcore::executed::Executed;
use machine::executed::Executed;
use trace::trace::{Action, Res, Call};
use trace::LocalizedTrace;
use ethcore::client::TestBlockChainClient;

View File

@ -17,7 +17,7 @@
use std::fmt;
use serde::{Deserialize, Deserializer, Serialize, Serializer};
use serde::de::{Error, Visitor, MapAccess};
use ethcore::client::BlockId;
use types::ids::BlockId;
use ethereum_types::H256;
/// Represents rpc api block number param.
@ -191,7 +191,7 @@ pub fn block_number_to_id(number: BlockNumber) -> BlockId {
#[cfg(test)]
mod tests {
use ethcore::client::BlockId;
use types::ids::BlockId;
use super::*;
use std::str::FromStr;
use serde_json;

View File

@ -16,7 +16,7 @@
use std::collections::BTreeMap;
use ethcore::client::Executed;
use machine::executed::Executed;
use trace as et;
use trace::{FlatTrace, LocalizedTrace as EthLocalizedTrace, trace, TraceError};
use ethereum_types::{H160, H256, U256};

View File

@ -16,9 +16,12 @@
//! Trace filter deserialization.
use ethcore::client::BlockId;
use ethcore::client;
use ethereum_types::H160;
use types::{
ids::BlockId,
trace_filter::Filter,
};
use v1::types::BlockNumber;
/// Trace filter
@ -40,8 +43,8 @@ pub struct TraceFilter {
pub count: Option<usize>,
}
impl Into<client::TraceFilter> for TraceFilter {
fn into(self) -> client::TraceFilter {
impl Into<Filter> for TraceFilter {
fn into(self) -> Filter {
let num_to_id = |num| match num {
BlockNumber::Hash { hash, .. } => BlockId::Hash(hash),
BlockNumber::Num(n) => BlockId::Number(n),
@ -54,7 +57,7 @@ impl Into<client::TraceFilter> for TraceFilter {
};
let start = self.from_block.map_or(BlockId::Latest, &num_to_id);
let end = self.to_block.map_or(BlockId::Latest, &num_to_id);
client::TraceFilter {
Filter {
range: start..end,
from_address: self.from_address.map_or_else(Vec::new, |x| x.into_iter().map(Into::into).collect()),
to_address: self.to_address.map_or_else(Vec::new, |x| x.into_iter().map(Into::into).collect()),

Some files were not shown because too many files have changed in this diff Show More