Passer au contenu principal

Documentation Index

Fetch the complete documentation index at: https://docs.raydium.io/llms.txt

Use this file to discover all available pages before exploring further.

Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
Cette page documente le graphe de comptes par lancement : le PoolState (le compte d’état racine pour un lancement), ses deux coffres, le PDA d’autorité, et les références post-graduation qu’il acquiert quand le lancement se règle.Pour la config au niveau du protocole qui encadre chaque lancement, consultez products/launchlab/global-config. Pour la surcouche par plateforme, consultez products/launchlab/platform-config. Pour les comptes d’acquisition progressive (VestingSchedule sur PoolState, VestingRecord par bénéficiaire), consultez products/launchlab/vesting.

Inventaire des comptes

ComptePropriétaireObjectif
GlobalConfigProgramme LaunchLabRègles au niveau du protocole : frais, planchers d’approvisionnement, portefeuilles de migration. Un par (curve_type, index).
PlatformConfigProgramme LaunchLabSurcouche par plateforme : image de marque, frais de plateforme, partage NFT à la graduation, liste blanche des formes de courbe.
PoolStateProgramme LaunchLabÉtat racine par lancement : mints, coffres, paramètres de courbe, compteurs vendus, compteurs de frais, calendrier d’acquisition progressive, statut de graduation.
authorityProgramme LaunchLabPDA unique avec seed [b"vault_auth_seed"] qui possède les coffres à travers tous les lancements et signe le CPI post-graduation.
base_vaultSPL Token / Token-2022Coffre par lancement contenant les jetons de base non vendus.
quote_vaultSPL TokenCoffre par lancement contenant les jetons de devis accumulés.
VestingRecordProgramme LaunchLabEnregistrement cliff + déverrouillage linéaire par bénéficiaire. Optionnel.
creator_fee_vaultSPL TokenCoffre par créateur + par jeton de devis contenant les frais de créateur accumulés, balayé par ClaimCreatorFee.
platform_fee_vaultSPL TokenCoffre par plateforme + par jeton de devis contenant les frais de plateforme accumulés, balayé par ClaimPlatformFeeFromVault.
(post-graduation) cpmm_pool_state ou amm_pool_stateProgramme CPMM / AMM v4Le pool créé par MigrateToCpswap / MigrateToAmm.
(post-graduation) Fee Key NFTProgramme LP-LockEnveloppe la tranche du créateur du LP à la graduation CPMM ; donne droit au détenteur à ClaimCreatorFee sur le pool CPMM.
Le SDK retourne PoolState plus un drapeau indiquant si le lancement a gradué ; si c’est le cas, l’ID du pool post-migration est inclus.

PoolState

L’état racine par lancement. Les noms de champs ci-dessous correspondent à la struct Rust on-chain (states/pool.rs) ; certaines valeurs sont simplifiées pour la lisibilité — consultez la source pour la disposition exacte de la mémoire.
// states/pool.rs (abridged)
pub struct PoolState {
    pub epoch:                     u64,        // recent_epoch tracker
    pub auth_bump:                 u8,
    pub status:                    u8,         // PoolStatus enum
    pub base_decimals:             u8,
    pub quote_decimals:            u8,
    pub migrate_type:              u8,         // 0 = AMM v4, 1 = CPMM
    pub supply:                    u64,        // total base tokens (no decimals)
    pub total_base_sell:           u64,        // base supply allocated to the curve
    pub virtual_base:              u64,        // virtual-reserve seed
    pub virtual_quote:             u64,        // virtual-reserve seed
    pub real_base:                 u64,        // base sold so far
    pub real_quote:                u64,        // quote raised so far (excl. fees)
    pub total_quote_fund_raising:  u64,        // graduation threshold in quote

    pub quote_protocol_fee:        u64,        // accrued, pending CollectFee
    pub platform_fee:              u64,        // accrued, pending ClaimPlatformFee
    pub migrate_fee:               u64,        // accrued, pending CollectMigrateFee
    pub vesting_schedule:          VestingSchedule,

    pub global_config:             Pubkey,
    pub platform_config:           Pubkey,
    pub creator:                   Pubkey,
    pub base_mint:                 Pubkey,
    pub quote_mint:                Pubkey,
    pub base_vault:                Pubkey,
    pub quote_vault:               Pubkey,

    pub amm_creator_fee_on:        u8,         // 0 = QuoteToken, 1 = BothToken (CPMM-only)
    pub token_program_flag:        u8,         // bit flags for SPL Token vs Token-2022
    pub padding:                   [u8; 54],
}

#[derive(Default, Debug, Clone)]
pub struct VestingSchedule {
    pub total_locked_amount:    u64,
    pub cliff_period:           u64,
    pub unlock_period:          u64,
    pub start_time:             u64,           // set at graduation
    pub allocated_share_amount: u64,           // running sum across VestingRecords
}
Valeurs de PoolStatus (depuis l’IDL Anchor) :
0 = Funding         — accepte les achats / ventes ; en-dessous de quote_reserve_target
1 = Migrate         — quote_reserve_target atteint ; en attente de MigrateTo*
2 = Migrated        — MigrateTo* déjà exécuté ; horloge d'acquisition progressive en cours
Champs accessibles aux intégrateurs :
  • status — trois valeurs, monotone (Funding → Migrate → Migrated). Les lectures sont toujours sûres ; les écritures sont contrôlées.
  • real_base, real_quote — état actuel de la courbe. Combinés avec virtual_base / virtual_quote, ils sont suffisants pour calculer le prix spot sans accéder aux coffres. Consultez bonding-curve.
  • total_base_sell vs real_base — ratio « progression vers la graduation » pour les interfaces utilisateur.
  • migrate_type — sélectionne si MigrateToAmm ou MigrateToCpswap est le chemin de graduation valide. Les lancements Token-2022 doivent utiliser CPMM.
  • amm_creator_fee_on — significatif uniquement lors de la graduation vers CPMM. Sélectionne creator_fee_on = OnlyQuoteToken (0) ou BothToken (1) sur le pool CPMM post-graduation. Malgré le nom, cet enum dirige effectivement aussi la cible de migration — BothToken est associé à MigrateToAmm dans la pratique opérationnelle actuelle ; QuoteToken avec MigrateToCpswap. Consultez creator-fees.
  • quote_protocol_fee / platform_fee / migrate_fee — trois compteurs de frais indépendants. Chacun a sa propre instruction de réclamation ; consultez instructions.
  • vesting_schedule — présent sur chaque PoolState mais inactif quand total_locked_amount == 0. Consultez vesting pour le cycle de vie complet.

Le PDA d’autorité

LaunchLab utilise un unique PDA d’autorité à travers tous les lancements, dérivé sans seed par lancement :
const LAUNCHLAB_PROGRAM_ID = new PublicKey("<LAUNCHLAB_ID>"); // see reference/program-addresses

const [authority, bump] = PublicKey.findProgramAddressSync(
  [Buffer.from("vault_auth_seed")],
  LAUNCHLAB_PROGRAM_ID,
);
Ce PDA unique est :
  • L’autorité sur base_vault et quote_vault de chaque lancement.
  • La mint_authority sur base_mint de chaque lancement (avant la graduation).
  • Le signataire du CPI post-graduation vers AMM v4 / CPMM (MigrateTo*).
  • Le signataire sur les transferts ClaimVestedToken hors du coffre de base.
La mint_authority est révoquée immédiatement après MigrateToAmm / MigrateToCpswap afin que l’approvisionnement soit définitivement fixe. Deux PDAs supplémentaires contrôlent les coffres de frais :
const [creatorFeeVaultAuthority] = PublicKey.findProgramAddressSync(
  [Buffer.from("creator_fee_vault_auth_seed")],
  LAUNCHLAB_PROGRAM_ID,
);

const [platformFeeVaultAuthority] = PublicKey.findProgramAddressSync(
  [Buffer.from("platform_fee_vault_auth_seed")],
  LAUNCHLAB_PROGRAM_ID,
);
Ils signent le transfert hors des coffres de frais correspondants durant ClaimCreatorFee et ClaimPlatformFeeFromVault.

Mint de base

Créé en ligne par Initialize avec :
  • mint_authority = authority (révoqué à la graduation).
  • freeze_authority = None.
  • supply = supply, entièrement frappé dans base_vault.
  • decimals choisis par le créateur à Initialize (généralement 6).
Parce que l’approvisionnement complet est pré-frappé, base_mint.supply est constant pour la durée du lancement. Les achats de courbe déplacent les jetons de base_vault vers l’acheteur, mais n’appellent pas mint_to. Initialize / InitializeV2 créent des lancements SPL Token. L’instruction dédiée InitializeWithToken2022 permet au mint de base d’être un mint Token-2022 (avec optionnellement TransferFeeConfig) ; le mint de devis reste SPL Token. Les lancements Token-2022 doivent se diplômer vers un pool CPMM car AMM v4 ne supporte que les coffres SPL Token.

Coffres

base_vault et quote_vault sont des comptes SPL Token standards possédés par le PDA authority de LaunchLab. Les adresses sont stockées sur PoolState et peuvent aussi être dérivées :
const [baseVault] = PublicKey.findProgramAddressSync(
  [Buffer.from("pool_vault"), poolState.toBuffer(), baseMint.toBuffer()],
  LAUNCHLAB_PROGRAM_ID,
);
const [quoteVault] = PublicKey.findProgramAddressSync(
  [Buffer.from("pool_vault"), poolState.toBuffer(), quoteMint.toBuffer()],
  LAUNCHLAB_PROGRAM_ID,
);
(Vérifiez les préfixes exactes des seeds depuis la struct des comptes Initialize de la source avant de compter sur une dérivation en production.)

Coffres de frais

Deux PDAs agrègent les frais à travers les lancements :
  • Coffre de frais de créateur — PDA avec seeds [creator, quote_mint]. Chaque lancement qui gagne les mêmes frais de créateur sur le même jeton de devis verse dans le même coffre. Le créateur le balaye via ClaimCreatorFee.
  • Coffre de frais de plateforme — PDA avec seeds [platform_config, quote_mint]. Chaque lancement acheminé par la même plateforme qui utilise le même jeton de devis verse dans le même coffre. Le platform_fee_wallet de la plateforme le balaye via ClaimPlatformFeeFromVault. Il existe aussi une variante de balayage par lancement (ClaimPlatformFee) qui tire directement du quote_vault du lancement sans passer par le coffre agrégé.
Le motif du coffre agrégé est ce qui permet à un créateur ou une plateforme à haut volume d’amortir le coût du loyer de l’accumulation de frais à travers de nombreux lancements.

Quote vault ↔ real_quote

quote_vault.balance et PoolState.real_quote doivent rester synchronisés. Ils peuvent dériver d’au maximum la somme des trois compteurs de frais en attente (quote_protocol_fee, platform_fee, migrate_fee), qui siègent dans le coffre mais appartiennent aux compteurs de frais et non à la réserve de courbe. Les mathématiques de courbe utilisent toujours real_quote, jamais le solde brut du coffre. Invariant pré-graduation :
quote_vault.balance ==
   real_quote
 + quote_protocol_fee
 + platform_fee
 + migrate_fee

Transitions de comptes du cycle de vie

ÉvénementStatutreal_basereal_quotePool post-graduation
InitializeFunding00
BuyExactIn / BuyExactOutFunding+base_out+quote_in_after_fee
SellExactIn / SellExactOutFunding−base_in−quote_out_before_fee
MigrateToAmm / MigrateToCpswapFunding → Migrate → Migrated(frozen)(frozen)created, LP split per PlatformConfig
ClaimCreatorFee / ClaimPlatformFee*anydrains a fee vault
CreateVestingAccountFundingbumps vesting_schedule.allocated_share_amount
ClaimVestedTokenMigrated onlydrains base_vault

Prochaines étapes

Sources :
  • raydium-launch/programs/launchpad/src/states/pool.rsPoolState, PoolStatus, VestingSchedule, AmmCreatorFeeOn.
  • raydium-launch/programs/launchpad/src/lib.rs — constantes de seed PDA (AUTH_SEED, CREATOR_FEE_VAULT_AUTH_SEED, PLATFORM_FEE_VAULT_AUTH_SEED).
  • Module launchpad du SDK Raydium v2.