Filecoin聚合扇区

发布时间:2019年03月11日 价值:20000.00 / 共识:24

Filecoin聚合扇区

作者:Nicola

上下文

扇区: 一个扇区是一个存储单元,矿工通过该单元执行复制证明,以说服网络及其客户将物理存储专用于他们承诺存储的数据。

挖矿周期:矿工将来自存储市场的数据存储在一个扇区中。当矿工填补该扇区时,他们就会密封该扇区。然后,矿工将原始数据的(1)加密承诺commD和(2)密封数据commR发布到链中。此外,该矿工提交了一个令人信服的证据,证明背后的数据commR是对数据的正确编码commD。这个过程被称为Sector Commitment。

当前采矿周期的吞吐量问题:对于每个密封的扇区,矿工必须至少提交由证明,commD和commR组成的大约300字节的扇区承诺。对于较小的扇区大小,这是一个问题:

  • 存储入门的瓶颈:根据我们的Filecoin吞吐量计算器,这是我们可以随时携带的存储量的瓶颈。
  • 添加存储成本高昂:矿工必须为每个存储提交支付交易费用(由于需要添加数据的大小,这可能很昂贵)。
  • TODO:我可能还有其他一些重要的问题,请补充一下。

提出的解决方案

有两种主要的策略来绕过存储的onboarding吞吐量:

  • 提案1:增加扇区规模
  • 提案2:聚合扇区承诺
  • 提案3:通过“聚合器节点”汇总扇区承诺
  • 提案4:整个存储的一个密封
  • 提案5:使PoSts证明密封编码
  • 提案6:成功开采块的密封证明

提案1:增加扇区规模

该策略是通过增加扇区大小(常量T)来增加存储容量T。例如,为了增加20倍以上的存储空间,我们可以拥有20倍的更大扇区,因此一个存储承诺扩大了20倍。

它是如何工作的?

构造: PoRep中的简单参数更改。

证明大小: commD(32字节)+ commR(32字节)+ 校样(192 字节)

优点和缺点与未知

优点:

简单的协议:保持协议不变(这只是一个参数变化!)。
更小循环:证明循环以PoRep扇区的大小对数增长。换句话说,较大的扇区不会影响证循环。
单个过程:密封只需要一个处理单元(例如CPU)来密封大扇区

缺点:

等待时间:矿工将不得不等待T时间来自存储市场的数据填充该扇区(比原来的大得多)。

未知:

复制时间慢:扇区的最小复制时间取决于数据的大小。我们可能需要一个扇区大小,其最小复制时间对于Filecoin是不可接受的。

提案2:聚合扇区承诺

策略是通过将T个扇区通过一个提交一个单一的扇区承诺,这样来增肌爱存储吞吐。例如,为了使吞吐存储量增加20倍,我们可以封存20个不同的扇区,并将其存储承诺汇总到一个承诺而不是20个。

它是如何工作的?

矿工T并行运行密封,完成后,使用以下策略之一,生成单个部门承诺。链接commDAgg和commRAgg发布链是所有聚合的commDs和commRs的向量承诺。

策略1:一个简单的证明循环

构造:

  • 密封证明循环在循环中是重复T次。
  • 证明commRAgg构造正确。

证明大小: commD(32字节)+ commR(32字节)+ 校样(192 字节)

注1:由于单个证明循环已经相当大,如果T太大,这种策略可能不实用。通过使用Hyrax或DIZK等系统可以解决大循环问题。

策略2:隐藏CommR的有界引导

构造:我们有两个证明循环:

  • 循环1:证明单个密封扇区的循环。
  • 循环2:证明这一点的循环
    • 循环1的T个密封扇区证明是正确的。
    • 检查commR要聚合的所有个体是否不同,之前从未聚合并由正确生成minerID
    • 检查commRAgg是否构造正确

请注意,如果T太大,则循环2可能太大(因此执行速度慢或不切实际)。

证明大小:* commD(32字节)+ commR(32字节)+ 校样(192字节)

策略3:暴露了CommR的有界引导

第二次检查循环2可能很复杂,或者很昂贵。该策略等同于策略2,除了所有commRs都是公共的并且在循环之外检查它们的唯一性

证明大小: commD(32字节)+ T commR(32字节)+ 校样(192字节)

优点和缺点与未知

优点:

  • 可并行化:每个密封的编码可以并行化(因此我们可以实现非常快的密封时间)

缺点:

  • 处理能力:此提案与现状(1GB扇区)完全相同,但需要比提案1更多的处理能力。
  • 复杂的证据:根据结构(特别是策略2和3),需要更复杂的循环和更复杂的SNARK。
  • 可能不会扩展:最实用的策略(策略3)要求T commR在链上发布。
  • 等待时间:T在链上发布承诺之前,矿工必须等待填补扇区。

提案3:通过“聚合器节点”汇总扇区承诺

该提议类似于提案2:不同的存储矿工聚合他们自己的扇区,不同的存储矿工将他们的承诺发送到“聚合器节点”,聚合它们并将它们发布到链上。该解决方案解决了“等待时间”的问题。

有两种策略:

  • 策略1:一个单独的证明循环
  • 策略2:暴露了CommR的有界引导
优点和缺点与未知

优点:

  • 矿工不进行聚合
  • 对于矿工来说没有密封SNARK:使用策略1(以及一些技巧策略2),矿工将不必运行SEAL SNARK,因为他们可以将其委托给SNARK证明者

缺点:

  • 复杂的证明:根据结构(特别是策略2),需要更复杂的循环和更复杂的SNARK。
  • 可能不会扩展:最实用的策略(策略3)要求T commR在链上发布。
  • 激励聚合器节点:为什么节点是“聚合器节点”?

提案4:整个存储的一个密封

我们的想法是为整个存储生成单个SEAL证明,而无需聚合。

有两种策略:

  • 策略1:一个大的扇区(待记录)
  • 策略2:多个扇区的一个证明(待记录)
安全说明

想法:如果验证者为每个扇区生成一个密封证明,那么,在该扇区中有一小部分(例如1%)的数据是恶意参与者没有编码或伪造的,并且它们可以被某些东西发现(例如10%)。

  • 案例1(我们今天所拥有的):如果我们要求矿工密封1GB扇区,然后每个扇区生成一个密封证明,那么,它是每个扇区的1%,这很好。
  • 案例2(@why suggestion-ish):如果我们要求矿工密封1GB扇区并为所有存储生成一个单独的密封证明,那么证明者可能没有编码所有存储的1%(例如,如果他们有100个扇区,它们大约有1个扇区说谎,10%的可能性被发现),具有良好的加密经济性就可以了。
  • 案例3(@nicola建议):如果我们要求矿工将所有存储密封为一个单独的扇区,那么他们将为所有存储生成一个单独的密封证明,这保证了安全保证作为案例1。

提案5:使PoSts证明密封编码

这里的策略是根本不发布密封承诺,而只是让矿工在密封的每个扇区发布通信和通信。在提交包含该扇区的PoSt之前,矿工不会收到某个扇区的任何功率更新。然后,我们更改PoSts以证明除了随时间仍然存在的数据之外,数据也是输入数据的正确编码(commD映射到commR)。

它是如何工作的?

构造: PoSt的相当大的改变,去除密封证明。

  • Prover运行密封并生成证明(snark proof)
  • 在Proof-of-Spacetime期间,证明者证明:
    • 他们拥有所有在线发布的commR背后的数据(正如我们现在所做)
    • (新)他们知道每个commD到commR的一个snark证明
  • 利润!
优点和缺点与未知

优点:

  • 超级可扩展性:密封承诺大小从三个哈希和一个SNARK下降到三个(可能是两个?)哈希值,大大提高了协议的可扩展性。
  • 只有一个证明:我们需要从密封证明和PoSts到只需要密封证明。
    缺点:

  • 非常复杂的PoSts:需要有界的引导(他们在ZEXE中做的事情)并使证明更加昂贵

  • 大型PoSt循环:除非我们对所有存储都有一个证明,否则用于时空证明的循环在扇区数量上是线性的(这可能很容易变得非常大且非常昂贵)
    未知:

  • ‘新’PoSt未知的安全模型:目前尚不清楚密封正确的安全保证会如何改变,以及需要调整哪些参数。

提案6:成功开采块的密封证明

该策略是避免在扇区承诺期间在链上发布密封证明,而密封证明仅在矿工赢得块奖励时才在链上发布。

它是如何工作的?
  • 矿工填补了一个扇区
    • 矿工生成密封证明
    • 矿工将密封证明发送给客户,以及commD和commR
    • 矿工发布扇区承诺,包括commR(可能是commD)
  • 矿工发布扇区的PoSt证明(因为commR是链上的,这可以做到)
  • 当赢得区块奖励时,矿工发布:
    • 策略0:所有存储的SEAL证明(如果我们有办法,请参阅提案4)
    • 策略1:随机选择一个SEAL证明
优点缺点

优点

  • 链上的证据较少:链上没有SEAL证明(但每块1个密封)

缺点

  • Offchain证明: Miner必须向他们的客户发送offchain SEAL证明
  • 不同的安全模型:节点现在可以声称拥有比他们拥有的存储更多的存储空间。这里的关键思想是将存储市场的共识分开。共识是在链条上进行链接,存储市场证明:
      • 修复0 :(根本改变)移除功率表:在spacemint模型中运行:节点不是功率表上的样本(在此设置中功率表已损坏),但基于其证明的质量。
    • 修复1 :(简单更改)功率表基于股权功率表由存储权益支持,当选(基于股权)时,矿工将需要发布该特定股权的SEAL证明。
    • 修复2:每隔X次生成证据,发布随机密封,这减少了存储假数据的声明数量。
      • 此修复的安全性尚不清楚:矿工可以在多个矿工身份中分割他们的身份。
笔记

安全说明:如果验证者(无论是链上还是客户端)没有SEAL证明,那么矿工可以进行生成攻击并重新生成/检索他们需要证明的数据。然而:

  • 如果数据来自市场,客户确信矿工没有进行生成攻击,因为他们仍然在链上发布PoSts。因为PoSt必须放在链上
  • 如果矿工正在生成假数据,他们可以成功提交PoSts,但是,他们将无法申请区块奖励。
  • 如果矿工没有存储数据,那么他们将使用PoSt。

为什么电源表坏了?:在这个模型中,矿工可以声称存储的数量超过存储量,但是他们无法赢得任何区块奖励(注意:使用修复2,节点可以执行的垃圾数量有限)。为什么这是个问题?这是当前Filecoin Leader Election构造中的一个问题,它们运行在那里 H(ticket) < my power/total power。如果糟糕的矿工,声称拥有很多功率!! !!那么总功率将会非常大,没有人能够获胜。

  • 分享 收藏
0 条评论
  • 这篇文章暂无评论,赶紧评论一下吧~