Skip to main content
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 de todo el protocolo («la comisión de intercambio 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 añadir su comisión, reclamar su porción de 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 cuenta PlatformConfig gestiona cinco aspectos transversales para una plataforma:
  1. Marca — nombre, sitio web, enlace de imagen, todo almacenado en línea para que cualquier explorador o agregador pueda mostrar la plataforma que lanzó un token.
  2. Comisión de plataforma — una comisión de intercambio adicional (fee_rate) además de la trade_fee_rate del protocolo. Se acumula en la platform_fee_wallet de la plataforma. Limitada a 100 bps por GlobalConfig.max_share_fee_rate.
  3. División de migración de LP — tres enteros almacenados (platform_scale, creator_scale, burn_scale) que suman 1_000_000. Antes de la actualización del 2026-08-17, la escala del creador producía una Fee Key de creador separada. Las migraciones ejecutadas después de la actualización combinan las dos primeras en una participación de LP bloqueada propiedad de la plataforma; el resto se quema.
  4. Lista blanca de parámetros de curva — un Vec<PlatformCurveParam> que enumera 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.
  5. Lista blanca de configuración global — una restricción opcional que requiere un PlatformAllowConfig creado por la plataforma para la GlobalConfig seleccionada.
Derivación de PDA:
(Consulta create_platform_config en el código fuente para la lista de semillas canónica.)

Diseño

platform_scale + creator_scale + burn_scale debe ser igual a 1_000_000. Antes de la actualización del 2026-08-17, creator_scale se bloqueaba por separado y su Fee Key iba al creador del token. Para migraciones ejecutadas después de la actualización, se suma a platform_scale y sus derechos de LP bloqueado van a la plataforma en su lugar. Ejemplos de resultados bajo la lógica actualizada:
  • (0, 100_000, 900_000) — 90% de LP quemado, 10% bloqueado para la plataforma.
  • (50_000, 100_000, 850_000) — 85% quemado, 15% bloqueado para la plataforma.
  • (0, 0, 1_000_000) — quema completa, sin acuñación de NFT. Lanzamientos estrictos «sin insiders».

Campos de marca

name, web e img son matrices de bytes en línea rellenadas con ceros hasta sus constantes de tamaño. Para leerlas como cadenas, corta hasta el primer \0:
Las constantes son deliberadamente generosas (name: 64, web: 256, img: 256) para que las plataformas puedan incluir suficientes metadatos para exploradores y agregadores sin tocar almacenamiento fuera de cadena. Cualquier cosa que exceda estos tamaños revierte en CreatePlatformConfig con InvalidInput.

Mecánica de comisiones

Un intercambio en una curva vinculada a un PlatformConfig cobra tres comisiones en capas:
  • trade_fee se acumula en el protocol_fee_owner del protocolo (reclamado vía CollectFee).
  • platform_fee se acumula en una bóveda por plataforma (reclamado vía ClaimPlatformFee o ClaimPlatformFeeFromVault; consulta instructions).
  • creator_fee se acumula en una bóveda por creador con clave del pubkey del creador + mint de cotización (reclamado vía ClaimCreatorFee).
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.

División de migración de NFT (solo CPMM)

Cuando un lanzamiento se gradúa a CPMM, la instrucción de migración divide los tokens de LP acuñados por CPMM::InitializeWithPermission de dos formas:
Si lp_to_platform es distinto de cero, el programa LP-Lock lo envuelve en una Fee Key NFT propiedad de platform_nft_wallet. Esto reemplaza el comportamiento anterior a la actualización que creaba Fee Keys separadas de plataforma y creador. Las Fee Keys creadas por migraciones completadas antes de la actualización permanecen sin cambios. Este derecho de comisión de LP es separado de las comisiones de creador de CPMM controladas por platform_cp_creator. La porción de quema se quema directamente, por lo que ninguna cuenta puede retirarla o reclamar las comisiones de LP representadas por esa participación. Los lanzamientos existentes con migrate_type = 0 almacenado aún pueden usar la ruta heredada de AMM v4. La nueva inicialización rechaza ese tipo de migración.

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 no está vacío y al menos una entrada es válida, el programa aplica en Initialize que los parámetros del lanzamiento coincidan exactamente con al menos una entrada.
Cada campo tiene un valor centinela que significa comodín (cualquier valor coincide): u64::MAX para los campos u64, u8::MAX para los campos u8, 0 para los campos de suministro / venta / recaudación de fondos. Un BondingCurveParam con todos los centinelas es «permitir cualquier cosa» — equivalente al comportamiento de lista blanca vacía. El algoritmo de coincidencia en Initialize:
  1. Filtra curve_params a entradas cuya global_config coincida con la GlobalConfig elegida del lanzamiento.
  2. Si la lista filtrada está vacía, permite cualquier parámetro (la plataforma no incluyó en la lista blanca nada para esta GlobalConfig).
  3. Si cada entrada en la lista filtrada tiene all_is_invalid() (cada campo es el comodín), permite cualquier parámetro.
  4. De lo contrario, itera entradas; para cada entrada, verifica los parámetros del lanzamiento contra cada campo que no sea comodín. Si todos los campos que no son comodín coinciden, acepta y retorna.
  5. Si ninguna entrada coincidió, revierte con InvalidInput.
Esto permite que una plataforma diga «solo permitimos la forma estándar de 1B de suministro / 800M vendidos / 30k USDC de recaudación / sin vesting» escribiendo una única entrada con valores concretos para esos cuatro campos y comodines en todos lados. O una plataforma más estricta podría enumerar tres o cuatro formas discretas, una por nivel de lanzamiento soportado. MAX_CURVE_PARAMS = 10 limita el tamaño de la lista blanca.

PlatformAllowConfig — restricción de una plataforma

Cada plataforma decide si restringir qué cuentas GlobalConfig pueden usar sus lanzamientos. Establece restrict_global_config con UpdatePlatformConfig::RestrictGlobalConfig(0 | 1).
Semillas de PDA: [b"platform_allow_config", platform_config, global_config]. El administrador de la plataforma crea o cierra una cuenta por par permitido vía CreatePlatformAllowConfig y ClosePlatformAllowConfig. Cuando la restricción es 1, la inicialización busca en remaining_accounts el PDA esperado y rechaza una cuenta faltante con NotEnoughRemainingAccounts. Cuando la restricción es 0, no se requiere cuenta de permiso. La antigua cuenta PlatformGlobalAccess administrada por el administrador del protocolo y sus instrucciones de crear/cerrar se retiran. Los tamaños existentes de PlatformConfig y GlobalConfig no cambian, pero los decodificadores deben reemplazar la antigua bandera global con la nueva bandera de plataforma. Los antiguos PDAs de acceso no se consumen por la nueva verificación.

Ruta de lectura

Para una interfaz que muestre «desde dónde se lanzó este token», PoolState.platform_config apunta directamente a la PlatformConfig originaria — obtén la información una vez y almacena en caché la marca.

Ruta de actualización

Las rotaciones de billetera (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 envío de update_platform_config del código fuente para los códigos exactos de param.

Trampas comunes

  • Centinelas de lista blanca mal configurados. Un BondingCurveParam con total_locked_amount = 0 no es un comodín — coincide con lanzamientos que explícitamente optan por no usar vesting. El comodín para ese campo es u64::MAX. La misma trampa existe para cliff_period y unlock_period. Usa clear() (que el programa expone) para establecer los centinelas correctamente.
  • Redondeo de división de NFT. Las tres escalas deben sumar exactamente 1_000_000. Los errores de uno en CreatePlatformConfig revierten; los errores de uno en tiempo de ejecución acuñarían o quemarían una unidad de LP adicional, que es lo que la verificación de igualdad estricta está ahí para prevenir.
  • Doble asignación de vesting de plataforma. Si platform_vesting_scale > 0, la plataforma debe llamar a CreatePlatformVestingAccount una vez después de que termine la recaudación de fondos del lanzamiento; si lo olvida, esa participación permanece sin asignar e inactiva para siempre (el presupuesto total_locked_amount del lanzamiento se consume pero la plataforma nunca lo reclama).
  • Ambigüedad de platform_cp_creator. Cuando se establece en Pubkey::default(), el creador del lanzamiento se registra como el pool_creator del grupo CPMM post-graduación; cuando se establece en una clave real, esa clave se registra en su lugar. Esto determina el beneficiario de las comisiones de creador de CPMM post-graduación y quién puede firmar la ruta original de CPMM::CollectCreatorFee. La ruta de recopilación sin permisos aún paga las ATAs canónicas de esta clave registrada. Decide en el momento de creación de la configuración de plataforma qué modelo quieres.
  • Restricción sin una cuenta de permiso. Habilitar restrict_global_config antes de crear el PlatformAllowConfig requerido bloquea nuevos lanzamientos que seleccionen esa configuración.

Referencias

Fuentes:
  • raydium-launch/programs/launchpad/src/states/platform_config.rsPlatformConfig, PlatformParams, MigrateNftInfo, PlatformCurveParam, BondingCurveParam, is_valid_curve_param.
  • raydium-launch/programs/launchpad/src/states/platform_allow_config.rsPlatformAllowConfig.
  • raydium-launch/programs/launchpad/src/lib.rs — puntos de entrada de configuración de plataforma y configuración de permiso.