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 的錯誤介面,其錯誤表格放置於指令參考旁,而非此處。以下代碼由各章節保留:

將 SDK 錯誤對應至程式錯誤

官方 TypeScript SDK 會將鏈上錯誤封裝成 SendTransactionError,對於 Anchor 程式則封裝成 AnchorError
如果你沒有在客戶端使用 Anchor,可以解析交易日誌:
Error Number: (\d+) 這個模式在所有 Anchor 版本中保持穩定,可安全使用於匹配。

重新產生這些表格

當程式升級並新增錯誤時,請從原始碼重新擷取:
每次新增變體時,請務必更新 reference/changelog,讓正在升級 SDK 的整合者知道需要更新其錯誤處理邏輯。 來源: