Filecoin系列09-浅谈 Filecoin 的惩罚机制
孙子兵法·虚实篇
故备前而后寡,备后则前寡,备左则右寡,备右则左寡,无所不备,则无所不寡。
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 费用的, 但是如果罚金全部销毁的话,那么举报者得到的唯一奖励就是全网的总币值减少了。这样做完全是损人不利己,得不偿失。
# 将所有的罚金全部给举报者。
这样依赖举报者的积极性就提高了。但是会遇到了两个相当微妙的问题:
- 攻击者可以用另外一个身份(矿工)举报它自己,这样如果所有的罚金都给举报者,那攻击者作弊的成本就大大降低了,相当于是左右拿到右手,钱还在自己口袋里。
- 如果罚金足够多,这可能会导致矿工尝试分叉,以要求自己获得罚金的奖励。这可能会导致链的不稳定,并产生奇怪的诱因。
方案一显然不可取,鉴于方案二的缺陷,协议实验室在方案二的基础上做了一些约束:
- 举报者的奖励金额应当足以激励矿工们积极的去举报违规者。
- 举报者的奖励不应高到在竞争矿工之间煽动分叉。
- 销毁的罚金应该高到足以惩罚违规者,即使他们在自己举报自己的情况下。
针对上面的约束,协议实验室会指定一个合理的算法,不过也有多开发者提供了一些比较可行的建议,比如针对不同类型的罚金处理方案要不一样, 例如对那些误删数据的矿工,他们的罚金应该交给客户, 因为客户丢失了数据,得到补偿也无可厚非。最终被执行的方案是怎样,就得去看 Filecoin 的源代码了,这个我们以后有机会再讲。
# 参考链接
本站博文如非注明转载则均属作者原创文章,引用或转载无需申请版权或者注明出处,如需联系作者请加微信: geekmaster01