急速7小時(shí),F(xiàn)ilecoin官方復(fù)盤(pán)網(wǎng)絡(luò)中斷事件!



Filecoin官方發(fā)布博客,復(fù)盤(pán)2020年12月19日Filecoin網(wǎng)絡(luò)短時(shí)中斷事件,宣傳當(dāng)前多個(gè)團(tuán)隊(duì)已經(jīng)開(kāi)始事后分析的編寫(xiě)和執(zhí)行,以確定actors/lotus的測(cè)試覆蓋范圍,以及網(wǎng)絡(luò)基礎(chǔ)設(shè)施、通信警報(bào)等其他改進(jìn),以降低問(wèn)題再次發(fā)生的可能性。

2020年12月19日,F(xiàn)ilecoin網(wǎng)絡(luò)經(jīng)歷了鏈上中斷,這意味著可以在一段時(shí)間內(nèi)創(chuàng)建新的區(qū)塊,但節(jié)點(diǎn)參與者無(wú)法就產(chǎn)生的狀態(tài)達(dá)成共識(shí),每個(gè)成員計(jì)算出不同的價(jià)值。
由于社區(qū)成員,節(jié)點(diǎn)參與者和開(kāi)發(fā)人員之間的快速響應(yīng),修復(fù)程序在四個(gè)小時(shí)內(nèi)發(fā)布,并且網(wǎng)絡(luò)在七個(gè)小時(shí)內(nèi)實(shí)現(xiàn)了完全恢復(fù)。

中斷原因
潛在的問(wèn)題是對(duì)存儲(chǔ)節(jié)點(diǎn)參與者參與者實(shí)現(xiàn)中的對(duì)象映射進(jìn)行潛在的不確定性迭代。角色在Go中實(shí)現(xiàn)。眾所周知,遍歷Go映射是不確定的,參與者使用一種模式來(lái)始終在使用迭代之前對(duì)迭代結(jié)果進(jìn)行排序(強(qiáng)制執(zhí)行靜態(tài)分析)。
不幸的是,在對(duì)兩個(gè)這樣的地圖進(jìn)行排序時(shí)使用的比較函數(shù)中的錯(cuò)誤導(dǎo)致排序無(wú)效(請(qǐng)參閱#1335)。因此,不同的節(jié)點(diǎn)以不同的順序處理地圖條目,從而導(dǎo)致不同的結(jié)果和Gas消耗。

該代碼路徑實(shí)際上只有通過(guò)(a)一個(gè)節(jié)點(diǎn)參與者聲明多個(gè)扇區(qū)立即終止,或(b)一個(gè)節(jié)點(diǎn)參與者立即恢復(fù)跨越多個(gè)分區(qū)的故障,才能到達(dá)。(其他兩個(gè)代碼路徑到了這一點(diǎn),但實(shí)際上極不可能)。在此之前,主網(wǎng)中都沒(méi)有使用這兩種路徑,沒(méi)有將多個(gè)扇區(qū)/分區(qū)作為暴露非確定性的數(shù)據(jù)。多個(gè)部門(mén)的同時(shí)終止引發(fā)了這一停頓。
Filecoin參與者的測(cè)試涵蓋了所討論的代碼,但不包括驗(yàn)證不同測(cè)試運(yùn)行之間確定性執(zhí)行的機(jī)制。Lotus節(jié)點(diǎn)實(shí)現(xiàn)的集成測(cè)試未涵蓋終止多個(gè)扇區(qū)。

中斷影響
最重要的是,應(yīng)該強(qiáng)調(diào)的是,在中斷期間沒(méi)有丟失任何數(shù)據(jù)。雖然無(wú)法創(chuàng)建新的數(shù)據(jù)塊暫時(shí)抑制了網(wǎng)絡(luò)上的交易,但存儲(chǔ)供應(yīng)商提供的所有數(shù)據(jù)都是安全的,并且一旦網(wǎng)絡(luò)恢復(fù)運(yùn)行就可以使用。
此外,重要的是要注意,即使在鏈中斷的情況下,Filecoin協(xié)議的規(guī)范也提供了數(shù)據(jù)檢索。因此,盡管在事件持續(xù)時(shí)間內(nèi)不可能進(jìn)行鏈上交易,但Filecoin網(wǎng)絡(luò)的核心功能仍保持不變。
此外,已采取的修復(fù)措施確保采礦作業(yè)本身不會(huì)因停機(jī)而受到處罰;取而代之的是,為了降低優(yōu)先級(jí)并鼓勵(lì)網(wǎng)絡(luò)恢復(fù),暫時(shí)降低了共識(shí)削減。

快速反應(yīng)
首次發(fā)現(xiàn),識(shí)別,修復(fù)和部署基本問(wèn)題的速度也很明顯:
事件發(fā)生后十五分鐘內(nèi),自動(dòng)監(jiān)控觸發(fā)了警報(bào)
在三十分鐘內(nèi),節(jié)點(diǎn)參與者和實(shí)施開(kāi)發(fā)人員聚集在一起
在四個(gè)小時(shí)內(nèi),開(kāi)發(fā)人員確定并發(fā)布了此問(wèn)題的修復(fù)程序
在七個(gè)小時(shí)之內(nèi),足夠多的節(jié)點(diǎn)采用了此修復(fù)程序,以超過(guò)多數(shù)共識(shí)的功率閾值,使網(wǎng)絡(luò)處于恢復(fù)的道路上
對(duì)于年輕的分散網(wǎng)絡(luò)而言,這是一個(gè)令人難以置信的快速響應(yīng)。整個(gè)社區(qū)應(yīng)該為處理此事件的速度感到自豪。只有在世界各地多個(gè)團(tuán)體的共同努力下才能實(shí)現(xiàn)這種恢復(fù)。
整個(gè)生態(tài)系統(tǒng)中的各方進(jìn)行了協(xié)作以實(shí)現(xiàn)這一目標(biāo):
節(jié)點(diǎn)參與者檢測(cè)并報(bào)告了該問(wèn)題,并引起了開(kāi)發(fā)人員的注意;
工程團(tuán)隊(duì)進(jìn)行協(xié)調(diào),以針對(duì)潛在問(wèn)題開(kāi)發(fā)并發(fā)布經(jīng)過(guò)同行評(píng)審的補(bǔ)丁程序,同時(shí)通過(guò)社區(qū)渠道傳達(dá)此修復(fù)程序的狀態(tài);
全球各地的網(wǎng)絡(luò)參與者都在努力應(yīng)用補(bǔ)丁程序,并使網(wǎng)絡(luò)盡快恢復(fù)在線。
雖然不希望如此緊急的事件重復(fù)發(fā)生,但這是Filecoin生態(tài)系統(tǒng)內(nèi)參與度和專(zhuān)注度的令人印象深刻的展示。

建立區(qū)塊鏈就像建立軟件火箭,它們是一項(xiàng)非常復(fù)雜的技術(shù),因此很難在第一次嘗試中就將所有事情都做好。就像真正的火箭一樣,事情可能以意想不到的方式出錯(cuò)。當(dāng)發(fā)生這種情況時(shí),重要的是要有適當(dāng)?shù)幕A(chǔ)架構(gòu)以盡快解決問(wèn)題,最大程度地減少影響并減少再次發(fā)生問(wèn)題的可能性。
為了達(dá)到這個(gè)目的,多個(gè)團(tuán)隊(duì)進(jìn)行了事后驗(yàn)收的編寫(xiě)和執(zhí)行,確定了對(duì)參與者/角色的測(cè)試覆蓋范圍以及網(wǎng)絡(luò)基礎(chǔ)設(shè)施/通信的警報(bào)和問(wèn)題升級(jí)的其他改進(jìn),以幫助減少未來(lái)的事件。
由于Filecoin社區(qū)耐心、辛勤的工作和投入,這種新穎技術(shù)的缺點(diǎn)不斷得到解決。在發(fā)現(xiàn)并解決所有問(wèn)題后,網(wǎng)絡(luò)將進(jìn)一步發(fā)展成一個(gè)穩(wěn)定、可靠且經(jīng)過(guò)驗(yàn)證的平臺(tái)。

