feat: exposed EvmConfig to PayloadServiceBuilder (#15887)

Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
This commit is contained in:
Ishika Choudhury
2025-04-25 06:59:01 +05:30
committed by GitHub
parent 79898f1756
commit c867812793
12 changed files with 89 additions and 170 deletions

View File

@@ -122,6 +122,7 @@ impl OpNode {
self.args.supervisor_safety_level,
),
)
.executor(OpExecutorBuilder::default())
.payload(BasicPayloadServiceBuilder::new(
OpPayloadBuilder::new(compute_pending_block).with_da_config(self.da_config.clone()),
))
@@ -129,7 +130,6 @@ impl OpNode {
disable_txpool_gossip,
disable_discovery_v4: !discovery_v4,
})
.executor(OpExecutorBuilder::default())
.consensus(OpConsensusBuilder::default())
}
@@ -708,29 +708,36 @@ impl<Txs> OpPayloadBuilder<Txs> {
let Self { compute_pending_block, da_config, .. } = self;
OpPayloadBuilder { compute_pending_block, best_transactions, da_config }
}
}
/// A helper method to initialize [`reth_optimism_payload_builder::OpPayloadBuilder`] with the
/// given EVM config.
pub fn build<Node, Evm, Pool>(
impl<Node, Pool, Txs, Evm> PayloadBuilderBuilder<Node, Pool, Evm> for OpPayloadBuilder<Txs>
where
Node: FullNodeTypes<
Types: NodeTypes<
Payload = OpEngineTypes,
ChainSpec = OpChainSpec,
Primitives = OpPrimitives,
>,
>,
Evm: ConfigureEvm<
Primitives = PrimitivesTy<Node::Types>,
NextBlockEnvCtx = OpNextBlockEnvAttributes,
> + 'static,
Pool: TransactionPool<Transaction: PoolTransaction<Consensus = TxTy<Node::Types>>>
+ Unpin
+ 'static,
Txs: OpPayloadTransactions<Pool::Transaction>,
<Pool as TransactionPool>::Transaction: OpPooledTx,
{
type PayloadBuilder =
reth_optimism_payload_builder::OpPayloadBuilder<Pool, Node::Provider, Evm, Txs>;
async fn build_payload_builder(
self,
evm_config: Evm,
ctx: &BuilderContext<Node>,
pool: Pool,
) -> eyre::Result<reth_optimism_payload_builder::OpPayloadBuilder<Pool, Node::Provider, Evm, Txs>>
where
Node: FullNodeTypes<
Types: NodeTypes<
Payload = OpEngineTypes,
ChainSpec = OpChainSpec,
Primitives = OpPrimitives,
>,
>,
Pool: TransactionPool<Transaction: PoolTransaction<Consensus = TxTy<Node::Types>>>
+ Unpin
+ 'static,
Evm: ConfigureEvm<Primitives = PrimitivesTy<Node::Types>>,
Txs: OpPayloadTransactions<Pool::Transaction>,
{
evm_config: Evm,
) -> eyre::Result<Self::PayloadBuilder> {
let payload_builder = reth_optimism_payload_builder::OpPayloadBuilder::with_builder_config(
pool,
ctx.provider().clone(),
@@ -743,33 +750,6 @@ impl<Txs> OpPayloadBuilder<Txs> {
}
}
impl<Node, Pool, Txs> PayloadBuilderBuilder<Node, Pool> for OpPayloadBuilder<Txs>
where
Node: FullNodeTypes<
Types: NodeTypes<
Payload = OpEngineTypes,
ChainSpec = OpChainSpec,
Primitives = OpPrimitives,
>,
>,
Pool: TransactionPool<Transaction: PoolTransaction<Consensus = TxTy<Node::Types>>>
+ Unpin
+ 'static,
Txs: OpPayloadTransactions<Pool::Transaction>,
<Pool as TransactionPool>::Transaction: OpPooledTx,
{
type PayloadBuilder =
reth_optimism_payload_builder::OpPayloadBuilder<Pool, Node::Provider, OpEvmConfig, Txs>;
async fn build_payload_builder(
self,
ctx: &BuilderContext<Node>,
pool: Pool,
) -> eyre::Result<Self::PayloadBuilder> {
self.build(OpEvmConfig::optimism(ctx.chain_spec()), ctx, pool)
}
}
/// A basic optimism network builder.
#[derive(Debug, Default, Clone)]
pub struct OpNetworkBuilder {