Summary
PDPVerifier v3.4.0 remains active on Calibration and Mainnet. The incident was caused by deployed FWSS v1.2.0 still calling IPDPVerifier.USDFC_SYBIL_FEE() during new data-set creation and pre-flight lockup validation, while PDPVerifier v3.4.0 had removed that getter as part of the cleanup-deposit change.
The chosen mitigation was the lower-disruption FWSS hotfix path, not PDPVerifier rollback. FWSS v1.2.1 preserves the FWSS v1.2.0 USDFC sybil-fee burn rail, but replaces the PDPVerifier getter dependency with a local 0.1 USDFC FWSS constant. Curio/SP software still needs to send the 0.1 FIL cleanup deposit required by PDPVerifier v3.4.0 when creating new data sets.
Current Status
Impact
- New data-set creation through deployed FWSS v1.2.0 could fail against PDPVerifier v3.4.0 because FWSS called the removed
USDFC_SYBIL_FEE() getter.
- Existing data sets appeared unaffected.
- PDPVerifier rollback was prepared as a fallback, but was not used.
Root Cause
FWSS v1.2.0 contained two IPDPVerifier(pdpVerifierAddress).USDFC_SYBIL_FEE() dependencies:
- data-set creation sybil-fee burn-rail path
- pre-flight minimum lockup calculation in
validatePayerOperatorApprovalAndFunds()
Those calls were incompatible with PDPVerifier v3.4.0 because that release removed the old PDPVerifier USDFC sybil-fee getter and introduced the FIL cleanup deposit requirement for new data-set creation.
Active PDPVerifier State
Calibration
Mainnet
FWSS Hotfix State
Calibration
Mainnet
Completed Mitigation Checklist
Code / Release Prep
Calibration
Mainnet
Closed-Out Status
Fallback
PDPVerifier rollback was the fallback path if the FWSS hotfix failed. It was not used because FWSS v1.2.1 was deployed and verified on both networks.
If PDPVerifier rollback ever becomes necessary later, use upgradeToAndCall(previousImplementation, 0x), not the existing PDP tools/upgrade.sh default migrate() calldata, because the proxy initializer counter is already 3 and v3.2.0 migrate() uses reinitializer(2).
Summary
PDPVerifier v3.4.0 remains active on Calibration and Mainnet. The incident was caused by deployed FWSS v1.2.0 still calling
IPDPVerifier.USDFC_SYBIL_FEE()during new data-set creation and pre-flight lockup validation, while PDPVerifier v3.4.0 had removed that getter as part of the cleanup-deposit change.The chosen mitigation was the lower-disruption FWSS hotfix path, not PDPVerifier rollback. FWSS v1.2.1 preserves the FWSS v1.2.0 USDFC sybil-fee burn rail, but replaces the PDPVerifier getter dependency with a local
0.1 USDFCFWSS constant. Curio/SP software still needs to send the 0.1 FIL cleanup deposit required by PDPVerifier v3.4.0 when creating new data sets.Current Status
releases/v1.2.x: fix(fwss): remove PDPVerifier sybil fee dependency filecoin-services#491a6dec30d61213c2eb9af2b5bbabb4ab36ec531b1Impact
USDFC_SYBIL_FEE()getter.Root Cause
FWSS v1.2.0 contained two
IPDPVerifier(pdpVerifierAddress).USDFC_SYBIL_FEE()dependencies:validatePayerOperatorApprovalAndFunds()Those calls were incompatible with PDPVerifier v3.4.0 because that release removed the old PDPVerifier USDFC sybil-fee getter and introduced the FIL cleanup deposit requirement for new data-set creation.
Active PDPVerifier State
Calibration
0x85e366Cf9DD2c0aE37E963d9556F5f4718d6417C0xd60b90f6D3C42B26a246E141ec701a20Dde2fA613.4.0Mainnet
0xBADd0B92C1c71d02E7d520f64c0876538fa2557F0xb41A97FEDD2D9497C639A643ec75E56CbCeDe8BA3.4.0FWSS Hotfix State
Calibration
0x02925630df557F957f70E112bA06e50965417CA00xC196EFddF64C4c2605284Ab66bdbc24fC795dE9E1.2.1nextUpgrade()verified clearedMainnet
0x8408502033C418E1bbC97cE9ac48E5528F371A9f0xEBc8CD859d0D389235bDe59B97485936daA1aED51.2.1nextUpgrade()verified clearedCompleted Mitigation Checklist
Code / Release Prep
filecoin-serviceshotfix branch from the deployed FWSS v1.2.0 baseline0.1 USDFCsybil-fee constantvalidatePayerOperatorApprovalAndFunds()VERSION()to1.2.1releases/v1.2.xCalibration
upgradeToAndCallVERSION()returns1.2.1nextUpgrade()is clearedMainnet
upgradeToAndCallVERSION()returns1.2.1nextUpgrade()is clearedClosed-Out Status
Fallback
PDPVerifier rollback was the fallback path if the FWSS hotfix failed. It was not used because FWSS v1.2.1 was deployed and verified on both networks.
If PDPVerifier rollback ever becomes necessary later, use
upgradeToAndCall(previousImplementation, 0x), not the existing PDPtools/upgrade.shdefaultmigrate()calldata, because the proxy initializer counter is already3and v3.2.0migrate()usesreinitializer(2).