Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
PlatformConfig — это уровень платформы, который накладывается на GlobalConfig. Если GlobalConfig определяет правила на уровне протокола («торговая комиссия 1%, минимальное предложение 10M, только этот кошелёк может выпустить»), то PlatformConfig — это то, что каждая платформа запуска (pump.fun, собственный интерфейс Raydium, сторонние лаунчпады) использует для добавления своей комиссии, получения своей доли LP после выпуска, ограничения параметров запуска, которые могут выбрать их запуски, и отображения своего брендинга (имя, веб-сайт, изображение) в цепи.Что это такое
АккаунтPlatformConfig управляет пятью сквозными функциями платформы:
- Брендинг — имя, веб-сайт, ссылка на изображение, всё хранится встроенным образом, чтобы любой обозреватель или агрегатор мог отобразить платформу, запустившую токен.
- Комиссия платформы — дополнительная торговая комиссия (
fee_rate) поверхtrade_fee_rateпротокола. Начисляется наplatform_fee_walletплатформы. Ограничена 500 bps (50000) как при создании, так и при обновлении, повышена с 100 bps (10000) 26 августа 2026 г. — см. Ограничения ставок. - Распределение миграции LP — три сохранённых целых числа (
platform_scale,creator_scale,burn_scale), которые в сумме дают1_000_000. До обновления от 17 августа 2026 г. масштаб создателя создавал отдельный Fee Key создателя. Миграции, выполненные после обновления, объединяют первые два в одну долю заблокированного LP, принадлежащую платформе; остаток сжигается. - Правила параметров запуска — опциональное ограничение (
restrict_curve_param), требующее, чтобы запуск удовлетворял аккаунтуPlatformCurveRuleвыбранногоGlobalConfig. Правила поддерживают диапазоны значений, альтернативные уровни и ограничения по типам токенов; они находятся в отдельных аккаунтах, а не наPlatformConfig. - Список разрешённых глобальных конфигов — опциональное ограничение, требующее
PlatformAllowConfig, созданный платформой, для выбранногоGlobalConfig.
create_platform_config в исходном коде для канонического списка seed’ов.)
Структура
Vec<PlatformCurveParam>, который переместил параметры запуска в аккаунты PlatformCurveRule; restrict_curve_param, curve_rule_manager и 4 байта, которые занимал префикс длины vec’а, выходят из padding’а, поэтому размер в байтах и все более ранние смещения полей остаются неизменными. См. запись в журнале изменений для информации о том, что должны изменить декодеры.
platform_scale + creator_scale + burn_scale должны равняться 1_000_000. До обновления от 17 августа 2026 г. creator_scale был заблокирован отдельно и его Fee Key переходил создателю токена. Для миграций, выполненных после обновления, он добавляется к platform_scale и его права на заблокированный LP переходят платформе. Примеры результатов при обновлённой логике:
(0, 100_000, 900_000)— 90% LP сжигается, 10% заблокировано для платформы.(50_000, 100_000, 850_000)— 85% сжигается, 15% заблокировано для платформы.(0, 0, 1_000_000)— полное сжигание, без отчеканки NFT. Строгие запуски «без инсайдеров».
Поля брендинга
name, web и img — это встроенные массивы байтов, дополненные нулями до размера констант. Чтобы прочитать их как строки, срежьте до первого \0:
name: 64, web: 256, img: 256), чтобы платформы могли включить достаточно метаданных для обозревателей и агрегаторов без обращения к хранилищу вне цепи. Всё, что превышает эти размеры, откатывается при CreatePlatformConfig с InvalidInput.
Механика комиссий
Своп на кривой, привязанной кPlatformConfig, взимает три многоуровневые комиссии:
trade_feeначисляется наprotocol_fee_ownerпротокола (взимается черезCollectFee).platform_feeначисляется на хранилище для каждой платформы (взимается черезClaimPlatformFeeилиClaimPlatformFeeFromVault; см.instructions).creator_feeначисляется на хранилище для каждого создателя, ключ которого — публичный ключ создателя + quote mint (взимается черезClaimCreatorFee).
Ограничения ставок
Обе ставки обозначены в1/1_000_000, поэтому 5000 — это 50 bps, а 50000 — это 500 bps.
Две точки применения для
fee_rate — это отдельные вызовы require! в разных файлах, поэтому они несут разные коды ошибок, но применяют одинаковый потолок. Платформа, созданная при любой разрешённой ставке, может быть отредактирована позже, включая через вариант AllInfo массового обновления, который переписывает каждое поле сразу.
Оба ограничения fee_rate первоначально составляли 100 bps (10000). Ограничение обновления переместилось на 25000 (250 bps) 27 января 2026 г.; 26 августа 2026 г. оба переместились на 50000 (500 bps) — см. запись в журнале изменений.
GlobalConfig.max_share_fee_rate не ограничивает ни одну из этих ставок. Он ограничивает аргумент share_fee_rate для каждой транзакции, который принимают четыре инструкции своп — реферальную комиссию — и ничего больше. См. global-config.
Authority для передачи комиссий Token-2022
transfer_fee_extension_auth называет ключ платформы, который в итоге будет держать TransferFeeConfig authority’ты базового mint’а, когда запуск создаётся через InitializeWithToken2022 с прикреплённой комиссией за передачу. Расширение несёт две authority’та, и они передаются в разные моменты жизненного цикла запуска:
До 27 августа 2026 г. mint был создан с PDA
authority на обеих authority’та, и оба переместились на платформу при выпуске. Программа не предоставляет инструкцию для вывода удержанных средств или сбора, поэтому комиссии, удержанные во время фазы кривой связи, были недоступны до выпуска запуска. Запись стороны вывода при создании mint делает их доступными для взимания с первого своп’а — см. запись в журнале изменений.
Два следствия, которые стоит учитывать:
- Установите поле перед запуском, а не после. Запуск, созданный, пока
transfer_fee_extension_auth— этоPubkey::default(), помещает PDAauthorityна сторону вывода. Установка поля позже всё ещё работает — выпуск находит PDA на месте и передаёт authority — но ничто не может вывести удержанный баланс в то время. - Ротация поля между запуском и выпуском разделяет две authority’та. Измените
transfer_fee_extension_authмежду созданием запуска и его выпуском, и authority вывода удержанных средств mint’а остаётся с ключом, настроенным при создании (PDA больше его не держит, поэтому миграция пропускает эту передачу), в то время как authority конфига комиссии переходит на новый ключ. Ротируйте между запусками или планируйте согласовать два ключа самостоятельно через Token-2022 напрямую.
Pubkey::default() на всю жизнь запуска, держит обе authority’та на PDA authority навсегда: ставка комиссии никогда не может быть изменена и удержанный баланс никогда не может быть выведен. Прикрепляйте комиссию за передачу к запуску только если платформа намеревается держать эти ключи.
Распределение миграции NFT (только CPMM)
Когда запуск выпускается в CPMM, инструкция миграции разделяет токены LP, отчеканенныеCPMM::InitializeWithPermission, двумя способами:
lp_to_platform ненулевой, программа LP-Lock оборачивает его в один Fee Key NFT, принадлежащий platform_nft_wallet. Это заменяет поведение до обновления, которое создавало отдельные Fee Key’и платформы и создателя. Fee Key’и, созданные миграциями, завершёнными до обновления, остаются неизменными. Это право на комиссию LP отделено от комиссий создателя CPMM, контролируемых platform_cp_creator.
Доля сжигания сжигается напрямую, поэтому ни один аккаунт не может вывести её или потребовать комиссии LP, представленные этой долей.
Существующие запуски с сохранённым migrate_type = 0 всё ещё могут использовать путь наследия AMM v4. Новая инициализация отклоняет этот тип миграции.
Правила параметров запуска
restrict_curve_param — это переключатель. При 0 программа вообще не читает правила. При 1 каждый запуск, маршрутизируемый через эту платформу, должен удовлетворять аккаунту PlatformCurveRule выбранного GlobalConfig, и построитель запуска должен добавить этот аккаунт в remaining_accounts.
(field, op, value), поддерживающая Eq, Gte, Lte и Neq. Это охватывает диапазоны значений, альтернативные уровни, ограничения оценки выпуска, минимумы миграции, ограничения по типам токенов и ограниченные по времени группы — полная модель, таблица полей и девять отработанных сценариев находятся в products/launchlab/curve-rules.
Две вещи принадлежат здесь, а не на той странице:
curve_rule_manager— это делегирование, а не передача. Установите его черезUpdatePlatformConfig::CurveRuleManagerи этот кошелёк может создавать, обновлять, удалять и закрывать аккаунты правил этой платформы без ключа администратора. Администратор платформы сохраняет ту же власть параллельно, поэтому ротация или очистка поля восстанавливает контроль.Pubkey::default()означает, что только администратор может управлять правилами. Он не может переключитьrestrict_curve_param, который остаётся вызовом только администратора.- Правила применяются поверх
GlobalConfig, никогда вместо него. Проверка правила выполняется перед собственными ограничениями конфига и может только их сужать.
curve_params: Vec<PlatformCurveParam>, который мог только тестировать точное равенство, содержал максимум 10 записей во всех конфигах и увеличивал сам аккаунт PlatformConfig. Платформы, которые его использовали, были перенесены протоколом в одноразовом проходе; устаревшее поле, его две инструкции и MAX_CURVE_PARAMS удалены.
PlatformAllowConfig — ограничение платформы
Каждая платформа решает, ограничивать ли, какие аккаунты GlobalConfig могут использовать её запуски. Установите restrict_global_config с UpdatePlatformConfig::RestrictGlobalConfig(0 | 1).
[b"platform_allow_config", platform_config, global_config].
Администратор платформы создаёт или закрывает один аккаунт на разрешённую пару через CreatePlatformAllowConfig и ClosePlatformAllowConfig. Когда ограничение 1, инициализация ищет в remaining_accounts ожидаемый PDA и отклоняет отсутствующий аккаунт с NotEnoughRemainingAccounts. Когда ограничение 0, аккаунт разрешения не требуется.
Управляемый администратором протокола аккаунт PlatformGlobalAccess и его инструкции создания/закрытия сняты с производства. Существующие размеры PlatformConfig и GlobalConfig не изменяются, но декодеры должны заменить старый глобальный флаг на новый флаг платформы. Старые PDA доступа не потребляются новой проверкой.
Путь чтения
PoolState.platform_config указывает на исходящий PlatformConfig напрямую — получите его один раз и кэшируйте брендинг.
Путь обновления
Ротации кошельков (
platform_fee_wallet, platform_nft_wallet, platform_vesting_wallet, platform_cp_creator, transfer_fee_extension_auth, cpswap_config) все проходят через UpdatePlatformConfig. Прочитайте таблицу диспетчеризации update_platform_config в исходном коде для точных кодов param.
Частые ошибки
restrict_curve_paramвключён до обновления построителя. Пока он1, PDA правила должен быть вremaining_accountsпри каждом запуске, даже для конфига без аккаунта правила — отсутствующий аккаунт — этоNotEnoughRemainingAccounts, а не пропуск. Сначала отправьте изменение построителя, затем переключите флаг.restrict_curve_paramвключён с пустым правилом. Правило, содержащее нулевые группы, или группа, содержащая нулевые ограничения, разрешает всё. Включение флага само по себе не является ограничением; напишите группы сначала, проверьте их с помощью проверки SDK и отрепетируйте всю последовательность на devnet.- Округление распределения NFT. Три масштаба должны в сумме равняться ровно
1_000_000. Ошибки на единицу приCreatePlatformConfigоткатываются; ошибки на единицу во время выполнения отчеканили бы или сожгли бы одну дополнительную единицу LP, что и предотвращает проверка строгого равенства. - Двойное распределение вестинга платформы. Если
platform_vesting_scale > 0, платформа должна вызватьCreatePlatformVestingAccountодин раз после окончания сбора средств запуска; если она забудет, эта доля остаётся нераспределённой и неактивной навсегда (бюджетtotal_locked_amountзапуска потребляется, но платформа никогда не требует). - Неоднозначность
platform_cp_creator. Когда установлено наPubkey::default(), создатель запуска записывается какpool_creatorпула CPMM после выпуска; когда установлено на реальный ключ, вместо этого записывается этот ключ. Это определяет получателя комиссий создателя CPMM после выпуска и кто может подписать исходный путьCPMM::CollectCreatorFee. Путь сбора без разрешения всё ещё платит канонические ATA’ы этого записанного ключа. Решите при создании конфига платформы, какую модель вы хотите. transfer_fee_extension_authустановлен поздно или ротирован. Поле читается дважды на запуск Token-2022 — один раз при создании mint дляwithdraw_withheld_authority, один раз при выпуске дляtransfer_fee_config_authority— поэтому значение, которое изменяется между этими двумя моментами, оставляет две authority’та на разных ключах. См. Authority для передачи комиссий Token-2022.- Ограничение без аккаунта разрешения. Включение
restrict_global_configперед созданием требуемогоPlatformAllowConfigблокирует новые запуски, которые выбирают этот конфиг.
Ссылки
products/launchlab/global-config— правила на уровне протокола, которые должен удовлетворять запуск.products/launchlab/vesting— механикаplatform_vesting_scale.products/launchlab/creator-fees— комиссии создателя против прав Fee Key платформы.products/launchlab/platforms— руководство интегратора платформы.
raydium-launch/programs/launchpad/src/states/platform_config.rs—PlatformConfig,PlatformParams,MigrateNftInfo,is_curve_rule_manager,is_platform_admin.raydium-launch/programs/launchpad/src/states/platform_curve_rule.rs—PlatformCurveRule,CurveRuleGroup,ParamConstraint.raydium-launch/programs/launchpad/src/states/platform_allow_config.rs—PlatformAllowConfig.raydium-launch/programs/launchpad/src/instructions/platform/update_platform_config.rs— диспетчеризацияPlatformConfigParamи установщики для каждого поля, которые применяют ограничения ставок во время обновления.raydium-launch/programs/launchpad/src/lib.rs— точки входа конфига платформы и конфига разрешения.raydium-launch/programs/launchpad/src/instructions/initialize_with_token_2022.rs— гдеtransfer_fee_extension_authзаписывается вTransferFeeConfigнового mint’а.raydium-launch/programs/launchpad/src/instructions/admin/migrate_to_cpswap.rs— передача authority во время выпуска и её защитаget_withdraw_withheld_authority.

