На текущем этапе в индустрии Web3 продукты, связанные с Децентрализованными финансами, занимают абсолютную долю рынка. Среди них AMM (Автоматизированный маркет-мейкер) как ключевой элемент является мощным двигателем изменений в финансовой сфере Web3. В данной статье будут представлены несколько важных реализаций AMM в экосистеме Solana, надеемся, это поможет Поставщикам ликвидности в выборе своей инвестиционной стратегии.
CPMM
CPMM (Постоянный продуктМаркет-мейкер) является самой базовой реализацией AMM и встречается во многих продуктах. Здесь в качестве примера используется AMM на основе постоянного произведения, выпущенный Raydium. Постоянное произведение означает, что количество двух типов токенов в пуле имеет фиксированное произведение: X * Y = k.
Для поставщиков ликвидности, когда кто-либо добавляет ликвидность (добавляет активы) в пул, CPMM автоматически создает связанный аккаунт для адреса кошелька и выдает LP Token (каждая пара токенов имеет свой собственный Mint LP Token). Этот LP Token используется для подтверждения того, что адрес кошелька владеет долей в определенном пуле, и будет уничтожен при выводе ликвидности поставщиком.
Онлайн-программа CPMM разработана с использованием Anchor, код программы можно найти. Давайте кратко подтвердим, как она реализует постоянный продукт.
Сначала, когда пользователь использует CPMM Raydium для обмена токенов, будут активированы команды, связанные с обменом.
Например (только для иллюстрации, данная статья не несет ответственности за любые токены): когда пользователь хочет обменять USDC на TRUMP, он может сделать это через пул TRUMP-USDC.
Например, мы посмотрим на эту сделку, для упрощения давайте проигнорируем остальные команды в сделке и посмотрим только на часть Raydium. Найдите Raydium CPMM: swapBaseInput:
В Input Accounts мы видим, что входной токен - это USDC, а выходной токен - TRUMP. В AMM экосистемы Solana LP Pair можно просто представить через Token Account, без необходимости создания и развертывания нового контрактного приложения (как это часто делается с фабричными контрактами в Ethereum). При совершении сделки происходит прямое взаимодействие с CPMM Program Raydium, программа Solana будет изменять состояние соответствующего Token Account, передавая адрес пула, адрес токена и так далее, чтобы выполнить операцию swap.
Например, команда swapBaseInput, код которой можно найти здесь. После ряда предварительных проверок, конкретное количество целевых токенов, которое можно обменять, было рассчитано в ConstantProductCurve.swap_base_input_without_fees:
Формула, используемая в этом, следующая:
То есть, после изменения общего объема TokenX и TokenY их произведение должно оставаться неизменным. Слева от формулы находится произведение после изменений, а справа - произведение до изменений.
Указанная формула после математического преобразования позволяет получить формулу преобразования Δy (то есть количество токенов y, которые мы можем обменять):
То есть в коде delta_y = (delta_x * y) / (x + delta_x) часть. Обратите внимание, что здесь расчет не включает комиссию, она уже была вычтена в предварительной логике swap_base_input.
CLMM
CLMM (Концентрированный рыночный маркетмейкер с ликвидностью) также является AMM, разработанным Raydium, он похож на Uniswap V3, для каждой пары токенов также существует несколько уровней комиссий, которые могут создавать соответствующий уровень пула.
Поскольку реализация CLMM основывается на Uniswap V3, при изучении этого решения многие концепции и способы реализации можно заимствовать из реализации Uniswap. Она также унаследовала концепции Uniswap, такие как tick, многоуровневые тарифы, концентрированная ликвидность и т.д. Более подробную информацию можно найти в курсе разработки DEX, представленном ZAN: Практика разработки DEX - Анализ кода Uniswap - Как работает Uniswap - ZAN.
Но стоит отметить, что, как и в случае с CPMM, из-за особенностей сети Solana, Raydium CLMM не требует развертывания отдельного контракта для каждого пула, поэтому концепции фабричного контракта также нет. Это отличается от Uniswap.
CLMM позволяет поставщикам ликвидности выбирать диапазон цен при внесении средств, средства будут распределены только в выбранном диапазоне:
Для централизованных пулов ликвидности токены находятся по обе стороны от текущей цены. Выбранный на рисунке диапазон цен включает текущую цену, поэтому средства будут распределены между двумя токенами в пуле.
Мы также можем инвестировать только в один вид токенов, чтобы предоставить так называемую одностороннюю ликвидность (см. рисунок ниже). Это похоже на лимитные ордера в традиционных финансовых моделях, средства LP будут использоваться только тогда, когда цена токенов достигнет определенного диапазона, однако в этой модели также необходимо учитывать больше рисков.
В общем, для пулов с небольшими колебаниями цен поставщики ликвидности (LP) склонны выбирать меньший диапазон; наоборот, для тех пулов, где колебания цен очень сильные, они склонны выбирать больший диапазон. Цель этого заключается в том, чтобы максимально не допустить, чтобы текущая цена выходила за пределы выбранного диапазона цен, что может привести к слишком большим непостоянным убыткам.
Следует отметить, что централизованная ликвидность, хотя и может повысить эффективность использования средств поставщиков ликвидности (LP), требует от них более высокого уровня финансовой осведомленности. LP необходимо более активно управлять своей ликвидностью. Если LP не справится с этим, частые колебания на блокчейне могут легко привести к серьезным непостоянным потерям.
DLMM
DLMM (Dynamic Liquidity Market Maker) является продуктом AMM, разработанным Meteora, и также относится к Uniswap V3, очень похож на вышеупомянутый CLMM. DLMM также позволяет Поставщикам ликвидности (LP) сосредоточить свои средства в определенном диапазоне, близком к текущей цене. Однако DLMM имеет некоторые отличия в реализации и предлагает несколько уникальных функций.
В DLMM представлен концепт Bin, где пул начинается с базовой цены, и каждые небольшие шаги Bin step существуют как отдельные Bin. Если сделка происходит в пределах одного Bin, то трейдеры получат нулевое проскальзывание. Это может значительно увеличить объём торгов и вероятность успешных сделок, теоретически LP сможет заработать больше торговых сборов.
Как и в случае с CLMM, токены в пуле также распределены по обеим сторонам от текущей цены, и один токен необходимо предоставить только с одной стороны ликвидности. Но в соответствии с концепцией Bin, текущий активированный Bin (который указывает на текущую цену обмена) имеет два токена. То есть:
Текущий активированный Bin: в нем присутствуют два токена, обмен токенов в текущем Bin будет производиться по фиксированной цене и с 0 проскальзыванием;
Другие Бины: распределены по обеим сторонам текущего активного Бина, где присутствует только один токен.
Когда объем токенов в текущем активном Bin изменяется, если у одной из сторон токены уменьшаются до 0, DLMM установит текущий активный Bin в следующий Bin слева или справа в зависимости от фактической ситуации в пуле. Это будет способствовать изменению цены в пуле.
При предоставлении ликвидности LP, DLMM предлагает 3 стратегии: Spot, Curve и Bid Ask.
Среди них Spot наиболее универсален, практически все пулы ликвидности подходят, можно считать это самой простой стратегией ликвидности.
Curve больше подходит для тех пулов, в которых изменения цен очень малы, например, для пар стабильных монет. Ценовые колебания в этих пулах очень незначительны, как и говорит его форма, сосредоточив средства LP в этом диапазоне, можно максимально использовать торговую комиссию.
Bid Ask более подходит для тех пулов, где цены очень сильно колеблются. Люди всегда склонны проводить больше арбитражных сделок в таких пулах, и цены могут быть трудно сосредоточены в пределах небольшого диапазона. Эта стратегия обычно требует от поставщиков ликвидности частого изменения своих позиций, чтобы избежать выхода цены за пределы установленного диапазона средств. Поскольку это связано с оценкой рынка, это обычно не так просто.
резюме
AMM как важная составная часть Web3 финансовой сферы, благодаря своим уникальным механизмам и инновациям, способствует распространению и развитию децентрализованных финансов. С постоянным развитием технологий и усовершенствованием экосистемы, AMM, вероятно, сыграет еще большую роль в будущем, еще больше изменяя традиционную финансовую архитектуру.
Содержание носит исключительно справочный характер и не является предложением или офертой. Консультации по инвестициям, налогообложению или юридическим вопросам не предоставляются. Более подробную информацию о рисках см. в разделе «Дисклеймер».
Исследование AMM в экосистеме Solana: Базовый код за высокой ликвидностью
На текущем этапе в индустрии Web3 продукты, связанные с Децентрализованными финансами, занимают абсолютную долю рынка. Среди них AMM (Автоматизированный маркет-мейкер) как ключевой элемент является мощным двигателем изменений в финансовой сфере Web3. В данной статье будут представлены несколько важных реализаций AMM в экосистеме Solana, надеемся, это поможет Поставщикам ликвидности в выборе своей инвестиционной стратегии.
CPMM
CPMM (Постоянный продукт Маркет-мейкер) является самой базовой реализацией AMM и встречается во многих продуктах. Здесь в качестве примера используется AMM на основе постоянного произведения, выпущенный Raydium. Постоянное произведение означает, что количество двух типов токенов в пуле имеет фиксированное произведение: X * Y = k.
Для поставщиков ликвидности, когда кто-либо добавляет ликвидность (добавляет активы) в пул, CPMM автоматически создает связанный аккаунт для адреса кошелька и выдает LP Token (каждая пара токенов имеет свой собственный Mint LP Token). Этот LP Token используется для подтверждения того, что адрес кошелька владеет долей в определенном пуле, и будет уничтожен при выводе ликвидности поставщиком.
Онлайн-программа CPMM разработана с использованием Anchor, код программы можно найти. Давайте кратко подтвердим, как она реализует постоянный продукт.
Сначала, когда пользователь использует CPMM Raydium для обмена токенов, будут активированы команды, связанные с обменом.
Например (только для иллюстрации, данная статья не несет ответственности за любые токены): когда пользователь хочет обменять USDC на TRUMP, он может сделать это через пул TRUMP-USDC.
| | | | | --- | --- | --- | | Бассейн | TRUMP | USDC | | 7XzVsjqTebULfkUofTDH5gDdZDmxacPmPuTfHa1n9kuh | 6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v |
Например, мы посмотрим на эту сделку, для упрощения давайте проигнорируем остальные команды в сделке и посмотрим только на часть Raydium. Найдите Raydium CPMM: swapBaseInput:
В Input Accounts мы видим, что входной токен - это USDC, а выходной токен - TRUMP. В AMM экосистемы Solana LP Pair можно просто представить через Token Account, без необходимости создания и развертывания нового контрактного приложения (как это часто делается с фабричными контрактами в Ethereum). При совершении сделки происходит прямое взаимодействие с CPMM Program Raydium, программа Solana будет изменять состояние соответствующего Token Account, передавая адрес пула, адрес токена и так далее, чтобы выполнить операцию swap.
Например, команда swapBaseInput, код которой можно найти здесь. После ряда предварительных проверок, конкретное количество целевых токенов, которое можно обменять, было рассчитано в ConstantProductCurve.swap_base_input_without_fees:
Формула, используемая в этом, следующая:
То есть, после изменения общего объема TokenX и TokenY их произведение должно оставаться неизменным. Слева от формулы находится произведение после изменений, а справа - произведение до изменений.
Указанная формула после математического преобразования позволяет получить формулу преобразования Δy (то есть количество токенов y, которые мы можем обменять):
То есть в коде delta_y = (delta_x * y) / (x + delta_x) часть. Обратите внимание, что здесь расчет не включает комиссию, она уже была вычтена в предварительной логике swap_base_input.
CLMM
CLMM (Концентрированный рыночный маркетмейкер с ликвидностью) также является AMM, разработанным Raydium, он похож на Uniswap V3, для каждой пары токенов также существует несколько уровней комиссий, которые могут создавать соответствующий уровень пула.
Поскольку реализация CLMM основывается на Uniswap V3, при изучении этого решения многие концепции и способы реализации можно заимствовать из реализации Uniswap. Она также унаследовала концепции Uniswap, такие как tick, многоуровневые тарифы, концентрированная ликвидность и т.д. Более подробную информацию можно найти в курсе разработки DEX, представленном ZAN: Практика разработки DEX - Анализ кода Uniswap - Как работает Uniswap - ZAN.
Но стоит отметить, что, как и в случае с CPMM, из-за особенностей сети Solana, Raydium CLMM не требует развертывания отдельного контракта для каждого пула, поэтому концепции фабричного контракта также нет. Это отличается от Uniswap.
CLMM позволяет поставщикам ликвидности выбирать диапазон цен при внесении средств, средства будут распределены только в выбранном диапазоне:
Для централизованных пулов ликвидности токены находятся по обе стороны от текущей цены. Выбранный на рисунке диапазон цен включает текущую цену, поэтому средства будут распределены между двумя токенами в пуле.
Мы также можем инвестировать только в один вид токенов, чтобы предоставить так называемую одностороннюю ликвидность (см. рисунок ниже). Это похоже на лимитные ордера в традиционных финансовых моделях, средства LP будут использоваться только тогда, когда цена токенов достигнет определенного диапазона, однако в этой модели также необходимо учитывать больше рисков.
В общем, для пулов с небольшими колебаниями цен поставщики ликвидности (LP) склонны выбирать меньший диапазон; наоборот, для тех пулов, где колебания цен очень сильные, они склонны выбирать больший диапазон. Цель этого заключается в том, чтобы максимально не допустить, чтобы текущая цена выходила за пределы выбранного диапазона цен, что может привести к слишком большим непостоянным убыткам.
Следует отметить, что централизованная ликвидность, хотя и может повысить эффективность использования средств поставщиков ликвидности (LP), требует от них более высокого уровня финансовой осведомленности. LP необходимо более активно управлять своей ликвидностью. Если LP не справится с этим, частые колебания на блокчейне могут легко привести к серьезным непостоянным потерям.
DLMM
DLMM (Dynamic Liquidity Market Maker) является продуктом AMM, разработанным Meteora, и также относится к Uniswap V3, очень похож на вышеупомянутый CLMM. DLMM также позволяет Поставщикам ликвидности (LP) сосредоточить свои средства в определенном диапазоне, близком к текущей цене. Однако DLMM имеет некоторые отличия в реализации и предлагает несколько уникальных функций.
В DLMM представлен концепт Bin, где пул начинается с базовой цены, и каждые небольшие шаги Bin step существуют как отдельные Bin. Если сделка происходит в пределах одного Bin, то трейдеры получат нулевое проскальзывание. Это может значительно увеличить объём торгов и вероятность успешных сделок, теоретически LP сможет заработать больше торговых сборов.
Как и в случае с CLMM, токены в пуле также распределены по обеим сторонам от текущей цены, и один токен необходимо предоставить только с одной стороны ликвидности. Но в соответствии с концепцией Bin, текущий активированный Bin (который указывает на текущую цену обмена) имеет два токена. То есть:
Когда объем токенов в текущем активном Bin изменяется, если у одной из сторон токены уменьшаются до 0, DLMM установит текущий активный Bin в следующий Bin слева или справа в зависимости от фактической ситуации в пуле. Это будет способствовать изменению цены в пуле.
При предоставлении ликвидности LP, DLMM предлагает 3 стратегии: Spot, Curve и Bid Ask.
резюме
AMM как важная составная часть Web3 финансовой сферы, благодаря своим уникальным механизмам и инновациям, способствует распространению и развитию децентрализованных финансов. С постоянным развитием технологий и усовершенствованием экосистемы, AMM, вероятно, сыграет еще большую роль в будущем, еще больше изменяя традиционную финансовую архитектуру.