Documentation Index
Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
Use this file to discover all available pages before exploring further.
Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
CPI (« cross-program invocation ») est le mécanisme par lequel un programme Solana en appelle un autre. Les programmes Anchor de Raydium disposent de caisses d’enveloppe CPI qui rendent l’appel à l’émetteur similaire à un appel de fonction typée — structures de compte avec des noms de champs validés et des assistants
cpi::<ix>(). Cette page documente le motif général ; pour les extraits spécifiques aux produits, consultez la page des démos de code de chaque chapitre de produit.Dépendances Cargo
cpi fait en sorte que les caisses se compilent en seulement la surface CPI (structures de compte + invocateurs) plutôt que le programme complet, de sorte que votre binaire reste petit.
Pour des exemples CPI fonctionnels qui câblent les structures de compte de bout en bout, consultez raydium-io/raydium-cpi-example (couvre AMM v4, CPMM et CLMM).
Construction de la liste des comptes
Chaque CPI de Raydium nécessite une structureAccounts dans le programme appelant. Les champs correspondent à l’ordre des comptes d’instruction du programme 1 pour 1, avec des validateurs au niveau des champs :
UncheckedAccount car l’appelé (Raydium) est responsable de la validation. Votre programme appelant valide uniquement strictement les comptes que vous possédez — les ATA des utilisateurs, vos propres PDA. Le commentaire de documentation /// CHECK: supprime l’avertissement d’Anchor concernant les vérifications manquantes.
Construction de l’appel CPI
Anchor génère un assisteur par instruction :cpi::swap_base_input est généré à partir de l’IDL ; sa liste d’arguments reflète celle de l’instruction Anchor.
Graines de signature (CPI signée par PDA)
Quand votre programme signe le CPI au nom d’une PDA (courant pour les coffres, dépôts fiduciaires, etc.), utilisezCpiContext::new_with_signer :
authority (ou rôle de signataire similaire), l’exécution Solana vérifie que la PDA signe via ces graines.
Comptes restants
Certaines instructions Raydium prennent des comptes restants — une liste de longueur variable ajoutée après les comptes fixes. Les exemples canoniques :- CLMM
SwapV2: ajoute 1–8 comptesTickArrayStatecorrespondant aux réseaux de tick que le swap pourrait traverser. - Farm v6
Deposit: ajoute des paires(reward_vault, user_reward_ata)pour chaque flux de récompense actif.
.with_remaining_accounts(...) :
Propagation d’erreur
Les programmes de Raydium retournent leurs propres énumérations d’erreur. Anchor les enveloppe ; votre programme appelant les voit commeErr(ProgramError::Custom(code)). Pour gérer des erreurs spécifiques :
sdk-api/anchor-idl). Vous pouvez tester des codes spécifiques en comparant avec la valeur numérique.
Budget de calcul dans les CPI composés
Chaque frame CPI a une surcharge (~1 500 CU pour l’appel lui-même), et la propre consommation CU de l’appelé s’ajoute à la vôtre. Une transaction qui appelle le swap CPMM depuis votre programme dépense :ComputeBudgetProgram::set_compute_unit_limit(...) explicite dans la transaction — la limite par défaut de 200k CU s’épuisera silencieusement.
AMM v4 — construction manuelle d’Instruction
AMM v4 n’a pas de caisse Anchor. ConstruisezInstruction manuellement :
products/amm-v4/code-demos pour la liste complète des comptes.
Farm v6 — comptes restants de paires de récompenses
Farm v6’sDeposit / Withdraw / Harvest utilisent le motif de paires (reward_vault_i, user_reward_ata_i) dans les comptes restants. Séquence exacte :
farm_state.reward_infos[i].reward_state.
Tester un flux CPI
Le dev local nécessite que les programmes Raydium soient disponibles dans votre validateur de test. Options :-
anchor testavec clonage de programme — dansAnchor.toml:Cela récupère le bytecode déployé du mainnet dans votre validateur local. -
Devnet — Raydium déploie tous les programmes sur devnet avec les mêmes ID de programme que le mainnet. Exécutez
anchor test --provider.cluster devnetpour atteindre le code en direct. -
Déploiement local — clonez les dépôts Raydium et
anchor deploysur un validateur local. Ajoute une surcharge de cycle de test mais vous permet de modifier l’appelé pour le débogage.
Pointeurs
products/cpmm/code-demos,products/clmm/code-demos,products/amm-v4/code-demos,products/farm-staking/code-demos— exemples CPI spécifiques aux produits.sdk-api/anchor-idl— récupération IDL et régénération de client.integration-guides/cpi-integration— motifs de niveau supérieur : dépôts fiduciaires, coffres, composition d’agrégateur.


