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:
parent
509fda727b
commit
73f4564b66
276
Cargo.lock
generated
276
Cargo.lock
generated
@ -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"
|
||||
|
@ -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 }
|
||||
|
@ -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"]
|
||||
|
12
ethcore/client-traits/Cargo.toml
Normal file
12
ethcore/client-traits/Cargo.toml
Normal 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" }
|
||||
|
37
ethcore/client-traits/src/lib.rs
Normal file
37
ethcore/client-traits/src/lib.rs
Normal 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>;
|
||||
}
|
@ -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" }
|
||||
|
@ -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;
|
||||
|
@ -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};
|
||||
|
@ -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};
|
||||
@ -1202,32 +1203,32 @@ mod tests {
|
||||
|
||||
// Incorrect responses
|
||||
assert_eq!(header_with_ancestors(invalid_successor.hash().into(), 0)
|
||||
.check_response(&cache, &headers[0].hash().into(), &raw_headers[0..1]),
|
||||
Err(Error::WrongHash(invalid_successor.hash(), headers[0].hash())));
|
||||
.check_response(&cache, &headers[0].hash().into(), &raw_headers[0..1]),
|
||||
Err(Error::WrongHash(invalid_successor.hash(), headers[0].hash())));
|
||||
assert_eq!(header_with_ancestors(headers[0].hash().into(), 0)
|
||||
.check_response(&cache, &headers[0].hash().into(), &[]),
|
||||
Err(Error::Empty));
|
||||
.check_response(&cache, &headers[0].hash().into(), &[]),
|
||||
Err(Error::Empty));
|
||||
assert_eq!(header_with_ancestors(headers[0].hash().into(), 10)
|
||||
.check_response(&cache, &headers[0].hash().into(), &raw_headers[0..10]),
|
||||
Err(Error::TooFewResults(11, 10)));
|
||||
.check_response(&cache, &headers[0].hash().into(), &raw_headers[0..10]),
|
||||
Err(Error::TooFewResults(11, 10)));
|
||||
assert_eq!(header_with_ancestors(headers[0].hash().into(), 9)
|
||||
.check_response(&cache, &headers[0].hash().into(), &raw_headers[0..11]),
|
||||
Err(Error::TooManyResults(10, 11)));
|
||||
.check_response(&cache, &headers[0].hash().into(), &raw_headers[0..11]),
|
||||
Err(Error::TooManyResults(10, 11)));
|
||||
|
||||
let response = &[raw_headers[0].clone(), raw_headers[2].clone()];
|
||||
assert_eq!(header_with_ancestors(headers[0].hash().into(), 1)
|
||||
.check_response(&cache, &headers[0].hash().into(), response),
|
||||
Err(Error::WrongHeaderSequence));
|
||||
.check_response(&cache, &headers[0].hash().into(), response),
|
||||
Err(Error::WrongHeaderSequence));
|
||||
|
||||
let response = &[raw_invalid_successor.clone(), raw_headers[0].clone()];
|
||||
assert_eq!(header_with_ancestors(invalid_successor.hash().into(), 1)
|
||||
.check_response(&cache, &invalid_successor.hash().into(), response),
|
||||
Err(Error::WrongHeaderSequence));
|
||||
.check_response(&cache, &invalid_successor.hash().into(), response),
|
||||
Err(Error::WrongHeaderSequence));
|
||||
|
||||
let response = &[raw_invalid_successor.clone(), raw_headers[1].clone()];
|
||||
assert_eq!(header_with_ancestors(invalid_successor.hash().into(), 1)
|
||||
.check_response(&cache, &invalid_successor.hash().into(), response),
|
||||
Err(Error::WrongHeaderSequence));
|
||||
.check_response(&cache, &invalid_successor.hash().into(), response),
|
||||
Err(Error::WrongHeaderSequence));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -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;
|
||||
|
||||
|
46
ethcore/machine/Cargo.toml
Normal file
46
ethcore/machine/Cargo.toml
Normal 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"]
|
@ -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,
|
101
ethcore/machine/src/executed_block.rs
Normal file
101
ethcore/machine/src/executed_block.rs
Normal 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
|
||||
}
|
||||
}
|
@ -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, .. } = {
|
@ -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,
|
||||
}
|
||||
}
|
||||
}
|
36
ethcore/machine/src/lib.rs
Normal file
36
ethcore/machine/src/lib.rs
Normal 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;
|
@ -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
|
@ -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]
|
60
ethcore/machine/src/test_helpers.rs
Normal file
60
ethcore/machine/src/test_helpers.rs
Normal 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")) }
|
@ -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 {
|
@ -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();
|
@ -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" }
|
||||
|
@ -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,
|
||||
|
@ -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"
|
||||
|
@ -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";
|
||||
|
@ -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;
|
||||
|
@ -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};
|
||||
|
@ -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`
|
||||
|
@ -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};
|
||||
use client::{BlockChainClient, ChainInfo};
|
||||
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 hash::keccak;
|
||||
use super::transaction_receipt;
|
||||
use ethkey::KeyPair;
|
||||
|
||||
#[test]
|
||||
fn should_not_cache_details_before_commit() {
|
||||
use client::{BlockChainClient, ChainInfo};
|
||||
use test_helpers::{generate_dummy_client, get_good_dummy_block_hash};
|
||||
|
||||
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;
|
||||
|
||||
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();
|
||||
|
@ -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.
|
||||
|
@ -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;
|
||||
|
@ -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!()
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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};
|
||||
|
@ -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::{
|
||||
|
@ -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");
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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?
|
||||
|
@ -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)]
|
||||
|
@ -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) => {
|
||||
|
@ -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)]
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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};
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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)]
|
||||
|
@ -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::{
|
||||
|
@ -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};
|
||||
|
@ -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;
|
||||
|
@ -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), *) => {
|
||||
|
@ -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,
|
||||
|
@ -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::{
|
||||
|
@ -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
|
||||
|
@ -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() {
|
||||
|
@ -17,7 +17,7 @@
|
||||
//! Canonical verifier.
|
||||
|
||||
use call_contract::CallContract;
|
||||
use client::BlockInfo;
|
||||
use client_traits::BlockInfo;
|
||||
use engines::Engine;
|
||||
use types::{
|
||||
header::Header,
|
||||
|
@ -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)]
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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"
|
||||
|
@ -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;
|
||||
|
@ -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::*;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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::*}};
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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"
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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 {
|
||||
|
@ -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};
|
||||
|
@ -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]
|
||||
|
@ -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};
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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" }
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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};
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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};
|
||||
|
@ -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>;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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};
|
||||
|
@ -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();
|
||||
|
@ -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};
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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};
|
||||
|
@ -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
Loading…
Reference in New Issue
Block a user