Гайды
October 13

Просто о сложном: как устроены  пулы Curve DEX

Этот материал создан для того, чтобы упростить понимание устройства и принципов работы пулов Curve. Не является руководством по созданию пулов.

Curve была первой, кто применил концентрированную ликвидность в AMM, а пулы CryptoSwap используют концентрированную ликвидность, которая динамически адаптируется к изменениям цен.

Хотя такая концентрация в других протоколах, таких как Uniswap v3, обычно увеличивает непостоянные потери (IL).

В Curve, благодаря уникальным технологиям, эта проблема устранена.

Curve предлагает инновационные решения для оптимизации обеспечения глубокой ликвидности для различных классов активов.

Когда возникли эти решения, как это устроено и, самое главное, когда и кому это выгодно?

Содержание:

  1. StableSwap (v1)
  2. CryptoSwap (v2)
  3. Типы АММ
  4. Заключение

StableSwap

История Curve AMM начинается осенью 2019 года, когда Михаил Егоров решил создать более эффективное решение для обмена стейблкоинов.

На тот момент существовали платформы, такие как Uniswap v1 с инвариантом постоянного произведения (CP-AMM), однако этот метод был неэффективен для стейблкоинов и приводил к потерям из-за проскальзывания.

Первый вайтпейпер CURVE был посвящен механизму StableSwap, читать тут.

Curve был первым AMM, который реализовал концентрированную ликвидность.

StableSwap сконцентрировал ликвидность вокруг фиксированной цены (обычно 1.0), что делало обмен стейблкоинов гораздо более эффективным.

Пользователи могли обменивать большие объемы стейблкоинов почти без потерь, что значительно уменьшало проскальзывание и улучшило условия для поставщиков ликвидности. Это решение стало большим шагом вперед в области децентрализованных обменов, и Curve быстро завоевала популярность в мире DeFi.

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

Curve использует механизм, который называется "инвариантом" — это правило определяет, как меняется цена монет в пуле в зависимости от количества каждой монеты.

Задача в том, чтобы цены оставались как можно более стабильными, особенно когда количество монет в пуле близко к равным значениям.

StableSwap использует так называемый "инвариант постоянной цены": что значит, что если количество монет почти одинаковое, цена почти не меняется (а ликвидность в этой точке максимально концентрирована).

Однако, если количество одной из монет сильно уменьшается, используется другая формула — "инвариант постоянного произведения" — чтобы всё равно обеспечить некоторую ликвидность, но при этом позволить цене изменяться.

Идея

StableSwap — это алгоритм, который использует обе эти формулы. Когда количество монет близко к равному, система работает, как если бы цена не менялась (это похоже на бесконечный запас монет). Но когда баланс нарушается, система начинает действовать по принципу Uniswap, предоставляя ликвидность, но с изменением цены.

StableSwap старается поддерживать цену на уровне 1.0, то есть чтобы каждая монета стоила примерно одинаково. Когда баланс нарушается, система все еще предлагает ликвидность, но цена начинает меняться, чтобы восстановить баланс.

Проскальзывание цен при обменах в Uniswap и StableSwap. Х - размер свапа, Y - изменение цены.

Как видно на графике выше, при обмене большего количества одного токена на другой, оба инварианта сталкиваются с проскальзыванием из-за дисбаланса ликвидности в пуле. Однако при обменах стейблкоинов проскальзывание у StableSwap значительно меньше, и цена остается более стабильной значительно дольше, в то время как у Uniswap она начинает снижаться сразу и значительно быстрее, создавая более значительные отклонения (проскальзывания) при обменах.

Stableswap (синий) между инвариантами с постоянной ценой и Uniswap.
Х - цена токена 1, Y - цена токена 2.

На графике выше показано, что желаемый инвариант StableSwap остается "плоским", когда резервы X и Y сбалансированы, что означает, что цена остается постоянной и близкой к 1.0. Если резервы выходят из равновесия, ликвидность все еще предоставляется, но уже с проскальзыванием.

StableSwap устанавливает ≪золотую середину≫ между фиксированными ценами и проскальзыванием, с распределением в максимально широком диапазоне цен.


CryptoSwap в Curve V2

Первый вариант AMM от Curve отлично справлялся с пулами стейблкоинов и активов с устойчивой корреляцией цены. Когда есть ожидаемая цена для активов, то можно заранее создать нужную концентрацию ликвидности в одном конкретном месте.

Но что делать с монетами цены которых могут значительно и надолго изменяться относительно друг друга?

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

9 июня 2021 года были официально запущены первые криптопулы второй версии AMM от Curve на сетях Ethereum и Polygon.

Вайтпейпер для CryptoSwap в Curve v2 читать тут

Месяцем ранее был запущен Uniswap третьей версии, главной идеей которого также была концентрация ликвидности. Но поставщики ликвидности столкнулись с возросшими непостоянными потерями (IL), так как инвариант Uniswap приводил к их пропорциональному увеличению и ограничивал рабочий диапазон ценовой позиции в пуле.

(В Uniswap V3 используется инвариант с постоянной суммой произведений для каждой ценовой позиции)

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

Но что если перемещать диапазон концентрации ликвидности только в том случае, если дохода от части собранных комиссий будет хватать на покрытие непостоянных потерь?


Проблема динамической концентрированной ликвидности

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

Применение StableSwap напрямую к волатильным активам, определенно, создаст некоторые проблемы. Ведь он обеспечивает концентрированную ликвидность около обменного курса 1:1, но очень слабую ликвидность за пределами этого диапазона. Поэтому, если цена достаточно изменяется, она обеспечивает более низкую ликвидность, чем CP-AMM (Constant Product Automated Market Maker, пример: uniswap v2). Более того, поставщикам ликвидности придется нести более крупные непостоянные потери, поскольку актив с более высокой стоимостью также резко снизится в их позициях. По этим причинам Crypto Pool предлагает иную модель, отличную от StableSwap.

Криптопул должен быть построен таким образом, чтобы динамически реагировать на рыночную цену, в отличие от StableSwap, который фокусируется только на цене 1:1. В этом смысле CryptoSwap потребуется концентрированная ликвидность около текущей рыночной цены, но когда цена начнет резко отклоняться, его кривая должна не замедлительно напоминать кривую CP-AMM.

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

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


Давайте разберёмся, как именно эта магия Curve работает

Существует множество материалов по алгоритмам CryptoSwap, для понимания которых нужны терпение и бакалаврская степень физико-математических наук (или, как минимум, хорошее знание старшей школьной математики). Однако более 90% пользователей найдут эти труды весьма сложными: 1, 2, 3, 4, 5, 6, 7.

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

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

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

Просто перемещайте слайдеры и вы все поймёте :)

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

Когда рыночная цена сильно отличается от текущей точки концентрации ликвидности, пул CryptoSwap обеспечивает более низкую ликвидность, чем CP-AMM. Таким образом, необходимо повторно привязать равновесную цену пула к определенной стратегией ребаланса позиции.

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

Важно понимать: Кривая CP-AMM (например как в Uniswap) остается неизменной независимо от движения цены, поэтому потери на стороне поставщика ликвидности могут быть "непостоянные потери" (IL), которые могут быть восстановлены при условии возвращения цены. В случае с CryptoSwap, чтобы предотвратить образование постоянных потерь, ликвидность перемещается только при соблюдении следующего условия: 50% от накопленных комиссий должно быть достаточно для покрытия потерь на ребалансировку ликвидности.

https://docs.kokonutswap.finance/understanding-crypto-pools#conclusion

Если накопленных комиссий не хватает для дальнейшего перемещения ликвидности, то перемещение останавливается пока не поступят новые сборы.

Инвариант CryptoSwap работает как суперпозиция инвариантов StableSwap и постоянного произведения CP-AMM. В результате система может адаптироваться к разным условиям, эффективно поддерживая глубокую ликвидность для волатильных активов без увеличения расходов для провайдеров ликвидности.

Динамические комиссии и защита от потерь

CryptoSwap также использует динамические комиссии, чтобы компенсировать потери, возникающие при изменении баланса токенов. Комиссия зависит от того, насколько сильно нарушен баланс в пуле. Если дисбаланс велик, комиссия увеличивается, чтобы компенсировать риски для поставщиков ликвидности. Что, в свою очередь, помогает быстрее переместить ликвидность ближе к рыночным ценам.

Почти параболический рост комиссий в пуле из двух токенов (Leo Lau, Boo/Guangwu)

Взимаемой комиссии за своп должно быть достаточно для покрытия IL после перемещения ликвидности. Чем выше дисбаланс, тем выше комиссия.

Другой способ представить это так: комиссии пула растут в зависимости от того, насколько далеко находится внутренний оракул от p (точки концентрации ликвидности). Если внутренняя цена «убежала» от того места, куда мы вернулись слишком быстро, мы можем столкнуться с крупными убытками от повторной привязки, поэтому мы повышаем комиссии, чтобы защитить свою прибыль.

В итоге мы видим как были достигнуты первоначальные цели:

снижение уровня риска до аналогичного CP-AMM, а также предоставление концентрированной ликвидности вокруг рыночной цены. В итоге, эти два фактора приведут к более высокому доходу.

Интересно знать: В отличие от платы за своп, плата (или вознаграждение) за депозит-снятие применяется только в случае, если депозит или снятие не сбалансированы в долларовом выражении.


Типы АММ

Подытожим и закрепим вышесказанное.

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

Вот основные подходы, которые применяются в AMM:

1. Постоянное произведение (CPMM)

  • Как работает: Это как весы с двумя чашами. Чем больше товара на одной чаше, тем дороже он становится, и наоборот. Всегда сохраняется определенный баланс.
  • Пример: Uniswap v2.
  • Характеристики: Цена активов меняется в зависимости от их количества в пуле, сохраняя постоянное произведение. Модель предоставляет неограниченную ликвидность, но при этом увеличивается проскальзывание для крупных сделок.
  • Плюсы: Прост в использовании, подходит для любых активов.
  • Минусы: Если сделка очень крупная, цена может сильно измениться (высокое проскальзывание).

2. Концентрированная ликвидность (CL-AMM)

  • Как работает: Поставщики ликвидности указывают ценовой диапазон, в котором хотят работать. Например, если они считают, что цена останется в определенных рамках, они могут сконцентрировать свои средства в этом диапазоне.
  • Пример: Uniswap v3.
  • Характеристики: Повышает эффективность использования ликвидности за счет ее концентрации в выбранном диапазоне цен.
  • Плюсы: Более эффективное использование средств.
  • Минусы: Требует больше внимания и управления, непостоянные потери, ограниченность рабочего диапазона позиции, проблемы предоставления ликвидности "Just-In-Time" (подробнее тут).

3. Гибридный (StableSwap)

  • Как работает: Этот подход - комбинация двух предыдущих методов, оптимизированная для активов, которые обычно близки по стоимости, сочетающая элементы постоянного произведения и постоянной суммы. Оптимизирована для активов, которые обычно близки по стоимости, таких как стейблкоины. StableSwap использует комбинацию алгоритмов для минимизации проскальзывания и поддержания ликвидности. Комиссии в этой версии динамические: их часть направляется на стабилизацию пула, что позволяет обеспечить плавный и выгодный обмен.
  • Пример: Curve StableSwap.
  • Характеристики: Подходит для активов с близкой стоимостью, минимизируя проскальзывание и улучшая ликвидность.
  • Плюсы: Минимальное проскальзывание, стабильные цены. Особенно эффективно для обмена стейблкоинов.
  • Минусы: Сложнее в настройке из-за продвинутого управления комиссией и ликвидностью.

4. Гибридный (CryptoSwap)

  • Как работает: Также гибридный подход, который эффективно работает с волатильными активами. Использует комбинацию алгоритмов для минимизации проскальзывания и непостоянных потерь (impermanent loss). Cryptoswap в версии NG использует часть комиссий для перемещения ликвидности ближе к текущей рыночной цене, повышая эффективность пула и обеспечивая точное ценообразование.
  • Пример: Curve CryptoSwap.
  • Характеристики: Ориентирован на работу с волатильными активами, динамически корректируя ликвидность для снижения проскальзывания.
  • Плюсы: Точное ценообразование и минимизация рисков при обмене волатильных активов.
  • Минусы: Сложнее в понимании и настройке из-за продвинутых алгоритмов управления ликвидностью.


Заключение

StableSwap

StableSwap был первым решением Curve для работы с пулами, состоящими из стейблкоинов или активов с высокой корреляцией. Основная идея заключалась в минимизации проскальзывания и непостоянных потерь (IL) за счет использования кривой, обеспечивающей эффективный обмен активов с минимальными затратами. StableSwap предоставляет равномерное распределение ликвидности вокруг фиксированной цены (обычно 1.0), что делает его идеальным для стейблкоинов.

Таким образом, StableSwap и CryptoSwap представляют две различные, но дополняющие друг друга модели для работы с ликвидностью. StableSwap эффективно решает задачи обмена стейблкоинов, в то время как CryptoSwap обеспечивает работу с волатильными активами, минимизируя риски для поставщиков ликвидности.


CryptoSwap

Обобщим основную логику в два пункта:

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

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


Сравнение с аналогами

Uniswap v3 и его аналоги, также пытаются обеспечить концентрированную ликвидность вокруг равновесной цены. Там поставщики ликвидности могут выбрать ценовой диапазон, для которого они хотят предоставить ликвидность. Таким образом, «общая концентрированная ликвидность» достигается за счёт активного участия поставщиков ликвидности в определении, на каком ценовом уровне должна быть сосредоточена ликвидность. Однако очевидно, что у этого подхода есть свои недостатки: поставщикам ликвидности не только нужно понимать точный механизм работы этого пула, но и постоянно следить за рыночными условиями и реагировать на них. С другой стороны, CryptoSwap не требует каких-либо действий со стороны поставщиков ликвидности, что делает его подходящим для более широкой аудитории.

Кроме того, позиции LP в Uniswap V3 не могут быть легко интегрированы с другими протоколами, так как они не являются взаимозаменяемыми (fungible), а представляют собой NFT из-за прикреплённого к ним ценового диапазона. Это также усложняет реализацию yield farming (доходного фарминга) в виде стейкинга взаимозаменяемых LP-токенов. CryptoSwap не сталкивается с такими ограничениями, что делает его применимым во всей экосистеме DeFi.


🔰 Помощь

Помощь и FAQ: https://resources.curve.fi/
Техническая документация: https://docs.curve.fi/

💬 Общение

Русскоязычное сообщество Curve

📰 Медиа

EN: Curve News Blog 🔹 Telegram Announcements 🔹 X
RU: Канал Михаила Егорова🔹 Curve News (неофициальный)