欢迎您访问科普小知识本站旨在为大家提供日常生活中常见的科普小知识,以及科普文章!
您现在的位置是:首页  > 经济金融

Filecoin测试为什么要抢算力排名?

科普小知识2021-08-09 19:42:02
...

本文由IPFS原力区Steven Li原作

Filecoin测试网第二阶段已经进行了一月有余,本周进行网络重置。一有重置必然会掀起算力大战,排名、爆块、挖矿效率...已经成为整个市场的默认目标。

为什么?市场宣传的需要使然。

但是这个时候,这些数据并不能真正说明问题。实际上,在当前的算法下,算力高可能意味着吃亏,而且出块权的计算方式仍在改变。

市场一览

周五(6月19日) 8:00,Filecoin 测试网按计划重置了。

因为很多改变与原实现不兼容,本次重置直接通过重置升级,好处是节省时间。这也是为了让开发团队集中精力在实现奖励阶段的实现上,而不用花很多时间来进行链的维护。

重置之后我们仍然看到,不少团队的宣发还是集中在:

算力排名

出块效率

Seal速度

可以理解,大家都需要做市场,做宣传,推动生态发展。总要宣传点什么。

但是,在目前阶段仅关注这几个方面,可能会一些误导:

广大受众并不一定能有一个准确的判断

信息也并不一定准确

之所以这么说,是因为就目前的实现而言:

算力占比过高,实际上代币收益是吃亏的;

在现在的网络中,算力占比较小者理论上更占优势,但与网络状况和同步效率关系较大;

Seal 速度展示了一定的优化能力,但是有时候和效率是相悖的;

Seal速度的展示是可以伪造的*(具体怎么造请参考第二阶段刚上线的时候的一些讨论,当然也可以通过第三方进行挑战的方式进行证明)。

*注:这里并不是说一定有人伪造,只是说技术上可行。

为什么这个阶段大家还抓住这些点不放,重复之前的各种指标呢?可能是因为节奏被带成这个样子了,可惜的是这次没人带新节奏。

算力与出块

为什么说算力占比过高,实际上代币收益是吃亏的?因为在第二阶段测试网中,算法又变了。

判断一个矿工能否赢得一轮挖矿权利依靠一个简单判断:

Filecoin测试为什么要抢算力排名?

这里 h(vrfout) 是一个随机数;e 是预期每个高度的区块数,目前设置为 5;myPower/totalPower 是矿工的算力占比。

上面公式的意思是:如果你的算力占比是 r = myPower/totalPower,那么你获得选举的概率就是 r*e。

问题来了,因为 e=5,因此当你的算力超过20%时,你一定能够赢得出块权。

也就是说,无论你的算力是20%, 还是21%, 还是60%, 80%,理论上你都应该每一轮都能够出块,获得区块奖励。这样的话,超出20% 部分的算力就没有意义了。

相反,如果你拥有 10% 的算力,理论上你应该拥有 50% 的出块权,也就是有一半的机会出块。

大家可以自己权衡一下,是否达到了这个指标。

另外,因为受到各种因素的干扰,实际成功出块并加入最重链的几率要小于理论出块权的。

出块与安全

为什么改成现在这个样子呢?一句话,为了稳定和安全作出的权衡。

这里主要考虑如下几个因素:

区块奖励和算力占比成正比 - 公平性

Filecoin网络出块更稳定,消息打包更完备 - 可扩展性

系统安全性提升 - 安全性

为达到这些目的,Filecoin团队做了不少的探索。

在最初的设计和去年的开发网阶段,基本上是考虑每一个高度平均一个区块。这样比较容易实现出块和奖励的公平性,但是空块的轮次太多了。

于是,在测试网第一阶段做出了一个简单且有意思的改进:

增大每一个矿工的出块率;

推出一个新概念:ExpectedBlocksPerEpech,也就是 e,目前这个值设为 5,也就是说每一轮的出块数为 5;

并在其中采用了复杂的 GenerateCandidates 机制,按照sector的固定比例来计算;

推出选票制,按照选票来计算区块奖励。

无论一个矿工赢得几张选票,出一个区块就可以了。这个机制比较复杂。但是还是非常公平的。

但是,这种算法仍然隐含着问题,主要是在算力增大的情况下,在一个区块时间内的计算量呈线性增加,然而,区块时间是固定的,计算量逐步增大不合理。

因此,测试网第二阶段开始前,算法进一步改进,就是去掉了选票制。每一个矿工出块奖励都一样。但是,这里出现了一个 20% 上限的问题。

POS的秘密

20%的上限,看起来不公平,因为对于大于20%算力的矿工而言肯定是吃亏了。

但是这个重要吗?不重要。因为它对于算力小于20% 的矿工而言是公平的。如果全网每一个矿工的算力都小于 20%,就公平了。

也就是说,这个算法实际上是设置了一条算力的软上限——你可以超越这条线,但没有一丝好处。

这样的设置,对于去中心化而言反而是有帮助的。所以团队在设计时对此并不在意。但是矿工却需要很重视。

然而,在市场上我们却看到这个上限确实被不少矿工有意无意地忽视了。

既然如此,这个算法是否就没问题了?其实不然。

Filecoin测试为什么要抢算力排名?

这个算法有一个很大的问题,没有秘密了。

区块链出块的一个重要的安全因素就是随机性和不可预测性,也就是秘密选举。但是在目前的算法中,一个算力达到20%以上的矿工每一轮理论上都可以赢得选举,这就没有秘密可言了。

没有秘密,那很多事就好办了。比如几个大矿工一起做点坏事,那就太简单了。

Filecoin的出块权选举是POS,其权益比例已经公开了,在这个秘密选举的世界,公开的信息越多就越容易被利用。那么如果一个算法能够被利用来推算出谁能够肯定赢得选举,这就不太妥当了。

没有秘密的选举,缺失了随机性,就增加了一份危险。

更好的算法

是的,我们需要更好的算法、更安全,更随机地选举制,来保证链的安全。

这个问题一旦提出,大家头脑风暴一番,方案可能不少。比如:

还是加入选票制,减小大矿工的出块几率,提高选票权重来调节出块奖励

另外设置一个出块权概率的上限(也就是把上面的软上限进一步降低)

让每一个矿工在每一个高度进行多轮选举

......

我个人倾向于简单地设置上限的方式来解决问题,这样代码改变较小,可以兼顾效率和工程实现。但出块权不是小事,一定要慎重考虑和分析。

期待下一次的改进吧,应该很快就会发生了。