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.
هذه الصفحة مُترجَمة آليًا بواسطة الذكاء الاصطناعي. النسخة الإنجليزية هي المرجع المعتمد.عرض النسخة الإنجليزية →
تجمع هذه الصفحة الاشتقاقات الرياضية وراء CLMM. لتطبيق السلسلة الذي يعمل مباشرة، انظر
products/clmm/math (الذي يُشير إلى هذه الصفحة) وproducts/clmm/ticks-and-positions (الذي يُبرّر شبكة التيك).لماذا الجذر التربيعي للسعر وليس السعر ذاته
تمثّل CLMM العائلات شبيهة Uniswap-v3 السعر كجذره التربيعي، مخزّن فيQ64.64 بنقطة ثابتة:
- حسابيات السيولة الخطية. كمية token0 أو token1 في نطاق السعر تتبيّن أنها دالة خطية لـ
sqrt_priceوليس لـprice. يتيح تخزينsqrt_priceلخطوة المبادلة تقييم تلك الصيغ الخطية دون حساب جذر تربيعي. - التحكم في الامتلاء.
sqrt_price · Lيناسبu256لجميع المعاملات المعقولة؛price · Lقد يتجاوز الحد بكثير أبكر. - حسابيات التيك موحدة. لأن التيكات معرّفة كـ
1.0001^i، فإنsqrt(price) = 1.00005^iهو أيضًا سلم دقيق لقوة 1.00005. كل عبور تيك ينقل إلى ضرب صغير في فضاءsqrt_price_x64.
price = (sqrt_price_x64 / 2^64)^2.
شبكة التيك
يتم تحديد الأسعار على شبكة:tick_i هو i32. النطاق النشط هو [MIN_TICK, MAX_TICK] = [−443636, 443636]، مما يعطي نطاق سعر تقريبي [2^−128, 2^128]. يتم تعيين tick_spacing لكل مجموعة من قبل طبقة الرسوم الخاصة بها: مسافات أصغر للأزواج الضيقة (مثلاً المستقرات 0.01% تستخدم المسافة 1)، مسافات أكبر للأزواج المتقلبة (طبقة 0.25% تستخدم 60، طبقة 1% تستخدم 120).
يجب أن تكون المراكز محاذية لـ tick_lower وtick_upper إلى tick_spacing. التيكات النشطة للمجموعة (تلك التي لديها سيولة تبدأ أو تنتهي هناك) هي التيكات الوحيدة التي تهتم بها خطوة المبادلة.
السيولة إلى الكمية
لمركز بسيولةL ونطاق سعر [sqrt_lo, sqrt_hi] (جميع قيم sqrt_price):
| حالة المجموعة | كمية token0 | كمية token1 |
|---|---|---|
السعر فوق النطاق (sqrt_p ≥ sqrt_hi) | 0 | L · (sqrt_hi − sqrt_lo) |
| السعر في النطاق | L · (sqrt_hi − sqrt_p) / (sqrt_p · sqrt_hi) | L · (sqrt_p − sqrt_lo) |
السعر تحت النطاق (sqrt_p ≤ sqrt_lo) | L · (sqrt_hi − sqrt_lo) / (sqrt_lo · sqrt_hi) | 0 |
(x_v, y_v) مختارة بحيث يكون (sqrt_p, L) الحالي للمجموعة متسقًا مع L = sqrt(x_v · y_v). دمج من sqrt_p إلى حدود النطاق يعطي الكميات أعلاه.
الصيغ العكسية (تُستخدم عند إنشاء مركز لـ amount0 أو amount1 معين):
خطوة المبادلة أحادية التيك
داخل نطاق تيك واحد، تتصرف المجموعة مثل CPMM. بالنظر إلىsqrt_p الحالي وsqrt_target:
خطوة الإدخال الدقيق
بالنظر إلىΔin_remaining:
0→1 تخفض sqrt_p (السعر ينخفض عندما نبيع token0). مبادلة 1→0 ترفعه. الصيغ متماثلة مع sqrt_p وsqrt_target مبدلين.
خطوة الإخراج الدقيق
نفس البنية، حل لـΔin بدلاً من ذلك.
حلقة المبادلة متعددة التيك
تكرر المبادلة على التيكات حتى ينضب الإدخال أو يتم الوصول إلى حد السعر:single_step الـ L الحالية للمجموعة. يتغير L فقط عند عبور تيك مهيأ. السيولة بين التيكات ثابتة، وهو ما يجعل رياضيات الخطوة بصيغة مغلقة.
liquidity_net عند تيك هو المجموع الموقّع لسيولة المراكز التي تبدأ عند ذلك التيك ناقص تلك التي تنتهي هناك. يضيف عبور صعودي liquidity_net؛ عبور هبوطي يطرحه.
عندما تكون لدى المجموعة أوامر محددة مفتوحة عند تيك، تستهلك خطوة عبور التيك أيضًا جزء من إدخال المبادلة لملء تلك الأوامر بشكل استباقي (FIFO عبر الفئات). تتم توثيق خوارزمية المطابقة والرسوم الديناميكية التي قد تنطبق فوق خطوة القاعدة في products/clmm/math؛ فهي لا تغير الصيغ أحادية الخطوة المغلقة أعلاه.
مراكمات نمو الرسوم
تتتبع CLMM الرسوم لكل وحدة سيولة نشطة، لكل جانب، عمومًا ولكل تيك:single_step:
fee_growth_global للجانب الآخر في هذه الخطوة، لأنه لم يتم دفع أي رمز على ذلك الجانب كإدخال.)
عند عبور تيك، يقوم البرنامج بـ قلب fee_growth_outside:
tick_current. عندما يكون tick_current فوق التيك، خارج يعني “أدناه”. عندما يكون tick_current أدناه، خارج يعني “أعلاه”. القلب يبدّل التفسير.
fee_growth_inside لمركز
بالنظر إلى مركز [tick_lower, tick_upper] والـ tick_current الحالي:
s هي:
IncreaseLiquidity وDecreaseLiquidity وCollectFees).
مثال عملي — عبور تيك واحد
مجموعة (مبسطة):sqrt_p_x64 = 2^64 · 1.0 = 2^64(السعر = 1.0)L = 1_000_000tick_current = 0- التيك المهيأ التالي أدناه:
tick = −60،sqrt_price = 1.0001^(−30) ≈ 0.99700،liquidity_net = −400_000(ينتهي هذا التيك مركزًا، لذا عبور هبوطي يزيل 400k) - معدل الرسوم: 0.25%
Δin = 10_000 token0، الاتجاه = 0→1.
الخطوة 1 — حتى sqrt_target = 0.99700 · 2^64:
L = 600_000 الجديدة:
التيك المهيأ التالي (مثلاً tick = −120) عند sqrt = 0.99402. أعد الحساب amount_in_to_target:
Δin_remaining. عبور مرة أخرى. استمر حتى يصل Δin_remaining إلى الصفر.
يتراكم تسلسل كامل Δout إلى مخرجات المبادلة النهائية.
التهيئة وحماية الامتلاء
MIN_SQRT_PRICE_X64وMAX_SQRT_PRICE_X64مقابلان لـtick = ±443636. أي مبادلة قد تدفعsqrt_pخارج هذا النطاق ترتد.- معامل
sqrt_price_limitللمستخدم يجب أن يقع في نفس الفترة؛ يتحقق البرنامج منه. - يتم حساب منتجات
L · Δsqrtفيu256ثم إزاحتها للخلف إلىu128لتجنب الامتلاء.
الفروقات مقابل Uniswap v3
- الأوراكل. تخزن
ObservationStateالخاصة بـ Raydium(block_timestamp, tick_cumulative, seconds_per_liquidity_cumulative)في حاوية حلقية؛ تنسيق سلك مختلف قليلاً عن Uniswap لكن نفس رياضيات TWAP. - Token-2022. يدعم Raydium CLMM رموز Token-2022؛ المتغير الذي يحتوي على رسم نقل يتطلب تعديلات إضافية لكمية ما قبل/بعد المبادلة. انظر
algorithms/token-2022-transfer-fees. - خريطة البت للتيك. تضغط Raydium خريطة البت للتيك المهيأ إلى
[u64; 16]لكل مجموعة للبحث السريعfind_next_initialized_tick؛ تستخدم Uniswap تعيينًا مفتوحًا لكل كلمة على السلسلة. المفاضلة بين الإيجار وتكلفة البحث. - فتحات المكافآت. تدعم Raydium 3 تدفقات مكافآت لكل مجموعة مع عدادات
reward_growth_global_x64منفصلة؛ نفس البنية كمراكم نمو الرسوم.
المؤشرات
products/clmm/math— التطبيق على السلسلة والمثال العملي مع حقول هيكل CLMM الفعلية.products/clmm/ticks-and-positions— شبكة التيك،liquidity_net/gross، دلالات النطاق النشط.products/clmm/fees— مراكم نمو الرسوم قيد التنفيذ.
- ورقة Uniswap v3 البيضاء (الاشتقاق القياسي لرياضيات جذر السعر التربيعي).
- مصدر برنامج Raydium CLMM.


