Chuyển đến nội dung chính

Documentation Index

Fetch the complete documentation index at: https://docs.raydium.io/llms.txt

Use this file to discover all available pages before exploring further.

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 gốc xác thực. Các bảng dưới đây được tái tạo từ file error.rs của từng chương trình trong các repository công khai của Raydium. Khi một chương trình được nâng cấp và có biến thể mới được thêm vào, 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 cuối bảng thay vì sắp xếp lại — mã lỗi Anchor được gán theo thứ tự trong source code, không phải theo tên, vì vậy việc thay đổi thứ tự sẽ làm hỏng logic xử lý lỗi của các integrator.

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

Anchor gán cho mỗi biến thể trong enum ErrorCode của một 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 dạng số (ví dụ: 0x1771 = 6001) trong transaction logs.
  • Tên lỗi (ví dụ: InvalidOwner) từ IDL.
  • Chuỗi #[msg(...)] mà Anchor đã emit trong log_messages.
Các integrator nên so khớp theo mã số, không phải theo chuỗi thông báo (chuỗi có thể được thay đổi mà không cần tăng phiên bản).
// Example: detect the CPMM slippage error and surface a clean UX message.
const CPMM_EXCEEDED_SLIPPAGE = 6005;

try {
  await sdk.cpmm.swap({ ... });
} catch (err: any) {
  const code = err?.error?.errorCode?.number ?? err?.code;
  if (code === CPMM_EXCEEDED_SLIPPAGE) {
    showToast("Price moved past your slippage tolerance. Increase slippage or retry.");
    return;
  }
  throw err;
}

Lỗi CPMM (Standard AMM)

Program ID: xem reference/program-addresses. Nguồn: raydium-cp-swap/programs/cp-swap/src/error.rs.
CodeVariantChuỗi #[msg]Nguyên nhân thường gặpUX được đề xuất
6000NotApprovedNot approvedNgười gọi không phải là authority được cấu hình cho một lệnh admin.”Chỉ admin của pool mới có thể thực hiện thao tác này.”
6001InvalidOwnerInput account owner is not the program addressMột account được truyền vào thuộc sở hữu của chương trình sai (thường là token program sai hoặc PDA sai chương trình).”Lỗi nội bộ: sai owner account — hãy làm mới và thử lại.”
6002EmptySupplyInput token account emptySố dư LP hoặc token account bằng không tại bước yêu cầu số lượng dương.”Không có gì để rút.”
6003InvalidInputInvalidInputĐối số không hợp lệ (số lượng ngoài phạm vi, flag sai).”Đầu vào không hợp lệ — kiểm tra lại số lượng và thử lại.”
6004IncorrectLpMintAddress of the provided lp token mint is incorrectAccount LP mint được truyền vào không khớp với pool_state.lp_mint.”Lỗi nội bộ: LP mint sai — hãy làm mới dữ liệu pool.”
6005ExceededSlippageExceeds desired slippage limitGiá thực thi tệ hơn minAmountOut / maxAmountIn của người dùng.”Giá đã vượt quá ngưỡng slippage của bạn. Hãy tăng slippage hoặc thử lại.”
6006ZeroTradingTokensGiven pool token amount results in zero trading tokensPhép tính deposit/withdraw làm tròn một phía về không (vị thế quá nhỏ).”Số lượng thấp hơn mức tối thiểu của pool này.”
6007NotSupportMintNot support token_2022 mint extension (lỗi ngữ pháp trong source)Pool gặp phải một extension Token-2022 mà nó không thể xử lý an toàn (ví dụ: TransferHook, DefaultAccountState=Frozen).”Token này có extension mà Raydium không hỗ trợ trong CPMM.”
6008InvalidVaultinvaild vault (lỗi chính tả trong source)Account vault được truyền vào không khớp với vault đã lưu trong pool_state.”Lỗi nội bộ: vault sai — hãy làm mới và thử lại.”
6009InitLpAmountTooLessInit lp amount is too less(Because 100 amount lp will be locked) (lỗi ngữ pháp trong source)Khi khởi tạo pool, lượng LP supply được tính toán thấp hơn số lượng khóa vĩnh viễn.”Thanh khoản ban đầu quá nhỏ. Hãy tăng số lượng deposit.”
6010TransferFeeCalculateNotMatchTransferFee calculate not matchSố lượng sau khi chuyển thực tế của một fee mint Token-2022 không khớp với dự tính trước.”Phí chuyển token thay đổi giữa chừng. Hãy thử lại.”
6011MathOverflowMath overflowTính toán trung gian trong swap/deposit/phí bị tràn số.”Số lượng quá lớn đối với pool này.”
6012InsufficientVaultInsufficient vaultSố dư vault của pool quá thấp để đáp ứng đầu ra được yêu cầu.”Pool không đủ thanh khoản cho giao dịch này.”
6013InvalidFeeModelInvalid fee modelAdmin đặt tổ hợp tham số AmmConfig bị từ chối on-chain.N/A — chỉ admin mới dùng đường này.
6014NoFeeCollectFee is zerocollect_protocol_fee / collect_fund_fee được gọi khi phí thu được bằng không.N/A — đường admin; tooling nên bỏ qua.
Nguồn tái tạo: 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.
CodeVariantChuỗi #[msg]Nguyên nhân thường gặpUX được đề xuất
6000NotApprovedNot approvedNgười gọi không phải là admin được cấu hình cho lệnh này.”Chỉ admin của pool mới có thể thực hiện thao tác này.”
6001InvalidUpdateConfigFlaginvalid update amm config flagAdmin truyền giá trị param không được nhận dạng vào update_amm_config.N/A — chỉ admin.
6002AccountLackAccount lackRemaining account bắt buộc bị thiếu trong tx (thường là tick-array hoặc oracle extension).”Lỗi nội bộ: thiếu account — hãy làm mới dữ liệu pool.”
6003ClosePositionErrRemove liquidity, collect fees owed and reward then you can close position accountCố đóng vị thế vẫn còn thanh khoản, phí chưa thu hoặc phần thưởng chưa nhận.”Hãy rút toàn bộ thanh khoản và nhận phí/phần thưởng trước khi đóng vị thế.”
6004InvalidTickIndexTick out of rangetick_lower hoặc tick_upper nằm ngoài [-443636, 443636].”Phạm vi giá vượt giới hạn của pool này.”
6005TickInvalidOrderThe lower tick must be below the upper ticktick_lower >= tick_upper.”Giá dưới phải thấp hơn giá trên.”
6006TickLowerOverflowThe tick must be greater, or equal to the minimum tick(-443636)Tick dưới bị underflow.”Giá dưới quá thấp.”
6007TickUpperOverflowThe tick must be lesser than, or equal to the maximum tick(443636)Tick trên bị overflow.”Giá trên quá cao.”
6008TickAndSpacingNotMatchtick % tick_spacing must be zeroTick được gửi không phải bội số của tick_spacing của pool.”Hãy căn chỉnh giá về bước hợp lệ gần nhất.”
6009InvalidTickArrayInvalid tick array accountPDA sai được truyền cho một slot tick-array.”Lỗi nội bộ: tick array sai — hãy làm mới dữ liệu pool.”
6010InvalidTickArrayBoundaryInvalid tick array boundaryLỗi off-by-one trong đánh chỉ mục tick-array.”Lỗi nội bộ: lỗi ranh giới tick-array.”
6011SqrtPriceLimitOverflowSquare root price limit overflowsqrt_price_limit do người gọi cung cấp nằm ngoài phạm vi hợp lệ.”Giới hạn giá ngoài phạm vi.”
6012SqrtPriceX64sqrt_price_x64 out of rangeSqrt price hiện tại của pool bị lệch ra ngoài phạm vi giữa chừng swap.”Hãy thử lại swap.”
6013LiquiditySubValueErrLiquidity sub delta L must be smaller than beforeVi phạm bất biến nội bộ khi decrease-liquidity.”Lỗi nội bộ: lỗi tính toán thanh khoản.”
6014LiquidityAddValueErrLiquidity add delta L must be greater, or equal to beforeVi phạm bất biến nội bộ khi increase-liquidity.”Lỗi nội bộ: lỗi tính toán thanh khoản.”
6015ForbidBothZeroForSupplyLiquidityBoth token amount must not be zero while supply liquidityGọi increase-liquidity với cả amount_0_maxamount_1_max đều bằng không.”Hãy cung cấp ít nhất một loại token.”
6016LiquidityInsufficientLiquidity insufficientVị thế không đủ thanh khoản để đáp ứng yêu cầu rút.”Số lượng rút vượt thanh khoản của vị thế.”
6017PriceSlippageCheckPrice slippage checkGiá thực thi không vượt qua kiểm tra slippage của người gọi.”Giá đã vượt quá ngưỡng slippage của bạn. Hãy tăng slippage hoặc thử lại.”
6018TooLittleOutputReceivedToo little output receivedSwapBaseInput: số lượng đầu ra thấp hơn other_amount_threshold.”Slippage vượt quá — đầu ra tối thiểu không đạt.”
6019TooMuchInputPaidToo much input paidSwapBaseOutput: số lượng đầu vào cao hơn other_amount_threshold.”Slippage vượt quá — đầu vào tối đa bị vượt.”
6020ZeroAmountSpecifiedSwap special amount can not be zeroamount bằng không trong một lệnh swap.”Hãy nhập số lượng lớn hơn không.”
6021InvalidInputPoolVaultInput pool vault is invalidAccount input-vault của swap không khớp với vault đã lưu trong pool.”Lỗi nội bộ: input vault sai — hãy làm mới dữ liệu pool.”
6022TooSmallInputOrOutputAmountSwap input or output amount is too smallPhép tính swap làm tròn về không, thường là các khoản dust rất nhỏ.”Số lượng quá nhỏ để swap trong pool này.”
6023NotEnoughTickArrayAccountNot enough tick array accountKhông cung cấp đủ remaining account tick-array cho phạm vi swap.”Lỗi nội bộ: không đủ tick-array — hãy làm mới dữ liệu pool.”
6024InvalidFirstTickArrayAccountInvalid first tick array accountAccount tick-array đầu tiên được truyền vào không bao phủ tick hiện tại.”Lỗi nội bộ: tick array đầu tiên sai — hãy làm mới dữ liệu pool.”
6025InvalidRewardIndexInvalid reward indexreward_index nằm ngoài [0, 2].N/A — đường admin.
6026FullRewardInfoThe init reward token reach to the maxPool đã có đủ số lượng reward mint tối đa (3).N/A — đường admin.
6027RewardTokenAlreadyInUseThe init reward token already in useReward mint trùng với một mint đã tồn tại.N/A — đường admin.
6028ExceptRewardMintThe reward tokens must contain one of pool vault mint except the last rewardTrước slot 2, reward mint phải bằng một trong các vault mint của pool.N/A — đường admin.
6029InvalidRewardInitParamInvalid reward init paramThời gian bắt đầu/kết thúc phát thưởng hoặc tốc độ phát thưởng mỗi giây không hợp lệ.N/A — đường admin.
6030InvalidRewardInputAccountNumberInvalid collect reward input account numberSố lượng remaining account truyền vào CollectReward sai.”Lỗi nội bộ: số account sai — hãy làm mới và thử lại.”
6031InvalidRewardPeriodInvalid reward periodChu kỳ phát thưởng không hợp lệ (end <= start, thời gian bằng không).N/A — đường admin.
6032NotApproveUpdateRewardEmissionsModification of emissions is allowed within 72 hours from the end of the previous cycleAdmin cố sửa đổi phát thưởng ngoài cửa sổ 72 giờ quanh ranh giới chu kỳ.N/A — đường admin.
6033UnInitializedRewardInfouninitialized reward infoSlot phần thưởng chưa được khởi tạo nhưng lại được tham chiếu.N/A — đường admin.
6034NotSupportMintNot support token_2022 mint extensionCLMM gặp phải extension Token-2022 mà nó không thể xử lý.”Token này có extension mà Raydium CLMM không hỗ trợ.”
6035MissingTickArrayBitmapExtensionAccountMissing tickarray bitmap extension accountSwap vượt qua phạm vi tick không được bitmap cơ sở bao phủ; cần account bitmap mở rộng.”Lỗi nội bộ: thiếu tick-array extension — hãy làm mới dữ liệu pool.”
6036InsufficientLiquidityForDirectionInsufficient liquidity for this directionKhông đủ thanh khoản theo chiều swap được yêu cầu.”Không đủ thanh khoản cho kích thước swap này.”
6037MaxTokenOverflowMax token overflowSố lượng đầu vào/đầu ra vượt quá u64.”Số lượng quá lớn đối với pool này.”
6038CalculateOverflowCalculate overflowTính toán phí/thanh khoản bị tràn số.”Số lượng quá lớn đối với pool này.”
6039TransferFeeCalculateNotMatchTransferFee calculate not matchSố lượng thực tế của phí chuyển Token-2022 không khớp với dự tính.”Phí chuyển token thay đổi giữa chừng. Hãy thử lại.”
6040OrderAlreadyFilledOrder already fully filled, cannot modifyIncreaseLimitOrder / DecreaseLimitOrder được gọi trên một lệnh có phần chưa khớp bằng không.”Lệnh giới hạn này đã được khớp hoàn toàn — hãy settle để nhận đầu ra.”
6041InvalidOrderPhaseInvalid order phaseThay đổi một lệnh mà phase cohort FIFO của nó không còn khớp với cohort hiện tại của tick.”Không thể thực hiện thao tác này ở trạng thái hiện tại của lệnh.”
6042InvalidLimitOrderAmountInvalid limit order amountĐầu vào của lệnh thấp hơn mức tối thiểu của pool (hoặc bằng không) khi mở/tăng/giảm.”Kích thước lệnh thấp hơn mức tối thiểu của pool.”
6043OrderPhaseSaturatedTick order phase saturatedBộ đếm order_phase của cohort trên tick đã bão hòa; không thể mở thêm lệnh tại tick đó cho đến khi các cohort hiện có được settle và rollover.”Quá nhiều lệnh đang hoạt động tại mức giá này; hãy thử tick lân cận hoặc chờ các lệnh được settle.”
6044InvalidDynamicFeeConfigParamsInvalid dynamic fee config paramsCreateDynamicFeeConfig / UpdateDynamicFeeConfig bị từ chối; hoặc CreateCustomizablePool bật dynamic fee mà không có config hợp lệ.N/A ở đường admin; “Cấu hình phí động không hợp lệ” ở đường người dùng.
6045InvalidFeeOnInvalid fee on which token (must be 0, 1, or 2)CreateCustomizablePool truyền giá trị collect_fee_on nằm ngoài {0, 1, 2}.”Lỗi nội bộ: chế độ phí không hợp lệ.”
6046ZeroSqrtPricesqrt_price_x64 must be greater than 0CreateCustomizablePool (hoặc đường khác cho phép tùy chỉnh sqrt price ban đầu) được gọi với sqrt_price_x64 == 0.”Giá ban đầu phải lớn hơn không.”
6047ZeroLiquidityliquidity must be greater than 0Một đường cung cấp thanh khoản được gọi với liquidity == 0 và không có số lượng bù đắp.”Số lượng thanh khoản phải lớn hơn không.”
6048MissingBaseFlagbase_flag is required when liquidity is zeroĐường mở vị thế theo số lượng tính ra liquidity == 0 và người gọi không cung cấp base_flag để xác định bên nào là base.”Hãy cung cấp thanh khoản khác không hoặc chỉ định token nào là base.”
6049MissingMintAccountMint account is required but not providedMột đường có nhận thức Token-2022 được gọi mà thiếu account mint đầu vào/đầu ra cần để xác thực extension và phí chuyển.”Lỗi nội bộ: thiếu mint account — hãy làm mới dữ liệu pool.”
6050MissingTokenProgram2022Token-2022 program is required but not providedTương tự trên nhưng cho account chương trình SPL-Token-2022.”Lỗi nội bộ: thiếu chương trình Token-2022 — hãy làm mới và thử lại.”
Lưu ý về việc đá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, đồng thời mười một biến thể mới được thêm vào cuối. Vì Anchor đánh số lỗi theo thứ tự trong source, mọi code từ 6000 trở đi đã dịch chuyển so với các bản build trước khi phát hành. Các client đã hard-code mã số với phiên bản cũ hơn cần remap 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 lại 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 đó sử dụng kết hợp Anchor và surface lỗi Solana thuần, bảng lỗi của chúng được đặt cạnh tài liệu tham khảo instruction thay vì ở đây. Các mã dưới đây được dành riêng cho các chương đó:
Chương trìnhPhạm vi mã (chỉ Anchor)Tài liệu tham khảo
AMM v4Mã u32 tùy chỉnh, không theo kiểu Anchorproducts/amm-v4/instructions
Farm v3 / v5Mã u32 tùy chỉnhproducts/farm-staking/instructions
Farm v66000+ (Anchor)products/farm-staking/instructions
LaunchLab6000+ (Anchor)products/launchlab/instructions

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

TypeScript SDK chính thức bọc các lỗi on-chain vào SendTransactionError và, với các chương trình Anchor, là AnchorError:
import { AnchorError } from "@coral-xyz/anchor";

try {
  await sdk.cpmm.swap({ ... });
} catch (err) {
  if (err instanceof AnchorError) {
    console.log(err.error.errorCode.number, err.error.errorCode.code, err.error.errorMessage);
    // 6005 ExceededSlippage "Exceeds desired slippage limit"
  } else {
    // Raw SendTransactionError — inspect err.logs for the "custom program error: 0x..." line.
  }
}
Nếu bạn không sử dụng Anchor ở phía client, hãy phân tích transaction logs:
Program <ProgramID> invoke [1]
Program log: AnchorError caused by account: pool_state. Error Code: ExceededSlippage. Error Number: 6005. Error Message: Exceeds desired slippage limit.
Pattern Error Number: (\d+) ổn định qua các phiên bản Anchor và an toàn để so 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 lỗi mới, hãy trích xuất lại từ source:
# Clone and grep the error enum in order.
git clone --depth=1 https://github.com/raydium-io/raydium-cp-swap
awk '/#\[msg\(/{ gsub(/^[ \t]*#\[msg\("|"\)\][ \t]*/,""); m=$0; getline; gsub(/,/,""); gsub(/^[ \t]+/,""); print "6000+++\t" $0 "\t" m }' \
  raydium-cp-swap/programs/cp-swap/src/error.rs
# Replace 6000+++ with monotonically-increasing 6000,6001,... Append new rows to the table above.
Luôn cập nhật reference/changelog khi có biến thể mới được thêm vào, để các integrator đang nâng cấp SDK biết cần làm mới error handler của họ. Nguồn tham khảo: