fix: Use OptimismBeaconConsensus in the OptimismNode (#8487)

This commit is contained in:
Brian Bland
2024-06-11 10:40:23 -07:00
committed by GitHub
parent 3b8cc0653b
commit 5eecc4f910
14 changed files with 262 additions and 46 deletions

View File

@ -29,6 +29,7 @@ reth-evm.workspace = true
reth-revm.workspace = true
reth-evm-optimism.workspace = true
reth-beacon-consensus.workspace = true
reth-optimism-consensus.workspace = true
revm-primitives.workspace = true
reth-discv5.workspace = true

View File

@ -11,11 +11,13 @@ use reth_evm_optimism::{OpExecutorProvider, OptimismEvmConfig};
use reth_network::{NetworkHandle, NetworkManager};
use reth_node_builder::{
components::{
ComponentsBuilder, ExecutorBuilder, NetworkBuilder, PayloadServiceBuilder, PoolBuilder,
ComponentsBuilder, ConsensusBuilder, ExecutorBuilder, NetworkBuilder,
PayloadServiceBuilder, PoolBuilder,
},
node::{FullNodeTypes, NodeTypes},
BuilderContext, Node, PayloadBuilderConfig,
};
use reth_optimism_consensus::OptimismBeaconConsensus;
use reth_payload_builder::{PayloadBuilderHandle, PayloadBuilderService};
use reth_provider::CanonStateSubscriptions;
use reth_tracing::tracing::{debug, info};
@ -47,6 +49,7 @@ impl OptimismNode {
OptimismPayloadBuilder,
OptimismNetworkBuilder,
OptimismExecutorBuilder,
OptimismConsensusBuilder,
>
where
Node: FullNodeTypes<Engine = OptimismEngineTypes>,
@ -61,6 +64,7 @@ impl OptimismNode {
))
.network(OptimismNetworkBuilder { disable_txpool_gossip })
.executor(OptimismExecutorBuilder::default())
.consensus(OptimismConsensusBuilder::default())
}
}
@ -74,6 +78,7 @@ where
OptimismPayloadBuilder,
OptimismNetworkBuilder,
OptimismExecutorBuilder,
OptimismConsensusBuilder,
>;
fn components_builder(self) -> Self::ComponentsBuilder {
@ -302,3 +307,19 @@ where
Ok(handle)
}
}
/// A basic optimism consensus builder.
#[derive(Debug, Default, Clone)]
#[non_exhaustive]
pub struct OptimismConsensusBuilder;
impl<Node> ConsensusBuilder<Node> for OptimismConsensusBuilder
where
Node: FullNodeTypes,
{
type Consensus = OptimismBeaconConsensus;
async fn build_consensus(self, ctx: &BuilderContext<Node>) -> eyre::Result<Self::Consensus> {
Ok(OptimismBeaconConsensus::new(ctx.chain_spec()))
}
}