Skip to main content
Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
GlobalConfig est le compte de configuration au niveau du protocole. Il peut y en avoir plusieurs — indexés par (curve_type, index) — et chaque lancement en choisit exactement un au moment de l’Initialize. Les valeurs du GlobalConfig choisi deviennent alors des limites strictes pour les paramètres de ce lancement. Pour la personnalisation au niveau de la plateforme (taux de frais par plateforme, formes de courbes autorisées, répartition NFT à la graduation), consultez products/launchlab/platform-config.

Qu’est-ce que c’est

Un GlobalConfig est une PDA singleton par (curve_type, index) qui fixe les règles au niveau du protocole que chaque lancement doit respecter :
  • Le type de courbe de liaison autorisé (curve_type).
  • Le taux de frais commerciaux que la courbe applique à chaque achat et vente.
  • Les frais de migration facturés à la graduation.
  • Les planchers sur l’approvisionnement, le taux de verrouillage, le taux de vente et le taux de migration.
  • Le mint de cotation (généralement SOL enrobé ou USDC) — l’actif avec lequel les utilisateurs achètent.
  • Quatre portefeuilles au niveau du protocole : le propriétaire des frais de protocole, le propriétaire des frais de migration, et les deux portefeuilles de contrôle de migration conservés pour la graduation CPMM et AMM v4 hérité.
Les comptes GlobalConfig peuvent être créés par l’administrateur du programme LaunchLab ou par l’autorité déléguée de création de configuration. Seul l’administrateur met à jour les configurations existantes. Consultez reference/program-addresses pour les autorités canoniques.

Disposition

Dérivation PDA :
(Vérifiez l’ordre exact des seeds du compte on-chain avant de signer — l’instruction create_config du programme est la source de vérité.)

Sémantique des champs

curve_type et index

Ensemble, ils identifient de manière unique un GlobalConfig. Il y a un GlobalConfig par paire (curve_type, index) :
  • curve_type = 0 — Courbe de réserve virtuelle à produit constant. Par défaut et la plus utilisée.
  • curve_type = 1 — Courbe à prix fixe.
  • curve_type = 2 — Courbe à prix linéaire.
index est un u16 qui permet à l’administrateur de publier plusieurs configurations par type de courbe (par exemple, une avec des frais plus serrés, une avec un minimum de levée de fonds en cotation plus élevé). À l’Initialize, le lancement fournit une paire (curve_type, index) et le programme charge le GlobalConfig correspondant.

Frais

  • trade_fee_rate — exprimé en 1/1_000_000 du volume commercial. Appliqué à chaque achat et vente sur la courbe. Le protocol_fee_owner réclame sa part via CollectFee.
  • migrate_fee — un frais forfaitaire en lamports (ou unités de cotation, selon la configuration) facturé une fois à la graduation. Réclamé par migrate_fee_owner via CollectMigrateFee.
  • max_share_fee_rate — initialisé à 10_000 (100 bps). Plafonne le taux de frais de partage de la plateforme à partir du PlatformConfig contraignant (voir platform-config). Le programme applique trade_fee_rate + max_share_fee_rate < RATE_DENOMINATOR_VALUE.

Planchers d’approvisionnement et de taux

Ces planchers limitent les paramètres de forme de courbe qu’un lancement peut choisir à l’Initialize. Si les CurveParams du créateur violent l’un d’eux, Initialize revient avec InvalidInput.
  • min_base_supply — l’supply minimale (sans décimales) que la courbe peut déclarer. Par défaut 10_000_000.
  • max_lock_rate — exprimé en 1/1_000_000 ; par défaut 300_000 (30%). Limite le verrouillage via total_locked_amount <= supply * max_lock_rate / 1_000_000.
  • min_base_sell_rate — exprimé en 1/1_000_000 ; par défaut 200_000 (20%). Limite base_supply_graduation / supply par le bas.
  • min_base_migrate_rate — exprimé en 1/1_000_000 ; par défaut 200_000 (20%). Limite le nombre de jetons restants pour amorcer le pool post-graduation.
  • min_quote_fund_raising — minimum quote_reserve_target qu’un lancement peut déclarer (avec décimales). Par défaut 30_000_000_000 unités du mint de cotation.

Mint de cotation et portefeuilles de protocole

  • quote_mint — l’actif avec lequel les utilisateurs achètent. La plupart des lancements utilisent SOL enrobé (So111…112) ou USDC (EPjF…Dt1v). Un GlobalConfig est lié à un mint de cotation ; les lancements qui ont besoin d’une cible de cotation différente ciblent un (curve_type, index) différent.
  • protocol_fee_owner — clé publique qui signe CollectFee et réclame les frais de protocole accumulés sur chaque lancement lié à cette configuration. Stocké on-chain ; l’administrateur peut le faire tourner via UpdateConfig.
  • migrate_fee_owner — clé publique qui signe CollectMigrateFee.

Portefeuilles de migration

Les deux portefeuilles de graduation stockés nécessitent des signataires différents :
  • migrate_to_amm_wallet — signe MigrateToAmm pour un lancement hérité existant dont le migrate_type = 0 stocké.
  • migrate_to_cpswap_wallet — signe MigrateToCpswap. Chaque lancement nouvellement initialisé utilise ce chemin.
Ceux-ci sont généralement détenus par le crank de graduation opéré par Raydium, de sorte que la graduation se produit peu de temps après que la courbe atteigne le seuil plutôt que d’attendre que le créateur l’appelle.

Listes blanches au niveau de la plateforme

GlobalConfig n’a plus requires_platform_auth. Son ancien octet est du remplissage, donc la taille du compte ne change pas. L’accès est maintenant contrôlé par PlatformConfig.restrict_global_config et les comptes PlatformAllowConfig créés par l’administrateur de cette plateforme. Consultez platform-config.

Valeurs par défaut à l’initialisation

Lorsque CreateConfig est appelé, le programme amorce de nombreux champs avec des valeurs par défaut codées en dur :
L’administrateur définit explicitement curve_type, index, migrate_fee, trade_fee_rate, quote_mint et les quatre clés publiques de portefeuille au moment de la création ; les valeurs suivantes peuvent être ajustées via UpdateConfig.

Comment un lancement choisit un GlobalConfig

À l’Initialize, le créateur transmet :
  • (curve_type, index) pour sélectionner quel PDA GlobalConfig charger.
  • CurveParams décrivant la forme de la courbe (supply, total_base_sell, total_quote_fund_raising, migrate_type).
  • VestingParams décrivant l’approvisionnement verrouillé.
  • MintParams pour le mint de base.
Le programme applique :
  • curve_type correspond à 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 — c’est-à-dire suffisamment de jetons restants pour amorcer le pool post-graduation.
  • total_quote_fund_raising >= min_quote_fund_raising.
  • migrate_type == 1 (CPSWAP).
  • Si la plateforme sélectionnée a restrict_global_config == 1, le PlatformAllowConfig correspondant est inclus.
Après Initialize, le PoolState du lancement stocke directement la clé publique global_config, de sorte que la liaison est permanente.

Chemin de mise à jour

UpdateConfig est réservé à l’administrateur et prend une paire (param: u8, value: u64). Chaque valeur param sélectionne quel champ muter : Les rotations de portefeuille (protocol_fee_owner, migrate_fee_owner, migrate_to_amm_wallet, migrate_to_cpswap_wallet) prennent une forme d’argument Pubkey séparé ; consultez la source update_config pour la table de dispatch exacte avant de composer une transaction d’administrateur. L’ancien sélecteur UpdateConfig 12 pour l’autorisation de plateforme est supprimé. Les administrateurs de plateforme gèrent maintenant leurs propres listes blanches.

Lecture d’un GlobalConfig depuis un client

Pour une interface utilisateur listant toutes les configurations disponibles, parcourez l’assistant getAllGlobalConfigs du SDK ou interrogez le point de terminaison de l’API LaunchLab qui les reflète ; le nombre de comptes on-chain est petit (quelques unités en pratique).

Pointeurs

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