99 "sync/atomic"
1010 "time"
1111
12+ "github.com/celestiaorg/go-header"
1213 "github.com/rs/zerolog"
1314 "golang.org/x/sync/errgroup"
1415
@@ -54,8 +55,8 @@ type Syncer struct {
5455 daHeight * atomic.Uint64
5556
5657 // P2P handling
57- headerBroadcaster common. Broadcaster [* types.SignedHeader ]
58- dataBroadcaster common. Broadcaster [* types.Data ]
58+ headerStore header. Store [* types.SignedHeader ]
59+ dataStore header. Store [* types.Data ]
5960
6061 // Channels for coordination
6162 heightInCh chan common.DAHeightEvent
@@ -83,28 +84,28 @@ func NewSyncer(
8384 metrics * common.Metrics ,
8485 config config.Config ,
8586 genesis genesis.Genesis ,
86- headerBroadcaster common. Broadcaster [* types.SignedHeader ],
87- dataBroadcaster common. Broadcaster [* types.Data ],
87+ headerStore header. Store [* types.SignedHeader ],
88+ dataStore header. Store [* types.Data ],
8889 logger zerolog.Logger ,
8990 options common.BlockOptions ,
9091 errorCh chan <- error ,
9192) * Syncer {
9293 return & Syncer {
93- store : store ,
94- exec : exec ,
95- da : da ,
96- cache : cache ,
97- metrics : metrics ,
98- config : config ,
99- genesis : genesis ,
100- options : options ,
101- headerBroadcaster : headerBroadcaster ,
102- dataBroadcaster : dataBroadcaster ,
103- lastState : & atomic.Pointer [types.State ]{},
104- daHeight : & atomic.Uint64 {},
105- heightInCh : make (chan common.DAHeightEvent , 10_000 ),
106- errorCh : errorCh ,
107- logger : logger .With ().Str ("component" , "syncer" ).Logger (),
94+ store : store ,
95+ exec : exec ,
96+ da : da ,
97+ cache : cache ,
98+ metrics : metrics ,
99+ config : config ,
100+ genesis : genesis ,
101+ options : options ,
102+ headerStore : headerStore ,
103+ dataStore : dataStore ,
104+ lastState : & atomic.Pointer [types.State ]{},
105+ daHeight : & atomic.Uint64 {},
106+ heightInCh : make (chan common.DAHeightEvent , 10_000 ),
107+ errorCh : errorCh ,
108+ logger : logger .With ().Str ("component" , "syncer" ).Logger (),
108109 }
109110}
110111
@@ -119,7 +120,7 @@ func (s *Syncer) Start(ctx context.Context) error {
119120
120121 // Initialize handlers
121122 s .daRetriever = NewDARetriever (s .da , s .cache , s .config , s .genesis , s .logger )
122- s .p2pHandler = NewP2PHandler (s .headerBroadcaster . Store () , s .dataBroadcaster . Store () , s .cache , s .genesis , s .logger )
123+ s .p2pHandler = NewP2PHandler (s .headerStore , s .dataStore , s .cache , s .genesis , s .logger )
123124
124125 // Start main processing loop
125126 s .wg .Add (1 )
@@ -340,13 +341,13 @@ func (s *Syncer) tryFetchFromP2P() {
340341 }
341342
342343 // Process headers
343- newHeaderHeight := s .headerBroadcaster . Store () .Height ()
344+ newHeaderHeight := s .headerStore .Height ()
344345 if newHeaderHeight > currentHeight {
345346 s .p2pHandler .ProcessHeaderRange (s .ctx , currentHeight + 1 , newHeaderHeight , s .heightInCh )
346347 }
347348
348349 // Process data (if not already processed by headers)
349- newDataHeight := s .dataBroadcaster . Store () .Height ()
350+ newDataHeight := s .dataStore .Height ()
350351 if newDataHeight != newHeaderHeight && newDataHeight > currentHeight {
351352 s .p2pHandler .ProcessDataRange (s .ctx , currentHeight + 1 , newDataHeight , s .heightInCh )
352353 }
@@ -406,8 +407,8 @@ func (s *Syncer) processHeightEvent(event *common.DAHeightEvent) {
406407 // only save to p2p stores if the event came from DA
407408 if event .Source == common .SourceDA {
408409 g , ctx := errgroup .WithContext (s .ctx )
409- g .Go (func () error { return s .headerBroadcaster . WriteToStoreAndBroadcast (ctx , event .Header ) })
410- g .Go (func () error { return s .dataBroadcaster . WriteToStoreAndBroadcast (ctx , event .Data ) })
410+ g .Go (func () error { return s .headerStore . Append (ctx , event .Header ) })
411+ g .Go (func () error { return s .dataStore . Append (ctx , event .Data ) })
411412 if err := g .Wait (); err != nil {
412413 s .logger .Error ().Err (err ).Msg ("failed to append event header and/or data to p2p store" )
413414 }
0 commit comments