هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
دعم على مستوى البرنامج
فحوصات قائمة السماح تعيش في:
- CPMM:
is_supported_mintفيraydium-cp-swap/programs/cp-swap/src/utils/token.rs، يُستدعى منInitializeوInitializeWithPermission. - CLMM:
is_supported_mintفيraydium-clmm/programs/amm/src/util/token.rs، يُستدعى منCreatePool. - LaunchLab:
initialize_with_token_2022فيraydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs(المصدر غير متاح للعموم).
تجميد NFT موضع CLMM للمُصدرين المقيدين
تبقى حسابات NFT الموضع غير مجمدة بشكل افتراضي. يجمد CLMM واحدًا فقط عندما يستخدم الموضع مسار V2 مفتوح و يظهرfreeze_authority الحالي لنعناع الخزان الواحد على الأقل في قائمة frozen_position_nft_authorities::IDS المشفرة. هذه القائمة هي ما حل محل كشف رمز Superstate السابق في CLMM، وتحمل نفس سلطة المُصدر التي طابقتها الكشف الاستدلالي القديم. تعيين PDA المجمع كسلطة تجميد نعناع NFT الموضع ليس بحد ذاته تجميدًا. هذه قاعدة حراسة موضع، وليست قائمة سماح إنشاء مجمع:
- يمكن أن يكون المجمع موجودًا بالفعل ويبقى قابلاً للمبادلة.
- يستخدم نعناع NFT الموضع PDA مجمع CLMM كسلطة تجميد خاصة به؛ المُصدر الأساسي لا يتحكم في NFT الموضع.
OpenPositionV2يغطي NFTs موضع SPL الكلاسيكي على أصول مجمع Token-2022.OpenPositionWithToken22Nftيغطي NFTs موضع Token-2022.OpenPositionV1 لا يفتش نعناعات الخزان ولا يمكنه خدمة أصول Token-2022 المقيدة المستهدفة بالقائمة المُرسلة.- المواضع الموجودة لم تتغير.
ClosePosition يذيب ويحرق بشكل ذري عندما يمرر العميل المجمع كأول حساب متبقٍ. انظر products/clmm/ticks-and-positions.
نعناعات المقتبس في LaunchLab
يتم تقييد نعناعات LaunchLab الاثنين بطرق مختلفة جدًا، والعدم التماثل سهل الفقدان.- النعناع الأساسي — ينشئه LaunchLab. يمكن الوصول إلى نعناع أساسي Token-2022 فقط من خلال
initialize_with_token_2022، وسيرفق البرنامج فقطMetadataPointerو (اختياري)TransferFeeConfig. أي شيء آخر يُرجعNoSupportExtension. لا يمكن توفير نعناع Token-2022 موجود مسبقًا كأساس على الإطلاق. عند إرفاقTransferFeeConfig، يكونtransfer_fee_config_authorityللنعناع هو PDA سلطة الإطلاق حتى التخرج، بينما يكونwithdraw_withheld_authorityهوtransfer_fee_extension_authالمُكوّن للمنصة من إنشاء النعناع فصاعدًا — برنامج الإطلاق نفسه ليس لديه تعليمات سحب محتفظ به. انظرproducts/launchlab/platform-config. - النعناع المقتبس — لا ينشئه LaunchLab ولا يفحصه.
CreateConfigيقبل حساب النعناع كما هو، لذا لا يوجد ما يعادلis_supported_mintعلى جانب المقتبس. البوابة الوحيدة هي النعناعات التي يختار المسؤول ربطها بـGlobalConfig.
TransferHook سيشغل خطافه على كل عملية شراء وبيع ومطالبة رسوم في كل مجمع مقتبس فيه، ونعناع مقتبس PermanentDelegate سيسمح للمندوب بمسح خزانات المقتبس لتلك المجمعات. لا يتم حظر أي منهما من قبل البرنامج.
ما يتعامل معه LaunchLab بشكل صحيح بمجرد ربط نعناع مقتبس:
- خزان المقتبس، وكلا خزاني الرسوم، وحساب رمز مستقبل رسوم المشاركة يتم إنشاؤها على برنامج النعناع المقتبس الخاص به.
TransferFeeConfigعلى جانب المقتبس يتم تسعيره في جميع تعليمات التجارة الأربعة، وتُفحص حدود الانزلاق مقابل المبلغ الصافي للدافع بدلاً من حركة الخزان الإجمالية. انظرproducts/launchlab/instructions.PoolState.token_program_flagيسجل برامج كلا النعناعين — bit0 للنعناع الأساسي، bit1 للنعناع المقتبس. فك تشفيره لكل بت؛ البايت ليس قيمة منطقية. انظرproducts/launchlab/accounts.
Initialize المهجورة لا تزال تأخذ برنامج مقتبس وراثي فقط، لذا فإن التكوين الذي يحتوي على نعناع مقتبس Token-2022 يمكن الوصول إليه فقط من خلال InitializeV2 و InitializeWithToken2022.
قائمة سماح امتدادات CPMM و CLMM
بعد الاختصارات القصيرة المغطاة أدناه، يكرر البرنامج امتدادات النعناع ويرفض النعناع إذا كان يحمل أي امتداد بخلاف هذه الخمسة:
أي شيء ليس في هذه القائمة —
TransferHook، NonTransferable، ConfidentialTransferMint، PermanentDelegate، MintCloseAuthority، DefaultAccountState، GroupPointer، GroupMemberPointer، MemberPointer، Pausable، إلخ. — يسبب is_supported_mint في إرجاع false وإنشاء المجمع في الارتداد.
الأسطر ذات الصلة (CPMM، نفس الشكل في CLMM):
cp-swap/src/utils/token.rs
مسارات الالتفاف
يمكن قبول نعناع Token-2022 لا يناسب قائمة السماح، من خلال آلية واحدة في كل برنامج. كان لكلا البرنامجين أيضًا التفافات مشفرة في الماضي؛ لا يبقى أي منها.is_supported_mint الآن بايت مقابل بايت نفس الدالة في كلا البرنامجين: نعناعات SPL Token الوراثية تمر، نعناع مع سجل PDA يمر، وكل شيء آخر يجب أن يحمل فقط امتدادات مسموحة.
الالتفاف الوحيد: سجل النعناع لكل نعناع
يستشير كلا البرنامجين PDASupportMintAssociated في البذرة [b"support_mint", mint]. إذا كان هذا PDA موجودًا للنعناع، يتم قبول النعناع بغض النظر عن مجموعة امتداده.
لكل برنامج نسخته الخاصة من PDA (يشتقان تحت معرفات برامج مختلفة)، وزوجه الخاص من CreateSupportMintAssociated / CloseSupportMintAssociated، وسلطته المخصصة إلى جانب المسؤول المشترك:
المفاتيح الأربعة (CPMM و CLMM × mainnet و devnet) مدرجة تحت سلطات سجل النعناع المدعوم.
في كلا البرنامجين تقبل التعليمات إما crate::admin::ID أو سلطة دعم النعناع المخصصة لذلك البرنامج، وتتطلب أن يكون النعناع مملوكًا بواسطة Token-2022. التأثير: يمكن اختيار نعناع Token-2022 محدد لإنشاء المجمع دون ترقية برنامج — وهذا هو السبب في أن القوائم المشفرة يمكن أن تذهب.
يستشير كل برنامج السجل من كل مسار إنشاء مجمع لديه: CPMM من Initialize و InitializeWithPermission (الأخير هو ما تستخدمه تخرجات LaunchLab، لذا يتخرج نعناع مسجل وكذلك ينشئ)، CLMM من CreatePool، CreateCustomizablePool و CreatePermissionedPool.
الالتفافات المحذوفة
كلا الآليتين المشفرتين اختفتا من البرامج المنشورة. يتم توثيقها هنا فقط لأن التكاملات المكتوبة ضد السلوك الأقدم قد لا تزال تفترضها.MINT_WHITELIST الثابت — تم الحذف
كانت مصفوفة ثابتة من عناوين النعناع base58 تختصر is_supported_mint قبل تكرار الامتداد. احتفظت CLMM بستة عناوين وتم حذفها في 2026-07-24؛ احتفظت CPMM بأول أربعة من نفس المجموعة وتم حذفها في ترقية 2026-09-09.
مجمع موجود بالفعل لأحد هذه النعناعات يستمر في التداول — فحص النعناع يعمل فقط عند إنشاء المجمع. إنشاء مجمع جديد لأحدها الآن يتطلب سجل PDA له بدلاً من ذلك.
كشف شكل سلطة Superstate — تم الحذف
حدد CLMM بإيجاز أصول Superstate المرمزة بشكل رمزي من خلال شكل سلطتها بدلاً من العنوان: نعناع Token-2022 الذيfreeze_authority و المندوب الدائم كلاهما يساوي superstate_allowlist::ID، مع تعيين DefaultAccountState إلى Frozen، تم قبوله. كان استدلالاً، لذا أي نعناع مستقبلي بنفس الشكل كان سيتم قبوله تلقائيًا.
تم حذفه في 2026-07-31، جنبًا إلى جنب مع وحدة superstate_allowlist. ما حل محله أضيق وخدم غرضًا مختلفًا: frozen_position_nft_authorities::IDS، الذي لا يقبل أي شيء — يقرر ما إذا كان NFT موضع يتم تجميده، وموصوف أعلاه. سلطة المُصدر الوحيدة التي طابقها الكشف القديم هي الإدخال الوحيد في تلك القائمة.
ما لا تتنازل عنه الالتفافات
تتخطى الالتفافات قائمة سماح الامتداد، لكن البرنامج لا يزال يفرض:- النعناع مملوك بواسطة إما
TokenأوToken-2022. يتم رفض برنامج رمز مخصص في المنطقة العليا. - يتم إنشاء خزانات المجمع مع امتدادات ATA الصحيحة لمجمعات Token-2022 (
ImmutableOwner، إلخ). - جميع التحويلات تمر عبر
transfer_checked— نعناعات تحمل الرسوم تهبط المبلغ الصحيح في الخزان.
TransferHook لا يكتسب فحص وقت المبادلة؛ سيعمل الخطاف ببساطة على كل تحويل ويمكن أن يوقف المبادلات. تسجيل نعناع هو بالتالي إجراء عالي الثقة.
دلالات “محظور”
عندما يُرجعis_supported_mint false، يرتد إنشاء المجمع مع ErrorCode::NotSupportMint (CPMM) / ErrorCode::NotSupportMint (CLMM). انظر reference/error-codes للأكواد الرقمية.
لا يمكن للمجمعات الموجودة أن تفشل هذا الفحص بأثر رجعي — البوابة تعمل فقط عند الإنشاء. امتدادات النعناع غير قابلة للتغيير للفئات التي ترفضها Raydium (لا يمكن إضافة خطاف نقل، غير قابل للنقل، نقل سري بعد الإنشاء)، لذا فإن الفحص الثابت كافٍ.
لماذا يتم استبعاد كل امتداد
- TransferHook — يستدعي برنامجًا مخصصًا على كل نقل، مع استهلاك CU عشوائي، شروط فشل عشوائية، والقدرة على إعادة الدخول إلى البرنامج الاستدعاء. لا يوجد صندوق رمل آمن. تحتفظ بعض DEXes بقوائم سماح خطاف؛ Raydium لا.
- NonTransferable —
Transferيفشل دائمًا. لا يمكن للمجمع أن يأخذ الحراسة. - ConfidentialTransfer — مبالغ النقل مشفرة؛ المنحنى لا يمكنه تسعير المبادلة.
- PermanentDelegate — حامل المندوب يمكنه مسح أي حساب رمز، بما في ذلك خزان المجمع. مقبول فقط بتسجيل النعناع، وهو كيفية إدراج مُصدر موثوق (مثل عملة مستقرة منظمة) حالة تلو الأخرى.
- MintCloseAuthority — يمكن إغلاق النعناع؛ المجمعات الموجودة تصبح غير قابلة للاستخدام. محظور بشكل افتراضي.
- DefaultAccountState (Frozen) — ستهبط ATAs المجمع في حالة
Frozenوتتطلب إذابة لكل حساب. مقبول فقط بتسجيل النعناع، الذي يفترض أن المُصدر يذيب الحسابات المؤسسية عند التسجيل. - مؤشرات المجموعة/العضو — ليست ضارة بنشاط، لكن لم تُراجع. محظور بشكل افتراضي للحفاظ على السطح ضيقًا.
محاسبة رسوم النقل
بالنسبة للنعناعات التي تحملTransferFeeConfig، تنقل كل مبادلة وإيداع وسحب أقل من المبلغ الاسمي. يتم تضمين رقمان منفصلان، و SDK يبقيهما منفصلين:
- رسوم المجمع (LP + بروتوكول + صندوق + منشئ) تأتي من المنحنى.
raydium.cpmm.computeSwapAmount({ ... })يُرجعها كـfee، إلى جانبamountIn،amountOut،minAmountOut،executionPrice،priceImpactوالنتيجة الخامswapResult. - رسوم نقل Token-2022 تأتي من النعناع، وليس المجمع. يتم حسابها بواسطة مساعدات
getTransferAmountFeeفي@raydium-io/raydium-sdk-v2، التي تُرجعGetTransferAmountFee:
computePairAmount يُرجع inputAmountFee و anotherAmount كقيم GetTransferAmountFee.
واجهة مستخدم صحيحة تعرض:
- مبلغ الإدخال زائد رسوم النقل الخاصة به كـ “أنت ترسل”
- مبلغ الإخراج ناقص رسوم النقل الخاصة به كـ “أنت تستقبل”
- رسوم المجمع كسطر منفصل — إنها ليست رسوم Token-2022
amountIn → amountOut تقلل من التكاليف. مرر epochInfo من المجموعة إلى هذه المساعدات بدلاً من تخزينها مؤقتًا؛ الحقبة هي ما يختار بين تكوين الرسوم older و newer للنعناع.
حد maximumFee
يتم تحديد رسوم نقل Token-2022 لكل نقل. بالنسبة لنعناع 1% مع حد 10,000 رمز، يدفع نقل 100,000,000 رمز فقط 10,000 في الرسوم. يطبق SDK computeSwapAmount الحد؛ يجب على مستدعي البرنامج المباشر تكراره.
انتقال الحقبة
يمكن لسلطة النعناع جدولة تغيير معدل الرسوم الذي ينشط في الحقبة التالية. أثناء نافذة الانتقال، يعيش تكويناتان (older، newer) على النعناع في نفس الوقت و TransferChecked يختار حسب الحقبة الحالية. كل من CPMM SwapV2 و CLMM SwapV2 يمرران حساب النعناع الكامل في accounts، لذا يقرأ البرنامج التكوين الصحيح بدون بحث إضافي.
إذا اقتبست أكثر من حقبة واحدة مقدمًا عبر Trade API أو SDK، قد تختلف الرسوم المنفذة عن الرسوم المقتبسة — محدودة بـ maximum_fee_basis_points للتكوين الأقدم.
الفائدة والمبلغ المقياس في واجهة المستخدم
يحتفظ المجمع بالمبلغ الأساسي؛ “مبلغ واجهة المستخدم” هو المبلغ الأساسي مضروبًا في عامل قياس يعتمد على الوقت أو يعينه المسؤول. تعمل رياضيات المبادلة على الأساسي:pool.token0Vault.amount كأساسي.
تعريف “مجمع Token-2022”
مجمع هو مجمع Token-2022 إذا كان أي نعناع لهprogramId == TokenzQdB.... تسطح API هذا:
programId للإرسال، و hasTransferFee لسطح تحذير واجهة المستخدم.
مساعدات SDK
أخطاء التكامل الشائعة
- التحقق المسبق من معرف البرنامج فقط. يمكن أن يكون النعناع Token-2022 و غير مدعوم. امشِ قائمة الامتداد مقابل قائمة السماح، وتحقق من سجل PDA للنعناع، قبل السماح بإنشاء المجمع.
- الثقة في اقتباس SDK عندما لا يتم قبول النعناع على الإطلاق. API الاقتباس لا ترفض الاقتباس — إنشاء المجمع هو ما يرتد. أكد دلالات
is_supported_mintخارج السلسلة قبل فضح إنشاء المجمع في واجهة المستخدم الخاصة بك. - الاقتباس بدون خصم رسوم النقل. نعناع برسوم نقل 1% على كلا جانبي مجمع CPMM بنسبة 0.25% له رسوم فعالة حول 2.25%، وليس 0.25%. استخدم اقتباس SDK أو اقتباس Trade API — لا تحسب الرسوم يدويًا من مستوى رسوم المجمع وحده.
- استدعاء تعليمات
Swapالوراثية على مجمع Token-2022.Swapيسبق Token-2022. استخدمSwapV2كلما كان أي نعناع Token-2022. - إدراج نعناعات Token-2022 الجديدة تلقائيًا. يجب على المحافظ والمجمعات التحقق من
TransferHookوNonTransferableقبل سطح نعناع للمستخدمين؛ كلاهما معادٍ لـ Raydium.
العمل المستقبلي
عناصر خارطة الطريق للنظام البيئي Solana والبروتوكول التي ستغير هذه المصفوفة:- برامج خطاف نقل مسموحة على مستوى Solana (اتفاقية النظام البيئي تتطور).
- AMMs متوافقة مع النقل السري (مرحلة البحث).
- سجل نعناع CPMM أوسع لكل نعناع (التكافؤ مع CLMM).
- مسار قراءة عام للسجل، بحيث يمكن لواجهة المستخدم أن تخبر “غير مدعوم” من “غير مدعوم لكن مسجل” دون اشتقاق PDA نفسها.
مؤشرات
algorithms/token-2022-transfer-fees— رياضيات الرسوم في المبادلات.products/cpmm/instructions—SwapV2،Initialize.products/clmm/instructions—SwapV2،CreatePool،CreateSupportMintAssociated.reference/error-codes— أكوادNotSupportMintالرقمية لكل برنامج.
raydium-cp-swap/programs/cp-swap/src/utils/token.rs—is_supported_mint،support_mint_associated_is_initialized.raydium-clmm/programs/amm/src/util/token.rs—is_supported_mint،support_mint_associated_is_initialized،frozen_position_nft_authorities،position_nft_must_freeze.raydium-clmm/programs/amm/src/instructions/admin/create_support_mint_associated.rs— تعليمات سجل النعناع لكل نعناع.raydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs— إنشاء نعناع أساسي Token-2022 في LaunchLab.raydium-launchpad/programs/launchpad/src/instructions/admin/create_config.rs— ربط نعناع مقتبس LaunchLab (بدون فحص امتداد).

