Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
Banneau de version. Tous les démonstrations TypeScript ciblent
@raydium-io/raydium-sdk-v2@0.2.64-alpha ; elles ont été exécutées pour la dernière fois contre 0.2.42-alpha (2026-04) et leurs signatures d’appel ont été revérifiées contre la source 0.2.64-alpha le 2026-09-09, sur Solana mainnet-beta. Le squelette CPI Rust cible raydium-cp-swap sur master, Anchor 1.0.2. Les ID de programme sont extraits via des constantes de reference/program-addresses.Prérequis
raydium-sdk-V2-demo/src/cpmm ; le lien GitHub se trouve à côté de chaque section. L’amorçage suit le config.ts.template du dépôt de démonstration (source) :
Raydium est la façade du SDK — chaque démonstration ci-dessous l’utilise. Raydium.load est asynchrone car elle charge la liste des tokens par défaut ; passez disableLoadToken: true pour ignorer cette récupération. La vérification de disponibilité des fonctionnalités est déjà ignorée sauf si vous passez disableFeatureCheck: false. Les configurations de frais sont récupérées de manière différée à la première utilisation via raydium.api.getCpmmConfigs().
Créer un pool CPMM
Source :src/cpmm/createCpmmPool.ts
- Tri des mints dans l’ordre token0/token1 avant de dériver le PDA.
- Paiement des frais uniques
create_pool_feeàpoolFeeAccount. - Création des comptes de tokens associés de l’appelant s’ils manquent.
- Choix du bon programme de tokens (SPL Token vs Token-2022) par côté.
Swap (entrée de base)
Source :src/cpmm/swap.ts
getPoolInfoFromRpc. Ne cotez pas hors de api-v3.raydium.io pour une transaction que vous êtes sur le point de signer — une cotation qui est d’un bloc obsolète peut glisser dans ExceededSlippage au moment de l’atterrissage.
Swap (sortie de base)
Source :src/cpmm/swapBaseOut.ts
Déposer de la liquidité
Source :src/cpmm/deposit.ts
maximum_* de l’instruction, et construit les créations d’ATA si nécessaire. raydium.cpmm.computePairAmount({ ... }) retourne les mêmes nombres si vous les voulez pour un aperçu d’interface utilisateur.
Retirer de la liquidité
Source :src/cpmm/withdraw.ts
Collecter les frais de protocole/fonds/créateur
Source :src/cpmm/collectCreatorFee.ts, src/cpmm/collectAllCreatorFee.ts
La collecte des frais de protocole et de fonds reste soumise à une autorité. Les frais de créateur suivent deux chemins : le CollectCreatorFee signé par le créateur, et le CollectCreatorFeePermissionless additif, que n’importe quel payeur peut invoquer mais qui ne peut transférer que vers les ATAs canoniques du créateur. La version 0.2.64-alpha fournit des builders au niveau du module pour les deux chemins du créateur :
Les deux instructions de créateur ont des discriminateurs et des dispositions de comptes différents — celle sans permission remplace le signataire créateur par un
payer séparé et un creator non-signataire. Utilisez le builder correspondant plutôt que d’échanger manuellement les comptes sur l’autre.Il n’y a pas de builder pour les frais de protocole ou de fonds dans le SDK (makeCollectProtocolFeeInstruction et makeCollectFundFeeInstruction n’existent sous aucun nom) — ce sont des chemins d’administration, tout comme CreateCreatorFeeShare / CloseCreatorFeeShare, qui n’ont pas non plus de builder. Les builders d’instructions bas niveau qui existent sont collectCpFeeInstruction, makeCollectCreatorFeeInstruction et collectCreatorFeePermissionlessInInstruction.PoolState :
Squelette Rust CPI
Si vous voulez invoquer CPMM depuis votre propre programme Anchor — par exemple, un coffre qui effectue des swaps au nom de ses déposants — le contexte CPI ressemble à ceci. L’ordre des comptes suitproducts/cpmm/instructions.
CpiContext::new par CpiContext::new_with_signer et passez vos seeds.
Pièges courants
Une courte liste de vérification avant d’ouvrir un ticket de support :- Mints triés. Si votre PDA
poolStatedérivée ne correspond pas au pool en chaîne, vous avez probablement oublié de trier les mints. - Devis API obsolète. Ne passez jamais une valeur de réserve de
api-v3.raydium.iodansCurveCalculator.swap. Récupérez depuis un RPC. - Mauvais programme de token. Le coffre d’un mint Token-2022 est détenu par le programme Token-2022, pas par SPL Token. Utilisez toujours les champs
token_0_program/token_1_programdu pool. - Slippage sous-dénominé pour les mints avec frais de transfert. Si l’un ou l’autre côté du pool est un mint Token-2022 avec frais de transfert, votre
minimum_amount_outdoit être dénominé en ce que l’utilisateur reçoit réellement, pas en ce que le coffre envoie. NotApprovedsur un swap. VérifiezPoolState.status— l’administrateur peut avoir mis en pause les swaps sur ce pool. Voirproducts/cpmm/instructionspour le masque de statut.
Où aller ensuite
sdk-api/typescript-sdk— référence complète du SDK.sdk-api/rest-api— points de terminaison de devis et de métadonnées de pool.user-flows/create-cpmm-pool— la procédure pas à pas sans code du même flux.integration-guides/aggregator— si vous routez CPMM dans le cadre d’un chemin multi-sauts.

