@@ -205,17 +205,18 @@ abstract contract TaikoInbox is EssentialContract, ITaikoInbox, ITaiko {
205
205
(BatchMetadata[] memory metas , Transition[] memory trans ) =
206
206
abi.decode (_params, (BatchMetadata[], Transition[]));
207
207
208
- require (metas.length != 0 , NoBlocksToProve ());
209
- require (metas.length == trans.length , ArraySizesMismatch ());
208
+ uint256 metasLength = metas.length ;
209
+ require (metasLength != 0 , NoBlocksToProve ());
210
+ require (metasLength == trans.length , ArraySizesMismatch ());
210
211
211
212
Stats2 memory stats2 = state.stats2;
212
213
require (! stats2.paused, ContractPaused ());
213
214
214
215
Config memory config = pacayaConfig ();
215
- IVerifier.Context[] memory ctxs = new IVerifier.Context [](metas. length );
216
+ IVerifier.Context[] memory ctxs = new IVerifier.Context [](metasLength );
216
217
217
218
bool hasConflictingProof;
218
- for (uint256 i; i < metas. length ; ++ i) {
219
+ for (uint256 i; i < metasLength ; ++ i) {
219
220
BatchMetadata memory meta = metas[i];
220
221
221
222
require (meta.batchId >= pacayaConfig ().forkHeights.pacaya, ForkNotActivated ());
@@ -298,8 +299,8 @@ abstract contract TaikoInbox is EssentialContract, ITaikoInbox, ITaiko {
298
299
299
300
// Emit the event
300
301
{
301
- uint64 [] memory batchIds = new uint64 [](metas. length );
302
- for (uint256 i; i < metas. length ; ++ i) {
302
+ uint64 [] memory batchIds = new uint64 [](metasLength );
303
+ for (uint256 i; i < metasLength ; ++ i) {
303
304
batchIds[i] = metas[i].batchId;
304
305
}
305
306
@@ -310,7 +311,7 @@ abstract contract TaikoInbox is EssentialContract, ITaikoInbox, ITaiko {
310
311
_pause ();
311
312
emit Paused (verifier);
312
313
} else {
313
- _verifyBatches (config, stats2, metas. length );
314
+ _verifyBatches (config, stats2, metasLength );
314
315
}
315
316
}
316
317
@@ -568,13 +569,15 @@ abstract contract TaikoInbox is EssentialContract, ITaikoInbox, ITaiko {
568
569
if (_blobParams.blobHashes.length != 0 ) {
569
570
blobHashes_ = _blobParams.blobHashes;
570
571
} else {
571
- blobHashes_ = new bytes32 [](_blobParams.numBlobs);
572
- for (uint256 i; i < _blobParams.numBlobs; ++ i) {
572
+ uint256 numBlobs = _blobParams.numBlobs;
573
+ blobHashes_ = new bytes32 [](numBlobs);
574
+ for (uint256 i; i < numBlobs; ++ i) {
573
575
blobHashes_[i] = blobhash (_blobParams.firstBlobIndex + i);
574
576
}
575
577
}
576
578
577
- for (uint256 i; i < blobHashes_.length ; ++ i) {
579
+ uint256 bloblHashesLength = blobHashes_.length ;
580
+ for (uint256 i; i < bloblHashesLength; ++ i) {
578
581
require (blobHashes_[i] != 0 , BlobNotFound ());
579
582
}
580
583
hash_ = keccak256 (abi.encode (_txListHash, blobHashes_));
@@ -751,6 +754,7 @@ abstract contract TaikoInbox is EssentialContract, ITaikoInbox, ITaiko {
751
754
view
752
755
returns (uint64 anchorBlockId_ , uint64 lastBlockTimestamp_ )
753
756
{
757
+ uint256 blocksLength = _params.blocks.length ;
754
758
unchecked {
755
759
if (_params.anchorBlockId == 0 ) {
756
760
anchorBlockId_ = uint64 (block .number - 1 );
@@ -774,7 +778,7 @@ abstract contract TaikoInbox is EssentialContract, ITaikoInbox, ITaiko {
774
778
require (lastBlockTimestamp_ <= block .timestamp , TimestampTooLarge ());
775
779
776
780
uint64 totalShift;
777
- for (uint256 i; i < _params.blocks. length ; ++ i) {
781
+ for (uint256 i; i < blocksLength ; ++ i) {
778
782
totalShift += _params.blocks[i].timeShift;
779
783
}
780
784
@@ -799,19 +803,21 @@ abstract contract TaikoInbox is EssentialContract, ITaikoInbox, ITaiko {
799
803
);
800
804
}
801
805
802
- if (_params.signalSlots.length != 0 ) {
803
- require (_params.signalSlots.length <= _maxSignalsToReceive, TooManySignals ());
806
+ uint256 signalSlotsLength = _params.signalSlots.length ;
807
+
808
+ if (signalSlotsLength != 0 ) {
809
+ require (signalSlotsLength <= _maxSignalsToReceive, TooManySignals ());
804
810
805
811
ISignalService signalService =
806
812
ISignalService (resolve (LibStrings.B_SIGNAL_SERVICE, false ));
807
813
808
- for (uint256 i; i < _params.signalSlots. length ; ++ i) {
814
+ for (uint256 i; i < signalSlotsLength ; ++ i) {
809
815
require (signalService.isSignalSent (_params.signalSlots[i]), SignalNotSent ());
810
816
}
811
817
}
812
818
813
- require (_params.blocks. length != 0 , BlockNotFound ());
814
- require (_params.blocks. length <= _maxBlocksPerBatch, TooManyBlocks ());
819
+ require (blocksLength != 0 , BlockNotFound ());
820
+ require (blocksLength <= _maxBlocksPerBatch, TooManyBlocks ());
815
821
}
816
822
817
823
// Memory-only structs ----------------------------------------------------------------------
0 commit comments