原文:Jake_xbt
編譯:Crush
01
什麼是MEV?
我經常被問到MEV 是什麼,以及搶先交易(front-runs)和尾隨交易(back-runs)是如何工作的,那麼我就以我自己的機器人工作機制為例,在這篇長文中做一個解釋。
鏈上流動性是碎片化的,雖然類似Uniswap 這樣的流動性礦池子很多,但是它們之間沒有相互通信,每個礦池子都提供實時交易所資產的報價,而正是這種去中心化的流動性,創造了在不同礦池子中低買高賣的機會。
舉例:一個用戶在Uniswap 的WETH-USDC 礦池子賣出了500 萬美元的WETH,當他賣出的時候,Uniswap 上的WETH 價格下跌,那麼它就會允許其他用戶以相較於Sushiswap 上更便宜的價格購買WETH。
因此,精明的用戶就可以在Uniswap 上購買WETH,然後在Sushiswap 上面出售。
02
鏈上套利有什麼不同?
上面舉例說的是傳統套利的原理,鏈上defi 還多了一點不同的東西:Atom性。
我們都知道,區塊鏈的狀態逐塊更新,這意味著一個交易裡面可以執行多個操作,前提是這個交易的最終狀態是正確的,即這個交易最終要是成功的。
例如,我可以從Aave 借貸礦池免費借到500 萬美元的USDC,前提是我在交易結束時將500 萬美元的USDC 準確歸還給借貸礦池,這就是傳說中的「閃電貸」,相信你在很多項目被盜的新聞中經常聽到。
(譯者註:即藉貸和還貸兩個動作在一條交易裡面執行,通過借貸而來的資金賺取更多的收益,這樣就能一瞬間還清貸款,並保留收益。)
閃電貸為那些沒有大量資金的用戶免費創造了大規模鏈上套利的機會。當然了,這種錢並不容易賺。以上套利思路的出現,就帶來了「套利空間的競爭」。
而大多數Atom套利的空間都由少數地址主導,這些地址獲得了大部分的利潤,所以這大概率是所有領域中競爭最激烈的一塊兒。套利的成功,是套利者的智慧、網絡的低延遲以及良好的基礎設施的結合。
(譯者註:少數地址獲得大部分利潤,這符合經濟學中的二八原則,即20% 的因素影響80% 的結果。)
03
機器人是如何工作的?
機器人會直接連接到內存礦池(mempool),內存礦池是一個隊列,裡面存儲著一組等待被確認的交易。機器人會埋伏在礦池子裡面,等待可以創造套利機會的交易出現。
一旦發現可套利的交易,機器人會自動計算套利的最佳方式,然後將一系列操作,放到一個交易裡面,直接將這個交易提交到內存礦池中,和可套利的那個交易放在同一個區塊中進行打包。
我的機器人會在類似Uniswap 這樣的交易所中尋找的套利機會,它可以在目標交易出現後執行,最後以利用不同礦池子之間流動性的差異,來獲取利潤。
為了搞明白什麼樣的交易算是可套利的機會,你必須先要了解Uniswap V2 的工作原理。
04
Uniswap V2 的工作原理
假設一個礦池子裡麵包含X 個WETH 和Y 個USDC,並且它允許用戶在礦池子中進行WETH 和USDC 的交易。那麼礦池子的管理原則是:保證這個X 和Y 的乘積始終是一個常數我們稱之為「Uniswap 不變量」。
因此,對於一個儲備為(X, Y) 的礦池子,我們可以通過求解以下等式計算出我們期望將ΔX WETH 賣出多少USDC 到礦池中:
(譯者註:這裡的ΔX WETH 指的是一個增量,是數學中函數的相關概念,讀者可跳過複雜的公式計算,繼續往下看。)
實際操作中,礦池子還會收取大概30bps(約0.3%)的手續費,在計算上面的公式時,你可以通過將ΔX WETH 乘以0.997 來保證計算結果的準確性。為了解釋起來方便,我們這裡簡化一下,省略這個步驟。
重要的是,我們可以重新拓展和排列這個方程,然後根據WETH 輸入的ΔX,得到一個UDDC 輸出的ΔY 的表達式:
不錯,現在在任何一個Uniswap V2 礦池子中給你一個輸入量,相信你都能確切地計算出預期輸出量了。
05
套利機會是如何運作的?
套利一般可以簡化為「低買高賣」,在這種情況下,我們需要找到一個A 礦池去購買WETH,A 礦池的WETH 價格比B 礦池的便宜,然後我們將WETH 在B 礦池中出售,即在A 礦池中低買,在B 礦池中高賣。
假設A 礦池有儲備金(X, Y),B 礦池有儲備金(X̂, Ŷ),那麼如果我們在A 礦池中賣出ΔX 個WETH,收到ΔY 個USDC,那麼我們可以計算這些USDC 在B 礦池中能後換到多少個WETH,如果有得賺,那麼一個套利機會就形成了。
所以讓我們計算一下,在第一次交易中,我們將X 換成Y,第二次交易中,我們又將Ŷ 換成X̂,根據前面的方程,計算如下:
這裡的ε 表示輸入的ΔX 與執行兩次交易之後的輸出之間的差異。如果我們能找到將ε > 0 最大化的方法,我們就找到了有利潤的套利。
(譯者註:這個差異ε 即你套利前投入的WETH 與套利完成後的WETH 的差,如果WETH 變多了,說明套利成功,如果操作結束,WETH 反而還少了,那說明這是一次失敗的套利。)
所以我們可以用下面這個表達式來簡化我們上面的方程:
套利機器人的其中一項工作就是使得利潤最大化,在我們的方程中,這相當於最大化ε。只有當A > B 時,方程才會有一個唯一的最優解,一旦 A
06
機器人如何從機會中獲利?
一旦我們弄清楚瞭如何執行交易以獲得最大利潤的話,剩下的事兒就簡單了,我們需要讓機器人獲得初始資金來進行套利,放到上面的公式裡,就是獲得ΔX。
初始資金可以從AAVE 中操作閃電貸中獲取。機器人需要將藉貸、交易以及還貸三個操作,捆綁在一個交易裡面。這個過程,我們可以通過使用預先部署在鏈上的自定義智能合約來完成。
一旦我們的交易被創建,同時簽名成功,它就會被提交到內存礦池等待礦工挖礦,即等待交易成功。但是由於還有其它很多的機器人同樣也在尋找套利的機會,我們需要保證我們的交易被首先通過。
這意味著我們的套利交易應該跟隨目標交易,被打包在同一個區塊中,然後立刻完成交易。
這就是所謂的尾隨交易(back-runs),這種情況下,開採區塊中的交易順序如下所示:
為了實現尾隨交易,機器人必須要先知道目標交易所提供的gas 費是多少,然後將這些參數準確的複製到我們的套利交易中。最後,套利交易由機器人進行簽名,並提交到內存礦池中進行驗證,利潤到手
原文鏈接:
What is MEV & On-Chain Arbitrage? 🧵
I often get asked about what MEV is & how front-runs/back-runs work, so I’ve condensed an explainer of my specific bot mechanics into a thread
(Trigger Warning: Lots of alpha)
— Jake (@jake_xbt) October 16, 2022
資訊來源:由0x資訊採集自互聯網。版權歸作者“Biteye”所有,未經許可,不得轉載