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.
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
منحنى جدول البحث
يستبدل Stable AMM الصيغة x·y=k بـ جدول بحث متفرق من مجموعات (x, y, price). عند تسعير المبادلة، يقوم البرنامج بـ:- حساب النسبة الحالية للمستودع من الاحتياطيات.
- البحث الثنائي في الجدول للعثور على المدخلين اللذين يحيطان بتلك النسبة.
- الاستيفاء الخطي بينهما للحصول على سعر وسيط.
- تطبيق الرسوم وإرجاع السعر المقترح.
تخطيط الجدول والبحث الثنائي
يحتفظModelDataInfo بما يصل إلى 50,000 مدخل DataElement، مفهرسة من قبل المسؤول. يكون فعالاً فقط أول valid_data_count منها. كل مدخل:
- احسب النسبة:
target_ratio = (x_real * multiplier) / y_real. - ابحث ثنائياً عن مدخلات حيث
(element.x * multiplier) / element.yيحيطtarget_ratio. - عندما يتم العثور على قوس
[min_idx, max_idx]، قم بالاستيفاء.
state.rs::ModelDataInfo::get_mininum_range_by_xy_real. الثابت الأساسي: يجب أن تكون المدخلات مرتبة (x تصاعدي، y تنازلي، price تصاعدي) لكي يعمل البحث.
الاستيفاء الخطي
بمجرد حصول نقطتي جدول على قوس النسبة، يحسب الاستيفاء سعراً وسيطاً وزوج احتياطيات:التحجيم: المضروب
يتم تخزين احتياطيات المستودع والأسعار بمقاييس مختلفة. حقلmultiplier على ModelDataInfo يأخذ ذلك في الحسبان. النمط الشائع:
- العملة لها 6 منازل عشرية، PC لها 18 منزلة عشرية.
- المضروب = 10^6 (أو ما شابه).
- يتم تخزين مدخلات الجدول بمقياس مخفَّض للاندراج ضمن حدود u64.
تسعير المبادلة: SwapBaseIn و SwapBaseOut
SwapBaseIn (إدخال دقيق)
بمعطى مبلغ الإدخالamount_in:
- احصل على النسبة الحالية من
(coin_vault, pc_vault). - ابحث عن مدخلات جدول الأقواس واستيفِ للحصول على نسبة مساحة الجدول.
- حوِّل الإدخال إلى مساحة الجدول:
dx_table = amount_in * multiplier / ratio. - استعلم الجدول عند إحداثي X الجديد للعثور على Y الجديد.
dy_table = y_old - y_new.- حوِّل مرة أخرى:
dy_real = dy_table * ratio / multiplier. - تطبيق رسم التداول:
dy_output = dy_real - (dy_real * trade_fee_numerator / trade_fee_denominator). - أرجع
dy_output.
SwapBaseOut (إخراج دقيق)
متناظرة: بمعطى المخرجات المطلوبةamount_out، حل لإيجاد amount_in المطلوب.
يستقر كلا المساران على أوامر OpenBook المملوءة أولاً (عبر منطق داخلي يشبه MonitorStep)، لذا تعكس الاحتياطيات الفعالة أي ملئات من الكتلة السابقة.
تطبيق الرسوم
متطابق مع AMM v4: انظرproducts/amm-v4/math للاشتقاق الكامل.
pnl_portion إلى need_take_pnl_* ويتم مسحه من قبل المسؤول عبر WithdrawPnl. يبقى lp_portion في المستودع، مضخماً k ومنفعاً لحاملي رموز LP.
MonitorStep و OpenBook
مثل AMM v4،MonitorStep هو تعليمة طلب تقوم بـ:
- تسوية ملئات أوامر OpenBook المعلقة (نقل الرموز من المستودعات إلى المستودع).
- تحديث
AmmInfo.target_ordersبشبكة جديدة من فتحات الأوامر المحدودة. - نشر الشبكة الجديدة إلى OpenBook.
MonitorStep: ~150k–180k CU (مشابهة لـ AMM v4).
الملخص: لماذا يعمل هذا
تصميم جدول البحث + الاستيفاء فعال ومرن:- الكفاءة: البحث الثنائي هو O(log 50,000) ≈ 16 تكرار، كل واحد ~ 300–500 CU. الاستيفاء هو عدة مضاعفات/قسمات. إجمالي تكلفة الاستعلام حوالي 5k–15k CU، أرخص بكثير من إعادة حساب صيغة على كل مبادلة.
- المرونة: يمكن للمسؤول ترميز أي منحنى خطي متعدد التقسيم. تحصل أزواج العملات المستقرة على كثافة عالية حول 1:1؛ الأزواج المضمونة تحصل على منحنيات مخصصة.
- التوافق مع OpenBook: تنطبق نفس منطق
MonitorStep/TargetOrdersمن AMM v4. اكتشاف الأسعار عبر الجدول يغذي توليد شبكة الأوامر.
raydium-stable/program/src/state.rs، والدوال get_data_by_x، get_data_by_y، get_dy_by_dx_base_in، إلخ.
الخطوات التالية
- الحسابات — مرجع حقول
ModelDataInfoوDataElement. - التعليمات —
InitModelData،UpdateModelDataلملء الجدول. - الرسوم — تطبيق الرسوم و
WithdrawPnl. products/amm-v4/math— لمنطق تسعير شبكة الأوامر الشاملة للرسوم من OpenBook.
raydium-stable/program/src/state.rs(تطبيقات الاستيفاء والبحث الثنائي)raydium-stable/program/src/math.rs(مرافق الحاسبة)


