
Slippage и price impact: понятное объяснение
Вы видите котировку: 1 ETH за 3 200 USDC. Подтверждаете swap. Через несколько секунд транзакция исполняется — и вы получаете 3 187 USDC вместо ожидаемой суммы. Никто вас не взломал, никто не «переставлял» правила: вы просто столкнулись с двумя самыми непонятыми механиками on-chain торговли — price impact (влиянием на цену) и slippage (отклонением фактической цены от ожидаемой).
В этой статье мы разбираем оба понятия для пользователей самостоятельного хранения. К концу вы будете понимать, почему число, которое вы видели, не всегда совпадает с тем, что вы получаете, что на самом деле делает настройка «slippage tolerance», и как думать о ней при swap из SSP Wallet или из какого-либо dApp.
Почему котировка — это всего лишь котировка
Большинство on-chain swaps не идут через классическую книгу заявок. Они идут через Automated Market Maker (AMM): smart contract, который держит два актива в liquidity pool и оценивает их по формуле. Самая распространённая формула — правило постоянного произведения, обычно записываемое как x * y = k:
x— количество токена A в пуле.y— количество токена B.k— константа, которую пул старается сохранять.
Когда вы меняете токен A на токен B, вы нарушаете соотношение x и y. Пул автоматически переоценивает их так, чтобы k оставалось примерно постоянным. Эта переоценка и есть источник price impact.
Котировка — это снимок состояния пула на конкретный момент. К тому моменту, когда ваша транзакция попадёт в блок, пул, как правило, уже изменится: другие swaps его задели, прошли блоки, и ваш собственный трейд вот-вот сдвинет его ещё немного. То число, которое вы видели, не лгало. Оно просто не было обещанием.
Price impact: цена вашего собственного трейда
Price impact — это изменение цены, вызванное исключительно вашим трейдом, при условии, что ничего больше не меняется между котировкой и исполнением. Эта величина механична, предсказуема и полностью определяется глубиной пула.
Мысленный эксперимент. Представьте ETH/USDC пул со 100 ETH и 320 000 USDC. Маржинальная цена — около 3 200 USDC за ETH. Теперь:
- Меняете 1 ETH. Вы забираете крошечную долю резервов пула. Цена едва сдвигается. Вы получите около 3 200 USDC за вычетом комиссии пула. Price impact мал — может быть, несколько базисных пунктов.
- Меняете 10 ETH. Вы существенно сместили соотношение. Средняя фактическая цена будет заметно ниже 3 200 USDC за ETH. Price impact уже несколько процентов.
- Меняете 50 ETH. Вы потребляете треть ликвидности пула. Цена исполнения проваливается. Price impact может достичь десятков процентов.
Урок: больший трейд относительно глубины пула — больше price impact. Удвоив трейд, вы получаете более чем удвоенную стоимость, потому что каждая следующая единица бьёт по всё худшей кривой. Кошельки и агрегаторы обычно показывают это в процентах прямо на экране swap. Всё, что выше нескольких процентов, нужно воспринимать как предупреждение, а не как сноску.
Price impact — это не комиссия в чью-то пользу, а цена того, что вы становитесь своим же контрагентом против кривой.
Slippage: разрыв между котировкой и исполнением
Slippage — это разница между ожидаемой ценой и ценой, по которой ваш swap реально исполнился. Slippage включает в себя price impact, но также и всё остальное, что происходит между моментом, когда вы увидели котировку, и моментом, когда транзакция попадёт on-chain:
- Другие трейды, бьющие в тот же пул. Любой, кто делает swap в том же блоке или в блоках между вашей котировкой и подтверждением, сдвигает состояние пула.
- Время между котировкой и исполнением. Даже несколько секунд достаточно для того, чтобы пул сдвинулся — особенно на волатильных активах.
- Ваш собственный price impact. Как уже сказано: трейд сам по себе сдвигает цену, против которой он будет исполнен.
- MEV. Searcher’ы могут «обернуть» ваш ожидающий swap своими сделками непосредственно до и после него. Подробнее в статье MEV, frontrunning и sandwich-атаки.
Price impact можно смоделировать. Slippage — то, что произошло по факту.
Настройка slippage tolerance
Поскольку сеть не может гарантировать точную цену между котировкой и исполнением, swap-интерфейсы дают вам выставить slippage tolerance: максимально допустимое отклонение от котируемой цены. Если фактическое исполнение окажется хуже, чем котировка - tolerance, smart contract откатит swap.
Звучит аккуратно, но это реальный компромисс:
- Слишком низкая. Транзакция откатывается, потому что пул сдвинулся за ваш лимит. Откат всё равно стоит gas — вы платите за неудачную попытку и уходите с пустыми руками. В шумные дни на волатильных активах можно собрать несколько неудачных swaps подряд, прежде чем какой-то пройдёт.
- Слишком высокая. Транзакция почти гарантированно исполнится — даже там, где MEV-боты намеренно двигают цену против вас. Tolerance в 5% на популярном токене — зелёный свет для sandwich-атак. Вы получите худшую цену, которую ваша tolerance позволяет.
Универсально правильного значения нет. Tolerance 0,1% на глубокой паре стейблкоинов — разумно. Та же цифра на тонкой паре в разгар новостей — гарантированный откат. Прагматичный путь — начать с малого и подстраивать: если swap откатывается, чуть поднимите tolerance; если вас сэндвичат — снизьте её и подумайте о другом маршруте или меньших порциях.
Как это выглядит в SSP
SSP даёт вам два способа делать swap, и они по-разному вас exposуют к slippage:
- Встроенный агрегатор кошелька (поверхность buy/sell/swap внутри SSP). Агрегатор подбирает маршрут между площадками и показывает вам единственную итоговую котировку выхода. Большая часть slippage уровня маршрута обрабатывается внутри этого процесса; вы подтверждаете или отменяете на основе финального числа. Общий UX этих потоков мы разобрали в материале swap криптовалют из SSP.
- Swap в dApp через WalletConnect. Когда вы подключаете SSP напрямую к какому-то DEX, swap-интерфейс принадлежит этому dApp — включая настройку slippage tolerance. Вы задаёте число, вы и расплачиваетесь за последствия. SSP только сопоставляет подпись к транзакции, которую запрашивает dApp, после того как вы одобряете её в расширении и подтверждаете на SSP Key. Внимательно читайте экран swap в dApp.
Природа 2-of-2 multisig SSP не меняет математику AMM, но означает, что каждый swap требует подтверждения на двух устройствах. Это добавляет несколько секунд между «я нажал подтвердить» и «tx ушла в mempool» — ещё одна причина, по которой котировка и финальное исполнение не всегда совпадают.
Практические советы
Короткий чек-лист, который работает на большинстве сетей и DEX:
- Тестируйте сначала мелкой суммой. Прежде чем swap-нуть крупную позицию, прогоните маленькую сумму по тому же маршруту. Если price impact уже тревожит на маленьком трейде, на крупном будет намного хуже.
- Смотрите на процент price impact. Если кошелёк его показывает, всё, что выше 1–2% для трейдов обычного размера, — красный флаг. Агрегаторы и более глубокие пулы обычно это решают.
- Смотрите на итоговую стоимость, а не только на курс. Комиссии gas в Ethereum — это дополнительная стоимость сверх price impact и slippage. Механика комиссий разобрана в материале комиссии gas в Ethereum для пользователей самостоятельного хранения. EIP-1559 означает, что комиссия может измениться между моментом подписи и моментом, когда блок появится, — ещё одна причина, по которой «цена поехала, пока я подтверждал».
- Предпочитайте глубокие пулы. Ликвидность — друг price impact. Пара с $50 млн ликвидности впитывает ваш трейд гораздо лучше, чем пара с $500k.
- Tolerance ставьте осознанно. Не принимайте дефолт вслепую. Не накручивайте её до 5% только ради того, чтобы провалившийся swap прошёл, — этот провал часто что-то вам говорит.
- Если вас сэндвичат раз за разом — меняйте маршрут. Меньшие порции, другой агрегатор или MEV-aware RPC могут изменить результат.
Главное
Price impact — это неизбежная математика торговли против пула: он растёт с размером трейда и уменьшается с ликвидностью. Slippage — это сырая реальность исполнения в публичном mempool, где другие транзакции, время и ваш собственный трейд двигают цену. Ваш slippage tolerance — это рычаг, который решает, что вероятнее: откат вашей tx или то, что её сэндвичат. Используйте его осознанно.
Когда вы делаете swap в SSP, одна и та же физика работает и через встроенный агрегатор, и через dApp по WalletConnect. Разница в том, кто задаёт tolerance — и, поняв, что именно вы задаёте, вы можете спокойно держать оба варианта в арсенале.


