Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Два различных понятия
Price impact и slippage часто путают в интерфейсах, но они означают разные вещи.-
Price impact — это детерминированное свойство сделки против конкретного состояния пула. Учитывая
(Δin, reserves), price impact полностью вычисляется до отправки сделки. - Slippage — это реализованная разница между ценой, которую вы ожидали во время котировки, и ценой, которую вы фактически получили при исполнении. Это функция задержки, одновременных транзакций и порядка включения блоков — не математики пула.
Формальные определения
Price impact
impact ≈ 2 · Δin / reserve_in для небольших сделок. Для CLMM: зависит от количества пересекаемых тиков; часто плоский в пределах текущего диапазона тиков, скачок на каждом пересечении тика.
Реализованный slippage
Расчет minAmountOut и maxAmountIn
Каждый swap в Raydium принимает границу защиты от slippage:
SwapBaseInput(amount_in, min_amount_out)— точный ввод, нижняя граница вывода.SwapBaseOutput(max_amount_in, amount_out)— точный вывод, верхняя граница ввода.
minAmountOut равен amountOut × (1 − slippage) и это то, что идет в блокчейн как граница; priceImpact детерминирован только из состояния пула; fee — это общая взимаемая комиссия.
Допуск slippage — это буфер вокруг price impact, а не сам price impact. Допуск 0,5% означает «принять максимум на 0,5% хуже, чем моя котировка» — независимо от того, был ли price impact 0,01% (крошечная сделка) или 2% (большая сделка). Для сделки с 2% price impact и 0,5% допуском minAmountOut на 2,5% ниже спот-цены до сделки — по сути сумма воздействия и допуска.
Рекомендуемые допуски slippage
Нет единого правильного числа; правильная граница зависит от:- Стабильности пары. Пулы stablecoin-stablecoin могут безопасно использовать 0,1%. Волатильные пулы мем-пар часто нуждаются в 3–5% просто для надежного исполнения.
- Размера сделки. Большие сделки имеют больший price impact, поэтому допуск должен масштабироваться с ними, чтобы избежать отката. SDK использует автоматический slippage по умолчанию около
max(0.5%, 2 × price_impact)по этой причине. - Задержки включения блока. Транзакции, находящиеся в mempool несколько блоков, подвергаются большему количеству одновременных сделок. Jito bundles и priority fees это снижают.
Различия между типами AMM
CPMM
Price impact гладкий и непрерывный (закрытая форма2 · Δin / reserve_in). Допуск slippage масштабируется линейно с размером сделки.
AMM v4
Та же математика кривой, что и CPMM. После удаления OpenBook «эффективные резервы» — это просто балансы двух хранилищ:- Котируйте по сырым балансам хранилищ. Нет компонента на книге для добавления —
Initialize2записываетAmmInfo.open_orders = Pubkey::default()в каждый новый пул, и ни одна инструкция не читает аккаунтOpenOrders. - Вычтите накопленный PnL протокола (
state_data.need_take_pnl_coin/need_take_pnl_pc) из балансов хранилищ, чтобы получить резервы, которые инвариант фактически использует. - Нет крана для предварительного запуска:
MonitorStepтеперь паникует сunimplemented!и не должен отправляться.
CLMM
Price impact кусочный. В пределах текущего диапазона тиков воздействие примерно линейно поΔin / L. Пересечение границы тика может дискретно изменить L, вызывая скачок предельной цены. Сделка, пересекающая несколько разреженно заполненных тиков, может иметь гораздо большее воздействие, чем предполагает правило 2 · Δin / reserve.
SDK CLMM котировка итеративно выполняет шаг swap детерминированно, возвращая точный ожидаемый amountOut, поэтому minAmountOut = amountOut · (1 − slippage) корректен. Но возвращаемое значение priceImpact следует интерпретировать как «спред между спот до сделки и спот после сделки», который на CLMM может быть намного больше, чем эффективный slippage для пользователя, который заботится только об amount_out.
Кривая LaunchLab
Похожа на CPMM, но с асимметричной кривой (квадратичной или виртуальных резервов). Воздействие растет быстрее для поздних покупателей, когда кривая крутеет к выпуску. UI для предварительных покупателей должны предупреждать, когда покупка, как ожидается, сдвинет кривую более чем на ~5% отquote_reserve_target в одной транзакции.
Соображения MEV
На Solana извлечение MEV против swaps в основном принимает форму sandwich attacks: бот размещает back-run транзакцию, которая торгует после вашей, плюс front-run, который торгует до, оба в одном слоте. Ваша сделка исполняется по худшей цене, чем была бы без sandwich; back-run захватывает разницу. Смягчение:- Жесткий
minAmountOut. Агрессивные границы slippage вызывают откат жертвы транзакции при сильном sandwich, защищая средства (но тратя газ). На Solana это стандартная практика — отклонение дешево. - Jito bundles. Отправка через Jito с bundled tip исключает посредников из переупорядочивания вашей tx. Bundles приземляются как атомарные блоки.
- Priority fees. Высокий priority fee увеличивает вероятность того, что ваша сделка попадет в блок текущего лидера раньше, чем sandwicher сможет среагировать. Менее надежно, чем bundles, более стандартно.
- Private RPC. Отправка через private RPC (или через прямую конечную точку валидатора) сокращает окно, в течение которого mempool sandwicher может наблюдать вашу транзакцию.
integration-guides/routing-and-mev для паттернов.
Slippage для многоскачковых маршрутов
Когда swap маршрутизируется через несколько пулов (напримерUSDC → SOL → RAY), допуск slippage должен применяться за скачок, а не только конец-в-конец:
raydium.tradeV2.swap. (Фасад — tradeV2 — raydium.trade не существует.) Для пользовательских маршрутизаторов повторите паттерн.
Отчетность пользователям
Практические правила для хорошего UI swap:- Отображайте оба ожидаемый price impact и допуск slippage отдельно.
- Выделяйте, когда price impact превышает ~2% — предупреждение «высокое воздействие».
- Выделяйте, когда price impact превышает допуск — транзакция почти наверняка откатится.
- Для волатильных пар предложите режим «высокий slippage», который ослабляет границу и показывает более сильное предупреждение.
Ссылки
products/cpmm/math,products/amm-v4/math,products/clmm/math— выведение воздействия для каждого типа пула.integration-guides/routing-and-mev— многоскачковая маршрутизация + защита от MEV.integration-guides/priority-fee-tuning— расчет priority fees для снижения slippage.
- Реализация slippage / impact в Raydium SDK v2.
- Flashbots / Jito на Solana MEV.

