Skip to main content
Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
LaunchLab expose un ensemble d’instructions compact : six appels accessibles aux utilisateurs plus une poignée de primitives administrateur. Le SDK les encapsule tous ; cette page documente la surface brute pour les agrégateurs, les outils de monitoring et les programmes qui ont besoin de CPI.

Inventaire des instructions

La division « ExactIn/ExactOut » reflète celle de CPMM SwapBaseInput / SwapBaseOutput — sur la chaîne, ce sont des discriminateurs d’instruction distincts avec un arrondi légèrement différent. Sélection du chemin de graduation. Chaque appel Initialize, InitializeV2 et InitializeWithToken2022 doit définir migrate_type = 1 (CPSWAP). Toute tentative d’initialisation d’un nouveau pool lié à AMM v4 retourne MigrateTypeNotMatch. amm_creator_fee_on sélectionne uniquement si les frais de créateur CPMM résultants s’appliquent au token de cotation ou aux deux tokens ; il ne sélectionne pas le programme cible. MigrateToAmm reste appelable pour un PoolState existant qui a été initialisé avec migrate_type = 0 avant cette restriction. La version ne réécrit pas l’état du pool existant ni ne supprime l’instruction hérité.

Initialize

Créer un nouveau lancement. Arguments
Comptes (abrégé) Préconditions
  • quote_mint ∈ launch_config.allowed_quote_mints.
  • base_supply_graduation ≤ base_supply_max.
  • Les paramètres de frais passent les vérifications launch_config.max_*_fee_rate.
  • open_time ≥ now − slop (le SDK impose ≥ now ; le programme tolère un léger antidatage).
  • curve_type est reconnu.
Postconditions
  • base_mint a supply = base_supply_max, tout dans base_vault.
  • base_mint.mint_authority = launch_authority, freeze_authority = None.
  • LaunchState initialisé avec status = Active, base_sold = 0, quote_reserve_real = 0.
  • quote_reserve_target calculé à partir des paramètres de courbe + base_supply_graduation + buy_numerator (approximativement).
Erreurs courantesInvalidQuoteMint, FeeRateTooHigh, InvalidCurveParams, MathOverflow.

Buy (variante canonique : BuyExactIn)

L’utilisateur fournit un quote_in fixe ; la courbe calcule base_out. Arguments
Comptes Préconditions
  • launch_state.status == Active.
  • now ≥ open_time.
  • user_quote_ata.balance ≥ quote_in.
  • quote_in > 0.
Effet
  1. Diviser quote_in en quote_in_after_fee et les parties de frais.
  2. Résoudre par Newton la courbe pour base_out étant donné la cotation post-frais.
  3. require(base_out ≥ minimum_base_out) sinon revenir avec ExceededSlippage.
  4. Déplacer quote_in utilisateur → coffre. Déplacer base_out coffre → utilisateur.
  5. Mettre à jour base_sold += base_out, quote_reserve_real += quote_in_after_fee × (lp_share / total_share).
  6. Mettre à jour les compteurs de frais (protocol_fees_quote, creator_fees_quote).
  7. state_data.num_buys += 1.
  8. Si quote_reserve_real ≥ quote_reserve_target après la mise à jour, le SDK enchaîne généralement une instruction Graduate dans la même transaction. Le programme ne se diplôme pas automatiquement à l’intérieur de Buy — un Graduate ultérieur est requis.

BuyExactOut

L’utilisateur spécifie le base_out exact ; le programme calcule quote_in. Arguments
Mêmes comptes que BuyExactIn. Utilise l’intégrale quadratique de forme fermée (ou l’inverse CPMM, pour curve_type 1) plutôt que l’itération de Newton.

Sell / SellExactIn / SellExactOut

Miroir de Buy. L’utilisateur retourne base_in à la courbe et reçoit quote_out. Les frais sont déduits de quote_out, donc l’utilisateur reçoit moins que les produits intégrés bruts. Préconditions
  • user_base_ata.balance ≥ base_in.
  • La vente ne peut pas pousser base_sold en dessous de 0 (redondant avec ce qui précède étant donné que la comptabilité est cohérente).
  • Le lancement est Active.
Effet — symétrique à Buy. base_sold diminue, quote_reserve_real diminue. Les frais s’accumulent toujours.

MigrateToAmm / MigrateToCpswap

Diplômer un lancement dans un pool négociable une fois que la courbe a atteint total_quote_fund_raising. Les nouveaux lancements sont CPMM uniquement. MigrateToAmm est conservé pour les pools existants dont le migrate_type stocké est 0. Qui signe
  • MigrateToAmm — le migrate_to_amm_wallet enregistré sur la liaison GlobalConfig.
  • MigrateToCpswap — le migrate_to_cpswap_wallet enregistré sur la liaison GlobalConfig.
Ces portefeuilles sont généralement détenus par le crank de graduation opéré par Raydium ; en pratique, la graduation intervient quelques secondes après le franchissement du seuil, quel que soit celui qui a déclenché l’achat final. Arguments MigrateToAmm prend trois (principalement des paramètres de marché OpenBook que le programme transmet à AMM v4) :
MigrateToCpswap n’en prend aucun. Effet (commun aux deux)
  1. Vérifier que pool_state.status == Migrate (c.-à-d., quote_reserve_target a été atteint). Sinon revenir avec PoolMigrated (le statut était déjà Migrated) ou PoolFunding (toujours en financement).
  2. Vérifier que pool_state.migrate_type correspond à l’instruction (0 pour AMM, 1 pour CPMM). Sinon revenir avec MigrateTypeNotMatch.
  3. Calculer les réserves post-graduation :
    • base_amount_out = base_vault.amount − vesting_schedule.total_locked_amount
    • quote_amount_out = quote_vault.amount − quote_protocol_fee − migrate_fee − platform_fee
  4. CPI dans le programme cible (AMM v4 Initialize2 ou CPMM InitializeWithPermission) avec ces réserves pour créer le pool post-graduation.
  5. Pour les migrations CPMM exécutées après la mise à jour du 2026-08-17, combiner platform_scale + creator_scale en une part LP verrouillée détenue par la plateforme et frapper au maximum un NFT Fee Key vers platform_nft_wallet. Brûler le reste burn_scale. Avant la mise à jour, creator_scale était verrouillé séparément et son Fee Key allait au créateur du token. Les migrations historiques terminées ne sont pas modifiées. Pour la graduation AMM v4 hérité, la disposition LP suit le flux existant de cette instruction.
  6. Révoquer base_mint.mint_authority (définir à None).
  7. Basculer pool_state.status = Migrated, définir vesting_schedule.start_time = block_time + cliff_period.
PostconditionsBuyExactIn, BuyExactOut, SellExactIn, SellExactOut rejetteront à partir de ce moment avec PoolMigrated. Le pool AMM résultant est canonique et se négocie comme n’importe quel autre pool AMM v4 / CPMM. Erreurs courantesPoolFunding, PoolMigrated, MigrateTypeNotMatch, InvalidCpSwapConfig, MathOverflow.

Comptes restants de migration CPMM

Les clients construisant MigrateToCpswap doivent utiliser ces indices remaining_accounts fixes : L’instruction nécessite au moins dix comptes restants sur le chemin mis à niveau. Les comptes support-mint sont des entrées CPI en lecture seule. Dériver les deux adresses même quand le mint n’a pas d’enregistrement de support initialisé. Les anciens constructeurs qui ajoutent toujours des comptes de verrouillage de créateur ou omettent les indices 8–9 doivent être mis à jour.

Liste d’autorisation GlobalConfig de plateforme

PlatformConfig.restrict_global_config contrôle la vérification :
  • 0 : la plateforme accepte n’importe quel GlobalConfig autrement valide ; aucun compte d’autorisation n’est requis.
  • 1 : Initialize, InitializeV2 et InitializeWithToken2022 doivent inclure le PlatformAllowConfig correspondant n’importe où dans remaining_accounts.
L’admin de plateforme crée ou ferme le PDA avec CreatePlatformAllowConfig et ClosePlatformAllowConfig. Ses graines sont [b"platform_allow_config", platform_config, global_config]. Les anciennes instructions PlatformGlobalAccess gérées par l’admin et le PDA sont retirés.

CollectFee

Récupération admin des frais commerciaux accumulés du protocole sur un seul lancement. Arguments — aucun. Comptes Effet — transférer pool_state.quote_protocol_fee de quote_vault vers recipient_token_account, puis mettre le compteur à zéro. Appelable n’importe quand après le premier achat.

CollectMigrateFee

Récupération admin des frais de migration accumulés à la graduation. Même forme de compte que CollectFee avec migrate_fee_owner comme signataire (au lieu de protocol_fee_owner) et pool_state.migrate_fee comme compteur vidé.

ClaimCreatorFee

Récupération par créateur des frais de créateur accumulés sur chaque lancement que le créateur possède qui utilise le même mint de cotation. Vide le coffre de frais par créateur, pas celui par pool. Arguments — aucun. Comptes Effet — transférer le solde entier de creator_fee_vault vers recipient_token_account. Revient avec une vérification require-greater-than-zero si le coffre est vide.

ClaimPlatformFee

Récupération par plateforme qui vide directement le coffre de cotation d’un lancement. Utilisez ceci quand une plateforme veut réclamer sa part pour un lancement spécifique sans passer par le coffre de plateforme agrégé. Arguments — aucun. Comptes Effet — transférer pool_state.platform_fee de quote_vault vers recipient_token_account, mettre le compteur à zéro.

ClaimPlatformFeeFromVault

Récupération agrégée par plateforme. Vide le coffre de frais par mint de cotation de la plateforme qui accumule les frais de chaque lancement acheminé via la plateforme. Arguments — aucun. Comptes Effet — transférer le solde complet de platform_fee_vault vers recipient_token_account. Revient si le coffre est vide.

Instructions de vesting et de configuration de plateforme

Celles-ci sont documentées sur des pages dédiées car chacune a son propre modèle d’état :

Matrice de changement d’état

Où aller ensuite

Sources :