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 resserré : six appels accessibles aux utilisateurs plus quelques primitives admin. Le SDK les enveloppe tous ; cette page documente la surface brute pour les agrégateurs, outils de surveillance et programmes ayant besoin de CPI.

Inventaire des instructions

La division « ExactIn/ExactOut » reflète celle de CPMM SwapBaseInput / SwapBaseOutput — sur chaîne, ce sont des discriminateurs d’instruction distincts avec un arrondi légèrement différent. Sélection du chemin de graduation. migrate_type est enregistré sur PoolState au moment de Initialize{V2,WithToken2022} et détermine laquelle des deux instructions de graduation peut s’exécuter. Les lancements Token-2022 migrent toujours vers CPMM. Les lancements SPL Token migrent vers AMM v4 ou CPMM selon le paramètre amm_creator_fee_on :
  • BothTokenMigrateToAmm → pool AMM v4 (les frais créateur peuvent être collectés de chaque côté ; AMM v4 n’a pas de champ natif de frais créateur, donc les frais créateur sont prélevés via le mécanisme du NFT LP-lock à la place).
  • QuoteTokenMigrateToCpswap → pool CPMM avec creator_fee_on = OnlyQuoteToken (le créateur continue de gagner des frais du pool CPMM via le NFT Fee Key LaunchLab — voir products/launchlab/creator-fees).
Note sur le nom de l’enum AmmCreatorFeeOn. Le code source Rust appelle cet enum AmmCreatorFeeOn avec des variantes QuoteToken et BothToken. Le nom est trompeur : dans la pratique opérationnelle actuelle, la variante ne contrôle pas seulement le côté à partir duquel les frais créateur sont collectés sur le pool CPMM post-graduation — elle sélectionne également le programme cible de graduation (AMM v4 vs CPMM) et s’apparie avec migrate_type sur le PoolState du lancement. Traitez le champ comme « cible de migration + côté frais créateur post-graduation » regroupés en un. Le nom de l’enum sur chaîne n’a pas été refactorisé, mais le raisonner comme MigrationTarget correspond plus étroitement à la réalité.

Initialize

Crée 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 réussissent les vérifications launch_config.max_*_fee_rate.
  • open_time ≥ now − slop (le SDK applique ≥ now ; le programme tolère une antidatation légère).
  • 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 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. Divise quote_in en quote_in_after_fee et les parts de frais.
  2. Résout la courbe par Newton pour base_out donnés le devis post-frais.
  3. require(base_out ≥ minimum_base_out) sinon revert ExceededSlippage.
  4. Déplace quote_in utilisateur → vault. Déplace base_out vault → utilisateur.
  5. Met à jour base_sold += base_out, quote_reserve_real += quote_in_after_fee × (lp_share / total_share).
  6. Met à 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 ix Graduate dans la même transaction. Le programme ne fait pas de graduation auto à l’intérieur de Buy — une Graduate ultérieure est requise.

BuyExactOut

L’utilisateur spécifie exactement le base_out ; le programme calcule quote_in. Arguments
Mêmes comptes que BuyExactIn. Utilise l’intégrale quadratique sous forme fermée (ou l’inverse CPMM, pour curve_type 1) plutôt que l’itération 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 bruts intégrés. 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

Graduate un lancement dans un pool AMM négociable une fois que la courbe a atteint total_quote_fund_raising. Les deux instructions correspondent aux deux cibles de graduation — AMM v4 et CPMM — et une seule d’elles est valide pour un lancement donné, déterminée par pool_state.migrate_type (défini au moment de Initialize). Qui signe
  • MigrateToAmm — le migrate_to_amm_wallet enregistré sur le GlobalConfig de liaison.
  • MigrateToCpswap — le migrate_to_cpswap_wallet enregistré sur le GlobalConfig de liaison.
Ces portefeuilles sont généralement tenus par la manivelle de graduation opérée par Raydium ; en pratique, la graduation se produit quelques secondes après le franchissement du seuil, peu importe qui a déclenché l’achat final. Arguments MigrateToAmm prend trois arguments (principalement des paramètres du marché OpenBook que le programme transmet à AMM v4) :
MigrateToCpswap n’en prend aucun. Effet (commun aux deux)
  1. Vérifie que pool_state.status == Migrate (c.-à-d., quote_reserve_target a été atteint). Sinon revert avec PoolMigrated (le statut était déjà Migrated) ou PoolFunding (toujours en financement).
  2. Vérifie que pool_state.migrate_type correspond à l’instruction (0 pour AMM, 1 pour CPMM). Sinon revert avec MigrateTypeNotMatch.
  3. Calcule 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. Divise le LP résultant selon le PlatformConfig.{platform_scale, creator_scale, burn_scale} de liaison (CPMM uniquement) — un morceau mintée vers platform_nft_wallet, un vers un NFT créateur enrobé par le programme LP-Lock, un brûlé via Burn & Earn. Pour la graduation AMM v4, la disposition du LP est gouvernée par les propres paramètres d’initialisation d’AMM v4.
  6. Révoque base_mint.mint_authority (défini sur None).
  7. Bascule pool_state.status = Migrated, définit 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.

CollectFee

Prélèvement admin des frais commerciaux accumulés du protocole sur un seul lancement. Arguments — aucun. Comptes Effet — transfère pool_state.quote_protocol_fee du quote_vault vers recipient_token_account, puis met le compteur à zéro. Peut être appelé n’importe quand après le premier achat.

CollectMigrateFee

Prélèvement 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

Prélèvement par créateur des frais créateur accumulés sur chaque lancement que le créateur possède utilisant le même mint de devis. Vide le vault de frais par créateur, pas celui par pool. Arguments — aucun. Comptes Effet — transfère le solde entier de creator_fee_vault vers recipient_token_account. Revert avec une vérification supérieure à zéro si le vault est vide.

ClaimPlatformFee

Prélèvement par plateforme qui vide directement le vault de devis d’un lancement. Utilisez ceci quand une plateforme veut réclamer sa part pour un lancement spécifique sans passer par le vault de plateforme agrégé. Arguments — aucun. Comptes Effet — transfère pool_state.platform_fee du quote_vault vers recipient_token_account, met le compteur à zéro.

ClaimPlatformFeeFromVault

Prélèvement agrégé par plateforme. Vide le vault de frais par-quote-mint de la plateforme qui accumule les frais de chaque lancement acheminé via la plateforme. Arguments — aucun. Comptes Effet — transfère le solde entier de platform_fee_vault vers recipient_token_account. Revert si le vault est vide.

Instructions de vesting et de config 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 :