Представляем: Just In Time (JIT) - новый дизайн протокола AMM для децентрализованных кроссчейн-обменов

Представляем: Just In Time (JIT) - новый дизайн протокола AMM для децентрализованных кроссчейн-обменов

Привет всем, я работал над этой небольшой статьей довольно долгое время, и мне бы очень хотелось услышать отзывы. Найдите меня в твиттере @SimonAHarman или в нашем Chainflip Discord канале! - Саймон

Общее описание

Конструкция АММ Chainflip существенно отличается от отраслевых стандартов из-за ограничений, обусловленных природой кросс-чейн переводов. Протокол АММ Chainflip имеет несколько отличительных особенностей, которые радикально меняют оптимальную стратегию поставщика ликвидности и предлагают пользователям значительные преимущества в эффективности использования капитала и точности ценообразования. Мы называем этот подход "JIT (Just In Time Liquidity) AMM" (Автоматическое создание рынка засчет предоставления ликвидности вовремя). На сегодняшний день существует очень мало примеров использования подобных торговых продуктов.

Историческая справка

Uniswap v3 ввел идею диапазонных ордеров в мир AMM, что привело к ряду улучшений в эффективности капитала и пользовательском опыте многих популярных пулов Uniswap. Chainflip, будучи кросс-чейн продуктом, не разделяет тех же предпосылок среды исполнения, что и типичные AMM, и поэтому для предотвращения опережающего исполнения (front-running), негативно влияющего на пользователей, требуются дополнительные функции. В отличие от одноцепочечной среды, Chainflip должен решать следующие вопросы:

  • Протокол вынужден ожидать несколько блоков для подтверждения внешних депозитов цепи из-за риска реорганизации блокчейна вне Chainflip. Поскольку система является децентрализованной и запрограммированной, не существует способа вручную переупорядочить транзакции, если это произойдет, поэтому для безопасной работы необходимо несколько подтверждений блоков. Учитывая, что существует немаленькая задержка для подтверждения входящих сделок по свопам, и они находятся в публичных цепочках, все участники рынка будут знать, какие свопы будут исполнены до того, как это произойдет. Это делает протокол уязвимым к различным формам опережающего исполнения (front-running).
  • Более того, время подтверждения также приводит к значительной задержке ценообразования и арбитража, что приводит к продолжительным расхождениям цен по сравнению с рыночными индексными ценами. Это можно наблюдать на других кросс-чейн DEX, основанных на AMM, которые не смягчили эту проблему, и где цены постоянно отклоняются от рыночного курса на целых 10%.
  • Наконец, новые предлагаемые функции AMM будут в значительной мере не протестированы в естественных условиях, поскольку существующие конструкции AMM не учитывали пользовательские среды выполнения, и поэтому существует мало примеров протоколов с аналогичными свойствами, на которых можно было бы учиться.

Существует также прекрасная возможность изучить свойства АММ, работающих в пользовательской среде исполнения. Поскольку Chainflip функционирует в собственной независимой среде исполнения, большая часть операций по свопу может быть автоматизирована и выполнена сетью валидаторов без сложного взаимодействия с пользователем. Это следует использовать в максимальной степени, а новые функции должны быть разработаны таким образом, чтобы использовать эту возможность на благо пользователей.

Основные характеристики AMM Just In Time

JIT AMM предлагает несколько новых функций поверх существующей конструкции Uniswap v3 AMM. Эти функции смягчают специфические проблемы, связанные с кросс-цепочечной заменой, и используют уникальные преимущества, предоставляемые пользовательской средой исполнения, а именно две основные функции, которые определяют JIT AMM:

  1. Обновление диапазонных ордеров быстрее, чем своп - диапазонные ордера могут обновляться до исполнения известных свопов, то есть маркет-мейкеры могут активно реагировать на входящий торговый поток.
  2. Пакетирование свопов - свопы группируются вместе и исполняются периодически, устраняя большое количество проскальзываний и делая невыгодным опережение сделок.

Эти функции реализованы непосредственно в Chainflip State Chain и сопутствующем программном обеспечении, которое запускают валидаторы Chainflip.

Как работает JIT

Концепция, лежащая в основе JIT AMM, заключается в том, чтобы перевернуть представление об опережающем исполнении (front-running) с ног на голову. Вместо того, чтобы пользователей обгоняли боты, ищущие добываемую ценность (MEV), протокол естественным образом стимулирует поставщиков ликвидности обгонять друг друга с выгодой для пользователя. Через несколько месяцев после первой публикации нашего проекта протокола JIT AMM, искатели MEV заметили примеры этого в действии на Uniswap v3.  Для сделок достаточно большого размера существуют возможности опередить других провайдеров ликвидности (LP) даже на дорогом и распространённом блокчейне Ethereum, что доказывает жизнеспособность этой стратегии в реальной жизни.

Фиксированная плата за ликвидность в каждом пуле (от 5 до 30 bps в большинстве пулов) действует как встроенная разница для маркет-мейкеров, которую они пытаются ухватить. Способ, которым маркет-мейкеры захватывают эту дельту, заключается в перемещении своей позиции ликвидности вплоть до рыночной цены. Рыночная цена определяется наличием мгновенной ликвидности на отдельных первичных и вторичных рынках (включая централизованные биржи, рынки деривативов и любые другие источники ликвидности, такие как внебиржевые столы) непосредственно перед исполнением свопа. Открывая хеджирующие позиции или принимая существующую ликвидность на других рынках, маркет-мейкеры могут полностью забирать плату за ликвидность, если они принимают на себя больший ценовой риск, чем все остальные поставщики ликвидности. После исполнения свопа маркет-мейкеры могут снова обновить свой диапазонный ордер, чтобы восстановить баланс своей позиции, готовой к следующей партии свопов.

До тех пор, пока несколько маркет-мейкеров конкурируют друг с другом за получение разницы, данная конструкция протокола должна гарантировать, что пользователи, осуществляющие свопы, всегда получают рыночную цену или цену лучше рыночной в момент исполнения свопа, с надежными комиссиями и минимальным проскальзыванием, и что эффективность капитала в данном протоколе должна превышать все другие существующие конструкции AMM в зависимости от уровня конкуренции между маркет-мейкерами.

Пример JIT-обмена

Давайте проследим путь типичного свопа, чтобы рассмотреть, как это работает на практике. В данном примере наш гипотетический пользователь обменивает USDC (ERC20) на DOT (Native), а маркет-мейкеры A, B и C соревнуются за получение комиссии за ликвидность от этой сделки. Комиссия за ликвидность этого пула составляет 25 bps.

  1. Пользователь (покупатель DOT) формирует котировку, которая создает уникальный адрес депозита, связанный с адресом получателя и обменными намерениями по DOT. Пользователь инициирует своп, внося 10 000 USDC на свой адрес размещения.
  2. Блокчейн Ethereum включает депозит USDC в следующий блок. Маркет-мейкеры замечают, что депозит состоялся, и отслеживают другие предстоящие депозиты USDC. В цепочке Polkadot также присутствуют продавцы DOT, вносящие депозиты. Хотя для распознавания транзакций в  цепи состояний Chainflip (Chainflip State Chain) потребуется несколько блоков Ethereum и Polkadot, маркет-мейкеры могут следить за цепями Polkadot и Ethereum, чтобы рассчитать общее направление сделок в следующей партии Chainflip до их исполнения.
  3. Chainflip требуется 6 блоков Ethereum, чтобы считать депозитную транзакцию " завершенной". Он также обрабатывает свопы партиями по 6 блоков Ethereum (или около 18 блоков Polkadot), поэтому между внесением депозита на своп в блокчейн Ethereum и исполнением свопа на Chainflip проходит минимум 6 блоков. Это означает, что у маркет-мейкеров есть около 90 секунд, в течение которых они точно знают, какими будут свопы, могут получить ликвидность или рассчитать риск на других рынках, а также скорректировать свои диапазонные ордера с помощью транзакции цепи состояний.
  4. Пока это происходит, пользователь ожидает исполнения партии от 6 до 12 блоков Ethereum. В данном случае в партии 10 сделок общим объемом 280 000 долларов, но только 90 000 долларов из этого объема предназначены для покупки DOT. Поэтому, чтобы все сделки в пакете прошли, в целом необходимо продать DOT на сумму около $170 000. Чтобы получить до 25 bps комиссионных на общем объеме в $280 000 (около $700), маркет-мейкеры должны предложить наилучшую возможную цену на DOT стоимостью $170 000 в течение 6-блочного окна задержки. Именно здесь и появляется название "Just In Time", поскольку для победы им необходимо получить источники ликвидности и продвинуть ликвидность на покупку "Just In Time".
  5. Имея дополнительный капитал на других биржах, таких как FTX, Binance и так далее, маркет-мейкеры могут использовать расчеты модели риска для определения наилучшей возможной цены для торговли. Используя этот расчет, они обновляют свои диапазонные ордера и перемещают свои USDC в пул USDC-DOT вплоть до этой цены. В данном случае маркет-мейкер А перемещает свой диапазонный ордер USDC так, чтобы ликвидность USDC в размере $170 000 была сосредоточена на уровне $23,45 за DOT, в то время как маркет-мейкер Б перемещает свои $170 000 USDC с концентрацией на уровне $23,47 за DOT.
  6. Сеть Chainflip исполняет пакет. Несмотря на то, что общее направление - продажа, даже покупатели не страдают от ненужного проскальзывания (slippage), поскольку маркет-мейкеры привлекают ликвидность извне, чтобы цена пула естественным образом тяготела к цене рыночного индекса. Маркет-мейкер B получает 100% платы за ликвидность, предполагая, что он опередил всех остальных маркет-мейкеров. Маркет-мейкеры, которые не приняли сделку, не получают комиссионных, но и не несут постоянных убытков (так как их балансы остаются неизменными).
  7. Маркет-мейкер B, зная, что он выиграл комиссию и сколько DOT он только что купил, начинает продавать $170 000 DOT по цене $23,47 или выше на других рынках. При правильном управлении маркет-мейкер только что получил прибыль в размере $700 или более на одной партии, и сделал это, приняв на себя ценовой риск всего за 6 секунд. Такие возможности возникают каждый раз при исполнении партии, что случается с периодичностью раз в пару минут для каждого пула.
  8. Сеть Chainflip Validator теперь отправляет средства пользователям, которые получают средства на основе цены свопа, близко отражающей цену мирового рынка. Наш покупатель DOT получает средства непосредственно на свой родной кошелек DOT.
  9. Маркет-мейкер B теперь может вывести или внести средства в свою позицию LP для ребалансировки своего портфеля, чтобы подготовиться к захвату будущих пакетных возможностей, в то время как маркет-мейкеры A и C готовы к использованию возможностей в партиях в ближайшем будущем. Следующая партия состоится всего через 6 блоков Ethereum.

Этот поток свопов зависит от поведения маркет-мейкеров, которое практически идентично поведению типичных внебиржевых площадок под управлением программного обеспечения, но в открытой и конкурентной среде. Эта стратегия может быть легко интегрирована в типичные стратегии маркет-мейкеров как метод генерирования торгового потока без необходимости создания или расширения клиентской базы.

Некоторые пояснения к примеру

В реальности, скорее всего, единственный поставщик ликвидности редко берет 100% комиссии за ликвидность, скорее один или два маркет-мейкера берут на себя большую часть данной сделки, а незначительные суммы заполняются целым рядом других поставщиков ликвидности просто в силу природы AMM-кривых. В любом случае, маркет-мейкеры всегда будут знать, какие сделки они (и все остальные) только что совершили, и будут следовать тем же процедурам и принципам.

Более того, в более широком проекте протокола Chainflip предполагается, что одновременно будут работать десятки таких пулов, причем все они будут двигаться с немного разной скоростью на основе времени блока и подтверждения каждой цепи. Например, обмен BTC на ETH не будет осуществляться в рамках одного свопа. Вместо этого средства пользователя будут автоматически направляться через два пула, BTC-USDC и затем USDC-ETH, что повлечет за собой две своп-партии, которые будут следовать одним и тем же правилам, описанным выше.

Вследствие такой схемы маркет-мейкеры должны отслеживать не только будущие депозиты в рассматриваемый пул, но и ожидаемый путь депозитов в другие пулы, которые в конечном итоге будут направлены в рассматриваемый пул, чтобы точно прогнозировать партии. Маршрутизация всего через USDC означает, что пользователи будут находиться в USDC в течение короткого промежутка времени, пока ждут маршрутизации своих свопов, что может быть нежелательным в некоторых обстоятельствах, но оценивается как достойный компромисс для минимизации фрагментации ликвидности, которая, возможно, была бы хуже для пользователей в обычных рыночных условиях. Если определенные маршруты в протоколе станут достаточно популярными, прямые пулы между активами (например, ETH-BTC) могут быть добавлены путем обновления протокола, чтобы позволить пользователям избежать этого ценового риска.

Наконец, все стратегии рыночной торговли имеют свои степени сложности. Усовершенствованное моделирование рисков и прогнозов, безусловно, даст конкурирующим маркет-мейкерам преимущество друг перед другом. На базовом уровне можно написать JIT-бота, который будет просто ждать, пока будущая партия полностью известна, мгновенно оценивать ликвидность в других стаканах, обновлять цену диапазонного ордера, а затем ждать подтверждения партии перед рыночной покупкой или продажей в других стаканах. Таким образом, бот никогда не будет совершать сделки на других ордерах, если он точно не знает, что взял какой-то поток на JIT AMM, и не будет полагаться на какое-либо продвинутое моделирование для своей работы. Однако было бы довольно легко превзойти этого простого JIT-бота с помощью более целостной стратегии создания рынка. Поэтому можно ожидать, что по мере увеличения объема естественная динамика конкуренции заставит маркет-мейкеров постоянно улучшать свою работу, что приведет к еще более выгодным ценам для пользователей.

Другие преимущества и недостатки JIT AMM

Использование этого своп-потока имеет и другие нетривиальные преимущества для пользователей. Во-первых, группируя сделки в блоки или даже партии блоков, опережение трейдеров становится бессмысленным, поскольку все трейдеры в партии получают одинаковую цену. Более того, для подавляющего большинства сделок в нормальных рыночных условиях эта стратегия ликвидности должна полностью нейтрализовать эффективное проскальзывание (effective slippage) для большинства пользователей.

Однако есть некоторые компромиссы, которые мы должны принять для достижения этой цели. А именно, этот протокол не может заранее дать пользователям уверенность в конечном результате их свопа. Пока не будут заключены все сделки, окончательное состояние партии не может быть гарантировано, и даже тогда, пока не будет обновлен диапазон ордеров, окончательный расчет проскальзывания/цены не может быть произведен. Эта проблема усугубляется в торговых маршрутах с несколькими свопами.

Однако с развитием моделей риска и моделей прогнозирования, отображаемых в инструментах оценки сделок на пользовательских фронтэндах, будет относительно просто информировать пользователей о вероятном исходе их сделок с учетом предполагаемого размера, текущего состояния рынка и исторических данных.

Кроме того, если пул окажется очень несбалансированным из-за крупных сделок в одном направлении в короткий промежуток времени, пользователи, которые полагаются на модель JIT для точного ценообразования, могут пострадать. Это произойдет потому, что все маркет-мейкеры будут вычищены с одной стороны, а пассивная ликвидность, по ожиданиям, не будет преобладать на JIT AMM, чтобы смягчить эту проблему. Маркет-мейкерам также приходится дольше ждать ребалансировки портфеля, чем обычным АММ, поскольку существует дополнительная задержка на подтверждение депозитов и обработку снятия средств по сравнению с другими АММ на цепочке. Тем не менее, ребалансировка не займет больше времени, чем на обычной централизованной бирже. Эту проблему можно смягчить, опять же, путем отображения предупреждения для пользователей при генерации котировок, если фронт-енд обнаружит текущий дисбаланс или значительное отклонение соответствующих пулов от цен индекса.

Пределы эффективности капитала

Общую заблокированную стоимость (TVL) пулов в JIT AMM нельзя сравнивать с обычным пулом ликвидности, так как TVL пула фактически представляет собой половину максимального практического размера сделки - это своего рода эффективность капитала, которая толкает на крайние пределы возможного. Если все LP реализуют активную стратегию, то пул с популярными активами, имеющий TVL в $10 млн, теоретически может выдержать торговую партию размером до $3,5-4 млн в одном направлении с ценовым влиянием менее 2% в большинстве случаев (в зависимости от торговой пары и состояния глобальной ликвидности на всех рынках). Подобная эффективность капитала не может быть эффективно воспроизведена на одноцепочечных АММ. Данная оценка влияния на цену основана на наблюдении за типичной мгновенной ликвидностью на основных парах с помощью таких инструментов, как cryptosor.info, однако возможно дальнейшее снижение влияния на цену.

Однако эффективность капитала не может быть выше 100%. Крупные депозиты, которые превышают или в значительной степени исчерпывают доступную ликвидность в пуле, изменяют исходную теорию игры и стимулируют маркет-мейкеров к сговору, а не к конкуренции. Если маркет-мейкеры знают, что они не могут исполнить ордер, а также знают, что другие маркет-мейкеры не могут исполнить ордер, маркет-мейкеры получают гораздо большую выгоду, если все они сдвинут свои диапазонные ордера в сторону от рыночной цены, чтобы эффективно купить входящий депозит за долю от общей рыночной цены.

Такая ситуация не слишком отличается от того, что происходит, когда пулы ликвидности на других АММ принимают огромные депозиты с нелинейным проскальзыванием, когда превышение эффективной ликвидности пула прогрессивно ухудшает эффективную цену. Однако, поскольку маркет-мейкеры на JIT AMM имеют время для реагирования на входящие депозиты, здесь больше возможностей для эксплуатации. Маркет-мейкерам имеет смысл играть в эту новую игру только в том случае, если ликвидность с одной стороны определенно будет исчерпана в данной сделке, но последствия для трейдера в этом случае будут хуже, чем если бы он использовал обычный AMM.

Для тех крупных торговых партий со значительными изменениями направления, существует также форма арбитража, которая может снизить вероятность исчерпания пула. При обнаружении крупного депозита арбитражеры могут вносить встречные депозиты в том же блоке, чтобы подвергнуться ценовому воздействию, ожидаемому от общей партии. Это позволит арбитражеру купить дешевле или продать дороже, чем индексная цена, но такие возможности будут существовать только при ожидании крупных несбалансированных партий. Арбитражеры, следующие этой стратегии, помогут снизить влияние крупных сделок на других трейдеров в партии, еще больше повысить эффективность капитала, и это будет означать, что маркет-мейкеры смогут обрабатывать еще большие потоки без исчерпания ликвидности.

Еще одна потенциальная функция, которая поможет избежать истощения пулов ликвидности и стимулирования хищнического поведения маркет-мейкеров, заключается в автоматическом разбиении очень крупных депозитов. Разбивая крупные депозиты на несколько предстоящих партий, арбитражеры и маркет-мейкеры имели бы больше времени для обработки сделки. Это похоже на то, как большинство внебиржевых отделов в любом случае обрабатывают крупные ордера на бэкенде. Вкладчик теоретически должен получить такие же цены, как если бы он воспользовался внебиржевой площадкой, если эта функция разделения депозита будет реализована эффективно. На данном этапе мы не планируем реализовывать эту функцию изначально, но если будет доказано, что она важна в реальных условиях, может произойти обновление протокола.

Заключение

Протокол Chainflip AMM является реализацией потенциально нового вида AMM, называемого "Just In Time AMM" (JIT AMM), который представляет собой децентрализованный метод постоянного приближения пользователей к рыночным ценам, несмотря на уникальные проблемы, с которыми сталкиваются кросс-чейн AMM, такие как Chainflip. Это также способ предоставить свободный торговый поток маркет-мейкерам, которые могут интегрировать AMM в свои существующие источники потока. Для реализации этого проекта необходимо провести значительную работу, и ожидается, что как инженерам протокола, так и маркет-мейкерам придется пройти много циклов разработки, чтобы оптимизировать и эффективно использовать протокол.