Skip to content

Releases: FilOzone/pdp

v3.1.0

27 Oct 09:16
fd1b650

Choose a tag to compare

This release addresses an issue where the schedulePieceDeletions() function lacked duplicate piece ID validation, which could lead to unexpected behavior when the same piece ID was scheduled for removal multiple times.

The issue has been resolved with bitmap-based duplicate detection, and these contracts will be used for the FWSS GA release.

Deployed

Mainnet:

Calibnet:

Added

  • Prevent duplicate piece IDs in schedulePieceDeletions (#228)
    • Added two-level bitmap tracking for unlimited piece ID support in scheduled removals
    • Prevents duplicate piece IDs from being added to scheduled deletion queue
    • Enhanced validation to only allow live pieces to be scheduled for removal

v3.0.0

21 Oct 10:42
856fd2f

Choose a tag to compare

v3.0.0 Pre-release
Pre-release

M4: Filecoin Service Liftoff

Deployed

Mainnet:

Calibnet:

💥 Breaking Changes

  • BREAKING: Changed getActivePieces() return signature (#223)
    • Removed: rawSizes array from return values
    • Before: returns (Cids.Cid[] memory pieces, uint256[] memory pieceIds, uint256[] memory rawSizes, bool hasMore)
    • After: returns (Cids.Cid[] memory pieces, uint256[] memory pieceIds, bool hasMore)
    • Migration Guide: Remove any code that expects or uses the rawSizes return value from getActivePieces(). The raw size information was redundant as it can be derived from the piece CIDs themselves.

Changed

  • Removed EXTRA_DATA_MAX_SIZE limit (previously 2048 bytes) allowing unlimited extra data in function calls (#225)
  • Clarified naming: renamed rawSize parameter to proofSize in calculateProofFeeForSize() for better clarity (#223)

Removed

  • Removed internal calculateCallDataSize() function and gasUsed calculation logic (#222)

v2.2.1

08 Oct 19:01
7a3b18b

Choose a tag to compare

v2.2.1 Pre-release
Pre-release

PDP M3.1

Deployed

Mainnet:

Calibnet:

Added

  • Restored createDataSet() function for enhanced flexibility in dataset initialization, enabling empty "bucket" creation, smoother Curio and synapse-sdk integration (#219)
  • Implemented FVM precompiles for native payments, burn operations, and beacon randomness functionality (#207)

v2.2.0

07 Oct 06:07
6045b45

Choose a tag to compare

v2.2.0 Pre-release
Pre-release

PDP M3

Deployed

Mainnet:

Calibnet:

💥 Breaking Changes

  • Merged createDataset and addPieces functions for streamlined dataset creation (#201)
    • Removed: createDataset() function no longer exists
    • Changed: addPieces() now handles both creating new datasets AND adding pieces to existing datasets
    • Migration Guide:
      • To create a new dataset with pieces: Call addPieces(type(uint256).max, listenerAddress, pieces, extraData)
      • To add pieces to existing dataset: Call addPieces(datasetID, address(0), pieces, extraData)
    • Benefits: Single transaction replaces the previous two-step process (create, then add), reducing wait times and gas costs

Added

  • feat: Update PDP proof fee (#214)

Changed

  • rm unused constants (#211)
  • remove seconds per day again (#215)
  • Fixed vm.getBlockNumber in test environments (#206)

📝 Changelog

For the full set of changes since the last tag:

View all changes between v2.1.0 and v2.2.0

v2.1.0

17 Sep 08:51
5d2e601

Choose a tag to compare

📦 Deployed

Mainnet:

Calibnet:

💥 Breaking Changes

  • BREAKING: Switched from Piece CID version 1 to version 2 (#184)
    • New Cids.sol library with CIDv2 handling capabilities
    • No backward compatibility - CIDv1 support completely removed
    • Enhanced piece data validation using CID height information
    • Golden tests for CommPv2 functionality

🚀 Added

  • Data Set Indexing: Data set IDs now start at 1 instead of 0 (#196)
  • Event Enhancement: Added root_cids to RootsAdded event for better piece tracking (#169)

🔧 Changed

  • Interface Updates: IPDPProvingSchedule methods changed from pure to view for accurate state access patterns (#186)
  • Price Validation: Updated price validation logic to accept older price data for improved reliability (#191)
  • Performance Optimization: Reduced optimizer runs to minimize deployed contract size (#194)
  • Code Architecture: Transitioned from IPDPTypes.PieceData to Cids.Cid throughout the codebase for better type consistency (#184)
  • Code Quality: Comprehensive formatting improvements across all Solidity files and tests (#185)
  • Documentation: Updated README to point to latest release (#192)

🐛 Fixed

  • Various test stability improvements and bug fixes
  • Enhanced error handling in CID processing
  • Improved code formatting consistency

📝 Changelog

For the set of changes since the last tag:

View all changes between v2.0.0 and v2.1.0

v2.0.0

23 Jul 06:30
5d59f00

Choose a tag to compare

BREAKING: Renamed core terminology throughout the codebase for better clarity, for each of the following, all functions, variables, events, and parameters have been changed.

  • proofSetdataSet ("proof set" becomes "data set")
  • rootpiece
  • rootIdpieceId
  • ownerstorageProvider
  • Function renames:
    • createProofSet()createDataSet()
    • deleteProofSet()deleteDataSet()
    • getNextProofSetId()getNextDataSetId()
    • proofSetLive()dataSetLive()
    • getProofSetLeafCount()getDataSetLeafCount()
    • getProofSetListener()getDataSetListener()
    • getProofSetLastProvenEpoch()getDataSetLastProvenEpoch()
    • getProofSetOwner()getDataSetStorageProvider()
    • proposeProofSetOwner()proposeDataSetStorageProvider()
    • claimProofSetOwnership()claimDataSetStorageProvider()
    • addRoots()addPieces()
    • getNextRootId()getNextPieceId()
    • rootLive()pieceLive()
    • rootChallengable()pieceChallengable()
    • getRootCid()getPieceCid()
    • getRootLeafCount()getPieceLeafCount()
    • findRootIds()findPieceIds()
    • scheduleRemovals()schedulePieceDeletions()
    • getActiveRootCount()getActivePieceCount()
  • Event renames:
    • ProofSetCreatedDataSetCreated (parameter change: ownerstorageProvider)
    • ProofSetDeletedDataSetDeleted
    • ProofSetEmptyDataSetEmpty
    • ProofSetOwnerChangedStorageProviderChanged (parameters: oldOwner/newOwneroldStorageProvider/newStorageProvider)
    • RootsAddedPiecesAdded (parameter change: rootIdspieceIds)
    • RootsRemovedPiecesRemoved (parameter change: rootIdspieceIds)
    • PossessionProven event updated: IPDPTypes.RootIdAndOffset[]IPDPTypes.PieceIdAndOffset[]
  • Interface updates:
    • PDPListener interface method renames:
      • proofSetCreated()dataSetCreated() (parameter change: proofSetIddataSetId)
      • proofSetDeleted()dataSetDeleted() (parameter change: proofSetIddataSetId)
      • rootsAdded()piecesAdded() (parameter changes: proofSetIddataSetId, IPDPTypes.RootData[]IPDPTypes.PieceData[])
      • rootsScheduledRemove()piecesScheduledRemove() (parameter changes: proofSetIddataSetId, rootIdspieceIds)
      • possessionProven() → unchanged name (parameter change: proofSetIddataSetId)
      • nextProvingPeriod() → unchanged name (parameter change: proofSetIddataSetId)
      • ownerChanged()storageProviderChanged() (parameters: proofSetIddataSetId, oldOwner/newOwneroldStorageProvider/newStorageProvider)
    • IPDPTypes.RootDataIPDPTypes.PieceData (note: struct field remains piece)
  • Storage renames:
    • Constants:
      • MAX_ROOT_SIZEMAX_PIECE_SIZE
      • VERSION = "1.1.0"VERSION = "2.0.0" (to reflect this release)
    • State variables:
      • nextProofSetIdnextDataSetId (uint64)
    • Mappings:
      • nextRootIdnextPieceId
      • proofSetLeafCountdataSetLeafCount
      • proofSetListenerdataSetListener
      • proofSetLastProvenEpochdataSetLastProvenEpoch
      • proofSetOwnerstorageProvider
      • proofSetProposedOwnerdataSetProposedStorageProvider
      • rootCidspieceCids
      • rootLeafCountspieceLeafCounts

Deprecated

  • SimplePDPService: No longer actively maintained or deployed by default

What's Changed

New Contributors

Full Changelog: v1.0.0...v2.0.0

Initial PDP Release

29 Apr 00:10
e1664dc

Choose a tag to compare

The initial PDP release deployed to mainnet

  • PDPVerifier and PDPSimpleService
  • Extensible 2 contract architecture
  • Secure proving
  • Proof set management