@@ -1332,6 +1332,56 @@ describe("Linea Rollup contract", () => {
1332
1332
] ) ;
1333
1333
} ) ;
1334
1334
1335
+ it ( "Should revert if the final shnarf does not exist" , async ( ) => {
1336
+ const submissionDataBeforeFinalization = generateCallDataSubmission ( 0 , 4 ) ;
1337
+ let index = 0 ;
1338
+ for ( const data of submissionDataBeforeFinalization ) {
1339
+ const parentAndExpectedShnarf = generateParentAndExpectedShnarfForIndex ( index ) ;
1340
+ await lineaRollup
1341
+ . connect ( operator )
1342
+ . submitDataAsCalldata ( data , parentAndExpectedShnarf . parentShnarf , parentAndExpectedShnarf . expectedShnarf , {
1343
+ gasLimit : 30_000_000 ,
1344
+ } ) ;
1345
+ index ++ ;
1346
+ }
1347
+
1348
+ const finalizationData = await generateFinalizationData ( {
1349
+ l1RollingHash : calculateRollingHash ( HASH_ZERO , messageHash ) ,
1350
+ l1RollingHashMessageNumber : 10n ,
1351
+ lastFinalizedTimestamp : DEFAULT_LAST_FINALIZED_TIMESTAMP ,
1352
+ endBlockNumber : BigInt ( calldataAggregatedProof1To155 . finalBlockNumber ) ,
1353
+ parentStateRootHash : calldataAggregatedProof1To155 . parentStateRootHash ,
1354
+ finalTimestamp : BigInt ( calldataAggregatedProof1To155 . finalTimestamp ) ,
1355
+ l2MerkleRoots : calldataAggregatedProof1To155 . l2MerkleRoots ,
1356
+ l2MerkleTreesDepth : BigInt ( calldataAggregatedProof1To155 . l2MerkleTreesDepth ) ,
1357
+ l2MessagingBlocksOffsets : calldataAggregatedProof1To155 . l2MessagingBlocksOffsets ,
1358
+ aggregatedProof : calldataAggregatedProof1To155 . aggregatedProof ,
1359
+ shnarfData : generateParentShnarfData ( index ) ,
1360
+ } ) ;
1361
+
1362
+ await lineaRollup . setRollingHash (
1363
+ calldataAggregatedProof1To155 . l1RollingHashMessageNumber ,
1364
+ calldataAggregatedProof1To155 . l1RollingHash ,
1365
+ ) ;
1366
+
1367
+ finalizationData . shnarfData . snarkHash = generateRandomBytes ( 32 ) ;
1368
+
1369
+ const { dataEvaluationClaim, dataEvaluationPoint, finalStateRootHash, parentShnarf, snarkHash } =
1370
+ finalizationData . shnarfData ;
1371
+ const expectedMissingBlobShnarf = generateKeccak256 (
1372
+ [ "bytes32" , "bytes32" , "bytes32" , "bytes32" , "bytes32" ] ,
1373
+ [ parentShnarf , snarkHash , finalStateRootHash , dataEvaluationPoint , dataEvaluationClaim ] ,
1374
+ ) ;
1375
+
1376
+ const finalizeCompressedCall = lineaRollup
1377
+ . connect ( operator )
1378
+ . finalizeBlocks ( calldataAggregatedProof1To155 . aggregatedProof , TEST_PUBLIC_VERIFIER_INDEX , finalizationData ) ;
1379
+
1380
+ await expectRevertWithCustomError ( lineaRollup , finalizeCompressedCall , "FinalBlobNotSubmitted" , [
1381
+ expectedMissingBlobShnarf ,
1382
+ ] ) ;
1383
+ } ) ;
1384
+
1335
1385
it ( "Should revert if finalizationData.finalTimestamp is greater than the block.timestamp" , async ( ) => {
1336
1386
const submissionDataBeforeFinalization = generateCallDataSubmission ( 0 , 4 ) ;
1337
1387
let index = 0 ;
0 commit comments