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 →
Les programmes plus récents de Raydium (CPMM, CLMM, Farm v6, LaunchLab) sont écrits en Anchor — un framework Rust qui s’appuie sur le modèle natif de Solana pour fournir la validation de comptes, la gestion des erreurs et une IDL (interface description). AMM v4 et les farms plus anciennes antérieures à Anchor. Comprendre les deux paradigmes vous aide à lire le code, générer des clients à partir de l’IDL et déboguer les erreurs inattendues.
Modèle de déploiement des programmes
Chaque programme Solana réside à unePubkey. Le bytecode du programme est stocké dans un compte executable appartenant au BPF Upgradable Loader (BPFLoaderUpgradeab1e11111111111111111111111).
Un déploiement de programme comprend trois comptes :
- Compte programme : petit compte de métadonnées à l’ID du programme. Propriétaire : BPF Upgradable Loader.
- Compte ProgramData : contient le bytecode réel. Dérivé comme
[program_id, "programdata"]. - Compte Buffer (transitoire) : contient le nouveau bytecode pendant une mise à niveau. Supprimé après la mise à niveau.
security/admin-and-multisig.
Vérifier un programme déployé
Pour confirmer que ce qui est on-chain correspond à la source approuvée par l’audit :Anchor : un framework au-dessus de Solana
Les programmes Solana bruts sont des fonctions Rust avec cette signature :- Génère automatiquement un discriminateur de 8 octets déterministe pour chaque instruction et chaque type de compte.
- Valide les contraintes de compte (propriétaire, seeds, writable, signer, mint-matches, token-program-matches) avant l’exécution de votre code.
- Génère une IDL — un fichier de description d’interface que les clients utilisent pour appeler le programme.
- Est livré avec une bibliothèque client Rust, TypeScript et Python.
Le discriminateur de 8 octets
Chaque compte Anchor et chaque instruction Anchor commence par un discriminateur de 8 octets — les 8 premiers octets du SHA-256 d’une chaîne fixe :getProgramAccounts qui énumèrent tous les comptes d’un type.
Erreurs
Les programmes Anchor définissent les erreurs via#[error_code] :
reference/error-codes.
L’IDL
Un fichier IDL (Interface Description Language) Anchor est une description JSON d’un programme : ses instructions, comptes, types, erreurs et événements. C’est l’équivalent d’un ABI Ethereum. Raydium publie des IDLs pour tous les programmes Anchor. Récupérez en direct on-chain :src/raydium/*/idl/*.json.
Structure de l’IDL
Générer un client à partir de l’IDL
La CLIanchor d’Anchor génère les types TypeScript et Rust :
Quand l’IDL est votre ami
Si vous voulez construire une intégration personnalisée qui ne passe pas par le SDK Raydium :- Récupérez l’IDL (en direct on-chain ou depuis la source du SDK).
- Recherchez l’instruction que vous voulez (par ex.,
swap_base_input). - Construisez les données d’instruction : discriminateur de 8 octets + args encodés.
- Passez les comptes dans l’ordre spécifié par l’IDL.
sdk-api/anchor-idl pour des exemples détaillés.
Programmes pré-Anchor : AMM v4 et Farm v3/v5
Ces programmes antérieures à Anchor. Ils utilisent :- Dispatch manuel d’instructions : une balise
u8dansinstruction_dataavec une instructionmatch. - Validation manuelle de comptes :
if accounts[0].owner != &expected_program { ... }. - Args d’instruction sérialisés en Borsh : pas de discriminateur, juste
instruction_data[1..]. - Layout via
#[repr(C, packed)]: layout binaire de struct C.
Mécaniques de mise à niveau du programme
Seule l’upgrade_authority de ProgramData peut effectuer une mise à niveau. Étapes :
- Compilez le nouveau bytecode.
- Écrivez-le dans un compte buffer (
solana program write-buffer). - Soumettez une instruction de mise à niveau :
BpfLoaderUpgradeable::Upgrade { buffer, program, authority }. - Le runtime remplace atomiquement le bytecode du programme par le contenu du buffer.
security/admin-and-multisig.
Rendre un programme immuable
Une autorité de mise à niveau peut être définie àNone, auquel cas le programme devient définitivement immuable. Raydium n’a fait cela pour aucun produit — l’équipe conserve la capacité de pousser des correctifs de sécurité. Compromis : les utilisateurs doivent faire confiance au processus multisig + verrou temporel.
Programmes et loyer
Le déploiement d’un programme consomme des lamports exempts de loyer :- Un programme de 50 KB : ~0,35 SOL en loyer.
- Un programme de 200 KB : ~1,4 SOL en loyer.
solana program close) retourne les lamports. Les programmes Raydium restent actifs et ne sont pas prévus pour fermeture.
Déboguer les programmes Anchor
Sortie des logs
La macromsg! d’Anchor écrit dans le log de la transaction. Simulez une transaction pour voir les logs :
- Invocation du programme (
Program CPMMoo8... invoke [1]). - Appels
msg!depuis le code du programme. - Consommation d’unités de calcul (
consumed 137842 of 400000 compute units). - Succès ou erreur du programme.
Codes d’erreur
Si un programme Anchor lève une exception, le log affiche :SlippageExceeded). Comparez avec le tableau errors de l’IDL.
Voir reference/error-codes pour le tableau complet des erreurs de Raydium.
Désaccords de layout de compte
Si vous passez le mauvais compte au mauvais emplacement, les macros de validation de compte d’Anchor retournent des erreurs comme :ErrorCode d’Anchor) ; les erreurs ≥6000 sont les codes personnalisés du programme.
Pointeurs
solana-fundamentals/account-model— comment les programmes possèdent des comptes.solana-fundamentals/pdas-and-cpis— PDAs tels qu’Anchor les déclare.sdk-api/anchor-idl— récupérer et utiliser les IDLs de Raydium.reference/program-addresses— IDs des programmes.reference/error-codes— référence des codes d’erreur.security/admin-and-multisig— contrôles de l’autorité de mise à niveau.
- Anchor book.
- Solana program deployment.
- IDLs Raydium (publiées dans le SDK
src/raydium/*/idl/*.json).


