멤풀 스나이핑(Mempool Sniping)

멤풀 스나이핑(Mempool Sniping)

간혹 매직에덴(Magic Eden)에서 분명 오디널스를 구매했는데 들어오지 않은 경험을 해본 사람이 있을 것이다.

  • 매직에덴(MagicEden)과 같은 마켓 플레이스에서 오디널스는 PSBT(Partially Signed Bitcoin Transaction) 스왑을 통해 거래된다.
  • 오디널스 판매자는 “내 주소로 N 개만큼의 BTC를 전송하면 오디널스로 스왑해줄게”라고 오프체인 PSBT에 부분(partailly) 서명하게 된다.
  • 매직에덴과 같은 마켓플레이스는 구매자가 나머지 절반에 서명할 때까지 판매자 오프체인 PSBT를 보호하는 역할을 한다.
  • 구매자는 해당 수량만큼의 BTC를 전송하는 오디널스 ↔ BTC 스왑 거래(transaction)을 전송한다.
  • 해당 거래는 비트코인 네트워크에 전파(broadcast) 된다.​
  • 이렇게 구매자 비트코인 지갑에서 ‘보내기(send)’ 버튼을 누르는 순간 브로드캐스팅 된 거래는 ‘멤풀(mempool)’이라는 거래들이 옹기종기 모이는 장소로 이동한다.
  • 멤풀에는 전송되었지만 아직 블록에서 확정되지 않은 모든 ‘거래(transaction)’들이 둥둥 떠다니는 공간이다.
  • 따라서 해당 멤풀에서 확정되지 않은 거래를 개인 지갑에서는 ‘대기(pending)’ 상태로 표기하여 보여준다.​

비트코인 네트워크의 10분 간격 블록 컨펌 타임(mempool.space)

  • 비트코인 블록은 평균 10분 간격으로 채굴되는데, 즉 해당 거래가 컨펌까지 최대 10분이 걸릴 수 있다.
  • 따라서 적어도 최대 10분간은 해당 거래가 멤풀에 둥둥 떠다닐 가능성이 높다.
  • 바로 이 10분간 ‘스나이퍼(sniper)’들은 기회를 포착하기 위해 바쁘게 움직이기 시작한다.
  • 스나이퍼는 주로 군대에서 ‘특등 사수’라고 불리며 이 중 고도로 훈련된 원거리 사격 전문가인 저격수를 의미하는데
  • 별명과 같이 스나이퍼들은 멤풀의 거래들을 감시하고 단기간에 수익을 낼 수 있는 거래를 식별하여 저격할 준비를 한다.​
  • 멤풀에서 거래가 대기하는 동안에는 누구나 멤풀에서 PSBT를 가져와 직접 서명하고 업데이트된 자신의 트랜잭션을 멤풀에 다시 제출할 수 있다.
  • 매력적인 트랜잭션을 포착한다면 스나이퍼는 더 높은 수수료(fee)를 지닌 경쟁하는 거래를 쏴(broadcast) 버린다.
  • 이는 비트코인 네트워크의 ‘RBF(‘Replace-By-Fee)’라는 기능을 활용한다.
  • 일반적으로 해당 기능은 컨펌되지 않은(unconfirmed) 거래를 빠르게 하기 위해 수수료(fee)를 높인 다른 트랜잭션으로 빠르게 컨펌될 수 있도록 대체하는 것이다.​
  • 사실 이건 오디널스(ordinals) 등장 전에는 단순히 수수료를 높이고 거래를 빠르게 만드는 것이기 때문에 문제 될게 전혀 없었다.
  • 하지만, 메직에덴 세컨더리 마켓에서 오디널스 ‘구매(buy)’를 처리하는 방식이 문제가 되었다.
  • 오디널스 판매자 트랜잭션의 UTXO signature가 ‘ANYONECANPAY(누구나 지불 가능)’으로 서명돼있기 때문이다.
  • 따라서 위에 설명한 것처럼 기존 거래를 스나이퍼가 PSBT 대체 서명을 통해 공정(?) 하게 뺏어버릴 수 있는 구조가 된것이다.

결국 이 글을 읽는 누구나 요건만 충족한다면 스나이퍼가 될 수 있다.

스나이퍼들이 노리는 타깃은 명확하다.

1) 누군가 팻 핑거(fat-finger) 한 거래를 빼앗아 플립핑(flipping) 하려는 경우

2) 최초 민팅 후 2차 거래 개시 후 가격이 급등하는 거래를 뺏으려는 경우

  • 결국 느낀 점은 비트코인판 MEV(Maximal Extracted Value)와 비스무리하다.
  • (*트랜잭션 순서를 임의로 변경한다는 것과 같은 개념은 아님)
  • 그럼 먼저 구매 버튼 눌러서 보내버린 내 비트는…?

- RBF 트랜잭션에 밀려 드롭되고 다시 전부 돌려받게 됨

- 다만 내가 구매하려던 오디널스는 뺏김(열받음 포인트 1)

- 결과적으로 구매 버튼을 눌러도 내가 받는다는 보장이 없다는 소리임

그럼 멤풀에서 애초에 스나이핑을 막을 수 있는 방법은 없는 건가?

- 없음

- 오디널스 OG 들과 매직에덴도 이 주제에 대해 활발하게 논의를 진행 중이다.

아니면…

  • 애초에 최초 ‘구매’ 트잭을 날릴 때 수수료를 높게 설정해서 다음 블록에서 컨펌되도록 물 떠놓고 비는 방법이 있다.
  • 내 구매 거래가 저격당하는지 지켜보다가 같이 RBF로 수수료 전쟁에 참여하는 방법도 있다.

이더리움 MEV 프로텍션에 대한 활발한 논의와 개발이 이루어지는 것처럼, 멤풀 스나이핑에서도 일반인도 쉽게 사용 가능한 모니터링 대시보드와 거래 수수료 수정 및 거래 가속화 툴이 나오지 않을까 생각된다.