Skip to main content
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
لا تقبل Raydium نعناعات Token-2022 عشوائية. يعمل كل من CPMM و CLMM في وضع قائمة سماح صارم: فقط مجموعة صغيرة من الامتدادات تمر بشكل افتراضي؛ كل شيء آخر يُرفض عند إنشاء المجمع. يقبل كل برنامج نعناعًا فرديًا من خلال آلية واحدة — سجل نعناع مُدار من قبل المسؤول لكل نعناع. كلا البرنامجين حملا أيضًا التفافات مشفرة في نقاط مختلفة؛ تم حذف كل تلك الآن. هذه الصفحة هي المرجع الموحد لما يُفرض وأين، مع استشهادات في مصدر البرنامج.

دعم على مستوى البرنامج

فحوصات قائمة السماح تعيش في: لا يوجد فحص نعناع في وقت المبادلة على CPMM أو CLMM — البوابة تُطلق فقط عند إنشاء المجمع. بمجرد وجود مجمع، تثق المبادلات فقط بأن النعناعات لم تتغير، وهو صحيح للأجزاء غير القابلة للتغيير من حالة نعناع Token-2022.

تجميد 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.
  • OpenPosition V1 لا يفتش نعناعات الخزان ولا يمكنه خدمة أصول 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.
هذا يجعل ربط نعناع مقتبس Token-2022 إجراءً عالي الثقة، للسبب نفسه تسجيل نعناع أدناه: نعناع مقتبس 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 يمر، وكل شيء آخر يجب أن يحمل فقط امتدادات مسموحة.

الالتفاف الوحيد: سجل النعناع لكل نعناع

يستشير كلا البرنامجين PDA SupportMintAssociated في البذرة [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 — نعناعات تحمل الرسوم تهبط المبلغ الصحيح في الخزان.
نعناع مسموح به أو مسجل PDA يضيف لاحقًا 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 للتكوين الأقدم.

الفائدة والمبلغ المقياس في واجهة المستخدم

يحتفظ المجمع بالمبلغ الأساسي؛ “مبلغ واجهة المستخدم” هو المبلغ الأساسي مضروبًا في عامل قياس يعتمد على الوقت أو يعينه المسؤول. تعمل رياضيات المبادلة على الأساسي:
يحول SDK تلقائيًا. يجب على قارئي RPC المباشرين معاملة 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 نفسها.
سيتم تحديث هذه الصفحة عند هبوط أي منها.

مؤشرات

المصادر:
  • 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 (بدون فحص امتداد).