КРАСИВАЯ МАТЕМАТИКА, СТОЯЩАЯ ЗА AMM CURVE: ЧАСТЬ I
перевод с английского оригинальной статьи:
ЧАСТЬ I: STABLESWAP — ЭФФЕКТИВНЫЙ AMM ДЛЯ СТАБИЛЬНЫХ АКТИВОВ
ВВЕДЕНИЕ
Curve был основан Михаилом Егоровым, физиком, который привнес свой интерес к математике и физике в сферу DeFi. Этот научный подход, по-видимому, отражен в дизайнах AMM, которые служат четким экономическим целям: обеспечение эффективной торговли привязанными и непривязанными активами, а также содействие ликвидации на рынках кредитования и майнинга crvUSD. Подробнее:
- Stableswap AMM для стабильных активов;
- CryptoSwap AMM для непривязанных активов;
- LLAMMA — Lending AMM для рынков кредитования и майнинга crvUSD.
В этой статье мы начнем с StableSwap AMM и исследуем механизм, стоящий за доминированием Curve в торговле стабильными активами (цена которых привязана к базовому активу). Она содержит математические формулы, но они будут упрощены, чтобы помочь читателям понять, как каждый AMM разработан для генерации экономической ценности.
КЛЮЧЕВЫЕ ВЫВОДЫ
- StableSwap объединяет два инварианта: Постоянную сумму (нулевое проскальзывание, но хрупкость) и Постоянное произведение (защита, но вызывающее проскальзывание). Кривая остается близкой к постоянной сумме, когда активы сохраняют соотношение примерно 1:1, чтобы минимизировать проскальзывание, и смещается в сторону постоянного произведения, когда пул становится несбалансированным, чтобы увеличить проскальзывание и защитить ликвидность.
- Curve достигает такого поведения благодаря динамическому коэффициенту усиления, который укрепляет линейную область (постоянной суммы) для высокой капитальной эффективности. По мере роста дисбаланса эффективное усиление уменьшается, позволяя инварианту вести себя больше как постоянное произведение.
- Суммарная часть масштабируется размером пула (D), чтобы по мере роста пула её вклад не затмевался произведением.
РАЗДЕЛ 1: КОНЦЕПЦИЯ ФОРМУЛЫ STABLESWAP
Модель StableSwap AMM сочетает в себе сильные стороны кривой Uniswap и кривой линейного инварианта. Чтобы понять, как она работает, нам сначала нужно прояснить концепцию каждого инварианта.
В математике инвариант — это свойство объекта, которое остается неизменным при определенных операциях или преобразованиях.
1/ Формулы постоянной суммы (Линейный инвариант: x + y = C)
Модель линейного инварианта описывается как формула суммы:
x + y = C
В случае DEX AMM, x и y представляют собой количество токенов в пуле, C — это инвариантное общее количество пула.
Очевидно, что эта модель AMM имеет нулевое проскальзывание при любом объеме торговли.
Например: Пул содержит 100 токенов X и 100 токенов Y, общее количество 200.
Когда Алиса обменивает свои 20 токенов X на токены Y, она получает «a» токенов Y, что гарантирует:
Соотношение цен остается (1:1) после обмена
Формула линейного инварианта (постоянной суммы) часто описывается как «бесконечное кредитное плечо». Это происходит потому, что ценовая кривая почти плоская: вы можете покупать или продавать большие объемы актива, в то время как цена практически не движется.
Но что произойдет, когда пользователь обменяет большое количество токенов?
Например: Боб обменивает свои 100 токенов X на токены Y
При той же формуле, что и выше, соотношение цен по-прежнему остается (1:1), Боб получает 100 токенов Y
Состояние пула становится: 200 X и 0 Y, что означает, что ликвидность пула исчерпана всего за одну транзакцию.
Ключевой момент: линейный инвариант помогает поддерживать постоянную цену, но он также может полностью истощить пул.
2/ Постоянное произведение (x * y = K)
Открыв и применив простую инвариантную функцию x × y = k для своего алгоритма AMM, Uniswap фактически превратился в самый успешный DEX и продолжает доминировать в секторе DEX по сей день.
Как эта формула рассчитывает количество полученных токенов для операции обмена?
Например: Пул содержит 100 токенов X и 100 токенов Y
Когда Алиса обменивает свои 10 токенов X на токены Y, она получает «a» токенов Y, что гарантирует:
Таким образом, Алисе необходимо внести 10 токенов X, чтобы получить 9,09 токенов Y, что означает, что 1 токен Y стоит 0,9 токена X.
Соотношение цен становится (1:0.9), что меньше 0.1 токена Y, или 10% по сравнению с ожидаемым. Оставшиеся 10% — это проскальзывание данной транзакции.
Суть формулы — это базовый компромисс. Проскальзывание — это издержки, которые трейдер должен принять при совершении обмена. Чем больше влияние на цену, тем больше он заплатит при проскальзывании.
Проскальзывание в AMM x*y=K зависит не от того, сколько токенов пользователь обменивает в абсолютном выражении, а от того, насколько велик его обмен по сравнению с общей ликвидностью пула.
В предыдущем примере проскальзывание составляет 10% при обмене 10 токенов в пуле из 100 токенов X и 100 токенов Y.
В то время как при обмене 10 токенов, но в пуле из 1000 токенов X и 1000 токенов Y, проскальзывание составляет всего 1%.
Чем больше ликвидность, тем более плоской становится кривая, и тем ближе она подходит к линии постоянной суммы (формула нулевого проскальзывания).
Причина проскальзывания заключается в следующем: после сделки количество токенов X в пуле увеличивается, а количество токенов Y уменьшается. Поскольку остается меньше токенов Y, Y становится дороже, чтобы сохранить K тем же. В Uniswap цена корректируется таким образом после каждого обмена.
Чтобы увидеть, насколько чувствительна цена к изменениям x, возьмем производную Y:
Это показывает, насколько чувствительна цена к изменениям x. Когда x мало, x^2 очень мало, поэтому |y’| становится очень большим, что означает, что небольшая сделка резко меняет цену. Когда x велико, x^2 растет быстрее, чем сам x, наклон становится более плоским, и цена почти не меняется при добавлении или удалении небольшого количества x.
Мы получим те же результаты при взятии производной от x.
Иными словами, чем ближе пул подходит к истощению одного токена, тем экстремальнее становится ценовая реакция. Именно так формула постоянного произведения защищает ликвидность: по мере приближения резервов к нулю стоимость истощения пула резко возрастает, делая непрактичным для кого-либо забирать последний бит. Это также можно показать математически, поскольку кривая xy=K или y=K/x только приближается, но никогда фактически не достигает x=0 или y=0.
Однако после каждого обмена цена внутри AMM может отличаться от реальной рыночной цены. Этот разрыв создает возможность для арбитражных трейдеров покупать дешево и продавать по более высокой цене, возвращая цену AMM к рыночной. Этот процесс происходит непрерывно, поддерживая баланс пула и делая уравнение X*Y=K эффективным для автоматизированных маркет-мейкеров.
3/ StableSwap от Curve
Основная идея: минимизация проскальзывания путем максимизации перекрытия модели "Постоянного произведения" и "Постоянной суммы".
Постоянное произведение Uniswap V1 является действительно эффективным AMM для криптопар со значительной волатильностью цен, таких как ETH/BTC, ETH/USDC или BTC/DAI. Однако для пар, которые должны оставаться тесно привязанными друг к другу, таких как стейблкоины (USDT/DAI, USDC/USDT) или деривативные токены (wETH/stETH), эта модель всегда создает ненужное проскальзывание.
StableSwap создан для устранения этого ограничения инварианта Uniswap V1, с основной целью минимизации проскальзывания при торговле токенами.
Как мы обсуждали в предыдущей части, проскальзывание достигает своего минимума, когда кривая AMM X*Y=K касается прямой линии нулевого проскальзывания X+Y=C.
Поэтому, говоря простыми словами, StableSwap от Curve — это алгоритм, разработанный для максимизации области, где кривая X*Y=K остается очень близкой к линии X+Y=C, что означает, что проскальзывание очень близко к 0%.
РАЗДЕЛ 2: ПОСТРОЕНИЕ ИНВАРИАНТА
1/ Объединение инвариантов постоянной суммы и постоянного произведения.
Формула постоянной суммы обобщается для использования любого количества токенов:
Формула постоянного произведения обобщается для использования любого количества токенов:
Объединение двух формул принимает вид:
Для более легкого представления, рассмотрим эту формулу в случае n=2 (пул с 2 токенами), мы получаем:
что может быть проиллюстрировано следующим образом:
Результат: Оранжевая кривая выглядит почти идентично красной кривой (X*Y=K).
Это потому, что сумма инварианта не усиливается, что означает, что сумма недостаточно эффективна, чтобы значительно изменить кривую.
2/ Коэффициент усиления
Чтобы сумма стала более эффективной, необходим множитель. Инварианты суммы необходимо умножить на множитель χ. Таким образом, мы получаем:
Множитель χ увеличит часть уравнения с низким проскальзыванием. Это усилит кривую связывания, придавая большее значение стороне с низким проскальзыванием.
На графике мы используем E для представления χ и позволяем E изменяться от 0 до 100.
Мы видим, что с увеличением множителя кривая связывания будет становиться ближе к суммарному инварианту, что означает повышение капитальной эффективности и снижение проскальзывания.
Но есть проблема: эта установка хорошо работает только тогда, когда цены остаются близкими к «идеальному» значению 1.0. Если цены отклоняются слишком сильно, система может выйти из строя, потому что в этих точках не будет достаточной ликвидности.
Давайте приведем простой пример для сравнения:
Рыночная цена: USDC (x) = 1.00; DAI (y) = 0.99
Если трейдер обменивает 10 USDC → DAI, теперь в пуле 1010 USDC, формула вернет:
⇒ Трейдер получает ≈10 DAI, проскальзывание почти 0%
Трейдер пытается обменять 10 USDC → DAI.
В действительности, 10 USDC стоят всего $8. Но кривая StableSwap по-прежнему рассматривает USDC и DAI как «почти равные», поэтому она выдает около 10 DAI. Это означает, что пул переплачивает → арбитражники истощают DAI до тех пор, пока баланс пула не будет нарушен.
Чтобы обеспечить ликвидность на всех ценовых уровнях, чтобы пользователи могли торговать даже при значительном отклонении цен от привязки, Curve пришлось сделать χ динамическим, а не постоянным числом.
Значение χ будет функцией, которая меняется в зависимости от A, где A — это постоянный параметр, установленный для каждого пула. Формула будет выглядеть так:
- Увеличение χ сделает кривую (красная линия) более плоской, ближе к линейному инварианту с нулевым проскальзыванием (зеленая линия).
- Уменьшение χ сделает кривую (красная линия) более крутой, ближе к кривой инварианта произведения (синяя линия).
Компромисс StableSwap заключается в том, что пул может скользить вверх или вниз по кривой X+Y=C только тогда, когда пулы достаточно сбалансированы, а цена стабильна в районе (1:1).
Когда пулы становятся несбалансированными, инвариант становится инвариантом произведения вместо инварианта суммы, поэтому обмен становится дорогим, как обмен X*Y=K.
Представим 3 сценария пула, который содержит 2000 токенов, включая USDC и DAI. Пул сбалансирован (1000 USDC и 1000 DAI)
Пул слегка несбалансирован (1500 USDC и 500 DAI)
Пул значительно несбалансирован (1950 USDC и 50 DAI)
Однако в StableSwap формула смешивает два типа членов:
- Суммарный член (x+y), который растет простым линейным способом,
- Производный член (x⋅y), который растет гораздо быстрее (нелинейно).
Например: Когда размер пула удваивается 2(x+y), (2*2y) растет в четыре раза по сравнению с (x*y)
Таким образом, если мы объединим их напрямую, член произведения будет доминировать, и суммарный член не будет иметь большого значения при увеличении размера пула.
Чтобы исправить это, часть суммы умножается на D (общая глубина пула). Умножая, мы масштабируем сумму так, чтобы ее можно было справедливо сравнить с членом произведения.
Затем, чтобы сохранить математическую согласованность, мы нормализуем ее как D^n. Это делает «фактор кредитного плеча» χ безразмерным, что означает, что он не будет зависеть от того, сколько токенов находится в пуле или насколько глубоко он находится. Настройка будет следующей:
Инвариант StableSwap для пула из 2 токенов x,y теперь будет:
и выполняя необходимые преобразования уравнений, мы получаем окончательный инвариант StableSwap:
с такой плоской кривой (синяя кривая)
И когда χ меняется в зависимости от состояния пула (сбалансированного или несбалансированного), кривая будет меняться следующим образом:
Когда A=100, в сбалансированном состоянии, χ =A, кривая почти идентична линейной, давая проскальзывание, близкое к 0%.
ЗАКЛЮЧЕНИЕ
StableSwap построен вокруг очень практичной идеи: поддерживать низкие комиссии при обмене, когда активы остаются близкими к своей привязке, и защищать ликвидность, когда пул выходит из равновесия. Объединив поведение постоянной суммы и постоянного произведения и управляя этим сочетанием с помощью коэффициента усиления, Curve создал кривую ценообразования, которая автоматически адаптируется к рыночным условиям.
Этот дизайн объясняет, почему StableSwap стал одним из важнейших AMM в DeFi. Разбор StableSwap также закладывает основу для изучения следующих шагов Curve: CryptoSwap для волатильных активов и LLAMMA для рынков кредитования.
Эти оставшиеся AMM будут рассмотрены в следующих статьях, где мы продолжим раскрывать математическую элегантность дизайна Curve.
🔰 Помощь
Помощь и FAQ: https://resources.curve.finance/
Техническая документация: https://docs.curve.finance/
💬 Общение
Русскоязычное сообщество Curve
📰 Медиа
EN: Curve News Blog 🔹 Telegram Announcements 🔹 X