@@ -41,6 +41,9 @@ type BOLDStateProvider struct {
4141 historyCache challengecache.HistoryCommitmentCacher
4242 blockChallengeLeafHeight l2stateprovider.Height
4343 stateProviderConfig * StateProviderConfig
44+ inboxTracker staker.InboxTrackerInterface
45+ inboxStreamer staker.TransactionStreamerInterface
46+ inboxReader staker.InboxReaderInterface
4447 sync.RWMutex
4548}
4649
@@ -50,6 +53,9 @@ func NewBOLDStateProvider(
5053 blockChallengeLeafHeight l2stateprovider.Height ,
5154 stateProviderConfig * StateProviderConfig ,
5255 machineHashesCachePath string ,
56+ inboxTracker staker.InboxTrackerInterface ,
57+ inboxStreamer staker.TransactionStreamerInterface ,
58+ inboxReader staker.InboxReaderInterface ,
5359) (* BOLDStateProvider , error ) {
5460 historyCache , err := challengecache .New (machineHashesCachePath )
5561 if err != nil {
@@ -61,6 +67,9 @@ func NewBOLDStateProvider(
6167 historyCache : historyCache ,
6268 blockChallengeLeafHeight : blockChallengeLeafHeight ,
6369 stateProviderConfig : stateProviderConfig ,
70+ inboxTracker : inboxTracker ,
71+ inboxStreamer : inboxStreamer ,
72+ inboxReader : inboxReader ,
6473 }
6574 return sp , nil
6675}
@@ -79,7 +88,7 @@ func (s *BOLDStateProvider) ExecutionStateAfterPreviousState(
7988 }
8089 batchIndex := maxSeqInboxCount
8190 maxNumberOfBlocks := uint64 (s .blockChallengeLeafHeight )
82- messageCount , err := s .statelessValidator . InboxTracker () .GetBatchMessageCount (batchIndex - 1 )
91+ messageCount , err := s .inboxTracker .GetBatchMessageCount (batchIndex - 1 )
8392 if err != nil {
8493 if strings .Contains (err .Error (), "not found" ) {
8594 return nil , fmt .Errorf ("%w: batch count %d" , l2stateprovider .ErrChainCatchingUp , maxSeqInboxCount )
@@ -88,7 +97,7 @@ func (s *BOLDStateProvider) ExecutionStateAfterPreviousState(
8897 }
8998 var previousMessageCount arbutil.MessageIndex
9099 if previousGlobalState .Batch > 0 {
91- previousMessageCount , err = s .statelessValidator . InboxTracker () .GetBatchMessageCount (previousGlobalState .Batch - 1 )
100+ previousMessageCount , err = s .inboxTracker .GetBatchMessageCount (previousGlobalState .Batch - 1 )
92101 if err != nil {
93102 if strings .Contains (err .Error (), "not found" ) {
94103 return nil , fmt .Errorf ("%w: batch count %d" , l2stateprovider .ErrChainCatchingUp , maxSeqInboxCount )
@@ -101,7 +110,7 @@ func (s *BOLDStateProvider) ExecutionStateAfterPreviousState(
101110 maxMessageCount := previousMessageCount + arbutil .MessageIndex (maxNumberOfBlocks )
102111 if messageDiffBetweenBatches > maxMessageCount {
103112 messageCount = maxMessageCount
104- batchIndex , _ , err = s .statelessValidator . InboxTracker () .FindInboxBatchContainingMessage (messageCount )
113+ batchIndex , _ , err = s .inboxTracker .FindInboxBatchContainingMessage (messageCount )
105114 if err != nil {
106115 return nil , err
107116 }
@@ -146,7 +155,7 @@ func (s *BOLDStateProvider) isStateValidatedAndMessageCountPastThreshold(
146155 ctx context.Context , gs validator.GoGlobalState , messageCount arbutil.MessageIndex ,
147156) (bool , error ) {
148157 if s .stateProviderConfig .CheckBatchFinality {
149- finalizedMessageCount , err := s .statelessValidator . InboxReader () .GetFinalizedMsgCount (ctx )
158+ finalizedMessageCount , err := s .inboxReader .GetFinalizedMsgCount (ctx )
150159 if err != nil {
151160 return false , err
152161 }
@@ -188,14 +197,14 @@ func (s *BOLDStateProvider) StatesInBatchRange(
188197 var prevBatchMsgCount arbutil.MessageIndex
189198 var err error
190199 if fromState .Batch > 0 {
191- prevBatchMsgCount , err = s .statelessValidator . InboxTracker () .GetBatchMessageCount (uint64 (fromState .Batch ) - 1 )
200+ prevBatchMsgCount , err = s .inboxTracker .GetBatchMessageCount (uint64 (fromState .Batch ) - 1 )
192201 if err != nil {
193202 return nil , nil , err
194203 }
195204 }
196205
197206 batchNum := fromState .Batch
198- currBatchMsgCount , err := s .statelessValidator . InboxTracker () .GetBatchMessageCount (batchNum )
207+ currBatchMsgCount , err := s .inboxTracker .GetBatchMessageCount (batchNum )
199208 if err != nil {
200209 return nil , nil , err
201210 }
@@ -210,7 +219,7 @@ func (s *BOLDStateProvider) StatesInBatchRange(
210219 }
211220 executionResult := & execution.MessageResult {}
212221 if pos > 0 {
213- executionResult , err = s .statelessValidator . InboxStreamer () .ResultAtMessageIndex (pos - 1 )
222+ executionResult , err = s .inboxStreamer .ResultAtMessageIndex (pos - 1 )
214223 if err != nil {
215224 return nil , nil , err
216225 }
@@ -234,7 +243,7 @@ func (s *BOLDStateProvider) StatesInBatchRange(
234243 // Otherwise, we might try to read too many batches, and hit an error that
235244 // the next batch isn't found.
236245 if uint64 (len (states )) < totalDesiredHashes && batchNum < batchLimit {
237- currBatchMsgCount , err = s .statelessValidator . InboxTracker () .GetBatchMessageCount (batchNum )
246+ currBatchMsgCount , err = s .inboxTracker .GetBatchMessageCount (batchNum )
238247 if err != nil {
239248 return nil , nil , err
240249 }
@@ -254,7 +263,7 @@ func (s *BOLDStateProvider) findGlobalStateFromMessageCountAndBatch(count arbuti
254263 var prevBatchMsgCount arbutil.MessageIndex
255264 var err error
256265 if batchIndex > 0 {
257- prevBatchMsgCount , err = s .statelessValidator . InboxTracker () .GetBatchMessageCount (uint64 (batchIndex ) - 1 )
266+ prevBatchMsgCount , err = s .inboxTracker .GetBatchMessageCount (uint64 (batchIndex ) - 1 )
258267 if err != nil {
259268 return validator.GoGlobalState {}, err
260269 }
@@ -263,7 +272,7 @@ func (s *BOLDStateProvider) findGlobalStateFromMessageCountAndBatch(count arbuti
263272 }
264273 }
265274 if count != prevBatchMsgCount {
266- batchMsgCount , err := s .statelessValidator . InboxTracker () .GetBatchMessageCount (uint64 (batchIndex ))
275+ batchMsgCount , err := s .inboxTracker .GetBatchMessageCount (uint64 (batchIndex ))
267276 if err != nil {
268277 return validator.GoGlobalState {}, err
269278 }
@@ -273,7 +282,7 @@ func (s *BOLDStateProvider) findGlobalStateFromMessageCountAndBatch(count arbuti
273282 }
274283 res := & execution.MessageResult {}
275284 if count > 0 {
276- res , err = s .statelessValidator . InboxStreamer () .ResultAtMessageIndex (count - 1 )
285+ res , err = s .inboxStreamer .ResultAtMessageIndex (count - 1 )
277286 if err != nil {
278287 return validator.GoGlobalState {}, fmt .Errorf ("%s: could not check if we have result at count %d: %w" , s .stateProviderConfig .ValidatorName , count , err )
279288 }
@@ -335,7 +344,7 @@ func (s *BOLDStateProvider) CollectMachineHashes(
335344 for i , h := range cfg .StepHeights {
336345 stepHeights [i ] = uint64 (h )
337346 }
338- messageResult , err := s .statelessValidator . InboxStreamer () .ResultAtMessageIndex (messageNum )
347+ messageResult , err := s .inboxStreamer .ResultAtMessageIndex (messageNum )
339348 if err != nil {
340349 return nil , err
341350 }
@@ -401,7 +410,7 @@ func (s *BOLDStateProvider) messageNum(md *l2stateprovider.AssociatedAssertionMe
401410 posInBatch := md .FromState .PosInBatch
402411 if bNum > 0 {
403412 var err error
404- prevBatchMsgCount , err = s .statelessValidator . InboxTracker () .GetBatchMessageCount (uint64 (bNum - 1 ))
413+ prevBatchMsgCount , err = s .inboxTracker .GetBatchMessageCount (uint64 (bNum - 1 ))
405414 if err != nil {
406415 return 0 , fmt .Errorf ("could not get prevBatchMsgCount at %d: %w" , bNum - 1 , err )
407416 }
@@ -427,14 +436,14 @@ func (s *BOLDStateProvider) messageNum(md *l2stateprovider.AssociatedAssertionMe
427436// FINISHED state's hash.
428437func (s * BOLDStateProvider ) virtualState (msgNum arbutil.MessageIndex , limit l2stateprovider.Batch ) (option.Option [validator.GoGlobalState ], error ) {
429438 gs := option .None [validator.GoGlobalState ]()
430- limitMsgCount , err := s .statelessValidator . InboxTracker () .GetBatchMessageCount (uint64 (limit ) - 1 )
439+ limitMsgCount , err := s .inboxTracker .GetBatchMessageCount (uint64 (limit ) - 1 )
431440 if err != nil {
432441 return gs , fmt .Errorf ("could not get limitMsgCount at %d: %w" , limit , err )
433442 }
434443 if msgNum >= limitMsgCount {
435444 result := & execution.MessageResult {}
436445 if limitMsgCount > 0 {
437- result , err = s .statelessValidator . InboxStreamer () .ResultAtMessageIndex (limitMsgCount - 1 )
446+ result , err = s .inboxStreamer .ResultAtMessageIndex (limitMsgCount - 1 )
438447 if err != nil {
439448 return gs , fmt .Errorf ("could not get global state at limitMsgCount %d: %w" , limitMsgCount , err )
440449 }
0 commit comments