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 →
Esta página documenta el gráfico de cuentas por lanzamiento: el
PoolState (la cuenta de estado raíz para un lanzamiento), sus dos vaults, el PDA de autoridad, y las referencias posteriores a la graduación que adquiere cuando el lanzamiento se liquida.Para la configuración a nivel de protocolo que vincula cada lanzamiento, consulta products/launchlab/global-config. Para la superposición por plataforma, consulta products/launchlab/platform-config. Para cuentas de vesting (VestingSchedule en PoolState, VestingRecord por beneficiario), consulta products/launchlab/vesting.Inventario de cuentas
El SDK lee esto con
raydium.launchpad.getRpcPoolInfo({ poolId }), que devuelve el PoolState decodificado con el GlobalConfig vinculado adjunto como configInfo (getRpcPoolsInfo({ poolIdList }) para la forma por lotes). No existe getLaunchById. El id del pool en sí es un PDA de (programId, mintA, mintB) — getPdaLaunchpadPoolId.
PoolState
El estado raíz por lanzamiento. Los nombres de campo a continuación coinciden con la estructura Rust en cadena (states/pool.rs); algunos valores se simplifican para legibilidad — consulta la fuente para el diseño exacto de memoria.
PoolStatus (los nombres de variante del IDL son Fund / Migrate / Trade):
status— tres valores, monótonos (Fund→Migrate→Trade). Las lecturas siempre son seguras; las escrituras están controladas.ClaimVestedTokenrequiereTrade.real_base,real_quote— estado actual de la curva. Combinados convirtual_base/virtual_quoteson suficientes para calcular el precio spot sin tocar los vaults. Consultabonding-curve.total_base_sellvsreal_base— relación de “progreso hacia graduación” para interfaces de usuario.migrate_type— la nueva inicialización requiere1(CPSWAP). Un0almacenado sigue siendo significativo solo para un lanzamiento existente creado antes de la aplicación exclusiva de CPMM.amm_creator_fee_on— eligecreator_fee_on = OnlyQuoteToken(0) oBothToken(1) en el pool CPMM posterior a la graduación. No elige el destino de migración. Consultacreator-fees.token_program_flag— un campo de bits, no un booleano. Bit0 es el mint base y bit1 es el mint quote, cada uno0para SPL Token y1para Token-2022, por lo que el byte toma cuatro valores:0(ambos heredados),1(Token-2022 base),2(Token-2022 quote),3(ambos Token-2022). Lee un mint con(token_program_flag >> bit) & 1. Comparar el byte completo contra0para clasificar el mint base resuelve2al programa incorrecto. Bit1 fue constante0hasta que se admitieron mints quote Token-2022.quote_protocol_fee/platform_fee/migrate_fee— tres contadores de comisión independientes. Cada uno tiene su propia instrucción de reclamación; consultainstructions.vesting_schedule— presente en cadaPoolStatepero inactivo cuandototal_locked_amount == 0. Consultavestingpara el ciclo de vida completo.
El PDA de autoridad
LaunchLab utiliza un único PDA de autoridad en todos los lanzamientos, derivado sin semilla por lanzamiento:- La autoridad en cada
base_vaultyquote_vaultde lanzamiento. - Nada en el
base_mint— la autoridad de mint se revoca antes de queInitializeV2regrese (consulta a continuación). - El firmante en el CPI de graduación CPMM, y en la graduación AMM v4 heredada para estado existente.
- El firmante en las transferencias
ClaimVestedTokenfuera del vault base. - El
transfer_fee_config_authorityen laTransferFeeConfigde un mint base Token-2022, para toda la fase anterior a la graduación — y suwithdraw_withheld_authoritytambién, pero solo cuando la plataforma dejóPlatformConfig.transfer_fee_extension_authsin establecer.
mint_authority se revoca en la instrucción initialize, no en la graduación: InitializeV2 e InitializeWithToken2022 acuñan el suministro completo en base_vault y luego establecen MintTokens en None en la misma instrucción. El suministro es por lo tanto fijo desde el momento en que existe el lanzamiento, y la migración no tiene paso de autoridad de mint. Un efecto secundario: nadie puede firmar por el mint base, por lo que su renta no puede ser reclamada por CollectExcessLamports.
Dos PDAs adicionales controlan los vaults de comisión:
ClaimCreatorFee y ClaimPlatformFeeFromVault.
Mint base
Creado en línea porInitialize con:
mint_authority = authority(revocado en graduación).freeze_authority = None.supply = supply, completamente acuñado enbase_vault.decimalselegido por el creador enInitialize(comúnmente 6).
base_mint.supply es constante durante la vida del lanzamiento. Las compras de curva mueven tokens de base_vault al comprador, pero no llaman a mint_to.
Initialize / InitializeV2 crean mints base SPL Token. La instrucción dedicada InitializeWithToken2022 permite que el mint base sea un mint Token-2022 (con TransferFeeConfig opcional). Los tres caminos de inicialización requieren graduación CPMM.
Cuando InitializeWithToken2022 adjunta un TransferFeeConfig, el mint se crea con transfer_fee_config_authority = authority y withdraw_withheld_authority = PlatformConfig.transfer_fee_extension_auth, retrocediendo a authority cuando la plataforma no ha establecido ese campo. Ambas autoridades se reasignan a la clave de plataforma en graduación, el lado de retiro solo si el PDA aún lo posee. Consulta platform-config.
El mint quote es independiente del mint base y puede ser en sí mismo un mint Token-2022 — InitializeV2 e InitializeWithToken2022 aceptan cualquier programa en su ranura de programa quote. El Initialize deprecado no: su cuenta de programa quote aún está tipificada a SPL Token, por lo que una configuración cuyo mint quote es Token-2022 solo puede lanzarse a través de los otros dos. LaunchLab nunca crea el mint quote; es lo que GlobalConfig.quote_mint nombra. Consulta global-config y reference/token-2022-support.
Vaults
Tantobase_vault como quote_vault son cuentas de token propiedad del PDA authority de LaunchLab, cada una creada en el programa que posee su propio mint — por lo que un lanzamiento puede tener un vault base heredado y un vault quote Token-2022, o cualquier otra combinación. token_program_flag registra cuál es cuál. Las direcciones se almacenan en PoolState y también se pueden derivar:
Initialize de la fuente antes de confiar en una derivación en producción.)
Vaults de comisión
Dos PDAs agregan comisiones en todos los lanzamientos:- Vault de comisión de creador — PDA con semillas
[creator, quote_mint]. Cada lanzamiento que gana las mismas comisiones de creador en el mismo mint quote vierte en el mismo vault. El creador lo barre a través deClaimCreatorFee. - Vault de comisión de plataforma — PDA con semillas
[platform_config, quote_mint]. Cada lanzamiento enrutado a través de la misma plataforma que usa el mismo mint quote vierte en el mismo vault. Elplatform_fee_walletde la plataforma lo barre a través deClaimPlatformFeeFromVault. También hay una variante de barrido por lanzamiento (ClaimPlatformFee) que extrae delquote_vaultdel lanzamiento directamente sin pasar por el vault agregado.
Quote vault ↔ real_quote
quote_vault.balance y PoolState.real_quote deben mantenerse sincronizados. Pueden desviarse como máximo por la suma de los tres contadores de comisión pendientes (quote_protocol_fee, platform_fee, migrate_fee), que se encuentran en el vault pero pertenecen a los contadores de comisión y no a la reserva de curva. Las matemáticas de curva siempre usan real_quote, nunca el saldo bruto del vault.
Invariante anterior a la graduación:
PlatformCurveRule
Una cuenta por par (PlatformConfig, GlobalConfig), que contiene las formas de lanzamiento que esa plataforma permite en esa configuración. Las semillas del PDA son [b"platform_curve_rule", platform_config, global_config].
150 + Σ(14 + 18 × constraints) y los decodificadores no deben asumir un tamaño fijo. Los grupos se ORean: un lanzamiento se permite tan pronto como se cumplen todas las restricciones de un grupo. Cero grupos significa sin restricción.
Léelo solo cuando el PlatformConfig.restrict_curve_param propietario sea 1 — en 0 el programa ignora la cuenta, y una regla obsoleta bien puede estar sentada allí. Los IDs de campo, operadores y los manuales están en products/launchlab/curve-rules.
Transiciones de ciclo de vida de cuentas
Dónde ir a continuación
products/launchlab/bonding-curve— las matemáticas detrás dereal_base↔real_quote.products/launchlab/instructions— listas de cuentas por instrucción.products/launchlab/global-config— vinculación a nivel de protocolo.products/launchlab/platform-config— superposición de plataforma.products/launchlab/vesting— mecánica de suministro bloqueado.products/cpmm/accounts— cómo se ve elcpmm_pool_stateposterior a la graduación.
raydium-launch/programs/launchpad/src/states/pool.rs—PoolState,PoolStatus,VestingSchedule,AmmCreatorFeeOn.raydium-launch/programs/launchpad/src/lib.rs— constantes de semilla de PDA (AUTH_SEED,CREATOR_FEE_VAULT_AUTH_SEED,PLATFORM_FEE_VAULT_AUTH_SEED).- Módulo
launchpaddel SDK de Raydium v2.

