使用现代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
评论