Saltar al contenido 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.

Esta página fue traducida automáticamente por IA. La versión en inglés es la fuente autorizada.Ver versión en inglés →
Fuente de verdad. Las tablas a continuación se regeneran desde el archivo error.rs de cada programa en los repositorios públicos de Raydium. Cuando un programa se actualiza y se añade una nueva variante, vuelve a ejecutar la extracción (enlace al final de cada tabla) y añade filas al final en lugar de reorganizar — los códigos de error de Anchor se asignan por orden en el código fuente, no por nombre, por lo que reorganizarlos rompe el manejo de errores de los integradores.

Cómo funcionan los códigos de error de Anchor

Anchor asigna a cada variante del enum ErrorCode de un programa un código numérico a partir de 6000. Una transacción fallida expone:
  • Código de error numérico (p. ej. 0x1771 = 6001) en los logs de la transacción.
  • Nombre del error (p. ej. InvalidOwner) desde el IDL.
  • Cadena #[msg(...)] que Anchor emitió en log_messages.
Los integradores deben comparar contra el código numérico, no contra la cadena del mensaje (el texto puede reformularse sin cambiar la versión).
// 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;
}

Errores de CPMM (AMM estándar)

Program ID: ver reference/program-addresses. Fuente: raydium-cp-swap/programs/cp-swap/src/error.rs.
CódigoVarianteCadena #[msg]Causa típicaUX recomendado
6000NotApprovedNot approvedEl invocador no es la autoridad configurada para una instrucción de administrador.”Solo el administrador del pool puede realizar esta acción.”
6001InvalidOwnerInput account owner is not the program addressUna cuenta pasada es propiedad del programa incorrecto (generalmente un programa de token erróneo o un PDA de programa equivocado).”Error interno: propietario de cuenta no coincide — recarga e inténtalo de nuevo.”
6002EmptySupplyInput token account emptyEl saldo de la cuenta LP o de token es cero en un paso que requiere un monto positivo.”No hay nada que retirar.”
6003InvalidInputInvalidInputArgumento incorrecto genérico (monto fuera de rango, flag incorrecto).”Entrada no válida — revisa los montos e inténtalo de nuevo.”
6004IncorrectLpMintAddress of the provided lp token mint is incorrectLa cuenta LP mint pasada no coincide con pool_state.lp_mint.”Error interno: LP mint incorrecto — recarga los datos del pool.”
6005ExceededSlippageExceeds desired slippage limitEl precio ejecutado es peor que el minAmountOut / maxAmountIn del usuario.”El precio superó tu tolerancia de slippage. Aumenta el slippage o inténtalo de nuevo.”
6006ZeroTradingTokensGiven pool token amount results in zero trading tokensLa matemática de depósito/retiro redondeó un lado a cero (posición demasiado pequeña).”El monto está por debajo del mínimo para este pool.”
6007NotSupportMintNot support token_2022 mint extension (gramática en el fuente)El pool encontró una extensión de Token-2022 que no puede manejar de forma segura (p. ej. TransferHook, DefaultAccountState=Frozen).”Este token tiene una extensión que Raydium no admite en CPMM.”
6008InvalidVaultinvaild vault (typo en el fuente)La cuenta vault pasada no coincide con la registrada en pool_state.”Error interno: vault incorrecto — recarga e inténtalo de nuevo.”
6009InitLpAmountTooLessInit lp amount is too less(Because 100 amount lp will be locked) (gramática en el fuente)En la inicialización del pool, el suministro LP calculado está por debajo del monto de bloqueo permanente.”Liquidez inicial demasiado pequeña. Aumenta el depósito.”
6010TransferFeeCalculateNotMatchTransferFee calculate not matchEl monto post-transferencia observado para un mint con comisión de Token-2022 no coincidió con la expectativa precalculada.”La comisión de transferencia del token cambió a mitad de la transacción. Inténtalo de nuevo.”
6011MathOverflowMath overflowUn cálculo intermedio de swap/depósito/comisión sufrió desbordamiento.”El monto es demasiado grande para este pool.”
6012InsufficientVaultInsufficient vaultEl saldo del vault del pool es demasiado bajo para cubrir la salida solicitada.”No hay suficiente liquidez en el pool para este tamaño.”
6013InvalidFeeModelInvalid fee modelEl administrador configuró una combinación de parámetros AmmConfig que es rechazada on-chain.N/A — ruta solo para administradores.
6014NoFeeCollectFee is zeroSe llamó a collect_protocol_fee / collect_fund_fee con comisiones colectables en cero.N/A — ruta de administrador; las herramientas deben ignorarlo.
Fuente de regeneración: github.com/raydium-io/raydium-cp-swap — error.rs.

Errores de CLMM

Program ID: ver reference/program-addresses. Fuente: raydium-clmm/programs/amm/src/error.rs.
CódigoVarianteCadena #[msg]Causa típicaUX recomendado
6000NotApprovedNot approvedEl invocador no es el administrador configurado para esta instrucción.”Solo el administrador del pool puede realizar esta acción.”
6001InvalidUpdateConfigFlaginvalid update amm config flagEl administrador pasó un valor param no reconocido a update_amm_config.N/A — ruta solo para administradores.
6002AccountLackAccount lackFalta una cuenta restante requerida en la tx (generalmente un tick-array o extensión de oráculo).”Error interno: cuenta faltante — recarga los datos del pool.”
6003ClosePositionErrRemove liquidity, collect fees owed and reward then you can close position accountSe intentó cerrar una posición que aún tiene liquidez, comisiones no cobradas o recompensas no cobradas.”Retira toda la liquidez y reclama comisiones/recompensas antes de cerrar la posición.”
6004InvalidTickIndexTick out of rangetick_lower o tick_upper está fuera de [-443636, 443636].”Rango de precio fuera de los límites para este pool.”
6005TickInvalidOrderThe lower tick must be below the upper ticktick_lower >= tick_upper.”El precio inferior debe ser menor que el precio superior.”
6006TickLowerOverflowThe tick must be greater, or equal to the minimum tick(-443636)Desbordamiento inferior del tick.”El precio inferior es demasiado bajo.”
6007TickUpperOverflowThe tick must be lesser than, or equal to the maximum tick(443636)Desbordamiento superior del tick.”El precio superior es demasiado alto.”
6008TickAndSpacingNotMatchtick % tick_spacing must be zeroEl tick enviado no es múltiplo del tick_spacing del pool.”Ajusta el precio al incremento válido más cercano.”
6009InvalidTickArrayInvalid tick array accountSe pasó un PDA incorrecto para un slot de tick-array.”Error interno: tick array incorrecto — recarga los datos del pool.”
6010InvalidTickArrayBoundaryInvalid tick array boundaryError de uno en la indexación del tick-array.”Error interno: error en el límite del tick-array.”
6011SqrtPriceLimitOverflowSquare root price limit overflowEl sqrt_price_limit proporcionado por el invocador está fuera del rango válido.”El límite de precio está fuera de rango.”
6012SqrtPriceX64sqrt_price_x64 out of rangeEl sqrt price actual del pool se desplazó fuera de rango a mitad del swap.”Vuelve a intentar el swap.”
6013LiquiditySubValueErrLiquidity sub delta L must be smaller than beforeViolación de invariante interna al reducir liquidez.”Error interno: error en la contabilidad de liquidez.”
6014LiquidityAddValueErrLiquidity add delta L must be greater, or equal to beforeViolación de invariante interna al aumentar liquidez.”Error interno: error en la contabilidad de liquidez.”
6015ForbidBothZeroForSupplyLiquidityBoth token amount must not be zero while supply liquidityLlamada a increase-liquidity con amount_0_max y amount_1_max ambos en cero.”Proporciona al menos un token.”
6016LiquidityInsufficientLiquidity insufficientLa posición no tiene suficiente liquidez para satisfacer el retiro.”El monto a retirar supera la liquidez de la posición.”
6017PriceSlippageCheckPrice slippage checkEl precio de ejecución no pasó la protección de slippage del invocador.”El precio superó tu tolerancia de slippage. Aumenta el slippage o inténtalo de nuevo.”
6018TooLittleOutputReceivedToo little output receivedSwapBaseInput: monto de salida por debajo de other_amount_threshold.”Slippage superado — mínimo de salida no alcanzado.”
6019TooMuchInputPaidToo much input paidSwapBaseOutput: monto de entrada por encima de other_amount_threshold.”Slippage superado — máximo de entrada excedido.”
6020ZeroAmountSpecifiedSwap special amount can not be zeroamount en cero en una instrucción de swap.”Introduce un monto mayor que cero.”
6021InvalidInputPoolVaultInput pool vault is invalidLa cuenta del vault de entrada del swap no coincide con el vault registrado del pool.”Error interno: vault de entrada incorrecto — recarga los datos del pool.”
6022TooSmallInputOrOutputAmountSwap input or output amount is too smallLa matemática del swap redondeó a cero, típicamente con montos muy pequeños de polvo.”Monto demasiado pequeño para hacer swap en este pool.”
6023NotEnoughTickArrayAccountNot enough tick array accountNo se proporcionaron suficientes cuentas restantes de tick-array para el rango del swap.”Error interno: tick-arrays insuficientes — recarga los datos del pool.”
6024InvalidFirstTickArrayAccountInvalid first tick array accountLa primera cuenta de tick-array pasada no cubre el tick actual.”Error interno: primer tick array incorrecto — recarga los datos del pool.”
6025InvalidRewardIndexInvalid reward indexreward_index fuera de [0, 2].N/A — ruta de administrador.
6026FullRewardInfoThe init reward token reach to the maxEl pool ya tiene el máximo (3) de mints de recompensa configurados.N/A — ruta de administrador.
6027RewardTokenAlreadyInUseThe init reward token already in useEl mint de recompensa duplica uno existente.N/A — ruta de administrador.
6028ExceptRewardMintThe reward tokens must contain one of pool vault mint except the last rewardEn slots previos al 2, el mint de recompensa debe coincidir con uno de los mints vault del pool.N/A — ruta de administrador.
6029InvalidRewardInitParamInvalid reward init paramTiempo de inicio/fin de emisión o tasa por segundo incorrectos.N/A — ruta de administrador.
6030InvalidRewardInputAccountNumberInvalid collect reward input account numberNúmero incorrecto de cuentas restantes pasadas a CollectReward.”Error interno: número de cuentas incorrecto — recarga e inténtalo de nuevo.”
6031InvalidRewardPeriodInvalid reward periodPeríodo de emisión de recompensas no válido (end <= start, duración cero).N/A — ruta de administrador.
6032NotApproveUpdateRewardEmissionsModification of emissions is allowed within 72 hours from the end of the previous cycleEl administrador intentó modificar las emisiones fuera de la ventana de 72 horas alrededor de los límites del ciclo.N/A — ruta de administrador.
6033UnInitializedRewardInfouninitialized reward infoSe referenció un slot de recompensa no inicializado.N/A — ruta de administrador.
6034NotSupportMintNot support token_2022 mint extensionCLMM encontró una extensión de Token-2022 que no puede manejar.”Este token tiene una extensión que Raydium CLMM no admite.”
6035MissingTickArrayBitmapExtensionAccountMissing tickarray bitmap extension accountEl swap cruzó un rango de ticks no cubierto por el bitmap base; se requiere la cuenta de bitmap de extensión.”Error interno: extensión de tick-array faltante — recarga los datos del pool.”
6036InsufficientLiquidityForDirectionInsufficient liquidity for this directionNo existe suficiente liquidez en la dirección del swap.”Liquidez insuficiente para el tamaño de este swap.”
6037MaxTokenOverflowMax token overflowEl monto de entrada/salida superó u64.”El monto es demasiado grande para este pool.”
6038CalculateOverflowCalculate overflowDesbordamiento aritmético en comisiones/liquidez.”El monto es demasiado grande para este pool.”
6039TransferFeeCalculateNotMatchTransferFee calculate not matchEl monto observado de la comisión de transferencia Token-2022 no coincidió con el esperado.”La comisión de transferencia del token cambió a mitad de la transacción. Inténtalo de nuevo.”
6040OrderAlreadyFilledOrder already fully filled, cannot modifySe llamó a IncreaseLimitOrder / DecreaseLimitOrder en una orden cuya porción no ejecutada es cero.”Esta orden limitada ya está completada — liquídala para recibir la salida.”
6041InvalidOrderPhaseInvalid order phaseSe modificó una orden cuya fase de cohorte FIFO ya no coincide con la cohorte actual del tick.”No se puede realizar esta acción en el estado actual de la orden.”
6042InvalidLimitOrderAmountInvalid limit order amountEl monto de entrada de la orden está por debajo del mínimo del pool (o es cero) al abrir/aumentar/disminuir.”El tamaño de la orden está por debajo del mínimo del pool.”
6043OrderPhaseSaturatedTick order phase saturatedEl contador order_phase de la cohorte en el tick está saturado; no se pueden abrir más órdenes en ese tick hasta que las cohortes existentes liquiden y roten.”Demasiadas órdenes activas en este precio; prueba un tick cercano o espera a que las órdenes se liquiden.”
6044InvalidDynamicFeeConfigParamsInvalid dynamic fee config paramsCreateDynamicFeeConfig / UpdateDynamicFeeConfig rechazado; o CreateCustomizablePool habilitó la comisión dinámica sin una configuración válida.N/A en ruta de administrador; “Configuración de comisión dinámica no válida” en ruta de usuario.
6045InvalidFeeOnInvalid fee on which token (must be 0, 1, or 2)CreateCustomizablePool pasó un valor collect_fee_on fuera de {0, 1, 2}.”Error interno: modo de comisión no válido.”
6046ZeroSqrtPricesqrt_price_x64 must be greater than 0Se llamó a CreateCustomizablePool (u otra ruta que acepta un sqrt price inicial personalizable) con sqrt_price_x64 == 0.”El precio inicial debe ser mayor que cero.”
6047ZeroLiquidityliquidity must be greater than 0Se llamó a una ruta de provisión de liquidez con liquidity == 0 y sin monto compensatorio.”El monto de liquidez debe ser mayor que cero.”
6048MissingBaseFlagbase_flag is required when liquidity is zeroUna ruta de apertura de posición por monto calculó liquidity == 0 y el invocador no proporcionó un base_flag para indicar cuál lado es la base.”Proporciona una liquidez distinta de cero o especifica cuál token es la base.”
6049MissingMintAccountMint account is required but not providedSe llamó a una ruta con soporte Token-2022 sin la cuenta de mint de entrada/salida necesaria para validar extensiones y comisiones de transferencia.”Error interno: cuenta de mint faltante — recarga los datos del pool.”
6050MissingTokenProgram2022Token-2022 program is required but not providedIgual que el anterior, pero para la cuenta del programa SPL-Token-2022.”Error interno: programa Token-2022 faltante — recarga e inténtalo de nuevo.”
Nota sobre la renumeración. El enum ErrorCode de CLMM fue renumerado en esta versión: se eliminaron/corrigieron cinco variantes heredadas (LOK, ZeroMintAmount, InvalidLiquidity, TransactionTooOld, InvalidRewardDesiredAmount) y varios errores tipográficos (Liquitity, enought, emissiones), y se añadieron once nuevas variantes al final. Dado que Anchor numera los errores por orden en el código fuente, todos los códigos a partir de 6000 se han desplazado respecto a las versiones previas al lanzamiento. Los clientes que tenían códigos numéricos codificados de forma fija para una versión anterior deben actualizar su mapeo.
Fuente de regeneración: github.com/raydium-io/raydium-clmm — error.rs.

Errores de AMM v4, Farm v3 / v5 / v6 y LaunchLab

Estos programas están documentados en sus capítulos respectivos (ver products/amm-v4/instructions, products/farm-staking/instructions, products/launchlab/instructions). Como esos programas utilizan una combinación de Anchor y superficies de error de Solana nativo, sus tablas de errores están junto a la referencia de instrucciones y no aquí. Los códigos a continuación están reservados por esos capítulos:
ProgramaRango de códigos (solo Anchor)Referencia
AMM v4Códigos u32 personalizados, no estilo Anchorproducts/amm-v4/instructions
Farm v3 / v5Códigos u32 personalizadosproducts/farm-staking/instructions
Farm v66000+ (Anchor)products/farm-staking/instructions
LaunchLab6000+ (Anchor)products/launchlab/instructions

Mapeo de errores del SDK a errores del programa

El SDK oficial de TypeScript envuelve los errores on-chain en SendTransactionError y, para programas Anchor, en 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 no usas el cliente Anchor, analiza los logs de la transacción:
Program <ProgramID> invoke [1]
Program log: AnchorError caused by account: pool_state. Error Code: ExceededSlippage. Error Number: 6005. Error Message: Exceeds desired slippage limit.
El patrón Error Number: (\d+) es estable entre versiones de Anchor y es seguro usarlo para comparaciones.

Regeneración de estas tablas

Cuando un programa se actualiza y añade un nuevo error, vuelve a extraerlo del código fuente:
# 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.
Actualiza siempre reference/changelog cuando se añada una nueva variante, para que los integradores que actualicen el SDK sepan que deben refrescar sus manejadores de errores. Fuentes: