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

Anchor エラーコードの仕組み

Anchor は、プログラムの ErrorCode 列挙型の各バリアントに 6000 から始まる数値コードを割り当てます。失敗したトランザクションは以下を表示します:
  • 数値エラーコード(例:0x1771 = 6001)がトランザクション ログに表示されます。
  • エラー名(例:InvalidOwner)が IDL から取得されます。
  • #[msg(...)] 文字列が Anchor によって log_messages に出力されます。
インテグレーターは、メッセージ文字列ではなく数値コードで照合する必要があります(文字列はバージョンをバンプせずに言い換えることができます)。

CPMM(標準 AMM)エラー

プログラム ID:reference/program-addresses を参照してください。ソース:raydium-cp-swap/programs/cp-swap/src/error.rs。 再生成ソース:github.com/raydium-io/raydium-cp-swap — error.rs。

CLMM エラー

プログラム ID:reference/program-addresses を参照してください。ソース:raydium-clmm/programs/amm/src/error.rs。
番号付けの変更に関する注記。 CLMM ErrorCode 列挙型はこのリリースで番号付けが変更されました:5 つのレガシー バリアント(LOK、ZeroMintAmount、InvalidLiquidity、TransactionTooOld、InvalidRewardDesiredAmount)といくつかのタイプミス(Liquitity、enought、emissiones)が削除/修正され、リミット オーダーのリリースにより 11 の新しいバリアントが追加されました(6040〜6050)。6051(InvalidTickArrayBitmapExtensionAccount)は別の後続の変更によるものです。これで合計 52 バリアント、6000〜6051 となり、デプロイされたプログラムのオンチェーン IDL が報告する数と同じです。Anchor はエラーをソース順序で番号付けするため、6000 以上のすべてのコードは事前リリース ビルドに対して相対的にシフトしています。数値コードをハードコードしたクライアントは、リマップが必要です。
再生成ソース:github.com/raydium-io/raydium-clmm — error.rs。

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

これらのプログラムは、それぞれのチャプターで文書化されています(products/amm-v4/instructions、products/farm-staking/instructions、products/launchlab/instructions を参照)。これらのプログラムは Anchor とプレーン Solana エラー サーフェスの混合を使用するため、エラー テーブルはここではなく命令リファレンスの隣に配置されます。以下のコードはこれらのチャプターで予約されています: 最近の LaunchLab リリースではコード 6000–6021 を変更しないままにしています。2026-08-17 リリースは以前のプラットフォーム グローバル アクセス エラーを削除し、6022 を許可アカウント検証エラーに割り当てました。2026-08-24 リリースは 6023 を追加します。2026-08-31 リリースは 6024–6030 を追加します。2026-09-09 リリースは 6031 を追加します: 古い PlatformGlobalAccessDenied(6022)および InvalidPlatformGlobalAccess(6023)バリアントは削除されます。前の IDL を使用して 6022 をデコードしないでください。6023 は 2026-08-17 リリースで空いており、2026-08-24 リリースで関連のないエラーに再利用されるため、どちらかの以前のバージョンの IDL でデコードしてはいけません。 6020 は意図的に保持されます。Anchor はバリアントを位置で番号付けするため、削除すると後続のすべてのコードがシフトし、6021–6031 をデコードするすべてのクライアントが壊れます。

AMM v4:AmmError は Anchor 番号付けではありません

AMM v4 は Anchor より前です。AmmError は FromPrimitive を使用したプレーン thiserror 列挙型で、ProgramError::Custom(e as u32) を通じて変換されるため、そのコードは 0 から始まります。6000 ではなく、Anchor と同様に、ソース順序で割り当てられます。2026-09 アップグレードは 1 つのバリアントを追加します: コード 0–59 は変更されていないため、何もシフトしません。トランザクション ログでは、これは custom program error: 0x3c として表示されます。再生成ソース:github.com/raydium-io/raydium-amm — error.rs。

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

公式 TypeScript SDK はオンチェーン エラーを SendTransactionError にラップし、Anchor プログラムの場合は AnchorError にラップします:
クライアント側で Anchor を使用していない場合は、トランザクション ログを解析します:
パターン Error Number: (\d+) は Anchor バージョン全体で安定しており、マッチングに安全です。

これらのテーブルを再生成する

プログラムがアップグレードされて新しいエラーが追加されたときは、ソースから再抽出します:
プログラムがアップグレードされてバリアントが追加されたときは、常に reference/changelog を更新してください。SDK をアップグレードするインテグレーターがエラー ハンドラーをリフレッシュする必要があることを知っているようにします。 ソース: