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

> كل تعليمة AMM v4 مع معاملات البيانات الخاصة بها، والحسابات المتعلقة بـ AMM v4 و OpenBook المتوقعة، والشروط السابقة واللاحقة لكل منها.

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

  [عرض النسخة الإنجليزية →](/products/amm-v4/instructions)
</Info>

<Info>
  تتوقع تعليمات AMM v4 بشكل موحد كلاً من **جانب المجموعة** (حسابات برنامج AMM v4) و **جانب السوق** (حسابات OpenBook للسوق المرتبطة). يؤدي حذف أو عدم تطابق أي مجموعة إلى الرجوع. تستخدم قوائم الحسابات أدناه أسماء الحقول من Raydium SDK لتوضيح الصورة؛ في بعض الأحيان تستخدم IDL الأساسية بادئات `serum_*`.
</Info>

## قائمة جرد التعليمات

| المجموعة           | التعليمة              | ملاحظات                                                                                                |
| ------------------ | --------------------- | ------------------------------------------------------------------------------------------------------ |
| دورة حياة المجموعة | `Initialize2`         | تعليمة إنشاء المجموعة الحالية (لا تزال وظيفية؛ واجهة المستخدم الافتراضية تفضل CPMM للمجموعات الجديدة). |
| السيولة            | `Deposit`             | إضافة السيولة، استقبال LP.                                                                             |
| السيولة            | `Withdraw`            | حرق LP، استقبال كلا الجانبين بشكل متناسب.                                                              |
| المبادلة           | `SwapBaseIn`          | مبادلة المدخلات المحددة بدقة (المسار الكامل: الأقبية + OpenBook).                                      |
| المبادلة           | `SwapBaseOut`         | مبادلة المخرجات المحددة بدقة (المسار الكامل).                                                          |
| المبادلة           | `SwapBaseInV2`        | مبادلة المدخلات المحددة بدقة التي تتجاوز OpenBook — الأقبية فقط، حسابات أقل.                           |
| المبادلة           | `SwapBaseOutV2`       | مبادلة المخرجات المحددة بدقة التي تتجاوز OpenBook.                                                     |
| الصيانة            | `SetParams`           | المسؤول: تغيير معاملات المجموعة.                                                                       |
| الصيانة            | `WithdrawPnl`         | كسح أرباح وخسائر البروتوكول المتراكمة إلى حسابات مالك الأرباح والخسائر.                                |
| الصيانة            | `CreateConfigAccount` | المسؤول: تهيئة PDA `AmmConfig` على مستوى البرنامج.                                                     |
| الصيانة            | `UpdateConfigAccount` | المسؤول: تغيير معاملات التكوين على مستوى البرنامج.                                                     |

يعرّض SDK منشئين لتعليمات المستخدم فقط. عادة ما يتم استدعاء تعليمات الصيانة بواسطة حارس Raydium.

## `Initialize2`

بدء تشغيل مجموعة AMM v4 جديدة مرتبطة بسوق OpenBook موجودة.

**المعاملات**

```
nonce:        u8
open_time:    u64
init_pc_amount:   u64
init_coin_amount: u64
```

**الحسابات** (قابل للكتابة `W`، الموقّع `S`)

| #  | الاسم                        | W | S | ملاحظات                                    |
| -- | ---------------------------- | - | - | ------------------------------------------ |
| 1  | `token_program`              |   |   | SPL Token.                                 |
| 2  | `system_program`             |   |   |                                            |
| 3  | `rent`                       |   |   |                                            |
| 4  | `amm`                        | W |   | حساب `AmmInfo` (مفتاح مزروع).              |
| 5  | `amm_authority`              |   |   | برنامج PDA.                                |
| 6  | `amm_open_orders`            | W |   | OpenBook `OpenOrders` (مزروع).             |
| 7  | `lp_mint`                    | W |   |                                            |
| 8  | `coin_mint`                  |   |   |                                            |
| 9  | `pc_mint`                    |   |   |                                            |
| 10 | `pool_coin_token_account`    | W |   |                                            |
| 11 | `pool_pc_token_account`      | W |   |                                            |
| 12 | `pool_withdraw_queue`        | W |   |                                            |
| 13 | `pool_target_orders_account` | W |   |                                            |
| 14 | `pool_lp_token_account`      | W |   | LP ATA للمنشئ.                             |
| 15 | `pool_temp_lp_token_account` | W |   | حساب مؤقت.                                 |
| 16 | `market_program`             |   |   | برنامج OpenBook.                           |
| 17 | `market`                     |   |   | سوق OpenBook.                              |
| 18 | `user_wallet`                | W | S | المنشئ. يدفع الإيجار ويمول الإيداع الأولي. |
| 19 | `user_token_coin`            | W |   |                                            |
| 20 | `user_token_pc`              | W |   |                                            |

**الشروط اللاحقة**

* `lp_supply = sqrt(init_coin_amount × init_pc_amount) − INIT_BURN`، حيث يتم الاحتفاظ بـ `INIT_BURN` ≈ 100 وحدة LP خارج التداول.
* لم يتم نشر طلبات OpenBook بعد؛ يقوم أول `MonitorStep` بنشر الشبكة الأولية.

**الأخطاء الشائعة** — `InvalidInput` (عدم تطابق الكسور العشرية، غير مرتبة)، `NotApproved`، جانب OpenBook `InvalidMarketState`.

## `Deposit`

إضافة السيولة.

**المعاملات**

```
max_coin_amount: u64
max_pc_amount:   u64
base_side:       u64    // 0 = base على coin، 1 = base على pc
// (بعض متغيرات SDK تقبل أيضاً other_amount_min)
```

**الحسابات** (مختصرة)

| #  | الاسم                     | W | S |
| -- | ------------------------- | - | - |
| 1  | `token_program`           |   |   |
| 2  | `amm`                     | W |   |
| 3  | `amm_authority`           |   |   |
| 4  | `amm_open_orders`         |   |   |
| 5  | `amm_target_orders`       | W |   |
| 6  | `lp_mint`                 | W |   |
| 7  | `pool_coin_token_account` | W |   |
| 8  | `pool_pc_token_account`   | W |   |
| 9  | `market`                  |   |   |
| 10 | `user_coin_token_account` | W |   |
| 11 | `user_pc_token_account`   | W |   |
| 12 | `user_lp_token_account`   | W |   |
| 13 | `user_owner`              |   | S |

**الرياضيات** — متناسبة بشكل معياري. باستخدام الاحتياطيات *الفعلية* للمجموعة (الأقبية + على الكتاب)، يحسب SDK زوج coin/pc الذي ينتج كمية LP المعطاة ويتحقق منه مقابل `max_*`. يرجع مع `ExceededSlippage` إذا تجاوز أي جانب الحد الأقصى.

## `Withdraw`

حرق LP، استقبال كلا الجانبين.

**المعاملات**

```
amount: u64    // LP لحرقه
```

**الحسابات** — مثل `Deposit` مع عكس الاتجاه؛ `lp_mint` قابل للكتابة للحرق، ATAs المستخدم هي المتلقون. تحدث خطوة تسوية شبيهة بـ `MonitorStep`-من-OpenBook بشكل داخلي قبل الرياضيات المتناسبة بحيث تستخدم الاسترجاع احتياطيات جديدة.

## `SwapBaseIn`

مبادلة المدخلات المحددة بدقة. دائماً مبادلة **مسار AMM** (لا توجه عبر مطابقة OpenBook).

<Note>
  **استخدم متغيرات V2 للكود الجديد.** بما أن AMM v4 لم تعد تشارك السيولة مع OpenBook، فإن نقاط النهاية V1 (`SwapBaseIn`, `SwapBaseOut`) — التي لا تزال تتطلب المجموعة الكاملة من حسابات OpenBook للتحقق من الصحة — تكون زائدة عن الحاجة من الناحية الوظيفية. يجب أن تستخدم التطبيقات الجديدة [`SwapBaseInV2` / `SwapBaseOutV2`](#swapbaseinv2-swapbaseoutv2)، التي تأخذ قائمة حسابات أصغر بكثير وتمثل مسار التنفيذ الأساسي اليوم. يتم توثيق النماذج V1 هنا للاكتمال والقراءة للمعاملات الموجودة على السلسلة.
</Note>

**المعاملات**

```
amount_in:            u64
minimum_amount_out:   u64
```

**الحسابات** (مختصرة)

| #  | الاسم                       | W | S |
| -- | --------------------------- | - | - |
| 1  | `token_program`             |   |   |
| 2  | `amm`                       | W |   |
| 3  | `amm_authority`             |   |   |
| 4  | `amm_open_orders`           | W |   |
| 5  | `amm_target_orders`         | W |   |
| 6  | `pool_coin_token_account`   | W |   |
| 7  | `pool_pc_token_account`     | W |   |
| 8  | `market_program`            |   |   |
| 9  | `market`                    | W |   |
| 10 | `market_bids`               | W |   |
| 11 | `market_asks`               | W |   |
| 12 | `market_event_queue`        | W |   |
| 13 | `market_coin_vault`         | W |   |
| 14 | `market_pc_vault`           | W |   |
| 15 | `market_vault_signer`       |   |   |
| 16 | `user_source_token_account` | W |   |
| 17 | `user_dest_token_account`   | W |   |
| 18 | `user_owner`                |   | S |

**الرياضيات** — انظر [`products/amm-v4/math`](/ar/products/amm-v4/math).

**الشروط السابقة**

* `amm.status` يسمح بالمبادلة (البت 0 من قناع الحالة ليس محدداً).
* `amm.state_data.pool_open_time <= now`.
* `amount_in > 0`.
* `user_source_token_account` يحتوي على الأقل `amount_in`.

**الشروط اللاحقة**

* يفقد المستخدم `amount_in` من الرمز المصدر، ويكتسب `amount_out ≥ minimum_amount_out` من رمز الوجهة.
* `state_data.swap_*_in_amount` و `swap_*_out_amount` معزز (للتحليلات).
* `need_take_pnl_*` معزز بحصة رسوم البروتوكول.

**الأخطاء الشائعة** — `ExceededSlippage`، `InvalidInput`، `InvalidStatus`، `InvalidMarket`.

## `SwapBaseOut`

المخرجات المحددة بدقة، معكوس `SwapBaseIn`. نفس الحسابات.

**المعاملات**

```
max_amount_in: u64
amount_out:    u64
```

## `SwapBaseInV2` / `SwapBaseOutV2`

نقاط نهاية مبادلة متغيرة **تتجاوز حسابات OpenBook بالكامل**. الرياضيات مماثلة لمسار V1، لكن قائمة الحسابات تنكمش إلى جانب AMM فقط:

| # | الاسم                       | W | S |
| - | --------------------------- | - | - |
| 1 | `token_program`             |   |   |
| 2 | `amm`                       | W |   |
| 3 | `amm_authority`             |   |   |
| 4 | `amm_open_orders`           |   |   |
| 5 | `pool_coin_token_account`   | W |   |
| 6 | `pool_pc_token_account`     | W |   |
| 7 | `user_source_token_account` | W |   |
| 8 | `user_dest_token_account`   | W |   |
| 9 | `user_owner`                |   | S |

الاحتياطيات الفعلية للمجموعة لا تزال تأخذ في الحسبان الرموز المرسلة على OpenBook، لذا فإن رياضيات الاقتباس لم تتغير. استخدم V2 لحفظ الحوسبة وتجنب تمرير حسابات السوق عندما لا تحتاج إلى OpenBook crank في نفس المعاملة. يستخدم موجه Raydium دائماً نموذج V2 عند التوجيه عبر AMM v4.

المعاملات هي نفسها نماذج V1 (`amount_in / minimum_amount_out` لـ `SwapBaseInV2`؛ `max_amount_in / amount_out` لـ `SwapBaseOutV2`).

## `MonitorStep` (قديم / خامل)

<Note>
  **لم يعد يتم تشغيله.** AMM v4 لم تعد تشارك السيولة مع OpenBook، لذا ليس لدى `MonitorStep` ما يفعله — المجموعة لا تحتوي على طلبات مرسلة لتسويتها أو إلغاء أو استبدالها. تبقى التعليمة في برنامج السلسلة لأسباب التوافقية العكسية لكن حارس Raydium لم يعد يستدعيها. استدعاؤها يدويًا هو فعليًا عدم تغيير (بخلاف تحديث الحالة الصفرية) ويجب ألا تكون مطلوبة من قبل المدمجين.
</Note>

أصلاً كانت هذه التعليمة تشغل تفاعل المجموعة مع OpenBook.

**المعاملات**

```
plan_order_limit:   u16
place_order_limit:  u16
cancel_order_limit: u16
```

**الحسابات** — كل شيء أعلاه لمبادلة، بالإضافة إلى حسابات OpenBook الإدارية.

**التأثير الأصلي** (لم يعد ذا صلة عمليًا):

* تسوية أي طلبات معبأة (نقل عائداتها من `market_coin_vault`/`market_pc_vault` إلى أقبية المجموعة عبر OpenBook CPI).
* إلغاء الطلبات القديمة التي لم تعد أسعارها أو أحجامها تطابق `target_orders`.
* نشر طلبات جديدة لإغلاق الفجوة بين `target_orders` و `amm_open_orders`.

بدون إذن. يمكن لأي حساب استدعاؤها؛ تاريخيًا قام حارس Raydium بذلك بانتظام.

## `WithdrawPnl` / `TakePnl`

كسح إداري لرسوم البروتوكول المتراكمة.

**المعاملات**

* `WithdrawPnl` لا تأخذ معاملات؛ تقرأ `need_take_pnl_*` وتنقل تلك المبالغ بالضبط.

**الحسابات** (مختصرة)

| #  | الاسم                     | W | S |                                  |
| -- | ------------------------- | - | - | -------------------------------- |
| 1  | `token_program`           |   |   |                                  |
| 2  | `amm`                     | W |   |                                  |
| 3  | `amm_authority`           |   |   |                                  |
| 4  | `amm_config`              |   |   |                                  |
| 5  | `amm_open_orders`         | W |   |                                  |
| 6  | `pool_coin_token_account` | W |   |                                  |
| 7  | `pool_pc_token_account`   | W |   |                                  |
| 8  | `pnl_coin_token_account`  | W |   | المتلقي، مخزن على `AmmConfig`.   |
| 9  | `pnl_pc_token_account`    | W |   |                                  |
| 10 | `pnl_owner`               |   | S | مجموعة المسؤول متعددة التوقيعات. |
| 11 | `market_program`          |   |   |                                  |
| 12 | `market`                  | W |   |                                  |
| 13 | `market_event_queue`      | W |   |                                  |
| 14 | `market_coin_vault`       | W |   |                                  |
| 15 | `market_pc_vault`         | W |   |                                  |
| 16 | `market_vault_signer`     |   |   |                                  |

**التأثير**

* نقل `need_take_pnl_coin` من `pool_coin_token_account` إلى `pnl_coin_token_account`.
* نفس الشيء لـ pc.
* تصفير `need_take_pnl_coin` و `need_take_pnl_pc`.

لا يوجد تغيير في الاحتياطيات لأن أرباح وخسائر المتراكمة تم استبعادها بالفعل من الثابت.

## `SetParams`

تغييرات معاملات المسؤول: قناع الحالة، عمق شبكة الطلبات، موجات المبلغ، الرسوم (نادراً)، إلخ. يتم استدعاء بواسطة مجموعة Raydium متعددة التوقيعات. المعاملات هي وسم `param: u8` + الحمولة، مشابه لـ `UpdateAmmConfig` الخاص بـ CPMM.

## مصفوفة تغيير الحالة

| التعليمة      | توريد `lp_mint`              | الأقبية                                  | عدادات الأرباح والخسائر | OpenBook             |
| ------------- | ---------------------------- | ---------------------------------------- | ----------------------- | -------------------- |
| `Initialize2` | التوريد الأولي المخزن للمنشئ | `+ init_coin_amount`، `+ init_pc_amount` | 0                       | OpenOrders تم إنشاؤه |
| `Deposit`     | +                            | + كليهما                                 | —                       | تسوية الملء          |
| `Withdraw`    | −                            | − كليهما                                 | —                       | تسوية الملء          |
| `SwapBaseIn`  | —                            | + داخل، − خارج                           | + حصة pnl               | قد تعيد نشر الشبكة   |
| `SwapBaseOut` | —                            | + داخل، − خارج                           | + حصة pnl               | قد تعيد نشر الشبكة   |
| `MonitorStep` | —                            | تسوية الملء                              | —                       | إلغاء / نشر          |
| `WithdrawPnl` | —                            | − (pnl مكتسح)                            | 0                       | —                    |
| `SetParams`   | —                            | —                                        | —                       | —                    |

## الخطوات التالية

* [`products/amm-v4/code-demos`](/ar/products/amm-v4/code-demos) — أمثلة TypeScript لتدفقات المبادلة و LP.
* [`products/amm-v4/fees`](/ar/products/amm-v4/fees) — تفاصيل `WithdrawPnl` وتقسيم الرسوم.
* [`reference/error-codes`](/ar/reference/error-codes) — جدول المرجع الأمامي (يتم سرد أخطاء AMM v4 على تلك الصفحة).

المصادر:

* [برنامج Raydium AMM — `raydium-io/raydium-amm`](https://github.com/raydium-io/raydium-amm)
* وحدة `Liquidity` في Raydium SDK v2
* برنامج OpenBook — التحقق من الحسابات على جانب السوق
