
为阅读理解更为通畅,请先了解以下信息:
WindowPoSt 每半小时为一个窗口,一天有 48 个窗口;同一窗口每天在相同时段都要做 WindowPoSt,即周期性执行的任务。
扇区分为三类,其一称为 nonfaulty :从未故障的扇区;其二称为 DeclareFault :矿工声明故障的扇区准备修复但尚未修复;其三称为 Skipped 扇区:网络检查出来的故障扇区且仍处于故障。
分区的定义: 一个分区有 2349 个扇区 ,扇区故障会影响整个分区的惩罚。
问 题
由于扇区故障检测费的规则设计,未及时提交 WindowPoSt 的矿工将受到网络的过高惩罚。有时诚实的矿工可能会因无法控制的原因,比如网络堵塞没有人及时打包而错过窗口内 WindowPoSt 提交的最后期限,在相关时间窗口内丢失 WindowPoSt 或由于单个扇区而使 WindowPoSt 失败会导致整个分区的 2349 个扇区全部被罚款。
协议应该更加包容这些情况,同时要让矿工保持强烈的动机,在整个服务合同的生命周期中提供可靠的存储。
细则调整
为了使惩罚机制更能包容节点(部分模块)间或的不可控停运,让存储挖矿的体验更加舒适,使 Filecoin 成为一个对存储提供商更具吸引力的市场,同时兼顾客户对存储可靠性的担忧,FIP0002 减少了初次故障的惩罚,同时增加了持续故障的惩罚费用,以抑制矿工提供不可靠存储的动机。
在不牺牲很多安全性或存储能力的前提下减少扇区故障检测费,包括:
不会产生费用 :如果某一个窗口期内没有查到故障扇区,这个窗口期即使 WindowPoSt 未按时提交也不会产生任何罚款费用(前提是首次未按时提交)。
产生费用 :在某些分区存在故障扇区时,如果窗口期未提交成功 WindowPoSt,这些故障扇区会产生扇区故障费。
费用统计区间 :在每个窗口期,从检测到故障扇区后的第一个 deadline 开始,将产生扇区故障费。
分区是扇区的集合,但某些分区内的故障扇区矿工已经主动声明故障,对于正在恢复的扇区和有故障的扇区,希望有以下改善:
对于每个通过时空证明的被恢复扇区 :目前恢复矿工算力,但扣除扇区故障费罚款;建议恢复算力的同时不收取任何罚款。
对于每个声明 为 skipped 的扇区:当前设计为删除矿工算力,同时网络将该扇区标记为有故障,扣除矿工的扇区故障检测费(SP)+扇区故障费(FF),该窗口期后开始计算扇区故障费;建议删除矿工算力并标记扇区故障,但不收取任何罚款,该窗口期后开始计算扇区故障费。
对于未提交时空证明的分区 :当前版本对所有故障扇区进行扇区故障费的惩罚、惩罚分区中每个扇区的扇区故障检测费,并删除分区中所有扇区的算力;建议改为删除分区中所有扇区的算力、惩罚每个故障和正在恢复故障的扇区的扇区故障费,但不会对从未有过故障的扇区做故障费相关惩罚。
常量调整
网络的设计希望矿工存储数据后在每个时空证明窗口期截止前成功提交 WindowPoSt,这是合理的策略。但目前的协议设计导致矿工在单个分区中有很多故障,那么矿工可能更愿意不提交证明,而不是主动声明故障(对于分区内故障扇区大于 30%的矿工来说,声明故障成本更高)。
为了具有更循序渐进的惩罚结构,官方评估了一个 Markov Decision 模型,此模型表达了矿工需要为存储合约提供的稳定时长至少要达到 60%的存储服务要求时长,只有正常运行时间大于 60%时才会产生正的收益期望。基于这一点, 扇区故障费常数系数最低需要设置为 3.51 。
这样既减少了对新出现故障的扇区的罚款,也增加了对持续故障的罚款,可以有效地降低罚款风险,同时使更改最小化。
总 结
对于 FIP0002 提到的所有对于诚实矿工更加友善和降低成本的调整细则,让矿工的容错空间拓宽,对于通证的流动量也有一定积极意义。FIP0002 一定程度上简化了惩罚机制的颗粒度,但目前提案仍处在未执行阶段,具体的再议空间还有很大,对于经济模型的持续性调整也如预期,最后,实施的快与慢对全体矿工都有节奏性、时间成本的影响,愿技术社区和 Filecoin 团队为 Filecoin 生态带来更多的确定性,一起变化与共建。