Filecoin 挖矿:半衰期为6年的放射性释放
大家都知道 Filecoin 的出块奖励是每 6 年减半,也有很多人了解是线性递减。白皮书上说,调节周期为一周,但最新的进展表明,Filecoin完全不需要调节周期。参照自然界放射性元素的衰减模式,Filecoin的实现可以更简单,而且可以实现彻底的线性递减。
一个简单的速查表
连续10年每年的第一个区块爆块奖励的理论值速查表。精确到 attoFIL (小数点后第18位,Filecoin交易的的最小单位。)
【警告:停止阅读,下文含有数学 和 放射性】
最新算法公式
根据 Filecoin 研究小组最新发布的设计模式,Filecoin区块奖励将不再使用调节周期,而是每一轮都自动调节,仿照自然界放射性衰减的法则,按照指数递减模式调节。为了节省时间,本文首先直接给出公式:
每一轮的区块奖励与网络中还未挖出的 FIL 数量数量(下面公式中的Remaining)相关,按照指数衰减,半衰期为6年。
区块奖励公式:
注1:这里的单位是 attoFIL, 1FIL = 10^18 FIL
注2: 当Remaining(未挖出的币量)小于 10^11,这个奖励值就归零了,不能再挖出币。那时,矿工的收入将完全是交易费。
注2:1400000000 是系统最初保有币的总量,也即挖矿产生的总量,共14亿枚FIL。
注3: 可以看出,第一轮的奖励数为:153.856861913558700202 FIL。
第n轮后网络中还保有的FIL数量(未挖出部分):
大致也可以写为:
注1:这里 0.9999998901022414903152 是衰减因子,表示每一轮系统维持比例
注2:由于预期共识可能出现空块或一轮多块的情况,这里只是理论值,实际值可能有差异
第n轮区块奖励FIL数量:
根据上面两个式子可以很容易地推算出,第n轮的奖励(单位attoFIL)为:
也可以化为如下公式(单位 FIL):
注1:计算精度取小数点后第18位。
注2:此为理论值,实际值可能由于预期共识引起挖矿的不均衡性造成差异。
算法如何得来?
熟悉考古学的同学们都应该知道 C14 测年法。C14是一种自然界生物体内含量恒定的放射性元素。当但生物死去,其不再摄入C14,体内的C14按照放射性元素规律衰减,其半衰期大约为5730年左右。根据测定其化石的放射性C14含量,就可以大致估算出生物生成的年代。
这与Filecoin有什么关系呢?我们知道,区块链本身是具有生命的。一条公链一旦诞生,就会自我生长,婴儿期可能需要大家关爱和照顾,但一旦长成,就能自我抵御风雨。比特币10年来成长的历程可以证明这一点,Filecoin也是一样。既然区块链本身就是数字世界的生命,那么与其伴随而生的数字货币也应该具有自然属性。数字货币的发放规律通常按照一定规律递减,这与元素的放射性类似。那么是否可以采用同样的规律来发放奖励呢?答案是肯定的。Filecoin 的做法就是如此。
Filecoin规定,其代币发放(仅指区块奖励部分)采用半衰期为 6 年的释放方式,完全模仿自然界放射性元素的衰变规律。具体说来,就是每一轮的衰减比例是相同的。也就是说每一轮发放奖励之后余下的币总量与上一轮余下的币的总量是相同的。也就是说是:
这里 d 是衰减因子,是一个常数,我们也知道 Remaining(0) = 1400000000FIL,也就是说是14亿。那么可以推算出:
而同时由知道六年减半,因为现在定义每30秒一个区块,6年的区块数为:
同时有:
也就是说:
也即:
d ~= 0.99999989010224149031521414
这里 d 就是衰减指数。
因此,第一轮释放的 FIL 数量为:
1400000000 * (1-d) = 153.856861913558700202 (保留18位小数)
有了第一轮的奖励数量,之后各轮的计算就更简单了。具体可参考如下推导过程(注意公式格式有所简化):
由前面的推导知道:
R(1) = 153856861913558700202 attoFIL
Remaining(0) = 1400000000 * 10^18 attoFIL
那么:
回到文首看一看,其实这就是本文中的第一个公式。这样,在实际的计算中,就可以根据每一轮剩余的币量乘以一个固定的比例,推算出出块奖励的数量。每轮递减,6年减半,完成!