هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
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. - تمت إضافة رمز خطأ واحد:
6052LamportsCalculateError. الرموز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/anchor0.32.1إلى@anchor-lang/core1.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 للموضع، لأن سلطة النعناع يتم إلغاؤها عند فتح الموضع. امسح المجموعة تلو الأخرى.
تقوم التعليمة بمسارين، وهذا الترتيب ثابت:
- CPIs لبرنامج الرموز أولاً. لكل مصدر مملوك لـ SPL Token أو Token-2022، يحصل الحساب غير الأصلي على
WithdrawExcessLamports(discriminant38). يحصل خزان wSOL الأصلي على جولةSyncNative→UnwrapLamports(discriminant45)، والتي تنتهي بفحص أن الرصيد المغلف يساوي قيمته قبل المزامنة. إذا لم يكن كذلك، يفشل الاستدعاء معLamportsCalculateError. يحتفظ خزان جانب SOL برصيده الكامل، ولا يتغير أي اقتباس مبادلة عبر المسح. - الخصومات المباشرة ثانياً. يخصم المسار 2
pool_stateأولاً، ثم كل مصدر مملوك ببرنامج CLMM، وصولاً إلىrent.minimum_balance(data_len).
UnbalancedInstruction، لذا يمكن للمستدعين تمرير المصادر بأي ترتيب.
تم إدراج عناوين المحفظة في 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.
تغييرات سلسلة الأدوات والتبعيات
تغييرات 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 = falseresolution = 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 ومسار
ClosePositionthaw. 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.

