55
66#![ allow( missing_docs, rustdoc:: missing_crate_level_docs) ]
77
8- pub mod attributes;
9- pub mod builder;
10- pub mod error;
11- pub mod executor;
12- pub mod validator;
13-
14- use alloy_rpc_types:: engine:: {
15- ExecutionData , ExecutionPayloadEnvelopeV2 , ExecutionPayloadEnvelopeV3 ,
16- ExecutionPayloadEnvelopeV4 , ExecutionPayloadEnvelopeV5 , ExecutionPayloadV1 ,
17- } ;
188use clap:: Parser ;
199use evolve_ev_reth:: {
2010 config:: EvolveConfig ,
21- consensus:: EvolveConsensusBuilder ,
2211 rpc:: txpool:: { EvolveTxpoolApiImpl , EvolveTxpoolApiServer } ,
2312} ;
24- use reth_ethereum:: {
25- chainspec:: ChainSpec ,
26- node:: {
27- api:: { EngineTypes , FullNodeTypes , NodeTypes , PayloadTypes } ,
28- builder:: {
29- components:: { BasicPayloadServiceBuilder , ComponentsBuilder } ,
30- rpc:: RpcAddOns ,
31- Node , NodeAdapter ,
32- } ,
33- node:: { EthereumNetworkBuilder , EthereumPoolBuilder } ,
34- EthereumEthApiBuilder ,
35- } ,
36- primitives:: SealedBlock ,
37- } ;
3813use reth_ethereum_cli:: { chainspec:: EthereumChainSpecParser , Cli } ;
39- use reth_payload_builder:: EthBuiltPayload ;
40- use serde:: { Deserialize , Serialize } ;
4114use tracing:: info;
4215use tracing_subscriber:: { layer:: SubscriberExt , util:: SubscriberInitExt , EnvFilter } ;
4316
44- use crate :: {
45- attributes:: { EvolveEnginePayloadAttributes , EvolveEnginePayloadBuilderAttributes } ,
46- builder:: { EvolveArgs , EvolvePayloadBuilderBuilder } ,
47- executor:: EvolveExecutorBuilder ,
48- validator:: EvolveEngineValidatorBuilder ,
49- } ;
17+ use ev_node:: { log_startup, EvolveArgs , EvolveNode } ;
5018
5119#[ global_allocator]
5220static ALLOC : reth_cli_util:: allocator:: Allocator = reth_cli_util:: allocator:: new_allocator ( ) ;
@@ -64,95 +32,6 @@ fn init_otlp_tracing() -> eyre::Result<()> {
6432 Ok ( ( ) )
6533}
6634
67- /// Evolve engine types - uses custom payload attributes that support transactions
68- #[ derive( Clone , Debug , Default , Deserialize , Serialize ) ]
69- #[ non_exhaustive]
70- pub struct EvolveEngineTypes ;
71-
72- impl PayloadTypes for EvolveEngineTypes {
73- type ExecutionData = ExecutionData ;
74- type BuiltPayload = EthBuiltPayload ;
75- type PayloadAttributes = EvolveEnginePayloadAttributes ;
76- type PayloadBuilderAttributes = EvolveEnginePayloadBuilderAttributes ;
77-
78- fn block_to_payload (
79- block : SealedBlock <
80- <<Self :: BuiltPayload as reth_ethereum:: node:: api:: BuiltPayload >:: Primitives as reth_ethereum:: node:: api:: NodePrimitives >:: Block ,
81- > ,
82- ) -> ExecutionData {
83- let ( payload, sidecar) =
84- reth_ethereum:: rpc:: types:: engine:: ExecutionPayload :: from_block_unchecked (
85- block. hash ( ) ,
86- & block. into_block ( ) ,
87- ) ;
88- ExecutionData { payload, sidecar }
89- }
90- }
91-
92- impl EngineTypes for EvolveEngineTypes {
93- type ExecutionPayloadEnvelopeV1 = ExecutionPayloadV1 ;
94- type ExecutionPayloadEnvelopeV2 = ExecutionPayloadEnvelopeV2 ;
95- type ExecutionPayloadEnvelopeV3 = ExecutionPayloadEnvelopeV3 ;
96- type ExecutionPayloadEnvelopeV4 = ExecutionPayloadEnvelopeV4 ;
97- type ExecutionPayloadEnvelopeV5 = ExecutionPayloadEnvelopeV5 ;
98- }
99-
100- /// Evolve node type
101- #[ derive( Debug , Clone , Default ) ]
102- #[ non_exhaustive]
103- pub struct EvolveNode {
104- /// Evolve-specific arguments
105- pub args : EvolveArgs ,
106- }
107-
108- impl EvolveNode {
109- /// Create a new evolve node with the given arguments
110- pub const fn new ( args : EvolveArgs ) -> Self {
111- Self { args }
112- }
113- }
114-
115- impl NodeTypes for EvolveNode {
116- type Primitives = reth_ethereum:: EthPrimitives ;
117- type ChainSpec = ChainSpec ;
118- type Storage = reth_ethereum:: provider:: EthStorage ;
119- type Payload = EvolveEngineTypes ;
120- }
121-
122- /// Evolve node addons configuring RPC types with custom engine validator
123- pub type EvolveNodeAddOns < N > = RpcAddOns < N , EthereumEthApiBuilder , EvolveEngineValidatorBuilder > ;
124-
125- impl < N > Node < N > for EvolveNode
126- where
127- N : FullNodeTypes < Types = Self > ,
128- {
129- type ComponentsBuilder = ComponentsBuilder <
130- N ,
131- EthereumPoolBuilder ,
132- BasicPayloadServiceBuilder < EvolvePayloadBuilderBuilder > ,
133- EthereumNetworkBuilder ,
134- EvolveExecutorBuilder ,
135- EvolveConsensusBuilder ,
136- > ;
137- type AddOns = EvolveNodeAddOns < NodeAdapter < N > > ;
138-
139- fn components_builder ( & self ) -> Self :: ComponentsBuilder {
140- ComponentsBuilder :: default ( )
141- . node_types :: < N > ( )
142- . pool ( EthereumPoolBuilder :: default ( ) )
143- . executor ( EvolveExecutorBuilder :: default ( ) )
144- . payload ( BasicPayloadServiceBuilder :: new (
145- EvolvePayloadBuilderBuilder :: new ( & self . args ) ,
146- ) )
147- . network ( EthereumNetworkBuilder :: default ( ) )
148- . consensus ( EvolveConsensusBuilder :: default ( ) )
149- }
150-
151- fn add_ons ( & self ) -> Self :: AddOns {
152- EvolveNodeAddOns :: default ( )
153- }
154- }
155-
15635fn main ( ) {
15736 info ! ( "=== EV-RETH NODE STARTING ===" ) ;
15837
@@ -173,9 +52,7 @@ fn main() {
17352
17453 if let Err ( err) = Cli :: < EthereumChainSpecParser , EvolveArgs > :: parse ( ) . run (
17554 async move |builder, evolve_args| {
176- info ! ( "=== EV-RETH: Starting with args: {:?} ===" , evolve_args) ;
177- info ! ( "=== EV-RETH: Evolve node mode enabled ===" ) ;
178- info ! ( "=== EV-RETH: Using custom payload builder with transaction support ===" ) ;
55+ log_startup ( & evolve_args) ;
17956 let handle = builder
18057 . node ( EvolveNode :: new ( evolve_args) )
18158 . extend_rpc_modules ( move |ctx| {
0 commit comments