4
4
//! required for the optimism engine API.
5
5
6
6
use crate :: evm:: AlphaNetEvmConfig ;
7
+ use reth_network:: { NetworkHandle , NetworkManager } ;
7
8
use reth_node_api:: { FullNodeTypes , NodeTypesWithEngine } ;
8
9
use reth_node_builder:: {
9
10
components:: {
10
- ComponentsBuilder , ExecutorBuilder , PayloadServiceBuilder , PoolBuilderConfigOverrides ,
11
+ ComponentsBuilder , ExecutorBuilder , NetworkBuilder , PayloadServiceBuilder ,
12
+ PoolBuilderConfigOverrides ,
11
13
} ,
12
14
BuilderContext , Node , NodeTypes ,
13
15
} ;
@@ -43,7 +45,7 @@ impl AlphaNetNode {
43
45
Node ,
44
46
OptimismPoolBuilder ,
45
47
AlphaNetPayloadBuilder ,
46
- OptimismNetworkBuilder ,
48
+ AlphanetNetworkBuilder ,
47
49
AlphaNetExecutorBuilder ,
48
50
OptimismConsensusBuilder ,
49
51
OptimismEngineValidatorBuilder ,
@@ -66,10 +68,10 @@ impl AlphaNetNode {
66
68
} ,
67
69
} )
68
70
. payload ( AlphaNetPayloadBuilder :: new ( compute_pending_block) )
69
- . network ( OptimismNetworkBuilder {
71
+ . network ( AlphanetNetworkBuilder :: new ( OptimismNetworkBuilder {
70
72
disable_txpool_gossip,
71
73
disable_discovery_v4 : !discovery_v4,
72
- } )
74
+ } ) )
73
75
. executor ( AlphaNetExecutorBuilder :: default ( ) )
74
76
. consensus ( OptimismConsensusBuilder :: default ( ) )
75
77
. engine_validator ( OptimismEngineValidatorBuilder :: default ( ) )
96
98
N ,
97
99
OptimismPoolBuilder ,
98
100
AlphaNetPayloadBuilder ,
99
- OptimismNetworkBuilder ,
101
+ AlphanetNetworkBuilder ,
100
102
AlphaNetExecutorBuilder ,
101
103
OptimismConsensusBuilder ,
102
104
OptimismEngineValidatorBuilder ,
@@ -170,3 +172,34 @@ where
170
172
self . inner . spawn ( AlphaNetEvmConfig :: new ( ctx. chain_spec ( ) . clone ( ) ) , ctx, pool)
171
173
}
172
174
}
175
+
176
+ /// The default alphanet network builder.
177
+ #[ derive( Debug , Default , Clone ) ]
178
+ pub struct AlphanetNetworkBuilder {
179
+ inner : OptimismNetworkBuilder ,
180
+ }
181
+
182
+ impl AlphanetNetworkBuilder {
183
+ /// Create a new instance based on the given op builder
184
+ pub const fn new ( network : OptimismNetworkBuilder ) -> Self {
185
+ Self { inner : network }
186
+ }
187
+ }
188
+
189
+ impl < Node , Pool > NetworkBuilder < Node , Pool > for AlphanetNetworkBuilder
190
+ where
191
+ Node : FullNodeTypes < Types : NodeTypes < ChainSpec = OpChainSpec > > ,
192
+ Pool : TransactionPool + Unpin + ' static ,
193
+ {
194
+ async fn build_network (
195
+ self ,
196
+ ctx : & BuilderContext < Node > ,
197
+ pool : Pool ,
198
+ ) -> eyre:: Result < NetworkHandle > {
199
+ let network_config = self . inner . network_config ( ctx) ?;
200
+ let network = NetworkManager :: builder ( network_config) . await ?;
201
+ let handle = ctx. start_network ( network, pool) ;
202
+
203
+ Ok ( handle)
204
+ }
205
+ }
0 commit comments