Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion foundry.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ script = 'script'
out = 'out'
libs = ['lib']
cache_path = 'cache'
solc = "0.8.23"
solc = "0.8.30"

# For dependencies
remappings = [
Expand Down
58 changes: 29 additions & 29 deletions test/PDPVerifier.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -303,11 +303,11 @@ contract PDPVerifierDataSetMutateTest is Test, PieceHelper {

// flush add
vm.expectEmit(true, true, false, false);
emit IPDPEvents.NextProvingPeriod(setId, block.number + CHALLENGE_FINALITY_DELAY, 2);
pdpVerifier.nextProvingPeriod(setId, block.number + CHALLENGE_FINALITY_DELAY, empty);
emit IPDPEvents.NextProvingPeriod(setId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, 2);
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, empty);

assertEq(pdpVerifier.getDataSetLeafCount(setId), leafCount);
assertEq(pdpVerifier.getNextChallengeEpoch(setId), block.number + CHALLENGE_FINALITY_DELAY);
assertEq(pdpVerifier.getNextChallengeEpoch(setId), vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY);
assertEq(pdpVerifier.getChallengeRange(setId), leafCount);

assertTrue(pdpVerifier.pieceLive(setId, pieceId));
Expand Down Expand Up @@ -337,12 +337,12 @@ contract PDPVerifierDataSetMutateTest is Test, PieceHelper {
assertEq(firstId, 0);
// flush add
vm.expectEmit(true, true, true, false);
emit IPDPEvents.NextProvingPeriod(setId, block.number + CHALLENGE_FINALITY_DELAY, 6);
pdpVerifier.nextProvingPeriod(setId, block.number + CHALLENGE_FINALITY_DELAY, empty);
emit IPDPEvents.NextProvingPeriod(setId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, 6);
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, empty);

uint256 expectedLeafCount = 64 + 128;
assertEq(pdpVerifier.getDataSetLeafCount(setId), expectedLeafCount);
assertEq(pdpVerifier.getNextChallengeEpoch(setId), block.number + CHALLENGE_FINALITY_DELAY);
assertEq(pdpVerifier.getNextChallengeEpoch(setId), vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY);

assertTrue(pdpVerifier.pieceLive(setId, firstId));
assertTrue(pdpVerifier.pieceLive(setId, firstId + 1));
Expand Down Expand Up @@ -408,8 +408,8 @@ contract PDPVerifierDataSetMutateTest is Test, PieceHelper {
pieces[0] = makeSamplePiece(2);
pdpVerifier.addPieces(setId, pieces, empty);
assertEq(pdpVerifier.getNextChallengeEpoch(setId), pdpVerifier.NO_CHALLENGE_SCHEDULED()); // Not updated on first add anymore
pdpVerifier.nextProvingPeriod(setId, block.number + CHALLENGE_FINALITY_DELAY, empty);
assertEq(pdpVerifier.getNextChallengeEpoch(setId), block.number + CHALLENGE_FINALITY_DELAY);
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, empty);
assertEq(pdpVerifier.getNextChallengeEpoch(setId), vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY);

// Remove piece
uint256[] memory toRemove = new uint256[](1);
Expand All @@ -418,7 +418,7 @@ contract PDPVerifierDataSetMutateTest is Test, PieceHelper {

vm.expectEmit(true, true, false, false);
emit IPDPEvents.PiecesRemoved(setId, toRemove);
pdpVerifier.nextProvingPeriod(setId, block.number + CHALLENGE_FINALITY_DELAY, empty); // flush
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, empty); // flush

assertEq(pdpVerifier.getNextChallengeEpoch(setId), pdpVerifier.NO_CHALLENGE_SCHEDULED());
assertEq(pdpVerifier.pieceLive(setId, 0), false);
Expand Down Expand Up @@ -462,15 +462,15 @@ contract PDPVerifierDataSetMutateTest is Test, PieceHelper {

vm.expectEmit(true, true, false, false);
emit IPDPEvents.PiecesRemoved(setId, toRemove);
pdpVerifier.nextProvingPeriod(setId, block.number + CHALLENGE_FINALITY_DELAY, empty); // flush
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, empty); // flush

assertEq(pdpVerifier.pieceLive(setId, 0), false);
assertEq(pdpVerifier.pieceLive(setId, 1), true);
assertEq(pdpVerifier.pieceLive(setId, 2), false);

assertEq(pdpVerifier.getNextPieceId(setId), 3);
assertEq(pdpVerifier.getDataSetLeafCount(setId), 64 / 32);
assertEq(pdpVerifier.getNextChallengeEpoch(setId), block.number + CHALLENGE_FINALITY_DELAY);
assertEq(pdpVerifier.getNextChallengeEpoch(setId), vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY);

bytes memory emptyCidData = new bytes(0);
assertEq(pdpVerifier.getPieceCid(setId, 0).data, emptyCidData);
Expand All @@ -497,7 +497,7 @@ contract PDPVerifierDataSetMutateTest is Test, PieceHelper {
vm.expectRevert("Can only schedule removal of existing pieces");
pdpVerifier.schedulePieceDeletions(setId, toRemove, empty);
// Actual removal does not fail
pdpVerifier.nextProvingPeriod(setId, block.number + CHALLENGE_FINALITY_DELAY, empty);
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, empty);

// Scheduling both unchallengeable and challengeable pieces for removal succeeds
// scheduling duplicate ids in both cases succeeds
Expand All @@ -514,7 +514,7 @@ contract PDPVerifierDataSetMutateTest is Test, PieceHelper {
assertEq(true, pdpVerifier.pieceChallengable(setId, 0));
assertEq(false, pdpVerifier.pieceChallengable(setId, 1));
pdpVerifier.schedulePieceDeletions(setId, toRemove2, empty);
pdpVerifier.nextProvingPeriod(setId, block.number + CHALLENGE_FINALITY_DELAY, empty);
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, empty);

assertEq(false, pdpVerifier.pieceLive(setId, 0));
assertEq(false, pdpVerifier.pieceLive(setId, 1));
Expand Down Expand Up @@ -551,7 +551,7 @@ contract PDPVerifierDataSetMutateTest is Test, PieceHelper {

// Test nextProvingPeriod with too large extra data
vm.expectRevert("Extra data too large");
pdpVerifier.nextProvingPeriod(setId, block.number + 10, tooLargeExtraData);
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + 10, tooLargeExtraData);

// Test deleteDataSet with too large extra data
vm.expectRevert("Extra data too large");
Expand Down Expand Up @@ -595,7 +595,7 @@ contract PDPVerifierDataSetMutateTest is Test, PieceHelper {
// Try to call nextProvingPeriod as non-storage-provider
vm.prank(nonStorageProvider);
vm.expectRevert("only the storage provider can move to next proving period");
pdpVerifier.nextProvingPeriod(setId, block.number + 10, empty);
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + 10, empty);
}

function testNextProvingPeriodChallengeEpochTooSoon() public {
Expand All @@ -606,7 +606,7 @@ contract PDPVerifierDataSetMutateTest is Test, PieceHelper {
pdpVerifier.addPieces(setId, pieces, empty);

// Current block number
uint256 currentBlock = block.number;
uint256 currentBlock = vm.getBlockNumber();

// Try to call nextProvingPeriod with a challenge epoch that is not at least
// challengeFinality epochs in the future
Expand Down Expand Up @@ -640,10 +640,10 @@ contract PDPVerifierDataSetMutateTest is Test, PieceHelper {

// Try to set next proving period with various values
vm.expectRevert("can only start proving once leaves are added");
pdpVerifier.nextProvingPeriod(setId, block.number + 100, empty);
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + 100, empty);

vm.expectRevert("can only start proving once leaves are added");
pdpVerifier.nextProvingPeriod(setId, block.number + CHALLENGE_FINALITY_DELAY, empty);
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, empty);

vm.expectRevert("can only start proving once leaves are added");
pdpVerifier.nextProvingPeriod(setId, type(uint256).max, empty);
Expand All @@ -656,7 +656,7 @@ contract PDPVerifierDataSetMutateTest is Test, PieceHelper {
// Try to call nextProvingPeriod on the empty data set
// Should revert because no leaves have been added yet
vm.expectRevert("can only start proving once leaves are added");
pdpVerifier.nextProvingPeriod(setId, block.number + CHALLENGE_FINALITY_DELAY, empty);
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, empty);
}

function testEmitDataSetEmptyEvent() public {
Expand All @@ -677,7 +677,7 @@ contract PDPVerifierDataSetMutateTest is Test, PieceHelper {
emit IPDPEvents.DataSetEmpty(setId);

// Call nextProvingPeriod which should remove the piece and emit the event
pdpVerifier.nextProvingPeriod(setId, block.number + CHALLENGE_FINALITY_DELAY, empty);
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, empty);

// Verify the data set is indeed empty
assertEq(pdpVerifier.getDataSetLeafCount(setId), 0);
Expand Down Expand Up @@ -776,7 +776,7 @@ contract PDPVerifierPaginationTest is Test, PieceHelper {

// Move to next proving period to make removals effective
uint256 challengeFinality = pdpVerifier.getChallengeFinality();
pdpVerifier.nextProvingPeriod(setId, block.number + challengeFinality, empty);
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + challengeFinality, empty);

// Should return only 7 active pieces
(Cids.Cid[] memory pieces, uint256[] memory ids, uint256[] memory sizes, bool hasMore) =
Expand Down Expand Up @@ -1177,7 +1177,7 @@ contract SumTreeAddTest is Test, PieceHelper {
// Remove pieces in batch
pdpVerifier.schedulePieceDeletions(testSetId, pieceIdsToRemove, empty);
// flush adds and removals
pdpVerifier.nextProvingPeriod(testSetId, block.number + CHALLENGE_FINALITY_DELAY, empty);
pdpVerifier.nextProvingPeriod(testSetId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, empty);
for (uint256 i = 0; i < pieceIdsToRemove.length; i++) {
bytes memory zeroBytes;
assertEq(pdpVerifier.getPieceCid(testSetId, pieceIdsToRemove[i]).data, zeroBytes);
Expand Down Expand Up @@ -1321,7 +1321,7 @@ contract SumTreeAddTest is Test, PieceHelper {
pdpVerifier.addPieces(testSetId, pieceDataArray, empty);
}
pdpVerifier.schedulePieceDeletions(testSetId, pieceIdsToRemove, empty);
pdpVerifier.nextProvingPeriod(testSetId, block.number + CHALLENGE_FINALITY_DELAY, empty); //flush removals
pdpVerifier.nextProvingPeriod(testSetId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, empty); //flush removals

assertFindPieceAndOffset(testSetId, 0, 3, 0);
assertFindPieceAndOffset(testSetId, 1, 4, 0);
Expand Down Expand Up @@ -1432,10 +1432,10 @@ contract PDPListenerIntegrationTest is Test, PieceHelper {

badListener.setBadOperation(PDPRecordKeeper.OperationType.NEXT_PROVING_PERIOD);
vm.expectRevert("Failing operation");
pdpVerifier.nextProvingPeriod(setId, block.number + CHALLENGE_FINALITY_DELAY, empty);
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, empty);

badListener.setBadOperation(PDPRecordKeeper.OperationType.NONE);
pdpVerifier.nextProvingPeriod(setId, block.number + CHALLENGE_FINALITY_DELAY, empty);
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, empty);
}
}

Expand Down Expand Up @@ -1519,7 +1519,7 @@ contract PDPVerifierExtraDataTest is Test, PieceHelper {
);

// Test NEXT_PROVING_PERIOD operation
pdpVerifier.nextProvingPeriod(setId, block.number + CHALLENGE_FINALITY_DELAY, empty);
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, empty);
assertEq(
extraDataListener.getExtraData(setId, PDPRecordKeeper.OperationType.NEXT_PROVING_PERIOD),
empty,
Expand Down Expand Up @@ -1596,7 +1596,7 @@ contract PDPVerifierE2ETest is Test, ProofBuilderHelper, PieceHelper {
piecesProofPeriod1[1] = makePiece(treesA[1], leafCountsA[1]);
pdpVerifier.addPieces(setId, piecesProofPeriod1, empty);
// flush the original addPieces call
pdpVerifier.nextProvingPeriod(setId, block.number + CHALLENGE_FINALITY_DELAY, empty);
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, empty);

uint256 challengeRangeProofPeriod1 = pdpVerifier.getChallengeRange(setId);
assertEq(
Expand Down Expand Up @@ -1662,7 +1662,7 @@ contract PDPVerifierE2ETest is Test, ProofBuilderHelper, PieceHelper {

pdpVerifier.provePossession{value: 1e18}(setId, proofsProofPeriod1);

pdpVerifier.nextProvingPeriod(setId, block.number + CHALLENGE_FINALITY_DELAY, empty);
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, empty);
// CHECK: leaf counts
assertEq(
pdpVerifier.getPieceLeafCount(setId, 0),
Expand Down Expand Up @@ -1693,7 +1693,7 @@ contract PDPVerifierE2ETest is Test, ProofBuilderHelper, PieceHelper {
// CHECK: the next challenge epoch has been updated
assertEq(
pdpVerifier.getNextChallengeEpoch(setId),
block.number + CHALLENGE_FINALITY_DELAY,
vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY,
"Next challenge epoch should be updated"
);
}
Expand Down
16 changes: 8 additions & 8 deletions test/PDPVerifierProofTest.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,9 @@ contract PDPVerifierProofTest is Test, ProofBuilderHelper, PieceHelper {
assertEq(pdpVerifier.getNextChallengeEpoch(setId), challengeEpoch);

// Verify the next challenge is in a subsequent epoch after nextProvingPeriod
pdpVerifier.nextProvingPeriod(setId, block.number + CHALLENGE_FINALITY_DELAY, empty);
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, empty);

assertEq(pdpVerifier.getNextChallengeEpoch(setId), block.number + CHALLENGE_FINALITY_DELAY);
assertEq(pdpVerifier.getNextChallengeEpoch(setId), vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY);
}

receive() external payable {}
Expand Down Expand Up @@ -273,7 +273,7 @@ contract PDPVerifierProofTest is Test, ProofBuilderHelper, PieceHelper {
vm.mockCall(address(pdpVerifier.PYTH()), pythCallData, abi.encode(price));

pdpVerifier.provePossession{value: 1e18}(setId, proofs);
pdpVerifier.nextProvingPeriod(setId, block.number + CHALLENGE_FINALITY_DELAY, empty); // resample
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, empty); // resample

uint256 nextChallengeEpoch = pdpVerifier.getNextChallengeEpoch(setId);
assertNotEq(nextChallengeEpoch, challengeEpoch);
Expand Down Expand Up @@ -320,7 +320,7 @@ contract PDPVerifierProofTest is Test, ProofBuilderHelper, PieceHelper {
removePieces[0] = newPieceId;
pdpVerifier.schedulePieceDeletions(setId, removePieces, empty);
// flush removes
pdpVerifier.nextProvingPeriod(setId, block.number + CHALLENGE_FINALITY_DELAY, empty);
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, empty);

// Make a new proof that is valid with two pieces
challengeEpoch = pdpVerifier.getNextChallengeEpoch(setId);
Expand Down Expand Up @@ -374,14 +374,14 @@ contract PDPVerifierProofTest is Test, ProofBuilderHelper, PieceHelper {
(uint256 setId, bytes32[][] memory tree) = makeDataSetWithOnePiece(leafCount);

// Set challenge sampling far in the future
uint256 farFutureBlock = block.number + 1000;
uint256 farFutureBlock = vm.getBlockNumber() + 1000;
pdpVerifier.nextProvingPeriod(setId, farFutureBlock, empty);
assertEq(
pdpVerifier.getNextChallengeEpoch(setId), farFutureBlock, "Challenge epoch should be set to far future"
);

// Reset to a closer block
uint256 nearerBlock = block.number + CHALLENGE_FINALITY_DELAY;
uint256 nearerBlock = vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY;
pdpVerifier.nextProvingPeriod(setId, nearerBlock, empty);
assertEq(
pdpVerifier.getNextChallengeEpoch(setId), nearerBlock, "Challenge epoch should be reset to nearer block"
Expand Down Expand Up @@ -449,7 +449,7 @@ contract PDPVerifierProofTest is Test, ProofBuilderHelper, PieceHelper {
// Create new data set and add pieces.
uint256 setId = pdpVerifier.createDataSet{value: PDPFees.sybilFee()}(address(listener), empty);
pdpVerifier.addPieces(setId, pieces, empty);
pdpVerifier.nextProvingPeriod(setId, block.number + CHALLENGE_FINALITY_DELAY, empty); // flush adds
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, empty); // flush adds
return (setId, trees);
}

Expand All @@ -468,7 +468,7 @@ contract PDPVerifierProofTest is Test, ProofBuilderHelper, PieceHelper {
Cids.Cid[] memory pieces = new Cids.Cid[](1);
pieces[0] = makePiece(tree, leafCount);
uint256 pieceId = pdpVerifier.addPieces(setId, pieces, empty);
pdpVerifier.nextProvingPeriod(setId, block.number + CHALLENGE_FINALITY_DELAY, empty); // flush adds
pdpVerifier.nextProvingPeriod(setId, vm.getBlockNumber() + CHALLENGE_FINALITY_DELAY, empty); // flush adds
return (tree, pieceId);
}

Expand Down