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