feat(l2-withdrawals): Define OpEngineApiBuilder (#14426)

This commit is contained in:
Emilia Hane
2025-02-12 08:04:52 +01:00
committed by GitHub
parent 771a99be53
commit ea40f78e59
6 changed files with 67 additions and 4 deletions

View File

@@ -0,0 +1,40 @@
//! RPC component builder
pub use reth_optimism_rpc::OpEngineApi;
use reth_chainspec::EthereumHardforks;
use reth_node_api::{
AddOnsContext, EngineTypes, ExecutionData, FullNodeComponents, NodeTypes, NodeTypesWithEngine,
};
use reth_node_builder::rpc::{BasicEngineApiBuilder, EngineApiBuilder, EngineValidatorBuilder};
/// Builder for basic [`OpEngineApi`] implementation.
#[derive(Debug, Default)]
pub struct OpEngineApiBuilder<EV> {
inner: BasicEngineApiBuilder<EV>,
}
impl<N, EV> EngineApiBuilder<N> for OpEngineApiBuilder<EV>
where
N: FullNodeComponents<
Types: NodeTypesWithEngine<
ChainSpec: EthereumHardforks,
Engine: EngineTypes<ExecutionData = ExecutionData>,
>,
>,
EV: EngineValidatorBuilder<N>,
{
type EngineApi = OpEngineApi<
N::Provider,
<N::Types as NodeTypesWithEngine>::Engine,
N::Pool,
EV::Validator,
<N::Types as NodeTypes>::ChainSpec,
>;
async fn build_engine_api(self, ctx: &AddOnsContext<'_, N>) -> eyre::Result<Self::EngineApi> {
let inner = self.inner.build_engine_api(ctx).await?;
Ok(OpEngineApi::new(inner))
}
}