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.
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
رسمان مستقلان، أربع وجهات
يفرض CPMM رسمين بمعدلات منفصلة على كل مبادلة:- رسم التداول — يُحتسب بـ
AmmConfig.trade_fee_rateوينقسم إلى ثلاث وجهات:- حصة مزود السيولة (LP) — تبقى في الخزينة وتزيد
k. يتم المطالبة بها ضمنيًا بحرق رموز LP. - حصة البروتوكول — تُستحق على
PoolState.protocol_fees_token*؛ يتم جمعها بواسطةprotocol_ownerعبرCollectProtocolFee. - حصة الصندوق — تُستحق على
PoolState.fund_fees_token*؛ يتم جمعها بواسطةfund_ownerعبرCollectFundFee.
- حصة مزود السيولة (LP) — تبقى في الخزينة وتزيد
- رسم المنشئ (اختياري، لكل pool) — يُحتسب بـ
AmmConfig.creator_fee_rateبشكل مستقل عن رسم التداول، يُستحق علىPoolState.creator_fees_token*، يتم جمعه بواسطةpool_state.pool_creatorعبرCollectCreatorFee. يكون نشطًا فقط عندما تم إنشاء pool باستخدامenable_creator_fee = true.
trade_fee فقط، لا من creator_fee. يفرض pool بـ creator_fee_rate = 1000 (0.10%) و trade_fee_rate = 2500 (0.25%) رسمًا مجمعًا بنسبة 0.35% من المدخل على مبادلة “creator-fee-on-input”، منها يحتفظ المنشئ بـ 0.10% وتحصل سلة رسم التداول على 0.25%.
معدلات رسم التداول (trade_fee_rate, protocol_fee_rate, fund_fee_rate) و creator_fee_rate موجودة جميعها على AmmConfig. العلم لكل pool enable_creator_fee وموضع creator_fee_on (أي جانب من التداول يتم أخذ رسم المنشئ منه) موجودان على PoolState. انظر products/cpmm/accounts.
المعدلات والوحدات
جميع المعدلاتu64s موصوفة بوحدات 1 / FEE_RATE_DENOMINATOR حيث FEE_RATE_DENOMINATOR = 1_000_000.
trade_fee_rateهو جزء من حجم المبادلة.2500⇒ 0.25% من الجانب ذي الصلة (مدخل أو مخرج، حسبcreator_fee_on— انظر “أي جانب من التداول يتم أخذ الرسوم منه” أدناه).creator_fee_rateهو جزء من حجم المبادلة، يتم أخذه بشكل منفصل عن رسم التداول.1000⇒ 0.10% من الجانب ذي الصلة.protocol_fee_rateوfund_fee_rateهما نسبتان من رسم التداول، وليس من الحجم.120_000⇒ 12% من رسم التداول.
AmmConfig[index=0] (pool “المعياري” 0.25%) على mainnet، للمرجعية:
| الحقل | القيمة | النسبة المئوية الفعلية |
|---|---|---|
trade_fee_rate | 2500 | 0.25% من الحجم (سلة رسم التداول) |
protocol_fee_rate | 120000 | 12% من رسم التداول ≈ 0.030% من الحجم |
fund_fee_rate | 40000 | 4% من رسم التداول ≈ 0.010% من الحجم |
creator_fee_rate | 0 (افتراضي) | 0% (سلة منفصلة) |
| → حصة LP الفعلية | 0.210% من الحجم |
AmmConfig[0] مع enable_creator_fee = false: $2.50 إجمالي رسم التداول، منها $2.10 تبقى مع مزودي السيولة، $0.30 تذهب للبروتوكول، $0.10 للصندوق. سلة المنشئ هي 0 لأن رسم المنشئ معطّل.
إذا كان نفس pool به enable_creator_fee = true و creator_fee_rate = 1000 (0.10%)، يدفع المستخدم إضافي $1.00 لسلة المنشئ — يتم أخذه من نفس جانب التداول المُعدّ بواسطة creator_fee_on — لإجمالي $3.50 من الرسوم. سلة رسم التداول وانقساماتها بين البروتوكول والصندوق تبقى دون تغيير.
تأكد من القيم الحالية على mainnet مقابل GET https://api-v3.raydium.io/main/cpmm-config — المعدلات قابلة للتغيير من قبل المسؤول وينبغي قراءتها بشكل طازج بدلاً من برمجتها.
الانقسام، في الكود
- إجمالي الرسم على المدخل يقرّب لأعلى بحيث لا يقل البروتوكول أبدًا.
- الانقسامات الفرعية لـ
trade_fee(بروتوكول، صندوق) تقرّب لأسفل بحيث لا يتجاوز مجموعهماtrade_fee؛ البقية هي حصة LP. lp_share = trade_fee − protocol_fee − fund_fee(creator_fee لا يُطرح هنا لأنه سلة خاصة به).- يتم أخذ رسم المنشئ من المدخل أو المخرج حسب
PoolState.creator_fee_on(انظر القسم التالي). المعدل لا يتغير في كلا الحالتين.
أي جانب من التداول يتم أخذ الرسوم منه
يحتوي CPMM على إعداد لكل pool يسمىcreator_fee_on (BothToken / OnlyToken0 / OnlyToken1) يحدد ما إذا كان رسم المنشئ يتم أخذه من جانب المدخل أو جانب المخرج من مبادلة معينة. دالة المساعد في وقت التشغيل is_creator_fee_on_input(direction) تختصرها إلى قيمة منطقية لكل مبادلة:
creator_fee_on | مبادلة 0 → 1 | مبادلة 1 → 0 |
|---|---|---|
BothToken (0) | جانب المدخل | جانب المدخل |
OnlyToken0 (1) | جانب المدخل | جانب المخرج |
OnlyToken1 (2) | جانب المخرج | جانب المدخل |
amount_in قبل تشغيل المنحنى. رياضيات الاقتباس: أزل trade_rate + creator_rate من المدخل.
عندما يكون رسم المنشئ على جانب المخرج، يتم خصم رسم التداول فقط من amount_in؛ ينتج المنحنى مخرجًا بدون رسم، ثم يتم خصم رسم المنشئ من هذا المخرج. رياضيات الاقتباس: أزل trade_rate من المدخل؛ أزل creator_rate من المخرج.
رسم التداول نفسه يتم أخذه دائمًا من جانب المدخل (نمط Uniswap-V2 المعياري). فقط رسم المنشئ يمكن أن ينتقل إلى المخرج.
كيف تتفاعل رسوم “المستحقة” مع المنحنى
دقة مهمة: رسوم البروتوكول والصندوق والمنشئ تبقى فيزيائيًا في الخزينة حتى يتم استدعاء تعليمةCollect* الخاصة بها. لكن يتم استبعادها من رؤية المنحنى لرصيد الخزينة.
صورة ملموسة بعد مبادلة واحدة:
curve_x (والمثيل المماثل curve_y) عند فرض k' ≥ k. هذه هي الطريقة التي تصل بها رسوم غير LP إلى وجهاتها بدون تضخيم حصة LP من البركة.
العواقب التي يجب أن تصمم حولها:
- الاقتباس من الأرصدة الخام خطأ. إذا بنيت quoter على
getTokenAccountBalance، ستبالغ باستمرار في سعر البركة. اطرح دائمًا الرسوم المستحقة، أو محاكي عبرSwapBaseInput/ الـ API. CollectProtocolFeeلا يحرك السعر. ينقل الرموز خارج الخزينة و يصفر عداداتprotocol_fees_token*، لذاcurve_xوcurve_yلم تتغير.- رسوم LP لا تستحق على عداد. إنها ضمنية في رصيد الخزينة. استحقاق LP للرسوم LP المتراكمة يتم ممارسته بحرق رموز LP (أي عبر
Withdraw) — لا يوجدCollectLpFee.
التفاعل مع رسوم نقل Token-2022
يتم تطبيق رسوم نقل Token-2022 من قبل الرموز، وليس من قبل CPMM. تعمل على كل نقل رموز — مبادلة، إيداع، سحب، وعمليات جمعCollect*. يتم حساب رياضيات رسم التداول في CPMM مقابل المبلغ الذي وصل فعلاً إلى الخزينة، أي بعد خصم رسم نقل مدخل الرموز (إن وجد).
لذا في أسوأ الحالات يدفع المستخدم ثلاث ضرائب متميزة على مبادلة input-exact:
- رسم نقل مدخل الرموز على
amount_in(لسلطة رسوم الرموز). trade_feeالبركة على البقية (مقسم كما هو أعلاه).- رسم نقل مخرج الرموز على
amount_out(لسلطة رسوم الرموز).
minimum_amount_out موصوف بما يستقبله المستخدم فعلاً. إذا كنت تكتب quoter خاص بك، اعكس هذا السلوك، أو ستكون عمليات فحص الانزلاق لديك متساهلة بشكل منهجي.
انظر algorithms/token-2022-transfer-fees للاشتقاق التفصيلي.
رسم المنشئ
رسم المنشئ اختياري ولكل pool. المعدل موجود علىAmmConfig.creator_fee_rate؛ العلم التفعيل و الجانب (creator_fee_on) موجودان على PoolState:
- تفعيل عند إنشاء البركة.
Initializeيعيّنenable_creator_fee = falseافتراضيًا؛ يمكن للبرك المنشأة عبرInitializeWithPermission(المستخدمة بواسطة تخرجات LaunchLab والطرق المحمية الأخرى) أن تمررenable_creator_fee = trueواختيارcreator_fee_on. - المعدل مشترك مع طبقة الرسم. المعدل نفسه هو
AmmConfig.creator_fee_rate، نفس القيمة عبر كل بركة مرتبطة بهذا التكوين. يقرر كل pool بعد ذلك ما إذا كان سيفرضه (enable_creator_fee) وأي جانب من المبادلة سيفرضه عليه (creator_fee_on). عندماenable_creator_fee = false، معدل رسم المنشئ الفعلي للبركة هو صفر بغض النظر عن قيمة التكوين (انظرPoolState::adjust_creator_fee_rateفي المصدر). - مستقل عن رسم التداول. رسم المنشئ لا يقلل أبدًا من حصص LP / البروتوكول / الصندوق — إنه معدله الخاص، يُطبق بشكل منفصل، يُستحق في عدادات خاصة به.
- يتم جمعه عبر
CollectCreatorFee، موقّع من قبلPoolState.pool_creator. - لا يمكن إعادة تفعيله أو إعادة توجيهه بعد الإنشاء. بركة مهيأة مع
enable_creator_fee = falseلن تفرض أبدًا رسم منشئ؛ واحدة مهيأة معcreator_fee_onمعين لا يمكنها تبديل الجوانب.
CollectCreatorFee إلى الأبد.
تدفق جمع العمليات
| الموقّع | التعليمة | عدادات المصدر المصفرة | الوتيرة المعتادة |
|---|---|---|---|
amm_config.protocol_owner | CollectProtocolFee | protocol_fees_token{0,1} | أسبوعيًا أو برمجيًا |
amm_config.fund_owner | CollectFundFee | fund_fees_token{0,1} | أسبوعيًا أو برمجيًا |
pool_state.pool_creator | CollectCreatorFee | creator_fees_token{0,1} | في أي وقت |
security/admin-and-multisig. الموقّع المنشئ هو الحساب الذي شغّل Initialize.
تغيير طبقة رسم
يمكن تغيير معدلات الرسوم من قبل المسؤول عبرUpdateAmmConfig (انظر products/cpmm/instructions). تدخل التغييرات حيز التنفيذ على المبادلة التالية لكل بركة مرتبطة بـ AmmConfig — لا توجد هجرة، لأن البرك تحمل التكوين في كل مبادلة.
ما لا يستطيع المسؤول فعله:
- نقل بركة من
AmmConfigإلى آخر. - إعادة تسعير الرسوم المستحقة بأثر رجعي.
- جمع الرسوم بدون موقّع
protocol_owner/fund_owner.
قراءة الرسوم من بركة تعمل
مقارنة مع CLMM و AMM v4
انظرreference/fee-comparison للحصول على مصفوفة جنبًا إلى جنب. الملخص:
- AMM v4 يستخدم رسم تداول ثابت بنسبة 0.25% مع انقسام LP/بروتوكول مختلف وبدون رسم صندوق.
- رسوم CLMM هي لكل طبقة spacing علامة، مستحقة لكل موضع (وليس لكل بركة)، ويتم المطالبة بها عبر
DecreaseLiquidityأوCollectFees.
إلى أين بعد ذلك
products/cpmm/math— حيث ينطبق خصم رسم التداول على المنحنى.products/cpmm/instructions— قوائم حسابات تعليمةCollect*.algorithms/token-2022-transfer-fees— كيفية دمج رسم تداول البركة مع رسم نقل الرموز بشكل صحيح.


