以太坊合併後的MEV

作者:Nic @ imToken Labs

閱讀提示

  • 在閱讀本文前,需要對MEV 有基本的認識,知道Flashbot 的角色及Flashbot 對MEV 的影響。

  • 還需要知道PoS 機制的基本認知以及以太坊合併( The Merge) 帶來的改變。

MEV

首先複習一下什麼是MEV。

Miner Extractable Value 如字面上所述,指的是「區塊開發者可以榨取出的價值」。

這個價值指的不是用戶付給區塊開發者請他打包用戶交易到區塊裡的手續費。給予手續費這個動作是經過使用者同意的,使用者可以把手續費調得很低,那他的交易就會很久才會被收入,但至少區塊開發者不能對交易收取任意手續費。

閱讀提示:現在MEV 又改稱為Maximal Extractable Value,因為目前的發展MEV 已不再是區塊開發者獨佔。

「區塊開發者可以榨取出的價值」指的是區塊開發者透過改變交易排序、插入自己的交易在被榨取的交易前(或後)來獲得利益。那區塊開發者可以榨取什麼樣的利益?

例如當有某個火爆的NFT 提供mint 的名額,只有最快的100 個人可以mint 成功,這時和區塊開發者是朋友或是鏈下和區塊開發者達成某種協議的Carol 就可以確保區塊開發者透過安排交易順序,將她的mint 交易安插其他人的mint 交易之前。

△ 區塊開發者會把Carol 的mint 交易排在其他人的mint 交易之前。

另外常見的MEV 是夾擊用戶的AMM 交易,迫使用戶收到(可接受範圍裡)最差的價格,用戶預期的價格與最差價格的價差就是區塊開發者榨取的利益。

底下的例子中Alice 預期用1 WBTC 換到21500 USDT,但她知道去中心化世界裡她的交易不一定能第一個被執行,當有其他人在她之前也去進行WBTC/USDT 的交易, AMM 價格就被改變,1 WBTC 就不一定能換到21500 USDT,所以她設定了可接受範圍內的一個最差價格20500 USDT:

△Alice 預期用1 WBTC 換到21500 USDT,但最差可以接受20500 USDT。

這時Eve 發現了Alice 的交易,並決定搶先在Alice 的交易之前去賣WBTC,導致WBTC 價格跌到剩20500 USDT,接著再執行Alice 的交易,Alice 就被迫只能用20500 USDT 的價格成交。

最後Eve 再將一開始賣WBTC 所獲得的USDT 拿去買回WBTC,此時WBTC 價格會小於20500 USDT,也表示Eve 完成了一次低買高賣(<20500 買,21500 賣),賺得價差。

△ 區塊開發者Eve 發現有利可圖,在Alice 的交易前搶先賣WBTC,等到Alice 交易執行完再買回WBTC 賺價差。

去中心化系統一定會有MEV

在中心化系統裡你可以選擇相信負責排序交易的角色(Operator、Sequencer),相信他們會為了聲譽所以不做會傷害使用者的壞事,或是你可以選擇離開那個系統。這也是目前L2 的現況,L2 專案方不太可能會自砸招牌去榨取MEV。

但在去中心化系統裡任何人都可以成為區塊開發者,而且我們沒辦法簡單客觀地證明一個區塊開發者的行為是「不好」的,也就表示我們沒辦法有效禁止區塊開發者榨取利益。

我們不該期待區塊開發者都會是「好人」,而是要擔心如果一個區塊開發者因為MEV 越賺越多,並用來投資更多區塊開發設備讓他規模越來越大,導致他能淘汰掉其他競爭者,結果就會是在一個去中心化系統只有一個區塊開發者的困境,最終他將能任意施加個人的喜好規則到用戶的交易上。而這也是Flashbot 出現的原因。

Flashbot

為了避免MEV 影響區塊開發者去中心化的程度,Flashbot 將MEV 打造成一個公開的市場,區塊開發者和專業的MEV searcher 合作並分享MEV,同時區塊開發者和MEV searcher 各自之間又有著高度的競爭。

透過這樣的競爭和合作關係,區塊開發者和MEV searcher 都能各自專注在自己的專業,MEV searcher 也不需擔心區塊開發者有可能搶走自己的套利機會或是故意不收自己的交易。

△ Searcher 從公開交易池中找交易套利並為自己的Bundle 競標收入權,送給Flashbot 後再由區塊開發者挑選。

中心化風險

不過Flashbot 仍有缺點在,所有MEV searcher 的套利交易都要經由中心化的Flashbot 伺服器,Flashbot 伺服器可以搶走套利機會或審查套利交易。

除了Flashbot,市場上也出現了像是Eden Network 的專案。它和Flashbot 架構基本上一樣,除了自己搞無謂的Staking 、區塊內交易優先等級及額外的競標機制等。不過至少當Flashbot 開始作惡時,區塊開發者和searcher 還有其他選項。

MEV 是必須接受的既定事實

不管是協議設計者或使用者都必須保持對MEV 的警覺。可以的話將MEV 納入協議設計中,讓MEV 變成一個有利的工具是協議設計者接下來在設計機制時必須好好思考的。後面的文章也會介紹善加利用MEV 的設計和想法。

The Merge

Ethereum 在The Merge 後共識切換為PoS 機制,從用礦機算力競爭的區塊開發者變成質押ETH 就能成為Validator 來獲得propose 區塊的機會,這表示在PoS 中獲得出塊的門檻降低許多。而獲得出塊機會的門檻降低後其實也影響了Flashbot 不同角色間競爭合作的關係。

閱讀提示:這裡propose 維持用英文,避免propose block 和build block 的中文因為意思太接近而看錯。

信任關係的改變

在PoS 之前,Searcher 是需要相信區塊開發者不會把他的bundle 內容搶走的,區塊開發者即便搶了,Searcher 也只能透過鏈下的機制去反制,例如提出證據請Flashbot將該區塊開發者加入黑名單或在Twitter 上發文取關。

不過區塊開發者基本上都非常配合,這是因為區塊開發者和Searcher 間是屬於長期合作的關係,如果區塊開發者今天為了某一筆MEV 利益而搶了Searcher 導致區塊開發者未來收不到任何MEV 機會,其實是劃不來的。

但在PoS 之後,透過質押ETH 就能獲得出塊機會,出塊的門檻降低。也因此許多一般人加入成為Validator,導致獲得出塊的機會也慢慢被稀釋。

相較於PoW 中投入許多成本成為為數不多且長期經營的礦池,PoS 中Validator 偶爾才能獲得出塊機會,且其區塊獎賞加上MEV 的平均年化即便以10% 計算的情況下, Validator 仍然有非常足夠的動機去搶Searcher 的MEV。

閱讀提示:可以參考Flashbot 統計的MEV leader board,複製下方連結到瀏覽器跳轉查閱相關內容:https://explore.flashbots.net/leaderboard

△ 只要把握機會搶超過3.2 ETH 的MEV 即超過10% 年化。

因此Flashbot 的架構需要配合這個信任關係的改變及PoS 機制來調整,變成了現在的mev-boost。

mev-boost

在mev-boost 中,原本Flashbot 介於Searcher 及區塊開發者之間的Relay 角色被拆分成兩個,一個是Builder,一個一樣叫做Relay 但職責不同。

Searcher 將bundle 交給Builder,Builder 從多個bundle 中選出數個bundle 組成一個區塊,並將區塊交給Relay,Validator 再從多個Relay 提交的區塊中選出一個。

△ Searcher 和Searcher 競爭,Builder 和Builder 競爭,Validator 從中挑出最有利的區塊。

Builder 負責在一個區塊的有限容量中找出最有利的bundle 組合,希望Validator 能選中自己的區塊。

那Relay 有什麼用呢?上面提到信任關係已經改變,因此Searcher/Builder 不能相信Validator,所以mev-boost 中Validator 需要先做出「我會propose 你的區塊」的承諾才會收到真正的區塊內容。

而Relay 就是作為Builder 和Validator 之間的中間人角色幫忙協調:Relay 先保管區塊內容,直到拿到Validator 的承諾才把Builder 製作的區塊交給Validator。

實際的Ethereum Beacon Chain 術語中Builder 製作的區塊內容稱做Execution Payload,Validator 會從Relay 那收到稱為Execution Payload Header 的數據,Header 可以視為是Payload 的commitment,對Header 簽名就代表對Payload 簽名。

當Validator 選好要propose 哪個Relay 送來的區塊時,他就會把該區塊的Execution Payload Header 放進Beacon 區塊中並簽名,接著把簽名內容交給Relay 當作證明,最後Relay 就可以放心將區塊內容給Validator,讓他propose 區塊。

△ Builder 將區塊交給Relay,Relay 將Header 交給Validator

△ 如果Validator 選擇該區塊,就會將Header 放進Beacon Block 裡並簽名,交給Relay。

△ Relay 接著將完整區塊內容交給Validator。

如果Validator 最後背叛Relay,選擇propose 另一個區塊,此時Relay 就可以將當初Validator 給他的簽名內容公佈出去,當作證據證明該Validator propose 了兩個不一樣的區塊,接著Validator 就會因為違反Ethereum Beacon Chain 的規則而被懲罰。

△ Eve 因為propose 不一樣的區塊導致他被slash(一部分質押的ETH 被沒收)。

信任假設

在mev-boost 中Validator 反而必須相信Relay,如果Relay 最終揭露的區塊內容不合法或是實際Validator 收到的錢不符預期,或者甚至Relay 直接不公佈區塊內容導致Validator 沒辦法propose 區塊,此時Validator 只能透過鏈下的機制去反制,例如讓其他Validator 知道該Relay 的惡意行為。

Circuit Breaker

Validator 沒辦法24 小時都有人監控並介入,所以當Validator 軟體發現(同一個或多個)Relay 不斷破壞信任時,必須要能做出反應,避免一直因為沒有propose 區塊而損失收益。

例如當發現自己超過五個Slot 都沒propose 區塊時,要退回使用自己的節點來製作區塊內容。

相關文件可參考:

  • https://hackmd.io/@ralexstokes/BJn9N6Thc

Relay Monitor

為了降低Relay 這個角色作惡產生的影響,Flashbot 社群也在思考設計針對Relay 行為的監控。

相關文件可參考:

  • https://hackmd.io/@ralexstokes/SynPJN_pq?

  • https://github.com/flashbots/mev-boost/issues/142

Data Availability Committee

一個防止Relay 不公佈區塊內容的方式是將區塊資料交給一群節點所組成的Committee,他們負責保管、確保區塊內容可取得,也就是將區塊內容保管的職責去中心化。

目前有哪些Builder 和Relay?

這裡可以看到目前的Builder 及Relay:

  • MEV-Boost

    查閱網址:https://mevboost.pics

可以看到雖然身為mev-boost 的主要開發團隊,Flashbot 並未擁有主宰的Relay 地位,這是因為Flashbot 從一開始便開源開發mev-boost 且未在mev-boost 軟體中將自己設為預設Relay 。

閱讀提示:了解更多請參閱https://twitter.com/bertcmiller/status/1577482319140913153

2023–04–02 針對mev-boost Relay 的攻擊

一個惡意Validator 發現Relay 的漏洞:Relay 只要Validator 有簽出合法的簽名(不論內容是否合法)就會回傳Bundle 內容給該Validator。

因此惡意Validator 簽了一個不合法的內容(Header 某些欄位的值不合法),Relay 回傳Bundle 內容後Validator 再偷走Bundle 裡的套利交易,然後propose 另一個合法的區塊。

Relay 嘗試廣播Validator 簽的Header,但因為內容不合法所以被其他節點拒絕,所以大家只看到Validator 自己propose 的合法區塊。事後Validator 因為簽了兩個不同的Header(給Relay 的和自己propose 的)而被Slash 且被踢出Validator 名單,但傷害已經造成。

更新後的Relay 現在會先嘗試廣播Validator 簽的Header,如果成功被其他節點收入就表示Validator 籤的內容是合法的,而且其他節點會先看到Relay 廣播的區塊,如果Validator 嘗試偷Bundle 內容自己propose 的話,要贏過Relay 廣播的區塊會更難(因為已經有很多節點看到Relay 廣播的區塊)。

閱讀提示1:解釋這個攻擊的thread 及相關證據和Relay 補丁可以參考這個thread,詳情請查閱:https://twitter.com/samczsun/status/1642848556590723075

閱讀提示2:惡意Validator 除了可以偷走Bundle 裡的套利交易,還可以攻擊進行三明治夾擊的套利者:進行三明治夾擊的套利者會在受害者交易前後插入自己的交易— 搶先受害者買入,並在受害者買入後再賣出,賺取價差,但夾擊要能成功必須要前後兩筆交易都有執行,否則只有前筆交易被執行的話套利者不但賺不到利差,還會因此賠上自己的資金。

但針對這個攻擊所做的補丁會增加區塊產出的延遲時間,因此在攻擊發生後的數天內PoS 鏈的re-org 發生次數明顯上升,目前有數個方案正在設計及實作當中,來避免MEV-Boost 的出塊延遲反而造成PoS 網路的不穩定。

閱讀提示:詳細介紹可以複製下方連結到瀏覽器查閱https://www.paradigm.xyz/2023/04/mev-boost-ethereum-consensus

Flashbot/mev-boost 的影響

影響Validator 投票效率

因為Flashbot/mev-boost,區塊從生產到真正被propose 的過程經過了更多的關卡,這導致Validator propose 區塊的時間延遲,其他負責投票的Validator 就會更晚收到區塊,也因此他們投票的時間也被壓縮,這會影響整體PoS 網路的安全性。

雖然看起來影響不太大:估計投票率減少約2%、正確投票的Validator 減少約1%,不過這是2022 年10 月統計的數據,當時只有1/3 的Validator 接上MEV Relay。

閱讀提示:相關資訊可參考下方連結文章https://www.attestant.io/posts/exploring-the-impact-of-mev-relays

總結與重點

  • MEV 的產生無可避免,而區塊開發者擁有開採MEV 最大的優勢。 Flashbot 讓MEV 的開採變成一個公開市場,避免礦工中心化影響整個鏈的安全。

  • mev-boost 因應PoS 帶來的改變而誕生,mev-boost 反轉Searcher/Builder 與Validator 間的信任關係,且讓競爭更為開放:有多個Builder 彼此競爭,有多個Relay 彼此競爭,進一步降低Flashbot 的中心化風險。

下一篇將介紹Proposer-Builder Separation(PBS),將mev-boost 架構直接整合進Ethereum 本身的協定裡,而不再是Validator、Builder 和Searcher 之間私底下的合作,這會讓整個MEV 生態變得更去中心化及安全。

參考資料與推薦延伸閱讀

  • https://docs.flashbots.net/

  • Flashbots

  • https://ethresear.ch/t/mev-boost-merge-ready-flashbots-architecture/11177

  • https://writings.flashbots.net/searching-post-merge/

  • https://writings.flashbots.net/why-run-mevboost

  • https://writings.flashbots.net/beginners-guide-mevboost

  • 數據統計:https://www.mevboost.org

  • 數據統計:https://dune.com/ChainsightAnalytics/mev-after-ethereum-merge

  • https://www.youtube.com/watch?v=mXGA-u-sH_w

Total
0
Shares
Related Posts