2021年4月29日,Filecoin网络升级到版本12。此升级引入了specs-actors实现的版本4,specs-actors实现是指定Filecoin协议规则的一组内置actor。新版本的specs-actors设计性能显著提高,加快了区块验证时间。来自lotus、venus和forest的Filecoin核心开发人员共同实施并在短短几周内完成了这次升级,和跨时区的节点运营商展示了他们响应升级时间,迅速将这些性能改进到整个网络。
动 机
对所有区块链项目来说,确保验证一个区块所需的时间小于产生区块的频率是很重要的。在Filecoin网络上,每30秒就会产生一个区块,所以区块验证所需时间明显少于30秒是至关重要的。当然,区块验证取决于各种因素:节点的硬件规格、链式数据库的大小、节点上运行的其他进程,等等。
在v12升级之前,中等质量节点运行平稳,区块验证时间远低于30秒。但是,速度较慢的节点以及保留了完整链历史的节点(具有非常大的数据库)的验证时间较长,使他们在速度减慢的情况下有失同步的风险。虽然大多数拥有快速硬件和较小的链式数据库的矿工没有受到影响,但生态系统的其他重要成员,包括交易所和存档节点,开始经历一些减速和偶尔的同步问题,对整个网络的健康产生负面影响。
导致同步时间缓慢的原因之一,是参与者代码在处理新创建的矿工方面存在一些低效率。在过去的几个月中,网络经历了一些垃圾邮件浪潮,从而在链上创建了矿工,从而产生了过多的空矿工条目。这为显著提高性能提供了一个简单的机会,因为减少处理空矿工的时间可以大大加快区块验证的时间。在V12网络升级中推出这一改进,也主动防止了未来的CreateMiner垃圾信息从骚扰变成对较慢节点的攻击媒介。
性 能 提 升
要了解版本12中引入的性能改进,我们需要了解系统的一些细节。Filecoin cron actor,位于地址f03处,是网络在每个时期运行的系统actor。它的存在是为了运行状态转换,以保持Filecoin网络的顺利和正确运行。cron actor每60个纪元(30分钟)处理一次矿工actor,以验证矿工已经正确地证明了他们要检查的那部分扇区的存储。正是通过cron actor的处理,Filecoin协议可以确保其核心保证:网络作为一个整体,每24小时检查Filecoin上的全部存储,并自动检测和惩罚任何丢失或损坏的数据。
在网络版本12之前,cron actor将对每个单个矿工actor进行此处理。Filecoin版本12更改了cron actor,使其仅对需要它的矿工actor执行此处理。如果矿工正在积极证明存储,则“需要”cron工作。具体而言,这些条件中的任何一个都需要每60个纪元进行一次cron工作:1)具有活动的PreCommit,2)具有活动的扇区,3)具有归属表中锁定的归属奖励。
不满足任何这些条件的矿工actor在cron工作期间不需要做任何必不可少的工作,因此可以放心地跳过。特别是,新创建的矿工将不会立即请求cron作业,只有在它第一次开始向网络承诺存储时才会获得一份。
在这一优化生效后,Filecoin网络从每60个纪元处理约375,000个矿工变成略高于2000个。这使得平均区块同步时间快了一倍左右,每天的状态快照大小减少了20多GB,改进了近2倍! 节点运营商已经看到平均和最大区块同步时间的显著减少,并且几乎完全消除了大型存档节点失去同步的情况。
v12升级后同步时间缩短:

v12升级后,不同步的情况减少了(以历时计算):
图片
推 出 升 级
网络v12升级(引入了v4 actor)已在Lotus v1.8.0和venus v0.9.5中发布。Lotus团队在较短的时间内发布了该版本,从发布到网络升级时期只有大约48小时,这是所有节点运营商必须升级的截止日期。Filecoin社区能够执行快速升级非常重要,因为关键的安全问题可能需要在很短的时间内解决。为了为此类活动做准备,该网络在2020年9月的太空竞赛比赛中(主网升空前不久)经历了各种“战争游戏”场景。
社区在48小时的时间内毫不费力地升级到了v12,继续证明了其在将来需要时可以采用快速升级的能力。诸如此类的快速周转依赖于实施Filecoin协议的团队与各种节点运营商(包括存储矿工,存储客户端和交易所)之间有效的通信渠道。为了让每个人都能参与其中,Filecoin社区工程师在社区论坛中宣布了升级详细信息,包括升级要点,升级纪元以及指向实施发布时间表的链接,并更新了Filecoin网络状态页面带有可订阅的通知。然后,开发团队提供了响应式支持,以确保每个人都能通过多个支持渠道(包括论坛,Slack渠道等)及时平滑地升级其节点。
在较短的时间内正确实施此类更改也需要严格的测试和发布过程。Lotus团队能够使用过去几个月开发的新发行清单来做到这一点。另外,为了响应社区的反馈,Lotus团队谨慎地确保在这种强制性发行版中未引入未经测试的可选功能。相反,网络升级更改是在Lotus v1.6.0(Lotus最新稳定和经过测试的版本)之上提供的。对于需要最新功能的更多冒险用户,提供了候选版本Lotus v1.9.0-rc1,该版本合并了网络升级更改以及较新的功能。
Thank You
进行快速升级以提供诸如此类的重大性能改进并非易事!得益于过去几个月来收到的反馈和改进,核心开发人员能够实施,测试和发布可改善Filecoin网络的高质量代码。此外,Filecoin社区中各种节点运营商的持续参与,专用支持和快速响应能力确保了网络可以根据需要快速升级。谢谢!
来源:金色财经







