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 la branche chore/upgrade-anchor, Anchor 1.0.2 — master épingle toujours 0.32.1. 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’initialisation suit le fichier 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 paresseusement à la première utilisation via raydium.api.getCpmmConfigs().
Créer un pool CPMM
Source :src/cpmm/createCpmmPool.ts
- Trier les mints dans l’ordre token0/token1 avant de dériver la PDA.
- Payer les frais uniques
create_pool_feeàpoolFeeAccount. - Créer les comptes de tokens associés de l’appelant s’ils manquent.
- Choisir le 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 depuis api-v3.raydium.io pour une transaction que vous êtes sur le point de signer — une cotation qui a un bloc de retard peut glisser dans ExceededSlippage au moment de l’exécution.
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 de protocole et de fonds reste contrôlée par l’autorité. Les frais de créateur ont 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 ATA canoniques du créateur. 0.2.64-alpha expédie des constructeurs au niveau du module pour les deux chemins de créateur :
Les deux instructions de créateur ont des discriminateurs et des dispositions de comptes différents — celle sans permission remplace le signataire du créateur par un
payer séparé et un creator non signataire. Utilisez le constructeur correspondant plutôt que de permuter manuellement les comptes sur l’autre.Il n’y a pas de constructeur de 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 constructeur. Les constructeurs d’instructions de bas niveau qui existent sont collectCpFeeInstruction, makeCollectCreatorFeeInstruction et collectCreatorFeePermissionlessInInstruction.PoolState :
Squelette CPI Rust
Si vous voulez invoquer CPMM depuis votre propre programme Anchor — par exemple, un vault qui 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 graines.
Pièges courants
Une courte liste de contrôle avant d’ouvrir un ticket d’assistance :- Mints triés. Si votre PDA
poolStatedérivée ne correspond pas au pool on-chain, vous avez probablement oublié de trier les mints. - Cotation 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 tokens. Le vault 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 libellé en ce que l’utilisateur reçoit réellement, pas en ce que le vault 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 cotation 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.

