2020年12月19日,Filecoin网络呈现了链上遏制,这意味着在一个时间窗口内,可以建设新的区块,但矿工们无法就发生的状态告竣共鸣,每小我私家计较的数值都纷歧样。得益于整个社区成员、矿工和开拓者的快速响应——官方在4小时内宣布了一个修复方案,网络在7小时内实现了完全规复。这篇文章描写了碰着的问题、间断的影响、快速响应以及接下来的事情。
原因
潜在的问题是对存储矿工参加者实现中的工具映射举办潜在的不确定性迭代。脚色在Go中实现的。众所周知,遍历Go映射是不确定的,而且参加者在利用迭代之前实施了始终对迭代功效举办排序的模式(强制执行静态阐明)。不幸的是,在对两个这样的舆图举办排序时利用的较量函数呈现了错误,导致排序无效(见#1335:https://github.com/filecoin-project/specs-actors/pull/1335)。因此,差异的节点以差异的顺序处理惩罚舆图条目,从而导致差异的功效和gas耗损。
这个代码路径实际上只有通过以下方法才气到达:(a)一个矿工同时公布多个扇区终止,可能(b)一个矿工同时规复超过多个分区的妨碍。(个中两种代码路径也能到达这一点,但在实践中大概性极小)。在此之前,这些路径在主网中都没有利用多个扇区/分区作为数据,从而袒露了不确定性。暂停是由多个扇区的同时终止激发的。
Filecoin参加者的测试涵盖了所接头的代码,但不包罗验证差异测试运行之间确定性执行的机制。 Lotus节点实现的集成测试未涵盖多个扇区。
妨碍影响
最重要的是在间断期间,没有任何数据丢失。固然无法制作新的区块临时抑制了网络上的生意业务,但一旦网络规复运行,所有存储的数据都是安详的,可以随时利用。另外要留意的是,Filecoin协议的类型划定,纵然在链上遏制的环境下也可以检索数据。因此,固然在事件产生期间无法举办链上生意业务,但Filecoin网络的焦点成果依然完好。另外,已采纳的修复法子确保了采矿业务自己不会因间断而受处处罚;相反,为了低落优先级并勉励网络规复,临时低落了共鸣削减。
快速回响
首先发明、识别、修复和陈设潜在问题的速度也很显著:
在事件产生后15分钟内,自动监测触发了警报。
三十分钟内,矿工和开拓人员应声而至,聚积在一起。
在四个小时内,开拓人员发明并宣布了问题的修复方案。
在7小时内,有足够多的节点回收了该修复措施,通过了大都共鸣的功率阈值,使网络规复正常。
对付一个年青的去中心化网络来说,这是一个令人难以置信的回响速度。纵然是成熟的链也时常会碰见停链和分叉的环境,Filecoin办理此事的时间与已经运行了几年的链相差无几,整个社区都应该为这次事件的处理惩罚速度感想自满。
这次规复全靠全世界多个集体的配合尽力得以实现。整个生态系统中的各方相助实现了这一方针:矿工发明并陈诉了这一问题,并提醒开拓者留意;工程团队协调开拓并宣布了一个颠末同行评审的补丁,以办理基础问题,同时通过社区渠道相同这一修复的状态;全球各地的参加者尽力应用该补丁,并尽快使网络从头上线。固然如此紧张的事件大概不会反复产生,但这是Filecoin生态系统内参加和存眷度的一个令人印象深刻的展示。
下一步怎么做
构建区块链就像造火箭一样,都长短常巨大的技能,很难在第一次实验时就把所有工作都做对,意外大概会以意想不到的方法呈现。当错误产生时,重要的是要有基本框架以尽快办理这个问题,,将坏影响降到最低,并低落再次产生的大概性。
为了实现这个方针,多个团队已经开始编写和执行过后阐明,以确定验证参加者?/?lotus的测试包围的特别改造,以及跨网络基本设施?/?通信的警报和问题进级,以辅佐减轻将来的事件。
感激Filecoin社区的耐性、辛勤事情和投入,这项新技能中的错误将不绝被批改。跟着每一个问题被发明息争决,网络将进一步成长成为一个不变、靠得住和可验证的平台。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。