هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
Raydium لا تقبل عملات Token-2022 عشوائية. كل من CPMM و CLMM يعملان في وضع قائمة صارمة: فقط مجموعة صغيرة من الامتدادات تمر بشكل افتراضي؛ كل شيء آخر يُرفض عند إنشاء المجمع. يتم قبول حفنة من العملات الموثوقة بواسطة عنوان مشفر؛ CLMM يدعم بالإضافة إلى ذلك سجل إداري لكل عملة وكشف رمز Superstate في وقت التشغيل. هذه الصفحة هي المرجع الشامل لما يتم فرضه وأين، مع استشهادات الملف والسطر في مصدر البرنامج.
دعم على مستوى البرنامج
فحوصات قائمة السماح تعيش في:
- CPMM:
is_supported_mintفيraydium-cp-swap/programs/cp-swap/src/utils/token.rs:178، يُستدعى منInitialize. - CLMM:
is_supported_mintفيraydium-clmm/programs/amm/src/util/token.rs:280، يُستدعى منCreatePool. - LaunchLab:
initialize_with_token_2022فيraydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs(المصدر غير متاح للعموم).
تجميد NFT موضع CLMM للمُصدرين المقيدين
حسابات NFT الموضع تبقى غير مجمدة بشكل افتراضي. CLMM تجمد واحداً فقط عندما يستخدم الموضع مسار V2 مفتوح و يطابقfreeze_authority الحالي لعملة الخزان الواحدة على الأقل قائمة المُصدرين المقيدين المشفرة. تحتوي القائمة الأولية على نفس السلطة المستخدمة بواسطة مسار كشف Superstate أدناه. تعيين PDA مجمع المجمع كسلطة تجميد عملة NFT الموضع ليس بحد ذاته تجميداً. هذه قاعدة حفظ الموضع، وليست قائمة سماح أخرى لإنشاء المجمع:
- يمكن أن يكون المجمع موجوداً بالفعل ويبقى قابلاً للمبادلة.
- تستخدم عملة NFT الموضع PDA مجمع CLMM كسلطة تجميد خاصة بها؛ المُصدر الأساسي لا يتحكم في NFT الموضع.
OpenPositionV2يغطي NFTs موضع SPL Token الكلاسيكي على أصول مجمع 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المكون للمنصة من إنشاء العملة فصاعداً — برنامج launchpad نفسه ليس لديه تعليمات سحب محتفظ به. انظر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:190–200
مسارات التجاوز
عملة Token-2022 التي لا تناسب قائمة السماح يمكن أن تُقبل بعد كل ذلك عبر أحد ثلاثة تجاوزات صريحة. يتم محاولتها بالترتيب، قبل تشغيل تكرار الامتداد.1. قائمة العملات الثابتة البيضاء
مصفوفة ثابتةMINT_WHITELIST من سلاسل base58 مشفرة في كل برنامج. إذا طابق عنوان العملة، تعيد الدالة true فوراً ولا يتم إجراء فحص امتداد.
هذه العناوين مدمجة في البرنامج؛ تحديث القائمة يتطلب ترقية برنامج عبر multisig الترقية 3/4.
2. سجل لكل عملة — CLMM فقط
CLMM بالإضافة إلى ذلك يستشير PDASupportMintAssociated في البذرة [b"support_mint", mint]. إذا كان هذا PDA موجوداً للعملة، يتم قبولها بغض النظر عن مجموعة الامتدادات الخاصة بها.
يتم إنشاء PDA بواسطة CreateSupportMintAssociated (admin/create_support_mint_associated.rs). التعليمات مقيدة بموقعين:
crate::admin::ID— سلطة مسؤول Raydium القياسية.crate::create_support_mint_associated_owner::ID— سلطة مخصصة لهذا الغرض:RayVyjyJQz9vAi126A4sGexKnSU1XeZaHTRcM1mZMPY(mainnet),rayf3nEbb3bnfN6RDGFpqPbjc5uUa3tRUzu6UVYrRx5(devnet).
3. كشف Superstate — CLMM فقط
CLMM لديها مسار ثالث خاص بأصول Superstate المرمزة، التي تستخدم امتدادScaledUiConfig الذي لا يمكن لإصدار spl-token-2022 المرتبط ببرنامج CLMM فك تشفيره. بدلاً من ترقية الاعتماد، CLMM تكتشف رموز Superstate من خلال شكل سلطتها:
raydium-clmm/programs/amm/src/util/token.rs:485
عملة تمر هذا الفرع إذا كانت جميع الأربعة صحيحة:
- برنامجها المالك هو برنامج Token-2022.
- سلطة التجميد الخاصة بها تساوي
superstate_allowlist::ID. انظرreference/program-addressesلقيم mainnet-beta و devnet. - امتداد
DefaultAccountStateالخاص بها مضبوط علىFrozen. - المندوب الدائم الخاص بها هو أيضاً
superstate_allowlist::ID.
ما لا تتنازل عنه التجاوزات
التجاوزات تتخطى قائمة امتدادات السماح، لكن البرنامج لا يزال يفرض:- العملة مملوكة إما بواسطة
TokenأوToken-2022. برنامج رمز مخصص يُرفض في المنبع. - يتم إنشاء خزانات المجمع مع امتدادات ATA الصحيحة لمجمعات Token-2022 (
ImmutableOwner، إلخ). - جميع التحويلات تمر عبر
transfer_checked— عملات تحمل الرسوم تهبط المبلغ الصحيح في الخزان.
TransferHook لاحقاً لا تكتسب فحص وقت المبادلة؛ الخطاف سيعمل ببساطة على كل تحويل ويمكن أن يوقف المبادلات. التدرج في القائمة البيضاء هو بالتالي إجراء عالي الثقة.
دلالات “محظور”
عندما تعيدis_supported_mint false، يعود إنشاء المجمع مع ErrorCode::NotSupportMint (CPMM) / ErrorCode::NotSupportMint (CLMM). انظر reference/error-codes للأكواد الرقمية.
المجمعات الموجودة لا يمكن أن تفشل هذا الفحص بأثر رجعي — البوابة تعمل فقط عند الإنشاء. امتدادات العملة غير قابلة للتغيير للفئات التي ترفضها Raydium (transfer hook، non-transferable، confidential transfer لا يمكن إضافتها بعد الإنشاء)، لذا الفحص الثابت كافي.
لماذا يتم استبعاد كل امتداد
- TransferHook — يستدعي برنامج مخصص على كل تحويل، مع استهلاك CU عشوائي، شروط فشل عشوائية، والقدرة على إعادة الدخول إلى البرنامج الاستدعاء. لا يوجد صندوق رمل آمن. بعض DEXes تحتفظ بقوائم سماح الخطاف؛ Raydium لا.
- NonTransferable —
Transferيفشل دائماً. المجمع لا يمكنه أخذ الحضانة. - ConfidentialTransfer — مبالغ التحويل مشفرة؛ المنحنى لا يمكنه تسعير المبادلة.
- PermanentDelegate — حامل المندوب يمكنه مسح أي حساب رمز، بما في ذلك خزان المجمع. مسموح به فقط عبر القائمة البيضاء الثابتة للمُصدرين الموثوقين (مثل العملات المستقرة المنظمة).
- MintCloseAuthority — يمكن إغلاق العملة؛ المجمعات الموجودة تصبح غير قابلة للاستخدام. محظور بشكل افتراضي.
- DefaultAccountState (Frozen) — ATAs المجمع ستهبط في حالة
Frozenوتتطلب إذابة لكل حساب. مسموح به فقط عبر كشف Superstate، الذي يفترض أن المُصدر يذيب الحسابات المؤسسية عند التسجيل. - مؤشرات المجموعة/العضو — ليست ضارة بنشاط، لكن غير مراجعة. محظورة بشكل افتراضي للحفاظ على السطح ضيقاً.
محاسبة رسوم التحويل
بالنسبة للعملات التي تحملTransferFeeConfig، كل مبادلة وإيداع وسحب يحرك أقل من المبلغ الاسمي. SDK يسطح كلا نصفي الحساب:
amountIn + token2022FeeInكـ “أنت ترسل”amountOut - token2022FeeOutكـ “أنت تستقبل”feeAmountكرسوم المجمع (LP + بروتوكول)، وهي منفصلة عن رسوم تحويل Token-2022
amountIn → amountOut تقلل من التكاليف.
حد maximumFee
رسوم تحويل Token-2022 مقيدة لكل تحويل. بالنسبة لعملة 1% مع حد 10,000 رمز، تحويل 100,000,000 رمز يدفع فقط 10,000 في الرسوم. computeSwapAmount من SDK يطبق الحد؛ المتصلون المباشرون بالبرنامج يجب أن يكررونه.
انتقال الحقبة
سلطة العملة يمكنها جدولة تغيير معدل الرسوم الذي ينشط في الحقبة التالية. خلال نافذة الانتقال، تعيش تكوينات اثنتان (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 و غير مدعومة. امشِ قائمة الامتدادات مقابل قائمة السماح (والقائمة البيضاء الثابتة) قبل السماح بإنشاء المجمع.
- الثقة في اقتباس 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 والبروتوكول التي ستغير هذه المصفوفة:- برامج transfer-hook مدرجة في قائمة السماح على مستوى Solana (اتفاقية النظام البيئي تتطور).
- AMMs متوافقة مع confidential-transfer (مرحلة البحث).
- سجل CPMM لكل عملة أوسع (التكافؤ مع CLMM).
- ترقية الاعتماد بحيث يعمل فك تشفير
ScaledUiConfigمن CLMM بدون كشف Superstate الاستدلالي.
المؤشرات
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—MINT_WHITELIST,is_supported_mint.raydium-clmm/programs/amm/src/util/token.rs—MINT_WHITELIST,superstate_allowlist,is_superstate_token,is_supported_mint.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 (بدون فحص امتداد).

