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

# 2026-07-22 — AMM v4: إزالة تبعية OpenBook / Serum

> يزيل AMM v4 تبعيته الخاملة من OpenBook/Serum والـ CPIs وتعليمات صنع السوق: تبقى تعليمات v1 Swap/Deposit/Withdraw متوافقة، بينما WithdrawPnl و SetParams تشكل تغييرات جذرية، وعدة تعليمات لم تعد قابلة للاستدعاء.

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

  [عرض النسخة الإنجليزية →](/reference/changelog/2026-07-22-amm-v4-openbook-removal)
</Info>

توقف AMM v4 عن **مشاركة السيولة مع OpenBook (المعروف سابقًا باسم Serum) منذ وقت طويل**؛ مسار صنع السوق الهجين القائم على دفتر الطلبات ظل خاملاً لسنوات. هذا الترقية هي عملية التنظيف: تزيل **تبعية Serum وجميع CPIs دفتر الطلبات وتعليمات صنع السوق الميتة** من البرنامج، تاركة AMM v4 كـ AMM ثابت الحاصل النقي (`x·y=k`). لا تغير **أي** سلوك تداول مباشر — لم تكن هناك طلبات OpenBook متبقية لإيقاف وضعها.

## ملخص سريع للمدمجين

* **Swap / Deposit / Withdraw تستمر في العمل بدون تغييرات.** المعاملات المبنية بتخطيطات الحسابات القديمة تستمر في التنفيذ — حسابات Serum/السوق المحذوفة يتم تجاهلها ببساطة (بدون تحقق، بدون CPI). `SwapBaseIn` / `SwapBaseOut` لا تزال تتوقع **17 (+1 اختياري)** حساب؛ تخطيطات `Deposit` و `Withdraw` لم تتغير. **لا** تحتاج إلى شحن تحديث عميل للحفاظ على تدفقات موجودة.
* **انتقل إلى نقاط دخول V2 swap.** `SwapBaseInV2` / `SwapBaseOutV2` لا تحمل حسابات سوق ولا `amm_open_orders` (8 حسابات إجمالاً)، لذا المعاملات أصغر وأرخص. يجب على الموجهات/المجمعات التوجيه عبر V2.
* **`WithdrawPnl` تشكل تغييرًا جذريًا (للمسؤول فقط).** تنتقل من **17 (+1 اختياري) → 10** حساب **بدون تحليل توافق**؛ التخطيط القديم لا يتوافق (الرقم 5 القديم كان `amm_open_orders`) ويفشل التحقق. يجب تحديث أدوات المسؤول.
* **`SetParams` تشكل تغييرًا جذريًا (للمسؤول فقط).** تنكمش الحسابات إلى `[amm, admin]`، وتعداد `param` **معاد ترقيمه** (`Fees` 9 → 2، `SetOpenTime` 11 → 3)؛ تم حذف `AmmOwner` و `LastOrderDistance` و `UpdateOpenOrder` وپارامترات الشبكة.
* **عدة تعليمات لم تعد قابلة للاستدعاء.** `Initialize` و `PreInitialize` و `MonitorStep` و `MigrateToOpenBook` و `WithdrawSrm` و `SimulateInfo` و `AdminCancelOrders` تعود الآن. استخدم `Initialize2` لإنشاء مجموعات.
* **تخطيطات الحسابات على السلسلة مستقرة بايت، وأكواد الخطأ لم تتغير.** `AmmInfo` / `StateData` تحتفظ بتخطيطها (حقول OpenBook القديمة محتفظ بها لكن مهملة/مجمدة)؛ ترقيم `AmmError` محفوظ، مع إضافة `NotAllowed` جديد فقط.

## لماذا هذا مهم (للمتداولين والمزودي السيولة والمدمجين)

* **المتداولون** لا يرون تغييرًا في سلوك المبادلة أو التسعير — منحنى الحاصل الثابت لم يتغير. مبادلات تخطيط V2 أرخص في الهبوط لأنها تحمل حوالي 8 حسابات أقل.
* **مزودو السيولة** يحتفظون بنفس اقتصاديات الإيداع/السحب. ظلت السيولة بالكامل في خزائن المجموعة، لذا قيمة المجموعة بالكامل على السلسلة؛ هذا الترقية فقط تحذف السباكة البطيئة.
* **المدمجون** يحصلون على معاملات أصغر وأبسط ونموذج اقتباس يقرأ مباشرة من الخزائن. التكاملات الموجودة لا تنكسر (باستثناء `WithdrawPnl` / `SetParams` للمسؤول)، لكن تحويل التوافق v1-swap مؤقت — انتقل إلى V2 حسب راحتك.

## تغييرات على مستوى التعليمات

### لا تزال قابلة للاستدعاء، التخطيط لم يتغير (متوافق للخلف)

`Initialize2` و `Deposit` و `Withdraw` و `SwapBaseIn` و `SwapBaseOut` و `CreateConfigAccount` و `UpdateConfigAccount` تحتفظ بقوائم حساباتها الموجودة. على `SwapBaseIn` / `SwapBaseOut` و `Deposit` و `Withdraw`، حسابات OpenBook/السوق لا تزال مقبولة موضعيًا لكن **لم تعد يتم التحقق منها أو استخدامها** — لا يتم إصدار CPI وتُحسب احتياطيات المجموعة من الخزائن فقط. **عدد** الحساب يجب أن يطابق بعد، لذا المعاملات الموجودة تستمر في التنفيذ دون تغيير.

### `SwapBaseInV2` / `SwapBaseOutV2` — المسار الموصى به

حذف حسابات السوق و `amm_open_orders` بالكامل (8 حسابات؛ العلامات 16 / 17). رياضيات الاقتباس متطابقة مع v1. يجب على التكاملات الجديدة والموجهات استخدام V2.

### `WithdrawPnl` — 17 (+1 اختياري) → 10 حسابات (⚠️ تغيير جذري، بدون مسار توافق)

تم حذف `amm_open_orders` وجميع حسابات السوق الستة. التخطيط الثابت الجديد البالغ 10 حسابات، الخاص بالمسؤول فقط، **لا** يحتوي على تحليل توافق؛ التخطيط القديم لا يتوافق ويفشل مع أخطاء مثل `InvalidCoinVault`.

### `SetParams` — مختزل إلى `[amm, admin]` (⚠️ تغيير جذري) + پارامترات معاد ترقيمها

تم حذف السلطة وحسابات الطلبات المفتوحة والطلبات المستهدفة والخزائن وجميع حسابات السوق. تعداد `param` معاد ترقيمه ومختزل:

| Param         | القيمة القديمة | القيمة الجديدة |
| ------------- | -------------- | -------------- |
| `Status`      | 0              | 0              |
| `State`       | 1              | 1              |
| `Fees`        | 9              | **2**          |
| `SetOpenTime` | 11             | **3**          |

تم حذف جميع پارامترات شبكة دفتر الطلبات (`OrderNum` و `Depth` و `AmountWave` و `MinPriceMultiplier` و `MaxPriceMultiplier` و `MinSize` و `VolMaxCutRatio` و `InitOrderDepth` و `SetSwitchTime` و `ClearOpenTime` و `Seperate`) بالإضافة إلى `AmmOwner` و `LastOrderDistance` و `UpdateOpenOrder`. تسقط بنية `SetParamsInstruction` `new_pubkey` و `last_order_distance`.

### لم تعد قابلة للاستدعاء (تعود في وقت التشغيل؛ المنشئون محذوفون)

| التعليمة            | العلامة | البديل                             |
| ------------------- | ------- | ---------------------------------- |
| `Initialize`        | 0       | `Initialize2`                      |
| `MonitorStep`       | 2       | لا شيء (كرنك دفتر الطلبات، متقاعد) |
| `MigrateToOpenBook` | 5       | لا شيء                             |
| `WithdrawSrm`       | 8       | لا شيء (خصم رسوم SRM، متقاعد)      |
| `PreInitialize`     | 10      | `Initialize2`                      |
| `SimulateInfo`      | 12      | اقتباس خارج السلسلة / SDK          |
| `AdminCancelOrders` | 13      | لا شيء                             |

## تغييرات الاحتياطي / الحالة

* **صيغة أصول المجموعة.** إجمالي أصول المجموعة الآن `أرصدة الخزائن − PnL المعلقة (need_take_pnl)`؛ حد دفتر الطلبات المفتوح — بالفعل صفر عمليًا — تم حذفه. يمكن لكود الاقتباس أن يقرأ مباشرة من أرصدة الخزائن.
* **حقول الحالة المهملة.** `StateData.total_pnl_pc` و `total_pnl_coin` و `orderbook_to_init_time` و `swap_coin_in_amount` و `swap_pc_out_amount` و `swap_acc_pc_fee` و `swap_pc_in_amount` و `swap_coin_out_amount` و `swap_acc_coin_fee` محتفظ بها لتوافق التخطيط لكن **لم تعد يتم تحديثها**. يجب على المستهلكين الذين يعتمدون على عدادات حجم `swap_*` الانتقال إلى سجلات التداول.
* **تهيئة `AmmInfo`.** `coin_lot_size` و `pc_lot_size` و `min_size` يتم تهيئتها الآن إلى `0`.
* **تبعية محذوفة و CPIs.** تم حذف صندوق `serum_dex` من `Cargo.toml`؛ تم حذف جميع Serum DEX CPIs (`invoke_dex_new_order_v3` و `invoke_dex_cancel_order_v2` و `invoke_dex_settle_funds` و `invoke_dex_init_open_orders` و ...) من `invokers.rs`. بنى البيانات المحذوفة: `LastOrderDistance` و `SimulateParams` و `RunCrankData` و `GetPoolData` و `GetSwapBaseInData` و `GetSwapBaseOutData`.
