跳转到主要内容
本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
权威来源。 下表从各程序在 Raydium 公开仓库中的 error.rs 自动生成。当程序升级并新增变体时,请重新运行提取脚本(每张表底部有链接),并将新行追加到表尾,而不是重新排列——Anchor 错误代码按源码顺序分配,而非按名称,调整顺序会破坏集成方的错误处理逻辑。

Anchor 错误代码的工作原理

Anchor 从 6000 开始,依次为程序 ErrorCode 枚举的每个变体分配数字代码。交易失败时会暴露以下信息:
  • 数字错误代码(例如 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 枚举进行了重新编号:移除/修复了五个旧变体(LOKZeroMintAmountInvalidLiquidityTransactionTooOldInvalidRewardDesiredAmount)及若干拼写错误(Liquitityenoughtemissiones),并追加了十一个新变体。由于 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 的错误机制,其错误表位于对应的指令参考页,而非此处。以下代码范围由各章节保留:

将 SDK 错误映射到程序错误

官方 TypeScript SDK 将链上错误封装为 SendTransactionError,对于 Anchor 程序则封装为 AnchorError
如果你没有使用 Anchor 客户端,可以解析交易日志:
正则模式 Error Number: (\d+) 在各 Anchor 版本中稳定,可安全匹配。

重新生成这些表

当程序升级并新增错误时,请从源码重新提取:
每当新增变体时,请同时更新 reference/changelog,以便升级 SDK 的集成方及时刷新其错误处理逻辑。 来源: