DEX 스왑 가격 충격과 슬리피지 허용치, 샌드위치 위험 이해하기
풀 깊이가 예상 가격 충격에 미치는 영향, 대기 중 스왑의 최소 수령량 조건, 넓은 슬리피지 허용치가 불리한 체결에 노출시키는 이유를 설명합니다.
이 글에서 다루는 내용가격 충격, 슬리피지, 허용치는 서로 다른 질문에 답합니다
짧은 요약
DEX에서 받은 견적이 달라지는 이유는 크게 둘입니다. 내 주문이 풀 가격을 움직일 수 있고, 거래가 체결되기 전에 다른 거래가 가격을 바꿀 수도 있습니다. 가격 충격은 첫 번째 효과이고, 슬리피지는 견적을 만든 시점과 실제 체결 결과 사이의 차이입니다. 슬리피지 허용치는 더 좋은 가격을 약속하는 숫자가 아니라 거래가 받아들일 최저 결과를 정하는 경계입니다.
가격 충격, 슬리피지, 허용치는 서로 다른 질문에 답합니다
가격 충격은 내 주문이 풀의 가용 유동성에 비해 얼마나 큰지에 따라 주문이 직접 가격을 움직이는 효과입니다. 현실적인 견적이라면 이 효과가 이미 예상 수령량에 들어 있습니다. 유동성이 얕은 풀에서 큰 주문을 내면 작은 주문보다 평균 체결가격이 불리해집니다. 슬리피지는 견적을 만들 때 예상한 수령량과 실제 거래가 실행될 때의 결과 사이에 생기는 차이입니다. 대기 중 다른 스왑, 시장 가격 변화, 지연, 거래 경로 변경으로 결과가 달라질 수 있습니다.
슬리피지 허용치는 거래가 통과해야 하는 한도입니다. 입력 수량을 고정하는 스왑에서는 보통 최소 수령량으로 표현하며, 최종 실행량이 그보다 적으면 계약이 거래를 되돌릴 수 있습니다. 견적에 반영된 가격 충격을 없애거나 실제 슬리피지 크기를 알려 주는 수치는 아닙니다. Uniswap의 가격 충격과 가격 슬리피지 안내도 두 용어를 구분합니다. 화면마다 계산 기준과 표시 방식이 다를 수 있으므로 경고 숫자가 늘 같은 정의를 쓴다고 가정하지 마세요.
AMM에서는 주문이 커질수록 견적이 불리해집니다
주문서 거래소에서는 대기 중인 여러 가격의 주문과 체결합니다. 상수곱 자동화 시장조성자(AMM)는 풀 안의 토큰 보유량을 기준으로 스왑 가격을 정합니다. 두 토큰 풀의 단순한 모형에서는 보유량 x와 y의 곱이 x × y = k로 유지됩니다. 한 토큰을 많이 사면 풀에서 그 토큰이 줄고 상대 토큰이 늘면서 교환 비율이 바뀝니다. 그래서 주문 크기가 사용 가능한 유동성에 비해 클수록 평균 체결가격이 더 나빠집니다.
이 식은 설명을 위한 모형이지 모든 DEX에 공통인 규칙은 아닙니다. Uniswap 개발자 안내는 v2의 상수곱 구조와 v3·v4의 가격 구간별 유동성, 훅이나 수수료 차이를 구분합니다. 실제 견적은 여러 풀이나 거래 경로를 묶을 수도 있습니다. 토큰의 마지막 차트 가격이나 풀의 총 예치액보다 해당 주문 규모와 경로에서 예상되는 수령량을 확인해야 합니다. 세부 구조는 Uniswap 스왑 작동 방식을 참고할 수 있습니다.

계산 예시: 얕은 풀에 10,000 USDC를 넣는 경우
계산을 단순하게 하기 위해 풀에 100 ETH와 200,000 USDC가 있고, 스왑 수수료와 외부 가격 변화는 없으며 상수곱 곡선을 따른다고 가정해 보겠습니다. 처음 현물 비율은 200,000 ÷ 100 = 1 ETH당 2,000 USDC입니다. 사용자가 10,000 USDC를 넣으면 풀의 USDC 보유량은 210,000이 됩니다. 곱을 유지하려면 ETH 보유량은 20,000,000 ÷ 210,000 = 약 95.238095 ETH가 됩니다. 사용자가 받는 양은 약 4.761905 ETH입니다.
처음 가격 그대로라면 10,000 USDC로 5 ETH를 살 수 있습니다. 차이는 0.238095 ETH로, 가격 충격이 없을 때의 수령량 대비 약 4.76%입니다. 평균 체결가격은 10,000 ÷ 4.761905 = ETH당 2,100 USDC로 거래 전 비율보다 5% 높습니다. 체결 뒤 풀의 한계가격은 210,000 ÷ 95.238095 = ETH당 2,205 USDC입니다. 무충격 수령량과 실제 수령량의 부족분, 평균 체결가격, 체결 후 한계가격은 서로 다른 비교값입니다. 실제 견적에는 풀 수수료와 경로의 유동성 모양도 들어갑니다. 이 계산은 설명용 가정이지 시장가격 예측이 아닙니다.
풀 수수료와 가격 곡선의 영향을 나눠 계산합니다
같은 풀 잔액에 이번에는 입력 금액의 0.30%를 수수료로 반영하는 특정 계산 방식을 가정해 보겠습니다. 상수곱 견적에 쓰이는 유효 입력량은 10,000 × (1 − 0.003) = 9,970 USDC입니다. 따라서 받는 양은 100 × 9,970 ÷ (200,000 + 9,970), 약 4.748297 ETH가 됩니다. 수수료가 없을 때 같은 가격 곡선에서 받는 4.761905 ETH보다 약 0.013607 ETH 적습니다. 처음 현물 비율로 계산한 5 ETH와 비교하면 전체 차이는 약 0.251703 ETH입니다. 수수료 없는 곡선 결과를 중간 단계로 삼으면 약 0.238095 ETH는 곡선의 영향, 나머지 0.013607 ETH는 이 수수료 조정의 영향으로 나뉩니다. 어떤 값을 기준으로 비교하는지에 따라 이 분해는 달라집니다.
0.30%는 설명을 위한 가정이며 모든 DEX에 적용되는 수수료가 아닙니다. 입력 금액에서 수수료를 반영하는 이 식은 Uniswap v2의 getAmountOut 라이브러리에 쓰인 수수료 계산을 따릅니다. 실제 풀 잔액에는 전체 입력량이 기록되므로, 견적에 사용하는 유효 입력량이 9,970 USDC라고 해서 풀에 그만큼만 전달된다는 뜻은 아닙니다. 다른 풀은 수수료율이 다르거나, 기준 금액의 다른 위치에서 수수료를 떼거나, 여러 요금을 함께 적용할 수 있습니다. 여러 풀을 거치는 경로는 각 단계의 풀 수수료에 인터페이스 수수료와 네트워크 비용까지 더해질 수 있습니다. 이 예시의 비율을 모든 스왑에 적용하지 말고 실제 경로와 수수료 내역을 확인하세요.
최소 수령량은 견적이 아니라 허용 경계입니다
같은 입력에 현재 견적이 4.7619 ETH이고 화면이 1% 허용치를 적용한다고 해 보겠습니다. 최소 수령량은 약 4.7143 ETH입니다. 4.7619 × (1 − 0.01)로 계산합니다. 실행 결과가 4.72 ETH면 하한을 넘으므로 진행될 수 있지만, 4.70 ETH라면 하한보다 낮아 해당 경로의 보호 조건에 따라 되돌아갈 수 있습니다. 견적은 여전히 4.7619 ETH이고, 최소 수령량은 제출한 거래가 감수하는 최악의 결과일 뿐입니다.
한도를 좁히면 혼잡 중 가격이 조금만 움직이거나 견적이 오래되어도 정상적인 거래가 실패할 수 있습니다. 반대로 한도를 넓히면 거래가 거절되기 전까지 더 불리한 가격을 허용합니다. Uniswap 개발자 문서는 최소 수령량을 거래 통합 계층의 보호 조건으로 설명하지만 구체적인 변수와 실패 방식은 라우터와 상품에 따라 다릅니다. 되돌아간 거래에도 체인과 거래 경로에 따라 네트워크 비용이 생길 수 있으니 실패 비용 규칙을 확인하세요. 오류를 없애려고 허용치를 무작정 높이기 전에 견적, 토큰, 경로, 수수료, 네트워크가 바뀌었는지 살펴보세요.
거래가 대기하는 동안 견적에 없던 가격 변화가 생깁니다
서명한 뒤 블록에 포함되기 전에도 다른 스왑이 풀의 보유량을 바꿀 수 있습니다. 차익거래자는 다른 시장과 풀의 가격 차이를 좁히려고 거래할 수 있고, 빠른 시장 움직임은 이전 견적을 낡은 값으로 만들 수 있습니다. 내 주문 자체가 바뀌지 않아도 최종 수령량이 달라질 수 있습니다. 일부 체인에서 가스 입찰은 포함 우선순위에 영향을 줄 수 있지만 체결 시점이나 가격을 보편적으로 보장하지 않습니다. 만료 시각은 너무 오래 대기한 거래를 거절할 수 있어도 이전 견적 그대로 체결되게 하지는 않습니다.
화면의 예상 견적과 최종 거래 내역을 나눠 기록하세요. 가격 충격은 내 주문이 경로의 유동성에 미리 미칠 것으로 예상되는 효과입니다. 견적을 만든 다음 실제 체결까지 추가된 변화는 화면이 정한 기준에서 본 실행 슬리피지입니다. 인터페이스가 둘을 한 경고에 합치거나 다른 비교 기준을 쓸 수 있으므로, 사후에 대조하려면 서명 전에 견적·시각·경로·최소 수령량을 남겨 두세요.
넓은 허용치가 샌드위치 MEV에 이용될 수 있습니다
샌드위치는 최대 추출 가능 가치, 즉 MEV의 한 유형입니다. 탐색자가 대기 중인 스왑을 보고 사용자보다 먼저 거래해 풀 가격을 불리하게 움직인 다음 사용자의 거래가 실행되도록 하고, 뒤이어 반대 방향 거래로 포지션을 정리합니다. 사용자는 원래 견적보다 나쁜 가격을 받더라도 제출한 최소 수령량보다 많이 받으면 거래가 성공할 수 있습니다. 좁은 수령량 하한은 일부 불리한 실행을 되돌릴 수 있지만 모든 거래 순서 조작이나 일반적인 가격 변동을 막지는 못합니다.
Ethereum.org의 MEV 안내는 샌드위치 순서를 설명하며 피해 사용자가 더 큰 슬리피지와 불리한 체결을 겪을 수 있다고 다룹니다. MEV가 모두 공격은 아닙니다. 차익거래는 풀 가격을 다른 시장과 가깝게 만들 수 있지만 샌드위치는 사용자 체결을 악화시킬 수 있습니다. Flashbots Protect 같은 비공개 거래 경로는 자체 보호 방식과 조건을 안내합니다. 다만 체인과 서비스별로 범위가 다르고 특정 가격을 보장하지 않으며 별도 거래 경로에 의존하게 됩니다. 이용 전에 현재 지원 범위와 조건을 확인하세요.
수수료·토큰 동작·거래 경로도 최종 결과를 바꿉니다
받는 토큰 수량이 스왑의 총비용은 아닙니다. 풀 수수료, 적용되는 인터페이스 수수료, 네트워크 비용, 견적에 이미 반영된 가격 충격, 실제 실행 슬리피지, 토큰 자체의 전송·매매 수수료를 구분하세요. 일부 토큰은 표준 ERC-20과 다른 전송 동작을 가져 거래가 실패하거나 실제 전송량이 달라질 수 있습니다. 토큰 승인은 스왑과 별도 거래일 수 있고, 각각 네트워크 비용이 들 수 있습니다.
경로 집계기는 여러 풀이나 중간 토큰을 거쳐 주문을 나누어 예상 수령량을 높일 수 있습니다. 한 경로에서 가격 충격을 줄이더라도 추가 계약 호출이나 수수료, 토큰별 위험이 생길 수 있습니다. 견적이 모든 거래소에서 최선의 체결을 보장하지는 않습니다. 정확한 입력량, 예상 수량, 최소 수령량, 풀 경로, 수수료 내역, 네트워크, 만료 시각을 함께 비교하세요. 관련된 별도 주제는 토큰 승인 안내와 이더리움 가스 수수료 안내에서 볼 수 있습니다.
서명 전 견적을 확인하고 체결 뒤에는 영수증을 대조합니다
서명 전에 네트워크와 토큰 컨트랙트 주소, 입력 수량, 경로와 풀 깊이, 표시된 가격 충격, 예상·최소 수령량, 슬리피지 설정, 만료 시각, 풀·인터페이스·네트워크 수수료, 토큰 경고를 확인하세요. 수령량이 예상보다 작아 보이면 더 적은 입력량이나 다른 경로의 견적과 비교할 수 있습니다. 거래가 실패했다면 다시 제출하기 전에 원인을 살펴보세요. 실패 거래에도 체인과 거래 경로에 따라 네트워크 비용이 들 수 있습니다.
실행 뒤에는 영수증의 실제 토큰 이동량을 견적과 최소 수령량에 대조하고, 경로·수수료·네트워크 비용·시각을 기록하세요. 최소 수령량을 예상 체결량으로 읽거나 거래가 성공했으니 모든 불리한 실행에서 보호받았다고 단정하면 안 됩니다. 여기의 계산은 수수료 없는 상수곱 풀 예시입니다. 집중 유동성 풀, 여러 단계를 거치는 경로, 토큰 세금, 오라클 기준가격, 체인별 거래 순서에 따라 결과는 달라집니다.
입력 고정과 출력 고정 주문의 보호 조건을 나눠 봅니다
앞선 예시는 입력량을 10,000 USDC로 고정하고, 그에 대한 최소 ETH 수령량을 정하는 경우입니다. 이때 입력은 바뀌지 않으며 결과가 하한보다 작아지면 거래를 실행하지 않는 방향으로 작동합니다. 반대로 원하는 ETH 수량을 먼저 정하는 출력 고정 스왑은 필요한 USDC가 견적보다 크게 늘어날 수 있으므로 최대 입력량을 두는 방식이 흔합니다. Uniswap 개발자 문서도 입력 고정 거래의 최소 출력량과 출력 고정 거래의 최대 입력량을 서로 다른 보호 조건으로 설명합니다.
따라서 화면에 1%라고 표시되어도 모든 거래에서 같은 수량이 보호되는 것은 아닙니다. 입력 고정인지 출력 고정인지, 어느 토큰을 기준으로 하한이나 상한을 잡는지, 집계기가 어떤 경로와 수수료를 견적에 반영했는지 확인해야 합니다. 멀티홉 견적은 중간 토큰의 수량과 각 단계의 수수료, 반올림까지 포함하므로 최종 출력만 보고 풀 하나의 현재 가격을 역산하기 어렵습니다. 제출 후 라우팅 조건이 바뀌면 화면 견적과 실제 호출 경로가 달라질 수도 있습니다. 거래 내역이나 탐색기에서 실제 호출과 토큰 이동을 확인해 실행된 경로를 대조하세요.
같은 풀을 여러 번 나누어 거래한다고 가격 충격이 사라지는 것도 아닙니다. 수수료와 외부 가격 변화가 없는 상수곱 모형에서는 순차 거래 뒤 풀의 최종 보유량이 한 번에 거래한 경우와 같으므로 총 가격 곡선의 영향도 대체로 같습니다. 실제로 쪼개면 네트워크 비용이 더 들 수 있고, 각 거래 사이에 다른 주문이 끼어들 가능성도 생깁니다. 서로 다른 풀로 경로를 나누면 결과가 달라질 수 있지만, 각 풀의 깊이와 수수료를 반영해 따로 비교해야 합니다.
자주 묻는 질문
Q1가격 충격과 슬리피지는 같은 뜻인가요?
아닙니다. 가격 충격은 주문이 풀 유동성에 미치는 영향입니다. 슬리피지는 견적과 최종 실행 결과 사이에 생기는 차이입니다.
Q2슬리피지 1%를 설정하면 1%를 잃나요?
아닙니다. 보통 견적을 기준으로 허용 가능한 실행 하한을 정합니다. 더 나은 결과가 나올 수도 있고 거래가 되돌아갈 수도 있으며, 한계에 가까운 결과로 체결될 수도 있습니다.
Q3허용치를 좁히면 샌드위치를 막을 수 있나요?
거래가 허용하는 결과 범위를 줄일 수는 있지만 MEV나 일반적인 가격 변동을 없애지는 못합니다. 비공개 경로도 지원 범위와 조건을 확인해야 합니다.
출처와 더 읽을 자료
내용 정정 제보
이 아티클 링크를 담은 이메일 초안을 준비합니다. 직접 보내야 Mark에 제보가 접수됩니다
QUICK CHECK
글을 다 읽었다면, 3문항으로 확인해보세요
Question 01
AMM 스왑에서 가격 충격은 무엇을 나타내나요?
정답을 고르면 바로 설명을 볼 수 있어요