fip | title | author | discussions-to | status | type | category | created | requires |
---|---|---|---|---|---|---|---|---|
0084 |
Remove Storage Miner Actor Method `ProveCommitSectors` |
Jennifer Wang (@jennijuju) |
Final |
Technical |
Core |
2023-09-03 |
FIP-0076 |
Remove 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.
Currently, 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 ProveCommitSector
.
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.
Drop the ProveCommitSector
function.
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.
Calling 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.
Note: Calling ProveCommitSector
after this FIP is finalized in an upgrade should fail with some user error message, i.e: METHOD_NOT_FOUND.
As mentioned, this FIP is dependent on FIP-0076 and precisely, the introduction of the ProveCommitSectors3
method. It will be sensible to only finalize this FIP after the ProveCommitSector3
has been finalized in the network and used in production, and proven to be functional as expected.
Copyright and related rights waived via CC0.