以下内容源于Filecoin官方《Resolving the Dec 19 Chain Halt: Cause, Impact, Take Aways》
2020年12月,关注Filecoin市场的目光大部分投向了社区主办为期一天的存储市场峰会。但神算矿池同时也有关注到,在2020年12月19日,Filecoin网络经历了链停,这意味着在一段时间内可以创建新的区块,但矿工无法就此结果达成共识(每个区块计算的值不同)。由于社区成员,矿工和开发人员的快速响应,修复程序在4个小时内发布,网络在7个小时内完全恢复。
01 原因
潜在的问题,是对存储矿工参与者实现中的对象映射进行潜在的不确定性迭代。参与者在Go中实现。对Go映射的迭代是不确定的,并且参与者在使用迭代之前总是对迭代的结果进行排序(强制执行静态分析)。不幸的是,用于对两个这样的映射进行排序的比较函数中出现了一个错误,导致排序无效(参见#1335)。因此,不同的节点处理map条目的顺序不同,导致结果和Gas消耗也会有所不同。
02 停机影响
庆幸的是,在中断期间没有数据丢失。虽然无法创建新的块暂时抑制了网络上的交易,但存储提供商的所有数据都是安全的,一旦网络恢复运行就可以随时使用。此外,值得注意的是,Filecoin协议的规范提供了即使在链中断的情况下也可以数据检索的功能。因此,尽管在事件持续时间内不可能进行链上交易,但Filecoin网络的核心功能仍然完好无损。此外,修复措施的实施确保了挖矿作业本身不会因停机而受到惩罚;相反,为了优先并鼓励网络恢复,共识削减被暂时搁置。
03 快速反应
首次发现、识别、修复和部署潜在问题的速度也是值得注意的:
在事件发生后15分钟内,自动监控触发了警报。
在30分钟内,矿工和实施开发人员聚集在一起进行响应。 在4个小时内,开发人员确定并发布了该问题的修复程序。 在7个小时之内,足够多的节点采用了此修复程序,从而通过了多数共识的功率阈值,使网络走上了恢复的道路。
这一复苏只有通过世界各地多个团体的共同努力才能实现。Filecoin整个生态系统的各方通力合作,实现了这一目标:矿工发现并报告了问题,并让开发者注意到它;工程团队进行协调开发,并发布一个同行评审的补丁,同时通过社区渠道沟通修复的状态;全球各地的网络参与者都在努力应用补丁,使网络尽快恢复运行。虽然如此紧急的事件是不需要重复的,但这是一个令人印象深刻的展示Filecoin生态系统内的参与和关注的“机会”。
04 下一步做什么