Skip to main content
Trang này được dịch tự động bằng AI. Phiên bản tiếng Anh là bản chính thức.Xem bản tiếng Anh →
Nguồn chính thức. Các bảng dưới đây được tạo lại từ error.rs của mỗi chương trình trong các kho lưu trữ công khai của Raydium. Khi một chương trình được nâng cấp và thêm một biến thể mới, hãy chạy lại quá trình trích xuất (liên kết ở cuối mỗi bảng) và thêm vào bảng thay vì sắp xếp lại — các mã lỗi Anchor được gán theo thứ tự nguồn, không phải theo tên, vì vậy sắp xếp lại sẽ làm hỏng xử lý lỗi của người tích hợp.

Cách mã lỗi Anchor hoạt động

Anchor gán cho mỗi biến thể của enum ErrorCode của chương trình một mã số bắt đầu từ 6000. Một giao dịch thất bại sẽ hiển thị:
  • Mã lỗi số (ví dụ: 0x1771 = 6001) trong nhật ký giao dịch.
  • Tên lỗi (ví dụ: InvalidOwner) từ IDL.
  • Chuỗi #[msg(...)] mà Anchor phát ra trong log_messages.
Những người tích hợp nên khớp với mã số, không phải chuỗi thông báo (chuỗi có thể được diễn đạt lại mà không cần tăng phiên bản).

Lỗi CPMM (Standard AMM)

ID chương trình: xem reference/program-addresses. Nguồn: raydium-cp-swap/programs/cp-swap/src/error.rs. Nguồn tái tạo: github.com/raydium-io/raydium-cp-swap — error.rs.

Lỗi CLMM

ID chương trình: xem reference/program-addresses. Nguồn: raydium-clmm/programs/amm/src/error.rs.
Lưu ý về đánh số lại. Enum ErrorCode của CLMM được đánh số lại trong bản phát hành này: năm biến thể kế thừa (LOK, ZeroMintAmount, InvalidLiquidity, TransactionTooOld, InvalidRewardDesiredAmount) và một số lỗi chính tả (Liquitity, enought, emissiones) đã bị xóa/sửa, và mười một biến thể mới được thêm vào (6040–6050) bởi bản phát hành limit-order; 6051 (InvalidTickArrayBitmapExtensionAccount) đến từ một thay đổi riêng, muộn hơn. Như vậy tổng cộng có 52 biến thể, 6000–6051 — đúng bằng số lượng mà IDL trên chuỗi của chương trình đã triển khai báo cáo. Vì Anchor đánh số lỗi theo thứ tự nguồn, mọi mã ở hoặc sau 6000 đã thay đổi so với các bản dựng trước phát hành. Các máy khách đã mã hóa cứng các mã số so với phiên bản trước cần ánh xạ lại.
Nguồn tái tạo: github.com/raydium-io/raydium-clmm — error.rs.

Lỗi AMM v4, Farm v3 / v5 / v6, LaunchLab

Các chương trình này được ghi chép trong các chương tương ứng của chúng (xem products/amm-v4/instructions, products/farm-staking/instructions, products/launchlab/instructions). Vì các chương trình này sử dụng hỗn hợp các bề mặt lỗi Anchor và Solana thuần túy, các bảng lỗi của chúng nằm cạnh tham chiếu lệnh thay vì ở đây. Các mã dưới đây được dành riêng bởi các chương này: Các bản phát hành LaunchLab gần đây giữ nguyên các mã 6000–6021. Bản phát hành 2026-08-17 đã xóa các lỗi truy cập toàn cầu nền tảng cũ và gán 6022 cho lỗi xác thực tài khoản cho phép; bản phát hành 2026-08-24 thêm 6023; bản phát hành 2026-08-31 thêm 6024–6030; bản phát hành 2026-09-09 thêm 6031: Các biến thể PlatformGlobalAccessDenied (6022) và InvalidPlatformGlobalAccess (6023) cũ đã bị xóa. Không giải mã 6022 bằng IDL trước đó, và lưu ý rằng 6023 — được giải phóng bởi bản phát hành 2026-08-17 — được tái sử dụng bởi bản phát hành 2026-08-24 cho một lỗi không liên quan, vì vậy nó không được giải mã bằng IDL từ bất kỳ phiên bản trước nào. 6020 được giữ lại cố ý. Anchor đánh số các biến thể theo vị trí, vì vậy xóa nó sẽ dịch chuyển mọi mã sau nó và phá vỡ mọi máy khách giải mã 6021–6031.

AMM v4: AmmError không được đánh số theo Anchor

AMM v4 trước Anchor. AmmError là một enum thiserror thuần túy với FromPrimitive, được chuyển đổi thông qua ProgramError::Custom(e as u32), vì vậy các mã của nó bắt đầu từ 0, không phải 6000 — và, giống như Anchor, được gán theo thứ tự nguồn. Bản nâng cấp 2026-09 thêm một biến thể: Các mã 0–59 không thay đổi, vì vậy không có gì thay đổi. Trong nhật ký giao dịch, điều này hiển thị dưới dạng custom program error: 0x3c. Nguồn tái tạo: github.com/raydium-io/raydium-amm — error.rs.

Ánh xạ lỗi SDK thành lỗi chương trình

SDK TypeScript chính thức bao bọc các lỗi on-chain thành SendTransactionError và, đối với các chương trình Anchor, AnchorError:
Nếu bạn không sử dụng Anchor phía máy khách, hãy phân tích nhật ký giao dịch:
Mẫu Error Number: (\d+) ổn định trên các phiên bản Anchor và an toàn để khớp.

Tái tạo các bảng này

Khi một chương trình được nâng cấp và thêm một lỗi mới, hãy trích xuất lại từ nguồn:
Luôn cập nhật reference/changelog khi thêm một biến thể mới, để những người tích hợp nâng cấp SDK biết cần làm mới trình xử lý lỗi của họ. Nguồn: