@@ -45,32 +45,13 @@ pub struct InteropHost {
4545 #[ arg( long, visible_alias = "l2-timestamp" , env) ]
4646 pub claimed_l2_timestamp : u64 ,
4747 /// Addresses of L2 JSON-RPC endpoints to use (eth and debug namespace required).
48- #[ arg(
49- long,
50- visible_alias = "l2s" ,
51- requires = "l1_node_address" ,
52- requires = "l1_beacon_address" ,
53- value_delimiter = ',' ,
54- env
55- ) ]
48+ #[ arg( long, visible_alias = "l2s" , requires = "l1_node_address" , value_delimiter = ',' , env) ]
5649 pub l2_node_addresses : Option < Vec < String > > ,
5750 /// Address of L1 JSON-RPC endpoint to use (eth and debug namespace required)
58- #[ arg(
59- long,
60- visible_alias = "l1" ,
61- requires = "l2_node_addresses" ,
62- requires = "l1_beacon_address" ,
63- env
64- ) ]
51+ #[ arg( long, visible_alias = "l1" , requires = "l2_node_addresses" , env) ]
6552 pub l1_node_address : Option < String > ,
6653 /// Address of the L1 Beacon API endpoint to use.
67- #[ arg(
68- long,
69- visible_alias = "beacon" ,
70- requires = "l1_node_address" ,
71- requires = "l2_node_addresses" ,
72- env
73- ) ]
54+ #[ arg( long, visible_alias = "beacon" , requires = "l1_node_address" , env) ]
7455 pub l1_beacon_address : Option < String > ,
7556 /// The Data Directory for preimage data storage. Optional if running in online mode,
7657 /// required if running in offline mode.
@@ -201,10 +182,10 @@ impl InteropHost {
201182
202183 /// Returns `true` if the host is running in offline mode.
203184 pub const fn is_offline ( & self ) -> bool {
204- self . l1_node_address . is_none ( ) &&
205- self . l2_node_addresses . is_none ( ) &&
206- self . l1_beacon_address . is_none ( ) &&
207- self . data_dir . is_some ( )
185+ self . l1_node_address . is_none ( )
186+ && self . l2_node_addresses . is_none ( )
187+ && self . l1_beacon_address . is_none ( )
188+ && self . data_dir . is_some ( )
208189 }
209190
210191 /// Reads the [RollupConfig]s from the file system and returns a map of L2 chain ID ->
@@ -251,12 +232,14 @@ impl InteropHost {
251232 self . l1_node_address . as_ref ( ) . ok_or ( InteropHostError :: Other ( "Provider must be set" ) ) ?,
252233 ) ;
253234
254- let blob_provider = OnlineBlobProvider :: init ( OnlineBeaconClient :: new_http (
255- self . l1_beacon_address
256- . clone ( )
257- . ok_or ( InteropHostError :: Other ( "Beacon API URL must be set" ) ) ?,
258- ) )
259- . await ;
235+ let blob_provider = if let Some ( beacon_address) = & self . l1_beacon_address {
236+ Some (
237+ OnlineBlobProvider :: init ( OnlineBeaconClient :: new_http ( beacon_address. clone ( ) ) )
238+ . await ,
239+ )
240+ } else {
241+ None
242+ } ;
260243
261244 // Resolve all chain IDs to their corresponding providers.
262245 let l2_node_addresses = self
@@ -285,7 +268,7 @@ pub struct InteropProviders {
285268 /// The L1 EL provider.
286269 pub l1 : RootProvider ,
287270 /// The L1 beacon node provider.
288- pub blobs : OnlineBlobProvider < OnlineBeaconClient > ,
271+ pub blobs : Option < OnlineBlobProvider < OnlineBeaconClient > > ,
289272 /// The L2 EL providers, keyed by chain ID.
290273 pub l2s : HashMap < u64 , RootProvider < Optimism > > ,
291274}
0 commit comments