> ## 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-05-18 — CLMM: أوامر محدودة، رسوم أحادية الاتجاه، رسوم ديناميكية

> ثلاث قدرات CLMM اختيارية وعكسية التوافق: أوامر محدودة من الدرجة الأولى، وجمع رسوم أحادي الاتجاه، ورسم ديناميكي يتتبع التقلبات — بالإضافة إلى إعادة تشكيل PoolState وأكواد الأخطاء الجديدة.

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

  [عرض النسخة الإنجليزية →](/reference/changelog/2026-05-18-clmm-limit-orders)
</Info>

<Info>
  إدخال سجل تغييرات التوثيق. للاطلاع على فهرس جميع التحديثات، انظر [`reference/changelog`](/ar/reference/changelog). للحصول على الخط الزمني التاريخي للبروتوكول نفسه، انظر [`introduction/history-and-milestones`](/ar/introduction/history-and-milestones).
</Info>

يضيف إصدار CLMM التالي ثلاث قدرات على مستوى المجموعة. وهي اختيارية عند إنشاء المجموعة وعكسية التوافق مع المجموعات والمراكز الموجودة.

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

* **الأوامر المحدودة** أصبحت الآن بدائل CLMM من الدرجة الأولى. يمكن لمزودي السيولة فتح أمر بتجزئة واحدة على مجموعة تدعمها؛ يتم ملء الأمر بنظام FIFO عندما يعبر المبادل التجزئة، ويمكن لحارس خارج السلسلة (`limit_order_admin`) تسوية المخرجات المملوءة دون أن يكون المالك متصلاً. سبع طرق SDK جديدة (`openLimitOrder`, `increaseLimitOrder`, `decreaseLimitOrder`, `settleLimitOrder`, `closeLimitOrder`, `closeAllLimitOrder`, `settleAllLimitOrder`) وثلاث نقاط نهاية Temp API جديدة تحت `/limit-order/` (الأوامر النشطة، السجل لكل مستخدم، سجل الأحداث لكل PDA) تغطي التدفق الكامل.
* **الرسم الأحادي الاتجاه (`CollectFeeOn`)** يسمح للمجموعة بجمع رسوم المبادلة من جانب الإدخال (الإرث، الوضع `0`)، أو دائماً من `token_0` (الوضع `1`)، أو دائماً من `token_1` (الوضع `2`). مفيد عندما يكون أحد جانبي الزوج هو رمز المحاسبة الأساسي.
* **الرسم الديناميكي** يسمح للمجموعة بالاختيار في رسم إضافي يتتبع التقلبات يرتفع مع حركة التجزئة السريعة ويتحلل بمرور الوقت، معايرة بواسطة `DynamicFeeConfig` لكل طبقة و`DynamicFeeInfo` لكل مجموعة. نقطة النهاية الجديدة `/main/clmm-dynamic-config` تعرض قائمة الطبقات.
* تعليمة جديدة، `CreateCustomizablePool`، تعرض جميع الأزرار الثلاثة عند إنشاء المجموعة. يستمر `CreatePool` الكلاسيكي في العمل للمجموعات الافتراضية بدون أوامر محدودة.
* **تغيير كسر الفهرس**: تم إيقاف عدادات الحجم لكل اتجاه (`swap_in_amount_token_{0,1}`, `swap_out_amount_token_{0,1}`) وعدادات الرسوم مدى الحياة (`total_fees_token_{0,1}`, `total_fees_claimed_token_{0,1}`) على `PoolState` إلى الحشو لإفساح المجال لـ `fee_on` و`dynamic_fee_info`. يجب على الفهارس التي تقرأ هذه الحقول مباشرة الترحيل إلى حلقة `Observation` على السلسلة أو الواجهة البرمجية.

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

* **المتداولون** يحصلون على عروض أسعار أضيق على الأزواج طويلة الذيل والمدفوعة بالأحداث: الرسم الديناميكي يسمح للمجموعة بامتصاص رسوم التقلبات من المتخذ دون أن يضطر موفرو السيولة إلى توسيع النطاقات بنشاط، وسلالم الأوامر المحدودة تعمق السيولة على السلسلة بأسعار محددة دون الالتزام برأس مال على نطاق واسع.
* **موفرو السيولة** يحصلون على استراتيجية ثالثة إلى جانب النطاقات المركزة والمراكز على النطاق الكامل: وقف أوامر بسعر دقيق، احصل على ملء عند زيارة السعر، تسوية في رمز الاقتباس. لا يلزم إعادة توازن نشطة للجزء المملوء.
* **المدمجون** يمكنهم نمذجة مجموعات الرسوم الديناميكية بشكل حتمي — الخوارزمية والمعاملات موجودة بالكامل على السلسلة، وطبقات المعايرة قابلة للاستعلام، ومسار المبادلة لم يتغير في الشكل (فقط الرسم لكل خطوة يختلف).

## ما تغير في البرنامج

### حسابات جديدة

* **`DynamicFeeConfig`** — سجل معايرة لكل طبقة (فترة التصفية، فترة الاضمحلال، عامل الاختزال، التحكم في الرسم الديناميكي، أقصى مراكم التقلبات). تم إنشاؤه بواسطة `CreateDynamicFeeConfig` (المسؤول)، المشار إليه بواسطة `CreateCustomizablePool` عند تفعيل الرسم الديناميكي.
* **`LimitOrderState`** — حساب لكل أمر (بذور PDA: `[owner, limit_order_nonce, order_nonce]`) يحتفظ بالمجموعة والتجزئة والجانب ومبلغ الإدخال ونسبة غير المملوءة ومرحلة مجموعة FIFO والقيود المحاسبية. دورة الحياة ضمنية (`filled_amount` مقابل `total_amount`، بالإضافة إلى وجود الحساب): `Open → Filled → Settled → Closed`.
* **`LimitOrderNonce`** — عداد متزايد بشكل رتيب لكل (المالك، nonce\_index) يحصل على بذور PDA للأمر المحدود. يسمح `nonce_index: u8` للمالك نفسه بتقسيم الأوامر إلى ما يصل إلى 256 تدفق nonce مستقل.

انظر [الحسابات → DynamicFeeConfig و DynamicFeeInfo](/ar/products/clmm/accounts) و [الحسابات → LimitOrderState](/ar/products/clmm/accounts).

### إعادة تشكيل `PoolState`

| مجموعة الحقول            | التخطيط القديم                                                                                           | التخطيط الجديد                                               |
| ------------------------ | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| عدادات الحجم لكل اتجاه   | `swap_in_amount_token_0`, `swap_out_amount_token_0`, `swap_in_amount_token_1`, `swap_out_amount_token_1` | مطوية في `padding5: [u128; 4]`                               |
| عدادات الرسوم مدى الحياة | `total_fees_token_0`, `total_fees_claimed_token_0`, `total_fees_token_1`, `total_fees_claimed_token_1`   | مطوية في `padding6: [u64; 4]`                                |
| الرسم الأحادي الاتجاه    | —                                                                                                        | `fee_on: u8` (0 = FromInput, 1 = Token0Only, 2 = Token1Only) |
| الرسم الديناميكي         | —                                                                                                        | `dynamic_fee_info: DynamicFeeInfo` (مضمن)                    |

حجم الحساب الإجمالي لم يتغير. **الفهارس**: قم بتبديل تتبع الحجم من `PoolState` إلى حلقة `Observation` أو الواجهة البرمجية. لم يتم تصفير العدادات المتقاعدة على المجموعات الموجودة (فهي تحتفظ بأي شيء حدث أن تحمله آخر مرة)، لذا فإن إعادة قراءتها بعد الترقية ستعيد بيانات قديمة.

### إضافات `TickState` (لا يوجد تغيير كسر)

تمت إضافة أربعة حقول جديدة في نهاية `TickState`، مما يحل محل بعض الحشو الخاص به:

* `order_phase: u64` — عداد يميز مجموعات الأوامر المحدودة في هذه التجزئة.
* `orders_amount: u64` — إجمالي الإدخال الملتزم به من قبل جميع الأوامر المفتوحة في هذه التجزئة (ليس كلها غير مملوء بالكامل).
* `part_filled_orders_remaining: u64` — الإدخال الذي لا يزال غير مملوء في المجموعة التي يتم استهلاكها حالياً بواسطة المبادلات.
* `unfilled_ratio_x64: u128` — نسبة Q64.64 المستخدمة لحساب حصة الملء لكل أمر.

تخطيط مصفوفة التجزئة والحجم وبذور PDA لم تتغير.

### تعليمات جديدة

* **`CreateDynamicFeeConfig` (المسؤول)** — إنشاء طبقة `DynamicFeeConfig` معايرة. السلطة: نفس multisig الخزانة مثل `CreateAmmConfig`.
* **`UpdateDynamicFeeConfig` (المسؤول)** — تحديث معاملات طبقة موجودة.
* **`CreateCustomizablePool`** — نقطة دخول إنشاء المجموعة التي تعرض `collect_fee_on` و`enable_dynamic_fee` و`dynamic_fee_config`. موجودة جنباً إلى جنب مع `CreatePool`؛ نوصي بـ `CreateCustomizablePool` لأي مجموعة جديدة تحتاج إلى الأزرار الجديدة.
* **`OpenLimitOrder`** — فتح أمر محدود بتجزئة واحدة. يرفع `LimitOrderNonce`، يخصص `LimitOrderState`، يضع الأمر في مجموعة FIFO في التجزئة.
* **`IncreaseLimitOrder` / `DecreaseLimitOrder`** — اضبط الجزء غير المملوء من الأمر. يعود على أمر مملوء بالكامل مع `InvalidOrderPhase`.
* **`SettleLimitOrder`** — اكسح المخرجات المملوءة إلى ATA المالك. يمكن للمتصل أن يكون المالك أو حارس `limit_order_admin` للمجموعة.
* **`CloseLimitOrder`** — أغلق أمراً مسوى بالكامل لاسترجاع الإيجار.

### تغييرات سلوك `SwapV2`

مسار المبادلة نفسه لم يتغير في الشكل، لكن ثلاثة أشياء تحدث الآن على طول الطريق:

1. **الرسم الديناميكي** (عند التفعيل): يتم تحديث `DynamicFeeInfo` للمجموعة في كل خطوة (الاضمحلال → التراكم → الحد)، ويتم إضافة الرسم الناتج على رأس الرسم الأساسي لتلك الخطوة.
2. **مطابقة الأوامر المحدودة** (عندما تعبر الخطوة تجزئة مهيأة بها أوامر مفتوحة): يتم استهلاك جزء من إدخال المبادلة بنظام FIFO لملء المجموعة في تلك التجزئة، مع تحديث `unfilled_ratio_x64` بشكل ذري.
3. **توجيه الرسم الأحادي الاتجاه** (عند `fee_on != 0`): يتم أخذ الرسم من `token_0` أو `token_1` بغض النظر عن اتجاه المبادلة، بدلاً من أخذه دائماً من جانب الإدخال.

كل واحد من هذه هو عدم عملية عندما تم إنشاء المجموعة مع الإعدادات الافتراضية القديمة. انظر [التعليمات → SwapV2](/ar/products/clmm/instructions) لمصفوفة تغيير الحالة المحدثة.

### أكواد الأخطاء الجديدة

تم إعادة ترقيم تعداد `ErrorCode` في هذا الإصدار: تمت إزالة خمسة متغيرات قديمة (`LOK`, `ZeroMintAmount`, `InvalidLiquidity`, `TransactionTooOld`, `InvalidRewardDesiredAmount`)، وتمت إضافة أحد عشر متغيراً جديداً. لأن Anchor ترقم الأخطاء حسب ترتيب التعداد من `6000`، **كل رمز خطأ في أو بعد المواضع المحذوفة قد تحول** — العملاء الذين قاموا بترميز الأكواد الرقمية بشكل ثابت يحتاجون إلى إعادة تعيين.

الأكواد الجديدة هي:

* `6040` `OrderAlreadyFilled`
* `6041` `InvalidOrderPhase`
* `6042` `InvalidLimitOrderAmount`
* `6043` `OrderPhaseSaturated`
* `6044` `InvalidDynamicFeeConfigParams`
* `6045` `InvalidFeeOn`
* `6046` `ZeroSqrtPrice`
* `6047` `ZeroLiquidity`
* `6048` `MissingBaseFlag`
* `6049` `MissingMintAccount`
* `6050` `MissingTokenProgram2022`

النصوص الكاملة وجدول ما بعد التحول لجميع أخطاء CLMM موجودة في [أكواد الأخطاء](/ar/reference/error-codes).

## ما تغير في SDK (`@raydium-io/raydium-sdk-v2`)

* **طرق جديدة على `raydium.clmm`**: `createCustomizablePool`, `openLimitOrder`, `increaseLimitOrder`, `decreaseLimitOrder`, `settleLimitOrder`, `settleAllLimitOrder`, `closeLimitOrder`, `closeAllLimitOrder`.
* **مساعدات REST جديدة على `raydium.api`**: `getClmmDynamicConfigs`, `getClmmLimitOrderConfigs`.
* **أنواع جديدة**: تعداد `CollectFeeOn`، `DynamicFeeConfig`، `DynamicFeeInfo`، `LimitOrderState`، `LimitOrderConfig`.
* **إعادة تنظيم داخلية**: تم نقل `utils/` إلى `libraries/`. برميل الحزمة لم يتغير؛ فقط الواردات العميقة تحت `@raydium-io/raydium-sdk-v2/utils/...` تحتاج إلى التحديث إلى `…/libraries/...`.

تعيشات TypeScript من النهاية إلى النهاية موجودة في [`products/clmm/code-demos`](/ar/products/clmm/code-demos).

## ما تغير في الواجهات البرمجية

* `api-v3` — نقطتا نهاية جديدتان تحت `/main/`:
  * `GET /main/clmm-dynamic-config` — قائمة طبقات `DynamicFeeConfig`.
  * `GET /main/clmm-limit-order-config` — تكوين الأوامر المحدودة لكل مجموعة.
* `temp-api-v1` — ثلاث نقاط نهاية جديدة تحت `/limit-order/`:
  * `GET /limit-order/order/list?wallet=…` — الأوامر المتوقفة حالياً للمحفظة (مفتوحة وممتلئة جزئياً، تُقدم من ذاكرة التخزين المؤقت Redis للفهرس؛ نفس الحمولة تغطي كلا المرحلتين عبر `totalAmount` / `filledAmount` / `pendingSettle`).
  * `GET /limit-order/history/order/list-by-user?wallet=…` — الأوامر المحدودة التاريخية للمحفظة. مرشحات اختيارية: `poolId`, `mint1`, `mint2`, `hideCancel`. مرقمة بالمؤشر عبر `nextPageId` / `size` (الحد الأقصى 100).
  * `GET /limit-order/history/event/list-by-pda?pda=…` — سجل الأحداث لكل PDA (`open` / `increase` / `decrease` / `settle` / `close`) لواحد أو أكثر من PDAs الأوامر المحدودة المفصولة بفواصل. مرقمة بالمؤشر عبر `nextPageId` / `size` (الحد الأقصى 100).

جميع الخمسة موثقة في علامة تبويب مرجع الواجهة البرمجية.

## سطح السلطة

`limit_order_admin` هو حارس تشغيلي خارج السلسلة، **وليس multisig**. يمكنه فقط استدعاء `SettleLimitOrder` و`CloseLimitOrder` على الأوامر الموجودة، وناتج التسوية يهبط دائماً في **ATA المالك**. لا يمكنه تغيير حقول المجموعة أو فتح أو تعديل الأوامر أو التوقيع على أي شيء آخر. انظر [مفاتيح المسؤول و multisig → CLMM](/ar/security/admin-and-multisig).

## الصفحات المحدثة

* `products/clmm/overview` — قسم "ما الجديد" وموجهات الخطوات التالية المحدثة.
* `products/clmm/accounts` — ثلاثة حسابات جديدة، إعادة تشكيل `PoolState` مع تحذير الترحيل، إضافات `TickState`، مساعدات PDA جديدة.
* `products/clmm/instructions` — سبع تعليمات جديدة، ملحق سلوك `SwapV2`، مصفوفة تغيير الحالة المحدثة.
* `products/clmm/fees` — قسم الرسم الأحادي الاتجاه، قسم الرسم الديناميكي مع جدول المعاملات.
* `products/clmm/math` — كود زائف لمطابقة الأوامر المحدودة، اشتقاق الرسم الديناميكي.
* `products/clmm/code-demos` — عرض توضيحي لـ `createCustomizablePool`، عرض توضيحي كامل للأوامر المحدودة، مزالق جديدة.
* `algorithms/clmm-math` — مرجع متقاطع لمطابقة الأوامر المحدودة والرسم الديناميكي في حلقة المبادلة متعددة التجزئة.
* `sdk-api/typescript-sdk` — قسم إضافات وحدة CLMM، ملاحظة ترحيل `utils/` → `libraries/`.
* `api-reference/openapi/api-v3.yaml` — نقطتا نهاية جديدتان مع مخططات الاستجابة.
* `api-reference/openapi/temp-api-v1.yaml` — ثلاث نقاط نهاية أوامر محدودة جديدة (`/limit-order/order/list`, `/limit-order/history/order/list-by-user`, `/limit-order/history/event/list-by-pda`) مع مخططات الطلب والاستجابة الخاصة بها.
* `api-reference/api-v3/overview` — ملاحظة على نقاط نهاية تكوين CLMM الجديدة.
* `api-reference/temp-api-v1/overview` — ملاحظة على نقاط النهاية الجديدة للأوامر النشطة والسجل حسب المستخدم والحدث حسب PDA.
* `reference/error-codes` — أحد عشر رمز خطأ CLMM جديد (6040–6050) بالإضافة إلى خمسة أكواد قديمة محذوفة؛ الأكواد الرقمية بعد نقاط الإزالة قد تحولت.
* `security/admin-and-multisig` — صف `DynamicFeeConfig` admin جديد وصف حارس `limit_order_admin`، مع شارح السلطة المحدودة.

**تم التحقق منه مقابل**:

* مصدر `raydium-clmm`.
* مصدر `@raydium-io/raydium-sdk-v2`.
* مصدر `api-v3` و `temp-api-v1`.
