هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
الثابت الرياضي
يحافظ المجمع علىcoin_reserve × pc_reserve = k، حيث (بعد إزالة OpenBook في 2026-07):
- الاحتياطيات الآن من الخزائن فقط. تم حذف المصطلح التاريخي لأوامر مفتوحة (الرموز التي كان المجمع قد احتفظ بها كأوامر محدودة في OpenBook) — كانت قيمتها صفرًا عمليًا قبل وقت طويل من الإزالة. يمكنك حساب
kمباشرة من أرصدة الخزائن على السلسلة. - تراكم الربح والخسارة (
need_take_pnl_*) يُطرح بحيث يتم الحفاظ على المنحنى عندما يقوم المسؤول بجمع الرسوم. نفس المبدأ المستخدم في استبعادprotocol_fees_*في CPMM.
calc_total_without_take_pnl_no_orderbook (النسخة القديمة التي تدرك دفتر الأوامر قد اختفت).
كل عملية Swap* تفرض k' ≥ k بعد إضافة حصة الرسوم الخاصة بـ LP مرة أخرى إلى الاحتياطيات.
اتفاقية الرسوم
يستخدم AMM v4 رسوم النسبة (أزواج البسط/المقام) بدلاً من اتفاقية1/1_000_000 في CPMM / CLMM. هيكل Fees على السلسلة (انظر Fees::initialize في مصدر البرنامج) يفترض بشكل افتراضي:
- إجمالي رسم المبادلة:
swap_fee = amount_in × 25 / 10_000 = 0.25%من المدخل الإجمالي. - حصة البروتوكول:
pnl_numerator / pnl_denominator = 12 / 100 = 12%من رسم المبادلة، وهو ما يعادل0.25% × 12% = 0.03%من الحجم. تتراكم هذه الحصة في عدادات الربح والخسارة ويتم جمعها بواسطةWithdrawPnl. - حصة LP: الـ
88%المتبقية من رسم المبادلة، وهو ما يعادل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. مع إزالة كود OpenBook، هذا الحقل أصبح قديمًا؛ رسم المبادلة النشط هو swap_fee_*.
الانحرافات عن هذه الإعدادات الافتراضية نادرة لكنها موجودة على عدد قليل من المجمعات القديمة؛ اقرأ دائمًا الرسوم من AmmInfo.fees قبل الاقتباس.
رياضيات المبادلة المباشرة (مسار AMM)
الحالة الأبسط: يقوم المستخدم بالمبادلة مقابل خزائن المجمع دون التفاعل مع OpenBook. الاحتياطيات الداخلية للمجمع (بما في ذلك التخصيصات على الكتاب) هي المقام. SwapBaseIn (مدخل دقيق):MonitorStep / التسوية الضمنية الذي اعتاد تحديث جانب OpenBook.
SwapBaseOut (مخرج دقيق):
تفاعل دفتر الأوامر (تاريخي)
تم الحذف. يعكس بناء الشبكة الموصوف في هذا القسم كيفية انعكاس AMM v4 في الأصل للمنحنى على سوق OpenBook. تم حذف تكامل OpenBook — بما في ذلك crank
MonitorStep ومنطق شبكة build_orders — من البرنامج (ترقية 2026-07). يتم الحفاظ على الرياضيات أدناه بحتة كسياق تاريخي لما كانت حسابات target_orders / amm_open_orders على السلسلة مخصصة له ذات مرة.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 القديم (قائمة الأحداث ممتلئة، cranks محجوبة) يمنع تحديثات الشبكة؛ يمكن لـ AMM بعد ذلك أن يقتبس أسعارًا تختلف عن دفتر الأوامر المرئي حتى crank التالي.
خطوة التسوية (الربح والخسارة)
تتراكم حصة البروتوكول بنسبة 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 جانب العملة؛ 6 منازل عشرية)pc_reserve = 2_000_000_000_000(2,000,000 جانب الكمبيوتر؛ 6 منازل عشرية)- الرسوم: افتراضي
swap = 25/10_000,pnl = 3/10_000.
SwapBaseIn مدخل دقيق 1_000_000_000 عملة (1,000 عملة).
2_200_000) لا تُفصل في أي مكان — إنها ببساطة الباقي الذي يرفع k'.
قواعد الدقة
- عمليات ضرب الاحتياطيات تستخدم
u128؛ القسمات النهائية تقرب نحو الصفر. swap_feeيقرب لأعلى (بحيث لا يقلل المجمع الرسوم).amount_inلـSwapBaseOutيقرب لأعلى (بحيث لا يقلل المستخدم الدفع).- المجمعات ذات نسب الاحتياطي القصوى يمكن أن تصل إلى
ZeroTradingTokensعلى مدخلات صغيرة جدًا؛ نفس الاتفاقية مثل CPMM.
القيود مقابل CPMM
- احتياطيات AMM v4 الآن من الخزائن فقط، لذا يمكنك الاقتباس مباشرة من أرصدة الخزائن (ناقص
need_take_pnl_*) — المتطلب السابق لإضافة مبالغopen_orders.free/open_orders.lockedلم يعد ينطبق. بقية SDK / API تبقى الخيار الأبسط. - 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

