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

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

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

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

تبقى حسابات NFT الموضع غير مجمدة بشكل افتراضي. يجمد CLMM واحداً فقط عندما يستخدم الموضع مسار V2 مفتوح و يطابق freeze_authority الحالي لعملة الخزان الواحدة على الأقل قائمة المُصدرين المقيدين المشفرة. تحتوي القائمة الأولية على نفس السلطة المستخدمة بواسطة مسار كشف Superstate أدناه. تعيين PDA المجمع كـ freeze authority لعملة NFT الموضع ليس بحد ذاته تجميداً. هذه قاعدة حفظ الموضع، وليست قائمة سماح إنشاء مجمع أخرى:
  • يمكن أن يكون المجمع موجوداً بالفعل ويبقى قابلاً للمبادلة.
  • تستخدم عملة NFT الموضع PDA مجمع CLMM كـ freeze authority الخاص بها؛ لا يتحكم المُصدر الأساسي في NFT الموضع.
  • OpenPositionV2 يغطي NFTs موضع SPL الكلاسيكي على أصول مجمع Token-2022. OpenPositionWithToken22Nft يغطي NFTs موضع Token-2022.
  • OpenPosition V1 لا يفتش عملات الخزان ولا يمكنه خدمة أصول Token-2022 المقيدة المستهدفة بالقائمة المرسلة.
  • المواضع الموجودة لم تتغير.
تبقى المواضع المجمدة قابلة للإدارة من قبل مالكها لكن لا يمكن نقلها. ClosePosition يذيب ويحرق بشكل ذري عندما يمرر العميل المجمع كأول حساب متبقي. انظر products/clmm/ticks-and-positions.

قائمة سماح امتدادات 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.
  • freeze_authority الخاص بها يساوي 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 في الرسم. تطبق 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 و غير مدعومة. امشِ قائمة الامتدادات مقابل قائمة السماح (وقائمة البيضاء الثابتة) قبل السماح بإنشاء المجمع.
  • الثقة في اقتباس 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.