الانتقال إلى المحتوى الرئيسي

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.

هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
مصدر الحقيقة. الجداول أدناه مُعاد توليدها من ملف error.rs الخاص بكل برنامج في مستودعات Raydium العامة. عند ترقية برنامج وإضافة متغير جديد، أعِد تشغيل عملية الاستخراج (الرابط في أسفل كل جدول) وأضِف الصفوف إلى الجدول دون إعادة ترتيبه — إذ تُعيَّن رموز أخطاء Anchor وفق ترتيب المصدر لا وفق الأسماء، وإعادة الترتيب تُفسد معالجة الأخطاء لدى المُدمِجين.

كيف تعمل رموز أخطاء Anchor

يُعيِّن Anchor لكل متغير في تعداد ErrorCode الخاص بالبرنامج رمزًا رقميًا يبدأ من 6000. تظهر معاملات الفشل على النحو التالي:
  • رمز الخطأ الرقمي (مثلاً 0x1771 = 6001) في سجلات المعاملة.
  • اسم الخطأ (مثلاً InvalidOwner) من IDL.
  • سلسلة #[msg(...)] التي يُصدرها Anchor في log_messages.
ينبغي للمُدمِجين المطابقة على الرمز الرقمي لا على سلسلة الرسالة (إذ يمكن إعادة صياغة السلسلة دون رفع رقم الإصدار).
// 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;
}

أخطاء CPMM (AMM القياسي)

معرف البرنامج: انظر reference/program-addresses. المصدر: raydium-cp-swap/programs/cp-swap/src/error.rs.
الرمزالمتغيرسلسلة #[msg]السبب الشائعرسالة UX الموصى بها
6000NotApprovedNot approvedالمُستدعي ليس الجهة المُخوَّلة للتحكم في هذه التعليمة الإدارية.”هذا الإجراء مخصص لمسؤول الـ pool فقط.”
6001InvalidOwnerInput account owner is not the program addressالحساب الممرَّر مملوك لبرنامج خاطئ (في الغالب برنامج token خاطئ أو PDA لبرنامج مختلف).”خطأ داخلي: عدم تطابق مالك الحساب — أعِد التحميل وحاول مجددًا.”
6002EmptySupplyInput token account emptyرصيد حساب LP أو token يساوي صفرًا في خطوة تستلزم قيمة موجبة.”لا يوجد شيء للسحب.”
6003InvalidInputInvalidInputوسيطة خاطئة بشكل عام (مبلغ خارج النطاق، علامة خاطئة).”إدخال غير صالح — تحقق من المبالغ وحاول مجددًا.”
6004IncorrectLpMintAddress of the provided lp token mint is incorrectحساب LP mint الممرَّر لا يطابق pool_state.lp_mint.”خطأ داخلي: LP mint خاطئ — أعِد تحميل بيانات الـ pool.”
6005ExceededSlippageExceeds desired slippage limitالسعر المُنفَّذ أسوأ من minAmountOut / maxAmountIn الذي حدده المستخدم.”تجاوز السعر حدود تحمل الـ slippage. ارفع قيمة الـ slippage أو أعِد المحاولة.”
6006ZeroTradingTokensGiven pool token amount results in zero trading tokensتقريب رياضيات الإيداع / السحب أحد الجانبين إلى صفر (الحجم صغير جدًا).”المبلغ أدنى من الحد الأدنى لهذا الـ pool.”
6007NotSupportMintNot support token_2022 mint extension (grammar in source)صادف الـ pool امتدادًا في Token-2022 لا يستطيع التعامل معه بأمان (مثلاً TransferHook أو DefaultAccountState=Frozen).”هذا الـ token يحتوي على امتداد غير مدعوم في CPMM من Raydium.”
6008InvalidVaultinvaild vault (typo in source)حساب vault الممرَّر لا يطابق المُسجَّل في pool_state.”خطأ داخلي: vault خاطئ — أعِد التحميل وحاول مجددًا.”
6009InitLpAmountTooLessInit lp amount is too less(Because 100 amount lp will be locked) (grammar in source)عند تهيئة الـ pool، كان إجمالي LP المحسوب أقل من كمية القفل الدائم.”السيولة الأولية صغيرة جدًا. زِد مبلغ الإيداع.”
6010TransferFeeCalculateNotMatchTransferFee calculate not matchالمبلغ الفعلي بعد التحويل لـ mint بميزة رسوم Token-2022 لم يطابق التوقع المُحسَب مسبقًا.”تغيرت رسوم تحويل الـ token أثناء المعاملة. أعِد المحاولة.”
6011MathOverflowMath overflowحدث تجاوز في عملية حسابية وسيطة للـ swap أو الإيداع أو الرسوم.”المبلغ كبير جدًا لهذا الـ pool.”
6012InsufficientVaultInsufficient vaultرصيد vault الـ pool أقل مما يلزم لتغطية الإخراج المطلوب.”السيولة في الـ pool غير كافية لهذا الحجم.”
6013InvalidFeeModelInvalid fee modelقام المسؤول بضبط مجموعة معاملات AmmConfig مرفوضة على السلسلة.غير مطلوب — مسار إداري فقط.
6014NoFeeCollectFee is zeroاستُدعيت collect_protocol_fee / collect_fund_fee ولا توجد رسوم قابلة للتحصيل.غير مطلوب — مسار إداري؛ يُتجاهل في الأدوات.
مصدر إعادة التوليد: github.com/raydium-io/raydium-cp-swap — error.rs.

أخطاء CLMM

معرف البرنامج: انظر reference/program-addresses. المصدر: raydium-clmm/programs/amm/src/error.rs.
الرمزالمتغيرسلسلة #[msg]السبب الشائعرسالة UX الموصى بها
6000NotApprovedNot approvedالمُستدعي ليس المسؤول المُهيَّأ لهذه التعليمة.”هذا الإجراء مخصص لمسؤول الـ pool فقط.”
6001InvalidUpdateConfigFlaginvalid update amm config flagمرَّر المسؤول قيمة param غير معروفة إلى update_amm_config.غير مطلوب — مسار إداري فقط.
6002AccountLackAccount lackحساب متبقٍّ مطلوب غائب عن المعاملة (عادةً tick-array أو امتداد oracle).”خطأ داخلي: حساب مفقود — أعِد تحميل بيانات الـ pool.”
6003ClosePositionErrRemove liquidity, collect fees owed and reward then you can close position accountمحاولة إغلاق مركز لا يزال يحتوي على سيولة أو رسوم أو مكافآت غير محصَّلة.”اسحب كل السيولة واستلم الرسوم والمكافآت قبل إغلاق المركز.”
6004InvalidTickIndexTick out of rangetick_lower أو tick_upper خارج النطاق [-443636, 443636].”نطاق السعر خارج حدود هذا الـ pool.”
6005TickInvalidOrderThe lower tick must be below the upper ticktick_lower >= tick_upper.”يجب أن يكون السعر الأدنى أقل من السعر الأعلى.”
6006TickLowerOverflowThe tick must be greater, or equal to the minimum tick(-443636)تجاوز سفلي في tick الأدنى.”السعر الأدنى منخفض جدًا.”
6007TickUpperOverflowThe tick must be lesser than, or equal to the maximum tick(443636)تجاوز علوي في tick الأعلى.”السعر الأعلى مرتفع جدًا.”
6008TickAndSpacingNotMatchtick % tick_spacing must be zeroالـ tick المُرسَل ليس مضاعفًا لـ tick_spacing الخاص بالـ pool.”اضبط السعر على أقرب تدرج صالح.”
6009InvalidTickArrayInvalid tick array accountPDA خاطئ لفتحة tick-array.”خطأ داخلي: tick array خاطئ — أعِد تحميل بيانات الـ pool.”
6010InvalidTickArrayBoundaryInvalid tick array boundaryخطأ بمقدار واحد في فهرسة tick-array.”خطأ داخلي: خطأ في حدود tick-array.”
6011SqrtPriceLimitOverflowSquare root price limit overflowsqrt_price_limit الممرَّر من المُستدعي خارج النطاق الصالح.”حد السعر خارج النطاق.”
6012SqrtPriceX64sqrt_price_x64 out of rangeانجرف سعر sqrt الحالي للـ pool خارج النطاق أثناء الـ swap.”أعِد محاولة الـ swap.”
6013LiquiditySubValueErrLiquidity sub delta L must be smaller than beforeانتهاك ثابت داخلي عند تقليص السيولة.”خطأ داخلي: خطأ في محاسبة السيولة.”
6014LiquidityAddValueErrLiquidity add delta L must be greater, or equal to beforeانتهاك ثابت داخلي عند زيادة السيولة.”خطأ داخلي: خطأ في محاسبة السيولة.”
6015ForbidBothZeroForSupplyLiquidityBoth token amount must not be zero while supply liquidityاستدعاء increase-liquidity مع كون amount_0_max وamount_1_max كليهما صفرًا.”قدِّم token واحدًا على الأقل.”
6016LiquidityInsufficientLiquidity insufficientالسيولة في المركز غير كافية لتلبية طلب السحب.”مبلغ السحب يتجاوز سيولة المركز.”
6017PriceSlippageCheckPrice slippage checkفشل سعر التنفيذ في اختبار الـ slippage الخاص بالمُستدعي.”تجاوز السعر حدود تحمل الـ slippage. ارفع قيمة الـ slippage أو أعِد المحاولة.”
6018TooLittleOutputReceivedToo little output receivedSwapBaseInput: المبلغ المُخرَج أقل من other_amount_threshold.”تجاوز الـ slippage — لم يُستوفَ الحد الأدنى للإخراج.”
6019TooMuchInputPaidToo much input paidSwapBaseOutput: المبلغ المُدخَل يتجاوز other_amount_threshold.”تجاوز الـ slippage — تم تجاوز الحد الأقصى للإدخال.”
6020ZeroAmountSpecifiedSwap special amount can not be zeroamount بقيمة صفر في تعليمة swap.”أدخل مبلغًا أكبر من الصفر.”
6021InvalidInputPoolVaultInput pool vault is invalidحساب input-vault في الـ swap لا يطابق vault المسجَّل في الـ pool.”خطأ داخلي: input vault خاطئ — أعِد تحميل بيانات الـ pool.”
6022TooSmallInputOrOutputAmountSwap input or output amount is too smallتقريب رياضيات الـ swap إلى الصفر، وعادةً لكميات ضئيلة جدًا.”المبلغ صغير جدًا للمبادلة في هذا الـ pool.”
6023NotEnoughTickArrayAccountNot enough tick array accountحسابات tick-array المتبقية غير كافية لنطاق الـ swap.”خطأ داخلي: tick-arrays غير كافية — أعِد تحميل بيانات الـ pool.”
6024InvalidFirstTickArrayAccountInvalid first tick array accountحساب tick-array الأول الممرَّر لا يغطي الـ tick الحالي.”خطأ داخلي: أول tick array خاطئ — أعِد تحميل بيانات الـ pool.”
6025InvalidRewardIndexInvalid reward indexreward_index خارج النطاق [0, 2].غير مطلوب — مسار إداري.
6026FullRewardInfoThe init reward token reach to the maxالـ pool وصل بالفعل للحد الأقصى (3) من mints المكافآت المُهيَّأة.غير مطلوب — مسار إداري.
6027RewardTokenAlreadyInUseThe init reward token already in usemint المكافأة مكرر مع واحد موجود مسبقًا.غير مطلوب — مسار إداري.
6028ExceptRewardMintThe reward tokens must contain one of pool vault mint except the last rewardقبل الفتحة 2، يجب أن يساوي mint المكافأة أحد vault mints الخاصة بالـ pool.غير مطلوب — مسار إداري.
6029InvalidRewardInitParamInvalid reward init paramوقت بدء/انتهاء الإصدار أو معدل الثانية خاطئ.غير مطلوب — مسار إداري.
6030InvalidRewardInputAccountNumberInvalid collect reward input account numberعدد الحسابات المتبقية الممرَّرة إلى CollectReward خاطئ.”خطأ داخلي: عدد حسابات خاطئ — أعِد التحميل وحاول مجددًا.”
6031InvalidRewardPeriodInvalid reward periodفترة إصدار المكافأة غير صالحة (end <= start، مدة صفرية).غير مطلوب — مسار إداري.
6032NotApproveUpdateRewardEmissionsModification of emissions is allowed within 72 hours from the end of the previous cycleحاول المسؤول تعديل الإصدارات خارج نافذة 72 ساعة حول حدود الدورة.غير مطلوب — مسار إداري.
6033UnInitializedRewardInfouninitialized reward infoفتحة المكافأة مُشار إليها دون تهيئة.غير مطلوب — مسار إداري.
6034NotSupportMintNot support token_2022 mint extensionصادف CLMM امتدادًا في Token-2022 لا يستطيع التعامل معه.”هذا الـ token يحتوي على امتداد غير مدعوم في CLMM من Raydium.”
6035MissingTickArrayBitmapExtensionAccountMissing tickarray bitmap extension accountتجاوز الـ swap نطاق tick غير مغطى بالخريطة الأساسية؛ مطلوب حساب خريطة امتداد.”خطأ داخلي: امتداد tick-array مفقود — أعِد تحميل بيانات الـ pool.”
6036InsufficientLiquidityForDirectionInsufficient liquidity for this directionلا توجد سيولة كافية في اتجاه الـ swap.”السيولة غير كافية لهذا الحجم من الـ swap.”
6037MaxTokenOverflowMax token overflowتجاوز مبلغ الإدخال/الإخراج حد u64.”المبلغ كبير جدًا لهذا الـ pool.”
6038CalculateOverflowCalculate overflowتجاوز في حسابات الرسوم أو السيولة.”المبلغ كبير جدًا لهذا الـ pool.”
6039TransferFeeCalculateNotMatchTransferFee calculate not matchالمبلغ الملاحَظ لرسوم تحويل Token-2022 لم يطابق المتوقع.”تغيرت رسوم تحويل الـ token أثناء المعاملة. أعِد المحاولة.”
6040OrderAlreadyFilledOrder already fully filled, cannot modifyاستُدعيت IncreaseLimitOrder / DecreaseLimitOrder على أمر لا تبقى منه جزء غير مُنفَّذ.”هذا الأمر المحدود مُنفَّذ بالكامل — سوِّيه لاستلام الإخراج.”
6041InvalidOrderPhaseInvalid order phaseتعديل أمر لا تتطابق مرحلة cohort FIFO فيه مع المرحلة الحالية للـ tick.”لا يمكن تنفيذ هذا الإجراء في الحالة الراهنة للأمر.”
6042InvalidLimitOrderAmountInvalid limit order amountحجم الأمر أدنى من الحد الأدنى للـ pool (أو يساوي صفرًا) عند الفتح أو الزيادة أو التقليص.”حجم الأمر أقل من الحد الأدنى للـ pool.”
6043OrderPhaseSaturatedTick order phase saturatedوصل عداد order_phase لـ cohort في الـ tick للتشبع؛ لا يمكن فتح أوامر إضافية عند هذا الـ tick حتى تُسوَّى cohorts الحالية وتُحدَّث.”عدد كبير جدًا من الأوامر النشطة عند هذا السعر؛ جرب tick مجاورًا أو انتظر حتى تُسوَّى الأوامر.”
6044InvalidDynamicFeeConfigParamsInvalid dynamic fee config paramsرُفضت CreateDynamicFeeConfig / UpdateDynamicFeeConfig؛ أو فعَّل CreateCustomizablePool الرسوم الديناميكية بدون إعداد صالح.غير مطلوب في المسار الإداري؛ “إعداد الرسوم الديناميكية غير صالح” في مسار المستخدم.
6045InvalidFeeOnInvalid fee on which token (must be 0, 1, or 2)مرَّر CreateCustomizablePool قيمة collect_fee_on خارج {0, 1, 2}.”خطأ داخلي: وضع رسوم غير صالح.”
6046ZeroSqrtPricesqrt_price_x64 must be greater than 0استُدعي CreateCustomizablePool (أو مسار آخر يقبل sqrt price أولية مخصصة) مع sqrt_price_x64 == 0.”يجب أن يكون السعر الأولي أكبر من الصفر.”
6047ZeroLiquidityliquidity must be greater than 0استُدعي مسار توفير السيولة مع liquidity == 0 ودون مبلغ تعويضي.”يجب أن تكون قيمة السيولة أكبر من الصفر.”
6048MissingBaseFlagbase_flag is required when liquidity is zeroاحتسب مسار فتح المركز بالمبلغ liquidity == 0 ولم يُزوِّد المُستدعي base_flag لتحديد الجانب الأساسي.”قدِّم قيمة سيولة غير صفرية أو حدِّد أيُّ token هو الأساسي.”
6049MissingMintAccountMint account is required but not providedاستُدعي مسار Token-2022 دون حساب mint للإدخال/الإخراج اللازم للتحقق من الامتدادات ورسوم التحويل.”خطأ داخلي: حساب mint مفقود — أعِد تحميل بيانات الـ pool.”
6050MissingTokenProgram2022Token-2022 program is required but not providedنفس الحالة السابقة لحساب برنامج SPL-Token-2022.”خطأ داخلي: برنامج Token-2022 مفقود — أعِد التحميل وحاول مجددًا.”
ملاحظة حول إعادة الترقيم. أُعيد ترقيم تعداد ErrorCode في CLMM في هذا الإصدار: جرى حذف/إصلاح خمسة متغيرات قديمة (LOK، ZeroMintAmount، InvalidLiquidity، TransactionTooOld، InvalidRewardDesiredAmount) وعدة أخطاء إملائية (Liquitity، enought، emissiones)، وأُضيفت أحد عشر متغيرًا جديدًا في النهاية. ونظرًا لأن 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 العادية، توجد جداول أخطائها بجوار مرجع التعليمات لا هنا. الرموز أدناه محجوزة لتلك الفصول:
البرنامجنطاق الرموز (Anchor فقط)المرجع
AMM v4رموز u32 مخصصة، ليست على طريقة Anchorproducts/amm-v4/instructions
Farm v3 / v5رموز u32 مخصصةproducts/farm-staking/instructions
Farm v66000+ (Anchor)products/farm-staking/instructions
LaunchLab6000+ (Anchor)products/launchlab/instructions

تعيين أخطاء SDK إلى أخطاء البرنامج

يُغلِّف TypeScript SDK الرسمي أخطاء السلسلة في SendTransactionError، وبالنسبة لبرامج Anchor في 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.
  }
}
إن لم تكن تستخدم عميل Anchor، فحلِّل سجلات المعاملة:
Program <ProgramID> invoke [1]
Program log: AnchorError caused by account: pool_state. Error Code: ExceededSlippage. Error Number: 6005. Error Message: Exceeds desired slippage limit.
النمط Error Number: (\d+) ثابت عبر إصدارات Anchor ويمكن الاعتماد عليه للمطابقة.

إعادة توليد هذه الجداول

عند ترقية برنامج وإضافة خطأ جديد، أعِد الاستخراج من المصدر:
# 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.
احرص دائمًا على تحديث reference/changelog عند إضافة متغير جديد، حتى يعلم المُدمِجون الذين يُحدِّثون SDK بضرورة تحديث معالجات الأخطاء لديهم. المصادر: