Paradigm:探討 MEV-Boost 和共識機制之間的關係
原文標題:《Time, slots, and the ordering of events in Ethereum Proof-of-Stake》
原文作者:Georgios Konstantopoulos、Mike Neuder,Paradigm
原文編譯:wesely,GWEI Research
4 月 2 日,一名惡意的以太坊網絡參與者利用 mev-boost-relay 中的漏洞竊取了一位 MEV 搜索者的 2000 萬美元(請參閱 Flashbots 的事後分析)。在接下來的幾天裡,開發人員通過發布五個補丁來解決這個 bug,並結合現有的網絡延遲和驗證器策略,在 4 月 6 日導致以太坊網絡出現短暫不穩定期。重新組織對於網絡健康是不利的,因為它會降低區塊生產率並減少結算保證。
本文旨在探討 mev-boost 和共識之間相互作用、揭示以太坊權益證明機制中微妙之處,並列舉一些可能前進方向。我們受到搜索者遭受攻擊和網絡暫時不穩定事件所啟發。
什麼是 mev-boost?為什麼重要?
mev-boost 是由 Flashbots 和社區設計的協議,旨在緩解最大可提取價值(MEV)對以太坊網絡造成負面影響。
mev-boost 中有三個角色:
- Relays - 相互信任拍賣商將提案人連接到區塊構建者。
- Builders - 構建區塊以最大化自己和提案人的 MEV 的複雜實體。
- Proposers - 以太坊權益證明驗證器。
每個區塊的大致事件序列是:
- Builders 通過從用戶、搜索者或其他(私有或公共)訂單流中接收交易來創建一個區塊。
- Builders 將該區塊提交給 Relay。
- Relays 證該該區塊是否有效,並計算它向提案人支付多少費用。
- Relay 向當前時隙的提案人發送「blinded」頭部和付款價值。
- 提議人評估他們收到的所有出價,並簽署與最高付款相關聯的 blinded 頭部。
提議人將此已簽名頭部發送回中繼站點。
該區塊由中繼使用其本地信標節點發布並返回給提議方。獎勵通過在該區塊內進行交易和區塊獎勵分配給構建者和提議方。
Relay 是一種相互信任的第三方,促進了來自於 proposer 的對於 block space 公平交換以及來自 builder 的 transaction sequencing for MEV extraction。Relay 保護 builders 免受 MEV 偷竊,其中 proposers 複製 builder transactions 來獲取 MEV 而不是分配給發現它的 searcher/builder。Relay 保護 proposers 確認 builder 區塊有效性、代表 proposer 每個時隙處理數百個區塊,並確保 proposer 支付的準確性。
mev-boost 是關鍵的協議基礎設施,因為它使所有提案人都能夠民主地訪問 MEV,而無需與構建者或搜索者建立信任關係,這有助於以太坊的長期去中心化。
以太坊的分叉選擇規則和 mev-boost
在我們深入攻擊和響應之前,我們先來看一下以太坊的權益證明(PoS)機制及其相關的分叉選擇規則。分叉選擇規則允許網絡就鏈頭達成共識。根據《合併後以太坊重組》:
分叉選擇規則是一個函數,由客戶端評估,它將已經看到的區塊和其他消息作為輸入,並向客戶端輸出「正式鏈」是什麼。需要分叉選擇規則是因為可能有多個有效的鏈可供選擇(例如,在同時發布具有相同父級的兩個競爭區塊時)。
關於分叉選擇規則較少知道的一個方面是它與時間的關係,這對區塊生產有重大影響。
插槽和子插槽周期
在以太坊 PoS 中,時間被劃分為 12 秒增量稱為插槽。PoS 算法隨機指定驗證器獲得該插槽提議一個區塊;此驗證器被稱為提議者。在同一插槽中,其他驗證器被指派任務:通過應用 fork-choice 規則投票支持他們本地視圖中鏈頭所在位置上最新版本的區塊。12 秒間隔被分為三個階段,每個階段消耗 4 秒。
在插槽中發生的事件如下所示,其中 t= 0 表示插槽開始。
在插槽中最關鍵的時刻是在 t= 4 的認證截止時間。如果一個認證驗證器在認證截止時間之前沒有看到一個塊,他們將會投票給鏈上先前接受的頭部(根據分支選擇規則)。越早提出一個塊,它就有更多的時間傳播,因此它積累了更多的見證(因為更多的驗證器在認證截止日期之前看到了它)。
從網絡健康角度來看,塊發布的最佳時間是 t= 0 (由規範指定)。然而,由於隨著時間推移塊價值單調遞增,建議者有動機延遲發布他們的區塊以允許更多 MEV 積累。請參閱權益證明中計時遊戲和這個討論以獲取進一步細節。
歷史上,在認證期限之後甚至靠近插槽結束時建議者仍可以發布區塊,只要下一個驗證器在構建其後續插槽區塊之前觀察到該區塊即可。這是父級區塊繼承重量和分支選擇規則在葉節點處終止導致沒有延遲發表區塊帶來負面影響。為了幫助推動理性行為(延遲區塊發布)朝著誠實行為(按時發布)的方向發展,「誠實重組」被實施。
提案者提升和誠實的重組
兩個新概念被引入到共識客戶端中,對證明截止日期具有關鍵影響。
- 提案者提升(PR)- 試圖通過授予提案者相當於完整證明權重 40 %的分叉選擇「提升」來最小化重組平衡攻擊。重要的是,這種增強只持續一個時隙。
- 誠實的重組(PR)- 採用了提議人增強並允許誠實的建議人使用它來強制重新組織具有低於 20 %認證權重的塊。這在 Lighthouse 和 Prysm 中實現(自 v 4.0-Capella 發布以來)。此更改是可選項,因為它是由建議人做出的本地決策,並且不會影響驗證器行為。因此,沒有協調努力將其同時推出到所有客戶端,也沒有與任何特定硬分叉相關聯。
請注意,在某些特殊情況下避免進行誠實性重新排序:
- 在紀元邊界塊期間
- 如果鏈條未完成
- 如果鏈頭不是從重新排序塊之前的時隙獲取
條件 3 確保誠實性重新排序僅從鏈中刪除單個塊,這作為斷路器使得鏈能夠在極端網絡延遲期間繼續生成塊。這也反映了提案人對其網絡視圖的信心降低,因為他們不能再確定其提議者增強塊將被視為規範。
下面的圖表演示了誠實行為如何改變以實施重新組織策略。
在這種情況下,讓 b 1 代表一個晚到的區塊。由於延遲,b 1 僅具有第 n 個槽位 19 %的證明權重。剩餘 81 %的證明權重分配給父區塊 HEAD,因為許多驗證者在認證截止日期之前沒有看到 b 1 。
如果沒有誠實的重新組織,在第 n+ 1 個時隙中提議者將 b 1 視為鏈頭並構建子區塊 b 2 。儘管它只有 19 %的證明權重,但提議者不會努力重新組織 b 1 。在第 n+ 1 個時隙期間,b 2 具有提議者增強功能,並且假設它按時交付,則通過積累該時隙大部分認證而成為規範。
通過誠實地重新組織,情況就大不相同了。現在第 n+ 1 個時間段的提案人發現對於 b 1 的 19% 認證權重低於重新組織閾值,因此他們以 HEAD 作為 b 2 的父級來構建一個新區塊,並強制性地進行了重新組織 b 1. 當我們達到 n + 1 時間段的認證截止日期時,誠實驗證器將比較 b 2 (40% 來自提案人增強)與 b 1 (19% )相對權重。所有客戶端都執行提議人增強,因此 b 2 將被視為鏈頭,並將積累時隙 n+ 1 的認證。
針對解绑攻擊的中繼和信標節點修復
在 4 月 2 日的解绑攻擊中,提議者利用了一個中繼漏洞,通過向中繼發送無效的簽名頭來進行攻擊。隨後幾天,中繼和核心開發團隊發布了許多軟件補丁以減輕重複攻擊的風險。五個主要變化如下:
1.Relay 更改:
- 檢查數據庫是否存在已知惡意提議者(僅由超聲波中繼在生產環境下使用,並已被刪除)。
- 檢查該時段內是否已將完整塊傳遞給 P2P 網絡。
- 在發布塊之前引入 0-500 ms 範圍內的統一隨機延遲(從所有接力器移除)。
2.信標鏈節點更改(僅適用於接力信標鏈節點):
- 廣播信標塊之前驗證其有效性。
- 在發布塊之前檢查網絡上是否有等價物。
這些變化的組合導致共識不穩定,而大部分驗證器現在都使用上述誠實重組策略進一步加劇了這種情況。
未預料到的後果
以上 5 個更改每一個都會增加接力區塊發布熱路徑上的延遲時間,從而增加了接力區塊可能會超過證明截止期限而被廣播的概率。下圖顯示了這五個檢查的順序以及引入延遲如何導致塊發布超過證明截止期限。
在實施這些檢查之前,簽名頭到達時間顯著晚於 t= 0 (例如 t= 3 )通常不會出現問題。中繼開銷非常低,因此會在 t= 4 之前發布塊。
然而,隨著這五個補丁引入的延遲時間增加,中繼現在可能部分負責延遲廣播。讓我們看一下以下假設情況下的區塊發布。
中繼在 t= 3 時從提議者處接收到已簽名的頭部。到了 t= 4 ,中繼仍在執行檢查,因此廣播發生在證明截止期之後。在這種情況下,提議者發送已簽名頭部晚和中繼引入一些額外的延遲相結合導致錯過了證明截止期。如果沒有誠實重組,則這些塊很可能會進入鏈上。如我們在圖 2 中所看到的那樣,隨後插槽的誠實提議者不會故意重新組織由於時間太晚而被拒絕的塊。然而,在有誠實重組的情況下,錯過證明截止期意味著該塊將被下一個提議者重新組織。
因此,在攻擊後幾天內,分叉塊數量急劇增加。
Metrika 2 週的數據顯示,在最糟糕的情況下,一個小時內有 13 個區塊(4.3 %)被重新組織,這比正常情況多了約 5 倍。隨著中繼推出各種變化,分叉塊數量的急劇增加變得明顯起來。由於中繼操作員和核心開發人員做出了巨大的社區努力,一旦理解了影響,許多更改就被撤銷,並且網絡恢復到健康狀態。
截至今天,最有用的更改是信標節點塊驗證和在廣播之前進行等價檢查。惡意提議者不能再通過向中繼發送無效頭部並確保中繼信標節點在發布之前不看到等價塊來執行攻擊。儘管如此,該中繼仍然容易受到 Mev-boost 和 ePBS 中介攻擊所呈現的更普遍等價攻擊的影響。
那麼我們該怎麼辦呢?
在這篇文章中,我們強調了 mev-boost 的工作原理以及它對以太坊共識的重要性。我們還詳細介紹了與時間相關的 Ethereum 分叉選擇規則中一些不太為人知的方面。通過使用拆分攻擊和開發者的響應作為案例研究,我們強調了分叉選擇規則中與時間相關的方面潛在脆弱性及其對網絡穩定性的影響。
鑑於此,研究界應評估什麼是「可接受」的重新組織數量,並考慮普遍情況下等價攻擊所帶來的風險,以確定是否需要實施緩解措施。
此外,目前正在積極探索多個未來方向:
- 實現「headlock」以保護 mev-boost 免受等價攻擊。這也需要更改共識客戶端軟件並可能需要進行規範更改以延長證明截止期。
- 增加針對 mev-boost 軟件的漏洞賞金計劃數量和可見度。
- 擴展模擬軟件以探索子時隙定時如何影響網絡穩定性。這可以用於評估如何通過調整證明截止期來減少重新組織。
- 優化中繼上的塊發布路徑以減少不必要的延遲。這已經在研究中了。
- 認識到 mev-boost 是核心協議功能,並將其吸收到共識客戶端中,即 enshrined-PBS(ePBS)。兩個時隙的 ePBS 容易受到等價攻擊的影響,因此實現「headlock」仍然是一種選擇。
- 增加基於延遲和證明截止期問題的更多 hive 和 / 或規範測試。
- 通過構建中繼規範的其他實現來鼓勵中繼客戶端多樣性。
- 考慮調整等價懲罰措施,但請記住,在極大 MEV 機會存在時,即使完全削減 32 ETH 也可能無法阻止惡意行為。
總體而言,我們對 MEV 和 mev-boost 生態系統周圍重新激發起來的能量感到興奮。通過拆分攻擊和緩解措施,我們已經了解了延遲、mev-boost 和共識機制之間關鍵關係;我們希望協議能夠持續強化。
非常感謝 Bert Miller、Danny Ryan、Alex Stokes、Francesco D'Amato、Michael Sproul、Terence Tsao、Frankie、Joachim Neu、Chris Hager、Matt Garnett、Charlie Noyes 和 samczsun 對本文的反饋,以及 Achal Srinivasan。