Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
Bannière de version. Tous les démonstrations TypeScript ciblent
@raydium-io/raydium-sdk-v2@0.2.42-alpha sur Solana mainnet-beta, vérifiées en avril 2026. Le squelette CPI Rust cible raydium-cp-swap sur la branche master, Anchor 0.30.x. 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. Elle récupère paresseusement les listes de tokens et les configurations de frais depuis api-v3.raydium.io ; vous pouvez l’initialiser avec vos propres données dans les environnements hors ligne.
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) de chaque côté.
Swap (base-input)
Source :src/cpmm/swap.ts
getPoolInfoFromRpc. Ne cotez pas à partir de 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 du débarquement.
Swap (base-output)
Source :src/cpmm/swapBaseOut.ts
Déposer de la liquidité
Source :src/cpmm/deposit.ts
lpAmount en needed_token_0 et needed_token_1 en utilisant les réserves actuelles du pool, augmente chacun de 1 + slippage pour les arguments maximum_* de l’instruction, et construit les créations d’ATA si nécessaire.
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 existant, 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. Le SDK épinglé expose les constructeurs bruts existants :
PoolState :
Squelette CPI Rust
Si vous souhaitez invoquer CPMM depuis votre propre programme Anchor — par exemple, un coffre-fort qui swapper 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é 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 coffre-fort 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-fort 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.

