Filecoin的故障机制

发布时间:2019年02月25日 价值:20000.00 / 共识:18

Filecoin的故障机制

Faults

当协议中的参与者行为不正确并且行为需要受到惩罚时,会发生错误。Filecoin协议中存在许多可能的错误,它们的详细信息都记录在下面。

Fault List

Consensus Faults
  • 重复区块提交slashing
    • 条件:如果任何矿工为相同的链高发布两个不同的块。
    • 报告:任何人都可以致电SlashConsensusFault并传递两个违规的区块头。
    • 检查:链检查两个块是否有效,具有相同的高度,并由同一个矿工正确签名。
    • 惩罚:所有矿工抵押的抵押品,他们的所有power都被不可挽回地slashed。
Market Faults
  • 延迟提交处罚
    • 条件:如果矿工在证明期结束后但在生成攻击阈值之前发布其PoSt。
    • 报告:矿工像往常一样提交他们的PoSt,但包括延迟提交费用。
    • 检查:链条首先检查提交是否在提交范围内generation attack threshold,然后检查提供的费用是否与延迟提交有多少块的所需费用相匹配。
    • 惩罚:矿工按比例延迟处罚。惩罚由标准PoSt提交强制执行。
      • 经济处罚:调用CalculateLatePenalty(numLate)确定处罚金额。提交费用后,矿工的power不会减少。
      • power惩罚:矿工的power没有减少。请注意,功率表的当前视图是使用lookback参数计算的。
        • 为什么我们用lookback参数计算功率表?如果我们不使用lookback参数,那么我们需要在他们迟到的时间内惩罚延迟的矿工。这样要做到高效是非常棘手的。例如,如果矿工A,B和C各自拥有1/3的网络功率,并且C提交他们的证据的时间较晚,那么在这段时间内,A和B应该每个都有一半的网络功率(和每个都有50%赢得胜利几率。)
    • TODO:写下PoSt Deadline和Gen Attack阈值的规范精确参数。
  • 未报告的存储故障slashing:
    • 条件:如果矿工在generation attack threshold之前没有提交他们的PoSt。
    • 报告:网络中的任何其他人都可以调用SlashStorageFaults来举报矿工,该矿工进行大幅slashed。我们希望矿工报告这些故障。
      • 未来的设计说明:向前发展,我们应该对调用者进行补偿,或者要求这样做
      • 注意:我们可以要求调用该方法,作为共识规则的一部分(尽管这很复杂)。在这种情况下,存在DoS攻击,如果我使大量矿工每个都有一个扇区,并且同时使它们全部失败,那么下一个块矿工将被迫做大量的工作。这可能需要扩展的“gas限制”,或者其他一些方法来避免过长的验证时间。
    • 检查:区块链检查矿工上次PoSt提交是在当前证明期开始之前,并且当前块是在当前证明期的生成攻击阈值之后。
    • 处罚: Penalizations被storage market的actor通过SlashStorageFault强制执行的。
      • 经济惩罚:矿工失去所有抵押品。
      • power惩罚:矿工失去所有power。
      • 注意:如果矿工处于此状态,他们未能提交PoST,则他们尝试挖掘的任何区块都将无效,即使选举功能选择它们也是如此。(可能应该选举功能从不选择它们)
      • 未来的设计说明:有一种方法可以容忍Internet连接故障。矿工运行紧急PoSt,如果矿工在VDF攻击时间之前重新连接(基于Amax),则不会接受来自区块链的挑战,然后,他们可以提交紧急PoSt并获得延迟罚款。
  • 报告的存储故障处罚
    • 条件:矿工用一组非空的’缺失扇区’提交他们的PoSt。
    • 报告:矿工可以指定某些扇区,他们在证明期间未能证明。
      • 注意:这些故障由ProveStorage协程输出,并在发布证明时在链上发布。当矿工(例如)发生磁盘故障或其他本地数据损坏时,会发生这种情况。
    • 检查:链检查证明是否与缺失的扇区进行核实。
    • 惩罚:矿工受到抵押和罚款的惩罚,与缺失扇区的数量成正比。这些扇区也从矿工证明集中删除。
      • TODO:这里丢失的抵押品是否应该与剩余时间成比例?
      • TODO(nicola):检查两个证明之间的时间是否允许生成攻击,如果不允许,那么我们可能会重新考虑扇区没有丢失。
    • 注意:如果在这里错过了一个扇区,并且在事后恢复它们,矿工可以简单地“重新提交”该扇区。他们仍然需要支付抵押品,但数据可以快速重新引入系统,以避免客户调出这些数据时而违反合同(这只会起作用,因为扇区commD / commR是相同的)
    • 注意:如果矿工暂时无法证明他们的某些数据,他们可以简单地等待临时不可用恢复,然后继续证明,如有必要,提交证明有点迟了(支付适当的费用,如上所述)。
  • 违约争议
    • 条件:与某个存储数据矿工有合约的客户,矿工在约定的时间段结束之前删除包含该数据的扇区。
    • 报告:客户端使用该矿工签署的存储协议对违规的miner actor调用仲裁协议。注意:报告必须在矿工错误地删除存储的一个证明周期内进行。
    • 检查:区块链检查交易是否由相关矿工正确签署,交易尚未到期,以及交易所引用的扇区不再在矿工证明集里面。
    • 惩罚:矿工受到的惩罚与错误移除的扇区成比例。这种处罚取自他们的质押抵押品。
    • 注意:这意味着矿工无法将数据重新密封到不同的扇区。我们可以提出一个协议,客户给矿工明确同意重新密封,但这更复杂,可以在以后完成。
  • 分享 收藏
0 条评论
  • 这篇文章暂无评论,赶紧评论一下吧~