Skip to main content
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Этот пункт описывает обновление программы CPMM, запланированное на 2026-10-30. Оно было проверено на ветке feat/initialize-v2 репозитория raydium-cp-swap (коммит 40cbd81) перед развёртыванием. Прежде чем полагаться на новую инструкцию, убедитесь в развёрнутой программе.
У каждого пула CPMM есть флаг enable_creator_fee и сторона creator_fee_on, обе фиксируются при создании. До сих пор создатель мог задать их только через InitializeWithPermission, для которой нужен выданный администратором PDA Permission. Публичная Initialize всегда сохраняла комиссию выключенной. На практике только выпуски LaunchLab и другие закрытые потоки могли создать пул, взимающий комиссию создателя. Этот релиз добавляет InitializeV2. Это Initialize с одним дополнительным аргументом, creator_fee_on: Option<CreatorFeeOn>, и вызвать её может кто угодно. Математика пула, своп, ликвидность, сбор комиссий и доля протокола в комиссии создателя не затронуты.

TL;DR для интеграторов

  • Новая инструкция: InitializeV2. Без разрешений. Аргументы: init_amount_0, init_amount_1, open_time и creator_fee_on: Option<CreatorFeeOn>. Дискриминатор [67, 153, 175, 39, 218, 16, 38, 32].
  • Some(side) включает комиссию создателя с этой стороны; None оставляет её выключенной. None сохраняет ровно то же, что сохраняет Initialize.
  • Те же учётные записи, что у Initialize, без rent. Первые 19 учётных записей идентичны и идут в том же порядке. См. список учётных записей.
  • Создатель — это подписант. pool_state.pool_creator — подписывающий creator. В отличие от InitializeWithPermission, получателя нельзя назначить на другой адрес.
  • Создатель выбирает включение/выключение и сторону, но не ставку. Пул взимает AmmConfig.creator_fee_rate своего уровня комиссий. По умолчанию эта ставка равна 0, поэтому на таком уровне пул с включённой комиссией ничего не накапливает.
  • Ничего существующего не изменилось. Initialize и InitializeWithPermission сохраняют свои дискриминаторы, учётные записи, аргументы и поведение. Ни макет учётной записи, ни код ошибки не изменились.
  • Обновите IDL, чтобы получить новую инструкцию. Клиентам, которые её не вызывают, ничего менять не нужно.

Что изменилось в программе

Новая инструкция: InitializeV2

InitializeV2 выполняет тот же код создания, что и Initialize. Она:
  • принимает в качестве pool_state либо канонический PDA пула, либо подписанную случайную пару ключей;
  • применяет те же проверки списка разрешённых расширений Token-2022 и SupportMintAssociated через remaining_accounts;
  • отклоняет создание, когда установлен amm_config.disable_create_pool;
  • увеличивает open_time до block_timestamp + 1, если он не в будущем;
  • блокирует 100 базовых единиц LP и выпускает остаток создателю;
  • взимает amm_config.create_pool_fee.
Единственное отличие — что она записывает в новый PoolState: Неверный байт тега или варианта не проходит десериализацию аргументов Anchor. Новый код ошибки не задействован.

Сравнение трёх путей создания

Внутренний рефакторинг

Три обработчика теперь используют общую процедуру initialize_pool. Рефакторинг не меняет учётные записи, аргументы, проверки или сохраняемые значения Initialize и InitializeWithPermission. Новые тесты также проверяют, что обычная Initialize на той же конфигурации по-прежнему сохраняет комиссию создателя выключенной.

Что нужно знать создателям

  • Сначала проверьте уровень комиссий. Ставка комиссии создателя принадлежит AmmConfig, а не пулу. Выберите уровень, чей creator_fee_rate соответствует тому, что вы хотите взимать. Ставки перечислены в products/cpmm/fees.
  • Выбор постоянен. Ни одна инструкция не меняет enable_creator_fee или creator_fee_on после создания. Чтобы изменить его, нужно создать новый пул.
  • Трейдеры платят её сверх торговой комиссии. Комиссия создателя — отдельная ставка, добавляемая к свопу. Она не уменьшает доли LP, протокола или фонда, но делает торговлю с пулом дороже, чем с пулом того же уровня с выключенной комиссией.
  • Сбор не изменился. Используйте CollectCreatorFee или CollectCreatorFeePermissionless. Доля протокола из релиза 2026-09-19 применяется, и отказаться от неё при создании нельзя.

Примечания по миграции

  • Создатели пулов. Переходите с Initialize на InitializeV2, только если хотите включить комиссию создателя. Передайте Some(side) и уберите учётную запись rent. Initialize продолжает работать.
  • Пользователи SDK. raydium.cpmm.createPool в @raydium-io/raydium-sdk-v2@0.2.64-alpha собирает Initialize. Пока не выйдет релиз со сборщиком InitializeV2, кодируйте её из обновлённого IDL.
  • Индексаторы и маршрутизаторы. Ожидайте больше пулов с enable_creator_fee = true, созданных обычными кошельками, а не LaunchLab. Котируйте по собственным enable_creator_fee и creator_fee_on каждого пула, никогда только по пути создания или уровню. Декодируйте новую инструкцию, если отслеживаете создание пулов по инструкциям. Отслеживание по учётным записям PoolState изменений не требует.
  • UI. Показывайте, взимает ли пул комиссию создателя и по какой ставке, поскольку два пула одного уровня теперь могут различаться.
  • LaunchLab и другие разрешённые потоки. Без изменений. InitializeWithPermission по-прежнему остаётся путём, когда плательщик и записанный создатель должны различаться.

Что не изменилось

  • Все макеты учётных записей, включая PoolState и AmmConfig.
  • Initialize и InitializeWithPermission: дискриминаторы, учётные записи, аргументы и сохраняемые значения.
  • Permission, CreatePermissionPda и ClosePermissionPda.
  • Математика свопа, депозита и вывода, взимание комиссии создателя и доля протокола в комиссии создателя.
  • Коды ошибок. 6000–6015 не изменились; ничего не добавлено.
  • ID программы.

Обновлённые страницы

  • products/cpmm/instructions: баннер обновления; строки сводки и матрицы изменений состояния; новый раздел InitializeV2 с аргументами, кодированием и списком учётных записей; постусловие Initialize теперь указывает на InitializeV2.
  • products/cpmm/fees: раздел «Комиссия создателя» перечисляет все три пути создания и отмечает, что включение комиссии не задаёт её ставку.
  • products/cpmm/accounts: примечания о poolState и ID пула; примечания о полях creator_fee_on / enable_creator_fee; примечание о Permission; строка жизненного цикла учётных записей.
  • products/cpmm/overview: выноска «Что нового» и пункт «Предсказуемые комиссии».
  • products/cpmm/code-demos: примечание о том, что createPool собирает Initialize, и как перейти к InitializeV2.
  • protocol-overview/shared-infrastructure: комиссии создателя больше не ограничены пулами, выпущенными LaunchLab.
  • reference/token-2022-support: пути создания пулов CPMM.
Проверено на: ветка raydium-cp-swap feat/initialize-v2 (40cbd81): programs/cp-swap/src/lib.rs, instructions/initialize_v2.rs, instructions/initialize.rs, instructions/initialize_with_permission.rs, instructions/mod.rs, states/pool.rs и tests/initialize_v2.test.ts.