官方回顾12月19日FIL网络中断的分析和改进方法

[复制链接]
8179 |0
发表于 2021-1-18 19:12:13 | 显示全部楼层 |阅读模式

2020年12月19日。FIL网络经历了链式停顿,虽然在接下来的一段时间内可以继续创建区块,但是矿工无法就新的生产达成共识,每个矿工对区块的价值计算是不同的。但由于社区成员、矿工和开发人员之间的快速响应,让修复程序在四个小时内就上线发布了,并在七个小时内实现了网络的全面恢复。本文试着阐述遇到了哪些问题以及中断的影响、快速响应和下一步采取的措施。V|jasonbody

主网中断的原因

这次FIL网络中断的问题是对矿工参与者实现中的对象映射进行潜在的不确定性迭代。角色是在Go中实现的,但众多周知Go映射是不确定的,参与者使用一种模式来始终在使用迭代之前对迭代结果进行排序(强制执行静态分析)。不幸的是,在对两个这样的地图进行排序时使用的比较函数中的错误导致排序无效,因此,不同的节点以不同的顺序处理地图条目,从而导致不同的结果和Gas消耗。

该代码路径实际上只有通过(a)一个矿工声明多个扇区立即终止或(b)一个矿工立即恢复跨越多个分区的故障,才能到达。(其他两个代码路径到了这一点,但实际上极不可能)。在此之前,主网中都没有使用这两种路径,没有将多个扇区/分区作为暴露非确定性的数据。多个部门的同时终止引发了这一停顿。

FIL参与者的测试涵盖了所讨论的代码,但不包括验证不同测试运行之间确定性执行的机制。Lotus节点实现的集成测试未涵盖终止多个扇区。

FIL主网停顿造成的影响

最重要的是,应该强调的是,在中断期间没有丢失任何数据。虽然无法创建新的数据块暂时抑制了网络上的交易,但存储供应商提供的所有数据都是安全的,并且一旦网络恢复运行就可以使用。此外,重要的是要注意即使在链中断的情况下,FIL协议的规范也提供了数据检索。

因此,尽管在事件持续时间内不可能进行链上交易,但FIL网络的核心功能仍保持不变。此外,已采取的修复措施确保采矿作业本身不会因停机而受到处罚;取而代之的是,为了降低优先级并鼓励网络恢复,暂时降低了共识削减。

官方团队和社区成员的快速反应

社区成团和官方团队对这次事件问题的首次发现、识别、修复和部署的速度同样可圈可点:

l 事件发生后十五分钟内,自动监控触发了警报;

l 在三十分钟内,矿工和实施开发人员聚集在一起;

l 在四个小时内,开发人员确定并发布了此问题的修复程序;

l 在七个小时之内,足够多的节点采用了此修复程序,以超过多数共识的功率阈值,使网络处于恢复的道路上。

对于刚上线的FIL网络而言,这是一个令人难以置信的快速响应。即使是建立了多年的区块链项目对比,FIL的反应速度也是不逊色丝毫的。整个社区应该为处理此事件的速度感到自豪。

只有在世界各地多个团体的共同努力下才能实现这种复苏。整个生态系统中的各方进行了协作才能实现这一目标:

矿工检测并报告了该问题,并引起了开发人员的注意;

工程团队进行协调,以针对潜在问题开发并发布经过同行评审的补丁程序,同时通过社区渠道传达此修复程序的状态;

全球各地的网络参与者都在努力应用补丁程序,并使网络尽快恢复在线。

虽然不需要如此紧急的事件不再重复,但这是FIL生态系统内参与度和专注度的令人印象深刻的展示。

FIL下一步该如何建设

建立区块链项目就像建设一个软件方面的火箭,它是一项非常复杂的技术,所以在第一次尝试的时候很难将其建设的非常完满。就像真正的火箭项目一样,错误很可能出在大家都意想不到的地方。而当错误发生的时候,重要的是要有适当的基础架构以尽快解决问题,最大程度的减少影响并防止相同的错误再次出现的可能性。

为了达到这个目标,FIL的多个团队进行了事后验收程序的编写和执行,确定了对参与者/角色的测试覆盖范围以及网络基础设施/通信的警报和问题升级的其他改进,以帮助减轻未来的事件。

由于FIL社区的耐心,辛勤工作和投入,这种新颖技术的缺点不断得到解决。在发现并解决所有问题后,网络将进一步发展成一个稳定,可靠且经过飞行验证的平台。

 

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表