Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Что это делает. Создаёт новый CLMM-пул с выбранным уровнем комиссии и открывает на нём начальную концентрированную позицию. Две транзакции, один скрипт. Код адаптирован из официальных примеров в
raydium-sdk-V2-demo/src/clmm в один файл, готовый к запуску в Node.Подготовка
Убедитесь, что вы прочитали требования Quick start и установили переменные окруженияRPC_URL, KEYPAIR и зависимости.
Создание CLMM-пула требует единовременной комиссии и платежей за аренду tick-массивов под начальную позицию. Также нужно иметь оба seed-токена в кошельке — открытие позиции, когда цена находится в выбранном диапазоне, требует ликвидности с обеих сторон.
Шаг 1 — config.ts
Сохраните как config.ts. Структура совпадает с src/config.ts.template из демо-репо — disableFeatureCheck принудительно установлена в true (рекомендуется для любой нетривиальной интеграции, чтобы SDK не блокировался на проверке функций при старте):
Шаг 2 — createPool.ts
Сохраните рядом с config.ts. Источник: src/clmm/createPool.ts.
Шаг 3 — createPosition.ts
Источник: src/clmm/createPosition.ts.
Шаг 4 — utils.ts
Источник: src/clmm/utils.ts.
Запуск
Что произошло
Транзакция 1 —raydium.clmm.createPool инициализировала:
- состояние пула по каноническому PDA для
(mint1, mint2, ammConfig), token_0_vaultиtoken_1_vault(отсортированы по порядку байтов mint),- кольцевой буфер наблюдений,
- встроенное битовое отображение tick-массивов,
sqrt_price_x64 из указанной initialPrice.
Транзакция 2 — raydium.clmm.openPositionFromBase открыла концентрированную позицию:
- отчеканила NFT позиции в ваш кошелёк (NFT — это сама позиция; её передача переводит позицию),
- выделила tick-массивы на нижней и верхней границах (плата за аренду один раз, если это первая позиция в этих диапазонах; программа не предоставляет способ закрывать tick-массивы, поэтому эта аренда постоянна),
- внесла
inputAmountвmint1и соответствующий размерmint2(рассчитаноPoolUtils.getLiquidityAmountOutFromAmountIn), - закредитовала позицию ликвидностью, пропорциональной ширине диапазона.
[0.000001, 100000]) практически полный; сузьте его, чтобы сконцентрировать комиссии рядом с текущей спотовой ценой.
Выбор уровня комиссии
clmmConfigs[0] — уровень с минимальной комиссией. Полный набор опубликован на GET https://api-v3.raydium.io/main/clmm-config:
| Индекс | tradeFeeRate | Tick spacing | Используйте когда |
|---|---|---|---|
| 0 | 100 (1bp) | 1 | Стейбл/стейбл, очень низкий непостоянный убыток |
| 1 | 500 (5bp) | 10 | Высоко коррелирующие активы (например, стейкированный vs базовый) |
| 2 | 2_500 (25bp) | 60 | Стандартная торговая пара, blue-chip + стейбл |
| 3 | 10_000 (1.00%) | 120 | Волатильная или тонкая пара с высоким риском IL |
user-flows/choosing-a-pool-type.
Частые ошибки
Pool already exists for this config— CLMM-пул уже существует для этой тройки(mint1, mint2, ammConfig). Найдите существующий ID пула и пропустите Шаг 2.Insufficient funds for amount B— Ваш кошелёк имеет запрашиваемое количествоmintA, но не хватаетmintB. Открытие позиции, когда цена находится в диапазоне, требует ликвидности с обеих сторон.Tick out of range— ВашаlowerPriceилиupperPriceвыходит за пределы представимого диапазона цен. Используйте более разумный диапазон относительно текущей цены.- Устаревшая цена — Котировка из API может быть устаревшей на 5–60 секунд. Если
executePositionне пройдёт по slippage, раскомментируйте блокgetRpcClmmPoolInfoвcreatePosition.ts, чтобы переполучить свежую цену прямо перед подписанием.
Замечания
- Position NFT — ваш единственный способ доступа. Потеряйте NFT или передайте его — потеряете доступ к позиции. Относитесь к нему как к ключу.
- Позиции вне диапазона не приносят комиссии. Если цена выходит за пределы
[lowerPrice, upperPrice], ваша позиция полностью припаркована в один актив и не приносит ничего, пока вы не перебалансируете. - Аренда tick-массива — односторонняя. Первая позиция, которая касается никогда не инициализированного tick-массива, платит его аренду; программа не предоставляет пути закрытия tick-массивов, поэтому эта аренда постоянна. Последующие позиции в том же массиве — бесплатны.
Дальше
products/clmm/overview— полная механика CLMM.products/clmm/ticks-and-positions— математика за тиками.algorithms/impermanent-loss— quantifying CLMM IL amplification.user-flows/create-clmm-pool— тот же процесс через UI Raydium.

