Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
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émo (source) :
Raydium est la façade du SDK — chaque démo ci-dessous l’utilise. Elle récupère paresseusement les listes de tokens et les configs de frais depuis api-v3.raydium.io ; vous pouvez la pré-remplir avec vos propres données dans les environnements hors ligne.
Créer un pool CPMM
Source :src/cpmm/createCpmmPool.ts
- Tri des mints selon l’ordre token0/token1 avant dérivation du PDA.
- Paiement du
create_pool_feeune seule fois à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 (entrée en base)
Source :src/cpmm/swap.ts
getPoolInfoFromRpc. Ne cotez pas depuis api-v3.raydium.io pour une transaction que vous allez signer — une cotation d’un bloc en retard peut glisser dans ExceededSlippage au moment du règlement.
Swap (sortie en base)
Source :src/cpmm/swapBaseOut.ts
Dépôt de liquidité
Source :src/cpmm/deposit.ts
lpAmount en needed_token_0 et needed_token_1 en utilisant les réserves actuelles du pool, gonfle chacun de 1 + slippage pour les arguments maximum_* de l’instruction, et construit les créations d’ATA si nécessaire.
Retrait de liquidité
Source :src/cpmm/withdraw.ts
Collecter les frais de protocole/fonds/créateur
Source :src/cpmm/collectCreatorFee.ts, src/cpmm/collectAllCreatorFee.ts
Ces instructions sont protégées par un admin ou un créateur et sont généralement invoquées depuis un signataire détenu par le multisig Raydium ou le créateur du pool. Le SDK les expose sous forme de constructeurs bruts :
PoolState :
Squelette CPI Rust
Si vous souhaitez 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 contre CpiContext::new_with_signer et passez vos semences.
Pièges courants
Une courte liste de vérification avant d’ouvrir un ticket de support :- Mints triés. Si votre PDA
poolStatedérivé ne correspond pas au pool en chaîne, vous avez probablement oublié de trier les mints. - Cotation d’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 à 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 ce que le coffre envoie. NotApprovedsur un swap. VérifiezPoolState.status— l’admin peut avoir mis en pause les swaps sur ce pool. Consultezproducts/cpmm/instructionspour le masque de statut.
Par la suite
sdk-api/typescript-sdk— référence SDK complète.sdk-api/rest-api— points de terminaison de cotation et de métadonnées de pools.user-flows/create-cpmm-pool— la procédure pas à pas non-code du même flux.integration-guides/aggregator— si vous acheminez CPMM dans le cadre d’un chemin multi-hops.

