Skip to main content
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
يوثق هذا الإصدار تغييرين في برنامج CLMM. كلاهما إضافي وعكسي التوافق: المجموعات والمراكز والأوامر المفتوحة الموجودة لن تتأثر، والمسارات الكلاسيكية CreatePool / CreateCustomizablePool لم تتغير.

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

  • معرفات المجموعات يمكن أن تكون غير قانونية الآن، خلف بوابة صلاحيات. تاريخيًا كان هناك عنوان CLMM واحد بالضبط لكل (amm_config, token_mint_0, token_mint_1) — بذور PDA ثبتتها. تعليمة جديدة، CreatePermissionedPool، تطوي seed_index: u16 من جانب العميل غير صفري في بذور PDA للمجموعة، لذا يمكن لمشغل مدرج في القائمة البيضاء إنشاء عدة مجموعات لنفس الزوج ورسم الرسوم، كل واحدة في عنوانها الخاص. لأن عناوين المجموعات التعسفية هي قدرة مميزة، يجب على الدافع أن يحمل Permission PDA منحها المسؤول. تعليمتان إداريتان، CreatePermissionPda و ClosePermissionPda، تدير تلك المنح.
  • OpenLimitOrder يتحقق الآن من الجانب الناتج. التعليمة تأخذ ثلاثة حسابات إضافية — output_token_account, output_vault, output_vault_mint — وترفض الأمر مع NotApproved إذا كان حساب الإدخال أو الإخراج للمالك مجمدًا. هذا يضمن أن الملء النهائي يمكن تسليمه، وهو مهم لـ Token-2022 mints الافتراضية المجمدة (الرموز المرخصة). يجب على العملاء المبنيين مقابل قائمة الحسابات أحادية الجانب القديمة إضافة الحسابات الثلاثة الناتجة.

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

تعليمة جديدة: CreatePermissionedPool

نفس الشكل والمعاملات مثل CreateCustomizablePool (تأخذ نفس CreateCustomizableParams، لذا الرسوم أحادية الجانب والاختيار الديناميكي للرسوم متاحان)، بالإضافة إلى:
  • معامل seed_index: u16، والذي يجب أن يكون غير صفري. يتم إلحاقه (little-endian) ببذور PDA للمجموعة: ["pool", amm_config, token_mint_0, token_mint_1, seed_index.to_le_bytes()].
  • حساب permission: PDA ["permission", payer]. Anchor يرفض الاستدعاء إذا لم يكن موجودًا أو لم يكن مملوكًا للبرنامج — وجوده وحده هو التفويض.
  • حساب pool_creator مسجل كـ pool_state.owner، والذي قد يختلف عن payer الذي يدفع الرسوم.
seed_index = 0 يبقى محجوزًا للمجموعات القديمة: بالنسبة لتلك المجموعات، مكون البذرة ينهار إلى فارغ، مما يعيد إنتاج عنوان البذور الأربع الكلاسيكي، لذا لا يتغير عنوان مجموعة موجودة. انظر Instructions → CreatePermissionedPool.

حساب جديد: Permission

حساب قدرة وجوده هو المنحة. يخزن فقط authority التي تم إنشاؤه لها (بالإضافة إلى الحشو). بذور PDA: ["permission", authority]. يمنح الحق في استدعاء CreatePermissionedPool وليس شيء آخر — لا يمكنه نقل الأموال أو تغيير الرسوم أو تغيير أي مجموعة. انظر Accounts → Permission.

تعليمات إدارية جديدة: CreatePermissionPda / ClosePermissionPda

  • CreatePermissionPda تهيئ Permission PDA لـ permission_authority معينة.
  • ClosePermissionPda تغلقها وتسترد الإيجار للمتصل، مما يلغي المنحة. المجموعات المنشأة بالفعل تحت تلك المنحة لن تتأثر.
كلاهما يقبل إما مفتاح admin للبرنامج أو مفتاح permission_pda_admin مخصص (ثابت مختلف على mainnet مقابل devnet). انظر Admin keys and multisig → CLMM.

PoolState: حقل seed_index

تم نحت بايتين من منطقة حشو موجودة (padding: [u8; 6]seed_index: [u8; 2] + padding: [u8; 4]) مباشرة بعد fee_on. حجم الحساب الإجمالي لم يتغير، ولا يلزم ترحيل الفهرس. بالنسبة للمجموعات المنشأة عبر CreatePool / CreateCustomizablePool، seed_index هو [0, 0]؛ بالنسبة للمجموعات المرخصة، يحمل الفهرس المختار من قبل المنشئ وهو مطلوب لإعادة اشتقاق عنوان المجموعة خارج السلسلة.

OpenLimitOrder: حسابات الجانب الناتج وحماية الحساب المجمد

قائمة حساب OpenLimitOrder تكتسب output_token_account, output_vault, و output_vault_mint. يتم استخدامها فقط للتحقق — لا يتم خصم أي إخراج عند الفتح. المعالج الآن يتطلب أن لا حساب الإدخال ولا حساب الإخراج مجمد، مما يعيد NotApproved بخلاف ذلك (نفس الكود الذي تم إرجاعه بالفعل عندما تكون المجموعة بها swap أو limit-order معطل). هذا يغلق فجوة حيث يمكن فتح أمر ضد حساب رمز قد لا يتمكن أبدًا من استقبال الملء (على سبيل المثال، حساب لم يتم إذابته بعد لـ Token-2022 mint افتراضي مجمد). انظر Instructions → OpenLimitOrder.

رموز الخطأ

لا توجد رموز خطأ جديدة. 6000 NotApproved الموجود يغطي الآن بالإضافة إلى ذلك حساب الإدخال/الإخراج المجمد وحالات swap/limit-order-disabled على OpenLimitOrder، وحالة “الموقع ليس admin ولا permission_pda_admin” على تعليمات الصلاحيات. جدول رموز الخطأ والترقيم بخلاف ذلك لم يتغيروا من إصدار 2026-05-18. انظر Error codes → CLMM.

ملاحظات الترحيل

  • قراءة عناوين المجموعات: لا تفترض مجموعة واحدة لكل (config, mint0, mint1). قد يكون لدى الزوج الآن مجموعة قانونية بالإضافة إلى مجموعة أو أكثر مرخصة في عناوين مشتقة من seed_index. عدّد المجموعات من API / الفهرس بدلاً من اشتقاق PDA واحد، وخزّن seed_index عندما تحتاج إلى إعادة اشتقاق مجموعة مرخصة.
  • وضع أوامر الحد: أضف الحسابات الثلاثة على الجانب الناتج إلى معاملة OpenLimitOrder الخاصة بك، وعرض رسالة واضحة عند إرجاع NotApproved لحساب مجمد.
  • لا توجد فاصلة حجم الحساب أو التخطيط: PoolState بنفس الحجم؛ بايتات الحشو المتقاعدة تحمل الآن seed_index.

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

  • products/clmm/overview — ملاحظة “ما الجديد” حول المجموعات المتعددة المرخصة وحماية أوامر الحد.
  • products/clmm/instructions — قسم CreatePermissionedPool جديد، CreatePermissionPda / ClosePermissionPda في جدول التعليمات وملاحظة البوابة الإدارية، وقائمة حساب OpenLimitOrder المحدثة / الشروط المسبقة / الأخطاء.
  • products/clmm/accountsPermission في الجرد وقسمه الخاص، حقل PoolState.seed_index، مساعدات اشتقاق PDA (derivePermissionedPool, derivePermission)، ومرجع دورة الحياة السريع.
  • security/admin-and-multisig — صف permission_pda_admin جديد وشارح نطاق الصلاحيات في جدول أدوار CLMM.
  • reference/error-codes — وصف NotApproved الموسع.
تم التحقق منه مقابل:
  • مصدر raydium-clmm (create_permissioned_pool.rs, admin/create_permission_pda.rs, admin/close_permission_pda.rs, states/permission.rs, states/pool.rs, limit_order/open_limit_order.rs, lib.rs).