Documentation Index
Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
Use this file to discover all available pages before exploring further.
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
معرّفات البرنامج وبذور PDA للـ CPMM مدرجة بشكل رسمي في
reference/program-addresses. تركز هذه الصفحة على الغرض من كل حساب والثوابت التي يحافظ عليها، وليس على العناوين المشفرة.الحسابات الستة لمجموعة CPMM
يتم وصف كل مجموعة CPMM بالكامل من خلال ستة عناوين مشتقة من البرنامج (PDAs) تحت برنامج CPMM، بالإضافة إلى حسابAmmConfig مشترك واحد يُشير إليه. بمجرد حصولك على الـ mint الاثنين، يمكنك اشتقاق كل شيء بشكل حتمي دون لمس الشبكة.
| الحساب | البذرة(ات) | المالك | الغرض |
|---|---|---|---|
authority | "vault_and_lp_mint_auth_seed" | CPMM | الموقّع لكل حركة خزينة وكل عملية mint/burn من LP. مشترك عبر جميع مجموعات CPMM. |
poolState | "pool"، ammConfig، token0Mint، token1Mint أو أي زوج مفاتيح عشوائي يوفره الموقّع | CPMM | هيكل حالة المجموعة — زوج mint والأرصدة في الخزائن وإمداد LP وتراكم الرسوم وموقّع المراقبة. تقبل تعليمات CPMM Initialize إما PDA الكنسي المشتق من البذور الأربع أو زوج مفاتيح تعسفي موقّع من قِبل المُنشئ. يوجد مسار زوج المفاتيح العشوائي لهزيمة هجوم front-running حيث يراقب خصم المجموعة الذاكرة ويتسابق لاحتلال PDA الكنسي قبل المُنشئ الشرعي. |
lpMint | "pool_lp_mint"، poolState | SPL Token | رمز LP للمجموعة. الإمداد = إجمالي LP المعترف به. سلطة mint = CPMM authority PDA. |
vault0 | "pool_vault"، poolState، token0Mint | SPL Token / Token-2022 | يحتفظ برصيد المجموعة من token0. مملوك بواسطة authority PDA. |
vault1 | "pool_vault"، poolState، token1Mint | SPL Token / Token-2022 | يحتفظ برصيد المجموعة من token1. مملوك بواسطة authority PDA. |
observation | "observation"، poolState | CPMM | حلقة مخزن مؤقت من عينات الأسعار المستخدمة للـ TWAP. يتم الكتابة في كل swap. |
| الحساب | البذرة(ات) | المالك | الغرض |
|---|---|---|---|
ammConfig | "amm_config"، index: u16 | CPMM | يحتفظ برسوم التداول والبروتوكول والصندوق والمُنشئ والمفاتيح الإدارية. واحد لكل “طبقة رسوم”. يرتبط poolstate بواحدة عند الإنشاء ولا يمكن تغييره لاحقاً. |
استخراج مجموعة من لا شيء سوى اثنين من mints
معرّف المجموعة ليس دائماً الـ PDA الكنسي. تقبل
Initialize زوج مفاتيح موقّع تعسفي كـ pool_state بالإضافة إلى PDA أعلاه. إذا لم يطابق الحساب المُمرر الـ PDA الكنسي، يتطلب البرنامج أن يكون موقّعاً — أي يمرر المُنشئ زوج مفاتيح جديد يوقّعون به. هذا هو الدفاع ضد front-running: يمكن لأي طرف ثالث يتسابق لالتقاط الـ PDA الكنسي أن يتم تجاوزه من قِبل المُنشئ الشرعي باستخدام زوج مفاتيح عشوائي بدلاً من ذلك. يتم اشتقاق الـ PDAs اللاحقة (lpMint، vault0، vault1، observation) من poolState.key()، لذا تبقى فريدة لأي عنوان تم استخدامه. عندما تقوم بفهرسة المجموعات، قم دائماً باكتشاف معرّف المجموعة من الحالة على السلسلة (مثل حسابات PoolState تحت برنامج CPMM)، وليس بمحاولة استخراج الـ PDA الكنسي — سيفقد الأخير مجموعات أزواج المفاتيح العشوائية.تخطيطات الحساب
تعيش التعريفات الكاملة لـ Rust في مصدرraydium-cp-swap. الحقول أدناه هي التي ستقرأها من التكامل.
PoolState
lp_supply— مرآة داخلية للمجموعة لإجمالي إمداد LP mint. استخدمه لرياضيات LP-share؛ يجب أن تطابق القيمة الإمداد على السلسلة من mint، لكن قراءتها منPoolStateتتجنب جلب حساب إضافي.protocol_fees_token{0,1}،fund_fees_token{0,1}— الرسوم المتراكمة التي لم يتم حصدها بعد. هذه لا تؤثر على تسعير swap؛ تجلس في الخزائن حتى استدعاءCollectProtocolFee/CollectFundFee.status— قناع بت يتحكم في السماح بـSwapوDepositوWithdraw. تم تحديثه بواسطة الإدارة عبرUpdatePoolStatus. يتحقق الـ SDK من هذا قبل بناء معاملة؛ إذا كنت تقوم بـ CPI مباشرة، تحقق منها بنفسك.token0_program/token1_program— برنامج الرمز للـ CPI في لكل خزينة. يمكن لأحدهما أن يكون SPL Token الكلاسيكي والآخر Token-2022؛ يكونان مستقلين.open_time— طابع زمني Unix. يفشل swaps قبل هذا الوقت. يُسمح بالإيداعات قبلopen_timeحتى يمكن زرع المجموعة.creator_fee_on/enable_creator_fee— معاً يتحكمان في ما إذا كانت رسوم المُنشئ الاختيارية نشطة لهذه المجموعة وأي جانب من swap يتم جمعها.enable_creator_fee == falseيصفر مسار رسوم المُنشئ بالكامل. عند التفعيل، يختارcreator_fee_on:0= خذ الرسم من أي رمز هو مدخل swap (BothToken)؛1= خذ الرسم منtoken_0فقط (تخطي في swapstoken_1 → token_0)؛2= خذ الرسم منtoken_1فقط. تم التعيين عند إنشاء المجموعة عبرInitializeWithPermission؛ لا يمكن تغييره لاحقاً.creator_fees_token_{0,1}— الرسوم المتراكمة للمُنشئ، يتم حصدها بواسطةCollectCreatorFee.
AmmConfig
trade_fee_rateوcreator_fee_rateهما كسور من الحجم، كلاهما مقسم بوحدات1/1_000_000.2500تعني 0.25% من حجم التداول.protocol_fee_rateوfund_fee_rateهما كسور من رسوم التداول (وليس من الحجم)، بنفس مقسم1/1_000_000. رسوم المُنشئ ليست كسراً من رسوم التداول — فهي معدل مستقل خاص بها. الحسابات الكاملة موجودة فيproducts/cpmm/fees.indexهوu16، لذا تستخدم بذرة الـ hash 2 بايت بترتيب big-endian. عدم التطابق على ترتيب البايت هو خطأ تكامل شائع.AmmConfigثابت على مستوى المجموعة. تشير المجموعة إلىAmmConfigواحد عند الإنشاء ولا تتحول أبداً. تنتشر تغييرات الرسوم لأن المجموعة تقرأ الإعدادات في كل swap — لكن المجموعة لا يمكن نقلها بين طبقات الرسوم.
creator_fee_rate) يعيش على AmmConfig ومشترك عبر طبقة الرسوم. ما إذا كانت مجموعة معينة تفرضها فعلاً (enable_creator_fee) وأي جانب من swap تقع عليه (creator_fee_on) يعيش على PoolState. رسوم المُنشئ مستقلة عن رسوم التداول — فهي معدل خاص بها، متراكمة على عدادات خاصة بها (creator_fees_token_{0,1})، وأبداً لا تقلل من أسهم LP / البروتوكول / الصندوق من رسوم التداول. الحصد عبر CollectCreatorFee. انظر products/cpmm/fees للميكانيكا الكاملة.
Permission
حساب تحكم الوصول الصغير المستخدم بواسطة InitializeWithPermission. يدعم برنامج CPMM مسار إنشاء مجموعة محدود بحيث يمكن للبرامج الأخرى (على سبيل المثال LaunchLab عند تخريج رمز إلى CPMM) إثبات أنهم مخوّلون بإنشاء مجموعة ضد AmmConfig معين.
CreatePermissionPda وإلغاء صلاحيته عبر ClosePermissionPda. لا يتفاعل المستخدمون النهائيون مع هذا الحساب مباشرة — إنه أنابيب لتدفقات برنامج متقاطع.
الخزائن و Token-2022
يمتلكvault0 و vault1 CPMM authority PDA، وفي حين أن مالك برنامج الرمز (token_program) هو إما SPL Token أو Token-2022، تم تحديده عند إنشاء المجموعة ببرنامج mint. تتعامل المجموعة مع الحالتين بشفافية — يمكنك تمرير معرّف برنامج الرمز الصحيح لكل جانب في حسابات تعليمات Swap / Deposit / Withdraw.
تفرض CPMM قائمة سماح امتدادات صارمة عند إنشاء المجموعة (is_supported_mint في utils/token.rs). يمكن استخدام mint Token-2022 في مجموعة CPMM فقط إذا كان كل امتداد يحمله موجود على هذه القائمة:
TransferFeeConfig. يتم تطبيقه بواسطة mint في كل نقل. المجموعة على الجانب المستقبل لإيداعاتSwapBaseInputوالجانب الإرسال للانسحابات. يقوم البرنامج بحساب الكمية الصافية الهابطة في الخزينة ويعيّن المنحنى وفقاً لذلك. انظرalgorithms/token-2022-transfer-fees.MetadataPointerوTokenMetadata. البيانات الوصفية المعيارية على mint. لا تأثير على رياضيات swap.InterestBearingConfig. يتراكم مبلغ واجهة المستخدم في mint الفائدة. الخزينة تخزن مبالغ خام؛ المنحنى يعمل على مبالغ خام فقط. يجب على الواجهات التي تعرض APR استدعاء مساعدات Token-2022 لتقديم مبلغ الواجهة.ScaledUiAmount. امتداد تحجيم عرض الواجهة. معاملة نفسInterestBearingConfig— يستخدم المنحنى مبالغ خام.
PermanentDelegate، TransferHook، DefaultAccountState، NonTransferable، ConfidentialTransfer، Group/GroupMember، MintCloseAuthority، إلخ. — يسبب Initialize في الرفض مع NotSupportMint. الاستثناء هو قائمة mint بيضاء صغيرة مشفرة في البرنامج (حفنة من pubkeys محددة) تتجاوز فحص الامتداد؛ يتم استخدامها لتوزيع mints محددة حسب الحالة.
تعيش قائمة الامتدادات المدققة وقائمة بيضاء mint في مصدر CP-Swap ضمن programs/cp-swap/src/utils/token.rs ويمكن أن تتغير مع ترقيات البرنامج المستقبلية.
المراقبة
حساب المراقبة هو حلقة مخزن مؤقت لإدخالاتObservationState، تخزن كل واحدة block_timestamp و سعر تراكمي. في كل swap، يقوم البرنامج بإضافة ملاحظة جديدة إذا مر وقت كاف منذ آخر ملاحظة. يتم حساب TWAPs بقراءة ملاحظتين وقسم Δcumulative / Δtime.
ObservationState PDA الكامل حوالي 4,100 بايت بعد الحقول المحيطة والمميز.
قاعدتا مستهلك:
- لا تستخدم ملاحظة واحدة كسعر. إنها تراكمية، وليست سعر فوري. استخدم اثنتين منهما لحساب TWAP.
- اختر ملاحظات على الأقل كتلة واحدة بعيدة. قد لا تُنتج swaps داخل نفس الكتلة ملاحظة جديدة؛ القراءة المتتالية يمكن أن تعود السجل نفسه.
products/clmm/accounts.
دورة حياة الحساب
| الحدث | الحسابات التي تم إنشاؤها | الحسابات المحذوفة |
|---|---|---|
Initialize | poolState، lpMint، vault0، vault1، observation | — |
Deposit | — (قد تنشئ ATA LP للمستخدم) | — |
Withdraw | — | — |
Swap | — (قد تنشئ ATA وجهة المستخدم) | — |
CollectProtocolFee | — | — |
CollectFundFee | — | — |
UpdatePoolStatus | — | — |
poolState يبقى. هذا مقصود: إعادة زراعة نفس المجموعة لاحقاً تحافظ على مخزن المراقبة التاريخي و مشتقات PDA تبقى مستقرة.
ما يجب قراءته من أين
- قوائم حسابات التعليمات (أيّ من الحسابات أعلاه قابلة للكتابة/موقّعة لكل تعليمة):
products/cpmm/instructions. - دلالات تراكم الرسوم:
products/cpmm/fees. - رياضيات swap / قاعدة تحديث المراقبة:
products/cpmm/math. - البذور الكنسية / معرّفات البرنامج:
reference/program-addresses.


