使用現代GPU優化代碼進行MEV的可能性

本文為機器翻譯
展示原文

介紹

去中心化交易所 (DEX) 依靠代幣儲備來確定交易價格,從而實現無需許可的交易,但也無意中引入了市場漏洞利用 (MEV) 的機會。由於攻擊者可以重新排序、插入或刪除 DEX 交易周圍的交易,他們可以利用暫時的價格差異,透過套利或夾心攻擊來牟利。

為什麼如今MEV搜尋速度如此緩慢?

MEV 搜尋是一個最佳化問題:給定一個記憶體池和一個 DEX 環境,我們希望評估成千上萬,有時甚至是數百萬個可能的交易包,並選擇最有利可圖的交易包。

為了診斷瓶頸,我們使用兩種最先進的工具重現了七個歷史套利 MEV 範例(見附錄):

  • Foundry 是 Rust 中最快的 CPU 端 EVM。
  • Lanturn,一個用 TypeScript 寫的 MEV 搜尋器。

環境:

  • 英特爾 i7
  • RTX3090Ti 24G
  • 1T固態硬碟
  • Ubuntu 22.04

我們對每種工具進行了 1000 次回放,並測量了時間在三個主要階段的分配情況:

  1. 從主網態分叉
  2. 產生輸入包
  3. 執行智能合約
影像
圖片尺寸:1542×618,大小:56.9 KB

我們的研究結果與先前的研究相符:輸入產生過程微不足道(<1%),但EVM執行和分支過程才是端到端延遲的主要來源。代工廠支出:

  • 80.89%的時間用於分叉(27.87 毫秒)
  • 執行交換操作耗時18.82% (6.49 毫秒)

Lanturn 的效能較差:儘管採用了多執行緒技術,但其 EVM 執行速度比 Foundry慢 17.8 倍,分叉速度慢 1.98 倍

簡而言之:MEV 搜尋受限於 CPU 執行速度,而 CPU 根本無法快速探索搜尋空間。


將 MEV Bot 編譯為 GPU 程式碼

為了突破 CPU 瓶頸,我們使用 GPU:

  1. 用 Solidity 編寫 MEV 機器人(例如,執行多跳套利的路由器)。
  2. 使用mau將智能合約編譯為 LLVM IR。
  3. 使用LLVM 後端產生 PTX 程式碼(CUDA 彙編)
  4. 在 GPU 執行緒上原生執行

這是我們用作運行範例的 Solidity 機器人。它的備用處理程序會解析描述交換的壓縮位元組格式,確定 DEX 類型,並呼叫正確的swap()函數:

// SPDX-License-Identifier: UNLICENSEDpragma solidity 0.7.6;import "./libraries/uniswapv2/UniswapV2Pair.sol";import "./libraries/uniswapv3/UniswapV3Pair.sol";import "./libraries/sushiswap/SushiswapPair.sol";import "./libraries/pancakeswap/PancakeswapPair.sol";contract MEV {fallback(bytes calldata data) external payable returns (bytes memory) {uint256 amount = abi.decode(data[:32], (uint256));uint32 swap_len = uint32(abi.decode(data[32:], (bytes4)));uint32[] memory swap_vec = new uint32[](swap_len);uint32[] memory token_vec = new uint32[](swap_len);uint32 calldata_size = uint32(data.length);uint32 swaps_buf_size = (calldata_size - 32 - 4) / 2;for (uint32 i = 0; i < swap_len; i++) {swap_vec[i] = uint32(abi.decode(data[36 + i * 4:], (bytes4)));uint256 token_word = abi.decode(data[36 + swaps_buf_size + 32 * (i / 8):], (uint256));token_vec[i] = uint32(token_word >> (256 - 32 * (i % 8 + 1)));}for (uint32 i = 0; i < swap_len; i++) {bool reversed = token_vec[i] > token_vec[(i + 1) % swap_len];uint32 swap_u32 = swap_vec[i];uint8 dex_type = uint8(swap_u32 >> 24);address dex = address(swap_u32 & 0xFFFFFF);if (dex_type == 1) {amount = UniswapV2Pair(dex).swap(reversed, amount);} else if (dex_type == 2) {amount = UniswapV3Pair(dex).swap(reversed, amount)} else if (dex_type == 3) {amount = SushiswapPair(dex).swap(reversed, amount);} else if (dex_type == 4) {amount = PancakeswapPair(dex).swap(reversed, amount);} else if (dex_type == 5) {continue;}}return abi.encodePacked(amount);}}

編譯成 PTX 格式後,機器人就變成了可執行的 GPU 程式碼。與 CPU 一次評估一個軟體包不同,我們會啟動數萬個線程,每個線程測試一個不同的候選軟體包。


平行遺傳演算法:同時搜尋數千個捆綁包

平行遺傳演算法 (GA) 用於在 GPU 上搜尋捆綁包。每個 GPU 執行緒代表族群中的一個個體(即一個捆綁包)。在每一代中,演算法執行以下操作:

影像
圖片尺寸:1292×308,大小:27.8 KB
  1. 選擇-選擇利潤最高的套餐
  2. 交叉-將它們重新組合成新的子代基因組
  3. 變異-調整去中心化交易所、代幣或排序方式,以獲得新的捆綁包作為不變式。
  4. 評估-在GPU上運行有不變束的MEV機器人

這種工作流程使我們能夠以極快的速度探索廣闊的搜尋空間。它可以同時評估多個種群,從而實現廣泛而深入的搜尋覆蓋。


績效結果

表格:2025 年第一季確定的新 MEV 機遇

ETH利潤ETH收入ETH Gas美元利潤美元收入美元天然氣
套利347.75 348.30 0.54 916,334.25 917,760.85 1,426.60
三明治102.97 111.04 8.07 271,316.03 292,586.67 21,270.63
全部的450.72 459.34 8.61 1,187,650.28 1,210,347.52 22,697.23

在各項實驗中,我們實現了每秒 330 萬至 510 萬筆交易的處理速度,比 Lanturn 的效能高出約 10 萬倍。基於 2025 年第一季的真實數據,該系統發現了 2 至 14 筆交易的 MEV 機會,可提取利潤達 110 萬美元。


運轉時開銷:輕量級且穩定

影像
圖片尺寸:680×498,大小:40.4 KB

MEVISOR 引入了兩種類型的開銷:冷啟動開銷和每次搜尋開銷。

冷啟動(一次性)

搜尋之前,GPU 必須載入 PTX 機器人並初始化記憶體。
這需要 7.03 秒,但只會發生一次,並且會在以後的所有搜尋中分攤。

運行時開銷

主要的運行時開銷是將 DEX 狀態快照載入到 GPU 記憶體中。

隨著我們將 DEX 池從 64 個擴展到 540 個:

  • 載入延遲穩定在約 0.30 秒。
  • GPU記憶體使用量線性成長(774 MB → 1.58 GB)

即使有數百個 DEX,MEVISOR 也能輕鬆保持在普通 GPU 的 VRAM 限制以下,並保持低、可預測的開銷。


附錄

動機範例

長度堵塞資本(ETH)收入(ETH) DEX 鏈資產鏈
2 21536202 0.05 0.0002 0x1DC698b3d2995aFB66F96e1B19941f990A6b2662,
0x9081B50BaD8bEefaC48CC616694C26B027c559bb
0x4c11249814f11b9346808179Cf06e71ac328c1b5,
0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
3 14079213 0.12 0.0009 c926990039045611eb1de520c1e249fd0d20a8ea,
62ccb80f72cc5c975c5bc7fb4433d3c336ce5ceb,
77bd0e7ec0de000eea4ec88d51f57f1780e0dfb2
0x557B933a7C2c45672B610F8954A3deB39a51A8Ca,
0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,
0xe53EC727dbDEB9E2d5456c3be40cFF031AB40A55
4 12195667 0.64 0.0196 0x1f44e67eb4b8438efe62847affb5b8e528e3f465,
0x41ca2d9cf874af557b0d75fa9c78f0131c7f345c,
0x088ee5007c98a9677165d78dd2109ae4a3d04d0c,
0xa478c2975ab1ea89e8196811f51a7b7ade33eb11
0x6b175474e89094c44da98b954eedeac495271d0f,
0xbcda9e0658f4eecf56a0bd099e6dbc0c91f6a8c2,
0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e,
0x6b175474e89094c44da98b954eedeac495271d0f
5 13734406 2.04 0.0452 0x60594a405d53811d3bc4766596efd80fd545a270,
0x1d42064fc4beb5f8aaf85f4617ae8b3b5b8bd801,
0x9f178e86e42ddf2379cb3d2acf9ed67a1ed2550a,
0xfad57d2039c21811c8f2b5d5b65308aa99d31559,
0x5777d92f208679db4b9778590fa3cab3ac9e2168
0x6b175474e89094c44da98b954eedeac495271d0f,
0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,
0x1f9840a85d5af5bf1d1762f925bdaddc4201f984,
0x514910771af9ca656af840dff83e8264ecf986ca,
0x6b175474e89094c44da98b954eedeac495271d0f
6 14530401 0.41 0.0182 0xa478c2975ab1ea89e8196811f51a7b7ade33eb11,
0x5ab53ee1d50eef2c1dd3d5402789cd27bb52c1bb,
0x59c38b6775ded821f010dbd30ecabdcf84e04756,
0x9f178e86e42ddf2379cb3d2acf9ed67a1ed2550a,
0x153b4c29e692faf10255fe435e290e9cfb2351b5,
0x1f44e67eb4b8438efe62847affb5b8e528e3f465
0x6b175474e89094c44da98b954eedeac495271d0f,
0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,
0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9,
0x1f9840a85d5af5bf1d1762f925bdaddc4201f984,
0x514910771af9ca656af840dff83e8264ecf986ca,
0x6b175474e89094c44da98b954eedeac495271d0f
7 13731798 0.24 0.0202 0x1f44e67eb4b8438efe62847affb5b8e528e3f465,
0x153b4c29e692faf10255fe435e290e9cfb2351b5,
0x14243ea6bb3d64c8d54a1f47b077e23394d6528a,
0xd75ea151a61d06868e31f8988d28dfe5e9df57b4,
0x088ee5007c98a9677165d78dd2109ae4a3d04d0c,
0x41ca2d9cf874af557b0d75fa9c78f0131c7f345c,
0x1f44e67eb4b8438efe62847affb5b8e528e3f465
0x6b175474e89094c44da98b954eedeac495271d0f,
0xbcda9e0658f4eecf56a0bd099e6dbc0c91f6a8c2,
0x514910771af9ca656af840dff83e8264ecf986ca,
0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9,
0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,
0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e,
0x6b175474e89094c44da98b954eedeac495271d0f
8 13754757 2.48 0.0680 0xa478c2975ab1ea89e8196811f51a7b7ade33eb11,
0x5ab53ee1d50eef2c1dd3d5402789cd27bb52c1bb,
0x59c38b6775ded821f010dbd30ecabdcf84e04756,
0x1d42064fc4beb5f8aaf85f4617ae8b3b5b8bd801,
0x11b815efb8f581194ae79006d24e0d814b7697f6,
0xfcd13ea0b906f2f87229650b8d93a51b2e839ebd,
0xc0067d751fb1172dbab1fa003efe214ee8f419b6,
0x60594a405d53811d3bc4766596efd80fd545a270
0x6b175474e89094c44da98b954eedeac495271d0f,
0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,
0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9,
0x1f9840a85d5af5bf1d1762f925bdaddc4201f984,
0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2,
0xdac17f958d2ee523a2206206994597c13d831ec7,
0x4206931337dc273a630d328da6441786bfad668f,
0x6b175474e89094c44da98b954eedeac495271d0f

來源
免責聲明:以上內容僅為作者觀點,不代表Followin的任何立場,不構成與Followin相關的任何投資建議。
喜歡
84
收藏
14
評論