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 枚举在此版本中被重新编号:五个遗留变体(LOKZeroMintAmountInvalidLiquidityTransactionTooOldInvalidRewardDesiredAmount)和几个拼写错误(Liquitityenoughtemissiones)被移除/修复,限价单版本追加了十一个新变体(60406050);6051InvalidTickArrayBitmapExtensionAccount)来自另一次更晚的改动。这样总共 52 个变体,60006051 —— 与已部署程序的链上 IDL 报告的数量相同。因为 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 不变。2026-08-17 版本移除了前平台全局访问错误并将 6022 分配给允许账户验证错误;2026-08-24 版本追加 6023;2026-08-31 版本追加 60246030;2026-09-09 版本追加 6031 旧的 PlatformGlobalAccessDenied6022)和 InvalidPlatformGlobalAccess6023)变体被移除。不要使用之前的 IDL 解码 6022,并注意 6023 ——由 2026-08-17 版本空出——由 2026-08-24 版本为不相关的错误重新使用,因此不能用早期版本的 IDL 解码。 6020 被故意保留。Anchor 按位置对变体进行编号,所以删除它会移位其后的每个代码并破坏每个解码 60216031 的客户端。

AMM v4:AmmError 不是 Anchor 编号的

AMM v4 早于 Anchor。AmmError 是带有 FromPrimitive 的纯 thiserror 枚举,通过 ProgramError::Custom(e as u32) 转换,所以其代码从 0 开始,而不是 6000 ——并且,像 Anchor 一样,由源代码顺序分配。2026-09 升级追加了一个变体: 代码 059 保持不变,所以没有任何移位。在交易日志中,这显示为 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 的集成商知道刷新其错误处理程序。 来源: