Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
Bannière de version.
- SDK :
@raydium-io/raydium-sdk-v2@0.2.64-alpha - Cluster : Solana
mainnet-beta - ID du programme : voir
reference/program-addresses - Dernière vérification : 2026-09-09 contre la source du SDK
0.2.64-alpha,raydium-sdk-V2-demo/src/launchpad, et la source du programmeraydium-launch
package.json. L’interface de la courbe de liaison a évolué entre les versions mineures.Configuration
Les démonstrations ici reflètent les fichiers dansraydium-sdk-V2-demo/src/launchpad. L’amorçage suit le config.ts.template du dépôt de démonstration :
Créer un lancement
Source :src/launchpad/createMint.ts (et createBonkMintApi.ts pour la variante Bonk pilotée par l’API)
La plupart des paramètres économiques du lancement ne sont pas des arguments — ils proviennent de la GlobalConfig que vous liez via configId, et le SDK remplit le reste à partir des paramètres par défaut de l’API. Vous transmettez l’identité du mint, la configuration à lier et (optionnellement) un premier achat :
- Il n’y a pas d’argument
curveType,graduationFractionBps,initialK,quoteMint,openTime,feesoupostGraduationLpPolicy. La forme de la courbe et le mint de cotation sont des propriétés de laGlobalConfigque vous liez ; les taux de frais vivent surGlobalConfigetPlatformConfig; l’élimination des LP à la graduation est un paramètrePlatformConfig. Voirproducts/launchlab/instructionspour savoir exactement ce queInitializeV2accepte. - Un
symbolplus long que 10 caractères et unurivide sont tous deux rejetés côté client avant tout RPC. - Passer
transferFeeExtensionParamsbascule le générateur versInitializeWithToken2022et forcemigrateTypeà"cpmm". - Le générateur retourne un tableau
transactions;createOnly: falseajoute la transaction du premier achat. Toujoursexecute({ sequentially: true })— le mint doit exister avant que l’achat ne soit enregistré.
Récupérer l’état du lancement
Source :src/launchpad/poolInfo.ts
Il n’y a pas de getLaunchById. L’ID du pool est un PDA de (programId, mintA, mintB), et getRpcPoolInfo retourne le PoolState décodé avec sa configInfo liée attachée :
getRpcPoolsInfo({ poolIdList }) est la forme par lot et retourne une poolInfoMap indexée par ID de pool — utilisez-la pour les vues de portefeuille au lieu de boucler. Si vous voulez décoder les comptes bruts vous-même, LaunchpadPool.decode et LaunchpadConfig.decode sont exportés.
Acheter — cotation exacte en entrée
Source :src/launchpad/buy.ts
L’assistant de cotation hors chaîne est Curve.buyExactIn, une méthode statique sur la classe Curve exportée — pas une méthode sur raydium.launchpad. Le générateur de transactions est buyToken. Les deux ont besoin des taux de frais de la plateforme, qui vivent sur un compte PlatformConfig séparé :
minMintAAmount explicitement au lieu de slippage ; omettez les deux et le SDK calcule la limite à partir des données RPC en direct. shareFeeRate ne doit pas dépasser poolInfo.configInfo.maxShareFeeRate, et il ne s’applique que si vous passez également un shareFeeReceiver.
Acheter — sortie de base exacte
Le générateur estbuyTokenExactOut, et les arguments de montant sont outAmount (base que vous voulez) et maxBuyAmount (cotation que vous dépenserez au maximum). Curve.buyExactOut({ poolInfo, amountA, ... }) est l’aperçu hors chaîne correspondant.
outAmount de zéro côté client, et le programme revient si la courbe a bougé suffisamment pour que l’exigence de cotation dépasse maxBuyAmount.
Vendre
Source :src/launchpad/sell.ts
Le générateur est sellToken (sellTokenExactOut pour la variante de sortie de cotation exacte), avec sellAmount et un minAmountB optionnel. Curve.sellExactIn({ poolInfo, amountA, ... }) l’aperçoit.
real_a par sellAmount retourne quote_out égal à la zone intégrée sous la courbe entre real_a − sellAmount et real_a, moins les frais de vente. sellAmount doit être supérieur à zéro — le générateur rejette zéro avant tout RPC.
Graduation
Ces portefeuilles sont exploités par le crank de graduation de Raydium, donc en pratique la migration se produit quelques secondes après le franchissement du seuil, quel que soit celui qui a effectué l’achat final. Du côté d’un intégrateur, la seule chose à faire est de traiter la transition d’état comme un événement rapide : interrogergetRpcPoolInfo (ou s’abonner via gRPC, ci-dessous) et basculer votre interface de la courbe au pool CPMM résultant quand status change.
Voir products/launchlab/instructions pour les listes de comptes, les frais de migration et la façon dont les LP sont divisés à la graduation.
Collecter les frais du créateur
Source :src/launchpad/claimCreatorFee.ts (mint unique) et collectAllCreatorFees.ts (par lot)
La méthode est claimCreatorFee (et claimMultipleCreatorFee pour la forme par lot). Elle est indexée par le mint de cotation, pas par un lancement — un appel balaie les frais de créateur accumulés du signataire dans ce mint sur tous ses lancements :
claimPlatformFee / claimAllPlatformFee / claimVaultPlatformFee.
Suivre un lancement tout au long de son cycle de vie
En mettant tout ensemble, un script de surveillance pourrait ressembler à :getRpcPoolInfo sur un minuteur de 10 secondes est correct pour un seul lancement. Pour un indexeur, utilisez plutôt l’abonnement gRPC ci-dessous — getRpcPoolsInfo({ poolIdList }) fait des lots, mais interroger des centaines de pools brûle toujours les crédits RPC sans bénéfice.
Surveiller les configurations et les pools via gRPC
Source :src/grpc/launchpadPoolInfo.ts
S’abonne au programme LaunchLab via Yellowstone gRPC et enregistre chaque mise à jour de GlobalConfig et PoolState avec le programme de jetons de chaque mint. Deux filtres datasize sur un abonnement accounts séparent les deux types de comptes, donc un seul flux couvre les deux.
La démonstration est la référence la plus courte et correcte pour classer les mints d’un lancement, ce que la version Token-2022 quote-mint release rend nécessaire :
- Les pools sont classés directement à partir de
PoolState.token_program_flag, en décodant le bit0 pour le mint de base et le bit1 pour le mint de cotation sans aucune récupération de mint. Tester l’octet entier contre0— ce qui était suffisant tandis que les mints de cotation étaient uniquement hérités — mésinterprète un mint de base hérité comme Token-2022 chaque fois que le mint de cotation est Token-2022. - Les configurations ne peuvent pas être classées de cette façon : une
GlobalConfigstocke l’adresse de son mint de cotation et aucun drapeau de programme, donc la démonstration lit le propriétaire du compte mint une fois et le met en cache par mint.
getProgramAccounts ; avec cet amorçage désactivé, lisez « créer » comme « d’abord vu sur ce flux ».
L’accès gRPC ne fait pas partie de la surface RPC publique — voir le src/grpc/README.md du dépôt de démonstration.
Rust CPI
Appeler LaunchLab à partir de votre propre programme Anchor est rare (la plupart des intégrations de lancement sont uniquement du côté TS). Si vous le faites :- La caisse est
raydium-launchpad(nom de libraydium_launchpad), version0.2.0, et elle expose une fonctionnalitécpi. Il n’y a pas deraydium_launchlab. - Elle n’est pas publiée sur crates.io — dépendez-en par révision git, de la même manière que les autres caisses de programme Raydium.
- Les points d’entrée CPI sont nommés d’après les instructions sur chaîne, pas d’après les méthodes TypeScript du SDK :
buy_exact_in,buy_exact_out,sell_exact_in,sell_exact_out,claim_creator_fee,create_vesting_account,claim_vested_token.migrate_to_amm/migrate_to_cpswapsont limités par signataire aux portefeuilles de migrationGlobalConfiget ne sont pas appelables à partir d’un programme intégrateur.
sdk-api/rust-cpi pour les règles d’épinglage de caisse — en particulier la division de version Anchor, qui décide si une caisse peut faire du CPI dans LaunchLab et CLMM.
Pièges
- Confondre les noms d’instructions sur chaîne avec les noms de méthodes du SDK. Le programme a
buy_exact_in/sell_exact_in; le SDK abuyToken/sellToken.buyExactInetsellExactInn’existent que comme méthodes statiques surCurve, et ils calculent une cotation — ils ne construisent pas une transaction. - Oublier
extraSigners.createLaunchpadcrée le mint de base à partir d’une paire de clés que vous générez, donc cette paire de clés doit signer. OmettezextraSigners: [pair]et la transaction échoue la vérification de signature. - Ne pas choisir le mint de cotation. Vous n’en transmettez pas un. Le mint de cotation est une propriété de la
GlobalConfigque vous liez viaconfigId—getPdaLaunchpadConfigId(programId, quoteMint, curveType, index). Pour lancer contre un mint de cotation différent, liez une configuration différente ;raydium.api.fetchLaunchConfigs()répertorie les configurations disponibles avec leurs paramètres par défaut. - Taille des métadonnées. Les longues chaînes
uripoussent le CPI Metaplex au-delà du budget. Gardezurisous ~200 caractères — la plupart des métadonnées JSON hébergées sur CDN s’adaptent facilement.symbolest plafonné à 10 caractères. - Traiter la graduation comme une course dans laquelle vous pouvez entrer. Ce n’est pas le cas — voir l’avertissement ci-dessus. Votre interface devrait toujours traiter les transitions
statuscomme des événements rapides, car le crank de Raydium enregistre la migration quelques secondes après le franchissement du seuil.
Où aller ensuite
products/launchlab/bonding-curve— mathématiques de la courbe.products/cpmm/code-demos— quoi faire avec le pool résultant.user-flows/launch-token-launchlab— le guide de lancement de jeton de bout en bout, y compris les étapes hors chaîne.
- Raydium SDK v2
- Source du programme Raydium LaunchLab

