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