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 つのレガシー バリアント(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 エラー サーフェスの混合を使用するため、エラー テーブルはここではなく命令リファレンスの隣に配置されます。以下のコードはこれらのチャプターで予約されています: LaunchLab リリースはコード 60006021 を変更なしで保持します。以前のプラットフォーム グローバル アクセス エラーを削除し、新しい許可アカウント検証エラーに 6022 を割り当てます: 古い PlatformGlobalAccessDenied6022)および InvalidPlatformGlobalAccess6023)バリアントは削除されます。以前の IDL を使用して 6022 をデコードしないでください。

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

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

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

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