Skip to main content
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
يحصل CLMM الآن على نفس تحديث الإطار الذي شحنته CPMM و LaunchLab في 2026-09-09. ينتقل Anchor من 0.32.1 إلى =1.0.2، وسلسلة أدوات البناء من Agave 2.3.0 إلى 3.1.10. يأتي معهما تغييران من جانب المسؤول: تعليمة CollectExcessLamports جديدة، وملاك رسوم ثابتة في CreateAmmConfig. كل تعليمة يستدعيها المتداول أو مزود السيولة أو مستخدم أوامر الحد أو منشئ المجموعة تحتفظ بقائمة الحسابات والمعاملات والرياضيات الخاصة بها.

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

  • لم تتغير أي تعليمة تواجه المستخدم. CreatePool، CreateCustomizablePool، CreatePermissionedPool، كل مسارات OpenPosition* / IncreaseLiquidity* / DecreaseLiquidity*، ClosePosition، Swap / SwapV2 / SwapRouterBaseIn، التعليمات الخمس لأوامر الحد وتعليمات المكافآت متطابقة بالكامل على السلك. لم يتغير أي تخطيط حساب.
  • تمت إضافة تعليمة واحدة: CollectExcessLamports. وهي مقتصرة على المسؤولين ولا تأخذ أي معاملات. تمسح مجموعة واحدة في كل استدعاء: يتم دائماً مسح PoolState الخاص بالمجموعة، و pool PDA يوقّع على خزائنها، التي تمررها في remaining_accounts. يتم مسح أي حساب آخر مملوك لـ CLMM في remaining_accounts أيضاً. انظر products/clmm/instructions.
  • تمت إضافة رمز خطأ واحد: 6052 LamportsCalculateError. الرموز 6000–6051 لم تتغير.
  • لا يعود CreateAmmConfig ينسخ الموقّع إلى owner / fund_owner. تحصل الإعدادات الجديدة على مفاتيح protocol_fee_owner و fund_fee_owner مشفرة بشكل ثابت. على mainnet هذان هما نفس المفتاحين المخزنين بالفعل على جميع الإعدادات الـ 21 الموجودة. حسابات AmmConfig الموجودة لم تتغير، لذا استمر في قراءة الحقول من الحساب.
  • حدّث IDL الخاص بك. يضيف تعليمة واحدة ومتغير خطأ واحد، لـ 39 تعليمة و 53 خطأ.
  • يمكنك الآن وضع CPMM و CLMM في صندوق واحد. كلا المستودعين يثبتان anchor-lang / anchor-spl =1.0.2 على فروعهما chore/upgrade-anchor، لذا يمكن لبرنامج واحد أن يقوم بـ CPI إلى كليهما. انظر sdk-api/rust-cpi.
  • تمت إعادة تسمية حزمة عميل TypeScript. تنتقل مجموعة الاختبار من @coral-xyz/anchor 0.32.1 إلى @anchor-lang/core 1.0.2.

CollectExcessLamports

تفعيل المرحلة 1 من SIMD-0437 على mainnet في 3 سبتمبر 2026. كل حساب CLMM تم إنشاؤه قبل مرحلة ما يتم تمويله بشكل زائد الآن، وفقط برنامج CLMM يمكنه نقل lamports خارج حساب يمتلكه. يغطي هذا خزائن المجموعة، خزائن المكافآت، PoolState، AmmConfig، ObservationState، TickArrayBitmapExtension والباقي. تأخذ التعليمة أربعة حسابات ثابتة، ثم أي عدد من حسابات المصدر في remaining_accounts: المجموعة هي سلطة التوقيع، وليس PDA على مستوى البرنامج. يوقّع CPMM بسلطة vault_and_lp_mint_auth_seed عامة واحدة. خزائن رموز CLMM مملوكة لـ PoolState الخاص بها، لذا يمكن لاستدعاء واحد فقط أن يوقّع على المجموعة الممررة في الفتحة 2. يجب أن يكون لكل حساب برنامج رموز تلك المجموعة كسلطة له: token_vault_0، token_vault_1، أو أحد خزائن المكافآت الخاصة بالمجموعة. حساب رموز من مجموعة أخرى، أو حساب رموز المستخدم، يفشل في فحص مالك برنامج الرموز ويعكس التعليمة بأكملها. البرنامج لا يتخطاه. لا يمكن أيضاً مسح نعناعات NFT للموضع، لأن سلطة النعناع يتم إلغاؤها عند فتح الموضع. امسح المجموعة تلو الأخرى. تقوم التعليمة بمسارين، وهذا الترتيب ثابت:
  1. CPIs لبرنامج الرموز أولاً. لكل مصدر مملوك لـ SPL Token أو Token-2022، يحصل الحساب غير الأصلي على WithdrawExcessLamports (discriminant 38). يحصل خزان wSOL الأصلي على جولة SyncNative → UnwrapLamports (discriminant 45)، والتي تنتهي بفحص أن الرصيد المغلف يساوي قيمته قبل المزامنة. إذا لم يكن كذلك، يفشل الاستدعاء مع LamportsCalculateError. يحتفظ خزان جانب SOL برصيده الكامل، ولا يتغير أي اقتباس مبادلة عبر المسح.
  2. الخصومات المباشرة ثانياً. يخصم المسار 2 pool_state أولاً، ثم كل مصدر مملوك ببرنامج CLMM، وصولاً إلى rent.minimum_balance(data_len).
يتم تخطي المصادر المملوكة لأي برنامج آخر بصمت. هذا ترتيب المسارين هو الذي اعتمده CPMM في 2026-09-19. CLMM لديه منذ إصداره الأول. إذا تم خصم PDA قبل CPI، فإن وقت التشغيل يتوقف مع UnbalancedInstruction، لذا يمكن للمستدعين تمرير المصادر بأي ترتيب.
لا يتحقق المسار المملوك للبرنامج من أي مجموعة أو مستخدم ينتمي إليه الحساب. أي حساب مملوك ببرنامج CLMM مؤهل، بما في ذلك البعض الذي دفع المستخدم إيجاره: PersonalPositionState، LimitOrderState، و TickArrayState. فقط الفائض فوق الحد الأدنى المعفي من الإيجار ينتقل. يحتفظ الحساب ببيانات ويبقى معفياً من الإيجار. عند إغلاق الموضع أو الأمر لاحقاً، يسترد البرنامج أي رصيد يحتفظ به الحساب في تلك النقطة. بعد المسح، هذا الرصيد هو الحد الأدنى الحالي للإيجار.
تم إدراج عناوين المحفظة في reference/program-addresses.

CreateAmmConfig يكتب ملاك رسوم ثابتة

قبل هذا الإصدار، كان create_amm_config يعيّن كلا حقلي مالك الرسوم من الموقّع الذي يستدعي:
يكتب الآن ثوابت البرنامج الخاصة به:
لا يزال CreateAmmConfig مقيداً بـ crate::admin::ID. قبل هذا الإصدار، كانت كل فئة رسوم جديدة تبدأ بالمسؤول في كلا الحقلين وكان يجب تدويرها باستخدام معامل UpdateAmmConfig 3 / 4. الآن تبدأ بمحافظ التشغيل. على mainnet الثوابت هي نفس المفاتيح المخزنة بالفعل كـ owner / fund_owner على جميع الإعدادات الـ 21 الموجودة. يكتب البرنامج الآن قيمة كانت العمليات تعيينها يدوياً. لا تتغير موقّعو الجمع. يقبل CollectProtocolFee amm_config.owner أو crate::admin::ID، و CollectFundFee يقبل amm_config.fund_owner أو crate::admin::ID، قبل وبعد هذا الإصدار. على devnet، يتم حل كلا الثابتين إلى نفس المفتاح. انظر reference/program-addresses.
هذا ليس ترحيلاً. يحتفظ كل AmmConfig موجود بـ owner و fund_owner الذي يمتلكه بالفعل. اقرأ الحقول بدلاً من ترميز أي من الثوابت أو مفتاح المسؤول.

تغييرات سلسلة الأدوات والتبعيات

تغييرات Anchor 1.0 في مواقع استدعاء CPI هي نفس التغييرات التي تعامل معها مدمجو CPMM بالفعل. يأخذ CpiContext::new Pubkey للبرنامج بدلاً من AccountInfo الخاص به، و Context له معامل lifetime واحد بدلاً من أربعة. في عميل crate، يعيد RequestBuilder::instructions() الآن Vec<Instruction> بدون Result، و system_program انتقل إلى solana-system-interface. انظر sdk-api/rust-cpi. تفاصيل نظام البناء بدون تأثير على السلسلة:
  • مسؤول Localnet. لا تقوم ميزة localnet بعد الآن بتجميع مفتاح اختبار ثابت مدعوم بـ fixture ملتزم. بدلاً من ذلك، تقرأ المسؤول من متغير البيئة CLMM_LOCALNET_ADMIN في وقت البناء، والذي يعيّنه yarn test:local-admin من محفظتك المحلية. استثناء .gitignore الخاص بـ fixture قد اختفى.
  • ملف تعريف الإصدار. تم حذف كتلة [profile.release] المكررة في programs/amm/Cargo.toml. يتجاهل Cargo [profile] خارج جذر workspace، لذا كانت كتلة الجذر هي الكتلة المعمول بها بالفعل، و panic = "abort" على مستوى البرنامج لم يتم تطبيقه أبداً.
  • Anchor.toml. يصبح seeds = false resolution = true بالإضافة إلى skip-lint = false، وتتم إزالة عنوان URL [registry] القديم.
  • Lints. يضيف programs/amm/Cargo.toml قائمة السماح [lints.rust] unexpected_cfgs لـ feature cfgs التي تصدرها ماكروهات Anchor و Solana.
  • README. على هذا الفرع، لا يزال README يخبرك بتشغيل rustup default 1.86.0 و avm install 0.32.1 من coral-xyz/anchor. اتبع Anchor.toml و solana-fundamentals/toolchain بدلاً من ذلك.

ما لم يتغير

  • كل تخطيط حساب. PoolState، AmmConfig، TickArrayState، TickArrayBitmapExtension، PersonalPositionState، ObservationState، LimitOrderState، DynamicFeeConfig، Permission و SupportMintAssociated تحتفظ بنفس الأحجام والإزاحات.
  • رموز الخطأ 6000–6051.
  • رياضيات المبادلة والسيولة والرسوم والرسوم الديناميكية وأوامر الحد. CollectExcessLamports ينقل lamports التي لم تكن أبداً جزءاً من احتياطيات أي مجموعة.
  • تجميد NFT للموضع من 2026-08-17، بما في ذلك قاعدة pool-as-freeze-authority ومسار ClosePosition thaw.
  • spl_memo. انتقل قيد برنامج memo الخاص بـ DecreaseLiquidityV2 من spl_memo::id() إلى anchor_spl::memo::ID. كلاهما يسمي نفس العنوان؛ anchor-spl فقط أعاد تسمية التصدير.
  • معرف البرنامج.

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

  • products/clmm/instructions: لافتة الترقية؛ قسم CollectExcessLamports مع قائمة الحسابات الخاصة به، جدول الإرسال ثنائي المسار وتحديد النطاق لكل مجموعة؛ صفوف الجرد والبوابة الإدارية ومصفوفة تغيير الحالة؛ ملاحظة مالك الرسوم على CollectProtocolFee / CollectFundFee.
  • products/clmm/accounts: تعليقات مالك AmmConfig وملاحظة حول ما يكتبه CreateAmmConfig.
  • products/clmm/code-demos: لافتة الإصدار وهيكل Rust CPI الهيكلي انتقل إلى Anchor 1.0.
  • products/cpmm/code-demos: تمت إزالة ملاحظة “لا يمكن مشاركة crate مع CLMM”.
  • reference/error-codes: تم توثيق 6052.
  • reference/program-addresses: قسم “محافظ مالك رسوم CLMM” جديد؛ تمت إضافة CLMM إلى “محافظ جمع excess-lamports”.
  • sdk-api/rust-cpi، sdk-api/anchor-idl، solana-fundamentals/toolchain: دبابيس Anchor 1.0 لـ raydium-clmm، وتقاعد تحذير تقسيم crate.
  • solana-fundamentals/rent-and-reclaimable-rent: تمت إضافة CLMM إلى “ما تمسحه برامج Raydium على جانبها الخاص”.
  • security/admin-and-multisig: دور جامع excess-lamports لـ CLMM.
  • protocol-overview/versions-and-migration: نقطة نقاش سجل ترقية CLMM.