на DEX, ка считается цена и откуда берется проскальзывание
AMM — одна из базовых механик децентрализованной торговли. Именно через автоматический маркетмейкер работают свопы на многих DEX, где пользователь не ищет встречную заявку в стакане, а меняет один актив на другой внутри пула ликвидности. Отсюда главный практический вопрос: почему курс на экране и итоговая цена сделки часто не совпадают. Ответ связан с тем, как в AMM считается цена, как сделка меняет резервы пула и почему проскальзывание на децентрализованной бирже зависит не только от формулы, но и от времени подтверждения транзакции.
AMM — это автоматический маркетмейкер. В такой модели цена формируется не через книгу заявок, а через смарт-контракт и состояние пула ликвидности. Uniswap описывает протокол как автоматический маркетмейкер, который заменяет книгу ордеров постоянным набором смарт-контрактов для обмена токенов.
На бирже со стаканом сделка исполняется между заявками покупателей и продавцов. В AMM пользователь торгует не с другим трейдером напрямую, а с резервами пула. Поэтому логика цены тут другая: курс зависит от соотношения активов внутри пула ликвидности, а не от того, какие лимитные ордера сейчас стоят в книге заявок. Именно это и делает AMM удобным для DEX, но именно из-за этого цена может уезжать по мере исполнения обмена.
Как считается цена в amm. В простейшей модели цена зависит от резервов двух активов в пуле и от инварианта постоянного произведения. В документации Uniswap v2 базовая формула описана как , где x и y — балансы двух токенов в паре, а k — постоянная величина в рамках конкретной сделки.
Логика следующая. Если в пуле становится меньше одного актива, то его относительная цена растет. Если в пул поступает больше второго актива, его доля увеличивается, и соотношение меняется. Смарт-контракт не угадывает рынок, а математически пересчитывает курс обмена по текущим резервам. Uniswap отдельно пишет, что ценность токена в реальном времени определяется поддержкой и запросами внутри пула ликвидности.
Упрощенный пример:
До сделки в пуле 100 ETH и 200 000 USDC. Условная цена на экране — 1 ETH = 2 000 USDC. Если пользователь покупает ETH за USDC, ETH в пуле становится меньше, а USDC больше. После этого следующая часть обмена идет уже по новому курсу.
Здесь важно разделять два уровня цены. Текущая цена на экране — это моментальная котировка по состоянию пула до сделки. Средняя цена исполнения — это фактический средний курс, по которому пройдет весь объем обмена. Чем крупнее сделка относительно пула, тем сильнее средняя цена будет отличаться от стартовой котировки. Uniswap предупреждает, что примерная цена оценивается в интерфейсе заранее и может заметно вырасти при крупных свопах. :
Почему amm дает цену без заявок. Потому что цену считает смарт-контракт по резервам пула, а не по ордерам в стакане. В AMM котировка — это математически рассчитанный курс обмена в данный момент времени. Пользователь видит не лучшую заявку покупателя или продавца, а состояние ликвидности, с которым он собирается взаимодействовать.
Источник резервов — поставщики ликвидности. Именно они вносят активы в пул, после чего этот пул становится торговой площадкой для конкретной пары токенов. В документации Uniswap сказано, что каждый пул ликвидности — это значение в паре к ERC20 токенам, а первый поставщик ликвидности задает начальную цену, внося эквивалентную стоимость двух активов.
При этом цена в AMM не живет в вакууме. Если она сильно отклоняется от внешнего рынка, это замечают арбитражеры. Они проводят сделки, которые возвращают цену пула ближе к рыночной. Поэтому у пользователя создается ощущение, что DEX держит рынок, хотя на деле курс постоянно подтягивается действиями внешних участников, а не встроенным оракулом в классическом смысле.
Причина всегда одна и та же: сделка сама меняет структуру пула. Пользователь забирает один актив и добавляет другой. Из-за этого резервы пула смещаются, а смарт-контракт пересчитывает курс. Значит, следующая доля того же самого обмена уже идет по другой цене. В AMM это не сбой и не ошибка интерфейса, а нормальное следствие самой модели.
Для этого эффекта используют термин price impact - влияние на цену. Uniswap определяет его как изменение цены токена, вызванное именно вашей сделкой. То есть влияние на цену — это внутренняя реакция пула на ваш объем, а не любое рыночное движение вокруг.
Сильнее всего цена уезжает в трех случаях:
Если пул глубокий, одна и та же сделка двигает цену слабее. Если пул тонкий, тот же объем дает более сильный price impact.
Что такое проскальзывание. Проскальзывание — это разница между ожидаемой ценой сделки и фактической ценой исполнения. В терминологии Uniswap price slippage — это изменение в цене токена, вызванное движением рынка, а price impact и price slippage не означают одно и то же.
Если говорить совсем просто, влияние на цену отвечает на вопрос: насколько курс сдвинула именно твоя сделка. Проскальзывание отвечает на вопрос: насколько итоговое исполнение оказалось хуже или лучше, чем ты ожидал в момент отправки. Поэтому цена проскальзывания складывается не только из формулы пула, но и из времени. Пока транзакция ждет подтверждение, рынок может измениться, арбитраж может обновить резервные соотношения, а в блок могут попасть конкурирующие сделки.
Другими словами, price impact — это часть истории про размер сделки и глубину пула. Проскальзывание — более широкий итоговый эффект на исполнении. На DEX эти два явления часто проявляются одновременно, поэтому пользователи их путают.
Почему в amm бывает проскальзывание. Потому что итоговая цена сделки зависит не только от начальной котировки, но и от ликвидности пула, размера ордера, маршрута свопа и того, что произошло с рынком до включения транзакции в блок.
Основные причины такие:
Дополнительно нужно помнить, что разные модели AMM реагируют на объем по-разному. Uniswap v3 использует концентрированную ликвидность, а Uniswap v4 добавляет другие инструменты. Это не отменяет общую механику, но означает, что величина эффекта может различаться в зависимости от конкретного типа пула и того, как в нем распределена ликвидность.
Главный пользовательский инструмент здесь — slippage tolerance, или допуск проскальзывания. Это настройка, которая ограничивает худшую цену, на которую ты готов согласиться при исполнении сделки. В справке Uniswap указано, что в кошельке и веб-интерфейсе пользователь может менять slippage, а автоматическое значение подбирается с учетом комиссий сети и размера свопа.
Снизить проскальзывание на практике помогают несколько простых действий. Во-первых, уменьшить объем одной сделки или разбить крупный обмен на части. Во-вторых, выбрать более ликвидный пул или пару. В-третьих, заранее смотреть на price impact в интерфейсе, если платформа его показывает. В-четвертых, использовать агрегатор маршрутов, если он находит более эффективный путь обмена. В-пятых, избегать моментов высокой волатильности и перегруженной сети, когда задержка блока и конкуренция транзакций особенно велики. Эти шаги не убирают риск полностью, но помогают сократить вероятность того, что цена уедет сильнее ожиданий.
Здесь есть важный компромисс. Слишком низкий допуск проскальзывания повышает шанс, что транзакция просто не пройдет. Слишком высокий — увеличивает риск получить заметно худшую цену. Именно поэтому настройка slippage tolerance не является защитой от потерь в абсолютном смысле. Это лишь граница, в рамках которой пользователь готов принять исполнение.
Если подвести итог, AMM дает цену без заявок потому, что ее считает смарт-контракт по резервам пула. Цена уезжает, потому что сам обмен меняет эти резервы. Проскальзывание появляется там, где ожидание пользователя расходится с реальным исполнением. А контролировать его можно не прогнозами, а дисциплиной исполнения: смотреть на price impact, не ставить чрезмерную защиту к слиппереджу, выбирать глубокую ликвидность и не отправлять чувствительные сделки в самый активный момент рынка.



