以太坊 2.0|10月中旬 Medalla 測試網失常,到底是怎麼回事?何時恢復正常?

以太坊 2.0 測試網 Medalla  在上週六出現了失常,那到底發生了什麼事?這裡有一份 5 歲小孩也能理解的解釋。本文源自於 yorickdowne 部落格文章《ELI10: What is happening with Medalla?》,由專欄作者 以太坊愛好者 編譯、撰寫及整理。
(前情提要:手續費改革|以太坊開發者:如果EIP-1559早通過,過去一年就可「銷毀近100萬枚ETH」
(前情提要:期待落空!V神 : 以太坊2.0基礎層擴容要「再等幾年」,中短期仍須靠Layer 2方案

 

Medalla 測試網在 2020 年 10 月 17 號出現了變故(編者註:實際上,自 2020 年 10 月 14 號以來,Medalla 測試網便一直沒有敲定區塊)。

那到底發生了什麼事?這裡有一份 5 歲小孩也能懂得解釋。 (可能 5 歲不行,要 10 歲,但反正說是這麼說。)

  • 1)一堆驗證者停機了(也許是因為參與 zinken 測試網,也許是因為覺得厭煩了,誰知道勒)
  • 2)Medalla 測試網進入了無法敲定區塊的狀態
  • 3)Prysm 客戶端和 Nimbus 客戶端開始浮現一些同步方法上的 bug
  • 4)因為這個 bug,我們失去了更多驗證者,有一些從此再無音信
  • 5)網路沒有終局性,加大了節點的內存和 CPU 負擔,又使我們試去了許多驗證者因為他們的節點沒有辦法處理那麼大的負擔
  • 6-1)要嘛大批驗證者重新上線,讓網路重新獲得終局性;要嘛
  • 6-2)他們不上線,然後這些離線的驗證者一直一直、越來越快地喪失押金,直至我們重新獲得終局性。在這個過程中,可能某些驗證者還會因為餘額太低而被踢出隊伍
  • 7)你可以盯著 beaconcha.in 了解最新的網路參與率。其他網站基本上沒能追上最新的情況
  • 8)這種情況如果在主網上發生,不會持續那麼久,因為如果燒掉的是真正的 ETH,人們不會這樣無動於衷
  • 9)整個網路正像它設計的那樣,在大規模分裂的場景中自我修復
  • 10)如果是 6-2) 這種情況,我不確定網路多快能恢復正常,最快可能要到 10 月 25 號,最晚可能是(25 號)再晚 5 天
  • 11)如果你已經離線,但不想回去重新運營驗證者,這裡有個工具可以幫助你有序退出驗證者隊伍:Voluntary exit from Medalla testnet

延伸閱讀:以太坊2.0全入門! 跟 1.0 有什麼區別?Ethereum 2.0「17 個常見問題」告訴你

更為技術性的細節:

非啟動狀態(inactive)的驗證者不會被懲罰。

一個驗證者可能因為還待在待啟動隊列中,或者其押金還未得到處理,而停留在這種非活躍的狀態中 —— 當網路重新獲得終局性時,這些驗證者就會被啟動。

另外,如果一個啟動狀態的驗證者發送了主動退出的消息,也會變成非啟動狀態,也就不會被懲罰。

啟動狀態且在線的驗證者將保持不賺不虧的狀態,如果他們的見證消息的打包距離都是完美的 1 的話(即在上一個 slot 發出的見證消息,在這一個 slot 就被打包)。

但這是不可能的,所以他們會被輕微地懲罰。

以太坊基金會的 djrwto(即 Danny Ryan)已經聲明他們正在尋找一種辦法來安全地降低對這部分 「盡忠職守」 的驗證者的懲罰,因為這種懲罰,總的來說,體驗不好。

啟動狀態且不在線的驗證者會被懲罰,而且懲罰會呈平方級上升,也就是說,每個 epoch 處的懲罰都會不斷提高。

當一個驗證者在一個 epoch 內都沒有被打包見證消息,它就會被認定是離線了。

當然,如果一個驗證者所連接的信標鏈節點與網路失去同步,或者驗證者客戶端本身無法工作,也會出現這種無法提交見證消息的情況。

可以查找的原因包括客戶端的 bug 和 內存 / CPU 的資源使用。你也可以乘機學學如果從源代碼編譯客戶端,然後檢查一下自己的節點的資源用量。

我們在美國東部時間的 10 月 12 號早上就已經陷入無法敲定區塊的狀態了。 (這種狀態的定義是連續 4 個 epoch 無法敲定。)

從那時候開始,「平方型懲罰」 就開始啟動。

離線的驗證者的懲罰力度會隨著無終局性狀態的持續而不斷提高。

公式是:

懲罰 = 有效餘額 * 無終局性持續時間(Epochs-Since-Finality,即當前 epoch 高度減去上一次獲得終局性的 epoch 高度)/(2^25)

在數學上可以這麼說:

單個 epoch 對這些離線驗證者的懲罰會隨著無終局狀態的推移而線性增加,因此總懲罰(懲罰的總和)是平方型上升的(謝謝 torfbolt 指出)。

很難估計網路重新獲得終局性的時間,因為驗證者參與率會受到客戶端故障的影響而不斷波動。

如果一個驗證者的 「有效餘額」 低於 16 ETH(超不多是在帳戶餘額還剩 16.75 ETH 的時候),它會被踢出驗證者隊伍。

即使驗證者還未被踢出,不斷下降的餘額也意味著他們在共識過程中的權重會不斷降低。

我已經看到一份估計,認為我們會在約 13 天以後重新獲得終局性。

因此最早就是 10 月 25 號,附近。

一些驗證者自 8 月份啟動以來就沒發出過一條見證消息,這些驗證者的存在也會加速這個過程。

一個驗證者的餘額要降到 60.6% 需要大概 18 天,這也就是耗時的上限。

再經過三個連續的時段之後,終局性就將得以重建。離線驗證者的懲罰會回復到常規的、不那麼嚴厲的默認值上。

這裡有一份很好的 Eth 2.0 和信標鏈介紹材料:《The Beacon Chain Ethereum 2.0 explainer you need to read first

最後,如果你想找一個自動從源碼編譯客戶端的工具,請看:eth2-docker

📍相關報導📍

以太坊 2.0 的基本架構與設計抉擇

以太坊 2.0|項目負責人正式送出 Phase 0 升級提案,信標鏈上線在即

期待落空!V神 : 以太坊2.0基礎層擴容要「再等幾年」,中短期仍須靠Layer 2方案


讓動區 Telegram 新聞頻道再次強大!!立即加入獲得第一手區塊鏈、加密貨幣新聞報導。

LINE 與 Messenger 不定期為大家服務

加入好友

加入好友