當Prysm節點開啟時間旅行的時候,他們約佔網路份額的62%。這意味著無法達到最終確定區塊的最低標準 (要有>2/3活躍驗證者在鏈上)。更糟糕的是,這些節點無法找到它們所期望的鏈 (時間軸上出現了4小時的間隔,它們都去到了未來稍微不同的時間),所以他們在對“丟失”的資料預測時,透過短分叉淹沒了整個網路。
那麼在這時,網路充斥著對鏈頭的不同的預測,因此所有客戶端開始應付越來越多的工作——確定哪個鏈頭是有效的。這導致節點落後、需要同步、記憶體不足和其他形式的混亂,所有這些都使問題更加惡化。
總的來說,這此事件是好的,因為這不僅讓我們修復了與時鐘相關的根本問題,還可以在大量節點故障和網路負載的情況下對客戶端進行壓力測試。也就是說,這次失敗告訴我們網路不能太極端,而該次事件的罪魁禍首就是因為Prysm的節點佔網路的大部分。
助力去中心化
有益於eth2
正如本系列的第二期文章裡所討論的那樣,根據非同步拜占庭容錯演算法,1/3是保證網路安全的一個神奇數字。如果超過1/3的驗證者離線了,epochs不能再被最終確定。所以儘管這時鏈仍在增長,也不再能對區塊進行確定,以及保證它是標準鏈的一部分。
有益於驗證者
很大程度上,驗證者是被激勵去做對網路有益的事情,而不是因為大家覺得這是件正確的事情所以才去做。
如果超過1/3的節點離線了,那麼對離線節點的懲罰便開始增加,這就是所謂的“不作為”懲罰。
這意味著,一名驗證者想要嘗試確保:如果自己的節點被逼下線了,那麼不可能同時逼其他節點下線。
罰沒也是一樣的。然而,由於規範或軟體出現錯誤/bug,驗證者總是有可能被罰沒,單個罰沒“僅僅”1個ETH。
然而,如果許多驗證者同時被罰沒,那麼懲罰會上升到32個ETH。而又是這個神奇的數字,當超過1/3的驗證者被罰沒時,便會產生32個ETH的罰沒。
這些激勵方式分別被稱為活性反相關和安全反相關,是eth2裡有意設計的一個方面。反相關機制透過將個體懲罰和每個驗證者對網路的影響程度捆綁在一起,激勵驗證者做出符合網路最大利益的決定。
資料的展示
許多獨立的團隊正在實現Eth2,每個團隊根據主要由Eth2研究團隊編寫的規範開發獨立的客戶端。這確保了有多個信標節點和驗證者客戶端實現,每一個團隊都對構建eth2客戶端所需的技術、語言、最佳化、權衡等做出不同的決策。這樣,任何一層系統中出現bug時,只會影響執行特定客戶端的使用者,而不會影響整個網路。
如果在這次Medalla Prysm發生的時間bug中,只有20%的eth2節點在客戶端Prysm上執行和85%的驗證者線上,那麼Prysm節點不會遭受“不作為”懲罰,而且只需一點小懲罰以及開發者們的幾個不眠夜就可以解決問題了。
相反,由於執行同一個客戶端的驗證者太多了(其中許多驗證者取消了罰沒保護),在很短的時間內罰沒了3500到5000個驗證者。
*高度的相關性意味著這些驗證者的罰沒懲罰約為16個ETH,因為他們使用的是一個比較普遍的客戶端。
*在撰寫本文時,罰沒還在不斷湧現,所以還沒有最終的數字。
用新的客戶端
現在是時候使用不同的客戶端參與測試了,找一個少部分驗證者在用的客戶端(可以點選此處檢視分佈狀況)。Lighthouse、Teku、Nimbus以及Prysm此時都執行得較為穩定,然Lodestar正迅速追趕中。
最重要的是,嘗試使用新的客戶端!我們可以在Medalla上嘗試構建更加健康的節點分佈,為去中心化主網做好準備。