Filecoin测试为什么要抢算力排名?
本文由IPFS原力区Steven Li原作
Filecoin测试网第二阶段已经进行了一月有余,本周进行网络重置。一有重置必然会掀起算力大战,排名、爆块、挖矿效率...已经成为整个市场的默认目标。
为什么?市场宣传的需要使然。
但是这个时候,这些数据并不能真正说明问题。实际上,在当前的算法下,算力高可能意味着吃亏,而且出块权的计算方式仍在改变。
市场一览
周五(6月19日) 8:00,Filecoin 测试网按计划重置了。
因为很多改变与原实现不兼容,本次重置直接通过重置升级,好处是节省时间。这也是为了让开发团队集中精力在实现奖励阶段的实现上,而不用花很多时间来进行链的维护。
重置之后我们仍然看到,不少团队的宣发还是集中在:
算力排名
出块效率
Seal速度
可以理解,大家都需要做市场,做宣传,推动生态发展。总要宣传点什么。
但是,在目前阶段仅关注这几个方面,可能会一些误导:
广大受众并不一定能有一个准确的判断
信息也并不一定准确
之所以这么说,是因为就目前的实现而言:
算力占比过高,实际上代币收益是吃亏的;
在现在的网络中,算力占比较小者理论上更占优势,但与网络状况和同步效率关系较大;
Seal 速度展示了一定的优化能力,但是有时候和效率是相悖的;
Seal速度的展示是可以伪造的*(具体怎么造请参考第二阶段刚上线的时候的一些讨论,当然也可以通过第三方进行挑战的方式进行证明)。
*注:这里并不是说一定有人伪造,只是说技术上可行。
为什么这个阶段大家还抓住这些点不放,重复之前的各种指标呢?可能是因为节奏被带成这个样子了,可惜的是这次没人带新节奏。
算力与出块
为什么说算力占比过高,实际上代币收益是吃亏的?因为在第二阶段测试网中,算法又变了。
判断一个矿工能否赢得一轮挖矿权利依靠一个简单判断:
这里 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%,就公平了。
也就是说,这个算法实际上是设置了一条算力的软上限——你可以超越这条线,但没有一丝好处。
这样的设置,对于去中心化而言反而是有帮助的。所以团队在设计时对此并不在意。但是矿工却需要很重视。
然而,在市场上我们却看到这个上限确实被不少矿工有意无意地忽视了。
既然如此,这个算法是否就没问题了?其实不然。
这个算法有一个很大的问题,没有秘密了。
区块链出块的一个重要的安全因素就是随机性和不可预测性,也就是秘密选举。但是在目前的算法中,一个算力达到20%以上的矿工每一轮理论上都可以赢得选举,这就没有秘密可言了。
没有秘密,那很多事就好办了。比如几个大矿工一起做点坏事,那就太简单了。
Filecoin的出块权选举是POS,其权益比例已经公开了,在这个秘密选举的世界,公开的信息越多就越容易被利用。那么如果一个算法能够被利用来推算出谁能够肯定赢得选举,这就不太妥当了。
没有秘密的选举,缺失了随机性,就增加了一份危险。
更好的算法
是的,我们需要更好的算法、更安全,更随机地选举制,来保证链的安全。
这个问题一旦提出,大家头脑风暴一番,方案可能不少。比如:
还是加入选票制,减小大矿工的出块几率,提高选票权重来调节出块奖励
另外设置一个出块权概率的上限(也就是把上面的软上限进一步降低)
让每一个矿工在每一个高度进行多轮选举
......
我个人倾向于简单地设置上限的方式来解决问题,这样代码改变较小,可以兼顾效率和工程实现。但出块权不是小事,一定要慎重考虑和分析。
期待下一次的改进吧,应该很快就会发生了。
微信扫描关注公众号,及时掌握新动向
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场