Passer au contenu principal

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 →
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).
// Example: detect the CPMM slippage error and surface a clean UX message.
const CPMM_EXCEEDED_SLIPPAGE = 6005;

try {
  await sdk.cpmm.swap({ ... });
} catch (err: any) {
  const code = err?.error?.errorCode?.number ?? err?.code;
  if (code === CPMM_EXCEEDED_SLIPPAGE) {
    showToast("Price moved past your slippage tolerance. Increase slippage or retry.");
    return;
  }
  throw err;
}

Erreurs CPMM (AMM Standard)

Program ID : voir reference/program-addresses. Source : raydium-cp-swap/programs/cp-swap/src/error.rs.
CodeVarianteChaîne #[msg]Cause typiqueMessage UX recommandé
6000NotApprovedNot approvedL’appelant n’est pas l’autorité configurée pour une instruction d’administration.« Seul l’administrateur du pool peut effectuer cette action. »
6001InvalidOwnerInput account owner is not the program addressUn compte transmis appartient au mauvais programme (souvent un mauvais programme de tokens ou un PDA du mauvais programme).« Erreur interne : propriétaire de compte incorrect — actualisez et réessayez. »
6002EmptySupplyInput token account emptyLe solde du compte LP ou de tokens est nul à une étape qui requiert un montant positif.« Rien à retirer. »
6003InvalidInputInvalidInputArgument générique invalide (montant hors plage, flag incorrect).« Entrée invalide — vérifiez les montants et réessayez. »
6004IncorrectLpMintAddress of the provided lp token mint is incorrectLe compte mint LP transmis ne correspond pas à pool_state.lp_mint.« Erreur interne : mauvais mint LP — actualisez les données du pool. »
6005ExceededSlippageExceeds desired slippage limitLe prix d’exécution est moins favorable que le minAmountOut / maxAmountIn de l’utilisateur.« Le prix a dépassé votre tolérance au slippage. Augmentez le slippage ou réessayez. »
6006ZeroTradingTokensGiven pool token amount results in zero trading tokensLe calcul du dépôt / retrait a arrondi un côté à zéro (position trop petite).« Le montant est inférieur au minimum pour ce pool. »
6007NotSupportMintNot support token_2022 mint extension (grammaire dans le source)Le pool a rencontré une extension Token-2022 qu’il ne peut pas gérer de façon sûre (p. ex. TransferHook, DefaultAccountState=Frozen).« Ce token possède une extension non prise en charge par Raydium dans CPMM. »
6008InvalidVaultinvaild vault (faute de frappe dans le source)Le compte vault transmis ne correspond pas à celui enregistré dans pool_state.« Erreur interne : mauvais vault — actualisez et réessayez. »
6009InitLpAmountTooLessInit lp amount is too less(Because 100 amount lp will be locked) (grammaire dans le source)À l’initialisation du pool, l’offre LP calculée est inférieure au montant de verrouillage permanent.« Liquidité initiale trop faible. Augmentez le dépôt. »
6010TransferFeeCalculateNotMatchTransferFee calculate not matchLe montant post-transfert observé pour un mint Token-2022 avec frais ne correspond pas à l’estimation pré-calculée.« Les frais de transfert de token ont changé en cours de transaction. Réessayez. »
6011MathOverflowMath overflowUn calcul intermédiaire de swap / dépôt / frais a provoqué un dépassement arithmétique.« Le montant est trop élevé pour ce pool. »
6012InsufficientVaultInsufficient vaultLe solde du vault du pool est trop faible pour couvrir la sortie demandée.« Liquidité insuffisante dans le pool pour cette taille. »
6013InvalidFeeModelInvalid fee modelL’administrateur a défini une combinaison de paramètres AmmConfig rejetée on-chain.N/A — chemin réservé à l’administration.
6014NoFeeCollectFee is zerocollect_protocol_fee / collect_fund_fee appelé alors que les frais collectables sont nuls.N/A — chemin admin ; l’outillage doit ignorer silencieusement.
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.
CodeVarianteChaîne #[msg]Cause typiqueMessage UX recommandé
6000NotApprovedNot approvedL’appelant n’est pas l’administrateur configuré pour cette instruction.« Seul l’administrateur du pool peut effectuer cette action. »
6001InvalidUpdateConfigFlaginvalid update amm config flagL’administrateur a transmis une valeur param non reconnue à update_amm_config.N/A — chemin réservé à l’administration.
6002AccountLackAccount lackUn compte restant requis est absent de la transaction (généralement un tick-array ou une extension oracle).« Erreur interne : compte manquant — actualisez les données du pool. »
6003ClosePositionErrRemove liquidity, collect fees owed and reward then you can close position accountTentative de fermeture d’une position qui contient encore de la liquidité, des frais non collectés ou des récompenses non collectées.« Retirez toute la liquidité et réclamez les frais/récompenses avant de fermer la position. »
6004InvalidTickIndexTick out of rangetick_lower ou tick_upper est en dehors de [-443636, 443636].« La plage de prix est hors limites pour ce pool. »
6005TickInvalidOrderThe lower tick must be below the upper ticktick_lower >= tick_upper.« Le prix inférieur doit être en dessous du prix supérieur. »
6006TickLowerOverflowThe tick must be greater, or equal to the minimum tick(-443636)Dépassement inférieur du tick bas.« Prix inférieur trop bas. »
6007TickUpperOverflowThe tick must be lesser than, or equal to the maximum tick(443636)Dépassement supérieur du tick haut.« Prix supérieur trop élevé. »
6008TickAndSpacingNotMatchtick % tick_spacing must be zeroLe tick soumis n’est pas un multiple du tick_spacing du pool.« Alignez le prix sur l’incrément valide le plus proche. »
6009InvalidTickArrayInvalid tick array accountUn mauvais PDA a été transmis pour un slot de tick-array.« Erreur interne : mauvais tick array — actualisez les données du pool. »
6010InvalidTickArrayBoundaryInvalid tick array boundaryErreur de décalage d’un dans l’indexation des tick-arrays.« Erreur interne : erreur de limite de tick-array. »
6011SqrtPriceLimitOverflowSquare root price limit overflowLe sqrt_price_limit fourni par l’appelant est en dehors de la plage valide.« Limite de prix hors plage. »
6012SqrtPriceX64sqrt_price_x64 out of rangeLe sqrt price actuel du pool a dérivé hors de la plage en cours de swap.« Réessayez le swap. »
6013LiquiditySubValueErrLiquidity sub delta L must be smaller than beforeViolation d’invariant interne lors d’une diminution de liquidité.« Erreur interne : erreur de comptabilité de liquidité. »
6014LiquidityAddValueErrLiquidity add delta L must be greater, or equal to beforeViolation d’invariant interne lors d’une augmentation de liquidité.« Erreur interne : erreur de comptabilité de liquidité. »
6015ForbidBothZeroForSupplyLiquidityBoth token amount must not be zero while supply liquidityAppel d’augmentation de liquidité avec amount_0_max et amount_1_max tous deux à zéro.« Fournissez au moins un token. »
6016LiquidityInsufficientLiquidity insufficientLa position ne dispose pas de suffisamment de liquidité pour satisfaire le retrait.« Le montant de retrait dépasse la liquidité de la position. »
6017PriceSlippageCheckPrice slippage checkLe prix d’exécution a échoué à la vérification de slippage de l’appelant.« Le prix a dépassé votre tolérance au slippage. Augmentez le slippage ou réessayez. »
6018TooLittleOutputReceivedToo little output receivedSwapBaseInput : montant de sortie inférieur à other_amount_threshold.« Slippage dépassé — sortie minimale non atteinte. »
6019TooMuchInputPaidToo much input paidSwapBaseOutput : montant d’entrée supérieur à other_amount_threshold.« Slippage dépassé — entrée maximale dépassée. »
6020ZeroAmountSpecifiedSwap special amount can not be zeroMontant amount nul dans une instruction de swap.« Saisissez un montant supérieur à zéro. »
6021InvalidInputPoolVaultInput pool vault is invalidLe compte vault d’entrée du swap ne correspond pas au vault enregistré dans le pool.« Erreur interne : mauvais vault d’entrée — actualisez les données du pool. »
6022TooSmallInputOrOutputAmountSwap input or output amount is too smallLe calcul du swap a arrondi à zéro, généralement pour de très petites quantités résiduelles.« Montant trop faible pour être swappé dans ce pool. »
6023NotEnoughTickArrayAccountNot enough tick array accountPas assez de comptes tick-array restants fournis pour la plage du swap.« Erreur interne : tick-arrays insuffisants — actualisez les données du pool. »
6024InvalidFirstTickArrayAccountInvalid first tick array accountLe premier compte tick-array transmis ne couvre pas le tick actuel.« Erreur interne : mauvais premier tick array — actualisez les données du pool. »
6025InvalidRewardIndexInvalid reward indexreward_index en dehors de [0, 2].N/A — chemin admin.
6026FullRewardInfoThe init reward token reach to the maxLe pool a déjà le nombre maximum (3) de mints de récompense configurés.N/A — chemin admin.
6027RewardTokenAlreadyInUseThe init reward token already in useLe mint de récompense fait doublon avec un existant.N/A — chemin admin.
6028ExceptRewardMintThe reward tokens must contain one of pool vault mint except the last rewardAvant le slot 2, le mint de récompense doit correspondre à l’un des mints de vault du pool.N/A — chemin admin.
6029InvalidRewardInitParamInvalid reward init paramMauvaise heure de début/fin d’émission ou taux par seconde invalide.N/A — chemin admin.
6030InvalidRewardInputAccountNumberInvalid collect reward input account numberNombre incorrect de comptes restants transmis à CollectReward.« Erreur interne : nombre de comptes incorrect — actualisez et réessayez. »
6031InvalidRewardPeriodInvalid reward periodPériode d’émission de récompense invalide (end <= start, durée nulle).N/A — chemin admin.
6032NotApproveUpdateRewardEmissionsModification of emissions is allowed within 72 hours from the end of the previous cycleL’administrateur a tenté de modifier les émissions en dehors de la fenêtre de 72 heures autour des limites de cycle.N/A — chemin admin.
6033UnInitializedRewardInfouninitialized reward infoSlot de récompense référencé mais non initialisé.N/A — chemin admin.
6034NotSupportMintNot support token_2022 mint extensionLe CLMM a rencontré une extension Token-2022 qu’il ne peut pas gérer.« Ce token possède une extension non prise en charge par Raydium CLMM. »
6035MissingTickArrayBitmapExtensionAccountMissing tickarray bitmap extension accountLe swap a franchi une plage de ticks non couverte par le bitmap de base ; le compte bitmap d’extension est requis.« Erreur interne : extension tick-array manquante — actualisez les données du pool. »
6036InsufficientLiquidityForDirectionInsufficient liquidity for this directionLa liquidité est insuffisante dans la direction du swap.« Liquidité insuffisante pour cette taille de swap. »
6037MaxTokenOverflowMax token overflowLe montant d’entrée/sortie dépasse u64.« Montant trop élevé pour ce pool. »
6038CalculateOverflowCalculate overflowDépassement arithmétique dans le calcul des frais / de la liquidité.« Montant trop élevé pour ce pool. »
6039TransferFeeCalculateNotMatchTransferFee calculate not matchLe montant observé lors d’un transfert Token-2022 avec frais ne correspond pas à l’attendu.« Les frais de transfert de token ont changé en cours de transaction. Réessayez. »
6040OrderAlreadyFilledOrder already fully filled, cannot modifyIncreaseLimitOrder / DecreaseLimitOrder appelé sur un ordre dont la portion non exécutée est nulle.« Cet ordre limite est déjà entièrement exécuté — réglez-le pour recevoir la sortie. »
6041InvalidOrderPhaseInvalid order phaseModification d’un ordre dont la phase de cohorte FIFO ne correspond plus à la cohorte actuelle du tick.« Cette action n’est pas possible dans l’état actuel de l’ordre. »
6042InvalidLimitOrderAmountInvalid limit order amountLe montant de l’ordre est inférieur au minimum du pool (ou nul) lors de l’ouverture / augmentation / diminution.« La taille de l’ordre est inférieure au minimum du pool. »
6043OrderPhaseSaturatedTick order phase saturatedLe compteur order_phase de la cohorte sur le tick est saturé ; aucun ordre supplémentaire ne peut être ouvert à ce tick tant que les cohortes existantes ne sont pas réglées et réinitialisées.« Trop d’ordres actifs à ce prix ; essayez un tick voisin ou attendez que des ordres soient réglés. »
6044InvalidDynamicFeeConfigParamsInvalid dynamic fee config paramsCreateDynamicFeeConfig / UpdateDynamicFeeConfig rejeté ; ou CreateCustomizablePool a activé les frais dynamiques sans configuration valide.N/A sur le chemin admin ; « Configuration de frais dynamiques invalide » sur le chemin utilisateur.
6045InvalidFeeOnInvalid fee on which token (must be 0, 1, or 2)CreateCustomizablePool a transmis une valeur collect_fee_on en dehors de {0, 1, 2}.« Erreur interne : mode de frais invalide. »
6046ZeroSqrtPricesqrt_price_x64 must be greater than 0CreateCustomizablePool (ou un autre chemin acceptant un sqrt price initial personnalisable) a été appelé avec sqrt_price_x64 == 0.« Le prix initial doit être supérieur à zéro. »
6047ZeroLiquidityliquidity must be greater than 0Un chemin de fourniture de liquidité a été appelé avec liquidity == 0 sans montant compensatoire.« Le montant de liquidité doit être supérieur à zéro. »
6048MissingBaseFlagbase_flag is required when liquidity is zeroUn chemin d’ouverture de position par montant a calculé liquidity == 0 et l’appelant n’a pas fourni de base_flag pour préciser quel côté est la base.« Fournissez une liquidité non nulle ou indiquez quel token est la base. »
6049MissingMintAccountMint account is required but not providedUn chemin compatible Token-2022 a été appelé sans le compte mint d’entrée/sortie nécessaire pour valider les extensions et les frais de transfert.« Erreur interne : compte mint manquant — actualisez les données du pool. »
6050MissingTokenProgram2022Token-2022 program is required but not providedIdentique au précédent, pour le compte du programme SPL-Token-2022.« Erreur interne : programme Token-2022 manquant — actualisez et réessayez. »
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 :
ProgrammePlage de codes (Anchor uniquement)Référence
AMM v4Codes u32 personnalisés, pas de style Anchorproducts/amm-v4/instructions
Farm v3 / v5Codes u32 personnalisésproducts/farm-staking/instructions
Farm v66000+ (Anchor)products/farm-staking/instructions
LaunchLab6000+ (Anchor)products/launchlab/instructions

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 :
import { AnchorError } from "@coral-xyz/anchor";

try {
  await sdk.cpmm.swap({ ... });
} catch (err) {
  if (err instanceof AnchorError) {
    console.log(err.error.errorCode.number, err.error.errorCode.code, err.error.errorMessage);
    // 6005 ExceededSlippage "Exceeds desired slippage limit"
  } else {
    // Raw SendTransactionError — inspect err.logs for the "custom program error: 0x..." line.
  }
}
Si vous n’utilisez pas le client Anchor, analysez les logs de transaction :
Program <ProgramID> invoke [1]
Program log: AnchorError caused by account: pool_state. Error Code: ExceededSlippage. Error Number: 6005. Error Message: Exceeds desired slippage limit.
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 :
# Clone and grep the error enum in order.
git clone --depth=1 https://github.com/raydium-io/raydium-cp-swap
awk '/#\[msg\(/{ gsub(/^[ \t]*#\[msg\("|"\)\][ \t]*/,""); m=$0; getline; gsub(/,/,""); gsub(/^[ \t]+/,""); print "6000+++\t" $0 "\t" m }' \
  raydium-cp-swap/programs/cp-swap/src/error.rs
# Replace 6000+++ with monotonically-increasing 6000,6001,... Append new rows to the table above.
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 :