Skip to content

Releases: FilOzone/filecoin-services

FWSS v1.1.0

30 Jan 16:17
e485aba

Choose a tag to compare

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

  • ProviderIdSet contract 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.json for consistency (#388)
    • PAYMENTS_CONTRACT_ADDRESSFILECOIN_PAY_ADDRESS
    • FWS_IMPLEMENTATION_ADDRESSFWSS_IMPLEMENTATION_ADDRESS
    • WARM_STORAGE_PROXY_ADDRESSFWSS_PROXY_ADDRESS
    • WARM_STORAGE_VIEW_ADDRESSFWSS_VIEW_ADDRESS
    • Added SIGNATURE_VERIFICATION_LIB_ADDRESS
  • BREAKING: Rail settlement required before dataset deletion (#377)
    • dataSetDeleted() now blocked until settledUpTo >= endEpoch
    • Prevents SPs from deleting datasets before clients can settle
    • Added RailNotFullySettled error
  • BREAKING: Removed redundant PDP config getters from view contract (#372)
    • Removed: challengeWindow(), getChallengesPerProof(), getMaxProvingPeriod()
    • Use getPDPConfig() instead (per IPDPProvingSchedule interface)
  • 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

02 Nov 15:22
980e25a

Choose a tag to compare

This is the General Availability (GA) release of the Filecoin Warm Storage Service (FWSS) contracts.

Core Contracts - Mainnet

  1. Payments Contract: 0x23b1e018F08BB982348b15a86ee926eEBf7F4DAa
  2. PDPVerifier Implementation: 0xe2Dc211BffcA499761570E04e8143Be2BA66095f
  3. PDPVerifier Proxy: 0xBADd0B92C1c71d02E7d520f64c0876538fa2557F
  4. SessionKeyRegistry: 0x74FD50525A958aF5d484601E252271f9625231aB
  5. ServiceProviderRegistry Implementation: 0xe255D3a89D6B326b48bc0fC94a472A839471D6B0
  6. ServiceProviderRegistry Proxy: 0xf55dDbf63F1b55c3F1D4FA7e339a68AB7b64A5eB
  7. FilecoinWarmStorageService Implementation: 0xd60b90f6D3C42B26a246E141ec701a20Dde2fA61
  8. FilecoinWarmStorageService Proxy: 0x8408502033C418E1bbC97cE9ac48E5528F371A9f
  9. FilecoinWarmStorageServiceStateView: 0x9e4e6699d8F67dFc883d6b0A7344Bd56F7E80B46

Configuration:

Core Contracts - Calibration Network

  1. Payments Contract: 0x09a0fDc2723fAd1A7b8e3e00eE5DF73841df55a0
  2. PDPVerifier Implementation: 0x2355Cb19BA1eFF51673562E1a5fc5eE292AF9D42
  3. PDPVerifier Proxy: 0x85e366Cf9DD2c0aE37E963d9556F5f4718d6417C
  4. SessionKeyRegistry: 0x518411c2062E119Aaf7A8B12A2eDf9a939347655
  5. ServiceProviderRegistry Implementation: 0xb32Bb530638d20f1B59B40CDD2Ce4208430f7DE3
  6. ServiceProviderRegistry Proxy: 0x839e5c9988e4e9977d40708d0094103c0839Ac9D
  7. FilecoinWarmStorageService Implementation: 0x1cAeE5EfCfc3681C2bBF689Ccb30d70c6e45F49f
  8. FilecoinWarmStorageService Proxy: 0x02925630df557F957f70E112bA06e50965417CA0
  9. FilecoinWarmStorageServiceStateView: 0xA5D87b04086B1d591026cCE10255351B5AA4689B

Configuration:

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 DataSetStatus enum from 3 states to 2 states (#314)
    • Old values: NotFound (0), Active (1), Terminating (2)
    • New values: Inactive (0), Active (1)
    • Migration:
      • NotFoundInactive (non-existent datasets)
      • TerminatingActive (terminated datasets with pieces are still Active)
      • Use pdpEndEpoch to check if a dataset is terminated
    • Details: Inactive represents non-existent datasets or datasets with no pieces yet. Active represents all datasets with pieces, including terminated ones.
    • Use getDataSetStatusDetails() to check termination status separately from Active/Inactive status
  • BREAKING: ServiceProviderRegistry Bloom Schema refactor (#308)
    • Removed encoded productData; all product attributes now use capability key-value store
    • Keys are string, values are bytes
    • Migration for synapse and curio:
      1. All productInfo previously ABI-encoded is removed. Use capability key-value store instead. Encode unsigned integers as big-endian, addresses as bytes[20], strings as UTF-8.
      2. Replace getPDPOffering() with getAllProductCapabilities() to retrieve product info
      3. getActiveProvidersByProductType() and getProvidersByProductType() now return productCapabilityValues in ProviderWithProduct[]
      4. getProductCapabilities() no longer returns exists bool array
      5. getProductCapability() is removed; use productCapabilities mapping instead
      6. updatePDPServiceWithCapabilities() is removed; use updateProduct() instead
      7. Capability values cannot be empty; exclude the key if product lacks the capability
    • Contract size reduced from 21,290 to 17,751 bytes (-3,539 bytes)
  • BREAKING: Non-sequential clientDataSetId (#265)
    • Changed from sequential counter to mapping-based non-sequential IDs
    • Migration: Clients can now create datasets with any unique clientDataSetId value, removing the sequential bottleneck
    • Added DataSetIdAlreadyExists error for duplicate IDs
  • BREAKING: Renamed Payments contract to FilecoinPayV1 (#293)
    • Migration: Update all contract references from Payments to FilecoinPayV1
    • ABI file renamed: Payments.abi.jsonFilecoinPayV1.abi.json
    • Deployment scripts and documentation updated
  • BREAKING: ServiceProviderRegistry events now emit raw productData (#294)
    • Removed serviceUrl argument from Product events
    • Migration: Parse serviceUrl from raw productData if needed
    • Events now more portable and forward-compatible with future product types
  • BREAKING: ServiceProviderRegistry deletes removed product data (#295)
    • Changed behavior: Product data is now properly cleaned up when removed
    • Migration: Use isActive to detect if product exists, not presence of data fields
  • Calibnet: Reduced DEFAULT_CHALLENGE_WINDOW_SIZE from 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 ...
Read more

v0.3.0 - M3 Calibration Network Deployment

08 Oct 22:15
7b28dec

Choose a tag to compare

Core Contracts

  1. Payments Contract: 0x6dB198201F900c17e86D267d7Df82567FB03df5E
  2. PDPVerifier Implementation: 0x4EC9a8ae6e6A419056b6C332509deEA371b182EF
  3. PDPVerifier Proxy: 0x579dD9E561D4Cd1776CF3e52E598616E77D5FBcb
  4. SessionKeyRegistry: 0x97Dd879F5a97A8c761B94746d7F5cfF50AAd4452
  5. ServiceProviderRegistry Implementation: 0x5672fE3B5366819B4Bd2F538A2CAEA11f0b2Aff5
  6. ServiceProviderRegistry Proxy: 0x1096ba1e7BB912136DA8524A22bF71091dc4FDd9
  7. FilecoinWarmStorageService Implementation: 0x6B78a026309bc2659c5891559D412FA1BA6529A5
  8. FilecoinWarmStorageService Proxy: 0x468342072e0dc86AFFBe15519bc5B1A1aa86e4dc
  9. FilecoinWarmStorageServiceStateView: 0xE4587AAdB97d7B8197aa08E432bAD0D9Cfe3a17F

Configuration:

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)

v0.2.0 - M3 Calibration Network Deployment

07 Oct 08:57
6c26081

Choose a tag to compare

Core Contracts

Calibration Network:

  1. Payments Contract: 0x6dB198201F900c17e86D267d7Df82567FB03df5E
  2. PDPVerifier Implementation: 0xCa92b746a7af215e0AaC7D0F956d74B522b295b6
  3. PDPVerifier Proxy: 0x9ecb84bB617a6Fd9911553bE12502a1B091CdfD8
  4. SessionKeyRegistry: 0x97Dd879F5a97A8c761B94746d7F5cfF50AAd4452
  5. ServiceProviderRegistry Implementation: 0xEdc9A41371d69a736bEfBa7678007BDBA61425E5
  6. ServiceProviderRegistry Proxy: 0xA8a7e2130C27e4f39D1aEBb3D538D5937bCf8ddb
  7. FilecoinWarmStorageService Implementation: 0x2d76e3A41fa4614D1840CEB73aa07c5d0af6a023
  8. FilecoinWarmStorageService Proxy: 0x9ef4cAb0aD0D19b8Df28791Df80b29bC784bE91b
  9. FilecoinWarmStorageServiceStateView: 0x7175a72479e2B0050ed310f1a49a517C03573547

Configuration:

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 deposits
    • depositWithAuthorizationAndApproveOperator() for combined deposit and operator approval
    • depositWithAuthorizationAndIncreaseOperatorApproval() 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)
    • DepositRecorded event removes usedPermit parameter - event listeners must be updated
    • railCancel function state mutability changed from nonpayable to payable - callers may need to handle potential token transfers
    • PermitRecipientMustBeMsgSender error replaced with SignerMustBeMsgSender error - error handling code must be updated
  • feat: remove provierId from ServiceProviderInfo struct (#247)
    • Adds a ServiceProviderInfoView struct with providerId field for external consumption.
  • Breaking: feat!: FilCDN now is FilBeam (#236)
  • Breaking: feat!: update service parameters (#239)
  • 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

09 Oct 05:52
e680057

Choose a tag to compare

v0.1.0 Pre-release
Pre-release
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"