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)被移除/修复,十一个新变体被追加。因为 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 的集成商知道刷新其错误处理程序。 源: