2021-01-21 10:22

解读 | Filecoin区块奖励与惩罚机制

BINGHE DISTRUBUTIED STORAGE LAB

众所周知,矿工在Filecoin网络的收益来源于存储订单收益和区块奖励,在网络前期存储订单收益较少,主要通过区块奖励获取收益。那么,你是否研究过,区块奖励是由哪几部分构成?以及区块奖励这样设置的原因?

区块奖励

区块奖励的主要构成是当前高度对每个矿工的基本区块奖励+小费+(可能的)惩罚。

基本区块奖励

  • 当前高度每份区块奖励=(当前区块高度为止的区块奖励总额-上一个区块高度为止的区块奖励总额)/当前区块高度的区块数量
  • minerReward=(totalMinerReward-lastMinedReward)/当前区块高度的区块数量

如图,区块高度330003,有三个矿工获得区块奖励,每个矿工获得了一份奖励。

每个矿工能获得的基本区块奖励如下图:

total_miner_reward=17928 445792055869175204095 nanoFIL

last_total_miner_reward=17928 397766464829775195448 nanoFIL

total_miner_reward-last_total_miner_reward=4802559103940008647nanoFIL

注:nanoFIL=10负18次方FIL

每份出块奖励=基本出块奖励/出块份数。

矿工能得到的基本区块奖励=每份区块奖励x该矿工获得的出块份数。

当前高度,每个矿工有1份区块奖励,矿工数为3。

因此每份区块奖励为:

miner_reward=48.02559103940008647/3=16.008530346466669549FIL

小费

冰河的文章《Filecoin官方信息|Filecoin的EIP-1559》里提到了gasPremium(交易者给矿工的附加利润率)即小费。

在EIP-1559下,交易创建者指定了费用上限(他们愿意为打包此交易而花费的每单位Gas最高的价格)。如果费用上限小于区块的基准费率,则不能将其包括在区块中。由于基准费率会被销毁,交易创建者还指定了一个小费(tip),给于打包消息的矿工作为激励

在区块奖励中,凡是打包了有附加利润率的消息的区块,打包消息的矿工就能获得这些消息的gasPremium,所有消息的消费合计为gasReward(gas奖励)。

如图中,区块高度330003中的某节点,通过打包220条消息,最终获得1147697454159193 nanoFIL的gas小费奖励,小费+基础区块奖励的总额超过了其他两个节点。

这是Filecoin对打包消息的矿工的正向激励政策。

惩罚

有的时候,大家也会注意到,会有出块成功,但是奖励金额为0的情况出现。这不是因为Filecoin没有对矿工进行应有激励,而是因为该矿工在打包消息时,对不符合打包条件的消息进行强行打包,被链惩罚。奖励金额扣除惩罚费用仍不足以抵扣时,奖励为0,剩余不足抵扣的惩罚金额从miner钱包余额中扣除。

那么,强行打包指的是什么呢?什么情况下打包消息会被惩罚?惩罚金额是多少?

其实,惩罚也是根据EIP-1559中提过的三倍惩罚“不该打包交易”设置。

filecoin燃油费由三部分组成:基本费用、小费和超额燃油费。小费上文已经讲过,是交易者设置gasPremium(小费汇率值),给愿意打包的矿工的额外费率;超额燃油费,是Filecoin网络不支持用户支付过高的费用进行优选“插队”,如果交易者对gaslimit(对一笔交易 Gas 消耗的预估限制值)设置了不合理的指标,过低则会导致消息上链失败,过高则向交易者收取超额燃油费(以后有机会详细分解超额燃油费)。(请查阅王大爷聊FIL(一)详解Filecoin中的Gas费机制)

另外一个影响,则是对矿工的惩罚,“不该打包交易”。

“不该打包交易”即是交易者在设置gasFeeCap(交易者愿意给矿工的打包消息最高费率)时,设置值过低,使gasFeeCap<baseFee(全网基准费率)。这样的方式下,交易者无法顺利支付矿工费。如果矿工对这样的消息进行强行打包 ,Filecoin网络会针对矿工进行三倍该消息消耗差额费用的惩罚。通过该措施,让矿工来监督“不该打包交易”。

如图,某区块高度,查询某节点的区块奖励组成部分,发现既有惩罚金额penalty,也有gasReward。

小结

minerReward+gasReward-penatlty=最终区块奖励。通过公式,可以明确看出filecoin对矿工的鼓励方向。filecoin希望矿工更多更主动打包消息,增加网络上的实际打包量;监督“不该打包消息”,减少消息插队、链拥堵的可能。

WindowPoSt惩罚

上文提到的,是微观层面上,区块奖励构成中矿工可能收到的额外奖励和惩罚。那么,从宏观层面上,矿工获得的区块奖励份额,本身有额外奖励或惩罚的可能吗?

额外奖励是没有的,但是windowPoSt消息提交上链失败,会按照以下步骤,逐级惩罚:

1. 扇区第一次掉算力,没有罚金。第一次不做惩罚,主要是为了避免链同步的问题等非数据问题导致的误惩罚;

2. 扇区第二次掉算力(第一天和第二天连续掉),当次惩罚扣除扇区中对应3.51天的区块奖励。假设代码预估单T收益为0.2FIL,那就是每个扇区扣除0.2/32*3.51=0.0219375FIL;

3. 扇区连续第三次掉算力,惩罚扣除的方法如第二条。持续错误,每天都扣除相同区块奖励;

4. 如果扇区连续14天错误,扇区终止,除去已扣除区块奖励外,连带扣掉扇区的质押金额,不做返还;

注意:

除去扇区连续14天错误导致的扇区中止,其余惩罚均不涉及到质押金额;

Filecoin重点惩罚内容主要在于连续错误,如果扇区第一天错了,第二天对了,第三天再错,不会有罚金。要连续错误,才会受到惩罚。因此,少量的惩罚,是正常的,目前filecoin的代码有一些不太完善,比如写入的数据,有时候读取叶子节点,会报告错误,但从系统IO看没有什么异常,且有时候不出错了就一直不出错了,但数据始终未变。

但如果错误很多,且有连续错误,就需要分析每个错误原因,认真总结错误源头,优化代码和算法,避免相同问题。

参考:

https://github.com/filecoin-project/FIPs/blob/master/FIPS/fip-0002.md

本文链接:https://www.8btc.com/article/6587823
转载请注明文章出处

评论
登录 账号发表你的看法,还没有账号?立即免费 注册
下载
阅读
分享
评论
点赞
上一篇
下一篇