Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
PlatformConfig — это уровень платформы, который находится поверх GlobalConfig. Если GlobalConfig определяет правила на уровне протокола («комиссия за торговлю 1%, предложение должно быть не менее 10M, только этот кошелёк может выпуститься»), то PlatformConfig — это то, что каждая платформа запуска — pump.fun, собственный интерфейс Raydium, сторонние лаунчпады — использует для добавления своей комиссии, получения своей доли LP после выпуска, ограничения форм кривых, которые могут выбирать их запуски, и отображения своего брендинга (имя, веб-сайт, изображение) в цепи.Что это такое
АккаунтPlatformConfig управляет пятью сквозными задачами платформы:
- Брендинг — имя, веб-сайт, ссылка на изображение, всё хранится встроенным образом, чтобы любой обозреватель или агрегатор мог отобразить платформу, которая запустила токен.
- Комиссия платформы — дополнительная комиссия за торговлю (
fee_rate) поверхtrade_fee_rateпротокола. Начисляется наplatform_fee_walletплатформы. Ограничена 100 bps параметромGlobalConfig.max_share_fee_rate. - Распределение миграции LP — три сохранённых целых числа (
platform_scale,creator_scale,burn_scale), которые в сумме дают1_000_000. До обновления 2026-08-17 creator scale создавал отдельный Fee Key создателя. Миграции, выполненные после обновления, объединяют первые два в одну долю заблокированного LP, принадлежащую платформе; остаток сжигается. - Список разрешённых параметров кривой —
Vec<PlatformCurveParam>, в котором перечислены ровно те комбинации(supply, total_base_sell, total_quote_fund_raising, migrate_type, migrate_cpmm_fee_on, vesting_params...), которые разрешены на этой платформе. Если вектор пуст или все записи недействительны, любая комбинация разрешена; в противном случае запуски должны точно совпадать с одной из записей. - Список разрешённых глобальных конфигов — опциональное ограничение, требующее созданный платформой
PlatformAllowConfigдля выбранногоGlobalConfig.
create_platform_config в исходном коде для канонического списка seed’ов.)
Структура
platform_scale + creator_scale + burn_scale должны равняться 1_000_000. До обновления 2026-08-17 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).
creator_fee_rate ограничена MAX_CREATOR_FEE_RATE = 5000 (50 bps). fee_rate (комиссия платформы) ограничена 10000 (100 bps) параметром GlobalConfig.max_share_fee_rate.
Распределение миграции NFT (только CPMM)
Когда запуск выпускается в CPMM, инструкция миграции разделяет токены LP, отчеканенныеCPMM::InitializeWithPermission, двумя способами:
lp_to_platform ненулевой, программа LP-Lock оборачивает его в один Fee Key NFT, принадлежащий platform_nft_wallet. Это заменяет поведение до обновления, которое создавало отдельные Fee Keys платформы и создателя. Fee Keys, созданные миграциями, завершёнными до обновления, остаются неизменными. Это право на LP-комиссию отделено от комиссий создателя CPMM, контролируемых platform_cp_creator.
Доля сжигания сжигается напрямую, поэтому ни один аккаунт не может её вывести или потребовать LP-комиссии, представленные этой долей.
Существующие запуски с сохранённым migrate_type = 0 всё ещё могут использовать устаревший путь AMM v4. Новая инициализация отклоняет этот тип миграции.
Список разрешённых параметров кривой
curve_params: Vec<PlatformCurveParam> — это механизм платформы для ограничения форм кривых, которые могут выбирать её запуски. Если вектор непуст и хотя бы одна запись действительна, программа обеспечивает при Initialize, что параметры запуска точно совпадают с хотя бы одной записью.
u64::MAX для полей u64, u8::MAX для полей u8, 0 для полей supply / sell / fund-raising. BondingCurveParam со всеми дозорными значениями — это «разрешить всё» — эквивалент поведения пустого списка разрешённых.
Алгоритм сопоставления при Initialize:
- Отфильтруйте
curve_paramsдо записей, чейglobal_configсовпадает с выбранным запускомGlobalConfig. - Если отфильтрованный список пуст, разрешите любые параметры (платформа не внесла в список разрешённых ничего для этого
GlobalConfig). - Если каждая запись в отфильтрованном списке имеет
all_is_invalid()(каждое поле — подстановочный знак), разрешите любые параметры. - В противном случае переберите записи; для каждой записи проверьте параметры запуска против каждого не-подстановочного поля. Если все не-подстановочные поля совпадают, примите и вернитесь.
- Если ни одна запись не совпала, откатитесь с
InvalidInput.
MAX_CURVE_PARAMS = 10 ограничивает размер списка разрешённых.
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.
Частые ошибки
- Дозорные значения списка разрешённых установлены неправильно.
BondingCurveParamсtotal_locked_amount = 0не является подстановочным знаком — он совпадает с запусками, которые явно отказываются от вестинга. Подстановочный знак для этого поля —u64::MAX. Та же ловушка существует дляcliff_periodиunlock_period. Используйтеclear()(который программа предоставляет) для правильной установки дозорных значений. - Округление 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 этого записанного ключа. Решите при создании конфигурации платформы, какую модель вы хотите. - Ограничение без разрешающего аккаунта. Включение
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,PlatformCurveParam,BondingCurveParam,is_valid_curve_param.raydium-launch/programs/launchpad/src/states/platform_allow_config.rs—PlatformAllowConfig.raydium-launch/programs/launchpad/src/lib.rs— точки входа конфигурации платформы и разрешающей конфигурации.

