MEV 보호: DEX에서 샌드위치 공격을 피하는 방법

— By Tony Rabbit in Tutorials

MEV 보호: DEX에서 샌드위치 공격을 피하는 방법

샌드위치 공격에 대한 MEV 보호를 위한 실용적인 방어 가이드: 슬리피지를 올바르게 조이고, 프라이빗 RPC를 통해 라우팅하고, 대규모 주문을 분할하고, 샌드위치 공격을 당했는지 확인하세요.

샌드위치 공격에 대한 MEV 보호는 봇이 스왑 직전에 매수하고 직후에 매도하여, 사용자 거래가 생성하는 가격 변동을 가로채는 것을 막는 것을 의미합니다. 샌드위치 공격은 봇이 공개 멤풀에서 사용자의 보류 중인 거래를 발견하고, 이를 선행하여 가격을 올린 다음, 사용자의 거래가 더 나쁜 가격에 체결되도록 하고, 이익을 위해 덤핑하는 최대 추출 가능 가치(MEV)의 한 형태입니다. 좋은 소식은 이것이 해결 가능한 문제라는 것입니다. 올바른 슬리피지 설정, 프라이빗 거래 경로, 그리고 더 스마트한 주문 크기 조절을 통해 스왑이 공격에 의해 수익성이 없도록 만들 수 있습니다. 이 가이드는 또 다른 정의가 아닌 실행 가능한 방법이므로, 바로 방어 전략으로 넘어가겠습니다.

핵심 요약

  • 샌드위치 봇은 두 가지가 필요합니다: 공개 멤풀에 보이는 사용자 거래와 가치를 추출할 충분한 슬리피지 여유.
  • 거래가 허용하는 한 슬리피지를 최대한 타이트하게 설정하세요. 높은 슬리피지는 안전 마진이 아니라 공개적인 초대입니다.
  • 보호되거나 프라이빗 RPC는 사용자의 보류 중인 스왑을 숨겨 봇이 이를 보고 샌드위치 공격을 할 수 없게 합니다.
  • 대규모 주문을 분할하고 피크 gas 시 얇은 풀을 피하면 봇이 먹이로 삼는 가격 영향을 제거할 수 있습니다.
  • 동일 블록에서 사용자 거래를 둘러싼 매수 및 매도를 검사하여 과거 샌드위치 공격을 확인할 수 있습니다.

하나의 다이어그램으로 보는 샌드위치 공격 방식

샌드위치 공격은 단일 블록에서 세 가지 순서의 거래로 발생합니다. 봇은 공개 멤풀을 주시하고, 사용자의 매수 거래가 채굴되기를 기다리는 것을 본 다음, 사용자 거래의 양쪽에 자신의 거래를 삽입합니다. 아래 그림은 정확한 순서를 보여줍니다.

단일 블록 내 샌드위치 공격 거래 순서봇이 피해자보다 먼저 매수하고, 피해자는 더 나쁜 가격에 체결되며, 그 다음 봇이 매도합니다. 이 모든 것이 동일 블록에서 발생합니다. 하나의 블록 1. 봇 매수 선행 매매로 가격 상승 2. 사용자 체결 더 나쁜 가격에 스왑 체결 3. 봇 매도 스프레드 이익을 위해 덤핑 봇은 공개 멤풀에서 사용자의 보류 중인 스왑을 보고 이를 둘러쌉니다.

이 공격은 두 가지 문이 동시에 열려 있기 때문에 작동합니다: 사용자의 거래가 어떤 봇이든 읽을 수 있는 공개 멤풀에 브로드캐스트되고, 사용자의 슬리피지 허용 범위가 봇이 밀어 올리는 가격을 흡수할 만큼 충분히 넓기 때문입니다. 이 두 문 중 하나라도 닫으면 공격자에게는 계산이 맞지 않게 됩니다. 전체 메커니즘에 대해서는 암호화폐 샌드위치 공격이란 무엇인가와 더 광범위한 DEX 거래의 MEV 위험을 참조하세요.

슬리피지를 올바르게 조이는 방법 (그리고 너무 높은 슬리피지가 공격을 유발하는 이유)

슬리피지 허용 범위는 확인을 누른 시점부터 스왑이 정산될 때까지 허용할 최대 가격 변동입니다. 이는 변동성이 큰 거래가 실패하지 않도록 존재하지만, 허용하는 모든 퍼센트 포인트는 샌드위치 봇이 훔칠 수 있는 여유 공간입니다. 유동성이 높은 페어에 10% 슬리피지를 설정하면, 네트워크에 최대 10% 더 나쁜 체결을 수락하겠다고 말하는 것이며, 봇은 수익성 있는 만큼 정확히 그만큼을 가져갈 것입니다.

둥글고 편안한 숫자로 기본 설정하는 대신, 거래가 허용하는 한 슬리피지를 최대한 타이트하게 설정하세요. 깊고 유동성이 높은 풀에서는 0.1%에서 0.5%면 충분한 경우가 많습니다. 변동성이 크거나 새로 출시된 토큰은 실제 가격 변동 때문에 더 많은 슬리피지가 필요할 수 있지만, 추가되는 모든 포인트를 안전이 아닌 노출로 간주해야 합니다. 낮은 슬리피지에서 스왑이 계속 실패한다면, 정직한 해결책은 보통 풀이 얇거나 주문이 너무 큰 것이지, 허용 범위를 15%로 올리는 것이 아닙니다. 체결이 왜 나빠지는지 이해하려면 슬리피지, 가격 영향, 풀 깊이가 나쁜 체결을 유발하는 방법을 읽어보세요.

방어제거하는 것가장 적합한 경우
타이트한 슬리피지봇이 필요로 하는 이익 공간모든 스왑, 항상
프라이빗 / 보호된 RPC공개 멤풀에서의 가시성더 크거나 민감한 거래
주문 분할봇이 먹이로 삼는 가격 영향풀 깊이에 따른 크기
MEV-인식 애그리게이터단일 얇은 풀 노출다중 경로, 대규모 거래

공개 멤풀에서 벗어나기 위해 보호되거나 프라이빗 RPC 사용하기

가장 효과적인 단일 방어책은 봇이 주시하는 곳에 거래를 브로드캐스트하는 것을 멈추는 것입니다. 일반적인 스왑은 먼저 공개 멤풀로 이동하여 몇 초 동안 대기하며, 기다리는 동안 완전히 읽을 수 있습니다. 보호되거나 프라이빗 RPC는 거래를 릴레이를 통해 블록 빌더에게 직접 제출하므로, MEV 봇이 선행 매매 및 샌드위치 공격을 할 수 있는 공개 풀에 머무르지 않습니다.

실제로 설정 하나만 변경하면 됩니다. 지갑의 네트워크 구성에서 기본 RPC 엔드포인트를 이를 위해 구축된 서비스에서 제공하는 샌드위치 공격 방지용으로 교체한 다음, 평소처럼 스왑하면 됩니다. 많은 지갑과 프론트엔드는 이제 기본적으로 MEV 보호 기능을 제공하지만, 보호된다고 가정하기 전에 실제로 작동하는지 확인하세요. 프라이빗 경로는 또한 봇이 애초에 거래를 둘러쌀 수 없으므로, 실패하거나 되돌려진 공격 시도가 사용자에게 비용을 발생시키지 않는다는 것을 의미합니다.

대규모 주문을 분할하고 MEV-인식 애그리게이터 사용하기; 피크 gas 시 얇은 풀 피하기

크기가 표적이 되는 이유입니다. 깊은 풀에서의 작은 스왑은 가격을 거의 움직이지 않으므로, 추출할 것이 거의 없습니다. 얕은 풀에서의 큰 스왑은 가격을 많이 움직이며, 그 움직임이 바로 샌드위치 봇이 포착하는 이익입니다. 두 가지 습관이 이를 줄여줍니다.

첫째, 대규모 주문을 더 작은 조각으로 분할하여 단일 거래가 공격할 가치가 있을 만큼 큰 가격 변동을 만들지 않도록 합니다. 둘째, 여러 풀에 걸쳐 거래를 분산시키고 프라이빗 주문 흐름을 통해 제출할 수 있는 MEV-인식 애그리게이터를 통해 라우팅합니다. 1inch와 같은 DEX 애그리게이터는 단일 풀보다 더 깊은 결합 유동성을 찾고 종종 경로에 보호 기능을 포함합니다. 마지막으로, 혼잡이 봇에게 가장 많은 시간과 행동할 동기를 제공하는 피크 gas 시 얇은 풀에서 큰 거래를 실행하는 것을 피하세요. 더 조용한 시간에 거래하면 DEX에서 gas 수수료를 낮추는 방법에서 다룬 바와 같이 비용도 덜 지불합니다.

거래 내역에서 샌드위치 공격을 당했는지 확인하는 방법

체결이 잘못된 것 같으면, 사후에 샌드위치 공격을 확인할 수 있습니다. 블록 탐색기에서 스왑을 열고 블록 번호와 위치를 기록하세요. 샌드위치 공격은 명확한 서명을 남깁니다: 동일한 블록에서 동일한 봇 주소가 사용자 거래 직전에 사용자 토큰을 매수하고 직후에 매도하는 주문을 합니다.

세 가지 확인을 통해 살펴보세요. 첫째, 해당 블록에서 사용자 거래를 둘러싼 거래를 살펴보고, 하나의 주소가 사용자 스왑을 둘러싸는 동일한 토큰의 매수 및 매도를 찾으세요. 둘째, 사용자가 받은 가격을 블록 직전의 풀 가격과 비교하세요. 직후에 다시 돌아오는 눈에 띄게 나쁜 체결이 단서입니다. 셋째, 둘러싼 거래들이 동일한 발신자를 공유하거나 명확하게 조정되었는지 확인하세요. 이 세 가지가 모두 일치한다면, 샌드위치 공격을 당한 것이며, 위에서 언급한 핵심 요약(더 타이트한 슬리피지 + 프라이빗 RPC)이 다음 번에 이를 막을 것입니다.

이 기사는 교육 목적으로만 제공되며, 금융 조언이 아닙니다.