최신 GPU 최적화 코드로 MEV를 수행할 수 있는 가능성

이 기사는 기계로 번역되었습니다
원문 표시

소개

탈중앙화 거래소(DEX)는 토큰 보유량에 의존하여 스왑 가격을 결정하며, 이는 비허가형(Permissionless) 거래를 가능하게 하지만, 의도치 않게 MEV 거래 기회를 발생시키기도 합니다. 공격자는 탈중앙화 거래소(DEX) 거래에서 거래를 재정렬, 삽입 또는 삭제할 수 있기 때문에, 일시적인 가격 차이를 악용하여 차익거래 또는 샌드위치 공격을 통해 수익을 창출할 수 있습니다.

오늘날 MEV 검색이 왜 이렇게 느린가요?

MEV 검색은 최적화 문제입니다. 메모리 풀과 탈중앙화 거래소(DEX) 환경이 주어졌을 때, 수천 개, 때로는 수백만 개의 가능한 거래 번들을 평가하고 가장 수익성이 높은 것을 선택하려고 합니다.

병목 현상을 진단하기 위해 우리는 최첨단 도구 두 개를 사용하여 7개의 과거 중재 MEV 사례를 재생했습니다(부록 참조).

  • Rust에서 가장 빠른 CPU 측 이더리움 가상 머신(EVM) 인 Foundry
  • TypeScrip의 MEV 검색기 Lanturn

환경:

  • 인텔 i7
  • RTX3090Ti 24G
  • SSD 1T
  • 우분투 22.04

우리는 각 도구에 대해 1,000개의 리플레이를 실행하고 세 가지 주요 단계에 걸쳐 시간이 어떻게 분배되는지 측정했습니다.

  1. 메인넷 상태에서 포킹
  2. 입력 번들 생성
  3. 스마트 계약 실행
영상
이미지 1542×618 56.9KB

저희 연구 결과는 이전 연구 결과와 일치했습니다. 입력 생성은 단순하지만(<1%), 이더리움 가상 머신(EVM) 실행과 포킹이 엔드투엔드 지연 시간을 좌우합니다. Foundry는 다음과 같은 작업에 시간을 투자합니다.

  • 포킹에 80.89% 의 시간 소요(27.87ms)
  • 스왑 실행 시 18.82% (6.49ms)

Lanturn의 성능은 더욱 나쁩니다. 멀티스레딩을 사용함에도 불구하고 이더리움 가상 머신(EVM) 실행은 Foundry보다 17.8배 느리고 포킹은 1.98배 느립니다 .

숏 MEV 검색은 CPU 실행 속도에 의해 제한되며, CPU는 검색 공간을 충분히 빠르게 탐색할 수 없습니다.


MEV Bot을 GPU 코드로 컴파일

이러한 CPU 병목 현상을 해결하기 위해 GPU를 사용합니다.

  1. MEV 봇을 솔리디티 로 작성합니다(예: 멀티홉 중재를 수행하는 라우터)
  2. mau를 사용하여 스마트 계약을 LLVM IR로 컴파일합니다.
  3. LLVM 백엔드를 사용하여 PTX 코드(CUDA 어셈블리) 생성
  4. GPU 스레드에서 기본적으로 실행

다음은 실행 예제로 사용하는 솔리디티 봇입니다. 봇의 폴백 핸들러는 스왑을 설명하는 압축 바이트 형식을 구문 분석하고, 탈중앙화 거래소(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.8KB
  1. 선택 - 최고 수익 번들을 선택하세요
  2. 크로스오버 - 새로운 번들로 재결합하여 자손으로 만듭니다.
  3. 변형 – DEX, 토큰 또는 주문을 조정하여 불변성으로 새로운 번들을 얻습니다.
  4. 평가 – GPU에서 불변성 번들을 사용하여 MEV 봇 실행

이 워크플로를 통해 방대한 검색 공간을 매우 빠르게 탐색할 수 있습니다. 여러 개체군을 동시에 평가하여 광범위하고 심층적인 검색이 가능합니다.


성과 결과

표: 2025년 1분기 블록에서 확인된 새로운 MEV 기회

이더리움(ETH) 이익 이더리움(ETH) 수익 이더리움(ETH) 가스 USD 이익 USD 수익 USD 가스
중재 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

실험 결과, 초당 거래 수(TPS) 달성하여 Lanturn보다 약 10만 배 높은 성능을 보였습니다. 2025년 1분기 실제 데이터를 기반으로, 시스템은 2건에서 14건의 거래에 걸쳐 MEV 기회를 발견했으며, 이를 통해 110만 달러의 추출 가능 수익을 달성했습니다.


런타임 오버헤드: 가볍고 안정적

영상
이미지 680×498 40.4KB

MEVISOR는 콜드 스타트업과 검색당 오버헤드라는 두 가지 유형의 오버헤드를 도입합니다.

콜드 부스트(1회용)

검색을 시작하기 전에 GPU는 PTX 봇을 로드하고 메모리를 초기화해야 합니다.
이 작업에는 7.03초가 소요되지만, 이 작업은 한 번만 발생하며 이후 모든 검색에 걸쳐 상각됩니다.

런타임 오버헤드

주요 런타임 비용은 탈중앙화 거래소(DEX) 상태 스냅샷을 GPU 메모리에 로드하는 것입니다.

탈중앙화 거래소(DEX) 풀을 64개에서 540개로 확장하면서:

  • 로딩 지연 시간은 ~0.30초로 안정적으로 유지됩니다.
  • GPU 메모리 사용량은 선형적으로 증가합니다(774MB → 1.58GB)

수백 개의 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
코멘트