> ## 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.

# رياضيات التوجيه

> لا يُجري جهاز التوجيه أي عمليات حسابية للتسعير بنفسه؛ كل قفزة تفوّضها إلى منحنى برنامج مجموعتها. الانزلاق في المسارات متعددة القفزات يتراكم؛ قفزات CLMM تستخدم limit_prices.

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

  [عرض النسخة الإنجليزية →](/products/routing/math)
</Info>

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

برنامج التوجيه **لا يطبّق أي منطق تسعير**. إنه مُنظِّم بحت: يقبل مسارًا، يمرّر الحسابات إلى البرامج الفرعية، ويربط تدفقات الرموز.

كل قفزة تُسعّر نفسها من منحنى برنامج مجموعتها الخاص:

* **قفزات AMM v4:** تستخدم صيغة الناتج الثابت (`x · y = k`) مع تسعير هجين OpenBook. انظر إلى [`products/amm-v4/math`](/ar/products/amm-v4/math).
* **قفزات CPMM:** تستخدم صيغة الناتج الثابت مع فئات رسوم قابلة للتكوين. انظر إلى [`products/cpmm/math`](/ar/products/cpmm/math).
* **قفزات CLMM:** تستخدم رياضيات الأسعار المركّزة. انظر إلى [`algorithms/clmm-math`](/ar/algorithms/clmm-math).
* **قفزات Stable:** تستخدم منحنى المبادلة المستقرة للأصول المتشابهة. انظر إلى [`products/stable/math`](/ar/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`](/ar/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 بالفعل تم خصم رسومها منه.

انظر إلى توثيق الرسوم الخاص بكل مجموعة:

* [`products/amm-v4/fees`](/ar/products/amm-v4/fees)
* [`products/cpmm/fees`](/ar/products/cpmm/fees)
* [`products/clmm/fees`](/ar/products/clmm/fees) (إن أتيحت)
* [`products/stable/fees`](/ar/products/stable/fees) (إن أتيحت)

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

لنفترض أنك توجّه 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)، يمرّر جهاز التوجيه هذا الصفر للقفزة التالية، التي قد ترفضه كغير كافٍ. انظر إلى أكواد الأخطاء الخاصة بكل مجموعة.

## ما التالي

* [`products/amm-v4/math`](/ar/products/amm-v4/math) — رياضيات الناتج الثابت.
* [`products/cpmm/math`](/ar/products/cpmm/math) — CPMM الناتج الثابت مع Token-2022.
* [`algorithms/clmm-math`](/ar/algorithms/clmm-math) — تسعير السيولة المركّزة.
* [`products/stable/math`](/ar/products/stable/math) — منحنى المبادلة المستقرة.
* [`products/routing/code-demos`](/ar/products/routing/code-demos) — أمثلة على الاستشهاد قبل التوجيه.
