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

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

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

تجميد NFT موضع CLMM للمُصدرين المقيدين

حسابات NFT الموضع تبقى غير مجمدة بشكل افتراضي. CLMM تجمد واحداً فقط عندما يستخدم الموضع مسار V2 مفتوح و يطابق freeze_authority الحالي لعملة الخزان الواحدة على الأقل قائمة المُصدرين المقيدين المشفرة. تحتوي القائمة الأولية على نفس السلطة المستخدمة بواسطة مسار كشف Superstate أدناه. تعيين PDA مجمع المجمع كسلطة تجميد عملة NFT الموضع ليس بحد ذاته تجميداً. هذه قاعدة حفظ الموضع، وليست قائمة سماح أخرى لإنشاء المجمع:
  • يمكن أن يكون المجمع موجوداً بالفعل ويبقى قابلاً للمبادلة.
  • تستخدم عملة NFT الموضع PDA مجمع CLMM كسلطة تجميد خاصة بها؛ المُصدر الأساسي لا يتحكم في NFT الموضع.
  • OpenPositionV2 يغطي NFTs موضع SPL Token الكلاسيكي على أصول مجمع 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 المكون للمنصة من إنشاء العملة فصاعداً — برنامج launchpad نفسه ليس لديه تعليمات سحب محتفظ به. انظر products/launchlab/platform-config.
  • عملة الاقتباس — LaunchLab لا تنشئها ولا تفحصها. CreateConfig يقبل حساب العملة كما هو، لذا لا يوجد ما يعادل is_supported_mint على جانب الاقتباس. البوابة الوحيدة هي العملات التي يختار مسؤول ربطها بـ GlobalConfig.
هذا يجعل ربط عملة اقتباس Token-2022 إجراءً عالي الثقة، بنفس المنطق مثل قوائم CPMM و CLMM البيضاء الثابتة أدناه: عملة اقتباس 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 بالإضافة إلى ذلك يستشير PDA SupportMintAssociated في البذرة [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).
التأثير: فريق CLMM يمكنه اختيار عملة Token-2022 محددة لإنشاء المجمع بدون ترقية برنامج. CPMM ليس لديه ما يعادل — قائمة السماح الخاصة به مشفرة بشكل صارم في المصدر.

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.
هذا هو كشف استدلالي، وليس سجل — أي عملة مستقبلية تصدرها Superstate بنفس شكل السلطة ستُقبل تلقائياً.

ما لا تتنازل عنه التجاوزات

التجاوزات تتخطى قائمة امتدادات السماح، لكن البرنامج لا يزال يفرض:
  • العملة مملوكة إما بواسطة 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 (transfer hook، non-transferable، confidential transfer لا يمكن إضافتها بعد الإنشاء)، لذا الفحص الثابت كافي.

لماذا يتم استبعاد كل امتداد

  • TransferHook — يستدعي برنامج مخصص على كل تحويل، مع استهلاك CU عشوائي، شروط فشل عشوائية، والقدرة على إعادة الدخول إلى البرنامج الاستدعاء. لا يوجد صندوق رمل آمن. بعض DEXes تحتفظ بقوائم سماح الخطاف؛ Raydium لا.
  • NonTransferableTransfer يفشل دائماً. المجمع لا يمكنه أخذ الحضانة.
  • 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 للتكوين الأقدم.

الفائدة والمبلغ المقياس

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

المؤشرات

المصادر:
  • raydium-cp-swap/programs/cp-swap/src/utils/token.rsMINT_WHITELIST, is_supported_mint.
  • raydium-clmm/programs/amm/src/util/token.rsMINT_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 (بدون فحص امتداد).