MEV 샌드위치 공격 이론 설명

블록체인은 거래 기반 상태 머신(transaction-based state machine)입니다. 이는 계약 생성, 코인 또는 토큰 전송 등 온체인에서의 모든 활동은 트랜잭션을 통해 이루어지며, 이를 통해 네트워크에 기록이 남는다는 것을 의미합니다. 또한, 트랜잭션은 모두에게 공개되기 때문에, 완료된 트랜잭션뿐만 아니라 단순히 제출된 트랜잭션도 누구나 확인할 수 있습니다.

당신이 주식을 거래한다고 가정해보세요. 이익을 내기 위해서는 낮은 가격에 사고, 높은 가격에 파는 것이 기본 전략입니다. 그렇다면 주식의 가격이 변동하는 이유는 무엇일까요? 바로 누군가가 매수하거나 매도하기 때문입니다. 만약, 다른 누군가가 주식을 매수하거나 매도하기 전에 그 정보를 미리 알 수 있다면 어떤 전략을 세울 수 있을까요?

예를 들어, 톰이라는 사람이 Apple 주식을 구매하려 한다고 가정해봅시다. 톰의 거래는 Apple의 주가를 2% 상승시킬 것으로 예상됩니다. 이때, 당신이 톰의 거래가 체결되기 전에 Apple 주식을 미리 매수합니다. 그 결과, 당신의 거래로 Apple의 가격이 1% 상승하게 됩니다. 이후 톰이 거래를 진행하면서 주가는 더욱 상승하고, 톰은 예상보다 1% 높은 가격에 주식을 사게 됩니다. 톰의 거래로 인해 Apple의 주가는 최종적으로 3% 상승하게 됩니다.

이제 당신은 미리 매수했던 Apple 주식을 매도합니다. 이 과정에서 Apple의 가격은 3% 상승에서 2%로 하락하지만, 당신은 1~2%의 수익을 얻게 됩니다.

CEX(Centralized EXchange)에서는 거래가 서버 내에서 이루어지기 때문에 외부에서 그 내용을 확인할 수 없습니다. 반면 DEX(Decentralized EXchange)에서는 모든 거래가 온체인 트랜잭션으로 처리되므로, 외부에서 누구나 확인할 수 있습니다. 특히, 트랜잭션은 완료되기 전에 Mempool에 저장되며, 네트워크의 노드 참여자라면 이를 미리 볼 수 있습니다.

Sandwich Attack

아래와 같은 과정을 Sandwich Attack이라고 합니다.

  1. 피해자는 DEX인 Uniswap에서 USDT로 wETH를 구매하는 트랜잭션을 제출합니다.
  2. 이 트랜잭션은 Mempool에 등록됩니다.
  3. 공격자는 Mempool에 등록된 여러 트랜잭션에 접근하여 분석합니다.
  4. 공격자는 아래 설명할 5~9번 과정을 피해자의 트랜잭션이 블록에 포함되기 전에 완료해야 합니다.
  5. Mempool의 트랜잭션에서 공격자가 추출할 수 있는 주요 정보는 다음과 같습니다:
    • to address: 트랜잭션이 DEX를 이용하는지 확인할 수 있습니다.
    • input data: 토큰 교환 함수 호출 여부, 교환 수량, 토큰 주소 등을 파악할 수 있습니다.
    • gas price: 트랜잭션의 gas 가격을 확인할 수 있으며, 이를 통해 트랜잭션 순서를 조작하는 데 필요한 정보를 얻습니다.
  6. 공격자는 DEX를 통한 토큰 거래 트랜잭션을 탐지합니다.
  7. 여러 트랜잭션에서 거래에 대한 데이터를 추출하여 여러 수학 공식과 EVM을 통해 가장 높은 수익을 기대할 수 있는 트랜잭션을 찾습니다. (아래에서 자세히 설명)
  8. 피해자와 동일한 방향(USDT -> wETH)으로 거래하는 프론트런(front-run) 트랜잭션을 제출합니다. 이 트랜잭션의 gas price는 피해자 트랜잭션보다 1 Gwei 더 높게 설정하여 먼저 처리되도록 합니다.
  9. 앞서 매수한 토큰을 역방향으로 매도하는 백런(back-run) 트랜잭션을 제출합니다. 이 트랜잭션의 gas price는 피해자 트랜잭션과 동일하게 설정합니다.

이 공격 기법을 통해, 공격자는 피해자의 거래를 front-run하여 가격을 인위적으로 상승시키고, 이후 back-run으로 차익을 실현하는 방식으로 이익을 얻습니다.

도식으로 설명

아래 그림은 위에서 설명한 과정을 도식화한 것입니다.

아래 그림은 X축에 시간을, Y축에 트랜잭션 순서를 나타낸 것입니다.

  • $T_v$: 피해자의 트랜잭션입니다. 가장 먼저 제출되었지만, 블록에 포함되는 순서는 front-run과 back-run 공격 트랜잭션 사이에 위치합니다.
  • $T_{A1}$: front-run 트랜잭션으로, 피해자 트랜잭션보다 늦게 제출되었지만, 더 높은 gas price로 입찰하여 가장 먼저 실행됩니다.
  • $T_{A2}$: back-run 트랜잭션으로, 피해자 트랜잭션보다 늦게 제출되었지만, 동일한 gas price로 입찰하기 때문에 가장 마지막에 실행됩니다.

기대 수익

아래 그림을 살펴보겠습니다.

아래 그림은 Uniswap V2의 ETH/SAI와 ETH/DAI 풀에서 피해자 트랜잭션을 대상으로 한 샌드위치 공격을 분석한 내용입니다.

Liquidity of Pool

  • ETH/SAI pool: 7,377.53 ETH and 521,468.62 SAI
  • ETH/DAI pool: 4,660.75 ETH and 693,706.47 DAI

ETH/SAI 풀에 비해 유동성이 적은 ETH/DAI 풀에서 기대 수익이 더 높은 이유가 있습니다. 쉽게 말해, 유동성이 적을수록 가격을 더 크게 움직이기 쉬워 원하는 가격 변화를 만들기 용이합니다. 반면, 유동성이 많으면 동일한 자본으로 가격을 크게 움직이기 어려워집니다.

하지만 항상 더 많은 금액을 투자한다고 해서 최대 이익을 얻을 수 있는 것은 아닙니다. 유동성과 피해자의 거래 금액 등 상황에 따라 최적의 투자 금액이 달라지기 때문입니다.

아래 그림은 5개 풀에서 피해자 트랜잭션에 따라 공격자가 기대할 수 있는 최대 이익을 정량화하였습니다.

여기서 중요한 점은 피해자 트랜잭션에 따라 공격자가 최대 이익을 얻을 수 있는 금액을 계산하는 함수가 2차 함수라는 것입니다.

아래의 테이블은 158일 동안 여러 공격 방식에 따른 수익 합계를 보여줍니다.

  • Liquidity Taker: 이는 앞서 설명한 선매수 후 매도 방식을 의미합니다.
  • Liquidity Provider: 피해자의 트랜잭션 전에 유동성을 제거하여 가용 유동성을 줄입니다. 이로 인해 피해자는 높은 슬리피지로 거래를 진행해야 합니다.

공격 참여자 간의 경쟁

아래 테이블은 두 명의 공격자가 하나의 피해자 트랜잭션에 대해 샌드위치 공격을 시도하는 시나리오 예시입니다. 공격자는 피해자 트랜잭션의 앞과 뒤에 공격 트랜잭션을 배치할 수 있습니다. 그러나 경쟁자가 존재하는 경우, 한 공격자의 트랜잭션이 피해자 트랜잭션으로 바뀔 수 있습니다. 공격 참여자 간의 경쟁은 실제로 흔하게 발생합니다.

아래는 네 가지 경우에 대한 결과를 보여줍니다.

  1. 첫 번째 경우: Attacker(A)는 Attacker(O)보다 더 낮은 가격에 유동성 깊이를 생성합니다. 이후, Attacker(O)는 예상보다 높은 가격에 유동성 깊이를 만듭니다.
  2. 두 번째 경우: front-run은 첫 번째 경우와 동일합니다. 그러나 Attacker(O)는 Attacker(A)보다 높은 가격에 매수하고, 낮은 가격에 매도합니다.
  3. 세 번째 및 네 번째 경우: 이는 첫 번째와 두 번째 경우의 반대 상황입니다.

경쟁자가 2명에서 더 늘어난다면 어떻게 될까요? 아래 그림은 각각 2명, 5명, 10명의 경쟁자가 있을 때의 기대 수익을 보여줍니다. 피해자 트랜잭션 자체는 변하지 않기 때문에 이익을 내기 위해 필요한 피해자가 거래하는 규모는 동일합니다. 그러나 경쟁자가 많아질수록 기대할 수 있는 이익은 점점 줄어드는 모습을 보여줍니다.

규제

프런트 러닝은 SEC에 의해 전통 금융시장에서 금지된 행위입니다.
그러나 대부분의 기존 법률은 전통적인 거래소와 동일한 수준으로 암호화폐 거래소를 규제하지 않습니다. 적어도 현재까지는 법적인 문제가 없었습니다.

Entering into an equity trade, options or futures contracts with advance knowledge of a block transaction that will influence the price of the underlying security to capitalize on the trade. This practice is expressly forbidden by the SEC.
https://www.nasdaq.com/glossary/f/front-running

레퍼런스

High-Frequency Trading on Decentralized On-Chain Exchanges

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다