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 →
GlobalConfig es la cuenta de configuración a nivel de protocolo. Puede haber muchas — identificadas por (curve_type, index) — y cada lanzamiento elige exactamente una en el momento de Initialize. Los valores en la GlobalConfig elegida se convierten entonces en límites duros para los parámetros de ese lanzamiento. Para personalización a nivel de plataforma (tasa de comisión por plataforma, formas de curva permitidas, divisiones de NFT en la graduación), consulta products/launchlab/platform-config.

Qué es

Una GlobalConfig es una PDA singleton por (curve_type, index) que fija las reglas a nivel de protocolo que todo lanzamiento debe cumplir:
  • El tipo de curva de vinculación permitida (curve_type).
  • La tasa de comisión comercial que cobra la curva en cada compra y venta.
  • La comisión de migración cobrada en la graduación.
  • Pisos en la tasa de suministro, bloqueo, venta y migración.
  • El mint de cotización (típicamente SOL envuelto o USDC) — el activo con el que los usuarios compran.
  • Cuatro billeteras a nivel de protocolo: el propietario de la comisión de protocolo, el propietario de la comisión de migración, y las dos billeteras de control de migración retenidas para la graduación de CPMM y AMM v4 heredado.
Las cuentas GlobalConfig pueden ser creadas por el administrador del programa LaunchLab o la autoridad delegada de crear configuración. Solo el administrador actualiza configuraciones existentes. Consulta reference/program-addresses para las autoridades canónicas.

Diseño

Derivación de PDA:
(Verifica el orden exacto de las semillas en la cuenta en cadena antes de firmar — la instrucción create_config del programa es la fuente de verdad.)

Semántica de campos

curve_type e index

Juntos identifican una GlobalConfig de forma única. Hay una GlobalConfig por cada par (curve_type, index):
  • curve_type = 0 — Curva de reserva virtual de producto constante. La más utilizada y predeterminada.
  • curve_type = 1 — Curva de precio fijo.
  • curve_type = 2 — Curva de precio lineal.
index es un u16 que permite al administrador publicar múltiples configuraciones por tipo de curva (por ejemplo, una con una comisión más ajustada, otra con un mínimo de recaudación de cotización más alto). En Initialize el lanzamiento proporciona un par (curve_type, index) y el programa carga la GlobalConfig correspondiente.

Comisiones

  • trade_fee_rate — denominada en 1/1_000_000 del volumen comercial. Se aplica a cada compra y venta en la curva. El protocol_fee_owner reclama su parte a través de CollectFee.
  • migrate_fee — una comisión fija en lámparas (o unidades de cotización, según la configuración) cobrada una vez en la graduación. Reclamada por migrate_fee_owner a través de CollectMigrateFee.
  • max_share_fee_rate — inicializada a 10_000 (100 bps). Limita el argumento share_fee_rate que BuyExactIn, BuyExactOut, SellExactIn y SellExactOut aceptan — la comisión de referencia pagada directamente al receptor de la parte durante el comercio. No limita PlatformConfig.fee_rate; esa tasa tiene sus propios límites, descritos en platform-config. Tanto CreateConfig como UpdateConfig aplican trade_fee_rate + max_share_fee_rate < RATE_DENOMINATOR_VALUE.

Pisos de suministro y tasa

Estos pisos limitan qué parámetros de forma de curva puede elegir un lanzamiento en Initialize. Si los CurveParams del creador violan alguno de ellos, Initialize revierte con InvalidInput.
  • min_base_supply — el mínimo supply (sin decimales) que la curva puede declarar. Por defecto 10_000_000.
  • max_lock_rate — denominada en 1/1_000_000; por defecto 300_000 (30%). Limita el bloqueo de vesting a través de total_locked_amount <= supply * max_lock_rate / 1_000_000.
  • min_base_sell_rate — denominada en 1/1_000_000; por defecto 200_000 (20%). Limita base_supply_graduation / supply desde abajo.
  • min_base_migrate_rate — denominada en 1/1_000_000; por defecto 200_000 (20%). Limita el número de tokens restantes para sembrar el pool posterior a la graduación.
  • min_quote_fund_raising — mínimo quote_reserve_target que un lanzamiento puede declarar (con decimales). Por defecto 30_000_000_000 unidades del mint de cotización.

Mint de cotización y billeteras de protocolo

  • quote_mint — el activo con el que los usuarios compran. La mayoría de los lanzamientos usan SOL envuelto (So111…112) o USDC (EPjF…Dt1v). Una GlobalConfig está vinculada a un mint de cotización; los lanzamientos que necesitan un objetivo de cotización diferente apuntan a un (curve_type, index) diferente. El mint puede ser propiedad del programa SPL Token o Token-2022 — consulta a continuación.
  • protocol_fee_owner — clave pública que firma CollectFee y reclama las comisiones de protocolo acumuladas en cada lanzamiento vinculado a esta configuración. Almacenada en cadena; el administrador puede rotarla a través de UpdateConfig.
  • migrate_fee_owner — clave pública que firma CollectMigrateFee.

Mints de cotización Token-2022

CreateConfig acepta un quote_mint de Token-2022, y los pools vinculados a tal configuración lo llevan de principio a fin: la bóveda de cotización, ambas bóvedas de comisión, y la cuenta de token del receptor de comisión de parte se crean todas en Token-2022, y las instrucciones de intercambio cuentan con una TransferFeeConfig en el lado de la cotización. El bit1 de PoolState.token_program_flag registra la elección por lanzamiento. Dos restricciones vale la pena conocer antes de confiar en una:
  • El Initialize deprecado no puede lanzarse contra ella. Solo InitializeV2 e InitializeWithToken2022 aceptan un programa de cotización Token-2022. Consulta instructions.
  • No se aplica lista de permitidos de extensiones. A diferencia de CPMM y CLMM, LaunchLab no examina las extensiones de un mint de cotización — CreateConfig toma el mint tal como está, por lo que la única puerta es la discreción del administrador sobre qué mints se vinculan a una configuración. La verificación NoSupportExtension del programa cubre solo los mints base de Token-2022 que LaunchLab crea por sí mismo. Trata vincular uno como una acción de alta confianza; consulta reference/token-2022-support.

Billeteras de migración

Las dos billeteras de graduación almacenadas requieren firmantes diferentes:
  • migrate_to_amm_wallet — firma MigrateToAmm para un lanzamiento heredado existente cuyo migrate_type = 0 almacenado.
  • migrate_to_cpswap_wallet — firma MigrateToCpswap. Cada lanzamiento recién inicializado usa esta ruta.
Estas son típicamente mantenidas por el crank de graduación operado por Raydium, por lo que la graduación ocurre poco después de que la curva alcance el umbral en lugar de esperar a que el creador la llame.

Listas de permitidos a nivel de plataforma

GlobalConfig ya no tiene requires_platform_auth. Su byte anterior es relleno, por lo que el tamaño de la cuenta no cambia. El acceso ahora se controla a través de PlatformConfig.restrict_global_config y cuentas PlatformAllowConfig creadas por el administrador de esa plataforma. Consulta platform-config.

Valores predeterminados en la inicialización

Cuando se llama a CreateConfig, el programa siembra muchos campos con valores predeterminados codificados:
El administrador establece curve_type, index, migrate_fee, trade_fee_rate, quote_mint y las cuatro claves públicas de billetera explícitamente en el momento de la creación; los valores posteriores se pueden ajustar a través de UpdateConfig.

Cómo un lanzamiento elige una GlobalConfig

En Initialize, el creador pasa:
  • (curve_type, index) para seleccionar qué PDA de GlobalConfig cargar.
  • CurveParams describiendo la forma de la curva (supply, total_base_sell, total_quote_fund_raising, migrate_type).
  • VestingParams describiendo el suministro bloqueado.
  • MintParams para el mint base.
El programa aplica:
  • curve_type coincide con global_config.curve_type.
  • supply >= global_config.min_base_supply.
  • total_locked_amount <= supply * max_lock_rate / 1_000_000.
  • total_base_sell >= supply * min_base_sell_rate / 1_000_000.
  • (supply − total_base_sell − total_locked_amount) >= supply * min_base_migrate_rate / 1_000_000 — es decir, suficientes tokens restantes para sembrar el pool posterior a la graduación.
  • total_quote_fund_raising >= min_quote_fund_raising.
  • migrate_type == 1 (CPSWAP).
  • Si la plataforma seleccionada tiene restrict_global_config == 1, se incluye la PlatformAllowConfig correspondiente.
Después de Initialize, la PoolState del lanzamiento almacena la clave pública de global_config directamente, por lo que el vínculo es permanente.

Ruta de actualización

UpdateConfig es solo para administrador y toma un par (param: u8, value: u64). Cada valor de param selecciona qué campo mutar: Las rotaciones de billetera (protocol_fee_owner, migrate_fee_owner, migrate_to_amm_wallet, migrate_to_cpswap_wallet) toman una forma de argumento Pubkey separada; consulta la fuente de update_config para la tabla de despacho exacta antes de componer una transacción de administrador. El selector anterior de UpdateConfig 12 para autorización de plataforma se elimina. Los administradores de plataforma ahora administran sus propias listas de permitidos.

Lectura de una GlobalConfig desde un cliente

Para una interfaz de usuario que enumere todas las configuraciones disponibles, recorre el asistente getAllGlobalConfigs del SDK o consulta el punto final de la API de LaunchLab que las refleja; el recuento de cuentas en cadena es pequeño (dígitos únicos en la práctica).

Referencias

Fuentes:
  • raydium-launch/programs/launchpad/src/states/config.rs — struct GlobalConfig e initialize.
  • raydium-launch/programs/launchpad/src/lib.rscreate_config, update_config.