Filecoin 区块奖励分为简单供应和网络基线供应两个部分,测试网奖励曲线漏洞是网络基线导致。 原文标题:《【Filecoin】经济模型之区块奖励的设计》 激励机制是区块链项目成功的基础,通常激励机制也被成为经济模型,这也反映出区块链本身是建立一个经济生态。Filecoin 的经济模型比较复杂,可以写好些文章,其中区块奖励部分十分关键。Filecoin 的经济模型研究团队在这方面做了大量工作,但目前还没有完全定型。本文就其设计和发展过程进行一个简单梳理。 内容提要
从测试网第二阶段的区块奖励 bug 说起Filecoin 测试网第二阶段终于没有延迟,按照最近一次的计划在 5 月 11 日这一周上线了。准确地说,是在这一周的星期五 - 5 月 15 日上线。这一次上线网络基本稳定,这非常不容易,要知道,在之前的 Interopnet 运行中,大量的问题已经暴露出来,软件质量还令人担忧。这得感谢 Why 等诸干将以及他们采用的先进的中国专属的「007 工作模式」。 同时,不得不说,这一次上线还是略显仓促。虽然网络持续运行,没有出现之前的内存泄漏,程序崩溃的问题,但是,WindowPoSt 暴露出大量的问题,包括不能正常证明、也包括不用证明也不丢算力;另外,无限增发的问题也颇为吸引眼球。这一些,都不是设计的问题,而是工程实现过程中的问题,相信,在下一次的重置之前,这些已经发现的工程问题可以得到解决。 但是,这里提到的区块奖励 BUG 问题,就有一点不一样。先看一下我们在第一周看到的区块奖励曲线是什么样子的: 我似乎听到了「咣当」一声。区块奖励值从一开始的 2.55FIL,慢慢增长到 39FIL 之多,然后在 33505 高度左右,突然掉落至 18.24 左右。然后开启了稳定衰减模式。 都是网络基线「惹的祸」为什么会这样?我们在测试网第一阶段奖励的衰减不是非常平滑的吗? 但这是测试网第二阶段,有一些新的机制引入并实现在代码之中。对区块奖励产生直接影响的就是网络基线,也成为算力目标值。算力目标值的设计初衷是为了保护网络,算力目标值的设定基于一个简单的原则:网络的成长需要时间,幼儿期需要保护,当网络达到一定的规模后,网络自身已经比较强壮,可以抵御风险,稳定成长。这个一定的规模在 Filecoin 网络中就是算力目标值,也就是网络基线。 在当前的网络中,网络基线设置为 1PiB (这存粹是为了测试,主网的设置可能与此完全不同)。为了让矿工不在早期离开网络,把一些区块奖励延迟释放,来起到保护网路的目的。 具体的做法就是,把代币的释放分为两个部分:
这两个部分的代币释放方法都是按照 Filecoin 挖矿:半衰期为 6 年的放射性释放 文中提到的方法进行释放。唯一的区别也是非常重要的区别,在于他们计算时间的方法不同。简单供应部分的时间计算就是自然时间,高度值 *区块时间来进行计算;然而,网络基线供应部分的时间被成为有效网络时间,这个时间与自然时间有很大区别。 有效网络时间是怎么回事?简单来说,自然时间 T 所对应的有效网络时间 T' 就如下图所示。下图中的绿色曲线是表示每一个高度的网络算力曲线。那么在一个时间 T 就可以求出网络从启动开始的算力时间累计值,也就是图中蓝色部分的面积。那么,考虑如果网络的算力始终是网络基线的话,所需要的时间 T' 就是 T 所对应的网络有效时间,也就是说,T' 的取之是保证图中的浅粉色部分面积等于蓝色部分面积。 总之,就是按照网络基线进行累计所需要的时间就是有效网络时间。 这是第一条规则。但是当网络算力很大的时候,T' 增长迅速,那代币释放就会超过预期,因此,就有了第二条规则: 有效网络时间不能大于自然时间。也就是说 T' <= T。 如果不考虑衰减(在短时间内可以忽略衰减)的话,那么网络基线供应实际上就是与上面蓝色部分的面积在每个高度的变化成正比。由此可以看出,T' 的变化速率是逐步加速的,但当 T'>=T 的时候,变化瞬间被拉回。这就出现了上文提到的,区块奖励突然回落的情况。 如何平滑实际上,上述奖励曲线不平滑的问题,在 Filecoin 经济模型团队的研究和模拟中就出现过,但是在实现的时候,这个部分还是被忽略了。 上述问题解决起来并不难。那就是,早一点把这个增长拉回来,如下图所示,当网络总算力超过网络基线的时候,就直接使用网络基线来计算面积。那么下图中的算力时间累积区间在时间 T 时就是蓝色部分;可以看到的是,因为蓝色部分的面积在单位时间内的增长不会超过淡粉色部分的在同样时间内的增长,那么,根据其所求出的有效网络时间 T' 将永远低于时间 T,时间越长,两个时间越接近,但不会超越。 这样一来,前文中提到的规则二就不需要了。这样,在通常的情况下,区块奖励曲线将要平滑得多。区块奖励在网络总算力达到基线之后逐步接近正常。 可以预告一下,下次网络重置的时候,区块奖励会采用这个方案。 新的奖励曲线什么样子?在设置网路基线和分配方案的时候,需要做大量的假定和模拟,以及考虑对网络和生态的影响,来决定最后的参数。下面是几张模拟的图。 上图是按照目前测试网第二阶段的分配比例(1:9)进行模拟的前三年的释放图,假设网络总算力达到基线需要两年(可能估计过长,一般考虑几个月内达到,这里主要为了说明问题),最上面一根曲线是按照最初的全部都采用简单释放的方式的释放量,第二根线是加入网络基线后,的总释放量的曲线。可以看到,加入了网络基线之后,总的释放量减少了差不多 30%。 再看 10 年,如下图: 这说明拉长时间来看,总释放量会慢慢追上来。但是,还是不会达到简单设计的总释放量。 前面提到的是 1:9 的比例。但是这个比例是很可能改变的。下面我们看一下按照 1:1 的比例的 3 年和 10 年的释放图: 由于简单释放的比例放大,看起来网络基线的影响变小了一些,这也是情理之中的。 那么,很自然,大家应该关心两个问题:
六年减半:理想与现实采用新方案后,有一个小问题。区块奖励变少了,那么实际发放的区块奖励将小于简单释放的理论值,也就是说六年减半多半是不现实的,也许不小心就成了七年减半了。 影响六年减半的因素不仅如此,还包括孤块导致区块奖励发放减少,网络或硬件软件原因出块量低于理论值导致代币发放减少,总之,发放会少于理论值就对了。那么,如果按照目前的实现,是不能实现白皮书上讲到的六年减半。 这个问题怎么办?两个办法:
为什么要这么复杂最后回归到一个本源的问题,为什么要设计的这么复杂呢?简单一点不好吗?我也认可简单一点更好。一个好的设计一定要把握好一些重要原则。Filecoin 的经济模型的设计非常多的是为真实存储的稳定性和服务质量考虑。因为这是一个建立 Web3 基础设施的一条链。那么我们不希望矿工进出非常随意,要设置一些门槛和保障机制;我们也不希望 FIL 的价格波动巨大,这会影响矿工的部署和决策,导致服务出问题。 但是,这样的设计到底能否达到这样的目的,目前还是有很多争议。大家可以各抒己见,事情越辩越明。大家可以从不同的利益出发,多讨论才能得出更好的方案。 (责任编辑:admin1) |