2021年4月29日,Filecoin网络升级至版本12。此次升级引入了specs-actors的第4版本,该版本是指定Filecoin协议的一组内置actor。新版本的specs-actor性能更高,验证时间更快。
升级动机
对于所有区块链项目而言,重要的是要保证区块验证所需的时间少于区块生成的频率。在Filecoin网络上,每30秒生成一次块,所以很重要的一点是,块验证所用的时间必须少于30秒。当然,块验证取决于多种因素:节点的硬件规格,链数据库的大小,节点上正在运行的其他进程等等。
在v12升级之前,中等质量节点运行平稳,块验证时间不到30秒。但是,速度较慢的节点以及保留了完整链历史的节点(具有非常大的数据库)的验证时间也更长,从而使它们有在速度下降的情况下不同步的风险。尽管大多数使用高性能硬件和较小链数据库的矿工不会受到影响,但是生态系统中的其他重要成员,包括交易所和档案节点,都开始遇到一些速度变慢和偶尔的同步问题,对整个网络的健康产生了负面影响。
同步时间缓慢的原因之一是扇区代码在处理新创建的节点时效率低下。过去几个月里,网络经历了一些垃圾信息浪潮,从而在链上创建了矿工,产生了过多的空矿工条目。
在v12网络升级中推出此改进措施还可以主动防止将来的CreateMiner垃圾信息转变为针对速度较慢的节点的攻击媒介。因为减少处理空矿机所花费的时间可以大大降低块验证时间,进而提升性能。
性能提升
要知道版本V12中改进的性能,我们先来了解系统的一些细节。
Filecoin cron actor,位于地址f03处,是网络在每个时期运行的系统扇区。运行状态转换可以保持Filecoin网络平稳,正确地运行。Cron actor每60个区块高度(30分钟)处理一次矿工扇区,以验证矿工对要检查的一小部分扇区是否有正确的存储证明。通过cron actor的处理,Filecoin协议可以保证:整个Filecoin网络每24小时自动检查一次存储情况,任何丢失或损坏数据的矿工将被惩罚。
在网络版本12之前,cron actor处理单个矿工扇区。Filecoin版本12更改了cron actor,使其仅对需要它的矿工扇区进行处理。如果矿工正在积极证明其存储,则需要cron工作。
具体而言,以下条件中的任何一个都需要每60个区块高度进行一次cron工作:
- 具有活跃的PreCommit;
- 具有活跃的扇区;
- 有质押的奖励。
不满足以上任何条件的矿工扇区在cron工作期间不需要做不必要的工作,可以放心跳过。特别是,新创建的矿工节点将不会立即请求cron作业,只有在它第一次开始向网络保证存储时才会需要。
这项优化措施生效后,Filecoin网络已从每60个区块高度处理约375000个矿工到现在的2000多个区块高度。这使得块平均同步时间大约快了一倍,并且每日状态快照的大小减少了20GB以上,几乎提高了2倍!平均和最长块同步时间明显减少,并且几乎完全消除了大型归档节点不同步的情况。
v12升级后降低了同步时间:
v12升级后减少了不同步的实例 :
运行v12
Lotus v1.8.0和venus v0.9.5中发布了网络v12升级,此次升级包含v4 actor。Lotus团队在较短的时间内发布了该版本,从发布到网络升级只有大约48小时,所有节点运营商必须在48小时内完成升级。社区能够快速完成升级非常重要,因为可能需要在很短的时间内关键安全问题。为应对此类事件,网络在2020年9月的太空竞赛中(主网上线前不久)测试了各种 “war game” 场景。
社区在48小时内快速完成了v12升级,证明了其将来需要时可以快速升级的能力。诸如此类的快速升级依赖于Filecoin执行团队与各节点运营商(包括存储矿工,存储客户端和交易所)之间有效的通信渠道。为了使每个人都能参与其中,Filecoin社区工程师在社区论坛中宣布了升级的详细信息,包括升级要点,升级区块高度以及发布时间表的链接,并更新了Filecoin网络状态页面,使其通知可订阅。然后,开发团队快速响应,以保证每个人都能通过多个支持渠道(包括论坛,Slack频道等)及时顺利地升级其节点。
在较短的时间内正确执行此类改动还需要经过严格的测试和发布流程。Lotus团队能够使用过去几个月开发的新计划清单来做到这一点。另外,为了响应社区的反馈,Lotus团队保证在这种强制性发行版中没有引入未经测试的可选功能。相反,此次网络升级更改是在Lotus v1.6.0之上发布的,Lotus v1.6.0是Lotus最新的稳定版本,已经过测试。对于需要最新功能并愿意承受更大风险的用户,可以选择升级候选版本Lotus v1.9.0-rc1,该版本包含了此次网络升级内容以及更多其他新功能。
感谢
本次能够如此快速的完成升级以改进诸如此类的重大性能并非易事!得益于团队过去几个月来收到的反馈以及做出的改进,核心开发人员才能够执行,测试和发布可改善Filecoin网络的高质量代码。此外,感谢Filecoin社区各节点运营商快速响应以及持续参与支持Filecoin的建设,才能保证此次网络迅速完成升级。感谢大家!
来源:(IPFS搬运工)