急速7小时,Filecoin官方复盘网络中断事件!
共 1813字,需浏览 4分钟
· 2021-01-20
![](https://filescdn.proginn.com/8fac3aac87d5625733a53e26317c1d40/e60e7e55d2f2e512b0db4f52f3c179d8.webp)
![](https://filescdn.proginn.com/230a3185fc85ced1e919a70175437d57/3fd9f9e81166095a8a97720f7367e05f.webp)
![](https://filescdn.proginn.com/efa636e2401e5f6d34360e6846dfe22f/4a5ddede722cee17cdb70ed7614ab59d.webp)
Filecoin官方发布博客,复盘2020年12月19日Filecoin网络短时中断事件,宣传当前多个团队已经开始事后分析的编写和执行,以确定actors/lotus的测试覆盖范围,以及网络基础设施、通信警报等其他改进,以降低问题再次发生的可能性。
![](https://filescdn.proginn.com/132d869b0001de60204e4a27c341a74c/17dd8effd814cb5ef6c98a2d79be7bf2.webp)
2020年12月19日,Filecoin网络经历了链上中断,这意味着可以在一段时间内创建新的区块,但节点参与者无法就产生的状态达成共识,每个成员计算出不同的价值。
由于社区成员,节点参与者和开发人员之间的快速响应,修复程序在四个小时内发布,并且网络在七个小时内实现了完全恢复。
中断原因
潜在的问题是对存储节点参与者参与者实现中的对象映射进行潜在的不确定性迭代。角色在Go中实现。众所周知,遍历Go映射是不确定的,参与者使用一种模式来始终在使用迭代之前对迭代结果进行排序(强制执行静态分析)。
不幸的是,在对两个这样的地图进行排序时使用的比较函数中的错误导致排序无效(请参阅#1335)。因此,不同的节点以不同的顺序处理地图条目,从而导致不同的结果和Gas消耗。
![](https://filescdn.proginn.com/8d03913bd83444dd3f489a0d2d5ec2af/4feb4da5bea7db9c3feb5744f15957d1.webp)
该代码路径实际上只有通过(a)一个节点参与者声明多个扇区立即终止,或(b)一个节点参与者立即恢复跨越多个分区的故障,才能到达。(其他两个代码路径到了这一点,但实际上极不可能)。在此之前,主网中都没有使用这两种路径,没有将多个扇区/分区作为暴露非确定性的数据。多个部门的同时终止引发了这一停顿。
Filecoin参与者的测试涵盖了所讨论的代码,但不包括验证不同测试运行之间确定性执行的机制。Lotus节点实现的集成测试未涵盖终止多个扇区。
中断影响
最重要的是,应该强调的是,在中断期间没有丢失任何数据。虽然无法创建新的数据块暂时抑制了网络上的交易,但存储供应商提供的所有数据都是安全的,并且一旦网络恢复运行就可以使用。
此外,重要的是要注意,即使在链中断的情况下,Filecoin协议的规范也提供了数据检索。因此,尽管在事件持续时间内不可能进行链上交易,但Filecoin网络的核心功能仍保持不变。
此外,已采取的修复措施确保采矿作业本身不会因停机而受到处罚;取而代之的是,为了降低优先级并鼓励网络恢复,暂时降低了共识削减。
快速反应
首次发现,识别,修复和部署基本问题的速度也很明显:
事件发生后十五分钟内,自动监控触发了警报
在三十分钟内,节点参与者和实施开发人员聚集在一起
在四个小时内,开发人员确定并发布了此问题的修复程序
在七个小时之内,足够多的节点采用了此修复程序,以超过多数共识的功率阈值,使网络处于恢复的道路上
对于年轻的分散网络而言,这是一个令人难以置信的快速响应。整个社区应该为处理此事件的速度感到自豪。只有在世界各地多个团体的共同努力下才能实现这种恢复。
整个生态系统中的各方进行了协作以实现这一目标:
节点参与者检测并报告了该问题,并引起了开发人员的注意;
工程团队进行协调,以针对潜在问题开发并发布经过同行评审的补丁程序,同时通过社区渠道传达此修复程序的状态;
全球各地的网络参与者都在努力应用补丁程序,并使网络尽快恢复在线。
虽然不希望如此紧急的事件重复发生,但这是Filecoin生态系统内参与度和专注度的令人印象深刻的展示。
![](https://filescdn.proginn.com/d669c369b0b116e6a47cbd87a2fca670/8e67790ed35deee0835504812e7eadde.webp)
建立区块链就像建立软件火箭,它们是一项非常复杂的技术,因此很难在第一次尝试中就将所有事情都做好。就像真正的火箭一样,事情可能以意想不到的方式出错。当发生这种情况时,重要的是要有适当的基础架构以尽快解决问题,最大程度地减少影响并减少再次发生问题的可能性。
为了达到这个目的,多个团队进行了事后验收的编写和执行,确定了对参与者/角色的测试覆盖范围以及网络基础设施/通信的警报和问题升级的其他改进,以帮助减少未来的事件。
由于Filecoin社区耐心、辛勤的工作和投入,这种新颖技术的缺点不断得到解决。在发现并解决所有问题后,网络将进一步发展成一个稳定、可靠且经过验证的平台。
![](https://filescdn.proginn.com/e1e1acbebc01dd459901245cb667a4fb/19348a012b7db75a00ba8cee455d21c1.webp)