feat: add engine validator addon (#12905)

This commit is contained in:
Matthias Seitz
2024-11-27 14:40:48 +01:00
committed by GitHub
parent db9b86a7d6
commit b62929c390
4 changed files with 57 additions and 22 deletions

View File

@ -1,7 +1,11 @@
//! Optimism Node types config.
use std::sync::Arc;
use crate::{
args::RollupArgs,
engine::OpEngineValidator,
txpool::{OpTransactionPool, OpTransactionValidator},
OpEngineTypes,
};
use alloy_consensus::Header;
use reth_basic_payload_builder::{BasicPayloadJobGenerator, BasicPayloadJobGeneratorConfig};
use reth_chainspec::{EthChainSpec, EthereumHardforks, Hardforks};
@ -17,7 +21,7 @@ use reth_node_builder::{
PayloadServiceBuilder, PoolBuilder, PoolBuilderConfigOverrides,
},
node::{FullNodeTypes, NodeTypes, NodeTypesWithEngine},
rpc::{EngineValidatorBuilder, RethRpcAddOns, RpcAddOns, RpcHandle},
rpc::{EngineValidatorAddOn, EngineValidatorBuilder, RethRpcAddOns, RpcAddOns, RpcHandle},
BuilderContext, Node, NodeAdapter, NodeComponentsBuilder, PayloadBuilderConfig,
};
use reth_optimism_chainspec::OpChainSpec;
@ -42,13 +46,7 @@ use reth_transaction_pool::{
TransactionValidationTaskExecutor,
};
use reth_trie_db::MerklePatriciaTrie;
use crate::{
args::RollupArgs,
engine::OpEngineValidator,
txpool::{OpTransactionPool, OpTransactionValidator},
OpEngineTypes,
};
use std::sync::Arc;
/// Storage implementation for Optimism.
#[derive(Debug, Default, Clone)]
@ -260,6 +258,18 @@ where
}
}
impl<N> EngineValidatorAddOn<N> for OpAddOns<N>
where
N: FullNodeComponents<Types: NodeTypes<ChainSpec = OpChainSpec>>,
OpEngineValidator: EngineValidator<<N::Types as NodeTypesWithEngine>::Engine>,
{
type Validator = OpEngineValidator;
async fn engine_validator(&self, ctx: &AddOnsContext<'_, N>) -> eyre::Result<Self::Validator> {
OpEngineValidatorBuilder::default().build(ctx).await
}
}
/// A regular optimism evm and executor builder.
#[derive(Debug, Default, Clone, Copy)]
#[non_exhaustive]