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 — indexadas 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 máximos 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

Un GlobalConfig es un PDA único 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 suministro, tasa de bloqueo, tasa de venta y tasa de 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 graduación 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 semillas de 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 indexan un GlobalConfig de forma única. Hay un GlobalConfig por cada par (curve_type, index):
  • curve_type = 0 — Curva de reserva virtual de producto constante. La más usada 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 el GlobalConfig coincidente.

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 vía 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 vía CollectMigrateFee.
  • max_share_fee_rate — inicializada a 10_000 (100 bps). Limita la tasa de comisión de plataforma del PlatformConfig vinculante (consulta platform-config). El programa refuerza 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 vía 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 lanzamientos usan SOL envuelto (So111…112) o USDC (EPjF…Dt1v). Un GlobalConfig está vinculado a un mint de cotización; los lanzamientos que necesitan un objetivo de cotización diferente apuntan a un (curve_type, index) diferente.
  • 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 vía UpdateConfig.
  • migrate_fee_owner — clave pública que firma CollectMigrateFee.

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. Todo 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 mediante 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 creación; los valores posteriores pueden ajustarse vía UpdateConfig.

Cómo un lanzamiento elige un GlobalConfig

En Initialize, el creador pasa:
  • (curve_type, index) para seleccionar qué PDA 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 refuerza:
  • 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 el PlatformAllowConfig coincidente.
Después de Initialize, el PoolState del lanzamiento almacena la clave pública 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 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 un GlobalConfig desde un cliente

Para una interfaz que enumere todas las configuraciones disponibles, recorre el ayudante 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.