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 列舉在此版本中被重新編號:五個舊版變體(LOK、ZeroMintAmount、InvalidLiquidity、TransactionTooOld、InvalidRewardDesiredAmount)和幾個拼寫錯誤(Liquitity、enought、emissiones)被移除/修復,而限價訂單版本附加了十一個新變體(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 升級附加一個變體: 代碼 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 的整合者知道重新整理其錯誤處理程式。 來源: