Set pre-commit deposit to uniform value of maximum sector storage pledge (FIP-0034) #290
Replies: 10 comments 27 replies
-
On the network level, PCD is a transitory lock-up (tokens get unlocked into initial pledge soon after at ProveCommit) and only accounts for a very small percentage of the circulating supply. Currently, PCD is set to be just initial storage pledge (20BR), not the full initial pledge. By using 20BR assuming the sector is fully occupied by Filecoin Plus deals makes SPs more indifferent between CC and FIL+, hence encouraging more SPs to take on FIL+ deals. It also further reduces token velocity on a macro level (despite not by much). It may increase the cashflow burden for SPs by requiring a bigger reserve for PCD. However, it does not make a difference if the SPs are taking FIL+ deals anyways and the amount locked in PCD will soon be released for initial pledge (which is still higher than PCD after the proposed change). Note that this proposal will also subtly increase the network bandwidth/TPS further (unclear by the amount) since the PreCommit operation becomes cheaper. |
Beta Was this translation helpful? Give feedback.
-
I have drafted a FIP here: #307 One possible variation, not explored in the draft, would be to allow a provider to specify a lower PCD value for a sector (e.g. 2x theCC value rather than 10x), in return for being prevented from proving the sector with power greater than the PCD they staked. In the case of pure CC sectors, this means they could nominate to keep the old PCD, but then must have 1x verified deal weight when proving. We might even be able to do so without storing additional state. @nicola @irenegia I would like to discuss this with you to understand if it introduces an incentive to cheat. In fact, for the special case of a sector with no deals, we could detect this at pre-commit (because no deal IDs are provided) and automatically lower the requirement, without consulting the market actor. But note that in my proposed new architecture for programmable markets #298, the miner wouldn't get deal ID (or FIL+ data cap allocation IDs) until PoRep anyway. |
Beta Was this translation helpful? Give feedback.
-
About FIP #307 (as described in the first message), it is fine no security issues with it, but I would like to propose an edited version.
|
Beta Was this translation helpful? Give feedback.
-
An alternative to taking the maximum possible sector quality is to allow Storage Providers to declare the sector quality they will use during the ProveCommit stage. This would take the form of accepting an additional parameter to PreCommit The safe strategy is to set the The |
Beta Was this translation helpful? Give feedback.
-
One adjustment that has to be made is CommD needs to be "revealed" during PreCommit. Today, this is enforced by verifying deals during PreCommit, which forces reveal their CommPs and sizes which reveals CommD. With this proposal, DealIDs won't be checked up until ProveCommit, which means someone could report DealIDs that are currently not allocated and then allocate them after randomness is revealed, thus allowing for grinding on ReplicaID. I propose that in addition to DealIDs, CommD of the sector is included in the PreCommit message. This change necessitates adding two methods ( During ProveCommit, CommD should be recalculated from PieceInfos, and compared to the one committed to during PreCommit. In theory, DealIDs could be moved to the ProveCommit message, but that would require changes to params of |
Beta Was this translation helpful? Give feedback.
-
Code is WIP at filecoin-project/specs-actors#1575 (thanks @Kubuxu 🏆 ) |
Beta Was this translation helpful? Give feedback.
-
I have updated the FIP draft after feedback from the Lotus team.
|
Beta Was this translation helpful? Give feedback.
-
This FIP (FIP-0034) is moved to Last Call on July 13th and will remain in Last Call through end-of-day on Wednesday, July 27. Core devs and the community should review the FIP and raise any concerns before then. |
Beta Was this translation helpful? Give feedback.
-
Things that might impact last call here |
Beta Was this translation helpful? Give feedback.
-
this will slow down on boarding as FIL will be unavailable to a greater extend. just saying. there seem to be people wondering why on boarding went down when the gas usage was raised in the last upgrade - this FIP will do the same. |
Beta Was this translation helpful? Give feedback.
-
A pre-commit deposit (PCD) is an amount staked by a provider between the pre-commit and prove-commit stages of sector onboarding. It secures PoRep by making attempts to cheat very expensive, and so irrational on expectation.
The PCD value is currently set approximately equal to the sector's initial pledge. Re-use of the initial pledge calculation was originally for conceptual simplicity, but also serves to ensure the provider always has sufficient pledge at PoRep, because they have just unlocked a slightly greater amount from PCD.The PCD value is set approximately equal to the sector storage pledge (approximately because the true initial pledge value depends on the activation epoch, which is not yet known). When the sector is committed, the provider must then stake the sector initial pledge (a greater amount).A sector's initial pledge is made up of "storage pledge" and "consensus pledge". Roughly:
As of January 2022, for a 32GiB sector these calculations give (also roughly):
Using storage pledge as PCD causes a notable design/efficiency problem:
The storage pledge value makes up just 8.6% of the initial pledge that will be required to commit the sector today. In general, we expect this proportion to continue to fall, as (a) storage pledge decreases as the expected reward to a fixed-size sector in a growing network falls, and (b) consensus pledge rises as the circulating supply expands.
Proposal
Calculate pre-commit deposit as the 20-day projection of expected reward earned by a sector with a sector quality of 10 (i.e. full of verified deals), regardless of sector content. Continue to require the full initial pledge when the sector is proven.
This proposal sets a uniform pre-commit deposit regardless of sector content. The PCD is set for the "worst case" of a sector that is fully occupied by verified deals. This is more than the current pre-commit deposit requirement for CC sectors, but still less than the initial pledge that will be required on PoRep. Removing consideration of sector content from the calculation will remove the need to load deal information from the market actor for pre-commit, only to load it again at PoRep. This in turn simplifies the interactions necessary between the miner, market and FIL+ verified registry actors when onboarding sectors, which makes it easier to refactor these interactions to allow alternative storage markets to be implemented on the FVM (see #241). In particular, deal information is only required at PoRep time, to compute QA-power.
Discussion
Following from the numbers above, this would set PCD equal to
0.1285
(the storage pledge for quality=10) for all sectors. This is approximately 10x larger for CC sectors, but no change for fully-verified sectors.For CC sectors, this deposit would be significantly more than that strictly required by PoRep security, but I think the uniformity and simplicity enabled by ignoring deals is worthwhile. A slightly more complex scheme could allow the provider to, say, commit to some maximum sector quality at pre-commit (without specifying the actual deals involved), and thus put a smaller deposit at risk.
Since PCD is a time-limited deposit, the sum of PCD across the system makes up a very small part of the money supply. Increasing it will have only a negligible effect on the circulating supply.
This proposal is a pre-requisite for a larger actor architectural change I intend to propose shortly.
@nicola @zixuanzh @arajasek
[Edited 2022-02-08 to resolve incorrect statement about the current calculation]
Beta Was this translation helpful? Give feedback.
All reactions