|Remove Storage Miner Actor Method `ProveCommitSectors`
Remove Storage Miner Actor Method
ProveCommitSector (method 7) in favor of
ProveCommitSectors3 (method 34) and
ProveCommitAggregate. This change ensures that single PoRep validations and single sector activations are executed synchronously and billed to the caller, instead of being executed asynchronously via a cron call to the actor.
ProveCommitSector accepts a single PoRep proof for an individual sector, validates the proof, and activates the sector along with the deals inside it via a cron call to the power actor. In contrast, when submitting an aggregated PoRep with
ProveCommitAggregate, all proof validation and sector activation are executed synchronously and the costs are billed to the caller. This creates an imbalance in the sector activation gas subsidy available to different onboarding methods, and also adds unnecessary work to unpaid network cron jobs.
FIP-0076 provides an alternative, synchronous activation path for non-aggregated proofs. This proposal subsequently removes the ProveCommitSector method once and thus the imbalance.
Since the FVM launch, all computations are properly charged and it has become evident that even below the batch balancer base fee threshold, the per sector commit cost via
ProveCommitAggregate is higher than
The chain explicitly charge gas (discounted) for the single proof validation when it is submitted, so it’s both bounded and paid for. However, the state updates associated with sector activation are not metered, because they execute in cron. The execution cost of this activation varies significantly with the deal content of the sector, but the storage provider doesn’t pay gas for this. On the other hand, aggregated proof validation also activates the sector synchronously, for which the SP pays the gas cost. Thus, single-sector onboarding is subsidized relative to aggregation, but aggregation would otherwise efficiently support much higher onboarding rates. The proposed change will resolve the imbalanced cost of sector activation using different onboarding methods and make proof aggregation financially sensible again.
In addition, the activation jobs are being executed in cron which means the chain is subsidi[sz]ing the job cost. This is not a desirable subsidy incentive as it leads to the inefficient use of the chain validation resources by discouraging aggregation of proofs. Thus, the proposed the change also removes unnecessary yet expensive sector and deal activation work from the network cron, which prevents the network from potential cron blowup in the long term as well.
There are other ways to achieve our goal, like modifying
ProveCommitSector to activate sectors and deals synchronously. However, with FIP-0076 introducing an alternative method that allows activating sectors with non-aggregated proof synchronously with other richer functionalities, along with the existence of
ProveCommitAggregate that also allows synchronous activation, the old method is redundant and does not bring much onto the table. Therefore, reducing to one way and dropping the limitted pathway
ProveCommitSector to redduce actor code complexity, implementation friction and risk and etc is preferred.
The deprecation of this method MUST happen after the methods from FIP-0076 are available in the network and adopted by the clients.
This proposal requires a network upgrade to deploy the new built-in actor code.
ProveCommitSector will fail with USR_UNHANDLED_MESSAGE.
This FIP avoids single PoRep proof verification in cron, which reduces the free computations that are occupying the network bandwidth and the possibility of unexpected network performance issues.
This FIP will enforce storage activation fees to be paid by the callers rather than having an imbalanced network subsidy. This means storage providers who only onboard sectors via
ProveCommitSector will start to pay for sector proof validation and sector/deal activation, which is a gas cost increase from ~71M to ~196M based on the current implementation. However, the activation cost is expected to be lower with the direct data onboarding flow via the
ProveCommitSectors2 method, and storage providers and their data clients may opt-out of f05 deal activation, which would result in significantly lower gas cost.
All features provided by Filecoin continue to function as expected. Having only one entry point for onoarding non-aggregated sectors is simpler than two for both implementations & SP stack integrations & support.
Please cite this document as:
Jennifer Wang, "FIP-0084: Remove Storage Miner Actor Method `ProveCommitSectors`," Filecoin Improvement Proposals, no. 0084, September 2023. [Online serial]. Available: https://fips.filecoin.io/fips/fip-0084.