У цій статті будуть представлені кілька важливих реалізацій AMM в екосистемі Solana.
Автор: ZAN
У сучасному стані індустрії Web3 продукти, пов'язані з DeFi, займають абсолютну частку ринку. А серед них AMM (Automated Market Maker, автоматизований маркет-мейкер) як ключовий елемент є сильним рушієм змін у фінансовій сфері Web3. У цій статті буде представлено кілька важливих реалізацій AMM в екосистемі Solana, сподіваючись, що це допоможе LP (Liquidity Provider, постачальникам ліквідності) у виборі власної інвестиційної стратегії.
КПММ
CPMM (Постійний продукт ринкового маркетмейкера) є найосновнішою реалізацією AMM, яка реалізована в багатьох продуктах. Тут для прикладу наведемо AMM на основі постійного продукту, розроблений Raydium. Постійний продукт означає, що обсяг двох токенів у пулі має фіксований добуток: X * Y = k.
Для постачальників ліквідності, коли хтось додає ліквідність у пул (додає активи), CPMM автоматично створює асоційований рахунок для адреси гаманця та випускає LP Token (кожна торговельна пара має свій власний LP Token Mint). Цей LP Token використовується для підтвердження того, що адреса гаманця володіє часткою певного пулу, і буде знищено відповідний Token, коли постачальник ліквідності зніме свої кошти.
Онлайн-програма CPMM розроблена за допомогою Anchor, код програми можна знайти. Далі ми коротко підтвердимо, як вона реалізує постійний добуток.
По-перше, користувач, використовуючи обмін токенів на Raydium через CPMM, викликатиме команди, пов'язані з обміном.
Наприклад (лише для ілюстрації ситуації, ця стаття не несе відповідальності за будь-який токен): коли користувач хоче обміняти USDC на TRUMP, він може здійснити обмін через пул TRUMP-USDC.
Наприклад, ми розглядаємо цю угоду, для простоти ігноруємо інші інструкції в угоді і зосереджуємося лише на частині Raydium. Знайдіть Raydium CPMM: swapBaseInput:
!
У вхідних рахунках ми можемо бачити, що вхідний токен – це USDC, а вихідний токен – TRUMP. У AMM екосистеми Solana LP Pair може бути просто представлена обліковим записом токенів без необхідності створювати нову контрактну програму та розгортати її (наприклад, заводський контракт, який зазвичай використовується в Ethereum). Коли транзакція відбувається, безпосередньо взаємодійте з програмою CPMM Raydium, і програма Solana змінить статус відповідного облікового запису токенів за допомогою адреси вхідного пулу, адреси токена тощо для виконання операцій обміну.
Наприклад, вказана команда swapBaseInput, код можна знайти тут. Після ряду попередніх перевірок, конкретну кількість цільових токенів, яку можна обміняти, було розраховано через ConstantProductCurve.swap_base_input_without_fees:
!
Серед використаних формул:
!
Отже, після зміни загальної кількості TokenX та TokenY їхній добуток має залишатися незмінним. Ліва сторона формули - це добуток після зміни, права сторона - це добуток до зміни.
!
Вищезгадане рівняння, після математичних перетворень, дозволяє отримати формулу перетворення Δy (тобто кількість токенів y, які ми можемо обміняти):
!
Це частина коду, в якій delta_y = (delta_x * y) / (x + delta_x). Зверніть увагу, що в цих обчисленнях не враховуються комісії, оскільки вони вже були вирахувані в попередній логіці swap_base_input.
КЛММ
CLMM ( Концентрований Ринок Ліквідності ) так само є AMM, розробленим Raydium, він схожий на Uniswap V3, кожна торгова пара має кілька рівнів комісій, які дозволяють створювати відповідні пулі для кожного рівня.
Оскільки реалізація CLMM спирається на Uniswap V3, під час її вивчення багато концепцій і способів реалізації можна сприймати як реалізації Uniswap. Вона також успадкувала концепції Uniswap, такі як tick, багатошарова комісія, концентрована ліквідність тощо. Більше інформації можна знайти в курсі розробки DEX, представленому ZAN: DEX Development Practice - Аналіз коду Uniswap - Як працює Uniswap - ZAN
Але потрібно звернути увагу, що, подібно до CPMM, завдяки особливостям мережі Solana, Raydium CLMM не потребує окремого розгортання контракту для кожного пулу, тому концепція фабричного контракту також відсутня. Це відрізняється від Uniswap.
CLMM дозволяє постачальникам ліквідності вибрати ціновий діапазон під час внесення коштів, кошти будуть розподілені лише в обраному діапазоні:
!
У випадку централізованого ліквіднісного пулу токени розміщуються з обох сторін поточної ціни. Вибраний вище діапазон цін охоплює поточну ціну, тому кошти будуть розподілені між двома токенами в пулі.
Ми також можемо ввести лише один тип токена, щоб забезпечити так звану односторонню ліквідність (як показано на малюнку). Це дещо схоже на лімітні ордери в традиційній фінансовій моделі, кошти LP використовуються лише тоді, коли ціна токена досягає певного діапазону, хоча в цій моделі також потрібно врахувати більше ризиків.
!
Зазвичай, для пулів з незначними коливаннями цін, LP схильні обирати менший діапазон; навпаки, для тих пуль, де коливання цін дуже різкі, вони схильні вибирати більший діапазон. Мета цього полягає в тому, щоб максимально уникнути виходу поточної ціни за межі обраного цінового діапазону, що призводить до значних незворотних втрат.
Слід зазначити, що концентрована ліквідність, хоча і може підвищити ефективність використання коштів LP, але також ставить вищі вимоги до фінансової свідомості LP. LP потрібно більш активно управляти своєю ліквідністю. Якщо LP не впорається, то часті коливання на ланцюгу можуть легко призвести до серйозних непостійних втрат для LP.
ДЛММ
DLMM (Dynamic Liquidity Market Maker) є продуктом AMM, розробленим Meteora, і також належить до Uniswap V3. Він дуже схожий на CLMM, згаданий вище, і DLMM дозволяє LP концентрувати свої кошти в певному діапазоні поблизу поточної ціни. Однак DLMM має деякі відмінності в реалізації та пропонує кілька унікальних функцій.
У DLMM є концепція Bin, де пул починається з базової ціни, а кожен Bin існує через невеликий крок Bin step. Якщо угода відбувається в межах одного й того ж Bin, трейдери отримують нульове ковзання. Це може значно збільшити обсяги торгівлі та успішність угод, теоретично LP зможе отримувати більше торгових зборів.
!
Подібно до CLMM, токени в пулі також розподілені з обох боків від поточної ціни, один токен потребує лише односторонньої ліквідності. Але відповідно до концепції Bin, активований Bin (який вказує на поточну ціну обміну) має два види токенів. А саме:
Поточний активований Bin: тут є дві токени, обмін токенів у поточному Bin буде здійснюватися за фіксованою ціною і з 0 сліпом;
Інші Bin: розподілені з обох боків активного Bin, де присутній лише один токен.
Коли кількість токенів у поточному активному Bin змінюється, якщо в однієї зі сторін токенів стає 0, DLMM встановить поточний активний Bin відповідно до реальної ситуації в пулі на наступний Bin зліва чи справа. Це спонукає зміни цін у пулі.
При наданні ліквідності через LP, DLMM пропонує 3 стратегії: Spot, Curve та Bid Ask.
!
Серед них Spot є найпоширенішим, практично всі ліквідні пулі підходять, це можна вважати найпростішою стратегією ліквідності.
Curve більше підходить для тих пулів, де зміни цін є дуже незначними, наприклад, для пар стабільних монет. Ці пули мають дуже невеликі коливання цін, як і вказує їхня форма, зосереджуючи кошти LP у цьому діапазоні, що дозволяє максимально отримувати комісії за交易.
Bid Ask більше підходить для тих пулів, у яких ціни сильно коливаються. Люди завжди схиляються до того, щоб проводити більше арбітражних угод у таких пулах, де ціни можуть бути важко зосереджені в певному вузькому діапазоні. Ця стратегія зазвичай потребує, щоб LP часто коригували свої позиції, щоб уникнути виходу ціни за межі встановленого ними діапазону фондів. Оскільки це вимагає оцінки ринку, це зазвичай не просто.
Підсумок
AMM як важлива складова Web3 фінансової сфери, завдяки своїй унікальній механіці та інноваціям, сприяє популяризації та розвитку децентралізованих фінансів. З постійним прогресом технологій та вдосконаленням екосистеми, AMM має потенціал відігравати ще більшу роль у майбутньому, ще більше змінюючи традиційну фінансову структуру.
Контент має виключно довідковий характер і не є запрошенням до участі або пропозицією. Інвестиційні, податкові чи юридичні консультації не надаються. Перегляньте Відмову від відповідальності , щоб дізнатися більше про ризики.
Дослідження AMM екосистеми Solana
Автор: ZAN
У сучасному стані індустрії Web3 продукти, пов'язані з DeFi, займають абсолютну частку ринку. А серед них AMM (Automated Market Maker, автоматизований маркет-мейкер) як ключовий елемент є сильним рушієм змін у фінансовій сфері Web3. У цій статті буде представлено кілька важливих реалізацій AMM в екосистемі Solana, сподіваючись, що це допоможе LP (Liquidity Provider, постачальникам ліквідності) у виборі власної інвестиційної стратегії.
КПММ
CPMM (Постійний продукт ринкового маркетмейкера) є найосновнішою реалізацією AMM, яка реалізована в багатьох продуктах. Тут для прикладу наведемо AMM на основі постійного продукту, розроблений Raydium. Постійний продукт означає, що обсяг двох токенів у пулі має фіксований добуток: X * Y = k.
Для постачальників ліквідності, коли хтось додає ліквідність у пул (додає активи), CPMM автоматично створює асоційований рахунок для адреси гаманця та випускає LP Token (кожна торговельна пара має свій власний LP Token Mint). Цей LP Token використовується для підтвердження того, що адреса гаманця володіє часткою певного пулу, і буде знищено відповідний Token, коли постачальник ліквідності зніме свої кошти.
Онлайн-програма CPMM розроблена за допомогою Anchor, код програми можна знайти. Далі ми коротко підтвердимо, як вона реалізує постійний добуток.
По-перше, користувач, використовуючи обмін токенів на Raydium через CPMM, викликатиме команди, пов'язані з обміном.
Наприклад (лише для ілюстрації ситуації, ця стаття не несе відповідальності за будь-який токен): коли користувач хоче обміняти USDC на TRUMP, він може здійснити обмін через пул TRUMP-USDC.
Наприклад, ми розглядаємо цю угоду, для простоти ігноруємо інші інструкції в угоді і зосереджуємося лише на частині Raydium. Знайдіть Raydium CPMM: swapBaseInput:
!
У вхідних рахунках ми можемо бачити, що вхідний токен – це USDC, а вихідний токен – TRUMP. У AMM екосистеми Solana LP Pair може бути просто представлена обліковим записом токенів без необхідності створювати нову контрактну програму та розгортати її (наприклад, заводський контракт, який зазвичай використовується в Ethereum). Коли транзакція відбувається, безпосередньо взаємодійте з програмою CPMM Raydium, і програма Solana змінить статус відповідного облікового запису токенів за допомогою адреси вхідного пулу, адреси токена тощо для виконання операцій обміну.
Наприклад, вказана команда swapBaseInput, код можна знайти тут. Після ряду попередніх перевірок, конкретну кількість цільових токенів, яку можна обміняти, було розраховано через ConstantProductCurve.swap_base_input_without_fees:
!
Серед використаних формул:
!
Отже, після зміни загальної кількості TokenX та TokenY їхній добуток має залишатися незмінним. Ліва сторона формули - це добуток після зміни, права сторона - це добуток до зміни.
!
Вищезгадане рівняння, після математичних перетворень, дозволяє отримати формулу перетворення Δy (тобто кількість токенів y, які ми можемо обміняти):
!
Це частина коду, в якій delta_y = (delta_x * y) / (x + delta_x). Зверніть увагу, що в цих обчисленнях не враховуються комісії, оскільки вони вже були вирахувані в попередній логіці swap_base_input.
КЛММ
CLMM ( Концентрований Ринок Ліквідності ) так само є AMM, розробленим Raydium, він схожий на Uniswap V3, кожна торгова пара має кілька рівнів комісій, які дозволяють створювати відповідні пулі для кожного рівня.
Оскільки реалізація CLMM спирається на Uniswap V3, під час її вивчення багато концепцій і способів реалізації можна сприймати як реалізації Uniswap. Вона також успадкувала концепції Uniswap, такі як tick, багатошарова комісія, концентрована ліквідність тощо. Більше інформації можна знайти в курсі розробки DEX, представленому ZAN: DEX Development Practice - Аналіз коду Uniswap - Як працює Uniswap - ZAN
Але потрібно звернути увагу, що, подібно до CPMM, завдяки особливостям мережі Solana, Raydium CLMM не потребує окремого розгортання контракту для кожного пулу, тому концепція фабричного контракту також відсутня. Це відрізняється від Uniswap.
CLMM дозволяє постачальникам ліквідності вибрати ціновий діапазон під час внесення коштів, кошти будуть розподілені лише в обраному діапазоні:
!
У випадку централізованого ліквіднісного пулу токени розміщуються з обох сторін поточної ціни. Вибраний вище діапазон цін охоплює поточну ціну, тому кошти будуть розподілені між двома токенами в пулі.
Ми також можемо ввести лише один тип токена, щоб забезпечити так звану односторонню ліквідність (як показано на малюнку). Це дещо схоже на лімітні ордери в традиційній фінансовій моделі, кошти LP використовуються лише тоді, коли ціна токена досягає певного діапазону, хоча в цій моделі також потрібно врахувати більше ризиків.
!
Зазвичай, для пулів з незначними коливаннями цін, LP схильні обирати менший діапазон; навпаки, для тих пуль, де коливання цін дуже різкі, вони схильні вибирати більший діапазон. Мета цього полягає в тому, щоб максимально уникнути виходу поточної ціни за межі обраного цінового діапазону, що призводить до значних незворотних втрат.
Слід зазначити, що концентрована ліквідність, хоча і може підвищити ефективність використання коштів LP, але також ставить вищі вимоги до фінансової свідомості LP. LP потрібно більш активно управляти своєю ліквідністю. Якщо LP не впорається, то часті коливання на ланцюгу можуть легко призвести до серйозних непостійних втрат для LP.
ДЛММ
DLMM (Dynamic Liquidity Market Maker) є продуктом AMM, розробленим Meteora, і також належить до Uniswap V3. Він дуже схожий на CLMM, згаданий вище, і DLMM дозволяє LP концентрувати свої кошти в певному діапазоні поблизу поточної ціни. Однак DLMM має деякі відмінності в реалізації та пропонує кілька унікальних функцій.
У DLMM є концепція Bin, де пул починається з базової ціни, а кожен Bin існує через невеликий крок Bin step. Якщо угода відбувається в межах одного й того ж Bin, трейдери отримують нульове ковзання. Це може значно збільшити обсяги торгівлі та успішність угод, теоретично LP зможе отримувати більше торгових зборів.
!
Подібно до CLMM, токени в пулі також розподілені з обох боків від поточної ціни, один токен потребує лише односторонньої ліквідності. Але відповідно до концепції Bin, активований Bin (який вказує на поточну ціну обміну) має два види токенів. А саме:
Коли кількість токенів у поточному активному Bin змінюється, якщо в однієї зі сторін токенів стає 0, DLMM встановить поточний активний Bin відповідно до реальної ситуації в пулі на наступний Bin зліва чи справа. Це спонукає зміни цін у пулі.
При наданні ліквідності через LP, DLMM пропонує 3 стратегії: Spot, Curve та Bid Ask.
!
Серед них Spot є найпоширенішим, практично всі ліквідні пулі підходять, це можна вважати найпростішою стратегією ліквідності.
Curve більше підходить для тих пулів, де зміни цін є дуже незначними, наприклад, для пар стабільних монет. Ці пули мають дуже невеликі коливання цін, як і вказує їхня форма, зосереджуючи кошти LP у цьому діапазоні, що дозволяє максимально отримувати комісії за交易.
Bid Ask більше підходить для тих пулів, у яких ціни сильно коливаються. Люди завжди схиляються до того, щоб проводити більше арбітражних угод у таких пулах, де ціни можуть бути важко зосереджені в певному вузькому діапазоні. Ця стратегія зазвичай потребує, щоб LP часто коригували свої позиції, щоб уникнути виходу ціни за межі встановленого ними діапазону фондів. Оскільки це вимагає оцінки ринку, це зазвичай не просто.
Підсумок
AMM як важлива складова Web3 фінансової сфери, завдяки своїй унікальній механіці та інноваціям, сприяє популяризації та розвитку децентралізованих фінансів. З постійним прогресом технологій та вдосконаленням екосистеми, AMM має потенціал відігравати ще більшу роль у майбутньому, ще більше змінюючи традиційну фінансову структуру.