هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
يغطي هذا الإدراج تحديث برنامج CPMM القادم. تم التحقق منه مقابل فرع الإصدار المحلي قبل النشر. تأكد من البرنامج المنشور قبل الاعتماد على التعليمة الجديدة أو السلوك المتغير لـ
CreateAmmConfig.0.32.1 إلى =1.0.2، وسلسلة أدوات البناء من Agave 2.3.0 إلى 3.1.10. يرافقها أربعة تغييرات سلوكية، ثلاثة منها تهم أدوات المسؤول فقط وواحد — إزالة قائمة mint البيضاء — يغير أي Token-2022 mints يمكن استخدامها لـ pool جديد.
كل شيء يستدعيه المتداول أو مزود السيولة أو منشئ الـ pool يحافظ على قائمة الحسابات والحجج والرياضيات.
ملخص سريع للمدمجين
- لم تتغير أي تعليمة موجهة للمستخدم.
Initialize،InitializeWithPermission،Deposit،Withdraw،SwapBaseInput،SwapBaseOutput، وجميع مساراتCollect*Feeالأربعة متطابقة بالبايت. لم يتغير تخطيط أي حساب. - تمت إضافة تعليمة واحدة:
CollectExcessLamports. مقتصرة على المسؤول، بدون حجج، يتم تمرير المصادر كـremaining_accounts. تُرجع lamports فوق الحد الأدنى المعفي من الإيجار من الأقبية المتحكم فيها بواسطة CPMM وـ LP mints و PDAs، ولا تلمس أي شيء آخر. انظرproducts/cpmm/instructions. - تمت إضافة رمز خطأ واحد:
6015LamportsCalculateError. الرموز6000–6014لم تتغير. - لا يعود
CreateAmmConfigينسخ الموقّع إلى حقول مالك الرسوم. تحصل الإعدادات الجديدة على مفاتيحprotocol_fee_ownerوfund_fee_ownerالمشفرة بشكل ثابت. حساباتAmmConfigالموجودة لم تتغير — استمر في قراءةprotocol_owner/fund_ownerمن الحساب بدلاً من افتراض أي قيمة. - قائمة Token-2022
MINT_WHITELISTذات الأربع عناوين المشفرة بشكل ثابت اختفت. سجل PDASupportMintAssociatedهو الآن الطريقة الوحيدة لـ CPMM لتجاوز قائمة الامتدادات المسموحة. الـ pools الموجودة لم تتأثر؛ يتم تشغيل الفحص عند إنشاء الـ pool فقط. - يقبل
ClosePermissionPdaسلطة منشئ PDA الإذن المخصصة، وليس فقط المسؤول المشترك. - يلزم تحديث IDL. تعليمة جديدة واحدة، متغير خطأ جديد واحد.
- تمت إعادة تسمية حزمة عميل TypeScript.
@coral-xyz/anchorمجمدة عند0.32.1؛ عميل Anchor 1.x ينشر باسم@anchor-lang/core.
CollectExcessLamports
الخطوة 1 من SIMD-0437 وصلت إلى mainnet في 3 سبتمبر 2026، مما قلل الحد الأدنى المعفي من الإيجار بنسبة 9٪ مع أربع خطوات أخرى قادمة. كل vault لـ CPMM pool و LP mint و PoolState و AmmConfig و ObservationState و Permission و SupportMintAssociated تم إنشاؤها قبل خطوة ما يتم تمويلها الآن بشكل زائد، و lamports في حساب مملوك للبرنامج يمكن نقله فقط من قبل هذا البرنامج.
تأخذ التعليمة أربعة حسابات ثابتة — محفظة الموقّع/الوجهة، سلطة PDA vault_and_lp_mint_auth_seed، و كلا برنامج الرموز — ثم أي عدد من حسابات المصدر في remaining_accounts. يتم الإرسال على مالك كل حساب مصدر: CPI إلى WithdrawExcessLamports (discriminant 38) لبرنامج الرموز لحساب رمز أو mint، خصم مباشر لـ PDA مملوك لـ CPMM، وتخطي صامت لأي شيء آخر.
Wrapped SOL هي الحالة التي تستحق الفهم. رصيد lamport لحساب الرمز الأصلي هو رصيد الرمز الخاص به، لذا يرفض كلا برنامج الرموز WithdrawExcessLamports على واحد. بدلاً من ذلك، يقوم CPMM بـ CPI SyncNative (طي الفائض المتبرع به في amount المغلف)، يقيس مقدار نمو المبلغ، UnwrapLamports (discriminant 45) لهذا الفرق بالضبط، ثم يتطلب أن يساوي الرصيد المغلف قيمته السابقة للمزامنة — LamportsCalculateError إذا لم يكن كذلك. يحتفظ vault الـ pool من جانب SOL بسيولته الكاملة من خلال عملية مسح، ولا يرى أي LP تغييراً في السعر عبر واحد.
قد يكون الموقّع إما مسؤول البرنامج المشترك أو محفظة جمع lamports مخصصة؛ العناوين موجودة في reference/program-addresses.
CreateAmmConfig يكتب مالكي رسوم ثابتة
قبل هذا الإصدار، كان create_amm_config يعيّن كلا حقلي مالك الرسوم من الموقّع الذي يستدعي:
CreateAmmConfig محمي بـ crate::admin::ID، فإن التأثير العملي هو أن طبقة رسوم تم إنشاؤها حديثاً يتم مسحها بواسطة محافظ تشغيلية مخصصة من البداية بدلاً من multisig المسؤول، والمسؤول لا يمكنه جمع من إعداد أنشأه للتو دون أولاً تدوير الحقل من خلال UpdateAmmConfig param 3 أو 4.
يتبع الثابتان نفس نمط cfg devnet/mainnet مثل بقية عناوين البرنامج، وعلى devnet كلاهما يحل إلى نفس المفتاح. انظر reference/program-addresses.
تمت إزالة قائمة Token-2022 mint البيضاء
كانتis_supported_mint تختصر سابقاً على MINT_WHITELIST مشفر بشكل ثابت من أربعة عناوين قبل التكرار على امتدادات mint. تم حذف هذا المصفوفة — و HashSet المبني منه في كل استدعاء. ما تبقى هو:
- Legacy SPL Token mints تمر بدون شروط.
- mint مع
SupportMintAssociatedPDA مهيأ في[b"support_mint", mint]يمر بدون شروط. - وإلا فإن كل امتداد على mint يجب أن يكون واحداً من
TransferFeeConfig،MetadataPointer،TokenMetadata،InterestBearingConfig،ScaledUiAmount.
CreateSupportMintAssociated / CloseSupportMintAssociated الخاص به وسلطة مخصصة خاصة به إلى جانب المسؤول المشترك، ويتم استشارته من كل من Initialize و InitializeWithPermission. إزالة المصفوفة الثابتة تعني أن إدراج mint هو الآن إجراء على السلسلة بحتة بدلاً من ترقية البرنامج — وهذا هو الهدف.
الـ pools الموجودة لم تتأثر، لأن فحص mint يتم تشغيله فقط عند إنشاء الـ pool. ما يتغير هو أن إنشاء pool جديد لـ CPMM لأحد mints الأربعة المدرجة في القائمة البيضاء سابقاً يتطلب أن يكون لهذا mint سجل PDA — الأشخاص الذين يهمهم بالفعل لديهم واحد على mainnet. الصورة الكاملة، بما في ذلك ما يفعله السجل وما لا يفعله من تنازلات، موجودة في reference/token-2022-support.
توسيع موقّع ClosePermissionPda
كان CreatePermissionPda يقبل بالفعل إما المسؤول المشترك أو سلطة منشئ PDA إذن مخصصة، بينما كان ClosePermissionPda مثبتاً على المسؤول بقيد address =. يأخذ مسار الإغلاق الآن نفس الزوج:
InvalidOwner (6001) في كلتا الحالتين — قيد address = القديم كان يحمل بالفعل هذا الخطأ المخصص — لذا فقط مجموعة الموقّعين المقبولين توسعت.
تغييرات سلسلة الأدوات والتبعيات
يغير Anchor 1.0 شيئين في كل موقع استدعاء CPI، وهذا يهم إذا قمت بدمج CPMM من برنامجك الخاص:
CpiContext::new يأخذ Pubkey للبرنامج بدلاً من AccountInfo الخاص به، و Context له معامل lifetime واحد بدلاً من أربعة. على جانب العميل RequestBuilder::instructions() يُرجع Vec<Instruction> بدلاً من Result<...>، CommitmentConfig يأتي من anchor_client بدلاً من solana_sdk، و spl-associated-token-account 8.0 نقل مساعدات العناوين الخاصة به تحت ::address ومعرف البرنامج الخاص به إلى ::program::ID. انظر sdk-api/rust-cpi.
تفصيلان في نظام البناء، لا أحدهما له تأثير على السلسلة: يعلن حزمة البرنامج عن ميزة localnet تجمع المحفظة المحلية كـ admin من متغير بيئة CPSWAP_LOCALNET_ADMIN (لذا يمكن لاختبارات المسؤول المحمي فعلاً التوقيع — yarn test:local-admin يسلكها)، وتم حذف كتلة [profile.release] المكررة في programs/cp-swap/Cargo.toml. يتجاهل Cargo [profile] خارج جذر workspace، لذا كانت كتلة الجذر بالفعل الكتلة المعمول بها — بما في ذلك حقيقة أن panic = "abort" لكتلة مستوى البرنامج لم يتم تطبيقه أبداً.
ما لم يتغير
- كل تخطيط حساب.
PoolState،AmmConfig،ObservationState،Permission،SupportMintAssociated— نفس الأحجام، نفس الإزاحات. - رموز الخطأ
6000–6014. - قائمة الامتدادات المسموحة نفسها. لا تزال نفس الامتدادات الخمسة.
- معدلات الرسوم وتراكم الرسوم والمنحنى.
CollectExcessLamportsينقل lamports التي لم تكن أبداً جزءاً من احتياطيات أي pool. spl_memo. انتقل قيد برنامج memo لـWithdrawمنspl_memo::id()إلىanchor_spl::memo::ID— نفس العنوان تحت تصديرanchor-splمعاد التسمية.- معرف البرنامج. لم يتغير.
الصفحات المحدثة
products/cpmm/instructions— تمت إضافةCollectExcessLamportsمع قائمة الحسابات وجدول الإرسال لكل مالك؛ يحصلCreateAmmConfigعلى حجةcreator_fee_rateالخاصة به وملاحظة حول مالكي الرسوم الثابتة؛ تمت إضافة صفوف ملخص التعليمات لـCollectExcessLamports،CreateSupportMintAssociated،CloseSupportMintAssociated؛ تم تصحيح موقّعClosePermissionPda؛ تمت إعادة كتابة شرطInitializeالمسبق لتجاوز السجل فقط؛ تمت إضافة صف مصفوفة تغيير الحالة.products/cpmm/accounts— تمت إعادة كتابة قسم Token-2022 حول سجل PDA، مع استدعاء إزالة القائمة البيضاء؛ تم تصحيح موقّعClosePermissionPda.products/cpmm/overview— تمت إعادة كتابة جملة القائمة البيضاء.products/cpmm/code-demos— تم تحديث هيكل Rust CPI لـ Anchor 1.0.reference/token-2022-support— تمت إعادة كتابة قسم مسار التجاوز حول سجل PDA، مع نقلMINT_WHITELISTالمحذوف إلى قسم “تجاوزات محذوفة”.reference/error-codes— تم توثيق6015.reference/program-addresses— أقسام جديدة “سلطة سجل دعم CPMM”، “محافظ مالكي رسوم CPMM” و “محافظ جمع excess-lamports”؛ تم تصحيح ملاحظةClosePermissionPda.sdk-api/rust-cpi،solana-fundamentals/toolchain،integration-guides/cpi-integration— دبابيس Anchor 1.0 وملاحظات هجرة CPI.solana-fundamentals/rent-and-reclaimable-rent— قسم جديد “ما تقوم برامج Raydium بمسحه من جانبها الخاص”.

