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 — mã lỗi Anchor được gán theo thứ tự nguồn, không phải 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)

Program ID: xem /vi/reference/program-addresses. Nguồn: raydium-cp-swap/programs/cp-swap/src/error.rs. Nguồn tạo lại: github.com/raydium-io/raydium-cp-swap — error.rs.

Lỗi CLMM

Program ID: xem reference/program-addresses. Nguồn: raydium-clmm/programs/amm/src/error.rs.
Ghi chú 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ể cũ (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 (6040–6050) bởi bản phát hành limit-order; 6051 (InvalidTickArrayBitmapExtensionAccount) đến từ một thay đổi riêng biệt, sau này. Điều đó tạo ra 52 biến thể, 6000–6051, là số lượng mà IDL on-chain của chương trình được triển khai hiện tại báo cáo. Bản nâng cấp 2026-09-30 thêm 6052 mà không thay đổi bất cứ điều gì, tổng cộng 53. 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 client đã hard-code 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 tài liệu hóa trong các chương tương ứ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, bảng lỗi của chúng nằm cạnh tham chiếu hướng dẫn thay vì ở đây. Các mã dưới đây được dành riêng bởi các chương đó: 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 đã loại bỏ các lỗi truy cập nền tảng toàn cục trướ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ị loại bỏ. Không giải mã 6022 bằng IDL trước đó, và lưu ý rằng 6023 — được bản phát hành 2026-08-17 bỏ trống — được bản phát hành 2026-08-24 sử dụng lại 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 nào trước đó. 6020 được giữ lại cố ý. Anchor đánh số các biến thể theo vị trí, vì vậy việc 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 kiểu Anchor

AMM v4 có từ 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ư của 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ì bị dịch chuyển. 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 tới lỗi chương trình

SDK TypeScript chính thức bao bọc các lỗi trên chuỗi 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 một biến thể mới được thêm, để các nhà tích hợp nâng cấp SDK biết cần làm mới các trình xử lý lỗi của họ. Nguồn: