This release upgraded the deployed PDPVerifier contract with data-set cleanup deposits and explicit piece-cleanup finalization. New data sets now hold a 0.1 FIL cleanup deposit that is returned to whoever completes cleanup after deletion, giving storage providers and permissionless cleanup callers a concrete incentive to clear on-chain piece state.
The active Mainnet and Calibnet proxies now report VERSION() == "3.4.0". The v3.3.0 release was library-only and did not deploy a PDPVerifier implementation, so this rollout intentionally fast-forwards the deployed contract version from 3.2.0 to 3.4.0.
Deployed
The implementation contracts were deployed from commit 1370f49f9af958e4e3a1396377035685d55ffdba. The v3.4.0 release tag points to a later documentation-only commit that finalized these release notes.
Mainnet:
- PDPVerifier Implementation: 0xb41A97FEDD2D9497C639A643ec75E56CbCeDe8BA
- PDPVerifier Proxy: 0xBADd0B92C1c71d02E7d520f64c0876538fa2557F
- Proxy Upgrade Transaction: 0x07407b3becb1786e3b4217bfb5774d155d91d9688b0800fe5740689a72c4ed10
Calibnet:
- PDPVerifier Implementation: 0xd60b90f6D3C42B26a246E141ec701a20Dde2fA61
- PDPVerifier Proxy: 0x85e366Cf9DD2c0aE37E963d9556F5f4718d6417C
- Proxy Upgrade Transaction: 0x0bb3597820f0c14a902f6c5672e5b3d1e2f9b7e60174773af07ef6f2762121ad
Breaking Changes
- New data-set creation now requires a 0.1 FIL cleanup deposit. Callers of
createDataSet()and callers that create a data set throughaddPieces(NEW_DATA_SET_SENTINEL, ...)must send at leastFIL_CLEANUP_DEPOSIT()inmsg.value; excess FIL is refunded. #270 - The previous USDFC sybil-fee payment path has been removed from PDPVerifier. Integrations should use the FIL cleanup deposit flow instead of relying on USDFC sybil-fee payment getters or payment-contract constructor values.
- PDPVerifier implementation deployment now uses constructor args
(uint64 initializerVersion, uint256 challengeFinality). For this rollout, useinitializerVersion = 3,challengeFinality = 10on Calibration, andchallengeFinality = 150on Mainnet. - Several data-set liveness failures now revert with custom errors such as
DataSetNotLive()andDataSetNotFound()instead of string revert reasons. Integrations that decode revert data should update their expectations (#274).
Added
- Added a per-data-set cleanup deposit that is collected when a data set is created and paid to the caller who completes cleanup (#270).
- Added
cleanupPieces(setId, maxPieces)so deleted data sets with remaining pieces can be cleaned incrementally, clearing piece CID, leaf-count, and sum-tree storage before finalizing deletion (#270). - Added
FIL_CLEANUP_DEPOSIT()to expose the current cleanup deposit amount to typed integrations (#270). - Added permissionless deletion and cleanup paths after
INACTIVITY_WINDOW, while keeping cleanup provider-restricted during the inactivity window (#270).
Changed
- Moved
challengeFinalityfrom proxy storage into an immutable implementation constructor value while preservinggetChallengeFinality()for callers (#270). - Updated PDPVerifier deploy and upgrade tooling for the new constructor shape and network-specific challenge finality values (#270).
- Kept
getNextPieceId()andgetNextChallengeEpoch()readable while a data set is in cleanup mode, allowing cleanup and indexing callers to inspect teardown state after deletion starts (#274).
Maintenance
- Regenerated PDPVerifier storage layout files and updated storage-layout checks to support intentional deprecated-slot renames (#270).
- Added cleanup-focused tests covering incremental cleanup, zero-piece data sets, permissionless cleanup after inactivity, deposit payout timing, and storage-slot clearing (#270).
- Removed redundant data-set bounds checks now covered by storage-provider liveness checks, with tests updated for the custom-error revert shape (#274).