Skip to content
This repository was archived by the owner on Jan 9, 2026. It is now read-only.

Commit 37741fd

Browse files
klkvrfgimenez
andauthored
refactor: execute through EvmConfig in engine + MockEvmConfig (paradigmxyz#16025)
Co-authored-by: Federico Gimenez <federico.gimenez@gmail.com>
1 parent 03913ca commit 37741fd

File tree

20 files changed

+356
-262
lines changed

20 files changed

+356
-262
lines changed

Cargo.lock

Lines changed: 3 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/engine/local/src/service.rs

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ use reth_engine_tree::{
2929
persistence::PersistenceHandle,
3030
tree::{EngineApiTreeHandler, InvalidBlockHook, TreeConfig},
3131
};
32-
use reth_evm::{execute::BlockExecutorProvider, ConfigureEvm};
32+
use reth_evm::ConfigureEvm;
3333
use reth_node_types::BlockTy;
3434
use reth_payload_builder::PayloadBuilderHandle;
3535
use reth_payload_primitives::{PayloadAttributesBuilder, PayloadTypes};
@@ -67,7 +67,6 @@ where
6767
#[expect(clippy::too_many_arguments)]
6868
pub fn new<B, V, C>(
6969
consensus: Arc<dyn FullConsensus<N::Primitives, Error = ConsensusError>>,
70-
executor_factory: impl BlockExecutorProvider<Primitives = N::Primitives>,
7170
provider: ProviderFactory<N>,
7271
blockchain_db: BlockchainProvider<N>,
7372
pruner: PrunerWithFactory<ProviderFactory<N>>,
@@ -95,20 +94,18 @@ where
9594
PersistenceHandle::<N::Primitives>::spawn_service(provider, pruner, sync_metrics_tx);
9695
let canonical_in_memory_state = blockchain_db.canonical_in_memory_state();
9796

98-
let (to_tree_tx, from_tree) =
99-
EngineApiTreeHandler::<N::Primitives, _, _, _, _, _>::spawn_new(
100-
blockchain_db.clone(),
101-
executor_factory,
102-
consensus,
103-
payload_validator,
104-
persistence_handle,
105-
payload_builder.clone(),
106-
canonical_in_memory_state,
107-
tree_config,
108-
invalid_block_hook,
109-
engine_kind,
110-
evm_config,
111-
);
97+
let (to_tree_tx, from_tree) = EngineApiTreeHandler::<N::Primitives, _, _, _, _>::spawn_new(
98+
blockchain_db.clone(),
99+
consensus,
100+
payload_validator,
101+
persistence_handle,
102+
payload_builder.clone(),
103+
canonical_in_memory_state,
104+
tree_config,
105+
invalid_block_hook,
106+
engine_kind,
107+
evm_config,
108+
);
112109

113110
let handler = EngineApiRequestHandler::new(to_tree_tx, from_tree);
114111

crates/engine/service/src/service.rs

Lines changed: 18 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ pub use reth_engine_tree::{
1515
engine::EngineApiEvent,
1616
};
1717
use reth_ethereum_primitives::EthPrimitives;
18-
use reth_evm::{execute::BlockExecutorProvider, ConfigureEvm};
18+
use reth_evm::ConfigureEvm;
1919
use reth_network_p2p::BlockClient;
2020
use reth_node_types::{BlockTy, NodeTypes};
2121
use reth_payload_builder::PayloadBuilderHandle;
@@ -27,7 +27,6 @@ use reth_prune::PrunerWithFactory;
2727
use reth_stages_api::{MetricEventsSender, Pipeline};
2828
use reth_tasks::TaskSpawner;
2929
use std::{
30-
marker::PhantomData,
3130
pin::Pin,
3231
sync::Arc,
3332
task::{Context, Poll},
@@ -55,27 +54,23 @@ type EngineServiceType<N, Client> = ChainOrchestrator<
5554
// TODO(mattsse): remove hidde once fixed : <https://github.com/rust-lang/rust/issues/135363>
5655
// otherwise rustdoc fails to resolve the alias
5756
#[doc(hidden)]
58-
pub struct EngineService<N, Client, E>
57+
pub struct EngineService<N, Client>
5958
where
6059
N: ProviderNodeTypes,
6160
Client: BlockClient<Block = BlockTy<N>> + 'static,
62-
E: BlockExecutorProvider + 'static,
6361
{
6462
orchestrator: EngineServiceType<N, Client>,
65-
_marker: PhantomData<E>,
6663
}
6764

68-
impl<N, Client, E> EngineService<N, Client, E>
65+
impl<N, Client> EngineService<N, Client>
6966
where
7067
N: ProviderNodeTypes,
7168
Client: BlockClient<Block = BlockTy<N>> + 'static,
72-
E: BlockExecutorProvider<Primitives = N::Primitives> + 'static,
7369
{
7470
/// Constructor for `EngineService`.
7571
#[expect(clippy::too_many_arguments)]
7672
pub fn new<V, C>(
7773
consensus: Arc<dyn FullConsensus<N::Primitives, Error = ConsensusError>>,
78-
executor_factory: E,
7974
chain_spec: Arc<N::ChainSpec>,
8075
client: Client,
8176
incoming_requests: EngineMessageStream<N::Payload>,
@@ -105,30 +100,25 @@ where
105100

106101
let canonical_in_memory_state = blockchain_db.canonical_in_memory_state();
107102

108-
let (to_tree_tx, from_tree) =
109-
EngineApiTreeHandler::<N::Primitives, _, _, _, _, _>::spawn_new(
110-
blockchain_db,
111-
executor_factory,
112-
consensus,
113-
payload_validator,
114-
persistence_handle,
115-
payload_builder,
116-
canonical_in_memory_state,
117-
tree_config,
118-
invalid_block_hook,
119-
engine_kind,
120-
evm_config,
121-
);
103+
let (to_tree_tx, from_tree) = EngineApiTreeHandler::<N::Primitives, _, _, _, _>::spawn_new(
104+
blockchain_db,
105+
consensus,
106+
payload_validator,
107+
persistence_handle,
108+
payload_builder,
109+
canonical_in_memory_state,
110+
tree_config,
111+
invalid_block_hook,
112+
engine_kind,
113+
evm_config,
114+
);
122115

123116
let engine_handler = EngineApiRequestHandler::new(to_tree_tx, from_tree);
124117
let handler = EngineHandler::new(engine_handler, downloader, incoming_requests);
125118

126119
let backfill_sync = PipelineSync::new(pipeline, pipeline_task_spawner);
127120

128-
Self {
129-
orchestrator: ChainOrchestrator::new(handler, backfill_sync),
130-
_marker: Default::default(),
131-
}
121+
Self { orchestrator: ChainOrchestrator::new(handler, backfill_sync) }
132122
}
133123

134124
/// Returns a mutable reference to the orchestrator.
@@ -137,11 +127,10 @@ where
137127
}
138128
}
139129

140-
impl<N, Client, E> Stream for EngineService<N, Client, E>
130+
impl<N, Client> Stream for EngineService<N, Client>
141131
where
142132
N: ProviderNodeTypes,
143133
Client: BlockClient<Block = BlockTy<N>> + 'static,
144-
E: BlockExecutorProvider + 'static,
145134
{
146135
type Item = ChainEvent<BeaconConsensusEngineEvent<N::Primitives>>;
147136

@@ -164,7 +153,7 @@ mod tests {
164153
use reth_engine_tree::{test_utils::TestPipelineBuilder, tree::NoopInvalidBlockHook};
165154
use reth_ethereum_consensus::EthBeaconConsensus;
166155
use reth_ethereum_engine_primitives::EthEngineTypes;
167-
use reth_evm_ethereum::{execute::EthExecutorProvider, EthEvmConfig};
156+
use reth_evm_ethereum::EthEvmConfig;
168157
use reth_exex_types::FinishedExExHeight;
169158
use reth_network_p2p::test_utils::TestFullBlockClient;
170159
use reth_node_ethereum::EthereumEngineValidator;
@@ -198,7 +187,6 @@ mod tests {
198187
let pipeline_task_spawner = Box::<TokioTaskExecutor>::default();
199188
let provider_factory = create_test_provider_factory_with_chain_spec(chain_spec.clone());
200189

201-
let executor_factory = EthExecutorProvider::ethereum(chain_spec.clone());
202190
let blockchain_db =
203191
BlockchainProvider::with_latest(provider_factory.clone(), SealedHeader::default())
204192
.unwrap();
@@ -211,7 +199,6 @@ mod tests {
211199
let (tx, _rx) = unbounded_channel();
212200
let _eth_service = EngineService::new(
213201
consensus,
214-
executor_factory,
215202
chain_spec,
216203
client,
217204
Box::pin(incoming_requests),

crates/engine/tree/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,13 @@ reth-tracing = { workspace = true, optional = true }
7070

7171
[dev-dependencies]
7272
# reth
73+
reth-evm-ethereum.workspace = true
7374
reth-chain-state = { workspace = true, features = ["test-utils"] }
7475
reth-chainspec.workspace = true
7576
reth-db-common.workspace = true
7677
reth-ethereum-consensus.workspace = true
7778
reth-ethereum-engine-primitives.workspace = true
7879
reth-evm = { workspace = true, features = ["test-utils"] }
79-
reth-evm-ethereum.workspace = true
8080
reth-exex-types.workspace = true
8181
reth-network-p2p = { workspace = true, features = ["test-utils"] }
8282
reth-prune-types.workspace = true
@@ -133,4 +133,5 @@ test-utils = [
133133
"reth-trie-parallel/test-utils",
134134
"reth-ethereum-primitives/test-utils",
135135
"reth-node-ethereum/test-utils",
136+
"reth-evm-ethereum/test-utils",
136137
]

0 commit comments

Comments
 (0)