@@ -2,16 +2,13 @@ package logic
22
33import (
44 "context"
5- "fmt"
65 "math/big"
76
8- "github.com/scroll-tech/da-codec/encoding"
97 "github.com/scroll-tech/go-ethereum/common"
108 "github.com/scroll-tech/go-ethereum/core/types"
119 "github.com/scroll-tech/go-ethereum/crypto"
1210 "github.com/scroll-tech/go-ethereum/ethclient"
1311 "github.com/scroll-tech/go-ethereum/log"
14- "github.com/scroll-tech/go-ethereum/rollup/da_syncer/blob_client"
1512
1613 backendabi "scroll-tech/bridge-history-api/abi"
1714 "scroll-tech/bridge-history-api/internal/config"
@@ -22,17 +19,15 @@ import (
2219
2320// L1EventParser the l1 event parser
2421type L1EventParser struct {
25- cfg * config.FetcherConfig
26- client * ethclient.Client
27- blobClient blob_client.BlobClient
22+ cfg * config.FetcherConfig
23+ client * ethclient.Client
2824}
2925
3026// NewL1EventParser creates l1 event parser
31- func NewL1EventParser (cfg * config.FetcherConfig , client * ethclient.Client , blobClient blob_client. BlobClient ) * L1EventParser {
27+ func NewL1EventParser (cfg * config.FetcherConfig , client * ethclient.Client ) * L1EventParser {
3228 return & L1EventParser {
33- cfg : cfg ,
34- client : client ,
35- blobClient : blobClient ,
29+ cfg : cfg ,
30+ client : client ,
3631 }
3732}
3833
@@ -238,7 +233,6 @@ func (e *L1EventParser) ParseL1SingleCrossChainEventLogs(ctx context.Context, lo
238233
239234// ParseL1BatchEventLogs parses L1 watched batch events.
240235func (e * L1EventParser ) ParseL1BatchEventLogs (ctx context.Context , logs []types.Log , client * ethclient.Client ) ([]* orm.BatchEvent , error ) {
241- txBlobIndexMap := make (map [common.Hash ]int )
242236 var l1BatchEvents []* orm.BatchEvent
243237 for _ , vlog := range logs {
244238 switch vlog .Topics [0 ] {
@@ -253,37 +247,11 @@ func (e *L1EventParser) ParseL1BatchEventLogs(ctx context.Context, logs []types.
253247 log .Error ("Failed to get commit batch tx or the tx is still pending" , "err" , err , "isPending" , isPending )
254248 return nil , err
255249 }
256- version , startBlock , endBlock , err := utils .GetBatchRangeFromCalldata (commitTx .Data ())
250+ startBlock , endBlock , err := utils .GetBatchRangeFromCalldata (commitTx .Data ())
257251 if err != nil {
258252 log .Error ("Failed to get batch range from calldata" , "hash" , commitTx .Hash ().String (), "height" , vlog .BlockNumber )
259253 return nil , err
260254 }
261- if version >= 7 { // It's a batch with version >= 7.
262- currentIndex := txBlobIndexMap [vlog .TxHash ]
263-
264- if currentIndex >= len (commitTx .BlobHashes ()) {
265- return nil , fmt .Errorf ("not enough blob hashes for commit transaction: %s, index in tx: %d, total blobs: %d, batch index: %d, batch hash: %s" ,
266- vlog .TxHash .String (), currentIndex , len (commitTx .BlobHashes ()), event .BatchIndex .Uint64 (), event .BatchHash .String ())
267- }
268- header , err := client .HeaderByHash (ctx , vlog .BlockHash )
269- if err != nil {
270- return nil , fmt .Errorf ("failed to get L1 block header for blob context, blockHash: %s, err: %w" , vlog .BlockHash .Hex (), err )
271- }
272- blobVersionedHash := commitTx .BlobHashes ()[currentIndex ]
273- blocks , err := e .processVersionedBlob (ctx , version , blobVersionedHash , header .Time , event .BatchIndex .Uint64 ())
274- if err != nil {
275- return nil , fmt .Errorf ("failed to process versioned blob, blobVersionedHash: %s, block number: %d, blob index: %d, err: %w" ,
276- blobVersionedHash .String (), vlog .BlockNumber , currentIndex , err )
277- }
278- if len (blocks ) == 0 {
279- return nil , fmt .Errorf ("no blocks found in the blob, blobVersionedHash: %s, block number: %d, blob index: %d" ,
280- blobVersionedHash .String (), vlog .BlockNumber , currentIndex )
281- }
282- startBlock = blocks [0 ].Number ()
283- endBlock = blocks [len (blocks )- 1 ].Number ()
284-
285- txBlobIndexMap [vlog .TxHash ] = currentIndex + 1
286- }
287255 l1BatchEvents = append (l1BatchEvents , & orm.BatchEvent {
288256 BatchStatus : int (btypes .BatchStatusTypeCommitted ),
289257 BatchIndex : event .BatchIndex .Uint64 (),
@@ -292,8 +260,8 @@ func (e *L1EventParser) ParseL1BatchEventLogs(ctx context.Context, logs []types.
292260 EndBlockNumber : endBlock ,
293261 L1BlockNumber : vlog .BlockNumber ,
294262 })
295- case backendabi .L1RevertBatchV0EventSig :
296- event := backendabi.L1RevertBatchV0Event {}
263+ case backendabi .L1RevertBatchEventSig :
264+ event := backendabi.L1RevertBatchEvent {}
297265 if err := utils .UnpackLog (backendabi .IScrollChainABI , & event , "RevertBatch" , vlog ); err != nil {
298266 log .Error ("Failed to unpack RevertBatch event" , "err" , err )
299267 return nil , err
@@ -304,19 +272,6 @@ func (e *L1EventParser) ParseL1BatchEventLogs(ctx context.Context, logs []types.
304272 BatchHash : event .BatchHash .String (),
305273 L1BlockNumber : vlog .BlockNumber ,
306274 })
307- case backendabi .L1RevertBatchV7EventSig :
308- event := backendabi.L1RevertBatchV7Event {}
309- if err := utils .UnpackLog (backendabi .IScrollChainABI , & event , "RevertBatch" , vlog ); err != nil {
310- log .Error ("Failed to unpack RevertBatch event" , "err" , err )
311- return nil , err
312- }
313- for i := event .StartBatchIndex .Uint64 (); i <= event .FinishBatchIndex .Uint64 (); i ++ {
314- l1BatchEvents = append (l1BatchEvents , & orm.BatchEvent {
315- BatchStatus : int (btypes .BatchStatusTypeReverted ),
316- BatchIndex : i ,
317- L1BlockNumber : vlog .BlockNumber ,
318- })
319- }
320275 case backendabi .L1FinalizeBatchEventSig :
321276 event := backendabi.L1FinalizeBatchEvent {}
322277 if err := utils .UnpackLog (backendabi .IScrollChainABI , & event , "FinalizeBatch" , vlog ); err != nil {
@@ -434,32 +389,3 @@ func getRealFromAddress(ctx context.Context, eventSender common.Address, eventMe
434389 }
435390 return sender .String (), nil
436391}
437-
438- func (e * L1EventParser ) processVersionedBlob (ctx context.Context , version uint8 , versionedHash common.Hash , l1BlockTime uint64 , batchIndex uint64 ) ([]encoding.DABlock , error ) {
439- blob , err := e .blobClient .GetBlobByVersionedHashAndBlockTime (ctx , versionedHash , l1BlockTime )
440- if err != nil {
441- return nil , fmt .Errorf ("failed to get blob %s: %w" , versionedHash .Hex (), err )
442- }
443- if blob == nil {
444- return nil , fmt .Errorf ("blob %s not found" , versionedHash .Hex ())
445- }
446-
447- codec , err := encoding .CodecFromVersion (encoding .CodecVersion (version ))
448- if err != nil {
449- return nil , fmt .Errorf ("unsupported codec version: %v, batch index: %v, err: %w" , version , batchIndex , err )
450- }
451-
452- blobPayload , err := codec .DecodeBlob (blob )
453- if err != nil {
454- return nil , fmt .Errorf ("blob %s decode error: %w" , versionedHash .Hex (), err )
455- }
456-
457- blocks := blobPayload .Blocks ()
458- if len (blocks ) == 0 {
459- return nil , fmt .Errorf ("empty blocks in blob %s" , versionedHash .Hex ())
460- }
461-
462- log .Debug ("Successfully processed blob" , "versionedHash" , versionedHash .Hex (), "blocksCount" , len (blocks ), "batchIndex" , batchIndex )
463-
464- return blocks , nil
465- }
0 commit comments