هذه المقالة الثانية من سلسلتنا "المفترسون في البولات: فن ورياضيات سيولة JIT". هنا ننتقل من نظرية "السرقة" إلى الحساب البارد: كيف يقرر الخوارزمية في 200 ملي ثانية ما إذا كان الدخول في الصفقة مجديًا.
إذا كانت المقالة الأولى عن "ما هذا"، فهذه تتعلق بـ "كم يكلف". حتى لا يتحول هجوم JIT إلى عمل خيري لصالح المعدنين/المحققين، يجب على البوت حل معادلة ذات خمس متغيرات قبل تشكيل الكتلة.
1. السيولة (L): المتغير الرئيسي
في Uniswap v3، السيولة ليست مجرد مجموع التوكنات، بل معامل L الذي يحدد كم من الأصول ستتحرك عند تغيير السعر. معادلة السواب (Invariant):

بالنسبة لبوت JIT، من المهم حساب أي جزء من إجمالي $L$ في نطاق السعر المحدد (Tick) يجب أن يشغله.
صيغة حصة الرسوم (Fshare):
Fshare = Ljit / Lpool + Ljit
حيث:
- Ljit — السيولة التي يوفرها البوت.
- Lpool — السيولة الحالية للمستثمرين السلبيين في الـTick المستهدف.
قاعدة عملية: للحصول على 95% من الرسوم، يجب أن تكون سيولة البوت 19 ضعف سيولة البول الحالية في هذا النطاق.
2. حساب ربح السواب (Gross Profit)
يرى البوت في الميمبول معاملة المستخدم بقيمة $S$. مع معرفة فئة رسوم البول ($\phi$, مثل 0.05% أو 0.3%)، يحسب إجمالي رسوم الصفقة:

الربح الإجمالي المتوقع للبوت (Pgross):

3. احتساب "ضريبة الغاز" (التكاليف التشغيلية)
على عكس المستثمر السلبي الذي يدفع الغاز مرة واحدة لأشهر، يدفع بوت JIT الغاز مرتين في نفس الكتلة (أو معاملة واحدة مكلفة بعدة استدعاءات).
تكاليف الغاز (Cgas):
mint(): ~150k–200k غاز.decreaseLiquidity()+collect(): ~120k–180k غاز.- إضافة الرسوم الأولوية (Priority Fee) لـ Flashbots لضمان الدخول في الكتلة.
في شبكة Ethereum الرئيسية (Mainnet) بسعر غاز 30 gwei، يمكن أن تتراوح التكاليف الإجمالية بين $50–$150. في L2 (Arbitrum/Polygon) التكاليف ضئيلة ($0.10–$0.50)، لكن المنافسة على الميكرو-سواب أعلى.
4. حساب نقطة التعادل (Break-even Point)
الهجوم منطقي فقط إذا:

حيث Cslippage هي الخسارة عند سحب السيولة (Impermanent Loss خلال سواب واحد)، و$Copportunity تكلفة رأس المال (مثل فوائد Flash Loan).
تفصيل غير معروف: البوتات المتمرسة تأخذ في الاعتبار "Shadow Slippage". عندما يضيف البوت سيولة كبيرة، يصبح السعر أكثر "صلابة". إذا كان سواب المستخدم كبيرًا جدًا، قد يكون من المفيد للبوت إضافة سيولة أقل ليزداد تأثير السعر، إذا كان يخطط للتحكيم في الكتلة التالية. لكن بالنسبة لـJIT النقي — كلما زادت السيولة، كان أفضل.
5. مثال عملي للحساب (Mainnet)
- البول: ETH/USDC (0.05%)
- سواب المستخدم: $500,000.
- Lpool الحالي في Tick: $2,000,000.
- البوت يضيف Ljit: $18,000,000.
- إجمالي الرسوم: $500,000 x 0.0005 = $250.
- حصة البوت: 18M / 18M + 2M = 90%.
- دخل البوت: $250 x 0.9 = $225.
- تكلفة الغاز: $120 (في الظروف المتوسطة).
- صافي الربح: $225 - $120 = $105 لكل كتلة.
يبدو قليلاً؟ لكن أفضل البوتات تنفذ 500–1000 هجوم يوميًا من هذا النوع. هذا يمثل ربحًا صافٍ قدره $50,000–$100,000 يوميًا تقريبًا بدون مخاطر السوق.
6. تفاصيل تقنية: اختيار عرض الـTick
البوت لا يضع أبدًا نطاقًا واسعًا. كلما كان النطاق (Ticks) أضيق، كانت تركيز رأس المال أعلى و L أكبر لنفس كمية التوكنات.
معيار JIT: tickLower و tickUpper بفارق خطوة واحدة على الأقل (مثال: 10 نقاط لبول 0.05%).
حساب السيولة من كمية التوكنات (TypeScript/Ethers):
import { LiquidityAmounts } from '@uniswap/v3-sdk';
import { JSBI } from '@uniswap/sdk-core';
function calculateJitLiquidity(amount0, amount1, currentPrice, tickLower, tickUpper) {
const sqrtRatioX96 = encodePriceSqrt(currentPrice);
const sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(tickLower);
const sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(tickUpper);
return LiquidityAmounts.getLiquidityForAmounts(
sqrtRatioX96,
sqrtRatioAX96,
sqrtRatioBX96,
amount0,
amount1,
false
);
}
خلاصة المقال
رياضيات JIT هي معركة من أجل الكفاءة. إذا رأيت أن عائدية بول برسوم 1% انخفضت فجأة — تحقق من الميمبول. على الأرجح هناك بوت نشط حسب أن L الخاص به أكثر كفاءة بـ50 مرة من الخاص بك.
في المقالة التالية: سننتقل من الصيغ إلى الأجهزة والكود. سنحلل هندسة العقد الذكي الذي ينفذ هذه الحسابات في الوقت الفعلي وسنكتشف لماذا تغلب Rust على جميع اللغات الأخرى في هذا المجال.
احتراف سيولة JIT: الدليل الكامل لـ MEV في Uniswap: الجزء 2 من 5