Passer au contenu principal
Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
Source de référence. Les tableaux ci-dessous sont régénérés à partir du fichier error.rs de chaque programme dans les dépôts publics Raydium. Lorsqu’un programme est mis à jour et qu’une nouvelle variante est ajoutée, relancez l’extraction (lien en bas de chaque tableau) et ajoutez la ligne à la fin du tableau sans réorganiser l’ordre existant — Anchor assigne les codes d’erreur selon l’ordre dans le code source, pas selon le nom, donc tout réordonnancement casse la gestion d’erreurs des intégrateurs.

Fonctionnement des codes d’erreur Anchor

Anchor attribue à chaque variante de l’enum ErrorCode d’un programme un code numérique à partir de 6000. Une transaction en échec expose :
  • Le code d’erreur numérique (p. ex. 0x1771 = 6001) dans les logs de transaction.
  • Le nom de l’erreur (p. ex. InvalidOwner) issu de l’IDL.
  • La chaîne #[msg(...)] qu’Anchor a émise dans log_messages.
Les intégrateurs doivent faire correspondre les erreurs sur le code numérique, pas sur la chaîne de message (celle-ci peut être reformulée sans incrémenter de version).

Erreurs CPMM (AMM Standard)

Program ID : voir reference/program-addresses. Source : raydium-cp-swap/programs/cp-swap/src/error.rs. Source de régénération : github.com/raydium-io/raydium-cp-swap — error.rs.

Erreurs CLMM

Program ID : voir reference/program-addresses. Source : raydium-clmm/programs/amm/src/error.rs.
Note sur la renumérotation. L’enum ErrorCode du CLMM a été renumérotée dans cette version : cinq variantes héritées (LOK, ZeroMintAmount, InvalidLiquidity, TransactionTooOld, InvalidRewardDesiredAmount) et plusieurs fautes de frappe (Liquitity, enought, emissiones) ont été supprimées ou corrigées, et onze nouvelles variantes ont été ajoutées à la fin. Anchor numérotant les erreurs selon l’ordre dans le code source, tous les codes à partir de 6000 ont décalé par rapport aux versions pré-release. Les clients ayant codé en dur des codes numériques pour une version antérieure doivent effectuer une correspondance.
Source de régénération : github.com/raydium-io/raydium-clmm — error.rs.

Erreurs AMM v4, Farm v3 / v5 / v6, LaunchLab

Ces programmes sont documentés dans leurs chapitres respectifs (voir products/amm-v4/instructions, products/farm-staking/instructions, products/launchlab/instructions). Ces programmes utilisant un mélange de surfaces d’erreur Anchor et Solana brutes, leurs tableaux d’erreurs se trouvent à côté de la référence d’instructions plutôt qu’ici. Les codes ci-dessous sont réservés par ces chapitres :

Correspondance entre erreurs SDK et erreurs de programme

Le SDK TypeScript officiel encapsule les erreurs on-chain dans SendTransactionError et, pour les programmes Anchor, dans AnchorError :
Si vous n’utilisez pas le client Anchor, analysez les logs de transaction :
Le motif Error Number: (\d+) est stable entre les versions d’Anchor et peut être utilisé sans risque pour les correspondances.

Régénération de ces tableaux

Lorsqu’un programme est mis à jour et ajoute une nouvelle erreur, réextrayez depuis le code source :
Mettez toujours à jour reference/changelog lorsqu’une nouvelle variante est ajoutée, afin que les intégrateurs qui mettent à jour le SDK sachent qu’ils doivent actualiser leurs gestionnaires d’erreurs. Sources :