Fix execution engine integration tests with latest geth version (#6996)

https://github.com/sigp/lighthouse/issues/6937


  - Use `ethers-rs` [`Signer`](https://www.gakonst.com/ethers-rs/middleware/signer.html) middleware for local signing and sending raw txs to geth
- ~~Set `totalDifficulty = 0` through `serde` default if the block does not contain a `totalDifficulty` field~~
This commit is contained in:
EllipticPoint
2025-04-12 19:03:50 +10:00
committed by GitHub
parent be68dd24d0
commit 08882c64ca
6 changed files with 461 additions and 62 deletions

441
Cargo.lock generated
View File

@@ -79,7 +79,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0"
dependencies = [ dependencies = [
"crypto-common", "crypto-common",
"generic-array", "generic-array 0.14.7",
] ]
[[package]] [[package]]
@@ -92,7 +92,7 @@ dependencies = [
"cipher 0.3.0", "cipher 0.3.0",
"cpufeatures", "cpufeatures",
"ctr 0.8.0", "ctr 0.8.0",
"opaque-debug", "opaque-debug 0.3.1",
] ]
[[package]] [[package]]
@@ -674,6 +674,18 @@ dependencies = [
"winapi", "winapi",
] ]
[[package]]
name = "auto_impl"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7862e21c893d65a1650125d157eaeec691439379a1cee17ee49031b79236ada4"
dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
"syn 1.0.109",
]
[[package]] [[package]]
name = "auto_impl" name = "auto_impl"
version = "1.2.1" version = "1.2.1"
@@ -724,6 +736,28 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf"
[[package]]
name = "base58"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83"
[[package]]
name = "base58check"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2ee2fe4c9a0c84515f136aaae2466744a721af6d63339c18689d9e995d74d99b"
dependencies = [
"base58",
"sha2 0.8.2",
]
[[package]]
name = "base64"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff"
[[package]] [[package]]
name = "base64" name = "base64"
version = "0.13.1" version = "0.13.1"
@@ -880,6 +914,12 @@ dependencies = [
"types", "types",
] ]
[[package]]
name = "bech32"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2dabbe35f96fb9507f7330793dc490461b2962659ac5d427181e451a623751d1"
[[package]] [[package]]
name = "bincode" name = "bincode"
version = "1.3.3" version = "1.3.3"
@@ -939,6 +979,16 @@ version = "2.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
[[package]]
name = "bitvec"
version = "0.17.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "41262f11d771fd4a61aa3ce019fca363b4b6c282fca9da2a31186d3965a47a5c"
dependencies = [
"either",
"radium 0.3.0",
]
[[package]] [[package]]
name = "bitvec" name = "bitvec"
version = "0.20.4" version = "0.20.4"
@@ -972,14 +1022,26 @@ dependencies = [
"digest 0.10.7", "digest 0.10.7",
] ]
[[package]]
name = "block-buffer"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b"
dependencies = [
"block-padding 0.1.5",
"byte-tools",
"byteorder",
"generic-array 0.12.4",
]
[[package]] [[package]]
name = "block-buffer" name = "block-buffer"
version = "0.9.0" version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
dependencies = [ dependencies = [
"block-padding", "block-padding 0.2.1",
"generic-array", "generic-array 0.14.7",
] ]
[[package]] [[package]]
@@ -988,7 +1050,16 @@ version = "0.10.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
dependencies = [ dependencies = [
"generic-array", "generic-array 0.14.7",
]
[[package]]
name = "block-padding"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5"
dependencies = [
"byte-tools",
] ]
[[package]] [[package]]
@@ -1105,6 +1176,12 @@ version = "1.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d"
[[package]]
name = "byte-tools"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7"
[[package]] [[package]]
name = "byteorder" name = "byteorder"
version = "1.5.0" version = "1.5.0"
@@ -1310,7 +1387,7 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7"
dependencies = [ dependencies = [
"generic-array", "generic-array 0.14.7",
] ]
[[package]] [[package]]
@@ -1445,6 +1522,63 @@ dependencies = [
"cc", "cc",
] ]
[[package]]
name = "coins-bip32"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "634c509653de24b439672164bbf56f5f582a2ab0e313d3b0f6af0b7345cf2560"
dependencies = [
"bincode",
"bs58 0.4.0",
"coins-core",
"digest 0.10.7",
"getrandom 0.2.15",
"hmac 0.12.1",
"k256 0.11.6",
"lazy_static",
"serde",
"sha2 0.10.8",
"thiserror 1.0.69",
]
[[package]]
name = "coins-bip39"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a11892bcac83b4c6e95ab84b5b06c76d9d70ad73548dd07418269c5c7977171"
dependencies = [
"bitvec 0.17.4",
"coins-bip32",
"getrandom 0.2.15",
"hex",
"hmac 0.12.1",
"pbkdf2 0.11.0",
"rand 0.8.5",
"sha2 0.10.8",
"thiserror 1.0.69",
]
[[package]]
name = "coins-core"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c94090a6663f224feae66ab01e41a2555a8296ee07b5f20dab8888bdefc9f617"
dependencies = [
"base58check",
"base64 0.12.3",
"bech32",
"blake2",
"digest 0.10.7",
"generic-array 0.14.7",
"hex",
"ripemd",
"serde",
"serde_derive",
"sha2 0.10.8",
"sha3 0.10.8",
"thiserror 1.0.69",
]
[[package]] [[package]]
name = "colorchoice" name = "colorchoice"
version = "1.0.3" version = "1.0.3"
@@ -1536,6 +1670,15 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
[[package]]
name = "convert_case"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca"
dependencies = [
"unicode-segmentation",
]
[[package]] [[package]]
name = "core-foundation" name = "core-foundation"
version = "0.9.4" version = "0.9.4"
@@ -1713,7 +1856,7 @@ version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef"
dependencies = [ dependencies = [
"generic-array", "generic-array 0.14.7",
"rand_core 0.6.4", "rand_core 0.6.4",
"subtle", "subtle",
"zeroize", "zeroize",
@@ -1725,7 +1868,7 @@ version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76"
dependencies = [ dependencies = [
"generic-array", "generic-array 0.14.7",
"rand_core 0.6.4", "rand_core 0.6.4",
"subtle", "subtle",
"zeroize", "zeroize",
@@ -1737,7 +1880,7 @@ version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
dependencies = [ dependencies = [
"generic-array", "generic-array 0.14.7",
"rand_core 0.6.4", "rand_core 0.6.4",
"typenum", "typenum",
] ]
@@ -1748,7 +1891,7 @@ version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab"
dependencies = [ dependencies = [
"generic-array", "generic-array 0.14.7",
"subtle", "subtle",
] ]
@@ -1758,7 +1901,7 @@ version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25fab6889090c8133f3deb8f73ba3c65a7f456f66436fc012a1b1e272b1e103e" checksum = "25fab6889090c8133f3deb8f73ba3c65a7f456f66436fc012a1b1e272b1e103e"
dependencies = [ dependencies = [
"generic-array", "generic-array 0.14.7",
"subtle", "subtle",
] ]
@@ -2053,7 +2196,7 @@ version = "0.99.19"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3da29a38df43d6f156149c9b43ded5e018ddff2a855cf2cfd62e8cd7d079c69f" checksum = "3da29a38df43d6f156149c9b43ded5e018ddff2a855cf2cfd62e8cd7d079c69f"
dependencies = [ dependencies = [
"convert_case", "convert_case 0.4.0",
"proc-macro2", "proc-macro2",
"quote", "quote",
"rustc_version 0.4.1", "rustc_version 0.4.1",
@@ -2101,13 +2244,22 @@ dependencies = [
"unicode-xid", "unicode-xid",
] ]
[[package]]
name = "digest"
version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5"
dependencies = [
"generic-array 0.12.4",
]
[[package]] [[package]]
name = "digest" name = "digest"
version = "0.9.0" version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
dependencies = [ dependencies = [
"generic-array", "generic-array 0.14.7",
] ]
[[package]] [[package]]
@@ -2336,8 +2488,9 @@ dependencies = [
"der 0.6.1", "der 0.6.1",
"digest 0.10.7", "digest 0.10.7",
"ff 0.12.1", "ff 0.12.1",
"generic-array", "generic-array 0.14.7",
"group 0.12.1", "group 0.12.1",
"pkcs8 0.9.0",
"rand_core 0.6.4", "rand_core 0.6.4",
"sec1 0.3.0", "sec1 0.3.0",
"subtle", "subtle",
@@ -2354,7 +2507,7 @@ dependencies = [
"crypto-bigint 0.5.5", "crypto-bigint 0.5.5",
"digest 0.10.7", "digest 0.10.7",
"ff 0.13.1", "ff 0.13.1",
"generic-array", "generic-array 0.14.7",
"group 0.13.0", "group 0.13.0",
"pem-rfc7468", "pem-rfc7468",
"pkcs8 0.10.2", "pkcs8 0.10.2",
@@ -2485,6 +2638,28 @@ dependencies = [
"windows-sys 0.59.0", "windows-sys 0.59.0",
] ]
[[package]]
name = "eth-keystore"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab"
dependencies = [
"aes 0.8.4",
"ctr 0.9.2",
"digest 0.10.7",
"hex",
"hmac 0.12.1",
"pbkdf2 0.11.0",
"rand 0.8.5",
"scrypt 0.10.0",
"serde",
"serde_json",
"sha2 0.10.8",
"sha3 0.10.8",
"thiserror 1.0.69",
"uuid 0.8.2",
]
[[package]] [[package]]
name = "eth1" name = "eth1"
version = "0.2.0" version = "0.2.0"
@@ -2603,7 +2778,7 @@ dependencies = [
"hmac 0.11.0", "hmac 0.11.0",
"pbkdf2 0.8.0", "pbkdf2 0.8.0",
"rand 0.8.5", "rand 0.8.5",
"scrypt", "scrypt 0.7.0",
"serde", "serde",
"serde_json", "serde_json",
"serde_repr", "serde_repr",
@@ -2872,13 +3047,15 @@ dependencies = [
"bytes", "bytes",
"cargo_metadata 0.15.4", "cargo_metadata 0.15.4",
"chrono", "chrono",
"convert_case 0.6.0",
"elliptic-curve 0.12.3", "elliptic-curve 0.12.3",
"ethabi 18.0.0", "ethabi 18.0.0",
"generic-array", "generic-array 0.14.7",
"hex", "hex",
"k256 0.11.6", "k256 0.11.6",
"once_cell", "once_cell",
"open-fastrlp", "open-fastrlp",
"proc-macro2",
"rand 0.8.5", "rand 0.8.5",
"rlp", "rlp",
"rlp-derive", "rlp-derive",
@@ -2891,6 +3068,49 @@ dependencies = [
"unicode-xid", "unicode-xid",
] ]
[[package]]
name = "ethers-etherscan"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9713f525348e5dde025d09b0a4217429f8074e8ff22c886263cc191e87d8216"
dependencies = [
"ethers-core",
"getrandom 0.2.15",
"reqwest",
"semver 1.0.26",
"serde",
"serde-aux",
"serde_json",
"thiserror 1.0.69",
"tracing",
]
[[package]]
name = "ethers-middleware"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e71df7391b0a9a51208ffb5c7f2d068900e99d6b3128d3a4849d138f194778b7"
dependencies = [
"async-trait",
"auto_impl 0.5.0",
"ethers-contract",
"ethers-core",
"ethers-etherscan",
"ethers-providers",
"ethers-signers",
"futures-locks",
"futures-util",
"instant",
"reqwest",
"serde",
"serde_json",
"thiserror 1.0.69",
"tokio",
"tracing",
"tracing-futures",
"url",
]
[[package]] [[package]]
name = "ethers-providers" name = "ethers-providers"
version = "1.0.2" version = "1.0.2"
@@ -2898,7 +3118,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1a9e0597aa6b2fdc810ff58bc95e4eeaa2c219b3e615ed025106ecb027407d8" checksum = "a1a9e0597aa6b2fdc810ff58bc95e4eeaa2c219b3e615ed025106ecb027407d8"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"auto_impl", "auto_impl 1.2.1",
"base64 0.13.1", "base64 0.13.1",
"ethers-core", "ethers-core",
"futures-core", "futures-core",
@@ -2926,6 +3146,24 @@ dependencies = [
"ws_stream_wasm", "ws_stream_wasm",
] ]
[[package]]
name = "ethers-signers"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f41ced186867f64773db2e55ffdd92959e094072a1d09a5e5e831d443204f98"
dependencies = [
"async-trait",
"coins-bip32",
"coins-bip39",
"elliptic-curve 0.12.3",
"eth-keystore",
"ethers-core",
"hex",
"rand 0.8.5",
"sha2 0.10.8",
"thiserror 1.0.69",
]
[[package]] [[package]]
name = "event-listener" name = "event-listener"
version = "2.5.3" version = "2.5.3"
@@ -2971,7 +3209,9 @@ dependencies = [
"async-channel 1.9.0", "async-channel 1.9.0",
"deposit_contract", "deposit_contract",
"ethers-core", "ethers-core",
"ethers-middleware",
"ethers-providers", "ethers-providers",
"ethers-signers",
"execution_layer", "execution_layer",
"fork_choice", "fork_choice",
"futures", "futures",
@@ -3049,6 +3289,12 @@ dependencies = [
"once_cell", "once_cell",
] ]
[[package]]
name = "fake-simd"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed"
[[package]] [[package]]
name = "fallible-iterator" name = "fallible-iterator"
version = "0.2.0" version = "0.2.0"
@@ -3074,7 +3320,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418"
dependencies = [ dependencies = [
"arrayvec", "arrayvec",
"auto_impl", "auto_impl 1.2.1",
"bytes", "bytes",
] ]
@@ -3085,7 +3331,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4"
dependencies = [ dependencies = [
"arrayvec", "arrayvec",
"auto_impl", "auto_impl 1.2.1",
"bytes", "bytes",
] ]
@@ -3337,6 +3583,16 @@ dependencies = [
"pin-project-lite", "pin-project-lite",
] ]
[[package]]
name = "futures-locks"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06"
dependencies = [
"futures-channel",
"futures-task",
]
[[package]] [[package]]
name = "futures-macro" name = "futures-macro"
version = "0.3.31" version = "0.3.31"
@@ -3417,6 +3673,15 @@ dependencies = [
"windows 0.58.0", "windows 0.58.0",
] ]
[[package]]
name = "generic-array"
version = "0.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd"
dependencies = [
"typenum",
]
[[package]] [[package]]
name = "generic-array" name = "generic-array"
version = "0.14.7" version = "0.14.7"
@@ -3481,7 +3746,7 @@ version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1"
dependencies = [ dependencies = [
"opaque-debug", "opaque-debug 0.3.1",
"polyval", "polyval",
] ]
@@ -3851,7 +4116,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1"
dependencies = [ dependencies = [
"digest 0.9.0", "digest 0.9.0",
"generic-array", "generic-array 0.14.7",
"hmac 0.8.1", "hmac 0.8.1",
] ]
@@ -4469,7 +4734,7 @@ version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01"
dependencies = [ dependencies = [
"generic-array", "generic-array 0.14.7",
] ]
[[package]] [[package]]
@@ -6186,6 +6451,12 @@ version = "11.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e"
[[package]]
name = "opaque-debug"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c"
[[package]] [[package]]
name = "opaque-debug" name = "opaque-debug"
version = "0.3.1" version = "0.3.1"
@@ -6199,7 +6470,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce"
dependencies = [ dependencies = [
"arrayvec", "arrayvec",
"auto_impl", "auto_impl 1.2.1",
"bytes", "bytes",
"ethereum-types 0.14.1", "ethereum-types 0.14.1",
"open-fastrlp-derive", "open-fastrlp-derive",
@@ -6293,6 +6564,15 @@ dependencies = [
"types", "types",
] ]
[[package]]
name = "ordered-float"
version = "2.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c"
dependencies = [
"num-traits",
]
[[package]] [[package]]
name = "overload" name = "overload"
version = "0.1.1" version = "0.1.1"
@@ -6626,7 +6906,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf"
dependencies = [ dependencies = [
"cpufeatures", "cpufeatures",
"opaque-debug", "opaque-debug 0.3.1",
"universal-hash", "universal-hash",
] ]
@@ -6638,7 +6918,7 @@ checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"cpufeatures", "cpufeatures",
"opaque-debug", "opaque-debug 0.3.1",
"universal-hash", "universal-hash",
] ]
@@ -6736,6 +7016,30 @@ dependencies = [
"toml_edit 0.22.24", "toml_edit 0.22.24",
] ]
[[package]]
name = "proc-macro-error"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
dependencies = [
"proc-macro-error-attr",
"proc-macro2",
"quote",
"syn 1.0.109",
"version_check",
]
[[package]]
name = "proc-macro-error-attr"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
dependencies = [
"proc-macro2",
"quote",
"version_check",
]
[[package]] [[package]]
name = "proc-macro2" name = "proc-macro2"
version = "1.0.94" version = "1.0.94"
@@ -6992,6 +7296,12 @@ dependencies = [
"rusqlite", "rusqlite",
] ]
[[package]]
name = "radium"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "def50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47ac"
[[package]] [[package]]
name = "radium" name = "radium"
version = "0.6.2" version = "0.6.2"
@@ -7296,6 +7606,15 @@ dependencies = [
"windows-sys 0.52.0", "windows-sys 0.52.0",
] ]
[[package]]
name = "ripemd"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f"
dependencies = [
"digest 0.10.7",
]
[[package]] [[package]]
name = "rlp" name = "rlp"
version = "0.5.2" version = "0.5.2"
@@ -7642,6 +7961,15 @@ dependencies = [
"cipher 0.3.0", "cipher 0.3.0",
] ]
[[package]]
name = "salsa20"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213"
dependencies = [
"cipher 0.4.4",
]
[[package]] [[package]]
name = "same-file" name = "same-file"
version = "1.0.6" version = "1.0.6"
@@ -7713,10 +8041,22 @@ checksum = "879588d8f90906e73302547e20fffefdd240eb3e0e744e142321f5d49dea0518"
dependencies = [ dependencies = [
"hmac 0.11.0", "hmac 0.11.0",
"pbkdf2 0.8.0", "pbkdf2 0.8.0",
"salsa20", "salsa20 0.8.1",
"sha2 0.9.9", "sha2 0.9.9",
] ]
[[package]]
name = "scrypt"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d"
dependencies = [
"hmac 0.12.1",
"pbkdf2 0.11.0",
"salsa20 0.10.2",
"sha2 0.10.8",
]
[[package]] [[package]]
name = "sct" name = "sct"
version = "0.7.1" version = "0.7.1"
@@ -7735,7 +8075,7 @@ checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928"
dependencies = [ dependencies = [
"base16ct 0.1.1", "base16ct 0.1.1",
"der 0.6.1", "der 0.6.1",
"generic-array", "generic-array 0.14.7",
"pkcs8 0.9.0", "pkcs8 0.9.0",
"subtle", "subtle",
"zeroize", "zeroize",
@@ -7749,7 +8089,7 @@ checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
dependencies = [ dependencies = [
"base16ct 0.2.0", "base16ct 0.2.0",
"der 0.7.9", "der 0.7.9",
"generic-array", "generic-array 0.14.7",
"pkcs8 0.10.2", "pkcs8 0.10.2",
"subtle", "subtle",
"zeroize", "zeroize",
@@ -7828,6 +8168,27 @@ dependencies = [
"serde_derive", "serde_derive",
] ]
[[package]]
name = "serde-aux"
version = "4.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5290c39c5f6992b9dddbda28541d965dba46468294e6018a408fa297e6c602de"
dependencies = [
"serde",
"serde-value",
"serde_json",
]
[[package]]
name = "serde-value"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c"
dependencies = [
"ordered-float",
"serde",
]
[[package]] [[package]]
name = "serde_array_query" name = "serde_array_query"
version = "0.1.0" version = "0.1.0"
@@ -7908,6 +8269,18 @@ dependencies = [
"digest 0.10.7", "digest 0.10.7",
] ]
[[package]]
name = "sha2"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69"
dependencies = [
"block-buffer 0.7.3",
"digest 0.8.1",
"fake-simd",
"opaque-debug 0.2.3",
]
[[package]] [[package]]
name = "sha2" name = "sha2"
version = "0.9.9" version = "0.9.9"
@@ -7918,7 +8291,7 @@ dependencies = [
"cfg-if", "cfg-if",
"cpufeatures", "cpufeatures",
"digest 0.9.0", "digest 0.9.0",
"opaque-debug", "opaque-debug 0.3.1",
] ]
[[package]] [[package]]
@@ -7941,7 +8314,7 @@ dependencies = [
"block-buffer 0.9.0", "block-buffer 0.9.0",
"digest 0.9.0", "digest 0.9.0",
"keccak", "keccak",
"opaque-debug", "opaque-debug 0.3.1",
] ]
[[package]] [[package]]
@@ -9170,6 +9543,12 @@ dependencies = [
"tinyvec", "tinyvec",
] ]
[[package]]
name = "unicode-segmentation"
version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
[[package]] [[package]]
name = "unicode-xid" name = "unicode-xid"
version = "0.2.6" version = "0.2.6"

View File

@@ -141,6 +141,8 @@ ethereum_ssz = "0.8.2"
ethereum_ssz_derive = "0.8.2" ethereum_ssz_derive = "0.8.2"
ethers-core = "1" ethers-core = "1"
ethers-providers = { version = "1", default-features = false } ethers-providers = { version = "1", default-features = false }
ethers-signers = { version = "1", default-features = false }
ethers-middleware = { version = "1", default-features = false }
exit-future = "0.2" exit-future = "0.2"
fnv = "1" fnv = "1"
fs2 = "0.4" fs2 = "0.4"

View File

@@ -7,7 +7,9 @@ edition = { workspace = true }
async-channel = { workspace = true } async-channel = { workspace = true }
deposit_contract = { workspace = true } deposit_contract = { workspace = true }
ethers-core = { workspace = true } ethers-core = { workspace = true }
ethers-middleware = { workspace = true }
ethers-providers = { workspace = true } ethers-providers = { workspace = true }
ethers-signers = { workspace = true }
execution_layer = { workspace = true } execution_layer = { workspace = true }
fork_choice = { workspace = true } fork_choice = { workspace = true }
futures = { workspace = true } futures = { workspace = true }

View File

@@ -7,10 +7,7 @@ use std::{env, fs};
use tempfile::TempDir; use tempfile::TempDir;
use unused_port::unused_tcp4_port; use unused_port::unused_tcp4_port;
// This is not currently used due to the following breaking changes in geth that requires updating our tests: const GETH_BRANCH: &str = "master";
// 1. removal of `personal` namespace in v1.14.12: See #30704
// 2. removal of `totalDifficulty` field from RPC in v1.14.11. See #30386.
// const GETH_BRANCH: &str = "master";
const GETH_REPO_URL: &str = "https://github.com/ethereum/go-ethereum"; const GETH_REPO_URL: &str = "https://github.com/ethereum/go-ethereum";
pub fn build_result(repo_dir: &Path) -> Output { pub fn build_result(repo_dir: &Path) -> Output {
@@ -30,14 +27,12 @@ pub fn build(execution_clients_dir: &Path) {
} }
// Get the latest tag on the branch // Get the latest tag on the branch
// let last_release = build_utils::get_latest_release(&repo_dir, GETH_BRANCH).unwrap(); let last_release = build_utils::get_latest_release(&repo_dir, GETH_BRANCH).unwrap();
// Using an older release due to breaking changes in recent releases. See comment on `GETH_BRANCH` const. build_utils::checkout(&repo_dir, dbg!(&last_release)).unwrap();
let release_tag = "v1.14.10";
build_utils::checkout(&repo_dir, dbg!(release_tag)).unwrap();
// Build geth // Build geth
build_utils::check_command_output(build_result(&repo_dir), || { build_utils::check_command_output(build_result(&repo_dir), || {
format!("geth make failed using release {release_tag}") format!("geth make failed using release {last_release}")
}); });
} }
@@ -102,7 +97,7 @@ impl GenericExecutionEngine for GethEngine {
.arg(datadir.path().to_str().unwrap()) .arg(datadir.path().to_str().unwrap())
.arg("--http") .arg("--http")
.arg("--http.api") .arg("--http.api")
.arg("engine,eth,personal") .arg("engine,eth")
.arg("--http.port") .arg("--http.port")
.arg(http_port.to_string()) .arg(http_port.to_string())
.arg("--authrpc.port") .arg("--authrpc.port")

View File

@@ -32,12 +32,12 @@ fn main() {
fn test_geth() { fn test_geth() {
let test_dir = build_utils::prepare_dir(); let test_dir = build_utils::prepare_dir();
geth::build(&test_dir); geth::build(&test_dir);
TestRig::new(GethEngine).perform_tests_blocking(); TestRig::new(GethEngine, true).perform_tests_blocking();
geth::clean(&test_dir); geth::clean(&test_dir);
} }
fn test_nethermind() { fn test_nethermind() {
let test_dir = build_utils::prepare_dir(); let test_dir = build_utils::prepare_dir();
nethermind::build(&test_dir); nethermind::build(&test_dir);
TestRig::new(NethermindEngine).perform_tests_blocking(); TestRig::new(NethermindEngine, false).perform_tests_blocking();
} }

View File

@@ -2,7 +2,9 @@ use crate::execution_engine::{
ExecutionEngine, GenericExecutionEngine, ACCOUNT1, ACCOUNT2, KEYSTORE_PASSWORD, PRIVATE_KEYS, ExecutionEngine, GenericExecutionEngine, ACCOUNT1, ACCOUNT2, KEYSTORE_PASSWORD, PRIVATE_KEYS,
}; };
use crate::transactions::transactions; use crate::transactions::transactions;
use ethers_middleware::SignerMiddleware;
use ethers_providers::Middleware; use ethers_providers::Middleware;
use ethers_signers::LocalWallet;
use execution_layer::test_utils::DEFAULT_GAS_LIMIT; use execution_layer::test_utils::DEFAULT_GAS_LIMIT;
use execution_layer::{ use execution_layer::{
BlockProposalContentsType, BuilderParams, ChainHealth, ExecutionLayer, PayloadAttributes, BlockProposalContentsType, BuilderParams, ChainHealth, ExecutionLayer, PayloadAttributes,
@@ -44,6 +46,7 @@ pub struct TestRig<Engine, E: EthSpec = MainnetEthSpec> {
ee_b: ExecutionPair<Engine, E>, ee_b: ExecutionPair<Engine, E>,
spec: ChainSpec, spec: ChainSpec,
_runtime_shutdown: async_channel::Sender<()>, _runtime_shutdown: async_channel::Sender<()>,
use_local_signing: bool,
} }
/// Import a private key into the execution engine and unlock it so that we can /// Import a private key into the execution engine and unlock it so that we can
@@ -104,7 +107,7 @@ async fn import_and_unlock(http_url: SensitiveUrl, priv_keys: &[&str], password:
} }
impl<Engine: GenericExecutionEngine> TestRig<Engine> { impl<Engine: GenericExecutionEngine> TestRig<Engine> {
pub fn new(generic_engine: Engine) -> Self { pub fn new(generic_engine: Engine, use_local_signing: bool) -> Self {
let runtime = Arc::new( let runtime = Arc::new(
tokio::runtime::Builder::new_multi_thread() tokio::runtime::Builder::new_multi_thread()
.enable_all() .enable_all()
@@ -166,6 +169,7 @@ impl<Engine: GenericExecutionEngine> TestRig<Engine> {
ee_b, ee_b,
spec, spec,
_runtime_shutdown: runtime_shutdown, _runtime_shutdown: runtime_shutdown,
use_local_signing,
} }
} }
@@ -197,15 +201,9 @@ impl<Engine: GenericExecutionEngine> TestRig<Engine> {
pub async fn perform_tests(&self) { pub async fn perform_tests(&self) {
self.wait_until_synced().await; self.wait_until_synced().await;
// Import and unlock all private keys to sign transactions // Create a local signer in case we need to sign transactions locally
let _ = futures::future::join_all([&self.ee_a, &self.ee_b].iter().map(|ee| { let wallet1: LocalWallet = PRIVATE_KEYS[0].parse().expect("Invalid private key");
import_and_unlock( let signer = SignerMiddleware::new(&self.ee_a.execution_engine.provider, wallet1);
ee.execution_engine.http_url(),
&PRIVATE_KEYS,
KEYSTORE_PASSWORD,
)
}))
.await;
// We hardcode the accounts here since some EEs start with a default unlocked account // We hardcode the accounts here since some EEs start with a default unlocked account
let account1 = ethers_core::types::Address::from_slice(&hex::decode(ACCOUNT1).unwrap()); let account1 = ethers_core::types::Address::from_slice(&hex::decode(ACCOUNT1).unwrap());
@@ -236,15 +234,38 @@ impl<Engine: GenericExecutionEngine> TestRig<Engine> {
// Submit transactions before getting payload // Submit transactions before getting payload
let txs = transactions::<MainnetEthSpec>(account1, account2); let txs = transactions::<MainnetEthSpec>(account1, account2);
let mut pending_txs = Vec::new(); let mut pending_txs = Vec::new();
for tx in txs.clone().into_iter() {
let pending_tx = self if self.use_local_signing {
.ee_a // Sign locally with the Signer middleware
.execution_engine for (i, tx) in txs.clone().into_iter().enumerate() {
.provider // The local signer uses eth_sendRawTransaction, so we need to manually set the nonce
.send_transaction(tx, None) let mut tx = tx.clone();
.await tx.set_nonce(i as u64);
.unwrap(); let pending_tx = signer.send_transaction(tx, None).await.unwrap();
pending_txs.push(pending_tx); pending_txs.push(pending_tx);
}
} else {
// Sign on the EE
// Import and unlock all private keys to sign transactions on the EE
let _ = futures::future::join_all([&self.ee_a, &self.ee_b].iter().map(|ee| {
import_and_unlock(
ee.execution_engine.http_url(),
&PRIVATE_KEYS,
KEYSTORE_PASSWORD,
)
}))
.await;
for tx in txs.clone().into_iter() {
let pending_tx = self
.ee_a
.execution_engine
.provider
.send_transaction(tx, None)
.await
.unwrap();
pending_txs.push(pending_tx);
}
} }
/* /*