diff --git a/arbnode/inbox_reader.go b/arbnode/inbox_reader.go index 0e9a33f4fd..34fec275e5 100644 --- a/arbnode/inbox_reader.go +++ b/arbnode/inbox_reader.go @@ -665,7 +665,7 @@ func (r *InboxReader) getNextBlockToRead(ctx context.Context) (*big.Int, error) if delayedCount == 0 { return new(big.Int).Set(r.firstMessageBlock), nil } - _, _, parentChainBlockNumber, err := r.tracker.GetDelayedMessageAccumulatorAndParentChainBlockNumber(ctx, delayedCount-1) + parentChainBlockNumber, err := r.tracker.GetParentChainBlockNumberFor(ctx, delayedCount-1) if err != nil { return nil, err } diff --git a/arbnode/inbox_tracker.go b/arbnode/inbox_tracker.go index 7aa56b7db2..5c742b1947 100644 --- a/arbnode/inbox_tracker.go +++ b/arbnode/inbox_tracker.go @@ -347,6 +347,25 @@ func (t *InboxTracker) legacyGetDelayedMessageAndAccumulator(ctx context.Context } func (t *InboxTracker) GetDelayedMessageAccumulatorAndParentChainBlockNumber(ctx context.Context, seqNum uint64) (*arbostypes.L1IncomingMessage, common.Hash, uint64, error) { + msg, acc, blockNum, err := t.getRawDelayedMessageAccumulatorAndParentChainBlockNumber(ctx, seqNum) + if err != nil { + return msg, acc, blockNum, err + } + err = msg.FillInBatchGasFields(func(batchNum uint64) ([]byte, error) { + data, _, err := t.txStreamer.inboxReader.GetSequencerMessageBytes(ctx, batchNum) + return data, err + }) + return msg, acc, blockNum, err +} + +// does not return message, so does not need to fill in batchGasFields +func (t *InboxTracker) GetParentChainBlockNumberFor(ctx context.Context, seqNum uint64) (uint64, error) { + _, _, blockNum, err := t.getRawDelayedMessageAccumulatorAndParentChainBlockNumber(ctx, seqNum) + return blockNum, err +} + +// this function will not error +func (t *InboxTracker) getRawDelayedMessageAccumulatorAndParentChainBlockNumber(ctx context.Context, seqNum uint64) (*arbostypes.L1IncomingMessage, common.Hash, uint64, error) { delayedMessageKey := dbKey(rlpDelayedMessagePrefix, seqNum) exists, err := t.db.Has(delayedMessageKey) if err != nil { @@ -371,14 +390,6 @@ func (t *InboxTracker) GetDelayedMessageAccumulatorAndParentChainBlockNumber(ctx return msg, acc, 0, err } - err = msg.FillInBatchGasFields(func(batchNum uint64) ([]byte, error) { - data, _, err := t.txStreamer.inboxReader.GetSequencerMessageBytes(ctx, batchNum) - return data, err - }) - if err != nil { - return msg, acc, 0, err - } - parentChainBlockNumberKey := dbKey(parentChainBlockNumberPrefix, seqNum) exists, err = t.db.Has(parentChainBlockNumberKey) if err != nil {