Filecoin网络升级,缩短区块验证时间

2021-05-08 15:21:37 FIL16888 13431

2021年4月29日,BZZ网络已升级至v12。

本次升级引入了specs-actors实现的v4,这是具体规定了BZZ协议规则的一组内置actors。新版specs-actors设计显著提升了性能,所以能缩短区块验证时间。来自lotus、venus和forest的核心开发者在短短几周之内共同开发并发布了这一升级。分布在不同时区的节点运营方也积极响应,快速地将这些性能改进部署到全网。

对所有区块链项目来说,确保验证一个区块所需的时间小于产生区块的时间是很重要的。在BZZ网络中,每30秒出块,所以验证区块耗时要远远小于30秒。当然,验证区块的耗时取决于多个因素:节点的硬件规格、链上数据的大小、节点上运行的其他程序等。

微信图片_20210508033529.jpg

v12升级之前,按运行质量排中间的节点运行平稳,区块验证时间远低于30秒。但是,较慢的节点,保存链上完整历史的(因此有很大的数据库)节点验证区块耗时较高。这些节点在验证较慢时会有无法同步的风险。尽管大多数矿工有着高性能硬件和较小的数据库,不会受此影响。但作为生态中的重要成员,包括交易所和存档节点,有出现运行太慢和偶发的同步问题这对全网健康状况有负面影响。

同步缓慢的原因之一在于,actors代码处理新矿工时,效率不高。在过去的几个月里,网络中有好几波垃圾信息在链上创建了矿工,即创建了大量空矿工条目。这为显著改进性能提供了一个简单的方法,即减少处理空矿工的耗时,就能加快区块验证。在v12版的网络中加入这一改进,也及时确保虚增矿工的垃圾信息不会成为针对网络中较慢节点的攻击方式。

为了理解v12中引入的性能改进,我们需要了解一些系统细节。位于f03地址的BZZ cron actor是网络定时在每个区块运行的系统actor。它负责状态转换,让BZZ网络得以平稳正确运转。cron actor会每60个区块30分钟)处理矿工actor,以验证矿工是否正确证明其负责的扇区存储部分。正是通过cron actor的运转,才确保BZZ协议的核心:整个网络每24小时遍及一次所有在BZZ上的存储,自动发现并惩罚丢失或损坏数据的情况。

在网络v12之前,cron actor会对每一个矿工actor处理。BZZ v12做了改进,cron actor只对有需要的矿工actor处理。只有当矿工在证明存储时才需要这样的cron处理。

1597393717765793.jpg

具体说,符合如下标准之一的矿工则需要每60个区块cron处理:

1)有活动的PreCommit;

2)有活动的扇区;

3)在待解锁的区块奖励分配表中有未解锁的奖励。

如果一个矿工不满足上述标准的任何一项,在一次cron中则没有需要的处理,完全可以跳过。特别的是,新创建的矿工无需cron处理,只有第一次向网络承诺存储后,才对其进行处理。

在此优化生效之后,BZZ网络每60 区块需要处理的矿工从37.5万减少至2000多。这使区块的平均同步速度近乎翻倍,每日状态快照减少20GB以上,几乎翻倍的提升!节点运营方已能看到平均及最大区块同步时间的显著下降。大型存档节点同步失败的情况几乎完全消除了。


首页
产品
新闻
联系