Skip to main content
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Что это делает. Создает новый пул CPMM для двух указанных вами монет, выбирает уровень комиссии 0,25%, инициализирует ликвидность по цене, определяемой начальными суммами, и выводит ID нового пула и подпись транзакции.

Подготовка

Убедитесь, что вы прочитали Предварительные требования быстрого старта и у вас установлены RPC_URL, KEYPAIR и необходимые зависимости. Также необходимо пополнить кошелек начальными суммами обеих монет, плюс достаточно SOL для покрытия единовременной комиссии за создание пула и аренды аккаунта (~0,19 SOL всего на mainnet — см. reference/fee-comparison для разбивки аренды/комиссии или ray/protocol-fees только для комиссии). Запуск на devnet. Просто переключение cluster на "devnet" недостаточно. Этот скрипт использует два именованных импорта, которые не следуют за cluster: programId: CREATE_CPMM_POOL_PROGRAM и poolFeeAccount: CREATE_CPMM_POOL_FEE_ACC, оба константы mainnet. Импортируйте DEVNET_PROGRAM_ID из SDK и используйте вместо них DEVNET_PROGRAM_ID.CREATE_CPMM_POOL_PROGRAM и DEVNET_PROGRAM_ID.CREATE_CPMM_POOL_FEE_ACC — тот же паттерн, что использует скрипт CLMM.

Скрипт

Сохраните как create-cpmm.mjs:
create-cpmm.mjs

Запуск

Пример: создание пула SOL/USDC с начальной суммой 1 SOL и 160 USDC:
Ожидаемый результат:

Что произошло

  1. getCpmmConfigs получила актуальный список уровней комиссий с api-v3.raydium.io и выбрала индекс 0 (уровень 0,25% — см. reference/fee-comparison для полного набора).
  2. getTokenInfo разрешила метаданные каждой монеты, включая то, какая программа токенов ею владеет. CPMM принимает как SPL Token, так и Token-2022 монеты; SDK маршрутизирует автоматически.
  3. createPool построила одну транзакцию, которая:
    • сортирует монеты в каноническом порядке,
    • выводит PDA пула, хранилища, LP монету и полномочия,
    • платит единовременную create_pool_fee на CREATE_CPMM_POOL_FEE_ACC,
    • создает ATA вызывающей стороны, если они отсутствуют,
    • инициализирует хранилища с AMOUNT_A и AMOUNT_B.
  4. Начальная цена устанавливается по соотношению начальных сумм: price = AMOUNT_B / AMOUNT_A после корректировки десятичных знаков. Выбирайте это тщательно — боты будут арбитражировать любое неправильное ценообразование в течение секунд после открытия пула.
  5. startTime: new BN(0) открывает торговлю немедленно. Чтобы подготовить ликвидность перед открытием для публики, установите будущую временную метку Unix.

Частые ошибки

  • pool already exists — Пул уже существует для этой пары монет на этом уровне комиссии. Проверьте перед созданием.
  • insufficient funds — Ваш кошелек не имеет достаточно MINT_A, MINT_B или SOL (для комиссии создания пула + аренды).
  • Token-2022 extension not supported — Одна из ваших монет использует расширение, которое CPMM не поддерживает. См. reference/token-2022-support.

После развертывания

Вы можете сразу же совершать обмены в новом пуле — скрипт Swap from CLI принимает ваш новый POOL_ID напрямую. Агрегаторы (Jupiter и т. д.) индексируют новый пул в течение нескольких минут.

Далее