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.
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
الثابت
يحافظ المجمّع علىcoin_reserve × pc_reserve = k، حيث:
- تتضمّن الاحتياطيات الكميات المرسلة على OpenBook. تبقى أوامر AMM المحدّدة بسعر جزءًا من سيولتها — لم تُفقَد في سجل الأوامر، بل مودعة هناك. الحساب من أرصدة الخزينة على السلسلة فقط يقلّل من تقدير الاحتياطيات.
- استحقاق الأرباح والخسائر (
need_take_pnl_*) يُطرح حتى يبقى المنحنى ثابتًا عندما يسحب المسؤول الرسوم. نفس المبدأ المستخدم في CPMM مع استبعادprotocol_fees_*.
Swap* تفرض k' ≥ k بعد إضافة حصة رسوم مزودي السيولة مرة أخرى إلى الاحتياطيات.
اتفاقية الرسوم
يستخدم AMM v4 رسوم النسبة (أزواج البسط/المقام) بدلاً من اتفاقية1/1_000_000 الخاصة بـ CPMM / CLMM. تُعدّل بنية Fees على السلسلة (انظر Fees::initialize في مصدر البرنامج) افتراضيًا إلى:
- إجمالي رسم الـ swap:
swap_fee = amount_in × 25 / 10_000 = 0.25%من المدخل الإجمالي. - حصة البروتوكول:
pnl_numerator / pnl_denominator = 12 / 100 = 12%من رسم الـ swap، الذي يساوي0.25% × 12% = 0.03%من الحجم. تتراكم هذه الحصة في عدادات الأرباح والخسائر ويسحبهاWithdrawPnl. - حصة مزودي السيولة: الـ
88%المتبقية من رسم الـ swap، التي تساوي0.25% × 88% = 0.22%من الحجم. تبقى في المجمّع وتزيد منk. - لا توجد حصة صندوق. لا يمتلك AMM v4 تقسيم رسوم الصندوق الموجود في CPMM/CLMM.
pnl_numerator / pnl_denominator هو كسر من الرسم، وليس من حجم التداول — وهي قراءة شائعة الأخطاء لأسماء هذه الحقول.
يُستخدم trade_fee_numerator / trade_fee_denominator (أيضًا 25 / 10_000) كحقل منفصل بواسطة تكامل OpenBook عند حساب الأسعار الشاملة للرسوم لشبكة الأوامر المحدّدة بسعر الخاصة بـ AMM؛ يساوي swap_fee بشكل افتراضي لكن يُقرأ من مسار كود مختلف.
الانحرافات عن هذه الافتراضيات نادرة ولكنها موجودة على عدد قليل من المجمّعات القديمة؛ اقرأ دائمًا الرسوم من AmmInfo.fees قبل الاقتباس.
رياضيات الـ swap المباشرة (مسار AMM)
الحالة الأبسط: يقوم المستخدم بالمبادلة مقابل خزائن المجمّع دون التفاعل مع OpenBook. الاحتياطيات الداخلية للمجمّع (بما في ذلك التخصيصات على السجل) هي المقام. SwapBaseIn (مدخل دقيق):coin_vault_balance + coin_posted_on_openbook + ... (خزينة AMM بالإضافة إلى الرموز المقفلة في أوامر OpenBook). بعد إلغاء تفعيل OpenBook، يصبح الرصيد على السجل صفرًا، لذا تساوي الاحتياطيات الفعلية أرصدة الخزينة الأولية. مسار MonitorStep / التسوية الضمنية الذي اعتاد تحديث جانب OpenBook لم يعد مطلوبًا عمليًا.
SwapBaseOut (مخرج دقيق):
تفاعل سجل الأوامر (تاريخي)
لم تعد نشطة. بناء الشبكة الموصوف في هذا القسم يعكس كيفية أن AMM v4 في الأصل عكس المنحنى على سوق OpenBook. تم إلغاء تفعيل تكامل OpenBook؛ المجمّعات لم تعد تُرسل أو تحافظ على أوامر في OpenBook. الرياضيات أدناه محفوظة للسياق — تشرح ما كانت حسابات
target_orders / amm_open_orders على السلسلة مخصصة له ولماذا يتحقق البرنامج من معاملات MonitorStep ذات الصلة على الرغم من أن المحتفظ لم يعد يشغّلها.AmmInfo:
depth— عدد مستويات الأسعار لكل جانب.amount_wave— وحدة الحجم الأساسية لكل مستوى.min_size,coin_lot_size,pc_lot_size— قيود سوق OpenBook.state_data.swap_acc_coin_fee,swap_acc_pc_fee— عدادات الرسوم المتراكمة منذ آخرTakePnl.
target_orders المحسوبة في build_orders ومقارنتها مع amm_open_orders في كل MonitorStep. أي اختلاف يؤدي إلى إلغاءات وإرسالات جديدة. الأوامر المملوءة حديثًا على OpenBook تتسوى في خزائن المجمّع على العملية التالية التي تحدّث جانب OpenBook.
نادرًا ما يحتاج المدمجون إلى حساب الشبكة — محتفظ Raydium يحافظ عليها — لكن من المفيد معرفة أن:
- المجمّع الذي يحتوي على سيولة كبيرة على السجل له تلك السيولة تساهم في
k، وليس معطلة. - سوق OpenBook القديم (قائمة الأحداث ممتلئة، الكرانك محظور) يمنع تحديثات الشبكة؛ يمكن لـ AMM بعد ذلك أن ينقل أسعارًا تختلف عن سجل الأوامر المرئي حتى الكرانك التالي.
خطوة التسوية (الأرباح والخسائر)
تتراكم حصة البروتوكول بنسبة 0.03% فيstate_data.need_take_pnl_coin وstate_data.need_take_pnl_pc. يسحب TakePnl هذه الكميات من الخزائن إلى الوجهة المحددة من قِبل المسؤول، ثم يصفّر العدادات.
خاصية حاسمة: تُحسب الاحتياطيات في الثابت دائمًا ناقص استحقاق الأرباح والخسائر، لذا TakePnl لا يحرّك المنحنى. هذا يطابق اتفاقية CPMM.
مثال تطبيقي
حالة المجمّع:coin_reserve = 1_000_000_000_000(1,000,000 جانب coin؛ 6 عشريات)pc_reserve = 2_000_000_000_000(2,000,000 جانب pc؛ 6 عشريات)- الرسوم: افتراضية
swap = 25/10_000،pnl = 3/10_000.
SwapBaseIn مدخل دقيق 1_000_000_000 coin (1,000 coin).
2_200_000) لا تُفصل في أي مكان — إنها ببساطة الباقي الذي يزيد من k'.
قواعد الدقة
- تستخدم مضاعفات الاحتياطيات
u128؛ الأقسام النهائية تقرّب نحو الصفر. swap_feeتقرّب لأعلى (بحيث لا يقلّل المجمّع من الرسوم).amount_inلـSwapBaseOutتقرّب لأعلى (بحيث لا يقلّل المستخدم من السداد).- المجمّعات ذات نسب الاحتياطيات القصوى يمكنها ضرب
ZeroTradingTokensعلى مدخلات صغيرة جدًا؛ نفس اتفاقية CPMM.
القيود مقارنة بـ CPMM
- تتضمّن احتياطيات AMM v4 الجزء المودع في OpenBook، لذا لا يمكن للمدمج أن ينقل بشكل صحيح من
getTokenAccountBalanceوحدها. استرجع دائمًا الحالة الكاملة (الخزائن +open_orders.free+open_orders.locked)، أو استخدم الـ SDK / API quote. - لا يكشف AMM v4 عن TWAP منظمة على السلسلة. المستهلكون الخارجيون الذين يريدون سعرًا مدعومًا بـ AMM-v4 يجب أن يحسبوه بأنفسهم من سجلات التداول.
- Token-2022 غير مدعوم.
الخطوات التالية
products/amm-v4/instructions— حيث يتصلSwapBaseInوDepositوغيرهما.products/amm-v4/fees— آلية الرسوم الكاملة، تفاصيلTakePnl.algorithms/constant-product— الاشتقاق المشترك.
- مصدر برنامج Raydium AMM —
raydium-io/raydium-amm - وحدة
Liquidityمن Raydium SDK v2


