メインコンテンツへスキップ

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.

このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
信頼できる情報源。 以下のテーブルは、公開されているRaydiumリポジトリ内の各プログラムの error.rs から再生成されています。プログラムがアップグレードされ新しいバリアントが追加された場合は、テーブルを並べ替えるのではなく、抽出処理(各テーブル下部のリンクを参照)を再実行して行を追記してください。Anchorエラーコードは名前ではなくソースの順序で割り当てられるため、並べ替えるとインテグレーターのエラーハンドリングが壊れます。

Anchorエラーコードの仕組み

Anchorはプログラムの ErrorCode 列挙型の各バリアントに、6000 から始まる数値コードを割り当てます。失敗したトランザクションでは次の情報が表示されます:
  • 数値エラーコード(例:0x1771 = 6001):トランザクションログに記録されます。
  • エラー名(例:InvalidOwner):IDLから取得されます。
  • #[msg(...)] 文字列:Anchorが log_messages に出力します。
インテグレーターは数値コードで照合してください。メッセージ文字列はバージョンアップなしに変更される可能性があります。
// 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;
}

CPMM(標準AMM)エラー

プログラムID:reference/program-addresses を参照。ソース:raydium-cp-swap/programs/cp-swap/src/error.rs
コードバリアント#[msg] 文字列典型的な原因推奨UXメッセージ
6000NotApprovedNot approved呼び出し元が管理者向け命令に設定された認証済みアドレスではない。「プールの管理者のみがこの操作を実行できます。」
6001InvalidOwnerInput account owner is not the program address渡されたアカウントが別のプログラムによって所有されている(多くの場合、誤ったトークンプログラムまたは誤ったプログラムのPDA)。「内部エラー:アカウント所有者の不一致 — 更新して再試行してください。」
6002EmptySupplyInput token account empty正の量が必要なステップで、LPまたはトークンアカウントの残高がゼロ。「引き出すものがありません。」
6003InvalidInputInvalidInput汎用的な不正引数(範囲外の量、誤ったフラグ)。「入力が無効です — 数量を確認して再試行してください。」
6004IncorrectLpMintAddress of the provided lp token mint is incorrect渡されたLPミントアカウントが pool_state.lp_mint と一致しない。「内部エラー:LPミントが間違っています — プールデータを更新してください。」
6005ExceededSlippageExceeds desired slippage limit約定価格がユーザーの minAmountOut / maxAmountIn より不利。「価格がスリッページ許容範囲を超えました。スリッページを拡大するか再試行してください。」
6006ZeroTradingTokensGiven pool token amount results in zero trading tokens預入・引き出しの計算で一方がゼロに切り捨てられた(ポジションが小さすぎる)。「このプールの最小量を下回っています。」
6007NotSupportMintNot support token_2022 mint extension (文法はソースのまま)プールが安全に処理できないToken-2022の拡張機能(例:TransferHookDefaultAccountState=Frozen)が検出された。「このトークンの拡張機能はRaydium CPMMでサポートされていません。」
6008InvalidVaultinvaild vault (ソースのタイポ)渡されたバルトアカウントが pool_state に記録されているものと一致しない。「内部エラー:バルトが間違っています — 更新して再試行してください。」
6009InitLpAmountTooLessInit lp amount is too less(Because 100 amount lp will be locked) (文法はソースのまま)プール初期化時に計算されたLPの供給量が永久ロック量を下回った。「初期流動性が少なすぎます。預入量を増やしてください。」
6010TransferFeeCalculateNotMatchTransferFee calculate not matchToken-2022手数料ミントの転送後実測額が事前計算値と一致しなかった。「トークン転送手数料がトランザクション中に変わりました。再試行してください。」
6011MathOverflowMath overflowスワップ・預入・手数料の中間計算がオーバーフローした。「このプールには大きすぎる量です。」
6012InsufficientVaultInsufficient vaultプールのバルト残高が要求された出力をカバーするのに不足している。「このサイズのためのプール流動性が不足しています。」
6013InvalidFeeModelInvalid fee model管理者がオンチェーンで拒否される AmmConfig パラメータの組み合わせを設定した。N/A — 管理者専用パス。
6014NoFeeCollectFee is zero回収可能な手数料がゼロの状態で collect_protocol_fee / collect_fund_fee が呼び出された。N/A — 管理者パス。ツールは無視してください。
再生成ソース:github.com/raydium-io/raydium-cp-swap — error.rs

CLMMエラー

プログラムID:reference/program-addresses を参照。ソース:raydium-clmm/programs/amm/src/error.rs
コードバリアント#[msg] 文字列典型的な原因推奨UXメッセージ
6000NotApprovedNot approved呼び出し元がこの命令に設定された管理者ではない。「プールの管理者のみがこの操作を実行できます。」
6001InvalidUpdateConfigFlaginvalid update amm config flag管理者が update_amm_config に未認識の param 値を渡した。N/A — 管理者専用パス。
6002AccountLackAccount lack必要な残余アカウント(通常はティック配列またはオラクル拡張)がトランザクションに含まれていない。「内部エラー:アカウントが不足しています — プールデータを更新してください。」
6003ClosePositionErrRemove liquidity, collect fees owed and reward then you can close position account流動性・未回収手数料・未回収報酬が残っているポジションをクローズしようとした。「ポジションをクローズする前に、すべての流動性を引き出し、手数料と報酬を回収してください。」
6004InvalidTickIndexTick out of rangetick_lower または tick_upper[-443636, 443636] の範囲外。「このプールの価格範囲が境界を超えています。」
6005TickInvalidOrderThe lower tick must be below the upper ticktick_lower >= tick_upper の状態。「下限価格は上限価格より低くする必要があります。」
6006TickLowerOverflowThe tick must be greater, or equal to the minimum tick(-443636)下限ティックがアンダーフロー。「下限価格が低すぎます。」
6007TickUpperOverflowThe tick must be lesser than, or equal to the maximum tick(443636)上限ティックがオーバーフロー。「上限価格が高すぎます。」
6008TickAndSpacingNotMatchtick % tick_spacing must be zero渡されたティックがプールの tick_spacing の倍数ではない。「価格を最も近い有効な刻みに合わせてください。」
6009InvalidTickArrayInvalid tick array accountティック配列スロットに誤ったPDAが渡された。「内部エラー:ティック配列が間違っています — プールデータを更新してください。」
6010InvalidTickArrayBoundaryInvalid tick array boundaryティック配列インデックスのオフバイワンエラー。「内部エラー:ティック配列境界エラー。」
6011SqrtPriceLimitOverflowSquare root price limit overflow呼び出し元が指定した sqrt_price_limit が有効範囲外。「価格制限が範囲外です。」
6012SqrtPriceX64sqrt_price_x64 out of rangeスワップ中にプールの現在のsqrt価格が範囲外にずれた。「スワップを再試行してください。」
6013LiquiditySubValueErrLiquidity sub delta L must be smaller than before流動性削減での内部不変条件違反。「内部エラー:流動性計算エラー。」
6014LiquidityAddValueErrLiquidity add delta L must be greater, or equal to before流動性追加での内部不変条件違反。「内部エラー:流動性計算エラー。」
6015ForbidBothZeroForSupplyLiquidityBoth token amount must not be zero while supply liquidityamount_0_maxamount_1_max の両方がゼロの状態で流動性追加が呼び出された。「少なくとも一方のトークンを提供してください。」
6016LiquidityInsufficientLiquidity insufficientポジションに引き出しを満たすのに十分な流動性がない。「引き出し量がポジションの流動性を超えています。」
6017PriceSlippageCheckPrice slippage check約定価格が呼び出し元のスリッページガードをクリアできなかった。「価格がスリッページ許容範囲を超えました。スリッページを拡大するか再試行してください。」
6018TooLittleOutputReceivedToo little output receivedSwapBaseInput:出力量が other_amount_threshold を下回った。「スリッページ超過 — 最小出力量が満たされませんでした。」
6019TooMuchInputPaidToo much input paidSwapBaseOutput:入力量が other_amount_threshold を超えた。「スリッページ超過 — 最大入力量を超えました。」
6020ZeroAmountSpecifiedSwap special amount can not be zeroスワップ命令で amount がゼロ。「ゼロより大きい量を入力してください。」
6021InvalidInputPoolVaultInput pool vault is invalidスワップの入力バルトアカウントがプールに記録されたバルトと一致しない。「内部エラー:入力バルトが間違っています — プールデータを更新してください。」
6022TooSmallInputOrOutputAmountSwap input or output amount is too smallスワップの計算がゼロに丸められた(非常に小さなダストなど)。「このプールでスワップするには量が小さすぎます。」
6023NotEnoughTickArrayAccountNot enough tick array accountスワップ範囲に対してティック配列の残余アカウントが不足している。「内部エラー:ティック配列が不足しています — プールデータを更新してください。」
6024InvalidFirstTickArrayAccountInvalid first tick array account最初に渡されたティック配列アカウントが現在のティックをカバーしていない。「内部エラー:最初のティック配列が間違っています — プールデータを更新してください。」
6025InvalidRewardIndexInvalid reward indexreward_index[0, 2] の範囲外。N/A — 管理者パス。
6026FullRewardInfoThe init reward token reach to the maxプールにすでに最大数(3つ)の報酬ミントが設定されている。N/A — 管理者パス。
6027RewardTokenAlreadyInUseThe init reward token already in use報酬ミントが既存のものと重複している。N/A — 管理者パス。
6028ExceptRewardMintThe reward tokens must contain one of pool vault mint except the last rewardスロット2以前では、報酬ミントはプールのバルトミントのいずれかと一致する必要がある。N/A — 管理者パス。
6029InvalidRewardInitParamInvalid reward init param排出開始・終了時刻または秒間レートが不正。N/A — 管理者パス。
6030InvalidRewardInputAccountNumberInvalid collect reward input account numberCollectReward に渡された残余アカウント数が間違っている。「内部エラー:アカウント数が間違っています — 更新して再試行してください。」
6031InvalidRewardPeriodInvalid reward period報酬排出期間が無効(end <= start、ゼロ期間)。N/A — 管理者パス。
6032NotApproveUpdateRewardEmissionsModification of emissions is allowed within 72 hours from the end of the previous cycle管理者がサイクル境界の72時間ウィンドウ外で排出量を変更しようとした。N/A — 管理者パス。
6033UnInitializedRewardInfouninitialized reward info初期化されていない報酬スロットが参照された。N/A — 管理者パス。
6034NotSupportMintNot support token_2022 mint extensionCLMMが処理できないToken-2022拡張機能が検出された。「このトークンの拡張機能はRaydium CLMMでサポートされていません。」
6035MissingTickArrayBitmapExtensionAccountMissing tickarray bitmap extension accountスワップがベースビットマップでカバーされていないティック範囲を超えた。拡張ビットマップアカウントが必要。「内部エラー:ティック配列拡張が不足しています — プールデータを更新してください。」
6036InsufficientLiquidityForDirectionInsufficient liquidity for this directionスワップの方向に十分な流動性がない。「このスワップサイズには流動性が不足しています。」
6037MaxTokenOverflowMax token overflow入出力量がu64を超えた。「このプールには大きすぎる量です。」
6038CalculateOverflowCalculate overflow手数料・流動性の算術オーバーフロー。「このプールには大きすぎる量です。」
6039TransferFeeCalculateNotMatchTransferFee calculate not matchToken-2022転送手数料の観測額が期待値と一致しなかった。「トークン転送手数料がトランザクション中に変わりました。再試行してください。」
6040OrderAlreadyFilledOrder already fully filled, cannot modify未約定量がゼロの注文に対して IncreaseLimitOrder / DecreaseLimitOrder が呼び出された。「この指値注文はすでに約定済みです — 出力を受け取るには決済してください。」
6041InvalidOrderPhaseInvalid order phase注文のFIFOコホートフェーズがティックの現在のコホートと一致しなくなった状態で注文を変更しようとした。「この注文の現在の状態ではこの操作を実行できません。」
6042InvalidLimitOrderAmountInvalid limit order amount注文の入力量がプールの最小値以下(またはゼロ)。「注文サイズがプールの最小値を下回っています。」
6043OrderPhaseSaturatedTick order phase saturatedティック上のコホートの order_phase カウンターが飽和した。既存のコホートが決済されてロールオーバーするまで、そのティックでは新たな注文を開くことができない。「この価格ではアクティブな注文が多すぎます。近隣のティックを試すか、注文が決済されるまでお待ちください。」
6044InvalidDynamicFeeConfigParamsInvalid dynamic fee config paramsCreateDynamicFeeConfig / UpdateDynamicFeeConfig が拒否されたか、CreateCustomizablePool が有効な設定なしに動的手数料を有効化した。管理者パスではN/A。ユーザーパスでは「動的手数料の設定が無効です」。
6045InvalidFeeOnInvalid fee on which token (must be 0, 1, or 2)CreateCustomizablePool{0, 1, 2} 以外の collect_fee_on 値を渡した。「内部エラー:無効な手数料モード。」
6046ZeroSqrtPricesqrt_price_x64 must be greater than 0CreateCustomizablePool(またはカスタマイズ可能な初期sqrt価格を受け入れる別のパス)が sqrt_price_x64 == 0 で呼び出された。「初期価格はゼロより大きくする必要があります。」
6047ZeroLiquidityliquidity must be greater than 0流動性提供パスが liquidity == 0 かつ補償量なしで呼び出された。「流動性量はゼロより大きくする必要があります。」
6048MissingBaseFlagbase_flag is required when liquidity is zero量によるポジション開設パスが liquidity == 0 を計算したが、呼び出し元がどちらの側がベースかを示す base_flag を指定しなかった。「ゼロ以外の流動性を提供するか、どちらのトークンがベースかを指定してください。」
6049MissingMintAccountMint account is required but not providedToken-2022対応パスが、拡張機能と転送手数料の検証に必要な入出力ミントアカウントなしで呼び出された。「内部エラー:ミントアカウントが不足しています — プールデータを更新してください。」
6050MissingTokenProgram2022Token-2022 program is required but not providedSPL-Token-2022プログラムアカウントについても同様。「内部エラー:Token-2022プログラムが不足しています — 更新して再試行してください。」
番号付け変更に関する注意。 CLMMの ErrorCode 列挙型はこのリリースで番号が振り直されました。5つのレガシーバリアント(LOKZeroMintAmountInvalidLiquidityTransactionTooOldInvalidRewardDesiredAmount)といくつかのタイポ(Liquitityenoughtemissiones)が削除・修正され、11個の新しいバリアントが追加されました。Anchorはソースの順序でエラーに番号を付けるため、6000 以降のすべてのコードはプレリリースビルドに対して相対的にずれています。以前のバージョンに対して数値コードをハードコードしているクライアントはリマップが必要です。
再生成ソース:github.com/raydium-io/raydium-clmm — error.rs

AMM v4、Farm v3 / v5 / v6、LaunchLabエラー

これらのプログラムはそれぞれの章に記載されています(products/amm-v4/instructionsproducts/farm-staking/instructionsproducts/launchlab/instructions を参照)。これらのプログラムはAnchorとプレーンなSolanaエラーサーフェスが混在しているため、エラーテーブルはここではなく命令リファレンスの隣に記載されています。以下のコードはそれらの章によって予約されています:
プログラムコード範囲(Anchorのみ)リファレンス
AMM v4カスタムu32コード(Anchor形式ではない)products/amm-v4/instructions
Farm v3 / v5カスタムu32コードproducts/farm-staking/instructions
Farm v66000以上(Anchor)products/farm-staking/instructions
LaunchLab6000以上(Anchor)products/launchlab/instructions

SDKエラーをプログラムエラーにマッピングする

公式TypeScript SDKは、オンチェーンエラーを SendTransactionError にラップし、Anchorプログラムの場合は 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.
  }
}
Anchorクライアントを使用していない場合は、トランザクションログを解析してください:
Program <ProgramID> invoke [1]
Program log: AnchorError caused by account: pool_state. Error Code: ExceededSlippage. Error Number: 6005. Error Message: Exceeds desired slippage limit.
パターン Error Number: (\d+) はAnchorバージョン間で安定しており、照合に安全に使用できます。

テーブルの再生成

プログラムがアップグレードされて新しいエラーが追加された場合は、ソースから再抽出してください:
# 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.
新しいバリアントが追加された場合は、必ず reference/changelog を更新してください。SDKをアップグレードするインテグレーターがエラーハンドラーを更新すべきタイミングを把握できます。 ソース: