数据分析 | 你真的了解Filecoin网络的算力、出块率、收益嘛?

IPFS原力区 发布在 技术指南 海盗号 145285

作者:Steven Li(胡飞瞳)

来源:IPFS原力区

Filecoin测试网络顺畅运行中,即将开启第二阶段旅程。无论是矿工,工程师还是投资者,对测试网络的数据都非常感兴趣。尤其感兴趣的就是爆块率和算力排名。也有人在拿出块率和算力一起做综合比较。但是,多数人迈入了误区。没有理清其中的关系,本文通过模拟来做一点数据透视,希望提供一些帮助。

要点

  • Testnet/2 并未完全实现按照算力等比例概率获得区块奖励,Testnet/3将补上这个部分
  • 爆块率与区块奖励并非成正比
  • 尽管设置为每个高度期望赢得选举的票数为 5,并不意味着平均每一轮平均产生5个区块,理论上,仅在3.38左右
  • 由于孤块的存在,实际爆块率和区块奖励会低于预期
注:本文所采集的是测试网络一个时间段的数据,主要用于理论分析。数据不具有统计意义,不反映测试网的整个状况,也不表明不同矿工的效率。本文不构成投资建议,也不对任何投资决策负责。

爆块数量及爆块比率

下面这张图大家再熟悉不过了。

此图中占据大幅版面的是最近一段时间的每个高度上的区块数量,同时用不同颜色来显示这些区块是由哪一个矿工产生的。此图的右侧是一个平均爆块率排行榜,这个排行榜的计算是依据近一个小时的爆块数据进行统计的。

拿第一个矿工举例,其爆块率为0.73,表明在近一个小时之内,有73%的高度上,此矿工有爆块。在Testnet/2中,区块时间为45秒,那么一个小时总共包含 60*60/45 = 80个高度(epochs),也就是说,有大约58个高度上有所收获 - 爆块并获得区块奖励。

有些人注意到了,右侧的数加起来不等于1。是的,不等于1。这是因为每一轮产生的区块数量并不是1。如果我们统计所有矿工的爆块比率,那么所有这些比率加起来应该等于每一轮爆块数量的平均值。这个值就是下面这个图显示的:

拿当前这个例子来说,应该等于3.0。但其实你如果算一下,是小于3.0的。原因在于第一个图中右侧的排行榜仅列出了排名靠前的矿工。

有一些喜欢研究的投资者或工程师有问题了,这个爆块率带来奖励,那么算力高的爆块率高可以理解,但是,似乎爆块率与算力显示不成比例,尤其是大矿工,好像反而比较低,这是怎么回事呢?

有些人一个区块可以得到多份奖励

换句话说,就是不同的区块奖励可能有所不同,从概率上来将,大矿工很可能在一个挖到的区块上获得两倍或者三倍的奖励。但不要误解,从总的概率而言,理论上大家的收益和算力还是成正比的。

这个似乎有点难理解了,谁挖出区块谁就得一份奖励。为什么要设计成不同的区块奖励可以不同呢?这里有比要带大家温习一下【Filecoin】Filecoin的区块架构 - Tipsets这篇文章。

Filecoin每一轮出的是一个区块集合,成为tipset。这么做的目的是什么呢?答案是尽量减少没有区块的轮次(即空块轮次)。一个简单的办法就是提高出块数量的预期,这个值目前设计为 5。也就是说,如果还是按照原来的方式来出块的话,每一个矿工每轮出块的概率增加到原来的 5 倍。但是,这样一来,必然会出现一种可能,就是一些矿工在一轮中可能出2个或者更多的块。但是这个就显得多余了,因为你只要出一个块就这一轮就不会跳空了。出多个就是浪费空间和带宽。但是出少了,不是奖励就少了吗?不公平啊。

解决方案就是折衷一下,如果矿工在同一轮中有多个出块权,那么,还是出一个区块,但在区块内表明有几个出块权。只要通过验证,就按照出块权的数量来给予奖励即可。完美解决。

因为出块权与算力成正比,那么算力高的获得出块权的概率就高,在一轮中有多个出块权的概率也大一些。

但是,回到Testnet/2,当前实际上并没有按照出块权来给予区块奖励,这部分实现放到了 Testnet/3。也就是说,从Testnet/3开始,你将看到与主网基本一致的区块奖励实现。

区块奖励与赢得的选票成正比

通过上面的说明,可以理解,一个矿工至少要有一个出块权(赢得的出块选票)才可以出块,有多个出块权时,也仅仅出一个区块即可。奖励按照赢得的选票数来分发。

在目前的设计中,每一轮全网所有矿工预期赢得选票数的平均值设为 5。那就是每一轮 5 张选票,谁能拿到,谁就可以出块。

考虑一种理想情况,每一个拿到选票的人都能够出块,而且,所有的区块都能够被网络接收,并进入主链。那么,我们看到的平均区块数量和奖励情况将会是怎样的呢?

我们来模拟一下,根据当前测试网络的运行情况,我们假定:

  1. 预期每轮能够赢的选票数为 5 (符合 Testnet/2 的设定)
  2. 假设全网矿工数量为11个,满足二项式分布 (这个比较符合现在测试网的情况,而且根据之前的网络模拟,这个规模可以简单地反应大型网络的情况)
  3. 网络符合上面提到的理想情况,即所有矿工工作正常,出块正常,没有孤块
经过计算,我们得出下表:

此次模拟中,矿工#1占据全网算力的 24.61%,基本可以反应当前网络中排名第一的矿工,其算力占比为:758.47T/3.110P = 24.39%。

第二列为第一个矿工的理论上的出块概率,分别说明一下:

  • 算力占比:24.61%
  • 无出块权概率:29.13%,也就是说,理论爆块率为 70.87% (1-29.13);与第一张图比较,符合预期
  • 包含 1, 2, 3, 4, 5, 6, 7 份出块权的爆块概率分别为:
    • 36.02%, 22.18%,9.07%, 2.77%, 0.67%, 0.14%, 0.02%
可以看出,一个算力为 24.6% 的矿工,有很大的几率在一个区块中包含多个出块权,从而获得比区块数量高的收益。

那么我们换一个角度来看一下, 比较一下上述11个矿工他们每一个人的爆块率和出块权票数之间的关系,见下表:

还是来看第二列,即第一个矿工的情况,尽管其理论爆块概率仅仅为 70.87%,但是其实际出块权选票的获得率为 123.05%。也就是说其爆块获取的区块奖励将是只有一个选票的区块的 123.05/70.87 ~= 1.736 倍。

所以,不要简单地看爆块率,如果不进一步分析,你会被蒙蔽的。

更多的指标:平均区块数量

我们回头看一下,这样的设计能够满足最初的愿景吗?也就是跳空的轮次降到很低(不可能完全没有,这是个概率问题)。

按照上面的模型,通过推算,我们得出如下网络理论数据:

  1. 每轮平均区块数量:3.38233;注意,这个数与定义的预期每轮平均出块权(5)差别不小
  2. 出现空块轮次的概率:0.006656;也就是说,在一千个高度中,大约会出现 6~7次空块的轮次;还不错了。
  3. 每轮出块权的总和平均:5;当然是5了,至少理论上是的。
注意,这里有一个很重要的信息可以和我们前文中的每轮爆块数量的均值图对应起来。首先不要期望这个值能达到5,达到3.38就是理论上的最佳均值了。与上图做一个比较。实际上测试网上的这个值经常在2.5到3.1之间波动,极少到3.2,根本到不了3.38。这是怎么回事呢?无他,这就是理想和现实的差异。

现实没有那么丰满:你的块被弄丢了

因为网络的复杂情况,也因为设备运行故障,也可能因为你就是出块慢了一些,那么,不好意思,你的区块可能就被主链抛弃了。被抛弃的区块被成为孤块(Orphan Blocks)。孤块将不能得到奖励,白挖了。

网络中总是有一定的孤块率的,我们希望一个好的网络中孤块率越低越好。但是也希望,即使在孤块率比较高的情况下, 网络安全不受影响。

我们通过设置不同的孤块率来模拟不同的网络情况。

  1. 理想情况,孤块率=0 时

    平均区块数量:3.38; 空轮率:0.6656%, 每轮出块权数:5
  2. 孤块率=10% 时

    平均区块数量:3.044; 空轮率:1.4253%, 每轮出块权数:4.5
  3. 孤块率=20%

    平均区块数量:2.706; 空轮率:2.7669%, 每轮出块权数:4.0
  4. 孤块率=30%

    平均区块数量:2.368; 空轮率:4.9929%, 每轮出块权数:3.5

     

根据上面的数据,参照目前测试网络的平均区块数量值(3.0),那么我们可以初步判定目前的孤块率略高于 10%,是一个还说得过去的网络状况。

共性与个性:你的孤块率可能很不一样

可以想见,孤块率并不是针对每一个矿工平均分布的。由于网络、系统稳定性和算法等等原因,可能有些矿工的孤块率就要低一些,有些则要高一些。

再次回到我们目前的测试网络,目前孤块率略高于10%。那么我们来具体考察几个矿工,参照下表:

就排名靠前的几个看一下,前面提到了,

第一位:算力占比约为:24.3%,基本符合本文中模拟场景的第一名

第二位:算力占比约为:14.94%,略高于我们模拟网络的第四位

第三位:算力占比约为:11.58%,基本等同与我们的第四位

第四位:算力占比约为:9.17%,略低于我们模拟网路的第四位

这几位的爆块率分别位:73%,44%,38%,45%

分别对应:

理想情况下的理论指标:70.87%,44.42%+x, 44.42%, 44.42%-x

孤块等于10%的情况下:63.79%,39.98%+x, 39.93%, 39.98%-x

这里 x ~= 3%。

可以看出,在本次取样中,第一位和第四位矿工基本没有收到孤块率的影响。第二和第三略受影响,但影响度也基本符合预期。由此,可以想见,其他矿工可能受影响大一些。不过,这在测试网络中非常正常。因为程序不稳定,许多人还在调试,不停地有新矿工加入,这样新进入的矿工或处于调试中的矿工自然会拉低平均值。

Testnet/3 需要更多的数据

通过上面的分析,我们知道,出块权非常重要,而且拿到出块权后,能不能完成证明也很重要。这一部分由于目前还没有完全实现,所以官方推出的展示板中并没有显示完整。

那么在即将到来的 Testnet/3 中,最好这一部分能够提供可视化的展示。这里透露一个好消息,据可靠情报,目前已经在为大家服务的 filscan.io 会在下一阶段加入出块权的显示,给大家更多的分析数据。

最后提一个问题:

在有孤块存在的情况下,Filecoin真的是6年减半吗?想一想。

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

文章标签: Filecoin
评论
登录 账号发表你的看法,还没有账号?立即免费 注册