🔥 距離 Gate.io WCTC S7 正式開賽僅剩 7 天
世界加密貨幣交易大賽即將開啓,總獎池高達 $5,000,000
👉🏻 立即報名:https://gate.io/competition/wctc/s7?pid=APP&c=moments_gatePost&ch=druYjDaF
報名參賽,不僅有機會贏取高達百萬美元的個人獎勵,更有 Gate.io 專屬週邊大禮等你來拿
全球頂尖交易員正在集結,一場交易盛宴即將開啓
🔗 活動詳情: https://www.gate.io/announcements/article/44440
澳門大學王也:公共區塊鏈中的分配效率低下、MEV 和私人交易
演講:王也,澳門大學信息與計算科學系助理教授
編譯:aididiaojp.eth,Foresight News
*本文為青年學者計劃中澳門大學信息與計算科學系助理教授王也視頻分享的文字整理。青年學者計劃由DRK Lab 聯合imToken 和Crytape 共同發起,會邀請加密領域中知名的青年學者面向華語社區分享一些最新的研究成果。 *
開始之前我簡單的做一下自我介紹,我是王也,目前在澳門大學的信息與計算科學系擔任助理教授,目前主要的研究集中在DeFi 及其相關的領域。我們將DeFi 當做一個新興的金融市場,並以經濟學和金融學的角度去研究問題,包括分析用戶行為和市場結構。此外,我還會關注在用戶使用過程中存在的潛在安全性問題,以及如何通過提高用戶體驗來降低Web3、DeFi 相關的應用可能帶來的一些使用上的危險和安全性問題。今天我分享的內容主要是第一個研究方向相關,就是我們會去研究在這樣一個新興的去中心化金融市場當中,新模式下存在的一些用戶行為問題,以及我們該如何去優化這樣的市場結構。
這樣一種建立在區塊鏈系統上的金融市場會存在一些內生性的問題,目前市場上一些普遍的解決方案,以及這些解決方案對於整個市場的影響是我們所不知道的。那麼接下來我們將會介紹在了解到現在存在的問題之後,我們是如何從經濟學或者說金融學的角度對現在區塊鏈市場上的問題進行建立模型,以及如何利用模型來進行理論分析。最後一部分我們將理論研究結果和在區塊鏈市場上觀測的實驗數據來進行對比和分析,進而證明了我們理論推導在實際市場當中應用。
大家都知道在區塊鏈當中存在兩種不同的參與者:一種是普通用戶,他們所做的行為就是將自己的交易發送到整個區塊鏈的網絡當中,然後期待他們的交易能夠在網系統當中被運行。另外一種一般大家會叫它礦工,或者說現在新的系統中可能叫做驗證者,他們會將這些用戶發送在網絡當中的交易進行收集,並且形成一個區塊。當這樣的一個區塊被廣播,並且被絕大部分的系統參與者驗證之後,我們就認為這個區塊內的所有交易都被確認,或者說完全被驗證成功了。在這個里面我們會發現存在幾個核心的問題是和傳統金融市場有非常大的差異的。第一個存在的問題是在被確定運行和執行之前,交易是公開透明的。大概在前兩年,大家就廣泛提出了關於Frontrunning 的概念,其實這件事情並不是只有在去中心化金融的語境下才存在,在傳統金融中也一直存在,只不過說傳統金融可以用一些政策或者說規章制度將風險完全排除,但是在區塊鏈系統當中,我們就不得不重視到這個問題。
當交易被廣播到公共網絡,且還沒有被執行之前,其實已經是可以被所有人觀測到了,這就涉及到相當嚴重的風險暴露問題。其次第二個非常關鍵是關於交易排序的問題,目前最常見的礦工將所有的交易進行打包排序的方式,還是依照著手續費高低來依次來進行打包。那麼這就會帶來非常嚴重的目前大家越來越去關注在去中心化金融市場當中不可被忽略的相關問題,也就是會有大量的Running Attack,或者說目前很多時候大家可能就把它統稱為MEV,Running Attack 可能只是MEV 其中的一部分。
我們再簡單的描述一下這個的過程,當我們發現一筆交易的時候,它其實是沒有被執行的。我們任何一個攻擊者都可以利用已知信息來去創建一筆新的交易,並且提供一個更高的Gas 費來讓自己新提交的這筆交易在已遭洩露的交易之前被執行。這是由於區塊鏈體系存在的內生性問題,目前來看是至少在公共區塊鏈系當中是始終存在,並且難以禁止的。接下來我們來一起回顧幾種最常見的Frontrunning 的攻擊模式。
第一種攻擊模式,相信很多朋友可能都比較熟悉了,那我們這裡再給一個更加明確的介紹,這種模式叫做三明治攻擊Sandwich Attack,它的核心觀點是通過AMM 本身存在常數乘積做市商定價機制,在一筆交易完成之前通過另外一筆提前交易,將市場的交易費率進行改變,那麼在受害交易者進一步把交易費推向更加極端的結果之後,再通過反向交易把從交易獲取到的資金以一個更加優惠的價格進行兌換,並通過交易所蘊含的匯率差來獲取利益。在這樣的攻擊模式當中,我們可以看到當市場上出現一筆受害者交易時,那麼這筆交易通常來說是AMM 當中的一筆交易,攻擊者會在受害者交易之前用一筆更高的Gas 費進行搶跑交易,在這筆交易結束後,他們會再使用另外一筆交易來進行一個反向操作,通過前後交易的匯率差獲得利益。這就是我們說的第一種Frontrunning。
第二種類型是比較常見的Suppression Attack。在金融市場當中,時間是一個很重要的因素,很多交易晚執行一個區塊和早執行一個區塊會造成巨大的市場波動,尤其是當我們考慮到一些交易可能涉及到清算價格的時候,這類攻擊的主要目標是這種臨界交易。例如我們希望交易能夠在下一個區塊中被運行的,如果一個惡意的攻擊者觀測到這個交易後,然後用提出更高Gas 費的交易把這個交易請求踢出特定的區塊當中,那麼被攻擊交易就可能等到下一個或者下幾個區塊才被運行。因為時間差我們可能沒有辦法及時完成臨界交易的市場操作,從而導致比較嚴重的市場動盪。
第三種攻擊被稱為Displayment Attack,屬於一次性的套利攻擊。大家可以想像當我們在做一些循環交易的時候,其實市場價格可能是不同的。但匯率差帶來的潛在投機機會是一次性的,如果我通過反復交易可以把市場的匯率差磨平,那麼後續的攻擊者就沒有辦法再進行投機來獲利,那麼這針對的就是這種類型的一次性套利機會。我們假設Tv 是一條通過市場交易來獲取利潤的交易,惡意攻擊者觀察到Tv 之後,就可以進行做一模一樣的市場交易行為,只不過它唯一不同的是它會把自己的這筆套利交易用一個更高的Gas 費進行提交。那麼它在真實的區塊鏈系統當中會被提前運行的,由於他把一次性的套利機會率先運行,TV 本身的這筆交易就不再獲得收益。
這三種就是目前我們主要關注的MEV 攻擊。區塊鍊網絡由於系統機制設定的原因,存在一些內生性的問題。當我們說Frontrunning 很普遍時,接下來自然而然的問題就是這件事情是不是真的是一個很嚴重的事情,MEV 到底會產生多大價值損失?
我們有過一個統計數據,大概在不到一年的時間,MEV 攻擊在市場中造成的金融損失已經超過了8 萬枚以太坊,也就是說造成了相當多的經濟損失,這也是為什麼大家會去關注這個問題,很多人也再考慮如何消除MEV 攻擊。除了關注經濟損失之外,我們其實還會思考整個事件對於區塊鍊網絡的進一步影響,因為它不僅僅造成了經濟損失,同時也浪費了一定的區塊空間。
當這個問題存在的時候,大家肯定是不斷考慮怎麼去解決這個問題。現在的解決方案是通過Private Poool 進行廣播,這種方式曾經也叫作Relay Service。交易並不僅僅只能通過用戶公開的分佈式網絡傳播,他們提供了一個私有的通信渠道,能夠讓用戶和礦工之間有一個直接連接的信息渠道。通過這樣的通信渠道,大家可以想像好處是我們不再會有信息的洩露。我們既然認為Frontrunning 也是MEV 的一部分,這種Private Pool 被引入到網絡中就是希望能夠盡量減少Frontrunning 的出現。
目前區塊鏈系統當中由於信息洩露導致了Frontrunning Attack。我們也知道有一些人提出了一些新的機制來想要避免這種情況的出現。那麼新的機製到底能不能起到作用,會對區塊鏈系統有什麼樣的影響,自然而然就成為我們想要去研究的問題。
當我們把Private Channel 引入到區塊鏈之後,對於整個生態系統會有怎樣的影響?首先第一點,它是不是會被用戶和區塊驗證者廣泛地接受?因為他們倆是我們整個系統當中核心的參與者。然後第二個問題是被接收之後,它是不是達到了我們想要的目標,就是能夠降低交易手續費和避免Frontrunning。第三點是在新機制被引入之後,到底會對整個系統當中所有的用戶產生什麼樣的影響?這就是我們在發現可能的解決思路之後提出的三個的研究問題。
我們通過建立模型來研究和解釋不同的參與者做出不同的選擇後對市場可能存在的影響,最後進行預測,然後我們再對市場本身的用戶行為和我們的理論分析結果來進行對比分析。那我們在這裡將展現如何把問題分成三個階段完成的。我們在三個階段的模型中涉及到了三種不同的假設。第一種就是我們認為參與者是理性的,這是我們在做很多經濟和金融研究當中常見的一個假設。其次我們會認為有一些交易會面臨著被攻擊的風險,同時還會存在一些系統當中始終不會被攻擊的交易,同時我們將在根據這個市場當中存在的套利者或攻擊者建立模型。
在整個體系當中,我們認為所有交易具有兩個不同的交易渠道,一個就是我們常見的公共的分佈式網絡Public Pool,另外就是私人網絡Private Pool。最後我們假設每個區塊它有足夠大的空間來容納交易。接下來在這個模型的不同步驟當中,每一個用戶和每一個驗證者要選擇其中一種網絡進行交易。首先第一個做選擇就是驗證者,其次是用戶,最後是攻擊者,這其實也是符合我們在區塊系統當中正常的運行模式。當這三個不同的參與者做出選擇之後,我們再進行反向的計算整個市場最終會進入一個什麼樣的狀態。
首先第一個礦工他們是有兩種把不同的選擇,第一種他們並不考慮加入到Flashbots 系統當中,第二種選擇就是加入其中。很顯然他們這兩種選擇始終存在,如果停留在公開渠道時,他們只能看到Public Mempool 裡面所存在的交易。但如果加入了Private Pool,他們能夠看到不僅是Mempool 的交易,同時他們也能看到Private Pool 裡面的交易。在模型的第一階段,大家會去做選擇,然後我們用alpha 來表示選擇使用了flashbox 的比例。
第二部分就是關於用戶在整個交易當中的選擇。他們到底是會選擇在Mempool 當中提出自己的交易,還是會選擇在Private Pool 裡面提出?如果他們在Mempool 裡面提出交易的話,那麼他們就會面臨被攻擊的風險。他們也可以選擇Private Pool,但也會存在一定的風險。這個風險主要來源是說這些加入了Private Pool 的交易可能並不會百分百會贏得下一個區塊記錄的權利,但是我們可以在後面繼續提出交易。
第三階段是攻擊者會去觀測可攻擊的交易,並進行攻擊交易。例如攻擊者觀察到了交易P,並決定對這筆公共交易進行攻擊。攻擊者在提交自己的交易時,也同時面臨兩種選擇,既可以在Public Pool 進行,也可以在Flashbox 提出。攻擊者如果在Public Pool 提交交易時,攻擊者可能會多輪投標更高的競價,那麼他們交易的Gas 會逐漸升高,這是很多目前常見的一種攻擊模式。如果是在Private Pool 當中,攻擊者不知道是否有別的攻擊者跟他們同時競爭。如果在Public Pool 當中,如果有別人跟競爭攻擊的話,其實攻擊者是能夠相互知道的。但在Private Pool 裡面,其實第一攻擊者不知道有沒有人競爭,其次我也不知道競爭者到底付了多少的Gas 費,那麼攻擊者之間變成了一個新的競爭關係,這就會導致他們需要進行權衡。他們願意支付的Gas 費其實是會非常的不一樣。如果攻擊者的交易最終被接納的話,他們最終就會有一個Profit C,C 也是造成的經濟損失。
接下來就是需要權衡的時候了。首先是關於用戶和攻擊者,他們遇到的主要權衡其實就是運行風險。
用戶需要權衡我的交易信息會不會被洩露或者說我是否是安全的,攻擊者也不會把自己的交易信息給另外一個攻擊者。他們也面臨著同樣的運行風險就是Private Pool 合作的驗證者並不是有百分百記錄下一個區塊的權利,那麼就有很大的概率這筆交易是不會包含在下一個區塊當中,就算交了足夠多的Gas 費也沒用。
沒有加入Flashbots 的用戶,他們只需要把這些交易按照Gas 費從高到低排序就好,但如果加入Flashbots 的話,首先他們要在區塊當中這些Private Pool 提出的交易排在前面,然後才是驗證剩下的交易。比如說交易K 比它前後交易的Gas 費都小,但是交易K 還是放在前面進行驗證。
假設模型的目錄建立之後,我們從三個角度逐步分析大家會去做什麼樣的選擇。我們首先是從攻擊者的角度進行行為分析。攻擊者在通過不斷競爭之後,自然而然會面臨越來越高的Gas 費情況,這是我們會發現的一個核心結論就是他們在Private Pool 裡需要提交的Gas 價格遠高於他們Public Pool 需要提交的Gas 價格。但是他們還是會有很多人去選擇Private Pool,其中有兩個核心的原因,第一個原因是他們在Private Pool 裡面提交的套利交易不會被其他的攻擊者看到,他們也就不需要進行競價,這是一個好處。第二個好處,其實就是在於區塊的排序順序,一個它是通過Private Pool 來提交的話,它自然而然優先級是高於那些Public Pool 提出的交易。在這種情況之下,攻擊者自然會選擇Private Pool.同時他們為了確保避免運行風險帶來的影響,他們也會選擇同時在一些Public Pool 交易。
接下來就是關於用戶的權衡,他們主要會考慮兩個因素,一個是採用率,另外一個就是潛在被攻擊的概率。如果a 比較大的話,那麼其實大家可以想像他們面臨的運行風險就比較小,那他們自然而然就會更傾向於去使用Private Pool。如果alpha 很小的話,對他們來說,提交過去也不一定有什麼作用,所以Public Pool 就會變成他們的選擇。
同樣對於c 部分,其實也是一個非常重要的因素。我們發現如果C 足夠大的話,他們其實是沒有任何別的選擇,只會選擇在Private Pool 中提出交易。如果這種情況出現之後,我們可以發現。其實就是攻擊者套利機會完全被消除了,如果大家都不去使用Public Pool,那麼這件事完全就不會再存在。但是我們也不得不去考慮一點,事實上,在實際的運行當中,不是每一筆造成MEV 的交易都有那麼高的套利空間。
我們現在可以看到的是說很多可以被三明治攻擊的交易,可能他們只有幾美元的回報。攻擊者在完成攻擊之後,有時甚至還要分大部分利潤給礦工,最後剩下來的激勵可能只有不到1 美元。其實是存在很多C 很小的情況,在這種情況下,其實他們就不會選擇Private Channel,因為對於他們來說,Private Channel 不是一個最優的選擇。核心原因是對於很多用戶來說,他們不在乎自己的交易是否被攻擊,他們願意承擔被攻擊的風險,他們覺得運行風險對於他們來說是一個更加不好的事情。在這種情況之下,我們知道adoption rate 如果不是百分百,那麼就一定會有很多交易被攻擊。
接下來要回答第二個問題,優先費用有沒有被降低?我們最終的結論是就算我們引入Private Pool 之後,優先費用也不會降低。這裡存在兩個主要因素,第一部分因素,其實大家可以想像到,驗證者只有在獲得更高的費用時,才會選擇採用Private Pool,那麼自然而然這就抬高了進入區塊的基準費。另外一個因素是有一些人可能原本是容易被攻擊,所以不願意選擇Public Pool,這時候他們更願意使用Private Pool 來進行交易,這些原本不會在Private Pool 中出現的交易會進一步的去抬高優先費用。最終的核心結論就是導致了優先費用的上升。
最後一個核心問題是我們關注的區塊總體價值有沒有增加?我們可以想一下這個核心因素在於因為Private Channel 其實是不能實現百分百的採用率,所以就會導致還是存在很多Frontrunning,它們會佔據我們本身的區塊空間。那麼在引入之後,由於這些產生MEV 的Running Attack 其實是不給系統帶來新的網絡福利,他們通過獲取被攻擊的用戶的一部分獎勵成為自己的投機回報,他們是不會給這個系統帶來一些新的價值,所以從這個角度上來說,我們就算有了Private Pool 之後,其實我們還是不能夠達到網絡的最佳有效分配狀態。同時由於MEV 的存在,在整個系統當中,其實並不是網絡總體福利越高,對於驗證者就是一個最有利的選擇。在這種情況之下,礦工的選擇也會導致我們最終系統的網絡福利是沒有辦法達到一個最優解。
接下來我們會去進一步去討論是不是存在一些潛在的方法去來幫助我們解決這樣的問題。最核心的論點是攻擊者的投機回報和網絡最佳資源配置其實是不相容的。攻擊者需要MEV 的產生,幫助他們來提高自己的收益率。那麼其實可能存在的一種方法就是去改變這種網絡價值分佈不均的情況,也就是說為攻擊者提供一個激勵方式,讓他們進行一個更加合理,更加有效的網絡參與方式。
最後想和大家簡單分享一些我們在進行理論分析之後得到的數據。首先第一個我們其實是看Flashbots 的接收率,我們主要做的是看結交區塊是不是被這部分數據很直觀地體現,那我們發現其實交易始終目前還是處於一個這樣的狀態,既不是所有人都沒有看到,也不是說所有人都能看到,這是我們得到的第一個結論。第二個我們得到結論是用戶選擇Private Pool 的概率其實是和他們是不是容易被攻擊有一個非常明顯的正相關關係。
第三部分我們得到了一個與時間有關的結論,我們發現比起在Mempool 裡面的攻擊者,在Private Pool 裡面的攻擊者不需要一輪一輪地競價,獲取MEV 的攻擊者,他們要提交給礦工的費用高很多。在Public Pool 中,平均支付比率在0.3 左右,但在Flashbox 中的話,已經上升到接近0.8 的狀態。我們發現這個選擇Private Pool 的概率,其實是跟他們被被攻擊的風險呈正相關關係。這張圖就是大家可能看到這樣的一個概率分佈,然後我們發現當被攻擊的概率每增加了1%,那麼他們會選擇Private Pool 的偏好就會提高0.6%。
我們第一個最核心的結論就是說它Private Pool 既不能夠完全消除被攻擊的風險,也不能夠降低市場費用。其次我們發現Private Pool 引入會提高驗證者的福利,降低攻擊者的福利,網絡總體福利會由於更有效的區塊空間分配變得更高,但無法達到最優狀態。