Ошибка с проскальзыванием на DEX: история одного обмена
Самая дорогая ошибка новичка на децентрализованной бирже — не перепутать сеть и не отправить токены на чужой адрес. Хотя и это регулярно заканчивается плохо.
Демид Красильников, Обозреватель и гид по криптограмотности·Обновлено: 29 августа 2026 г.·13 мин

Главная системная проблема возникает раньше: пользователь видит одну цену, подтверждает обмен, а в блокчейне получает совсем другую сумму.
Это и есть проскальзывание при обмене на DEX. Оно появляется не потому, что биржа внезапно решила взять дополнительную комиссию. Цена меняется внутри пула ликвидности, пока транзакция пользователя ждёт подтверждения. Если допуск установлен слишком широко, сделка пройдёт по невыгодному курсу. Если слишком узко — транзакция завершится ошибкой, а сетевой газ всё равно будет потрачен.
Я отношусь к этой настройке как к базовому элементу риск-менеджмента. Не к мелкой галочке в интерфейсе Uniswap и не к технической детали для разработчиков. Одна цифра в поле slippage tolerance может определить, будет ли обмен обычной операцией или дорогим уроком.
Механика AMM: почему цена меняется прямо во время обмена
Обычная биржа сопоставляет заявки покупателей и продавцов. Если кто-то продаёт биткоин по определённой цене, а другой участник готов купить его по этой цене, система сводит ордера. Цена формируется книгой заявок.
Большинство популярных DEX работает иначе. В основе лежит AMM — автоматический маркет-мейкер. Вместо книги заявок используются пулы ликвидности, где лежат две пары активов: например, ETH и USDC или токен проекта и стейблкоин. Пользователь не ищет конкретного продавца. Он взаимодействует со смарт-контрактом пула.
Базовая формула таких протоколов выглядит так:
x × y = k
x и y — объёмы двух активов в пуле, а k — постоянное произведение. Когда пользователь забирает из пула один актив, он должен добавить другой. Баланс меняется, а вместе с ним меняется и цена следующей сделки.
У этой конструкции есть сильная сторона: обмен может происходить без постоянного присутствия контрагента. Но за удобство приходится платить предсказуемой математикой. Чем крупнее сделка относительно пула, тем сильнее она сдвигает цену.
Допустим, в пуле находится относительно небольшой объём токена. Пользователь отправляет крупный ордер на покупку. Контракт начинает выдавать токены из резерва, но каждая следующая единица обходится дороже предыдущей. Средняя цена исполнения оказывается выше той, которую пользователь видел в интерфейсе до подтверждения.
Это называется price impact, или влияние сделки на цену. Оно связано с размером ордера и глубиной ликвидности пула.
Проскальзывание — понятие близкое, но не полностью идентичное. Оно показывает разницу между ожидаемой ценой и фактическим исполнением с учётом изменений, произошедших до включения транзакции в блок.
На DEX вы торгуете не с экраном. Вы торгуете с состоянием пула в момент исполнения транзакции.
Здесь и начинается неприятная часть. Интерфейс показывает расчёт на основании текущего состояния блокчейна. Но между расчётом и подтверждением проходит время. Иногда доли секунды. Иногда дольше, если сеть перегружена или пользователь выставил слишком низкую плату за газ.
За этот промежуток:
- другой трейдер может изменить баланс пула;
- крупная сделка может сдвинуть цену;
- арбитражный бот может перестроить ликвидность между площадками;
- MEV-бот может заметить вашу транзакцию в очереди и попытаться заработать на её содержимом.
Цена в интерфейсе — это прогноз. Цена в блокчейне — результат.
Slippage tolerance: что это и зачем нужен допуск
Запрос slippage tolerance — что это обычно появляется в самый неподходящий момент: пользователь уже выбрал токены, нажал Swap и увидел поле с процентом. Интерфейс предлагает значение, но редко объясняет последствия.
Slippage tolerance — это максимально допустимое отклонение фактической цены от ожидаемой. Если вы установили допуск 1%, смарт-контракт должен отменить обмен, когда итоговый курс окажется хуже расчётного более чем на этот предел.
Механика простая:
1. DEX рассчитывает ожидаемое количество токенов на выходе.
2. Пользователь задаёт минимально приемлемый результат.
3. Транзакция отправляется в сеть.
4. Смарт-контракт проверяет фактическую цену исполнения.
5. Если результат ниже установленного минимума, обмен не проводится.
Но отмена не означает, что операция была бесплатной. Газ оплачивает отправку и обработку транзакции. Если обмен не прошёл из-за превышения допустимого проскальзывания, комиссия сети всё равно может сгореть.
Нужно разделять три разные величины:
| Параметр | Что означает | От чего зависит |
|---|---|---|
| Комиссия сети | Плата блокчейну за обработку транзакции | Загрузка сети и параметры газа |
| Комиссия протокола | Вознаграждение DEX или поставщиков ликвидности | Правила конкретного протокола |
| Проскальзывание | Разница между ожидаемой и фактической ценой | Ликвидность, размер сделки и движение рынка |
Проскальзывание не является комиссией биржи. Это результат изменения рыночной цены в пуле. Иногда оно возникает из-за обычной волатильности, иногда — из-за размера ордера, а иногда его усиливают участники, которые видят транзакцию раньше её исполнения.
Для ликвидных пар вроде ETH/USDC или BTC/USDT стандартный диапазон допуска обычно находится около 0,5–1%. Для менее ликвидных альткоинов может потребоваться 1–3%. Но это не универсальная таблица разрешений. Если токен почти не торгуется, допуск в 3% не превращает его в безопасный актив. Он лишь разрешает контракту исполнить сделку в более широком диапазоне.
Новичок часто рассуждает так: чем выше процент, тем больше шанс, что обмен завершится. Формально верно. Практически это означает: вы увеличиваете шанс сделки вместе с допустимым размером убытка.
Почему низкая ликвидность превращает обмен в ловушку
На DEX цена токена сама по себе ничего не говорит о качестве рынка. Можно увидеть актив стоимостью, например, один доллар и предположить, что покупка на несколько тысяч долларов не имеет значения. Но если в пуле лежит небольшой резерв, ваш ордер способен заметно изменить цену.
Рыночная капитализация токена здесь не спасает. У проекта может быть большая цифра в агрегаторе, активная социальная сеть и громкое сообщество, но конкретный пул на конкретной сети останется мелким. Покупать вы будете не «весь рынок», а именно доступную ликвидность этого маршрута.
В январе 2024 года произошёл показательный случай с токеном Dogwifhat, известным под тикером WIF. Крупный ордер примерно на $8,8 млн в низколиквидной среде привёл к резкому скачку цены с $0,15 до $3. В результате трейдер потерял около $5,7 млн.
Это не просто история о неудачном мем-токене. Она демонстрирует механику AMM без рекламного фильтра: крупная заявка в тонком пуле не исполняется по одной красивой цене. Она проходит через весь доступный диапазон резервов и сама двигает рынок против покупателя.
Перед обменом я бы разбирал не только котировку, но и четыре параметра:
- Объём пула. Чем меньше резервы относительно вашей сделки, тем выше риск price impact.
- Размер ордера. Даже ликвидный пул можно продавить крупной заявкой.
- Маршрут обмена. Прямая пара не всегда даёт лучший результат; иногда выгоднее путь через ETH, USDC или другой ликвидный актив.
- Оборот и активность. Токен с редкими сделками может иметь цену на экране, но не иметь нормального выхода из позиции.
Особенно опасна ситуация, когда интерфейс показывает привлекательную цену на входе, а минимальный получаемый объём токенов выглядит подозрительно широким. Это не декоративная информация. Именно там протокол сообщает, сколько вы готовы потерять относительно расчёта.
Влияние сделки и проскальзывание — не одно и то же
Эти понятия часто смешивают, хотя для контроля сделки разница полезна.
Влияние сделки закладывается самой структурой пула. Если вы покупаете крупный объём, цена начинает меняться ещё потому, что из резерва постепенно выводится актив.
Проскальзывание может добавиться позже. Например, другой участник совершил обмен до вас, рынок изменился или транзакция долго ждала включения в блок.
Условно:
- пул маленький, а ордер крупный — высокий price impact;
- рынок быстро движется — высокое временное проскальзывание;
- допуск установлен на 5% — высокий предел, в котором сделка может пройти;
- все три фактора совпали — риск потерь на децентрализованных биржах становится уже не теоретическим.
Сэндвич-атака: как высокий допуск привлекает MEV-ботов
Транзакция в публичной блокчейн-сети не всегда исполняется мгновенно и невидимо. Пока она ждёт подтверждения, её параметры могут быть доступны участникам, которые анализируют очередь операций. Такие боты ищут сделки, на которых можно извлечь дополнительную стоимость. Это направление называют MEV — извлекаемой максимальной ценностью.
Один из известных вариантов — sandwich attack, или сэндвич-атака.
Схема выглядит так:
1. Бот замечает вашу крупную покупку токена.
2. Перед вашей транзакцией он покупает этот же актив.
3. Его покупка поднимает цену в пуле.
4. Ваша операция исполняется уже по менее выгодному курсу.
5. После неё бот продаёт купленные токены дороже.
Пользователь оказывается зажат между двумя операциями бота — отсюда название. Сам смарт-контракт при этом может работать строго по правилам. Никакого взлома не требуется. Бот просто использует публичность транзакции и слишком широкий диапазон, который вы разрешили.
Высокое проскальзывание криптовалюты становится для такого бота пространством для манёвра. Если допуск установлен на 0,5%, атака может оказаться экономически бессмысленной: транзакция отменится при небольшом ухудшении курса. Если пользователь разрешил 3%, 5% или ещё больше, бот получает запас, внутри которого может перестроить цену и оставить часть потерь себе.
По оценкам исследований Flashbots, объём MEV, извлечённого на Ethereum, измерялся сотнями миллионов долларов в год и превышал $700 млн за годовой период, указанный в исследовательских материалах. Это не означает, что каждая транзакция подвергается атаке. Но означает другое: перед вами не мифическая угроза и не сюжет для форумов. Это отдельный рыночный бизнес с автоматизированными стратегиями.
Широкий slippage tolerance не защищает сделку от рынка. Он сообщает рынку, насколько далеко вы готовы отступить.
Не каждый плохой курс — сэндвич-атака. Иногда причина банальна: слабая ликвидность, волатильность или неверно выбранный маршрут. Но для пользователя результат может выглядеть одинаково: на выходе приходит меньше активов, чем ожидалось.
Как настраивать проскальзывание на Uniswap и других DEX
Настройка проскальзывания Uniswap и аналогичных протоколов должна начинаться не с привычки ставить одно и то же значение, а с понимания операции.
Делайте раз: определите ликвидность пары
Сначала посмотрите, где именно проходит обмен. Один и тот же токен может иметь несколько пулов на разных сетях и протоколах. Их глубина, комиссии и качество маршрутизации отличаются.
Если вы меняете ETH на USDC в глубоком пуле, допуск 0,5–1% обычно выглядит разумной отправной точкой. Если покупаете малоликвидный альткоин, интерфейс может показывать высокий price impact ещё до подтверждения. Это сигнал не автоматически поднимать допуск, а сначала уменьшить размер сделки или найти другой маршрут.
Если при небольшом ордере расчёт показывает заметное влияние на цену, рынок уже сообщает вам неприятную вещь: выйти из позиции будет не проще, чем войти.
Делайте два: уменьшите размер одной операции
Крупную покупку разумнее разделить на несколько частей, если ликвидность позволяет это сделать и суммарные комиссии не съедают преимущество. Разделение не отменяет рыночный риск, но может снизить давление одной заявки на пул.
При этом нельзя механически дробить каждую сделку. В сети с дорогим газом несколько транзакций могут обойтись дороже, чем одна. Риск-менеджмент здесь всегда состоит из нескольких переменных: проскальзывание, комиссии, скорость исполнения и волатильность.
Делайте три: установите минимально достаточный допуск
Начинайте с небольшого значения и повышайте его только при понятной причине. Для ликвидных пар диапазон 0,5–1% обычно достаточен. Для слабых альткоинов может понадобиться 1–3%, но такое значение должно быть осознанной платой за недостаток ликвидности, а не способом заставить транзакцию пройти любой ценой.
Если DEX сообщает, что обмен не может исполниться при текущем допуске, у вас есть несколько вариантов:
- уменьшить сумму;
- подождать, пока движение цены прекратится;
- выбрать другой пул;
- использовать агрегатор;
- отказаться от сделки.
Последний вариант почему-то считают поражением. В реальности отказ часто является единственным сохранённым капиталом.
Делайте четыре: проверьте минимальный результат
Перед подписью транзакции найдите поле вроде minimum received — минимальное количество токенов, которое вы получите. Не ограничивайтесь тем, что смотрите на крупную цену в верхней части окна.
Если ожидаемый результат и минимальный отличаются слишком сильно, сделка уже содержит встроенную уязвимость. Пользователь может не знать точного курса исполнения, но он знает предел, ниже которого контракт не должен проводить обмен.
Делайте пять: не путайте настройку интерфейса с защитой от мошенничества
Slippage tolerance не проверяет, честный ли это токен, можно ли его продать и не содержит ли контракт скрытых ограничений. Допуск защищает только от исполнения ниже заданного порога.
У токена может быть:
- запрет на продажу;
- налог, который меняется владельцем контракта;
- ограничение размера сделки;
- централизованный контроль параметров;
- искусственно созданная ликвидность;
- адрес контракта, почти неотличимый от настоящего.
Поэтому базовая безопасность начинается с правильного адреса контракта и проверки сети. Проскальзывание — только один слой защиты, а не универсальный щит.
Почему агрегаторы иногда лучше прямого обмена
DEX-агрегаторы вроде 1inch или Matcha могут искать маршрут сразу через несколько пулов. Вместо того чтобы отправлять всю сумму в один резерв, система способна разделить ордер или провести его через последовательность пар.
Это помогает снизить проскальзывание, но не создаёт ликвидность из воздуха. Если рынок пустой, агрегатор не сделает его глубоким. Он лишь выбирает из доступных вариантов менее плохой.
У агрегатора появляются и дополнительные параметры:
- комиссия самого маршрутизатора;
- стоимость нескольких взаимодействий со смарт-контрактами;
- риск ошибки в выбранной цепочке обмена;
- различия между котировкой и фактическим исполнением;
- отдельные разрешения токена на использование средств.
Иногда лучший маршрут включает несколько промежуточных активов. Например, токен может обмениваться не напрямую на USDC, а сначала на ETH, затем на USDC. Такая цепочка не обязательно опаснее, но требует внимательности: каждая дополнительная операция добавляет собственные условия исполнения.
Для новичка интерфейс DEX часто выглядит проще, чем он есть на самом деле. Здесь полезна не только финансовая, но и цифровая грамотность: понимание того, как устроены веб-приложения, разрешения кошелька и взаимодействие с интерфейсом снижает число случайных подписей. Если хочется системно разобраться в логике цифровых интерфейсов, можно посмотреть курсы по разработке интерфейсов с обучением с нуля, но даже базовые знания не отменяют проверки адресов и параметров транзакции.
Как выглядит безопасный сценарий обмена
Я бы свёл практическую процедуру к следующему алгоритму:
1. Проверить сеть и адрес контракта. Нужный токен в Ethereum и токен с тем же названием в другой сети — не одно и то же.
2. Посмотреть ликвидность конкретного пула. Не ориентироваться только на цену и капитализацию.
3. Ввести небольшую тестовую сумму. Особенно если актив новый, маршрут сложный или контракт неизвестен.
4. Сравнить ожидаемый и минимальный результат. Разница должна быть объяснима размером операции и состоянием рынка.
5. Установить ограниченный slippage tolerance. Для ликвидных пар начать с 0,5–1%, а для слабых пулов не поднимать процент без понимания причины.
6. Проверить цену газа. Не чтобы избежать проскальзывания как такового, а чтобы транзакция не зависала слишком долго в очереди.
7. Оценить необходимость агрегатора. Он может найти более глубокий маршрут и уменьшить price impact.
8. После обмена проверить фактический результат в обозревателе блокчейна. Интерфейс кошелька иногда обновляет баланс с задержкой.
Тестовая сумма не защищает от всего. Но она позволяет обнаружить неправильную сеть, неверный токен, подозрительный налог или неработающую продажу до того, как на кону окажется весь депозит.
Особое внимание нужно уделять токенам с резким ростом цены. В таких случаях высокий спрос часто сопровождается тонкой ликвидностью и агрессивной конкуренцией ботов. Красная свеча или стремительный рост котировки не являются доказательством того, что вы сможете купить актив по отображаемой цене.
Где проходит граница между технической ошибкой и плохим решением
Техническую ошибку можно исправить настройкой. Плохое решение обычно начинается с отказа видеть механику.
Если пользователь покупает крупный объём неизвестного токена в маленьком пуле, ставит высокий допуск, не проверяет минимальный результат и подписывает транзакцию в момент резкого движения цены, проблема не только в DEX. Протокол сделал ровно то, что ему разрешили.
Это не обвинение пользователя. Интерфейсы децентрализованных бирж действительно часто маскируют сложную механику за одной кнопкой Swap. Но именно поэтому ответственность нельзя отдавать красивому экрану. Кошелёк не знает, насколько болезненной будет для вас потеря. Смарт-контракт не понимает, что эти деньги вы откладывали год. MEV-боту тем более всё равно.
Проскальзывание при обмене на DEX — не дефект, который можно полностью устранить. Это следствие того, как работают AMM, пулы ликвидности и публичные транзакции. Его можно контролировать, но нельзя отменить одной настройкой.
Моя рабочая позиция здесь простая: если сделка требует высокого допуска, сначала нужно доказать себе, почему она вообще должна состояться. Не наоборот. Низкая ликвидность — не повод разрешать протоколу забрать больше. Это повод уменьшить сумму, найти другой маршрут или закрыть окно обмена.
На децентрализованном рынке нет оператора, который позвонит и отменит неудачную покупку. Есть только код, ликвидность, параметры транзакции и ваша подпись. Остальное — уже последствия.