Simple Summary
Non Interactive PoRep (NI-PoRep) protocol merges PreCommit and ProveCommit in a unique step simplyfying the PoRep pipeline, eliminating thew wait (150 epochs) between PreCommit and storage overhead. NI-PoRep has no impact on security, at the cost of ~ 8x proving overhead.
Abstract
NI-PoRep removes the need to submit PreCommit and allows to have a unique message for proving new sectors (eg, only a message similar to the current ProveCommit is needed). Challenge generation happens locally and thus there is no need of having PreCommit messages on chain. Notably, the removal of PreCommit would also remove the need for the PreCommitDeposit and for keeping around extra data for the time from PreCommit to ProveCommit.
Motivation
TODO Draft:
NI-PoRep would be highly beneficial in terms of improving porep pipeline, easing the birth of a Sealing as a Service market which could be decentralized without need of trust between Sealing as a Service Provider and Client (No need of a PreCommit step translates into no need of PreCommit deposit, which would ease CC sector sealing outsourcing).
Specification
High Level Protocol Flow - wip
The protocol can be summarized as follows:
- Graph Labelling and commitments (similar to the current preCommit1 and preCommit2 computation)
- Using
CommD
, the SP computes a the labels for all layers and the replica R; - The SP computes the column commitments,
CommC
,CommR
and finally computesCommCR=Poseidon_2(CommC, CommR)
; - Storage Provider locally generates
NI_ChallengesNumber
challenges and vanilla proofs; ch_i = H(commCR, tag, i)
;- TODO (@irene, @luca) : check if we need to include commD here
- The SP computes responses for all the
NI_ChallengesNumber
challenges, which take the form ofNI_ChallengesNumber
vanilla proofs; - Storage Provider publishes the new NI_ProveCommitSector proof
- The SP takes the
NI_ChallengesNumber
vanilla proofs and computes the corresponding SNARK proofs for these challenges. - The SP publishes the snark and commitment
CommCR
(either in individual or aggregated form). - Note in this step the SP will, by default, use the SnarkPack aggregation technique to prove even only one sector (see “product considerations” section for the motivation).
- Chain verifies proof
- Using
CommCR
as a seed, the chain generatesNI_ChallengesNumber
challenges and this are fed into proof verification.
Rationale
TODO
The rationale fleshes out the specification by describing what motivated the design and why particular design decisions were made. It should describe alternate designs that were considered and related work, e.g. how the feature is supported in other languages. The rationale may also provide evidence of consensus within the community, and should discuss important objections or concerns raised during discussion.
Backwards Compatibility
NI-PoRep would be a separate proof type with a different on-chain flow as current PoRep. It would not require a new trusted setup.
Test Cases
Will be included with implementation to be presented.
Security Considerations
NI-PoRep is based on the well-known Fiat-Shamir Heuristic, which allows for having a non interactive protocol starting from any 3-message interactive protocol. However, the heuristic requires the interactive protocol to have 80 bits of security (instead of the current 10). This means that for NI-PoRep we need 8x challenges compared to the current interactive PoRep protocol to ensure no loss in security with respect to the status quo. Therefore NI_ChallengesNumber
= 1760.
Product Considerations
The increased number of challenges brings over an additional proving overhead, which we partially (on chain footprint and verification) mitigate using SnarkPack. From the SnarkPack paper, we can estimate that SnarkPack proof size amortization will kick in when sealing at least 2 sectors. While, in terms of the verification even one NI-PoRep already benefits from SnarkPack (note that the more sector you seal at a time, the better the amortization becomes). With respect to the status quo, the new costs will be:
- Proving cost:
- 8x snark cost compared with today (80 groth16 snarks instead of 10)
- SnarkPack aggregation cost: this cost is logarithmic, so log(80) ~ 6.7
- Verification cost: it is the SnarkPack cost (counting each NI-PoRep sector as 8 sectors with the current proof system), comparable to
aggregatedproveCommit
today. - Proof size: comparable to today.
- From the paper: breakeven at ~130 proofs (23Kb for SnarkPack proof Vs 24kb for 130 Groth 16 proofs). It follows that this approach starts being meaningful regarding proof size when sealing 2 sectors together (Single Groth 16 proof is ~0.2Kb)
⇒ Total proving overhead: 8.7x
Incentive Considerations
We think that this proposal does not affect the current incentive system of the Filecoin network.
Implementations
TODO
Copyright Waiver
Copyright and related rights waived via CC0.