故备前而后寡,备后则前寡,备左则右寡,备右则左寡,无所不备,则无所不寡。《孙子兵法·虚实篇》

Filecoin 测试网上线已经进入倒计时了,各路矿工都蠢蠢欲动。最近有不少同学给我发邮件咨询 Filecoin 的惩罚机制是怎样的,因为临近上线了, 大家都在开始部署矿场,准备矿机了。鉴于单个回复太浪费时间,所以这里就写一篇博客统一解答。

我们做事情不仅要考虑收益,更要考虑风险。正所谓 未谋胜,先虑败。正如孙子兵法里面所说“以已之不可胜,以待敌之可胜”。 先把自己修炼得不可战胜,然后等待敌人犯错误,这样敌人就“可胜”了,这样就”胜可全也“(胜利就是板上钉钉的事了)。 简单的说就是,先保证自己不犯错误,然后等待敌人犯错误,然后再抓准时机,一战而定。

讲回到 Filecoin 挖矿,很多人只看到了挖矿的收益,以为只要买了高配置的矿机放那里挖,然后就回家坐等收币就行了,而没有考虑到挖矿过程所遭遇的惩罚。 结果就是可能你辛辛苦苦挖好几个月,结果因为一次 slashe(惩罚),就血本无归,落得一个“辛辛苦苦几十年,一罚回到解放前”结局。

惩罚的触发条件

闲话休说,我们先看下 Filecoin Specs(协议规范) 规定了哪些行为是会收到惩罚的。

共识惩罚:在相同的高度提交两个以及以上的区块,以提高自己的 Weight(出块权重)

惩罚力度:当前矿工的所有 pledge collateral (抵押币)全部扣除,storage power(存储算力) 清零,并且均不可恢复, 即使作弊者重新抵押,该矿工也无法再产生新的区块

存储惩罚:未能按时提交 PoSt(时空证明),或者提交非法的 PoST(作弊)

这两种存储惩罚,由于性质不一样,所以惩罚力度也有很大的差别,对于那些逾期提交 PoST 的矿工,只需加纳一定数量的罚金,具体数量通过调用 ComputeLateFee(minerPower, numLate) 函数计算得出,当前矿工的存储算力并不会受到影响。

但是对于后一种通过 generation attack (生成攻击)生成 PoST 的矿工,处罚就是致命性的, 除了扣除所有的抵押代币,存储算力清零之外,处于这种状态的矿工,即使被选取为出块矿工,它产生的任何区块都将无效

合约惩罚:不遵守合约,在存储交易到期之前,私自删除客户数据

这种违约惩罚相对来说不算严重,只是扣除你违约部分的订单金额。比如说你接了一个订单,帮客户存储 10 GB的数据100天, 总价为 100FIL,假设你把这 10GB 的数据密封成 10 个sector,但是你在第 99 天的时候不小心把其中 9 个 sector 删除了, 那此你就需要缴纳 (9/10)*100 = 90 FIL 的罚金。这里协议并没有说明订单的那 100FIL 是否归你所有, 但是有特别指出了这个罚金是从你的抵押币中扣除的,由此可见,订单的钱你应该也是拿不到的,这叫赔了夫人又折兵。

罚金的处理

在上面每种情况下,都会从矿工哪里扣除一些资金。你可能会想问,那罚了矿工那么多币,这些币给谁呢?目前来说有两种主流的处理方案。

销毁所有的罚金

这种方案的优点是简单粗暴。但是这样一来大家举报违规者的动机就太低了,因为目前举报是需要支付交易的 Gas 费用的, 但是如果罚金全部销毁的话,那么举报者得到的唯一奖励就是全网的总币值减少了。这样做完全是损人不利己,得不偿失。

将所有的罚金全部给举报者。

这样依赖举报者的积极性就提高了。但是会遇到了两个相当微妙的问题:

  1. 攻击者可以用另外一个身份(矿工)举报它自己,这样如果所有的罚金都给举报者,那攻击者作弊的成本就大大降低了,相当于是左右拿到右手,钱还在自己口袋里。
  2. 如果罚金足够多,这可能会导致矿工尝试分叉,以要求自己获得罚金的奖励。这可能会导致链的不稳定,并产生奇怪的诱因。

方案一显然不可取,鉴于方案二的缺陷,协议实验室在方案二的基础上做了一些约束:

  • 举报者的奖励金额应当足以激励矿工们积极的去举报违规者。
  • 举报者的奖励不应高到在竞争矿工之间煽动分叉。
  • 销毁的罚金应该高到足以惩罚违规者,即使他们在自己举报自己的情况下。

针对上面的约束,协议实验室会指定一个合理的算法,不过也有多开发者提供了一些比较可行的建议,比如针对不同类型的罚金处理方案要不一样, 例如对那些误删数据的矿工,他们的罚金应该交给客户, 因为客户丢失了数据,得到补偿也无可厚非。最终被执行的方案是怎样,就得去看 Filecoin 的源代码了,这个我们以后有机会再讲。

广告时间

星际鑫航 是一家专注 IPFS 去中心化存储科技公司,尤其对 Filecoin 生态建设,Filecoin 挖矿有深入的研究和实践,提供专业的矿场建设,矿机托管,以及矿机管理软件(GammaOS),借用《孙子兵法》里面的话说就是,在 Filecoin 挖矿这块,我们做的真的很实,不玩虚的

参考链接