diff --git a/Cargo.lock b/Cargo.lock index a9120e1a458ff..8d38d7a065585 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -222,13 +222,13 @@ dependencies = [ [[package]] name = "alloy-evm" -version = "0.19.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce2c723dd19c7b7e6dac0f52dae208beae40ce093c176cf82e2e4d3ead756d3" +checksum = "0dbe7c66c859b658d879b22e8aaa19546dab726b0639f4649a424ada3d99349e" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-hardforks", + "alloy-hardforks 0.3.0", "alloy-primitives", "alloy-rpc-types-eth", "alloy-sol-types", @@ -266,6 +266,19 @@ dependencies = [ "dyn-clone", ] +[[package]] +name = "alloy-hardforks" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a20b180071d4f22db71702329101685ccff2e2a8f400d30a68ba907700163bf5" +dependencies = [ + "alloy-chains", + "alloy-eip2124", + "alloy-primitives", + "auto_impl", + "dyn-clone", +] + [[package]] name = "alloy-json-abi" version = "1.3.1" @@ -334,9 +347,9 @@ dependencies = [ [[package]] name = "alloy-op-evm" -version = "0.19.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93e9a39a883b63c7fe816627377baf25de35564d1b3c480a4fbcabeec2d22279" +checksum = "ed9b726869a13d5d958f2f78fbef7ce522689c4d40d613c16239f5e286fbeb1a" dependencies = [ "alloy-consensus", "alloy-eips", @@ -351,12 +364,12 @@ dependencies = [ [[package]] name = "alloy-op-hardforks" -version = "0.2.13" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3417f4187eaf7f7fb0d7556f0197bca26f0b23c4bb3aca0c9d566dc1c5d727a2" +checksum = "9b6e8ab92a4b6cf57d84cec62868b7161f40de36b01ffda62455deb3907c9001" dependencies = [ "alloy-chains", - "alloy-hardforks", + "alloy-hardforks 0.3.0", "auto_impl", ] @@ -1042,7 +1055,7 @@ dependencies = [ "alloy-eips", "alloy-evm", "alloy-genesis", - "alloy-hardforks", + "alloy-hardforks 0.3.0", "alloy-network", "alloy-op-evm", "alloy-op-hardforks", @@ -2522,7 +2535,7 @@ dependencies = [ "alloy-dyn-abi", "alloy-eips", "alloy-ens", - "alloy-hardforks", + "alloy-hardforks 0.3.0", "alloy-json-abi", "alloy-json-rpc", "alloy-network", @@ -4005,7 +4018,7 @@ version = "1.3.2" dependencies = [ "alloy-chains", "alloy-dyn-abi", - "alloy-hardforks", + "alloy-hardforks 0.3.0", "alloy-json-abi", "alloy-network", "alloy-primitives", @@ -4694,7 +4707,7 @@ dependencies = [ "alloy-dyn-abi", "alloy-evm", "alloy-genesis", - "alloy-hardforks", + "alloy-hardforks 0.3.0", "alloy-json-abi", "alloy-network", "alloy-op-evm", @@ -4799,7 +4812,7 @@ checksum = "f393054b70525583a48b137776f62c9fe68f1f432f2c5ee143c224b1491cdab3" dependencies = [ "alloy-chains", "alloy-consensus", - "alloy-hardforks", + "alloy-hardforks 0.2.13", "alloy-primitives", "alloy-provider", "alloy-rpc-types", diff --git a/Cargo.toml b/Cargo.toml index 163da0863791f..91f3afdc83947 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -234,8 +234,8 @@ alloy-transport = { version = "1.0.23", default-features = false } alloy-transport-http = { version = "1.0.23", default-features = false } alloy-transport-ipc = { version = "1.0.23", default-features = false } alloy-transport-ws = { version = "1.0.23", default-features = false } -alloy-hardforks = { version = "0.2.12", default-features = false } -alloy-op-hardforks = { version = "0.2.12", default-features = false } +alloy-hardforks = { version = "0.3.0", default-features = false } +alloy-op-hardforks = { version = "0.3.0", default-features = false } ## alloy-core alloy-dyn-abi = "1.3.1" @@ -265,8 +265,8 @@ revm-inspectors = { version = "0.29.0", features = ["serde"] } op-revm = { version = "10.0.0", default-features = false } ## alloy-evm -alloy-evm = "0.19.0" -alloy-op-evm = "0.19.0" +alloy-evm = "0.20.1" +alloy-op-evm = "0.20.1" ## cli anstream = "0.6" diff --git a/crates/anvil/src/eth/backend/cheats.rs b/crates/anvil/src/eth/backend/cheats.rs index c7f5f3b71a7ce..dc1fa19a2c2df 100644 --- a/crates/anvil/src/eth/backend/cheats.rs +++ b/crates/anvil/src/eth/backend/cheats.rs @@ -7,10 +7,14 @@ use alloy_primitives::{ }; use parking_lot::RwLock; use revm::precompile::{ - PrecompileError, PrecompileOutput, PrecompileResult, secp256k1::ec_recover_run, + PrecompileError, PrecompileId, PrecompileOutput, PrecompileResult, secp256k1::ec_recover_run, utilities::right_pad, }; -use std::sync::Arc; +use std::{borrow::Cow, sync::Arc}; + +/// ID for the [`CheatEcrecover::precompile_id`] precompile. +static PRECOMPILE_ID_CHEAT_ECRECOVER: PrecompileId = + PrecompileId::Custom(Cow::Borrowed("cheat_ecrecover")); /// Manages user modifications that may affect the node's behavior /// @@ -127,6 +131,10 @@ impl Precompile for CheatEcrecover { ec_recover_run(input.data, input.gas) } + fn precompile_id(&self) -> &PrecompileId { + &PRECOMPILE_ID_CHEAT_ECRECOVER + } + fn is_pure(&self) -> bool { false } diff --git a/crates/anvil/src/eth/backend/executor.rs b/crates/anvil/src/eth/backend/executor.rs index 55214afc45817..bf686f22eb95b 100644 --- a/crates/anvil/src/eth/backend/executor.rs +++ b/crates/anvil/src/eth/backend/executor.rs @@ -356,7 +356,10 @@ impl Iterator for &mut TransactionExec if cheats.has_recover_overrides() { let cheat_ecrecover = CheatEcrecover::new(Arc::clone(&cheats)); evm.precompiles_mut().apply_precompile(&EC_RECOVER, move |_| { - Some(DynPrecompile::new_stateful(move |input| cheat_ecrecover.call(input))) + Some(DynPrecompile::new_stateful( + cheat_ecrecover.precompile_id().clone(), + move |input| cheat_ecrecover.call(input), + )) }); } diff --git a/crates/anvil/src/eth/backend/mem/mod.rs b/crates/anvil/src/eth/backend/mem/mod.rs index 15aee4389daba..a9e8aceb0ef6f 100644 --- a/crates/anvil/src/eth/backend/mem/mod.rs +++ b/crates/anvil/src/eth/backend/mem/mod.rs @@ -1185,7 +1185,10 @@ impl Backend { if cheats.has_recover_overrides() { let cheat_ecrecover = CheatEcrecover::new(Arc::clone(&cheats)); evm.precompiles_mut().apply_precompile(&EC_RECOVER, move |_| { - Some(DynPrecompile::new_stateful(move |input| cheat_ecrecover.call(input))) + Some(DynPrecompile::new_stateful( + cheat_ecrecover.precompile_id().clone(), + move |input| cheat_ecrecover.call(input), + )) }); } diff --git a/crates/anvil/src/hardfork.rs b/crates/anvil/src/hardfork.rs index 2c26dd12d4dfc..b73da380d2861 100644 --- a/crates/anvil/src/hardfork.rs +++ b/crates/anvil/src/hardfork.rs @@ -54,6 +54,11 @@ pub fn spec_id_from_ethereum_hardfork(hardfork: EthereumHardfork) -> SpecId { EthereumHardfork::Cancun => SpecId::CANCUN, EthereumHardfork::Prague => SpecId::PRAGUE, EthereumHardfork::Osaka => SpecId::OSAKA, + EthereumHardfork::Bpo1 + | EthereumHardfork::Bpo2 + | EthereumHardfork::Bpo3 + | EthereumHardfork::Bpo4 + | EthereumHardfork::Bpo5 => unimplemented!(), } }