Khả năng thực hiện MEV với mã được tối ưu hóa cho GPU hiện đại

Bài viết này được dịch máy
Xem bản gốc

Giới thiệu

Các sàn giao dịch phi tập trung (DEX) dựa vào dự trữ Token để xác định giá hoán đổi, cho phép giao dịch Không cần cho phép , nhưng cũng vô tình tạo ra cơ hội MEV. Vì kẻ tấn công có thể sắp xếp lại, chèn hoặc xóa các giao dịch xung quanh các giao dịch Sàn phi tập trung (DEX) , chúng có thể khai thác sự chênh lệch giá tạm thời để kiếm lời thông qua các cuộc tấn công chênh lệch giá hoặc tấn công xen kẽ.

Tại sao tìm kiếm MEV lại chậm như vậy hiện nay?

Tìm kiếm MEV là một vấn đề tối ưu hóa: với một mempool và một môi trường Sàn phi tập trung (DEX) , chúng ta muốn đánh giá hàng nghìn, đôi khi là hàng triệu gói giao dịch có thể có và chọn gói có lợi nhuận cao nhất.

Để chẩn đoán các điểm nghẽn, chúng tôi đã xem lại bảy ví dụ MEV về chênh lệch giá trong lịch sử (xem Phụ lục) bằng hai công cụ hiện đại:

  • Foundry, Máy ảo Ethereum (EVM) phía CPU nhanh nhất trong Rust
  • Lanturn, một công cụ tìm kiếm MEV trong TypeScrip

Môi trường:

  • Intel i7
  • RTX3090Ti 24G
  • Ổ cứng thể rắn 1T
  • Ubuntu 22.04

Chúng tôi đã chạy lại 1.000 lần cho mỗi công cụ và đo lường cách thời gian được phân chia thành ba giai đoạn chính:

  1. Phân nhánh từ trạng thái mạng chính
  2. Tạo các gói đầu vào
  3. Thực hiện hợp đồng thông minh
hình ảnh
hình ảnh 1542×618 56,9 KB

Phát hiện của chúng tôi phù hợp với nghiên cứu trước đây: việc tạo đầu vào khá đơn giản (<1%), nhưng việc thực thi Máy ảo Ethereum (EVM) và phân nhánh lại chiếm ưu thế về độ trễ đầu cuối. Foundry chi tiêu:

  • 80,89% thời gian phân nhánh (27,87 ms)
  • 18,82% khi thực hiện hoán đổi (6,49 ms)

Lanturn thậm chí còn hoạt động kém hơn: tốc độ thực thi Máy ảo Ethereum (EVM) chậm hơn 17,8 lần và tốc độ phân nhánh chậm hơn 1,98 lần so với Foundry, mặc dù có đa luồng.

Tóm Short: Tìm kiếm MEV bị giới hạn bởi tốc độ thực thi của CPU và CPU không thể khám phá không gian tìm kiếm đủ nhanh.


Biên dịch MEV Bot thành mã GPU

Để thoát khỏi tình trạng tắc nghẽn CPU này, chúng tôi sử dụng GPU:

  1. Viết bot MEV trong Solidity (ví dụ: bộ định tuyến thực hiện phân xử đa bước nhảy)
  2. Biên dịch hợp đồng thông minh sang LLVM IR bằng mau
  3. Tạo mã PTX (lắp ráp CUDA) bằng cách sử dụng phần phụ trợ LLVM
  4. Thực thi nó một cách tự nhiên trên Threads GPU

Đây là bot Solidity mà chúng tôi sử dụng làm ví dụ chạy thử. Trình xử lý dự phòng của nó sẽ phân tích cú pháp một định dạng byte nén mô tả các lần hoán đổi, xác định loại Sàn phi tập trung (DEX) và gọi hàm swap() chính xác:

// 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);}}

Sau khi biên dịch sang PTX, bot này sẽ trở thành mã GPU thực thi. Thay vì đánh giá từng gói một như CPU, chúng tôi khởi chạy hàng chục nghìn Threads, mỗi luồng kiểm tra một gói ứng viên khác nhau.


Thuật toán di truyền song song: Tìm kiếm hàng nghìn bó cùng một lúc

Thuật toán di truyền song song (GA) được sử dụng để tìm kiếm các bó trên GPU. Mỗi luồng GPU đại diện cho một cá thể (tức là một bó) trong quần thể. Ở mỗi thế hệ, thuật toán thực hiện:

hình ảnh
hình ảnh 1292×308 27,8 KB
  1. Lựa chọn – chọn các gói lợi nhuận cao nhất
  2. Sự giao thoa – kết hợp chúng lại thành các bó mới như con cái
  3. Đột biến – điều chỉnh DEX, mã thông báo hoặc thứ tự để có được các gói mới dưới dạng bất biến
  4. Đánh giá – chạy bot MEV với các gói bất biến trên GPU

Quy trình làm việc này cho phép chúng tôi khám phá không gian tìm kiếm rộng lớn cực kỳ nhanh chóng. Nhiều quần thể có thể được đánh giá đồng thời, cho phép phạm vi tìm kiếm rộng và sâu.


Kết quả hiệu suất

Bảng: Các cơ hội MEV mới được xác định trong các khối quý 1 năm 2025

Lợi nhuận ETH Doanh thu ETH Gas ETH Lợi nhuận USD Doanh thu USD USD Gas
Trọng tài 347,75 348,30 0,54 916.334,25 917.760,85 1.426,60
Sandwich 102,97 111.04 8.07 271.316,03 292.586,67 21.270,63
Tổng cộng 450,72 459,34 8.61 1.187.650,28 1.210.347,52 22.697,23

Qua các thử nghiệm, chúng tôi đạt được 3,3 triệu–5,1 triệu Số lượng giao dịch trên mỗi giây, vượt trội hơn Lanturn khoảng 100.000 lần. Dựa trên dữ liệu thực tế từ quý 1 năm 2025, hệ thống đã phát hiện ra các cơ hội MEV trải dài từ 2 đến 14 giao dịch, mang lại lợi nhuận khai thác 1,1 triệu đô la.


Chi phí thời gian chạy: Nhẹ và ổn định

hình ảnh
hình ảnh 680×498 40,4 KB

MEVISOR giới thiệu hai loại chi phí chung: chi phí khởi động nguội và chi phí chung cho mỗi lần tìm kiếm.

Tăng cường lạnh (một lần)

Trước khi tìm kiếm, GPU phải tải bot PTX và khởi tạo bộ nhớ.
Quá trình này mất 7,03 giây nhưng chỉ diễn ra một lần và được phân bổ cho tất cả các lần tìm kiếm trong tương lai.

Chi phí thời gian chạy

Chi phí thời gian chạy chính là tải ảnh chụp nhanh trạng thái Sàn phi tập trung (DEX) vào bộ nhớ GPU.

Khi chúng tôi mở rộng quy mô từ 64 lên 540 nhóm Sàn phi tập trung (DEX) :

  • Độ trễ tải vẫn ổn định ở mức ~0,30 giây
  • Sử dụng bộ nhớ GPU tăng tuyến tính (774 MB → 1,58 GB)

Ngay cả với hàng trăm DEX, MEVISOR vẫn nằm trong giới hạn VRAM của GPU thông thường và duy trì chi phí thấp, có thể dự đoán được.


Phụ lục

Ví dụ về động lực

Chiều dài Block Vốn (ETH) Doanh thu (ETH ) Chuỗi Sàn phi tập trung (DEX) Chuỗi tài sản
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

Nguồn
Tuyên bố từ chối trách nhiệm: Nội dung trên chỉ là ý kiến của tác giả, không đại diện cho bất kỳ lập trường nào của Followin, không nhằm mục đích và sẽ không được hiểu hay hiểu là lời khuyên đầu tư từ Followin.
Thích
84
Thêm vào Yêu thích
14
Bình luận