Skip to content

v3.4.0

Latest

Choose a tag to compare

@rjan90 rjan90 released this 28 May 06:01
b8ae60d

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:

Calibnet:

Breaking Changes

  • New data-set creation now requires a 0.1 FIL cleanup deposit. Callers of createDataSet() and callers that create a data set through addPieces(NEW_DATA_SET_SENTINEL, ...) must send at least FIL_CLEANUP_DEPOSIT() in msg.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, use initializerVersion = 3, challengeFinality = 10 on Calibration, and challengeFinality = 150 on Mainnet.
  • Several data-set liveness failures now revert with custom errors such as DataSetNotLive() and DataSetNotFound() 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 challengeFinality from proxy storage into an immutable implementation constructor value while preserving getChallengeFinality() for callers (#270).
  • Updated PDPVerifier deploy and upgrade tooling for the new constructor shape and network-specific challenge finality values (#270).
  • Kept getNextPieceId() and getNextChallengeEpoch() 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).