Documentation Index
Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
Use this file to discover all available pages before exploring further.
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
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. - Распределение миграции NFT — три целых числа (
platform_scale,creator_scale,burn_scale), которые в сумме даютRATE_DENOMINATOR_VALUE = 1_000_000и разбивают LP после градации на часть, отчеканиваемую на кошелёк NFT платформы, часть на кошелёк NFT создателя и часть, сжигаемую (Burn & Earn). Имеет значение только при градации на CPMM (migrate_type = 1). - Белый список параметров кривой —
Vec<PlatformCurveParam>, перечисляющий ровно те комбинации(supply, total_base_sell, total_quote_fund_raising, migrate_type, migrate_cpmm_fee_on, vesting_params...), которые разрешены на этой платформе. Если вектор пуст или все записи неверны, любая комбинация разрешена; в противном случае запуски должны точно совпадать с одной из записей.
create_platform_config в исходном коде для полного списка семян.)
Структура
platform_scale + creator_scale + burn_scale должны равняться 1_000_000 (проверяется MigrateNftInfo::check). Стандартные распределения в продакшене:
(0, 100_000, 900_000)— 90% LP сжигается, 10% создателю. Стандартный справедливый запуск в стиле pump.(50_000, 100_000, 850_000)— небольшая доля платформы (5%), 10% создателю, 85% сжигается.(0, 0, 1_000_000)— полное сжигание, без отчеканивания NFT. Строгие запуски «без инсайдеров».
Поля брендинга
name, web и img — это встроенные массивы байтов, дополненные нулями до их констант размера. Чтобы прочитать их как строки, обрежьте до первого \0:
name: 64, web: 256, img: 256), чтобы платформы могли включить достаточно метаданных для обозревателей и агрегаторов без обращения к off-chain хранилищу. Всё, что превышает эти размеры, отменяется при CreatePlatformConfig с ошибкой InvalidInput.
Механика комиссий
Своп на кривой, привязанной кPlatformConfig, взимает три слоя комиссий:
trade_feeнакапливается на счетуprotocol_fee_ownerпротокола (снимается черезCollectFee).platform_feeнакапливается в хранилище для каждой платформы (снимается черезClaimPlatformFeeилиClaimPlatformFeeFromVault; см.instructions).creator_feeнакапливается в хранилище для каждого создателя, ключ которого — это публичный ключ создателя + кошелёк кавычек (снимается черезClaimCreatorFee).
creator_fee_rate ограничена MAX_CREATOR_FEE_RATE = 5000 (50 bps). fee_rate (комиссия платформы) ограничена 10000 (100 bps) по GlobalConfig.max_share_fee_rate.
Распределение миграции NFT (только CPMM)
Когда запуск переходит на CPMM (migrate_type = 1, подписано migrate_to_cpswap_wallet), инструкция миграции разбивает отчеканенные LP токены тремя способами:
LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE) — владелец NFT может претендовать на накопленные комиссии CPMM бесконечно, но не может вывести базовую ликвидность. См. products/launchlab/creator-fees для потока Fee Key после градации.
Доля для сжигания отправляется в программу Lock с is_burn = true, чтобы LP токены были постоянно недоступны — они обеспечивают ценовой минимум пула без никогда не выплачивая комиссии.
Когда migrate_type = 0 (градация на AMM v4), поля распределения NFT игнорируются и весь LP блокируется / сжигается согласно отдельному потоку на стороне AMM v4.
Белый список параметров кривой
curve_params: Vec<PlatformCurveParam> — это механизм платформы для ограничения того, какие формы кривых её запуски могут выбирать. Если вектор непуст и хотя бы одна запись верна, программа принудительно проверяет при Initialize, что параметры запуска совпадают с хотя бы одной записью ровно.
u64::MAX для полей u64, u8::MAX для полей u8, 0 для полей предложения / продажи / сбора средств. BondingCurveParam со всеми дозорными символами — это «разрешить всё» — эквивалентно поведению пустого белого списка.
Алгоритм совпадения при Initialize:
- Отфильтруйте
curve_paramsк записям, чейglobal_configсовпадает с выбранным запускомGlobalConfig. - Если отфильтрованный список пуст, разрешите любые параметры (платформа ничего не добавила в белый список для этого
GlobalConfig). - Если каждая запись в отфильтрованном списке имеет
all_is_invalid()(каждое поле — подстановочный символ), разрешите любые параметры. - Иначе переберите записи; для каждой записи проверьте параметры запуска по каждому не-подстановочному полю. Если все не-подстановочные поля совпадают, примите и вернитесь.
- Если записи не совпали, откатитесь с
InvalidInput.
MAX_CURVE_PARAMS = 10 ограничивает размер белого списка.
PlatformGlobalAccess — авторизация платформы
Когда GlobalConfig имеет requires_platform_auth = 1, каждый Initialize для него должен включить PDA PlatformGlobalAccess, доказывающий предварительную авторизацию платформы:
[b"platform_global_access", global_config, platform_config].
Администратор протокола создаёт по одному на каждую пару (GlobalConfig, PlatformConfig) через CreatePlatformGlobalAccess и отзывает через ClosePlatformGlobalAccess. Без этого аккаунта запуск не может привязаться к этому GlobalConfig из закрытой платформы.
Путь чтения
PoolState.platform_config указывает напрямую на исходящий PlatformConfig — получите его один раз и кэшируйте брендинг.
Путь обновления
| Инструкция | Кто подписывает | Что изменяется |
|---|---|---|
CreatePlatformConfig | администратор платформы (один раз) | Инициализирует аккаунт с PlatformParams. |
UpdatePlatformConfig | администратор платформы | Универсальная диспетчеризация, ключ по param: u8; изменяет одно поле за вызов. Поля брендинга, ставки комиссий, кошелёк вестинга и различные кошельки — всё можно установить через это. |
UpdatePlatformCurveParam | администратор платформы | Добавить или заменить одну запись PlatformCurveParam по (global_config, index). |
RemovePlatformCurveParam | администратор платформы | Очистить одну запись (установить на все-дозорные = подстановочный символ). |
ClaimPlatformFee | platform_fee_wallet | Собрать комиссию платформы для каждого пула из PoolState.quote_vault. |
ClaimPlatformFeeFromVault | platform_fee_wallet | Собрать хранилище платформы (PDA по [platform_config, quote_mint]). |
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 unit, что именно предотвращает проверка строгого равенства. - Двойное распределение вестинга платформы. Если
platform_vesting_scale > 0, платформа должна вызватьCreatePlatformVestingAccountодин раз после окончания сбора средств запуска; если забудет, эта доля остаётся нераспределённой и неактивной навечно (бюджетtotal_locked_amountзапуска расходуется, но платформа никогда не требует). - Неоднозначность
platform_cp_creator. Когда установлен наPubkey::default(), создатель запуска записывается какpool_creatorпула CPMM после градации; когда установлен на реальный ключ, вместо него записывается этот ключ. Это влияет на то, кто может позже вызватьCPMM::CollectCreatorFee. Решите при создании конфигурации платформы, какую модель вы хотите.
Ссылки
products/launchlab/global-config— протокольные правила, которые должен удовлетворять запуск.products/launchlab/vesting— механикаplatform_vesting_scale.products/launchlab/creator-fees— NFT Fee Key, Burn & Earn.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_global_access.rs—PlatformGlobalAccess.raydium-launch/programs/launchpad/src/lib.rs—create_platform_config,update_platform_config,update_platform_curve_param,remove_platform_curve_param,create_platform_global_access,close_platform_global_access,claim_platform_fee,claim_platform_fee_from_vault.


