Skip to main content
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Этот раздел описывает предстоящее обновление программы LaunchLab. Он был проверен на локальной ветке релиза перед развёртыванием. Перед включением новых путей в production убедитесь в развёрнутой программе и опубликованном IDL.
Этот релиз позволяет использовать Token-2022 mint в качестве quote. До сих пор сторона quote была привязана к программе SPL Token, поэтому только base mint мог быть Token-2022. Теперь везде, где используется quote mint — создание GlobalConfig, инициализация пула, четыре инструкции swap, все сборы комиссий и миграция CPMM — поддерживаются обе программы, и инструкции swap учитывают комиссию за трансфер quote mint.

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

  • Quote mints могут быть Token-2022. CreateConfig принимает Token-2022 quote_token_mint, а InitializeV2 / InitializeWithToken2022 принимают обе программы в слоте quote-program. Порядок аккаунтов не меняется — меняется только значение, которое вы передаёте в этот слот.
  • Устаревший Initialize остаётся только для legacy. Его аккаунт quote-program по-прежнему типизирован под SPL Token, поэтому конфиг с Token-2022 quote mint можно запустить только через InitializeV2 или InitializeWithToken2022.
  • Границы slippage теперь соответствуют тому, что платит и получает плательщик. minimum_amount_out и maximum_amount_in теперь сравниваются с суммой за вычетом комиссии за трансфер quote mint, а не с суммой, которую переместил vault. Существующая логика расчёта цены недооценивает стоимость и переоценивает доход при использовании quote mint с комиссией.
  • Бит1 PoolState.token_program_flag становится значимым. Раньше он всегда был 0, пока quote mints были только legacy. Клиенты, которые сравнивают весь байт с 0, будут читать legacy base mint как Token-2022 всякий раз, когда quote mint является Token-2022. Это наиболее вероятный скрытый сбой в этом релизе.
  • MigrateToCpswap переименовывает два аккаунта token-program. base_token_program / quote_token_program становятся token_program / token_program_2022. Оба всегда требуются, и программа выбирает правильный для каждого mint.
  • Пары mint/program теперь валидируются. Оба swap mint получили ограничение mint::token_program, как и quote mint в ClaimPlatformFee, поэтому несовпадающая пара теперь вызывает ошибку вместо игнорирования.
  • Новая ошибка 6023 CalculateOverflow. Коды 60006022 не изменились. 6023 был освобождён в предыдущем релизе и теперь переиспользуется.
  • Fee vaults следуют за quote mint. Vault комиссий создателя и платформы, а также аккаунт токена получателя share-fee, находятся в программе, которой принадлежит quote mint.

Какие аккаунты изменили тип

Ни один из них не меняет позицию в списке аккаунтов. Меняется только допустимое значение. Initialize (устаревший путь V1) намеренно не включён в эту таблицу. Его аккаунт quote-program остаётся типизирован под SPL Token. Несколько из них также усилили ограничения на mint, поэтому несовпадающая пара mint/program теперь вызывает ошибку вместо того, чтобы быть принятой или проигнорированной:
  • Четыре инструкции swap ограничивают как base_token_mint, так и quote_token_mint программой, переданной в соответствующий слот. Раньше ни один из них не имел этого ограничения, поэтому неправильная base программа была молча принята.
  • ClaimPlatformFee добавляет то же ограничение на quote_mint.
  • ClaimPlatformFeeFromVault исправляет своё ограничение с формы token-account на форму mint для того, что является аккаунтом mint.

Учёт комиссии за трансфер на стороне quote

Это часть, которая меняет числа, а не списки аккаунтов. На quote mint без TransferFeeConfig каждая формула ниже сворачивается к предыдущему поведению, поэтому legacy пулы и пулы Token-2022 без комиссии остаются бит-в-бит неизменными. Два следствия, которые стоит сформулировать ясно:
  • Граница, вычисленная из эквивалентного пула без комиссии, больше не приемлема. BuyExactOut с cost пула без комиссии как maximum_amount_in теперь вызывает ошибку ExceededSlippage, как и SellExactIn с proceeds пула без комиссии как minimum_amount_out. Это предусмотренное поведение — старое сравнение позволяло плательщику быть дебетованным на комиссию за трансфер поверх границы, которую они уже согласовали.
  • Пул учитывает только то, что попало в vault. После BuyExactIn на amount_in на 5% quote mint, real_quote увеличивается на amount_in × 0.95, а не на amount_in.
get_transfer_inverse_fee также отказался от специального случая для mint со 100% комиссией: вместо возврата к maximum_fee он теперь возвращает новую ошибку CalculateOverflow, когда обратная комиссия не может быть вычислена. Quote mint с 10000 basis points поэтому не пройдёт exact-out пути вместо молчаливого транзакта на лимите комиссии.

Бит1 token_program_flag

PoolState.token_program_flag — это битовое поле, и всегда было:
Поле, позиции битов и код, который записывает оба бита, все предшествуют этому релизу. Что меняется, так это то, что бит1 теперь может быть 1, потому что quote mint теперь может быть Token-2022 mint. Четыре значения: Читайте программу каждого mint с помощью (token_program_flag >> bit) & 1. Любой клиент, который рассматривает байт как булево значение для base mint — flag === 0 ? Token : Token-2022 — разрешит значение 2 как Token-2022 base mint и построит base-side token account и трансфер против неправильной программы. Размер аккаунта и смещения полей не меняются, поэтому индексаторам не нужна миграция хранилища, только исправление декодирования.

Переименование аккаунтов CPMM миграции

MigrateToCpswap раньше принимал одну программу token на mint, и вызывающий решал, какая какая. Теперь он принимает обе программы безусловно и выводит отображение из самих mint: Две позиции не изменились, поэтому это изменение значения, а не изменение макета — но значения почти инвертированы, и разработчик, который продолжит передавать свою старую пару, будет передавать Token-2022 там, где требуется legacy программа, как только один из mint будет Token-2022 mint. Legacy программа по-прежнему требуется безусловно независимо от любого mint, потому что LP mint CPMM и заблокированный NFT Fee Key всегда находятся на ней. Макет remaining_accounts из релиза 2026-08-17 не изменился.

Quote mints допускаются только по усмотрению администратора

В отличие от CPMM и CLMM, LaunchLab не запускает список разрешений расширений для quote mint. CreateConfig принимает аккаунт mint как есть, поэтому единственный контроль — какие mint администратор привязывает к GlobalConfig. Проверка NoSupportExtension программы применяется исключительно к Token-2022 base mint, которые создаёт сама LaunchLab, где разрешены только MetadataPointer и TransferFeeConfig. Рассматривайте привязку Token-2022 quote mint как действие высокого доверия, по той же причине, по которой регистрация mint в реестре поддерживаемых mint CPMM/CLMM — см. reference/token-2022-support. Quote mint с TransferHook или PermanentDelegate был бы допущен во время создания конфига и затем запускался бы на, или мог бы очистить, каждый пул, котируемый в нём.

Временные ворота amm_creator_fee_on

InitializeV2 отказывается от временных ворот, которые отклоняли любой amm_creator_fee_on, отличный от BothToken, до времени обновления. Эквивалентные ворота по-прежнему присутствуют в InitializeWithToken2022. На практике оба пути принимают любое значение на mainnet-beta сегодня, потому что это время (1755522000, 2025-08-18 13:00 UTC) давно прошло — это очистка, а не изменение поведения для текущих вызывающих.

Влияние на ошибки и IDL

Коды 60006022 не изменились, включая 6022 InvalidPlatformAllowConfig. Предыдущий релиз отказался от старого 6023 и оставил его свободным; этот релиз переиспользует номер. Не декодируйте 6023 с IDL из любой более ранней версии. Обновите IDL LaunchLab перед передачей Token-2022 quote программы, декодированием бита1 token_program_flag или построением переименованного списка аккаунтов MigrateToCpswap.

Влияние на SDK

Сторона quote модуля launchpad SDK была жёстко закодирована на TOKEN_PROGRAM_ID в тех же местах, что и программа. Ветка, которая сопровождает этот релиз, вместо этого разрешает владельца quote mint, передаёт его через создание token-account, ATA получателя share-fee и слот quote-program инструкции, и добавляет опциональный transferFeeConfigB к четырём методам Curve, чтобы котировки отражали формулы выше. Результаты Curve получают поле transferFeeB; amountB сохраняет своё значение — что платит плательщик или получает продавец — поэтому quote mint без комиссии производит идентичные числа как раньше. Эти изменения SDK не выпущены. Канонический pin на страницах code-demo в этом наборе документации не изменился; проверьте опубликованную версию перед использованием новых параметров.

Эталонная реализация

Демо-код для мгновенной выборки вновь созданных конфигураций quote: raydium-sdk-V2-demo/src/grpc/launchpadPoolInfo.ts Это компактный эталон для двух вещей, которые этот релиз делает необходимыми. Пулы классифицируются прямо из token_program_flag, декодируя оба бита без выборки mint вообще — это исправление для сбоя bit1, описанного выше. Конфиги не могут быть классифицированы таким образом, потому что GlobalConfig хранит только адрес своего quote mint и никакой флаг программы, поэтому демо читает владельца аккаунта mint один раз и кэширует его на mint. Видение обоих путей рядом — это самый быстрый способ проверить ваш собственный декодер. См. products/launchlab/code-demos для пошагового руководства.

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

  • products/launchlab/accounts — token программа quote-mint, макет битов token_program_flag и владение vault.
  • products/launchlab/instructions — аккаунты quote-program, семантика slippage swap и переименованные аккаунты миграции.
  • products/launchlab/global-configquote_mint может быть Token-2022 mint, и что его контролирует, а что нет.
  • products/launchlab/code-demos — gRPC наблюдатель конфига/пула.
  • reference/token-2022-support — строка LaunchLab и раздел quote-mint.
  • reference/error-codes6023 CalculateOverflow.