Skip to content

Commit c007669

Browse files
resolve changes
1 parent 0337de8 commit c007669

File tree

4 files changed

+34
-38
lines changed

4 files changed

+34
-38
lines changed

src/PDPVerifier.sol

Lines changed: 31 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ contract PDPVerifier is Initializable, UUPSUpgradeable, OwnableUpgradeable {
5252
bytes32 public constant FIL_USD_PRICE_FEED_ID = 0x150ac9b959aee0051e4091f0ef5216d941f590e1c5e7f91cf7635b5c11628c0e;
5353
uint256 public constant NO_CHALLENGE_SCHEDULED = 0;
5454
uint256 public constant NO_PROVEN_EPOCH = 0;
55-
uint256 public constant NEW_DATA_SET_SENTINEL = type(uint256).max;
55+
uint256 public constant NEW_DATA_SET_SENTINEL = 0;
5656

5757
// Events
5858
event DataSetCreated(uint256 indexed setId, address indexed storageProvider);
@@ -434,25 +434,10 @@ contract PDPVerifier is Initializable, UUPSUpgradeable, OwnableUpgradeable {
434434
emit DataSetCreated(newSetId, msg.sender);
435435

436436
// Add pieces to the newly created data set (if any)
437-
uint256 nPieces = pieceData.length;
438437
require(addPayload.length <= EXTRA_DATA_MAX_SIZE, "Extra data too large");
439-
uint256 firstAddedNew = nextPieceId[newSetId];
440438

441-
if (nPieces > 0) {
442-
uint256[] memory pieceIdsNew = new uint256[](pieceData.length);
443-
Cids.Cid[] memory pieceCidsAddedNew = new Cids.Cid[](pieceData.length);
444-
445-
for (uint256 i = 0; i < nPieces; i++) {
446-
addOnePiece(newSetId, i, pieceData[i]);
447-
pieceIdsNew[i] = firstAddedNew + i;
448-
pieceCidsAddedNew[i] = pieceData[i];
449-
}
450-
emit PiecesAdded(newSetId, pieceIdsNew, pieceCidsAddedNew);
451-
452-
address listenerAddrNew = dataSetListener[newSetId];
453-
if (listenerAddrNew != address(0)) {
454-
PDPListener(listenerAddrNew).piecesAdded(newSetId, firstAddedNew, pieceData, addPayload);
455-
}
439+
if (pieceData.length > 0) {
440+
_addPiecesToDataSet(newSetId, pieceData, addPayload);
456441
}
457442

458443
// Return the at the end to avoid any possible re-entrency issues.
@@ -467,26 +452,37 @@ contract PDPVerifier is Initializable, UUPSUpgradeable, OwnableUpgradeable {
467452
require(listenerAddr == address(0), "listener must be zero for existing dataset");
468453
require(msg.value == 0, "no fee on add to existing dataset");
469454

470-
uint256 nPieces = pieceData.length;
471455
require(extraData.length <= EXTRA_DATA_MAX_SIZE, "Extra data too large");
472456
require(dataSetLive(setId), "Data set not live");
473-
require(nPieces > 0, "Must add at least one piece");
474457
require(storageProvider[setId] == msg.sender, "Only the storage provider can add pieces");
475-
uint256 firstAdded = nextPieceId[setId];
476-
uint256[] memory pieceIds = new uint256[](pieceData.length);
477-
Cids.Cid[] memory pieceCidsAdded = new Cids.Cid[](pieceData.length);
478-
479-
for (uint256 i = 0; i < nPieces; i++) {
480-
addOnePiece(setId, i, pieceData[i]);
481-
pieceIds[i] = firstAdded + i;
482-
pieceCidsAdded[i] = pieceData[i];
483-
}
484-
emit PiecesAdded(setId, pieceIds, pieceCidsAdded);
485-
address listenerAddrExisting = dataSetListener[setId];
486-
if (listenerAddrExisting != address(0)) {
487-
PDPListener(listenerAddrExisting).piecesAdded(setId, firstAdded, pieceData, extraData);
488-
}
489-
return firstAdded;
458+
459+
return _addPiecesToDataSet(setId, pieceData, extraData);
460+
}
461+
}
462+
463+
// Internal function to add pieces to a data set and handle events/listeners
464+
function _addPiecesToDataSet(uint256 setId, Cids.Cid[] calldata pieceData, bytes memory extraData)
465+
internal
466+
returns (uint256 firstAdded)
467+
{
468+
uint256 nPieces = pieceData.length;
469+
require(nPieces > 0, "Must add at least one piece");
470+
471+
firstAdded = nextPieceId[setId];
472+
uint256[] memory pieceIds = new uint256[](pieceData.length);
473+
Cids.Cid[] memory pieceCidsAdded = new Cids.Cid[](pieceData.length);
474+
475+
for (uint256 i = 0; i < nPieces; i++) {
476+
addOnePiece(setId, i, pieceData[i]);
477+
pieceIds[i] = firstAdded + i;
478+
pieceCidsAdded[i] = pieceData[i];
479+
}
480+
481+
emit PiecesAdded(setId, pieceIds, pieceCidsAdded);
482+
483+
address listenerAddr = dataSetListener[setId];
484+
if (listenerAddr != address(0)) {
485+
PDPListener(listenerAddr).piecesAdded(setId, firstAdded, pieceData, extraData);
490486
}
491487
}
492488

test/PDPVerifier.t.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ contract PDPVerifierDataSetCreateDeleteTest is Test, PieceHelper {
236236
}
237237

238238
function testNewDataSetSentinelValue() public {
239-
assertEq(NEW_DATA_SET_SENTINEL, type(uint256).max, "Sentinel value should be type(uint256).max");
239+
assertEq(NEW_DATA_SET_SENTINEL, 0, "Sentinel value should be 0");
240240

241241
uint256 sybilFee = PDPFees.sybilFee();
242242
bytes memory combinedExtraData = abi.encode(empty, empty);

test/PDPVerifierProofTest.t.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {IPyth} from "@pythnetwork/pyth-sdk-solidity/IPyth.sol";
55
import {PythStructs} from "@pythnetwork/pyth-sdk-solidity/PythStructs.sol";
66
import {Test} from "forge-std/Test.sol";
77
import {Cids} from "../src/Cids.sol";
8-
import {PDPVerifier, PDPListener} from "../src/PDPVerifier.sol";
8+
import {PDPVerifier} from "../src/PDPVerifier.sol";
99
import {MyERC1967Proxy} from "../src/ERC1967Proxy.sol";
1010
import {ProofUtil} from "./ProofUtil.sol";
1111
import {PDPFees} from "../src/Fees.sol";

test/TestConstants.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
// SPDX-License-Identifier: Apache-2.0 OR MIT
22
pragma solidity ^0.8.13;
33

4-
uint256 constant NEW_DATA_SET_SENTINEL = type(uint256).max;
4+
uint256 constant NEW_DATA_SET_SENTINEL = 0;

0 commit comments

Comments
 (0)