@@ -164,6 +164,8 @@ func NewNode(opts *Options) (*Node, error) {
164164 listenerL1Client = & laggerdL1Client {EthClient : listenerL1Client , amount : opts .LaggerdMode }
165165 }
166166
167+ listenerL1Client = & infiniteRetryL1Client {EthClient : listenerL1Client , logger : nd .logger }
168+
167169 blockTracker , err := blocktracker .NewBlocktrackerTransactor (
168170 opts .BlockTrackerContractAddr ,
169171 settlementRPC ,
@@ -232,7 +234,7 @@ func NewNode(opts *Options) (*Node, error) {
232234
233235 updtr , err := updater .NewUpdater (
234236 nd .logger .With ("component" , "updater" ),
235- l1Client ,
237+ listenerL1Client ,
236238 st ,
237239 evtMgr ,
238240 oracleTransactorSession ,
@@ -404,6 +406,53 @@ func (w *winnerOverrideL1Client) HeaderByNumber(ctx context.Context, number *big
404406 return hdr , nil
405407}
406408
409+ type infiniteRetryL1Client struct {
410+ l1Listener.EthClient
411+ logger * slog.Logger
412+ }
413+
414+ func (i * infiniteRetryL1Client ) BlockNumber (ctx context.Context ) (uint64 , error ) {
415+ var blkNum uint64
416+ var err error
417+ for {
418+ blkNum , err = i .EthClient .BlockNumber (ctx )
419+ if err == nil {
420+ break
421+ }
422+ i .logger .Error ("failed to get block number, retrying..." , "error" , err )
423+ time .Sleep (1 * time .Second )
424+ }
425+ return blkNum , nil
426+ }
427+
428+ func (i * infiniteRetryL1Client ) HeaderByNumber (ctx context.Context , number * big.Int ) (* types.Header , error ) {
429+ var hdr * types.Header
430+ var err error
431+ for {
432+ hdr , err = i .EthClient .HeaderByNumber (ctx , number )
433+ if err == nil {
434+ break
435+ }
436+ i .logger .Error ("failed to get header by number, retrying..." , "error" , err )
437+ time .Sleep (1 * time .Second )
438+ }
439+ return hdr , nil
440+ }
441+
442+ func (i * infiniteRetryL1Client ) BlockByNumber (ctx context.Context , number * big.Int ) (* types.Block , error ) {
443+ var blk * types.Block
444+ var err error
445+ for {
446+ blk , err = i .EthClient .BlockByNumber (ctx , number )
447+ if err == nil {
448+ break
449+ }
450+ i .logger .Error ("failed to get block by number, retrying..." , "error" , err )
451+ time .Sleep (1 * time .Second )
452+ }
453+ return blk , nil
454+ }
455+
407456func setBuilderMapping (
408457 ctx context.Context ,
409458 bt * blocktracker.BlocktrackerTransactorSession ,
0 commit comments