2022 年 11 月 4 日,EigenPhi檢測到一種全新型別的三明治交易:一個三明治機器人擠壓了一筆增加流動性的交易,根據我們的常識,這很奇怪。這樣做有利可圖嗎?有什麼限制嗎?與之前關於包括 37 筆交易的巨大三明治交易的文章不同,該機器人展示了一種截然不同的創新策略。而本文將帶你一探AMM旗下LP的現狀有多危險。
摘要和代幣流程圖
從這筆交易中,三明治機器人獲得了 0.922832 WETH 的收入。減去前臺交易和後臺交易的 gas 成本後,剩餘的利潤約為 0.023346 WETH。該機器人在一攬子交易中實現了完美的無風險套利,沒有對 WETH 以外的資產進行風險敞口。
交易步驟
- Front-run Tx:三明治機器人的發件人地址呼叫其合約(到地址)並透過Uniswap V2:SYC 6將 21.477791967255461888 WETH 交換為 458,875.769333569771126592 SYC。
- 中間Tx: 有人在礦池合約中加入15個WETH和231,712.963735470964309251 SYC,Uniswap V2: SYC 6,得到1,792.628826087529628699 UNI-V2作為憑證。我們將其稱為中間流動性提供者 (LP),如下所示。
- 回跑Tx:三明治機器人將在前跑交易中獲得的458,875.769333569771126592 SYC換回22.400624171075764224 WETH。
下圖展示了每筆交易的代幣流向圖。
該策略的定量分析
為什麼三明治機器人可以從增加流動性的交易中獲利?它的收入究竟從何而來?它是否獲得了最大可能的收入?誰是受害者?
接下來,我們將對此策略進行詳細分析。你會看到,與被擠壓交易的使用者相比,這個池子的所有流動性提供者承擔的損失最大。更有趣的是,三明治機器人有可能在沒有嚴格先決條件的情況下自行指導這項交易。
常量和變數
首先,我們列出了計算三明治機器人收入所需的常量和變數。如下表所示,我們用一串字元來表示夾心交易前後池子狀態對應的引數。對於每個字元,我們用下標表示對應的時間,用上標表示對應的token。在這種情況下,token0 表示 SYC,token1 表示 WETH。
這是表中的上一個[ Previous Swap。](https://etherscan.io/tx/0x2c8cdc653aa63c3b8c38bfaa89f6dca820e875ab80198941aef05073404e988e)
需要幾個常量來進行計算,我們可以從事件日誌和交易資料中獲取它們。要理解這裡的計算邏輯,您可能需要一些與Uniswap V2 及其Router合約相關的背景知識。例如,swap()
和等函式中的邏輯addLiquidity()
。
約束條件
其次,三明治機器人也應該遵守一些約束條件。
最佳化問題
現在我們關注最佳化問題。給定流動資金池的初始狀態和相對恆定的引數,我們將攻擊向量公式化為涉及所有已定義引數的約束最佳化問題。
我們可以透過分析方法或模擬來解決這個問題。
黑暗中的受害者
本質上,機器人的收益來自於一筆相同數量的掉期交易在增加流動性前後所面臨的滑點的變化。換句話說,它是針對滑點變化的無風險套利。作為交易對手的有限合夥人呢?他們的 PnL 是多少?
基於前面的分析,我們繼續計算LP在本次交易中的盈虧。我們考慮兩種情況並定義如下所列的引數。
模擬結果
情況1:
上圖右下皮膚顯示,三明治機器人設定的引數對應其他LP承受的最大損失。
除此之外,我們還可以發現,超過這個門檻,機器人的收益主要來自中間LP的損失,隨著機器人投入池中的WETH越來越多,其他LP的掉期費收益將超過其損失。
從這個角度來看,中間 LP 設定的 reversion checkpoint 提供了關鍵的保護。
而且,中間LP設定的reversion checkpoint巧妙地與其他LP最大損失對應的閾值重合。有人想知道這是否是一項自我導向的三明治交易;至少,它遠不是一個失敗者。三明治機器人既可以發起三明治交易,也可以發起增加流動性的交易,前提是保證總損益為正。
從左下圖看,在特定的引數設定下,中間的LP似乎甚至可以從這筆交易中獲利,值得仔細檢查。
案例二:
如果我們假設中間的 LP 是一個獨立的個體,不知道三明治機器人,我們應該用另一種方式計算它的指定本金。三種參與者的PnL結果如下圖所示。
在這種情況下,sandwich bot 設定的初始引數不再對應其他 LP 的最大損失,如果為真則交易將被撤銷。
案例 1 更可能與三明治機器人的策略一致。
為簡化分析,以上計算均未考慮bot實際支付的Gas費用,結論並沒有因此而改變。
自我導向的三明治交易會賺錢嗎?
這個案例值得我們思考和學習的地方更多。例如,
- 什麼樣的資金池適合做類似的交易?
- 三明治機器人可以在沒有第三方發起增加流動性交易的情況下實施該策略嗎?
特定案例的推論
要找到上述問題的答案,需要對本文中的模型進行概括。在進行系統的研究之前,我們可以進行一個簡短的反事實推理來了解一下。
考慮到前臺和後臺交易的收入和利潤分別為 0.922832 WETH 和 0.023346 WETH,我們可以得出結論,三明治機器人無法透過模擬中間 LP 獲利。
模擬模型
有人可能會問,這種策略是否取決於池及其狀態?解決這個問題需要一個通用的模型和系統的學習。我們先在這裡給出一個分析框架,並在以後的報告中分享更深入的研究。
我們在下表中列出了這六個步驟對 pool 的影響。
結論
我們強調從這個案例中獲得的關鍵見解:
- 一個三明治機器人透過在 Uniswap V2 的 SYC-WETH 池中夾入一筆增加流動性的交易,賺取了近 1 WETH 的盈餘。驗證者透過汽油費獲得大部分收入。
- 新策略可以看作是針對池中流動性前後滑點變化的無風險套利。
- 與中間 LP 相比,其他 LP 在這種情況下承擔的損失要大得多。sandwich bot 設定的引數和中間 LP 施加的檢查點約束巧妙地與其他 LP 的最大損失對應的閾值相吻合。
- LP 應謹慎設定檢查點閾值,例如在發行增加流動性交易時要增加的最低流動性。否則,他們可能會因為這種三明治機器人而蒙受損失。
- 從我們的初步分析來看,機器人無法在不等待第三方增加流動性交易的情況下自行指導整個交易步驟。但是需要用一種更系統的模型來驗證這一點。
- 並且該策略對池的初始狀態非常敏感,機器人必須將其引數調整到特定範圍以從其他 LP 獲得最大盈餘。
透過Github 獲取更多區塊鏈學習資料!