@@ -173,14 +173,10 @@ func (f *L1FetcherLogic) getBlocksAndDetectReorg(ctx context.Context, from, to u
173
173
return false , 0 , lastBlockHash , blocks , nil
174
174
}
175
175
176
- func (f * L1FetcherLogic ) getRevertedTxs (ctx context.Context , from , to uint64 , blocks []* types.Block ) (map [ uint64 ] uint64 , []* orm.CrossMessage , error ) {
176
+ func (f * L1FetcherLogic ) getRevertedTxs (ctx context.Context , from , to uint64 , blocks []* types.Block ) ([]* orm.CrossMessage , error ) {
177
177
var l1RevertedTxs []* orm.CrossMessage
178
- blockTimestampsMap := make (map [uint64 ]uint64 )
179
-
180
178
for i := from ; i <= to ; i ++ {
181
179
block := blocks [i - from ]
182
- blockTimestampsMap [block .NumberU64 ()] = block .Time ()
183
-
184
180
for _ , tx := range block .Transactions () {
185
181
// Gateways: L1 deposit.
186
182
// Messenger: L1 deposit retry (replayMessage), L1 deposit refund (dropMessage), L2 withdrawal's claim (relayMessageWithProof).
@@ -192,7 +188,7 @@ func (f *L1FetcherLogic) getRevertedTxs(ctx context.Context, from, to uint64, bl
192
188
receipt , receiptErr := f .client .TransactionReceipt (ctx , tx .Hash ())
193
189
if receiptErr != nil {
194
190
log .Error ("Failed to get transaction receipt" , "txHash" , tx .Hash ().String (), "err" , receiptErr )
195
- return nil , nil , receiptErr
191
+ return nil , receiptErr
196
192
}
197
193
198
194
// Check if the transaction is failed
@@ -204,7 +200,7 @@ func (f *L1FetcherLogic) getRevertedTxs(ctx context.Context, from, to uint64, bl
204
200
sender , senderErr := signer .Sender (tx )
205
201
if senderErr != nil {
206
202
log .Error ("get sender failed" , "chain id" , tx .ChainId ().Uint64 (), "tx hash" , tx .Hash ().String (), "err" , senderErr )
207
- return nil , nil , senderErr
203
+ return nil , senderErr
208
204
}
209
205
210
206
l1RevertedTxs = append (l1RevertedTxs , & orm.CrossMessage {
@@ -218,7 +214,7 @@ func (f *L1FetcherLogic) getRevertedTxs(ctx context.Context, from, to uint64, bl
218
214
})
219
215
}
220
216
}
221
- return blockTimestampsMap , l1RevertedTxs , nil
217
+ return l1RevertedTxs , nil
222
218
}
223
219
224
220
func (f * L1FetcherLogic ) l1FetcherLogs (ctx context.Context , from , to uint64 ) ([]types.Log , error ) {
@@ -270,12 +266,18 @@ func (f *L1FetcherLogic) L1Fetcher(ctx context.Context, from, to uint64, lastBlo
270
266
return isReorg , reorgHeight , blockHash , nil , nil
271
267
}
272
268
273
- blockTimestampsMap , l1RevertedTxs , err := f .getRevertedTxs (ctx , from , to , blocks )
269
+ l1RevertedTxs , err := f .getRevertedTxs (ctx , from , to , blocks )
274
270
if err != nil {
275
271
log .Error ("L1Fetcher getRevertedTxs failed" , "from" , from , "to" , to , "error" , err )
276
272
return false , 0 , common.Hash {}, nil , err
277
273
}
278
274
275
+ // Map block number to block timestamp to avoid fetching block header multiple times to get block timestamp.
276
+ blockTimestampsMap := make (map [uint64 ]uint64 )
277
+ for _ , block := range blocks {
278
+ blockTimestampsMap [block .NumberU64 ()] = block .Time ()
279
+ }
280
+
279
281
eventLogs , err := f .l1FetcherLogs (ctx , from , to )
280
282
if err != nil {
281
283
log .Error ("L1Fetcher l1FetcherLogs failed" , "from" , from , "to" , to , "error" , err )
@@ -288,7 +290,7 @@ func (f *L1FetcherLogic) L1Fetcher(ctx context.Context, from, to uint64, lastBlo
288
290
return false , 0 , common.Hash {}, nil , err
289
291
}
290
292
291
- l1BatchEvents , err := f .parser .ParseL1BatchEventLogs (ctx , eventLogs , f .client )
293
+ l1BatchEvents , err := f .parser .ParseL1BatchEventLogs (ctx , eventLogs , f .client , blockTimestampsMap )
292
294
if err != nil {
293
295
log .Error ("failed to parse L1 batch event logs" , "from" , from , "to" , to , "err" , err )
294
296
return false , 0 , common.Hash {}, nil , err
0 commit comments