Skip to main content
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
يغطي هذا الإدراج تحديث برنامج CPMM القادم. تم التحقق منه مقابل فرع الإصدار المحلي قبل النشر. تأكد من البرنامج المنشور قبل الاعتماد على التعليمة الجديدة أو السلوك المتغير لـ CreateAmmConfig.
التغيير الرئيسي لـ CPMM هو نقل الإطار: Anchor من 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.
  • تمت إضافة رمز خطأ واحد: 6015 LamportsCalculateError. الرموز 60006014 لم تتغير.
  • لا يعود CreateAmmConfig ينسخ الموقّع إلى حقول مالك الرسوم. تحصل الإعدادات الجديدة على مفاتيح protocol_fee_owner و fund_fee_owner المشفرة بشكل ثابت. حسابات AmmConfig الموجودة لم تتغير — استمر في قراءة protocol_owner / fund_owner من الحساب بدلاً من افتراض أي قيمة.
  • قائمة Token-2022 MINT_WHITELIST ذات الأربع عناوين المشفرة بشكل ثابت اختفت. سجل PDA SupportMintAssociated هو الآن الطريقة الوحيدة لـ 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.
هذا ليس ترحيلاً. كل AmmConfig موجود بالفعل يحتفظ بأي protocol_owner و fund_owner تم إنشاؤه به. أداة جمع تبدأ بتشفير الثوابت الجديدة ستفشل على الإعدادات الأقدم، وواحدة تفترض “مفتاح المسؤول” ستفشل على الإعدادات الجديدة. اقرأ الحقول.

تمت إزالة قائمة Token-2022 mint البيضاء

كانت is_supported_mint تختصر سابقاً على MINT_WHITELIST مشفر بشكل ثابت من أربعة عناوين قبل التكرار على امتدادات mint. تم حذف هذا المصفوفة — و HashSet المبني منه في كل استدعاء. ما تبقى هو:
  1. Legacy SPL Token mints تمر بدون شروط.
  2. mint مع SupportMintAssociated PDA مهيأ في [b"support_mint", mint] يمر بدون شروط.
  3. وإلا فإن كل امتداد على mint يجب أن يكون واحداً من TransferFeeConfig، MetadataPointer، TokenMetadata، InterestBearingConfig، ScaledUiAmount.
سجل PDA كان في البرنامج لفترة من الوقت، مع زوج CreateSupportMintAssociated / CloseSupportMintAssociated الخاص به وسلطة مخصصة خاصة به إلى جانب المسؤول المشترك، ويتم استشارته من كل من Initialize و InitializeWithPermission. إزالة المصفوفة الثابتة تعني أن إدراج mint هو الآن إجراء على السلسلة بحتة بدلاً من ترقية البرنامج — وهذا هو الهدف. الـ pools الموجودة لم تتأثر، لأن فحص mint يتم تشغيله فقط عند إنشاء الـ pool. ما يتغير هو أن إنشاء pool جديد لـ CPMM لأحد mints الأربعة المدرجة في القائمة البيضاء سابقاً يتطلب أن يكون لهذا mint سجل PDA — الأشخاص الذين يهمهم بالفعل لديهم واحد على mainnet. الصورة الكاملة، بما في ذلك ما يفعله السجل وما لا يفعله من تنازلات، موجودة في reference/token-2022-support.

توسيع موقّع ClosePermissionPda

كان CreatePermissionPda يقبل بالفعل إما المسؤول المشترك أو سلطة منشئ PDA إذن مخصصة، بينما كان ClosePermissionPda مثبتاً على المسؤول بقيد address =. يأخذ مسار الإغلاق الآن نفس الزوج:
لذا فإن السلطة التي تصدر منحة يمكنها أيضاً إلغاء تفويضها، دون التوجيه عبر multisig. الخطأ على موقّع غير مصرح به هو 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 — نفس الأحجام، نفس الإزاحات.
  • رموز الخطأ 60006014.
  • قائمة الامتدادات المسموحة نفسها. لا تزال نفس الامتدادات الخمسة.
  • معدلات الرسوم وتراكم الرسوم والمنحنى. 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 بمسحه من جانبها الخاص”.