@@ -113,7 +113,7 @@ contract RollupTest is DecoderBase {
113
113
}
114
114
115
115
function testClaimWithWrongEpoch () public setUpFor ("mixed_block_1 " ) {
116
- _testBlock ("mixed_block_1 " , false , 0 );
116
+ _testBlock ("mixed_block_1 " , false , 1 );
117
117
118
118
quote.quote.epochToProve = 1 ;
119
119
@@ -126,7 +126,7 @@ contract RollupTest is DecoderBase {
126
126
}
127
127
128
128
function testClaimWithInsufficientBond () public setUpFor ("mixed_block_1 " ) {
129
- _testBlock ("mixed_block_1 " , false , 0 );
129
+ _testBlock ("mixed_block_1 " , false , 1 );
130
130
131
131
quote.quote.bondAmount = 0 ;
132
132
@@ -141,22 +141,18 @@ contract RollupTest is DecoderBase {
141
141
}
142
142
143
143
function testClaimPastValidUntil () public setUpFor ("mixed_block_1 " ) {
144
- _testBlock ("mixed_block_1 " , false , 0 );
144
+ _testBlock ("mixed_block_1 " , false , 1 );
145
145
146
146
quote.quote.validUntilSlot = 0 ;
147
147
148
- warpToL2Slot (1 );
149
-
150
148
vm.expectRevert (
151
149
abi.encodeWithSelector (Errors.Rollup__QuoteExpired.selector , 1 , quote.quote.validUntilSlot)
152
150
);
153
151
rollup.claimEpochProofRight (quote);
154
152
}
155
153
156
154
function testClaimSimple () public setUpFor ("mixed_block_1 " ) {
157
- _testBlock ("mixed_block_1 " , false , 0 );
158
-
159
- warpToL2Slot (1 );
155
+ _testBlock ("mixed_block_1 " , false , 1 );
160
156
161
157
vm.expectEmit (true , true , true , true );
162
158
emit IRollup.ProofRightClaimed (
@@ -181,9 +177,7 @@ contract RollupTest is DecoderBase {
181
177
}
182
178
183
179
function testClaimTwice () public setUpFor ("mixed_block_1 " ) {
184
- _testBlock ("mixed_block_1 " , false , 0 );
185
-
186
- warpToL2Slot (1 );
180
+ _testBlock ("mixed_block_1 " , false , 1 );
187
181
188
182
rollup.claimEpochProofRight (quote);
189
183
@@ -208,7 +202,7 @@ contract RollupTest is DecoderBase {
208
202
}
209
203
210
204
function testClaimOutsideClaimPhase () public setUpFor ("mixed_block_1 " ) {
211
- _testBlock ("mixed_block_1 " , false , 0 );
205
+ _testBlock ("mixed_block_1 " , false , 1 );
212
206
213
207
warpToL2Slot (Constants.AZTEC_EPOCH_DURATION + rollup.CLAIM_DURATION_IN_L2_SLOTS ());
214
208
@@ -223,7 +217,7 @@ contract RollupTest is DecoderBase {
223
217
}
224
218
225
219
function testNoPruneWhenClaimExists () public setUpFor ("mixed_block_1 " ) {
226
- _testBlock ("mixed_block_1 " , false , 0 );
220
+ _testBlock ("mixed_block_1 " , false , 1 );
227
221
228
222
quote.quote.validUntilSlot = 2 * Constants.AZTEC_EPOCH_DURATION;
229
223
@@ -238,7 +232,7 @@ contract RollupTest is DecoderBase {
238
232
}
239
233
240
234
function testPruneWhenClaimExpires () public setUpFor ("mixed_block_1 " ) {
241
- _testBlock ("mixed_block_1 " , false , 0 );
235
+ _testBlock ("mixed_block_1 " , false , 1 );
242
236
243
237
quote.quote.validUntilSlot = 2 * Constants.AZTEC_EPOCH_DURATION;
244
238
@@ -259,34 +253,36 @@ contract RollupTest is DecoderBase {
259
253
}
260
254
261
255
function testClaimAfterPrune () public setUpFor ("mixed_block_1 " ) {
262
- _testBlock ("mixed_block_1 " , false , 0 );
256
+ _testBlock ("mixed_block_1 " , false , 1 );
263
257
264
- quote.quote.validUntilSlot = 2 * Constants.AZTEC_EPOCH_DURATION;
258
+ quote.quote.validUntilSlot = 3 * Constants.AZTEC_EPOCH_DURATION;
265
259
quote.quote.prover = address (this );
266
260
267
261
warpToL2Slot (Constants.AZTEC_EPOCH_DURATION + rollup.CLAIM_DURATION_IN_L2_SLOTS () - 1 );
268
262
269
263
rollup.claimEpochProofRight (quote);
270
264
271
- warpToL2Slot (Constants.AZTEC_EPOCH_DURATION * 2 );
265
+ warpToL2Slot (Constants.AZTEC_EPOCH_DURATION * 3 );
272
266
273
267
rollup.prune ();
274
268
275
- _testBlock ("mixed_block_1 " , false , Constants.AZTEC_EPOCH_DURATION * 2 );
269
+ _testBlock ("mixed_block_1 " , false , Constants.AZTEC_EPOCH_DURATION * 3 );
270
+
271
+ quote.quote.epochToProve = 3 ;
276
272
277
273
vm.expectEmit (true , true , true , true );
278
274
emit IRollup.ProofRightClaimed (
279
275
quote.quote.epochToProve,
280
276
address (this ),
281
277
address (this ),
282
278
quote.quote.bondAmount,
283
- Constants.AZTEC_EPOCH_DURATION * 2
279
+ Constants.AZTEC_EPOCH_DURATION * 3
284
280
);
285
281
rollup.claimEpochProofRight (quote);
286
282
}
287
283
288
284
function testPruneWhenNoProofClaim () public setUpFor ("mixed_block_1 " ) {
289
- _testBlock ("mixed_block_1 " , false );
285
+ _testBlock ("mixed_block_1 " , false , 1 );
290
286
warpToL2Slot (Constants.AZTEC_EPOCH_DURATION + rollup.CLAIM_DURATION_IN_L2_SLOTS () - 1 );
291
287
vm.expectRevert (abi.encodeWithSelector (Errors.Rollup__NothingToPrune.selector ));
292
288
rollup.prune ();
@@ -398,8 +394,26 @@ contract RollupTest is DecoderBase {
398
394
assertNotEq (minHeightEmpty, minHeightMixed, "Invalid min height " );
399
395
}
400
396
397
+ function testShouldNotBeTooEagerToPrune () public setUpFor ("mixed_block_1 " ) {
398
+ warpToL2Slot (1 );
399
+ _testBlock ("mixed_block_1 " , false , 1 );
400
+ // we prove epoch 0
401
+ rollup.setAssumeProvenThroughBlockNumber (rollup.getPendingBlockNumber ());
402
+
403
+ // jump to epoch 1
404
+ warpToL2Slot (Constants.AZTEC_EPOCH_DURATION);
405
+ _testBlock ("mixed_block_2 " , false , Constants.AZTEC_EPOCH_DURATION);
406
+
407
+ // jump to epoch 2
408
+ warpToL2Slot (Constants.AZTEC_EPOCH_DURATION * 2 );
409
+
410
+ vm.expectRevert (abi.encodeWithSelector (Errors.Rollup__NothingToPrune.selector ));
411
+ rollup.prune ();
412
+ }
413
+
401
414
function testPruneDuringPropose () public setUpFor ("mixed_block_1 " ) {
402
- _testBlock ("mixed_block_1 " , false );
415
+ _testBlock ("mixed_block_1 " , false , 1 );
416
+ assertEq (rollup.getEpochToProve (), 0 , "Invalid epoch to prove " );
403
417
warpToL2Slot (Constants.AZTEC_EPOCH_DURATION * 2 );
404
418
_testBlock ("mixed_block_1 " , false , Constants.AZTEC_EPOCH_DURATION * 2 );
405
419
0 commit comments