Skip to content

Commit 54c1d55

Browse files
authored
chore(anvil): replace inject_custom_precompiles with PrecompilesMap::extend_precompiles method (#12469)
1 parent 118e12e commit 54c1d55

File tree

4 files changed

+9
-31
lines changed

4 files changed

+9
-31
lines changed

crates/anvil/src/eth/backend/executor.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ use crate::{
1111
error::InvalidTransactionError,
1212
pool::transactions::PoolTransaction,
1313
},
14-
inject_custom_precompiles,
1514
mem::inspector::AnvilInspector,
1615
};
1716
use alloy_consensus::{
@@ -361,7 +360,7 @@ impl<DB: Db + ?Sized, V: TransactionValidator> Iterator for &mut TransactionExec
361360
self.networks.inject_precompiles(evm.precompiles_mut());
362361

363362
if let Some(factory) = &self.precompile_factory {
364-
inject_custom_precompiles(&mut evm, factory.precompiles());
363+
evm.precompiles_mut().extend_precompiles(factory.precompiles());
365364
}
366365

367366
let cheats = Arc::new(self.cheats.clone());

crates/anvil/src/eth/backend/mem/mod.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ use crate::{
2727
pool::transactions::PoolTransaction,
2828
sign::build_typed_transaction,
2929
},
30-
inject_custom_precompiles,
3130
mem::{
3231
inspector::AnvilInspector,
3332
storage::{BlockchainStorage, InMemoryBlockStates, MinedBlockOutcome},
@@ -1180,7 +1179,7 @@ impl Backend {
11801179
self.env.read().networks.inject_precompiles(evm.precompiles_mut());
11811180

11821181
if let Some(factory) = &self.precompile_factory {
1183-
inject_custom_precompiles(&mut evm, factory.precompiles());
1182+
evm.precompiles_mut().extend_precompiles(factory.precompiles());
11841183
}
11851184

11861185
let cheats = Arc::new(self.cheats.clone());

crates/anvil/src/evm.rs

Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,5 @@
1-
use alloy_evm::{
2-
Database, Evm,
3-
eth::EthEvmContext,
4-
precompiles::{DynPrecompile, PrecompilesMap},
5-
};
1+
use alloy_evm::precompiles::DynPrecompile;
62
use alloy_primitives::Address;
7-
use foundry_evm::core::either_evm::EitherEvm;
8-
use op_revm::OpContext;
9-
use revm::Inspector;
103
use std::fmt::Debug;
114

125
/// Object-safe trait that enables injecting extra precompiles when using
@@ -16,24 +9,11 @@ pub trait PrecompileFactory: Send + Sync + Unpin + Debug {
169
fn precompiles(&self) -> Vec<(Address, DynPrecompile)>;
1710
}
1811

19-
/// Inject custom precompiles into the EVM dynamically.
20-
pub fn inject_custom_precompiles<DB, I>(
21-
evm: &mut EitherEvm<DB, I, PrecompilesMap>,
22-
precompiles: Vec<(Address, DynPrecompile)>,
23-
) where
24-
DB: Database,
25-
I: Inspector<EthEvmContext<DB>> + Inspector<OpContext<DB>>,
26-
{
27-
for (addr, precompile) in precompiles {
28-
evm.precompiles_mut().apply_precompile(&addr, move |_| Some(precompile));
29-
}
30-
}
31-
3212
#[cfg(test)]
3313
mod tests {
3414
use std::convert::Infallible;
3515

36-
use crate::{PrecompileFactory, inject_custom_precompiles};
16+
use crate::PrecompileFactory;
3717
use alloy_evm::{
3818
EthEvm, Evm, EvmEnv,
3919
eth::EthEvmContext,
@@ -194,7 +174,7 @@ mod tests {
194174

195175
assert!(!evm.precompiles().addresses().contains(&PRECOMPILE_ADDR));
196176

197-
inject_custom_precompiles(&mut evm, CustomPrecompileFactory.precompiles());
177+
evm.precompiles_mut().extend_precompiles(CustomPrecompileFactory.precompiles());
198178

199179
assert!(evm.precompiles().addresses().contains(&PRECOMPILE_ADDR));
200180

@@ -216,7 +196,7 @@ mod tests {
216196

217197
assert!(!evm.precompiles().addresses().contains(&PRECOMPILE_ADDR));
218198

219-
inject_custom_precompiles(&mut evm, CustomPrecompileFactory.precompiles());
199+
evm.precompiles_mut().extend_precompiles(CustomPrecompileFactory.precompiles());
220200

221201
assert!(evm.precompiles().addresses().contains(&PRECOMPILE_ADDR));
222202

@@ -241,7 +221,7 @@ mod tests {
241221

242222
assert!(!evm.precompiles().addresses().contains(&PRECOMPILE_ADDR));
243223

244-
inject_custom_precompiles(&mut evm, CustomPrecompileFactory.precompiles());
224+
evm.precompiles_mut().extend_precompiles(CustomPrecompileFactory.precompiles());
245225

246226
assert!(evm.precompiles().addresses().contains(&PRECOMPILE_ADDR));
247227

@@ -266,7 +246,7 @@ mod tests {
266246

267247
assert!(!evm.precompiles().addresses().contains(&PRECOMPILE_ADDR));
268248

269-
inject_custom_precompiles(&mut evm, CustomPrecompileFactory.precompiles());
249+
evm.precompiles_mut().extend_precompiles(CustomPrecompileFactory.precompiles());
270250

271251
assert!(evm.precompiles().addresses().contains(&PRECOMPILE_ADDR));
272252

crates/anvil/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ pub use alloy_hardforks::EthereumHardfork;
5555
pub mod eth;
5656
/// Evm related abstractions
5757
mod evm;
58-
pub use evm::{PrecompileFactory, inject_custom_precompiles};
58+
pub use evm::PrecompileFactory;
5959

6060
/// support for polling filters
6161
pub mod filter;

0 commit comments

Comments
 (0)