Saltar para o conteúdo 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 foi traduzida automaticamente por IA. A versão em inglês é a fonte oficial.Ver versão em inglês →
Fonte de verdade. As tabelas abaixo são regeneradas a partir do error.rs de cada programa nos repositórios públicos do Raydium. Quando um programa é atualizado e uma nova variante é adicionada, execute novamente a extração (link no final de cada tabela) e acrescente à tabela em vez de reordenar — os códigos de erro Anchor são atribuídos pela ordem no código-fonte, não pelo nome, portanto reordenar quebra o tratamento de erros dos integradores.

Como funcionam os códigos de erro Anchor

O Anchor atribui a cada variante do enum ErrorCode de um programa um código numérico começando em 6000. Uma transação com falha expõe:
  • Código de erro numérico (ex.: 0x1771 = 6001) nos logs da transação.
  • Nome do erro (ex.: InvalidOwner) proveniente do IDL.
  • String #[msg(...)] emitida pelo Anchor em log_messages.
Integradores devem verificar o código numérico, não a string da mensagem (a string pode ser reformulada sem incrementar uma versão).
// 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;
}

Erros do CPMM (AMM Padrão)

ID do programa: veja reference/program-addresses. Fonte: raydium-cp-swap/programs/cp-swap/src/error.rs.
CódigoVarianteString #[msg]Causa típicaUX recomendada
6000NotApprovedNot approvedO chamador não é a autoridade configurada para uma instrução de administrador.”Somente o administrador do pool pode executar esta ação.”
6001InvalidOwnerInput account owner is not the program addressUma conta passada pertence ao programa errado (geralmente um programa de token errado ou um PDA de programa incorreto).”Interno: incompatibilidade de proprietário da conta — atualize e tente novamente.”
6002EmptySupplyInput token account emptyO saldo da conta LP ou de token é zero em uma etapa que requer um valor positivo.”Nada a retirar.”
6003InvalidInputInvalidInputArgumento inválido genérico (valor fora do intervalo, flag incorreta).”Entrada inválida — verifique os valores e tente novamente.”
6004IncorrectLpMintAddress of the provided lp token mint is incorrectA conta LP mint passada não corresponde a pool_state.lp_mint.”Interno: LP mint incorreto — atualize os dados do pool.”
6005ExceededSlippageExceeds desired slippage limitO preço executado é pior do que o minAmountOut / maxAmountIn do usuário.”O preço ultrapassou sua tolerância de slippage. Aumente o slippage ou tente novamente.”
6006ZeroTradingTokensGiven pool token amount results in zero trading tokensA matemática de depósito/retirada arredondou um lado para zero (posição muito pequena).”O valor está abaixo do mínimo para este pool.”
6007NotSupportMintNot support token_2022 mint extension (gramática no código-fonte)O pool encontrou uma extensão Token-2022 que não pode ser tratada com segurança (ex.: TransferHook, DefaultAccountState=Frozen).”Este token possui uma extensão não suportada pelo Raydium no CPMM.”
6008InvalidVaultinvaild vault (typo no código-fonte)A conta vault passada não corresponde à registrada em pool_state.”Interno: vault incorreto — atualize e tente novamente.”
6009InitLpAmountTooLessInit lp amount is too less(Because 100 amount lp will be locked) (gramática no código-fonte)Na inicialização do pool, o supply LP calculado está abaixo da quantidade de bloqueio permanente.”Liquidez inicial muito pequena. Aumente o depósito.”
6010TransferFeeCalculateNotMatchTransferFee calculate not matchO valor pós-transferência observado para um mint com taxa Token-2022 não correspondeu à expectativa pré-calculada.”A taxa de transferência do token mudou durante a transação. Tente novamente.”
6011MathOverflowMath overflowUm cálculo intermediário de swap/depósito/taxa causou overflow.”O valor é grande demais para este pool.”
6012InsufficientVaultInsufficient vaultO saldo do vault do pool é insuficiente para cobrir o valor de saída solicitado.”Liquidez insuficiente no pool para este tamanho.”
6013InvalidFeeModelInvalid fee modelO administrador definiu uma combinação de parâmetros AmmConfig rejeitada on-chain.N/A — caminho exclusivo do administrador.
6014NoFeeCollectFee is zerocollect_protocol_fee / collect_fund_fee chamado com taxas coletáveis zeradas.N/A — caminho do administrador; ferramentas devem ignorar.
Fonte de regeneração: github.com/raydium-io/raydium-cp-swap — error.rs.

Erros do CLMM

ID do programa: veja reference/program-addresses. Fonte: raydium-clmm/programs/amm/src/error.rs.
CódigoVarianteString #[msg]Causa típicaUX recomendada
6000NotApprovedNot approvedO chamador não é o administrador configurado para esta instrução.”Somente o administrador do pool pode executar esta ação.”
6001InvalidUpdateConfigFlaginvalid update amm config flagO administrador passou um valor param não reconhecido para update_amm_config.N/A — caminho exclusivo do administrador.
6002AccountLackAccount lackConta restante obrigatória ausente da tx (geralmente tick-array ou extensão oracle).”Interno: conta ausente — atualize os dados do pool.”
6003ClosePositionErrRemove liquidity, collect fees owed and reward then you can close position accountTentativa de fechar uma posição que ainda possui liquidez, taxas não coletadas ou recompensas não coletadas.”Retire toda a liquidez e resgate taxas/recompensas antes de fechar a posição.”
6004InvalidTickIndexTick out of rangetick_lower ou tick_upper está fora de [-443636, 443636].”Intervalo de preço fora dos limites para este pool.”
6005TickInvalidOrderThe lower tick must be below the upper ticktick_lower >= tick_upper.”O preço inferior deve ser menor que o preço superior.”
6006TickLowerOverflowThe tick must be greater, or equal to the minimum tick(-443636)Underflow do tick inferior.”Preço inferior muito baixo.”
6007TickUpperOverflowThe tick must be lesser than, or equal to the maximum tick(443636)Overflow do tick superior.”Preço superior muito alto.”
6008TickAndSpacingNotMatchtick % tick_spacing must be zeroO tick enviado não é múltiplo do tick_spacing do pool.”Ajuste o preço ao incremento válido mais próximo.”
6009InvalidTickArrayInvalid tick array accountPDA incorreto passado para um slot de tick-array.”Interno: tick array incorreto — atualize os dados do pool.”
6010InvalidTickArrayBoundaryInvalid tick array boundaryErro por um na indexação do tick-array.”Interno: erro de limite do tick-array.”
6011SqrtPriceLimitOverflowSquare root price limit overflowsqrt_price_limit fornecido pelo chamador está fora do intervalo válido.”Limite de preço fora do intervalo.”
6012SqrtPriceX64sqrt_price_x64 out of rangeO sqrt price atual do pool saiu do intervalo durante o swap.”Tente o swap novamente.”
6013LiquiditySubValueErrLiquidity sub delta L must be smaller than beforeViolação de invariante interno ao diminuir liquidez.”Interno: erro de contabilidade de liquidez.”
6014LiquidityAddValueErrLiquidity add delta L must be greater, or equal to beforeViolação de invariante interno ao aumentar liquidez.”Interno: erro de contabilidade de liquidez.”
6015ForbidBothZeroForSupplyLiquidityBoth token amount must not be zero while supply liquidityChamada de aumento de liquidez com amount_0_max e amount_1_max ambos zerados.”Forneça ao menos um token.”
6016LiquidityInsufficientLiquidity insufficientA posição não possui liquidez suficiente para a retirada solicitada.”O valor de retirada excede a liquidez da posição.”
6017PriceSlippageCheckPrice slippage checkO preço de execução não passou pela proteção de slippage do chamador.”O preço ultrapassou sua tolerância de slippage. Aumente o slippage ou tente novamente.”
6018TooLittleOutputReceivedToo little output receivedSwapBaseInput: valor de saída abaixo de other_amount_threshold.”Slippage excedido — saída mínima não atingida.”
6019TooMuchInputPaidToo much input paidSwapBaseOutput: valor de entrada acima de other_amount_threshold.”Slippage excedido — entrada máxima ultrapassada.”
6020ZeroAmountSpecifiedSwap special amount can not be zeroamount zero em uma instrução de swap.”Informe um valor maior que zero.”
6021InvalidInputPoolVaultInput pool vault is invalidA conta input-vault do swap não corresponde ao vault registrado no pool.”Interno: input vault incorreto — atualize os dados do pool.”
6022TooSmallInputOrOutputAmountSwap input or output amount is too smallA matemática do swap arredondou para zero, geralmente por valores muito pequenos.”Valor muito pequeno para fazer swap neste pool.”
6023NotEnoughTickArrayAccountNot enough tick array accountContas de tick-array restantes insuficientes fornecidas para o intervalo do swap.”Interno: tick-arrays insuficientes — atualize os dados do pool.”
6024InvalidFirstTickArrayAccountInvalid first tick array accountA primeira conta tick-array passada não cobre o tick atual.”Interno: primeiro tick array incorreto — atualize os dados do pool.”
6025InvalidRewardIndexInvalid reward indexreward_index fora de [0, 2].N/A — caminho do administrador.
6026FullRewardInfoThe init reward token reach to the maxO pool já possui o máximo (3) de reward mints configurados.N/A — caminho do administrador.
6027RewardTokenAlreadyInUseThe init reward token already in useO reward mint duplica um já existente.N/A — caminho do administrador.
6028ExceptRewardMintThe reward tokens must contain one of pool vault mint except the last rewardAntes do slot 2, o reward mint deve ser igual a um dos vault mints do pool.N/A — caminho do administrador.
6029InvalidRewardInitParamInvalid reward init paramHorário de início/fim de emissão ou taxa por segundo inválidos.N/A — caminho do administrador.
6030InvalidRewardInputAccountNumberInvalid collect reward input account numberNúmero incorreto de contas restantes passadas para CollectReward.”Interno: número de contas incorreto — atualize e tente novamente.”
6031InvalidRewardPeriodInvalid reward periodPeríodo de emissão de recompensa inválido (end <= start, duração zero).N/A — caminho do administrador.
6032NotApproveUpdateRewardEmissionsModification of emissions is allowed within 72 hours from the end of the previous cycleO administrador tentou modificar emissões fora da janela de 72 horas ao redor dos limites de ciclo.N/A — caminho do administrador.
6033UnInitializedRewardInfouninitialized reward infoSlot de recompensa não inicializado, mas referenciado.N/A — caminho do administrador.
6034NotSupportMintNot support token_2022 mint extensionO CLMM encontrou uma extensão Token-2022 que não pode ser tratada.”Este token possui uma extensão não suportada pelo Raydium CLMM.”
6035MissingTickArrayBitmapExtensionAccountMissing tickarray bitmap extension accountO swap cruzou um intervalo de tick não coberto pelo bitmap base; é necessária a conta de bitmap de extensão.”Interno: extensão de tick-array ausente — atualize os dados do pool.”
6036InsufficientLiquidityForDirectionInsufficient liquidity for this directionNão há liquidez suficiente na direção do swap.”Liquidez insuficiente para este tamanho de swap.”
6037MaxTokenOverflowMax token overflowO valor de entrada/saída excedeu u64.”Valor grande demais para este pool.”
6038CalculateOverflowCalculate overflowOverflow aritmético em taxa/liquidez.”Valor grande demais para este pool.”
6039TransferFeeCalculateNotMatchTransferFee calculate not matchO valor observado da taxa de transferência Token-2022 não correspondeu ao esperado.”A taxa de transferência do token mudou durante a transação. Tente novamente.”
6040OrderAlreadyFilledOrder already fully filled, cannot modifyIncreaseLimitOrder / DecreaseLimitOrder chamado em uma ordem cuja parte não preenchida é zero.”Esta ordem limitada já foi preenchida — liquide para receber o valor de saída.”
6041InvalidOrderPhaseInvalid order phaseModificação de uma ordem cujo ciclo FIFO não corresponde mais ao ciclo atual do tick.”Esta ação não pode ser realizada no estado atual da ordem.”
6042InvalidLimitOrderAmountInvalid limit order amountValor de entrada da ordem abaixo do mínimo do pool (ou zero) ao abrir/aumentar/diminuir.”O tamanho da ordem está abaixo do mínimo do pool.”
6043OrderPhaseSaturatedTick order phase saturatedO contador order_phase do ciclo no tick saturou; novas ordens não podem ser abertas naquele tick até que os ciclos existentes liquidem e renovem.”Ordens demais ativas neste preço; tente um tick próximo ou aguarde as ordens liquidarem.”
6044InvalidDynamicFeeConfigParamsInvalid dynamic fee config paramsCreateDynamicFeeConfig / UpdateDynamicFeeConfig rejeitado; ou CreateCustomizablePool habilitou taxa dinâmica sem uma configuração válida.N/A no caminho do administrador; “Configuração de taxa dinâmica inválida” no caminho do usuário.
6045InvalidFeeOnInvalid fee on which token (must be 0, 1, or 2)CreateCustomizablePool passou um valor collect_fee_on fora de {0, 1, 2}.”Interno: modo de taxa inválido.”
6046ZeroSqrtPricesqrt_price_x64 must be greater than 0CreateCustomizablePool (ou outro caminho que aceita sqrt price inicial personalizável) foi chamado com sqrt_price_x64 == 0.”O preço inicial deve ser maior que zero.”
6047ZeroLiquidityliquidity must be greater than 0Um caminho de fornecimento de liquidez foi chamado com liquidity == 0 sem valor compensatório.”O valor de liquidez deve ser maior que zero.”
6048MissingBaseFlagbase_flag is required when liquidity is zeroUm caminho de abertura de posição por valor calculou liquidity == 0 e o chamador não forneceu um base_flag para indicar qual lado é a base.”Forneça uma liquidez diferente de zero ou especifique qual token é a base.”
6049MissingMintAccountMint account is required but not providedUm caminho com suporte a Token-2022 foi chamado sem a conta mint de entrada/saída necessária para validar extensões e taxas de transferência.”Interno: conta mint ausente — atualize os dados do pool.”
6050MissingTokenProgram2022Token-2022 program is required but not providedIgual ao anterior, mas para a conta do programa SPL-Token-2022.”Interno: programa Token-2022 ausente — atualize e tente novamente.”
Nota sobre renumeração. O enum ErrorCode do CLMM foi renumerado nesta versão: cinco variantes legadas (LOK, ZeroMintAmount, InvalidLiquidity, TransactionTooOld, InvalidRewardDesiredAmount) e vários erros tipográficos (Liquitity, enought, emissiones) foram removidos/corrigidos, e onze novas variantes foram acrescentadas. Como o Anchor numera os erros pela ordem no código-fonte, todos os códigos a partir de 6000 foram deslocados em relação às builds anteriores ao lançamento. Clientes que codificaram diretamente os códigos numéricos para uma versão anterior precisam remapear.
Fonte de regeneração: github.com/raydium-io/raydium-clmm — error.rs.

Erros do AMM v4, Farm v3 / v5 / v6 e LaunchLab

Esses programas estão documentados em seus respectivos capítulos (veja products/amm-v4/instructions, products/farm-staking/instructions, products/launchlab/instructions). Como esses programas utilizam uma combinação de superfícies de erro Anchor e Solana puro, suas tabelas de erro ficam junto à referência de instruções, e não aqui. Os códigos abaixo são reservados por esses capítulos:
ProgramaIntervalo de códigos (somente Anchor)Referência
AMM v4Códigos u32 personalizados, não 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

Mapeando erros do SDK para erros de programa

O SDK TypeScript oficial encapsula erros on-chain em SendTransactionError e, para programas Anchor, em 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.
  }
}
Se você não estiver usando o cliente Anchor, analise os logs da transação:
Program <ProgramID> invoke [1]
Program log: AnchorError caused by account: pool_state. Error Code: ExceededSlippage. Error Number: 6005. Error Message: Exceeds desired slippage limit.
O padrão Error Number: (\d+) é estável entre versões do Anchor e seguro para verificar.

Regenerando estas tabelas

Quando um programa é atualizado e adiciona um novo erro, reextraia a partir do código-fonte:
# 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.
Sempre atualize reference/changelog quando uma nova variante for adicionada, para que os integradores que estão atualizando o SDK saibam que precisam atualizar seus tratadores de erro. Fontes: