全方位詳解MEV-Boost工作原理及Ethereum分叉選擇規則

原文標題:《Time, slots, and the ordering of events in Ethereum Proof-of-Stake》

原文作者:Georgios Konstantopoulos, Mike Neuder

原文編譯:Kxp,BlockBeats

引言

4 月 2 日,惡意的 Ethereum 網路參與者利用 MEV-Boost 中繼中的漏洞從一個 MEV 搜尋者那裡竊取了 2000 萬美元(請參閱 Flashbots 的報告)。接下來幾天,開發者透過釋出五個補丁來解決這個漏洞。這些補丁,加上網路延遲和驗證器策略,導致 Ethereum 網路在 4 月 6 日出現了短暫的波動。重組區塊對網路健康會產生不利影響,因為它們減緩了區塊的生產速率並降低了結算保障(settlement assurances)。

在這篇文章中,由於搜尋者受到攻擊且網路暫時不穩定,我們探討了 MEV-Boost 與共識之間的相互作用,分析了 Ethereum 的權益證明機制的微妙之處,並列舉了一些可能的前進路徑。

MEV-Boost 及其重要性

MEV-Boost 是由 Flashbots 和社羣設計的一個協議,旨在減輕最大可提取價值(MEV)對 Ethereum 網路的負面影響。

MEV-Boost 中有 3 個參與者:

1. 中繼——相互信任的拍賣者,連線出塊者和區塊構建者

2. 構建者——構建區塊的複雜實體,以最大化自己和出塊者的 MEV

3. 出塊者——Ethereum 的權益證明驗證者

每個區塊的大致事件序列是:

1. 構建者透過從使用者、搜尋者或其他(私人或公共)訂單流接收交易建立一個區塊

2. 構建者將該區塊提交給中繼

3. 中繼驗證塊的有效性並計算它向出塊者支付的金額

4. 中繼向當前 slot 的出塊者傳送空白標題和支付值

5. 出塊者評估他們收到的所有出價,並簽署與最高付款相關聯的空白標題

6. 出塊者將此已簽名標題傳送回中繼

7. 中繼使用它們的原生信標節點發布區塊,並將其返回給出塊者。獎勵透過區塊內的交易和區塊獎勵分配給建設者和提議者。

中繼是一個受信任的第三方,促進出塊者公平交換區塊空間和構建者用於 MEV 提取的交易排序。中繼透過保護構建者免受 MEV 偷竊,避免出塊者複製構建者交易以取走 MEV 而不分配給發現它的搜尋者/構建者來保護構建者。中繼透過確認構建者區塊的有效性、代表出塊者處理每個 slot 上的數百個區塊以及確保出塊者支付的準確性來保護出塊者。

MEV-Boost 是關鍵的協議基礎設施,因為它使所有出塊者都能夠民主地訪問 MEV,而無需與構建者或搜尋者建立信任關係,這有助於 Ethereum 的長期去中心化。

Ethereum 的分叉選擇規則與 MEV-Boost

在探討攻擊和響應之前,我們先來看看 Ethereum 的權益證明機制和相關的分叉選擇規則。分叉選擇規則允許網路就鏈頭達成共識,《Ethereum 合併後的重組》這篇文章中對其做出了定義:

「分叉選擇規則是一個由客戶端評估的函式,它用已看到的區塊和其他訊息作為輸入,並向客戶端輸出「規範鏈」。分叉選擇規則十分重要,因為可能有多個有效的鏈可供選擇(例如,如果同時釋出具有相同父塊的兩個競爭塊)。」

分叉選擇規則也與時間相關,這對出塊有重大影響。

slot 和 sub-slot 週期

在 Ethereum 的權益證明機制中,時間被分割為每 12 秒為一組的 slot。權益證明演算法隨機分配驗證者在該 slot 內提出塊的許可證;這個驗證者被稱為出塊者。在同一 slot 內,其他驗證者被分配為根據其本地檢視應用分叉選擇規則來為鏈頭進行驗證(投票)的任務。這 12 秒的 slot 被細分為三個階段,每個階段消耗 4 秒。

在 slot 中發生的事件如下所示,其中 t= 0 表示 slot 的開始。

在 slot 期間,最關鍵的時刻是在 t= 4 時的認證截止時間。如果認證驗證者在認證截止時間前沒有看到區塊,他們將會投票給鏈上先前被接受的頭部(根據分叉選擇規則)。一個區塊被提出的時間越早,它就有更多的時間傳播,從而積累更多的認證(因為更多的驗證者在認證截止時間前看到它)。

從網路健康的角度來看,區塊釋出的最佳時間是 t= 0 (根據規範規定)。然而,由於區塊價值隨著時間單調遞增,出塊者有動機推遲其區塊的釋出,以便更多的 MEV 積累。有關詳細資訊,請參見  Timing games in Proof-of-Stake  和本討論 。

以前,出塊者可以在認證截止時間後(甚至接近 slot 的結束)釋出區塊,只要下一個驗證者在建立其後續 slot 的區塊之前觀察到該區塊即可。這是由於子區塊繼承父區塊的權重,分叉選擇規則在葉節點終止。因此,推遲區塊釋出沒有任何副作用。為了幫助將理性行為(推遲區塊釋出)轉向誠實行為(按時釋出),實施了「誠實重組」(honest reorg)。

出塊者獎勵機制和誠實重組

兩個新的概念被引入到共識客戶端中,對認證截止時間有關鍵的影響。

1. 出塊者獎勵機制——旨在透過授予出塊者等同於 40% 全部認證權重的分叉選擇「獎勵」來儘量減少重組平衡攻擊。重要的是,這個獎勵僅持續整個 slot。

2. 誠實重組——利用出塊者加速,允許誠實的出塊者強制重組認證權重低於 20% 的區塊。這已經在 Lighthouse 和 Prysm 中實現(從 v 4.0 – Capella 釋出版開始)。這個改變是可選的,因為它是出塊者作出的決策,不影響認證驗證者的行為。因此,我們不用將其同時應用於所有客戶端,它也沒有與任何特定的硬分叉相關聯。

需要注意的是,在一些特殊情況下會避免使用誠實重組:

1. 在 epoch 邊界區塊期間 

2. 如果鏈沒有最終確定 

3. 如果鏈頭不是重組前 slot 的頭部

情況 3 確保誠實重組只會從鏈中刪除一個區塊,這起到了斷路器的作用,使得鏈能夠在極端網路延遲期間繼續生成塊。這也反映了提案者對網路的看法的信心降低了,因為他們無法確定其提議增強的塊是否將被視為規範。

下圖展示瞭如何改變誠實行為以實施重組策略。

在這種情況下,讓 b 1 代表一個遲到的塊。由於延遲,b 1 只有第 n 個 slot 的 19% 的證明權重。剩餘的 81% 的證明權重分配給父塊 HEAD,因為許多證明者沒有在證明截止期之前看到 b 1 。

如果沒有誠實的重組,第 n  1 個 slot 的提案者會將 b 1 視為鏈的頭並構建子塊 b 2 。提案者沒有努力重組 b 1 ,儘管它只有 19% 的證明權重。在第 n  1 個 slot,b 2 具有提案者的增強,假設它按時交付,b 2 將透過積累該 slot 的大多數證明成為規範。

有了誠實的重組,情況大不相同。現在,第 n  1 個 slot 的提案者看到 b 1 的 19% 證明權重低於重組閾值,因此他們建立一個以 HEAD 為父塊的塊,並強制重組 b 1 。當我們到達第 n  1 個 slot 的證明截止期時,誠實的證明者將比較 b 1 (19% )與 b 2 (來自提案者增強的 40% )的相對權重。所有客戶端都實現提案者增強,因此 b 2 將被視為鏈的頭,並將積累第 n  1 個 slot 的證明。

針對解綁攻擊的中繼和信標節點修復 

在 4 月 2 日的 unbundling 攻擊中,提案者利用中繼漏洞向中繼傳送了一個無效的簽名頭。在接下來的幾天裡,中繼和核心開發團隊釋出了許多軟體補丁,以減輕重複攻擊的風險。五個主要更改如下:

中繼更改: 檢查資料庫中已知的惡意提案者(僅由超聲波中繼在生產中使用,並已被刪除)。 檢查中繼是否已將完整塊傳遞到 P2P 網路中的某個 slot。 在塊釋出之前引入 0-500 ms 範圍內的均勻隨機延遲(已從所有中繼中刪除)。

信標節點更改(僅適用於中繼信標節點): 在廣播之前驗證信標塊。 在釋出區塊之前檢查網路是否存在錯誤確認。 這些更改的結合導致了共識不穩定性,這一問題加劇了由於大部分驗證者現在使用上述誠實重組策略而產生的影響。

意外的後果 

上述的五項更改都在中繼塊釋出的熱路徑中引入了延遲,這增加了中繼塊在確認截止時間之後廣播的機率。下圖顯示了這五項檢查的順序以及引入的延遲如何導致區塊釋出超過確認截止時間。

在實施這些檢查之前,大量滯後於 t = 0 (例如 t = 3 )的已簽名頭部通常不會產生問題。由於中繼的開銷非常低,因此它將在 t = 4 之前釋出區塊,而無需等待確認截止時間。

然而,由於這五個修補程序的延遲引入,中繼現在可能部分負責遲延廣播。讓我們看看下面的假設性區塊釋出過程。

中繼在 t = 3 時從出塊者處接收到已簽名頭部。到了 t = 4 ,中繼仍在執行檢查,因此廣播將在確認截止時間之後進行。在這種情況下,出塊者傳送的延遲已簽名頭部和中繼引入的一些額外延遲的結合導致了未能在確認截止時間之前廣播。如果沒有誠實的重組,這些區塊很可能已經進入鏈上。如圖 2 所示,接下來 slot 的誠實出塊者不會因為這些區塊遲到而故意進行重組。然而,如果錯過了確認截止時間,則這些區塊將被下一個出塊者重組。

因此,在攻擊後的幾天中,分叉塊的數量急劇增加。

Metrika 的兩週資料顯示,在最壞的情況下,一小時內可能會有 13 個區塊(4.3 %)被重新組織,這是正常情況的約 5 倍。隨著中繼器推出各種更改,分叉塊的數量急劇增加變得明顯。感謝中繼操作員和核心開發人員的偉大社羣努力,一旦瞭解到影響,許多更改被撤回,網路恢復到了健康狀態。

截至今天,最有用的更改是信標節點塊驗證和發出之前的抵賴檢查。惡意的出塊者不能再透過向中繼傳送無效頭部並確保中繼信標節點在釋出之前不看到抵賴塊來執行攻擊。儘管如此,中繼仍然面臨著 MEV-Boost 和 ePBS 中提出的更一般的抵賴攻擊。

下一步行動

在這篇文章中,我們強調了 MEV-Boost 的工作原理以及它對 Ethereum 共識的關鍵性。我們還對與時間有關的 Ethereum 分叉選擇規則中的一些較少知道的方面進行了詳細分析。透過使用「解綁」攻擊和開發人員的反應作為案例研究,我們強調了分叉選擇規則與時間有關的方面的潛在脆弱性以及其對網路穩定性的影響。

考慮到這一點,研究界應該評估什麼是「可接受」的重新組織次數,並考慮抵賴攻擊的更一般曝光情況,以確定是否應該實施緩解措施。

此外,目前正在積極探索多個未來方向:

1. 實施頭鎖機制,以保護 MEV-boost 免受等價錯誤攻擊。這還需要更改共識客戶端軟體並可能需要規範更改以擴充套件證明提交期限。

2. 增加 MEV-Boost 軟體的漏洞賞金計劃的數量和傳播力度。

3. 擴充套件模擬軟體以探索 sub-slot 定時如何影響網路穩定性,這可以用於評估如何調整證明提交期限以減少重組。

4. 最佳化中繼上的區塊釋出路徑以減少不必要的延遲——這已經在探索當中。

5. 承認 MEV-boost 是核心協議功能,並將其納入共識客戶端,即「enshrined-PBS (ePBS)」。兩個 slot 的 ePBS 容易受到明顯的攻擊,因此實施「頭鎖機制」仍然是一種選擇。

6. 透過圍繞延遲和認證截止時間的問題加入更多的 hive 和/或 spec 測試。

7. 透過構建中繼規範的其他實現,鼓勵中繼客戶端的多樣性。

8. 考慮調整對於明顯攻擊的懲罰,但要記住即使進行完整的 32 個 ETH 的懲罰,也可能無法阻止在極大的 MEV 機會存在時的惡意行為。

9. 重新審視 sub- slot 計時,並考慮調整區塊傳播階段(例如,將認證截止時間從 t= 4 調整到 t= 6 )。

總的來說,我們對 MEV 和 mev-boost 生態的再次興起感到興奮。透過解綁攻擊和緩解措施,我們已經瞭解了延遲,MEV-boost 和共識機制之間的關鍵關係;我們希望協議能夠繼續加強以應對這種情況。

原文連結

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *