@@ -52,7 +52,7 @@ contract PDPVerifier is Initializable, UUPSUpgradeable, OwnableUpgradeable {
52
52
bytes32 public constant FIL_USD_PRICE_FEED_ID = 0x150ac9b959aee0051e4091f0ef5216d941f590e1c5e7f91cf7635b5c11628c0e ;
53
53
uint256 public constant NO_CHALLENGE_SCHEDULED = 0 ;
54
54
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 ;
56
56
57
57
// Events
58
58
event DataSetCreated (uint256 indexed setId , address indexed storageProvider );
@@ -434,25 +434,10 @@ contract PDPVerifier is Initializable, UUPSUpgradeable, OwnableUpgradeable {
434
434
emit DataSetCreated (newSetId, msg .sender );
435
435
436
436
// Add pieces to the newly created data set (if any)
437
- uint256 nPieces = pieceData.length ;
438
437
require (addPayload.length <= EXTRA_DATA_MAX_SIZE, "Extra data too large " );
439
- uint256 firstAddedNew = nextPieceId[newSetId];
440
438
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);
456
441
}
457
442
458
443
// Return the at the end to avoid any possible re-entrency issues.
@@ -467,26 +452,37 @@ contract PDPVerifier is Initializable, UUPSUpgradeable, OwnableUpgradeable {
467
452
require (listenerAddr == address (0 ), "listener must be zero for existing dataset " );
468
453
require (msg .value == 0 , "no fee on add to existing dataset " );
469
454
470
- uint256 nPieces = pieceData.length ;
471
455
require (extraData.length <= EXTRA_DATA_MAX_SIZE, "Extra data too large " );
472
456
require (dataSetLive (setId), "Data set not live " );
473
- require (nPieces > 0 , "Must add at least one piece " );
474
457
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);
490
486
}
491
487
}
492
488
0 commit comments