Releases: FilOzone/filecoin-services
Releases · FilOzone/filecoin-services
FWSS v1.1.0
This release includes bug fixes, new features, and operational improvements for the Filecoin Warm Storage Service.
Deployment Addresses
See service_contracts/deployments.json for v1.1.0 Mainnet (chain 314) and Calibnet (chain 314159) contract addresses.
Added
ProviderIdSetcontract for efficient provider ID management (#386)- Space-efficient arrayset implementation for sparse provider IDs
- Interface:
getProviderIds(),containsProviderId(),addProviderId(),removeProviderId() - While the contract is generic and can store any set of provider IDs, one specific instance has been designated as the canonical "endorsed set of provider IDs" for FOC, supporting the GA durability requirements by identifying storage providers that meet quality and reliability standards (#357)
- Two-step upgrade announcement flow for ServiceProviderRegistry (#356)
- Automatic deployment address management via
deployments.json(#364) - Devnet deployment support (#373)
- CDN validation in
validatePayerOperatorApprovalAndFunds()(#342)
Changed
- BREAKING: Renamed deployment keys in
deployments.jsonfor consistency (#388)PAYMENTS_CONTRACT_ADDRESS→FILECOIN_PAY_ADDRESSFWS_IMPLEMENTATION_ADDRESS→FWSS_IMPLEMENTATION_ADDRESSWARM_STORAGE_PROXY_ADDRESS→FWSS_PROXY_ADDRESSWARM_STORAGE_VIEW_ADDRESS→FWSS_VIEW_ADDRESS- Added
SIGNATURE_VERIFICATION_LIB_ADDRESS
- BREAKING: Rail settlement required before dataset deletion (#377)
dataSetDeleted()now blocked untilsettledUpTo >= endEpoch- Prevents SPs from deleting datasets before clients can settle
- Added
RailNotFullySettlederror
- BREAKING: Removed redundant PDP config getters from view contract (#372)
- Removed:
challengeWindow(),getChallengesPerProof(),getMaxProvingPeriod() - Use
getPDPConfig()instead (perIPDPProvingScheduleinterface)
- Removed:
- Rail rate automatically modified when
piecesAdded()is called (#365) - Deferred rate recalculation to piece operations for efficiency (#381)
- Replaced Filfox with Blockscout as default block explorer (#349)
Fixed
- Piece metadata now properly cleaned up on scheduled removals (#343)
- Ignore errors when CDN rails already terminated via FilecoinPay (#385)
- Deploy warm storage only script fix (#348)
Documentation
- FWSS upgrade process documentation (UPGRADE-PROCESS.md)
- Pricing model specification document (#366)
- Added precision loss documentation for minimum rate calculation (#378)
- Clarified rate change semantics after termination
- Added v1.0.0 release links to README (#344)
v1.0.0 - FWSS Release
This is the General Availability (GA) release of the Filecoin Warm Storage Service (FWSS) contracts.
Core Contracts - Mainnet
- Payments Contract: 0x23b1e018F08BB982348b15a86ee926eEBf7F4DAa
- From Filecoin-Pay v1.0.0
- PDPVerifier Implementation: 0xe2Dc211BffcA499761570E04e8143Be2BA66095f
- From PDP v3.1.0
- PDPVerifier Proxy: 0xBADd0B92C1c71d02E7d520f64c0876538fa2557F
- From PDP v3.1.0
- SessionKeyRegistry: 0x74FD50525A958aF5d484601E252271f9625231aB
- ServiceProviderRegistry Implementation: 0xe255D3a89D6B326b48bc0fC94a472A839471D6B0
- ServiceProviderRegistry Proxy: 0xf55dDbf63F1b55c3F1D4FA7e339a68AB7b64A5eB
- FilecoinWarmStorageService Implementation: 0xd60b90f6D3C42B26a246E141ec701a20Dde2fA61
- FilecoinWarmStorageService Proxy: 0x8408502033C418E1bbC97cE9ac48E5528F371A9f
- FilecoinWarmStorageServiceStateView: 0x9e4e6699d8F67dFc883d6b0A7344Bd56F7E80B46
Configuration:
- USDFC Token: 0x80B98d3aa09ffff255c3ba4A241111Ff1262F045
- FILBEAM_BENEFICIARY_ADDRESS: 0x1D60d2F5960Af6341e842C539985FA297E10d6eA
- FILBEAM_CONTROLLER_ADDRESS: 0x5f7E5E2A756430EdeE781FF6e6F7954254Ef629A
- CHALLENGE_FINALITY: 150 epochs
- MAX_PROVING_PERIOD: 2880 epochs
- CHALLENGE_WINDOW_SIZE: 20 epochs
- Service Name: "Filecoin Warm Storage Service - Mainnet GA Release"
- Service Description: "Mainnet FWSS GA contracts"
Core Contracts - Calibration Network
- Payments Contract: 0x09a0fDc2723fAd1A7b8e3e00eE5DF73841df55a0
- From Filecoin-Pay v1.0.0
- PDPVerifier Implementation: 0x2355Cb19BA1eFF51673562E1a5fc5eE292AF9D42
- From PDP v3.1.0
- PDPVerifier Proxy: 0x85e366Cf9DD2c0aE37E963d9556F5f4718d6417C
- From PDP v3.1.0
- SessionKeyRegistry: 0x518411c2062E119Aaf7A8B12A2eDf9a939347655
- ServiceProviderRegistry Implementation: 0xb32Bb530638d20f1B59B40CDD2Ce4208430f7DE3
- ServiceProviderRegistry Proxy: 0x839e5c9988e4e9977d40708d0094103c0839Ac9D
- FilecoinWarmStorageService Implementation: 0x1cAeE5EfCfc3681C2bBF689Ccb30d70c6e45F49f
- FilecoinWarmStorageService Proxy: 0x02925630df557F957f70E112bA06e50965417CA0
- FilecoinWarmStorageServiceStateView: 0xA5D87b04086B1d591026cCE10255351B5AA4689B
Configuration:
- USDFC Token: 0xb3042734b608a1B16e9e86B374A3f3e389B4cDf0
- FILBEAM_BENEFICIARY_ADDRESS: 0x1D60d2F5960Af6341e842C539985FA297E10d6eA
- FILBEAM_CONTROLLER_ADDRESS: 0x5f7E5E2A756430EdeE781FF6e6F7954254Ef629A
- CHALLENGE_FINALITY: 10 epochs
- MAX_PROVING_PERIOD: 240 epochs
- CHALLENGE_WINDOW_SIZE: 20 epochs
- Service Name: "Filecoin Warm Storage Service - Calibration GA Release"
- Service Description: "Calibration FWSS GA contracts"
Added
- EXTRA_DATA size limits for enhanced security (#313)
- Floor price set to 0.06 USDFC/month (#320)
- Random nonces for AddPieces operations (#317)
- Relaxed constraints on
setViewContract(#310) - Auto-verify contracts after deployment (#272)
- Regression tests for dataset cleanup (#276)
- Export Errors ABI (#329)
Changed
- BREAKING: Simplified
DataSetStatusenum from 3 states to 2 states (#314)- Old values:
NotFound (0),Active (1),Terminating (2) - New values:
Inactive (0),Active (1) - Migration:
NotFound→Inactive(non-existent datasets)Terminating→Active(terminated datasets with pieces are still Active)- Use
pdpEndEpochto check if a dataset is terminated
- Details:
Inactiverepresents non-existent datasets or datasets with no pieces yet.Activerepresents all datasets with pieces, including terminated ones. - Use
getDataSetStatusDetails()to check termination status separately from Active/Inactive status
- Old values:
- BREAKING: ServiceProviderRegistry Bloom Schema refactor (#308)
- Removed encoded
productData; all product attributes now use capability key-value store - Keys are
string, values arebytes - Migration for synapse and curio:
- All
productInfopreviously ABI-encoded is removed. Use capability key-value store instead. Encode unsigned integers as big-endian, addresses asbytes[20], strings as UTF-8. - Replace
getPDPOffering()withgetAllProductCapabilities()to retrieve product info getActiveProvidersByProductType()andgetProvidersByProductType()now returnproductCapabilityValuesinProviderWithProduct[]getProductCapabilities()no longer returnsexistsbool arraygetProductCapability()is removed; useproductCapabilitiesmapping insteadupdatePDPServiceWithCapabilities()is removed; useupdateProduct()instead- Capability values cannot be empty; exclude the key if product lacks the capability
- All
- Contract size reduced from 21,290 to 17,751 bytes (-3,539 bytes)
- Removed encoded
- BREAKING: Non-sequential
clientDataSetId(#265)- Changed from sequential counter to mapping-based non-sequential IDs
- Migration: Clients can now create datasets with any unique
clientDataSetIdvalue, removing the sequential bottleneck - Added
DataSetIdAlreadyExistserror for duplicate IDs
- BREAKING: Renamed Payments contract to FilecoinPayV1 (#293)
- Migration: Update all contract references from
PaymentstoFilecoinPayV1 - ABI file renamed:
Payments.abi.json→FilecoinPayV1.abi.json - Deployment scripts and documentation updated
- Migration: Update all contract references from
- BREAKING: ServiceProviderRegistry events now emit raw productData (#294)
- Removed
serviceUrlargument from Product events - Migration: Parse
serviceUrlfrom rawproductDataif needed - Events now more portable and forward-compatible with future product types
- Removed
- BREAKING: ServiceProviderRegistry deletes removed product data (#295)
- Changed behavior: Product data is now properly cleaned up when removed
- Migration: Use
isActiveto detect if product exists, not presence of data fields
- Calibnet: Reduced
DEFAULT_CHALLENGE_WINDOW_SIZEfrom 30 epochs to 20 epochs for faster testing iteration (#327) - Made storage pricing and minimum rate mutable storage variables instead of immutable constants (#325)
- Made FWSS permissionless by removing provider approval checks (#302)
- CDN pricing changed from monthly to usage-based egress model (#324)
- Use constant typehash instead of rehashing for EIP-712 signatures (#315)
- Burn mechanism now uses FVMPay (#296)
- SignatureVerificationLib refactored to use delegate pattern (#282)
- Subgraph now uses ...
v0.3.0 - M3 Calibration Network Deployment
Core Contracts
- Payments Contract: 0x6dB198201F900c17e86D267d7Df82567FB03df5E
- From Filecoin-Pay v0.6.0
- PDPVerifier Implementation: 0x4EC9a8ae6e6A419056b6C332509deEA371b182EF
- From PDP v2.2.1
- PDPVerifier Proxy: 0x579dD9E561D4Cd1776CF3e52E598616E77D5FBcb
- From PDP v2.2.1
- SessionKeyRegistry: 0x97Dd879F5a97A8c761B94746d7F5cfF50AAd4452
- ServiceProviderRegistry Implementation: 0x5672fE3B5366819B4Bd2F538A2CAEA11f0b2Aff5
- ServiceProviderRegistry Proxy: 0x1096ba1e7BB912136DA8524A22bF71091dc4FDd9
- FilecoinWarmStorageService Implementation: 0x6B78a026309bc2659c5891559D412FA1BA6529A5
- FilecoinWarmStorageService Proxy: 0x468342072e0dc86AFFBe15519bc5B1A1aa86e4dc
- FilecoinWarmStorageServiceStateView: 0xE4587AAdB97d7B8197aa08E432bAD0D9Cfe3a17F
Configuration:
- USDFC Token: 0xb3042734b608a1B16e9e86B374A3f3e389B4cDf0
- FILBEAM_BENEFICIARY_ADDRESS: 0x1D60d2F5960Af6341e842C539985FA297E10d6eA
- FILBEAM_CONTROLLER_ADDRESS: 0x5f7E5E2A756430EdeE781FF6e6F7954254Ef629A
- CHALLENGE_FINALITY: 10 epochs
- MAX_PROVING_PERIOD: 240 epochs
- CHALLENGE_WINDOW_SIZE: 30 epochs
- Service Name: "Filecoin Warm Storage Service - Calibration M3.1"
- Service Description: "Calibration FWSS contracts for M3.1"
Changed
- ServiceProviderRegistry full redeploy - Required due to state compatibility issues with FilecoinWarmStorageService
- Previous FWSS release (0.2.0) used an old ServiceProviderRegistry; upgrading existing ServiceProviderRegistry would cause state mismatch with FWSS
- ServiceProviderRegistry VERSION updated to 0.3.0 to properly reflect inclusion of providerId struct fix from PR #247
- FilecoinWarmStorageService VERSION string updated to 0.3.0.
- Changed PDPVerifier to v2.2.1 (PDP v2.2.1 release notes)
- Restored
createDataSet()function for enhanced flexibility in dataset initialization, enabling empty "bucket" creation, smoother Curio and synapse-sdk integration (#219)
- Restored
v0.2.0 - M3 Calibration Network Deployment
Core Contracts
Calibration Network:
- Payments Contract: 0x6dB198201F900c17e86D267d7Df82567FB03df5E
- From Filecoin-Pay v0.6.0
- PDPVerifier Implementation: 0xCa92b746a7af215e0AaC7D0F956d74B522b295b6
- From PDP v2.2.0
- PDPVerifier Proxy: 0x9ecb84bB617a6Fd9911553bE12502a1B091CdfD8
- From PDP v2.2.0
- SessionKeyRegistry: 0x97Dd879F5a97A8c761B94746d7F5cfF50AAd4452
- ServiceProviderRegistry Implementation: 0xEdc9A41371d69a736bEfBa7678007BDBA61425E5
- ServiceProviderRegistry Proxy: 0xA8a7e2130C27e4f39D1aEBb3D538D5937bCf8ddb
- FilecoinWarmStorageService Implementation: 0x2d76e3A41fa4614D1840CEB73aa07c5d0af6a023
- FilecoinWarmStorageService Proxy: 0x9ef4cAb0aD0D19b8Df28791Df80b29bC784bE91b
- FilecoinWarmStorageServiceStateView: 0x7175a72479e2B0050ed310f1a49a517C03573547
Configuration:
- USDFC Token: 0xb3042734b608a1B16e9e86B374A3f3e389B4cDf0
- FILBEAM_BENEFICIARY_ADDRESS: 0x1D60d2F5960Af6341e842C539985FA297E10d6eA
- FILBEAM_CONTROLLER_ADDRESS: 0x5f7E5E2A756430EdeE781FF6e6F7954254Ef629A
- CHALLENGE_FINALITY: 10 epochs
- MAX_PROVING_PERIOD: 240 epochs
- CHALLENGE_WINDOW_SIZE: 30 epochs
- Service Name: "Filecoin Warm Storage Service - Calibration M3"
- Service Description: "Calibration FWSS contracts for M3"
Added
- feat: announcePlannedUpgrade (#260)
- feat: Allow deletion of terminated dataset, Add getDataSetStatus (#255)
- feat(ServiceProviderRegistry): add getProvidersByIds batch lookup function (251)
- perf(ServiceProviderRegistry): getProviderPayee helper for dataSetCreated (#249)
- Added ERC-3009 support with new deposit authorization functions (#225)
depositWithAuthorization()for ERC-3009 compliant depositsdepositWithAuthorizationAndApproveOperator()for combined deposit and operator approvaldepositWithAuthorizationAndIncreaseOperatorApproval()for combined deposit and operator allowance increase
- feat: service registry: add providerId to ServiceInfo (#209)
- feat: owner beneficairy seperation without transfer (#191)
- feat: Add dataset termination and deletion status tracking for SDK usability (#146)
- Switch from PieceCIDv2 to v2 (#123)
- perf(provenPeriods): bitmap (#258)
Changed
- Modify CDN payment rails and add methods for usage-based payments (#237)
- BREAKING: Updated Payments contract ABI with breaking changes (#223)
DepositRecordedevent removesusedPermitparameter - event listeners must be updatedrailCancelfunction state mutability changed fromnonpayabletopayable- callers may need to handle potential token transfersPermitRecipientMustBeMsgSendererror replaced withSignerMustBeMsgSendererror - error handling code must be updated
- feat: remove provierId from ServiceProviderInfo struct (#247)
- Adds a
ServiceProviderInfoViewstruct withproviderIdfield for external consumption.
- Adds a
- Breaking: feat!: FilCDN now is FilBeam (#236)
- Breaking: feat!: update service parameters (#239)
- The price changes was temporiarily reverted for this release until a upcoming feature is landed that warranted this change.
- feat: remove dataset creation fee (#245)
- feat: update getClientDataSets to return dataSetId (#242)
- fix: update FilCDN Controller & Beneficiary addresses (#230)
- feat(subgraph): updates based on KV metadata and service provider registry (#189)
- Add emit pieceCid in PieceAdded event (#207)
- fix: Clear withCDN flag when terminating service (#208)
- fix: remove serviceName and serviceDescription properties (#199)
- feat: rename datset termination and emit events for dataset termination and add extradata (#129)
- feat: remove service provider registry as we're moving it to it's own contract (#135)
v0.1.0
Core Contracts: 1. SessionKeyRegistry: 0x97Dd879F5a97A8c761B94746d7F5cfF50AAd4452 2. PDPVerifier Implementation: 0x16b6E7ec316aF33504c8783c73Fb29dC61f6A347 3. PDPVerifier Proxy: 0x445238Eca6c6aB8Dff1Aa6087d9c05734D22f137 4. Payments Contract: 0x1096025c9D6B29E12E2f04965F6E64d564Ce0750 5. ServiceProviderRegistry Implementation: 0xEdc9A41371d69a736bEfBa7678007BDBA61425E5 6. ServiceProviderRegistry Proxy: 0xA8a7e2130C27e4f39D1aEBb3D538D5937bCf8ddb 7. FilecoinWarmStorageService Implementation: 0x88449EcAd119B6c05fa5eFB18C80d86d5781fc10 8. FilecoinWarmStorageService Proxy: 0x80617b65FD2EEa1D7fDe2B4F85977670690ed348 9. FilecoinWarmStorageServiceStateView: 0x87EDE87cEF4BfeFE0374c3470cB3F5be18b739d5 Configuration: - USDFC Token: 0xb3042734b608a1B16e9e86B374A3f3e389B4cDf0 - FilCDN Controller: 0x5f7E5E2A756430EdeE781FF6e6F7954254Ef629A - FilCDN Beneficiary: 0xff0000000000000000000000000000000037385c - Max Proving Period: 30 epochs - Challenge Window Size: 15 epochs - Challenge Finality: 1 - Service Name: "Filecoin Warm Storage Service"