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

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.

هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →

جهاز التوجيه لا يُجري عمليات حسابية

برنامج التوجيه لا يطبّق أي منطق تسعير. إنه مُنظِّم بحت: يقبل مسارًا، يمرّر الحسابات إلى البرامج الفرعية، ويربط تدفقات الرموز. كل قفزة تُسعّر نفسها من منحنى برنامج مجموعتها الخاص:
  • قفزات AMM v4: تستخدم صيغة الناتج الثابت (x · y = k) مع تسعير هجين OpenBook. انظر إلى products/amm-v4/math.
  • قفزات CPMM: تستخدم صيغة الناتج الثابت مع فئات رسوم قابلة للتكوين. انظر إلى products/cpmm/math.
  • قفزات CLMM: تستخدم رياضيات الأسعار المركّزة. انظر إلى algorithms/clmm-math.
  • قفزات Stable: تستخدم منحنى المبادلة المستقرة للأصول المتشابهة. انظر إلى products/stable/math.
دور جهاز التوجيه الوحيد هو:
  1. استدعاء تعليمات المبادلة لكل مجموعة عبر CPI.
  2. جمع مبلغ الناتج.
  3. تمريره كمبلغ إدخال إلى القفزة التالية.
  4. التحقق من الناتج النهائي مقابل حد الانزلاق المحدد من المتصل.

تراكم الانزلاق

على مسار متعدد القفزات، يتراكم الانزلاق عند كل قفزة. الانزلاق الصغير في القفزة 1 يصبح انزلاقًا أكبر في القفزة 2 لأن الحجم الداخل للقفزة 2 مخفّض بالفعل. مثال:
المسار: USDC → SOL → STEP

المجموعة 1 (USDC / SOL):
  الإدخال: 1000 USDC
  الانزلاق: 1% (السعر الفوري سيعطيك 0.5 SOL، لكنك تحصل على 0.495 SOL)
  الناتج: 0.495 SOL

المجموعة 2 (SOL / STEP):
  الإدخال: 0.495 SOL (مخفّض بالفعل)
  الانزلاق: 1% (السعر الفوري سيعطيك 495 STEP، لكنك تحصل على 490 STEP)
  الناتج: 490 STEP

إجمالي الانزلاق الفعال على USDC → STEP: 1.99%، وليس 1% + 1% = 2%.
عندما تقدّم minimum_amount_out، يتحقق جهاز التوجيه من ناتجك النهائي مقابل هذا الحد العام. كل قفزة تتحقق أيضًا من مبادلتها الخاصة مقابل هيكل الرسوم المحلي، لكن جهاز التوجيه لا يعيد الاستشهاد في المنتصف—يجب عليك حساب المسار مسبقًا وتضمين سهامش تسامح انزلاق كافٍ.

قفزات CLMM و limit_prices

لكل قفزة إلى مجموعة CLMM، يتحقق جهاز التوجيه من أن sqrt_price_x64 الحالية للمجموعة ضمن حد معيّن. تُمرّر الحدود كـ VecDeque<u128> تُسمى limit_prices:
  • واحدة sqrt_price_x64 لكل قفزة CLMM في المسار.
  • sqrt_price_x64 هي تمثيل السعر القائم على الأسعار المستخدم من CLMM. انظر algorithms/clmm-math للتعريف.
  • يفرض جهاز التوجيه:
  sqrt_price_lower <= pool.sqrt_price_x64 <= sqrt_price_upper
لكل قفزة CLMM، برفض المبادلة إذا كان السعر خارج الحدود.

متغيرات التعليمات و limit_prices

  • SwapBaseInWithUserAccount, SwapBaseOutWithUserAccount (الإرث، الوسوم 0 و 1): VecDeque limit_prices مطلوب. يتم رفض المجموعة الفارغة برسالة خطأ إذا كانت أي قفزة مجموعة CLMM. يجب عليك توفير سعر واحد لكل قفزة CLMM، بالترتيب.
  • SwapBaseIn, SwapBaseOut (الحالي، الوسوم 8 و 9): VecDeque limit_prices اختياري. يتم تجاهل المجموعة الفارغة بصمت؛ لا يتم إجراء فحص السعر. يجب أن يستخدم الكود الجديد هذا.

بناء limit_prices

لمسار به M من قفزات CLMM، يجب أن تحتوي المجموعة على بالضبط M إدخال. رتبّها حسب القفزة:
limit_prices = [
  sqrt_price_for_first_clmm_hop,
  sqrt_price_for_second_clmm_hop,
  ...
]

متى يتم فحص limit_prices

sqrt_price_x64 لقطة من السعر الحالي للمجموعة. يتغير باستمرار مع تنفيذ المبادلات. يجب عليك:
  1. جلب الحالة الحالية للمجموعة من السلسلة.
  2. حساب الحدود المقبولة (على سبيل المثال، ±0.5% من السعر الحالي).
  3. ترميز تلك الحدود في limit_prices.
  4. تضمين الحدود في تعليمات جهاز التوجيه.
إذا انجرف سعر المجموعة بعيدًا عن حدودك قبل أن تهبط المعاملة، سيرفضها جهاز التوجيه.

معالجة الرسوم

تفرض كل مجموعة رسومها الخاصة وفقًا لتكوينها:
  • AMM v4: 0.25% (ثابتة) موزّعة بين LP والبروتوكول والصندوق.
  • CPMM: قابلة للتكوين لكل AmmConfig (افتراضيًا 0.25%، التوزيع يختلف حسب المستوى).
  • CLMM: قابلة للتكوين لكل مجموعة، مأخوذة من مبلغ الإدخال.
  • Stable: مثل AMM v4، 0.25% موزّعة.
جهاز التوجيه لا يأخذ أي رسوم خاصة به. تُفوّض جميع معالجات الرسوم إلى كل مجموعة فرعية. الناتج من القفزة N بالفعل تم خصم رسومها منه. انظر إلى توثيق الرسوم الخاص بكل مجموعة:

مثال المحاسبة متعددة القفزات

لنفترض أنك توجّه USDC → SOL → STEP عبر مجموعتي ناتج ثابت، كل واحدة برسوم 0.25%:
الإدخال: 1000 USDC
المجموعة 1 (USDC/SOL):
  الرسوم المأخوذة: ceil(1000 * 0.25%) = 2.5 USDC
  الإدخال الصافي للمنحنى: 997.5 USDC
  ناتج المنحنى (قبل الانزلاق): 0.5 SOL
  هامش الانزلاق: افترض 1%، لذلك تحصل على ~0.495 SOL

المجموعة 2 (SOL/STEP):
  الإدخال: 0.495 SOL
  الرسوم المأخوذة: ceil(0.495 * 0.25%) ≈ 0.001 SOL
  الإدخال الصافي للمنحنى: 0.494 SOL
  ناتج المنحنى: ~494 STEP
  هامش الانزلاق: 1%، لذلك تحصل على ~489 STEP

الناتج النهائي: ~489 STEP
يتحقق جهاز التوجيه:
489 >= minimum_amount_out  // محدد من المتصل
إذا كان خطأ، فشل المسار بالكامل بشكل ذري.

اعتبارات الدقة

مثل جميع برامج Solana، يستخدم جهاز التوجيه الحسابيات الصحيحة:
  • جميع المبالغ هي u64 (لامبورت أو أصغر وحدات الرموز).
  • حسابات المنحنى تستخدم وسيطات u128 حيث لزم الأمر لتجنب الفيضان.
  • اتفاقيات التقريب تعتمد على البرنامج الفرعي. جهاز التوجيه لا يعيد التقريب.
إذا أنتجت قفزة مبلغ صفر بسبب نسب أسعار متطرفة (على سبيل المثال، مبادلة 1 لامبورت على مجموعة 1B:1)، يمرّر جهاز التوجيه هذا الصفر للقفزة التالية، التي قد ترفضه كغير كافٍ. انظر إلى أكواد الأخطاء الخاصة بكل مجموعة.

ما التالي