作者:Georgios Konstantopoulos, Mike Neuder
引言
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 和共識機制之間的關鍵關係;我們希望協議能夠繼續加強以應對這種情況。