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.
Esta página fue traducida automáticamente por IA. La versión en inglés es la fuente autorizada.Ver versión en inglés →
PlatformConfig es la superposición a nivel de plataforma que se sitúa encima de GlobalConfig. Mientras que GlobalConfig define las reglas a nivel de protocolo («la comisión comercial es del 1%, el suministro debe ser al menos 10M, solo esta billetera puede graduarse»), PlatformConfig es lo que cada plataforma de lanzamiento — pump.fun, la propia interfaz de Raydium, launchpads de terceros — utiliza para agregar su comisión, reclamar su porción del LP post-graduación, restringir qué formas de curva pueden elegir sus lanzamientos y mostrar su marca (nombre, sitio web, imagen) en cadena.Qué es
Una cuentaPlatformConfig gestiona cuatro aspectos transversales para una plataforma:
- Marca — nombre, sitio web, enlace de imagen, todo almacenado inline para que cualquier explorador o agregador pueda mostrar la plataforma que lanzó un token.
- Comisión de plataforma — una comisión comercial adicional (
fee_rate) además detrade_fee_ratedel protocolo. Se acumula en laplatform_fee_walletde la plataforma. Limitada a 100 bps porGlobalConfig.max_share_fee_rate. - Reparto de migración de NFT — tres números enteros (
platform_scale,creator_scale,burn_scale) que sumanRATE_DENOMINATOR_VALUE = 1_000_000y dividen el LP post-graduación en una parte acuñada en la billetera NFT de la plataforma, una parte en la billetera NFT del creador y una parte quemada (Burn & Earn). Solo tiene sentido cuando la graduación apunta a CPMM (migrate_type = 1). - Lista blanca de parámetros de curva — un
Vec<PlatformCurveParam>que lista exactamente qué combinaciones de(supply, total_base_sell, total_quote_fund_raising, migrate_type, migrate_cpmm_fee_on, vesting_params...)están permitidas en esta plataforma. Si el vector está vacío o todas las entradas son inválidas, cualquier combinación está permitida; de lo contrario, los lanzamientos deben coincidir exactamente con una de las entradas.
create_platform_config en el código fuente para la lista de semillas canónica).
Estructura
platform_scale + creator_scale + burn_scale debe ser igual a 1_000_000 (validado por MigrateNftInfo::check). Repartos comunes vistos en producción:
(0, 100_000, 900_000)— 90% LP quemado, 10% al creador. Lanzamiento justo estilo pump estándar.(50_000, 100_000, 850_000)— pequeña porción de plataforma (5%), 10% creador, 85% quemado.(0, 0, 1_000_000)— quemado completo, sin acuñaciones de NFT. Lanzamientos «sin informados» estrictos.
Campos de marca
name, web e img son matrices de bytes inline rellenadas con ceros hasta sus constantes de tamaño. Para leerlas como cadenas, corta hasta el primer \0:
name: 64, web: 256, img: 256) para que las plataformas puedan incluir suficientes metadatos para exploradores y agregadores sin recurrir a almacenamiento fuera de cadena. Cualquier cosa que exceda estos tamaños revierte en CreatePlatformConfig con InvalidInput.
Mecánica de comisiones
Un swap en una curva vinculada a unPlatformConfig cobra tres comisiones en capas:
trade_feese acumula enprotocol_fee_ownerdel protocolo (se reclama a través deCollectFee).platform_feese acumula en una bóveda por plataforma (se reclama a través deClaimPlatformFeeoClaimPlatformFeeFromVault; consultainstructions).creator_feese acumula en una bóveda por creador clave por la clave pública del creador + mint de quote (se reclama a través deClaimCreatorFee).
creator_fee_rate está limitado por MAX_CREATOR_FEE_RATE = 5000 (50 bps). fee_rate (la comisión de plataforma) está limitado a 10000 (100 bps) por GlobalConfig.max_share_fee_rate.
Reparto de migración de NFT (solo CPMM)
Cuando un lanzamiento se gradúa a CPMM (migrate_type = 1, firmado por migrate_to_cpswap_wallet), la instrucción de migración divide los tokens LP acuñados por CPMM::InitializeWithPermission en tres partes:
LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE) — el tenedor del NFT tiene derecho a reclamar comisiones CPMM acumuladas indefinidamente sin poder retirar la liquidez subyacente. Consulta products/launchlab/creator-fees para el flujo de Fee Key post-graduación.
La porción quemada se envía al programa Lock con is_burn = true para que los tokens LP sean permanentemente inaccesibles — aseguran el piso de precio del pool sin jamás devolver comisiones a nadie.
Cuando migrate_type = 0 (graduarse a AMM v4), los campos de reparto de NFT se ignoran y todo el LP se bloquea / quema según un flujo separado del lado de AMM v4.
Lista blanca de parámetros de curva
curve_params: Vec<PlatformCurveParam> es el mecanismo de la plataforma para restringir qué formas de curva pueden elegir sus lanzamientos. Si el vector es no vacío y al menos una entrada es válida, el programa requiere en Initialize que los parámetros del lanzamiento coincidan exactamente con al menos una entrada.
u64::MAX para los campos u64, u8::MAX para los campos u8, 0 para los campos de suministro / venta / recaudación. Un BondingCurveParam con todos los centinelas es «permitir cualquier cosa» — equivalente al comportamiento de lista blanca vacía.
El algoritmo de coincidencia en Initialize:
- Filtra
curve_paramsa entradas cuyaglobal_configcoincida con laGlobalConfigelegida del lanzamiento. - Si la lista filtrada está vacía, permite cualquier parámetro (la plataforma no incluyó nada en la lista blanca para esta
GlobalConfig). - Si toda entrada en la lista filtrada tiene
all_is_invalid()(cada campo es el comodín), permite cualquier parámetro. - De lo contrario, itera entradas; para cada entrada, verifica los parámetros del lanzamiento contra cada campo no comodín. Si todos los campos no comodín coinciden, acepta y retorna.
- Si ninguna entrada coincidió, revierte con
InvalidInput.
MAX_CURVE_PARAMS = 10 limita el tamaño de la lista blanca.
PlatformGlobalAccess — autorizando una plataforma
Cuando un GlobalConfig tiene requires_platform_auth = 1, cada Initialize contra él debe incluir un PDA PlatformGlobalAccess probando que la plataforma ha sido pre-autorizada:
[b"platform_global_access", global_config, platform_config].
El administrador del protocolo crea uno de estos por par (GlobalConfig, PlatformConfig) vía CreatePlatformGlobalAccess y lo revoca vía ClosePlatformGlobalAccess. Sin esta cuenta, un lanzamiento no puede vincularse a ese GlobalConfig desde la plataforma restringida.
Ruta de lectura
PoolState.platform_config apunta directamente al PlatformConfig originador — descárgalo una vez y cachea la marca.
Ruta de actualización
| Instrucción | Quién firma | Qué cambia |
|---|---|---|
CreatePlatformConfig | administrador de plataforma (una sola vez) | Inicializa la cuenta con PlatformParams. |
UpdatePlatformConfig | administrador de plataforma | Dispatch genérico clave por param: u8; muta un campo por llamada. Los campos de marca, tasas de comisión, cartera de vesting y las diversas carteras son todos configurables a través de esto. |
UpdatePlatformCurveParam | administrador de plataforma | Agrega o reemplaza una entrada PlatformCurveParam por (global_config, index). |
RemovePlatformCurveParam | administrador de plataforma | Limpia una entrada (la establece en todos-centinela = comodín). |
ClaimPlatformFee | platform_fee_wallet | Barre la comisión de plataforma por pool desde PoolState.quote_vault. |
ClaimPlatformFeeFromVault | platform_fee_wallet | Barre la bóveda de comisión por plataforma (PDA en [platform_config, quote_mint]). |
platform_fee_wallet, platform_nft_wallet, platform_vesting_wallet, platform_cp_creator, transfer_fee_extension_auth, cpswap_config) todas van a través de UpdatePlatformConfig. Lee la tabla de dispatch de update_platform_config del código fuente para los códigos param exactos.
Trampas comunes
- Centinelas de lista blanca mal configurados. Un
BondingCurveParamcontotal_locked_amount = 0no es un comodín — coincide con lanzamientos que explícitamente optan por no usar vesting. El comodín para ese campo esu64::MAX. La misma trampa existe paracliff_periodyunlock_period. Usaclear()(que el programa expone) para establecer centinelas correctamente. - Redondeo de reparto de NFT. Las tres escalas deben sumar exactamente
1_000_000. Los errores de uno enCreatePlatformConfigrevierten; los errores de uno en tiempo de ejecución acuñarían o quemarían una unidad de LP extra, que es para lo que existe la verificación de igualdad estricta. - Doble asignación de vesting de plataforma. Si
platform_vesting_scale > 0, la plataforma debe llamar aCreatePlatformVestingAccountuna sola vez después de que termine la recaudación del lanzamiento; si lo olvida, esa porción permanece sin asignar e inactiva para siempre (el presupuestototal_locked_amountdel lanzamiento se consume pero la plataforma nunca lo reclama). - Ambigüedad de
platform_cp_creator. Cuando se establece enPubkey::default(), el creador del lanzamiento se registra comopool_creatordel pool CPMM post-graduación; cuando se establece en una clave real, esa clave se registra en su lugar. Esto afecta quién puede llamar aCPMM::CollectCreatorFeedespués. Decide en el momento de la creación de config de plataforma qué modelo quieres.
Referencias
products/launchlab/global-config— reglas del lado del protocolo que un lanzamiento debe satisfacer.products/launchlab/vesting— mecánica deplatform_vesting_scale.products/launchlab/creator-fees— NFT de Fee Key, Burn & Earn.products/launchlab/platforms— guía de integrador de plataforma.
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.


