الانتقال إلى المحتوى الرئيسي
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
إدخال سجل تغييرات التوثيق. للاطلاع على فهرس جميع التحديثات، انظر reference/changelog. للحصول على الخط الزمني التاريخي للبروتوكول نفسه، انظر introduction/history-and-milestones.
يضيف إصدار 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 و الحسابات → LimitOrderState.

إعادة تشكيل 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 لمصفوفة تغيير الحالة المحدثة.

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

تم إعادة ترقيم تعداد 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 موجودة في أكواد الأخطاء.

ما تغير في 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.

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

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

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

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