عالم التمويل اللامركزي (DeFi) دايماً بيشبهوه بالغابة الرقمية، وده وصف دقيق ومظبوط على الفرازة. في الوقت اللي المتداولين العاديين قاعدين قدام الشاشات بيحللوا الشارتات وبيحاولوا يخمنوا اتجاه السوق، الحيتان الكبار والـ حريفة — زي الـ MEV searchers (قناصي القيمة القصوى المستخرجة) ومشغلي بوتات التصفية (Liquidation Bots) — شغالين سحب وعمل سحر على البلوكشين نفسه، وبيدوروا على غلطة تكتيكية من أي حد.
لما تظهر "حوت" (ثقيل في السوق) وياخد قرض ضخم بضمان العملات الرقمية بتاعته على منصات الإقراض (زي Aave، Compound، Spark، Morpho) والسوق يعكس عليه، هنا بتيجي اللحظة الحاسمة. لو المحفظة أو المركز بتاعه بقى على شعرة من الإغلاق الإجباري، بتظهر فرصة ذهبية وعدم كفاءة في السوق مفيش زيها.
في المقال ده، هنفك شفرة آليات البحث عن المراكز دي، وإزاي تصطاد الحيتان اللي فاضل ليهم أقل من 1% على التصفية، وإيه هي الطرق التقنية والاستراتيجية عشان تطلع من المولد ده بمكاسب خيالية.
تشريح الإقراض في الـ DeFi: ليه التصفية بتحصل أصلاً؟
عشان تفهم الثغرة فين بالظبط، لازم تكون هاضم وعارف رياضيات بروتوكولات الإقراض (Lending Protocols) حتة حتة. على عكس المنصات المركزية (CEX) اللي فيها محرك التصفية بيبقا تحت تحكم وإدارة المنصة نفسها، الوضع في الـ DeFi مختلف تماماً، العملية دي متسابة بالكامل لـ أطراف خارجية — اللي هما الـ المصفين (Liquidators).
البروتوكول مقدرش يقفل المركز من نفسه، لإن مفيش جواه نظام تشغيل تلقائي أو زناد داخلي. بديل كده، بيقدم حافز مالي مغري (خصم على شراء الضمان، بيبقى عادة بين 5% لـ 10%)، عشان أي حد على الشبكة يجي ويسدد دين المقترض وياخد الضمان بتاعه ل جيبه بسعر لقطة.
المؤشر الأساسي: عامل الأمان (Health Factor - HF)
أمان أي مركز إقراض بيتقاس بحاجة اسمها عامل الأمان أو الـ Health Factor. المعادلة في معظم البروتوكولات المتوافقة مع الـ EVM (زي Aave v3) بتمشي بالشكل ده بالظبط:

حيث أن:
- Collateral_i - القيمة الإجمالية للضمان i بالعملة الأساسية (مثلاً بالـ ETH أو الـ USD).
- LiquidationThreshold_i (حد التصفية) - أقصى نسبة للدين مقابل الضمان بيحددها البروتوكول للأصل ده بالذات (مثلاً 85%).
- Debt_j - إجمالي قيمة القرض j اللي تم سحبه مع الفوائد المتراكمة عليه.
الخط الأحمر: طول ما الـ HF أكبر من 1، فالمركز في السليم والدنيا أمان. أول ما الـ HF ينزل تحت الـ 1، المحفظة دي بتبقى مشاع وجاهزة للتصفية العلنية من أي حد.
يعني إيه "على بعد 1% من التصفية"؟
دي حالة حرجة جداً بيكون فيها الـ HF للمركز محشور في زاوية الخطر بين 1.0001 و 1.01. أي حركة فستك أو هبوط بسيط في سعر عملة الضمان (أو صعود عملة القرض) بتحول المركز ده فوراً لـ "وجبة دسمة" لبوتات التصفية.
استراتيجية "الربح من الهبوط": سيناريوهين للعب
كتير من الناس فاكرين إن مكسب المصفي بيقتصر بس على البونص اللي بياخده من البروتوكول نفسه. بس لما نتكلم عن محافظ قيمتها عشرات الملايين من الدولارات (الحيتان الحقيقية)، بتتفتح سكك تانية وخطط تانية تجيب فلوس أكتر بكتير.
السيناريو أ: التصفية الكلاسيكية عبر القروض الفورية (Flash Loans)
لقيت مركز الـ HF بتاعه أقل من 1. بس معندكش في محفظتك 10 مليون دولار كاش عشان تقفل دين الراجل ده. هنا بيجي دور الـ Flash Loans (القروض السريعة):
- بتسحب 10 مليون DAI من Uniswap أو Aave في معاملة واحدة سريعة ومن غير ما تقدم أي ضمانات.
- بتسدد دين الحوت في البروتوكول فوراً.
- بتاخد الضمان بتاعه (مثلاً ETH) بخصم 5% (يعني بتستلم ETH بقيمة 10.5 مليون دولار).
- في نفس الثانية بتبيع الـ ETH على منصة لامركزية (DEX) مقابل DAI، وترجع الـ 10 مليون دولار بتاعة الـ Flash Loan + عمولة القرض.
- صافي الربح (~490,000 دولار بعد خصم مصاريف الغاز) بيفضل في جيبك. مبروك عليك.
السيناريو ب: الشورت الموجه و"الزقة الصغيرة" (Whale Hunting)
الاستراتيجية دي هجومية أكتر وعميقة، ومحتاجة فهم عالي جداً لسيولة السوق (Market Liquidity):
- بتكتشف حوت الـ HF بتاعه واقف عند 1.005 (يعني على حافة الهاوية بـ 0.5%). الضمان بتاعه 50,000 WBTC والدين بتاعه بالـ USDT.
- بحسبة رياضية دقيقة، بتعرف عند أي سعر للـ WBTC الـ HF بتاعه هيوصل لـ 1 بالظبط. لنفترض إن السعر محتاج ينزل 150 دولار بس.
- بتفتح مركز بيع مكشوف (Short) ضخم للـ WBTC في سوق العقود الآجلة أو منصة مشتقات لامركزية مع رافعة مالية محترمة.
- لو السوق في اللحظة دي فيه نقص في السيولة (الـ Order Book خفيف)، بتقوم أنت أو لاعبين تانيين بعملية بيع ضخمة للـ WBTC في السوق الفوري (Spot)، وده بيعمل هبوط مفاجئ وخاطف (Dump) للسعر في ثواني.
- السعر بيلمس نقطة التصفية. بوتات التصفية (أو الاسكريبت بتاعك) بتبدأ تاكل في الحوت ورا بعض (Cascade Liquidation). مع التصفية، كميات مهولة من الـ WBTC بتترمى في السوق غصب عشان تغطية الدين، وده بيعمل انهيار تتابعي وأقوى للسعر.
- صفقة الشورت بتاعتك بتقفل على الـ Take-Profit في قاع الهبوط المصطنع أو المتسارع ده. ودي بتبقى الـ ضربة القاضية.
الـ أدوات المستعملة لصيد "الحيتان المصابة"
إنك تقعد تراقب البلوكشين مانيوال بإيدك من خلال Etherscan ده ضرب من الخيال ومضيعة للوقت. المحترفين شغالين بنظام تلات مستويات من الأدوات: لوحات بيانات جاهزة، واجهات برمجية (APIs) للبنية التحتية، وبارسرات خاصة بيهم على النودز (Nodes).
1. منصات التحليل الجاهزة (عشان تبدأ بسرعة)
- DeFi Saver (قسم Loan Shifter / Simulation): بيخليك تشوف وتتخيل المراكز الضخمة في التوب بروتوكولز بشكل مرئي واضح.
- Debank / Arkham Intelligence: ودول ممتازين عشان تعمل قوائم مراقبة (Watchlists) لعناوين محددة. لما تلاقي مقترض كبير عن طريق فحص كبار حاملي التوكنز، بتقوم "راشق" عليه تنبيه عشان تتابعه.
- Dune Analytics: في لوحات بيانات عامة (Dashboards) بتجمع الـ Health Factor لكبار المقترضين في الوقت الفعلي. (دور بتاجات زي: Aave v3 liquidation thresholds، Compound positions monitoring).
2. واجهات برمجية متخصصة (للأتمتة)
أضمن طريقة عشان تاخد بيانات متفلترة وجاهزة من غير ما تضطر ترفع وتدير Archive Node خاص بيك، هي إنك تستخدم الـ APIs الرسمية للأنظمة الفرعية دي.
على سبيل المثال، منصة Aave عندها نقطة نهاية GraphQL مفتوحة (The Graph)، تقدر من خلالها تسحب الحالة المالية لكل المقترضين دفعة واحدة.
| المتغير (Parameter) | الوصف | ليه لازم تراقبه؟ |
|---|---|---|
collateralBalanceUSD | إجمالي حجم الضمان بالدولار | عشان تفلتر وتطلع الحيتان الحقيقية بس (من مليون دولار وأنت طالع). |
totalBorrowsUSD | إجمالي الدين بالدولار | مهم لتقييم حجم السيولة اللي هتحتاجها عشان تقفل المركز وتصفي الحساب. |
currentLiquidationThreshold | حد التصفية الحالي للأصل | بتحتاجه عشان تحسب بدقة متناهية نقطة اللاعودة والانهيار. |
الدليل العملي: كود برمجية بارسر للمواقف الحرجة
ندخل بقى في الجد والشغل التقني. عشان تصيد عنوان واقف على بعد 1% من التصفية، محتاجين نكتب اسكريبت بيعمل استعلام (Query) للعقد الذكي الخاص بالـ Pool أو الـ DataProvider للبروتوكول اللي شغالين عليه.
تحت ده مثال لاسكريبت بلغة بايثون (Python) باستخدام مكتبة web3.py. الاسكريبت ده بيكلم عقد Aave Protocol Data Provider على شبكة Arbitrum (اللي بنختارها عشان عمولاتها شبه معدومة وسرعتها طلقة، وده أساسي في شغل التصفيات)، وبياخد بيانات المستخدم ويحسب مدى قربه من لحظة الصفر.
import os
from web3 import Web3
# ربط الاتصال بنود RPC سريع جداً (زي Alchemy أو QuickNode)
RPC_URL = "https://arb-mainnet.g.alchemy.com/v2/YOUR_API_KEY"
w3 = Web3(Web3.HTTPProvider(RPC_URL))
if not w3.is_connected():
raise Exception("فشل الاتصال بالبلوكشين")
# عنوان عقد Aave v3 Pool على شبكة Arbitrum
AAVE_POOL_ADDRESS = "0x794a61358D6845594F94dc1DB02A252b5b4814aD"
# الـ ABI الأدنى اللي بيحتوي بس على دالة getUserAccountData
AAVE_POOL_ABI = [
{
"inputs": [{"internalType": "address", "name": "user", "type": "address"}],
"name": "getUserAccountData",
"outputs": [
{"internalType": "uint256", "name": "totalCollateralBase", "type": "uint256"},
{"internalType": "uint256", "name": "totalDebtBase", "type": "uint256"},
{"internalType": "uint256", "name": "availableBorrowsBase", "type": "uint256"},
{"internalType": "uint256", "name": "currentLiquidationThreshold", "type": "uint256"},
{"internalType": "uint256", "name": "ltv", "type": "uint256"},
{"internalType": "uint256", "name": "healthFactor", "type": "uint256"}
],
"stateMutability": "view",
"type": "function"
}
]
pool_contract = w3.eth.contract(address=AAVE_POOL_ADDRESS, abi=AAVE_POOL_ABI)
def check_whale_position(user_address):
try:
# سحب بيانات الحساب من العقد الذكي مباشرة
data = pool_contract.functions.getUserAccountData(w3.to_checksum_address(user_address)).call()
# البيانات بترجع بدقة 18 خانة (بالعملة الأساسية لـ Aave)
collateral = data[0] / 1e8 # على حسب العملة الأساسية لـ v3 (عادة USD بـ 8 خانات)
debt = data[1] / 1e8
hf = data[5] / 1e18 # الـ Health Factor بيرجع بـ 18 خانة عشرية
# بنفلتر بس اللعيبة الكبار (الضمان أكبر من 500,000 دولار)
if collateral > 500000:
print(f"العنوان: {user_address}")
print(f" الضمان: ${collateral:,.2f} | الدين: ${debt:,.2f}")
print(f" عامل الأمان (Health Factor): {hf:.4f}")
# فحص لو المحفظة دخلت في زون الـ 1% قبل التصفية
# لإن التصفية بتشتغل لما الـ HF يكون <= 1.0، منطقة الخطر بتبقى من 1.0000 لـ 1.0100
if 1.0000 < hf <= 1.0100:
print(f"⚠️ وضع حرج: الحوت على بعد أقل من 1% من التصفية! احتمال رمي وتسييل الضمان في أي لحظة.")
# هنا بتحط الكود بتاع التنبيه لجروب التليجرام أو استدعاء دالة بوت التصفية بتاعك
print("-" * 50)
except Exception as e:
print(f"حصل خطأ أثناء فحص العنوان {user_address}: {e}")
# مثال لفحص عنوان حوت معين (غير العنوان ده لعنوان حقيقي من القائمة بتاعتك)
whale_target = "0x..."
check_whale_position(whale_target)منين بنجيب العناوين دي عشان نعمل عليها الفحص؟
الاسكريبت اللي فوق بيفحص عنوان واحد بس. عشان تبني رادار حقيقي وصاحي، محتاج سيل وتدفق مستمر من العناوين. البوتات الاحترافية بتجيب الداتا دي بالطريقة دي:
- تجميع الأحداث التاريخية (Events Parsing): البوت بيعمل مسح وشطب للبلوكشين مرة واحدة من وقت تفعيل (Deploy) البروتوكول، وبيلم كل العناوين اللي عملت أحداث زي
Supply،Borrow، وCollateralSwitch. - الاشتراك في السجلات الحية (Live Logs): الاسكريبت بيفضل سامع ومراقب البلوكات الجديدة عن طريق الـ WebSockets (باستخدام
w3.eth.subscribe('logs', ...))، وبيصيد أي عنوان جديد بيتعامل مع الـ Pool في وقتها. كل العناوين الفريدة دي بتتسجل في قاعدة بيانات محلية (زي MariaDB أو PostgreSQL). - المراقبة الدائرية والمستمرة: بيكون في نظام شغال في الخلفية (Worker) بيلف على قاعدة البيانات دي من غير ما يقف، وبيطلب دالة
getUserAccountDataلكل عنوان متسجل عشان يحدث الأرقام أول بأول.
تشريح "الاصطياد": كيف تحسب نقطة التفعيل (Trigger) بدقة متناهية
عشان تستغل معلومات "الحوت المصاب" بشكل فعال، ما يكفي بس تعرف الـ Health Factor الحالي ماله. السيرشر (Searcher) المحترف لازم يفهم ديناميكية حركة السعر. نحتاج نعرف السعر الدقيق للأصل المرهون (Collateral) اللي عنده، واللي بسببه بتدخل البوزيشن ماله تحت السكين (تتصفى).
خلونا نصيغ الحسبة بشكل رسمي. لنفترض إن الحوت مالتنا عنده أصل مرهون واحد (مثلاً ETH) وأصل واحد مقترض بسعره الثابت (USDT). حد التصفية (Liquidation Threshold واختصاره LT) للـ ETH في البروتوكول يساوي 85% (0.85).
معادلة السعر الحرج للرهن Price_crit تظهر بهالطريقة:

مثال عملي على الحسبة
تخيل بوزيشن ضخم ومكشوف في السوق:
- الرهن Collateral_Amount: $10,000\ ETH$
- السعر الحالي للـ ETH: $3,400\ USD$
- قيمة الرهن بالعملة النقدية (Fiat): $34,000,000\ USD$
- الدين الحالي Debt_USD: $28,500,000\ USDT$
- حد التصفية LT: 85% (0.85)
نحسب عامل الأمان (Health Factor) الحالي للبوزيشن:

البوزيشن على شعرة، يبعد 1.4% بس عن التصفية الكلية. الحين بنحدد سعر الETH اللي بسببه بينهار البوزيشن بالكامل:

أول ما سعر الـ ETH على أوراكل (Oracle) البروتوكول (واللي غالباً يكون Chainlink) يلمس رقم $3,352.94، البوزيشن بيصير جاهز للتصفية فوراً وبيدخل خط الخطر.
معلومة إنسايدر قوية (Alpha): العقود الذكية ما تدري كم سعر السوق الحالي على Binance في نفس الثانية. هم يعتمدون كلياً على الأوراكلز. أوراكلز Chainlink تحدث السعر على البلوكشين إما بناءً على الوقت (مثلاً كل 20 دقيقة)، أو إذا انحرف السعر خارج الشبكة (Deviation Threshold) بنسبة معينة — مثل 0.5% أو 1% لبعض أزواج العملات. إذا عرفت هالعتبة، المتداولين الشطار يقدرون يتوقعون اللحظة الدقيقة لتفعيل التصفية قبل ثواني من تأكيد معاملة الأوراكل في الميمبول (Mempool).
إستراتيجية "Whale Hunting" في الواقع: ميكانيكية التنفيذ
يوم نحدد الهدف ونحسب السعر الحرج، السيرشر عنده طريقين عشان يطلع فلوس: الطريق السلبي (التجهيز للتصفية والانتظار) أو الطريق الهجومي (تحفيز الدامب وهبوط السعر بنفسه).
1. هندسة السيولة (القروض السريعة Flash Loans ضد رأس المال الخاص)
إذا تخطط إنك تاخذ بونص التصفية (في مثالنا 5% من 34$ مليون — يعني 1.7$ مليون أرباح إجمالية)، لازم توفر 28.5$ مليون فوراً عشان تسكر الدين.
بما إنك تخلي كاش مثل هذا في المحفظة بدون فايدة يعتبر غباء في إدارة رأس المال، نستخدم الـ Flash Loan من خلال مجمعات سيولة Uniswap v3 أو منصات الإقراض مثل Aave. تاخذ 28.5$ مليون كقرض داخل نفس المعاملة (Atomic Transaction)، وتستدعي دالة liquidationCall في عقد Aave، وتصادر الـ ETH المرهون، وفي نفس اللحظة تحول جزء من الـ ETH لـ USDT عبر مجمع سيولة (1inch / Paraswap) عشان ترجع القرض السريع مع فايدته البسيطة (0.05%). الـ ETH الباقي هو صافي ربحك وجيبك.
2. أربيتراج السوق والشورت الموجه (Directed Short)
إذا كان حجم الحوت وايد ضخم وما تكفيه مجمعات الفلاش لوان العادية، أو السيولة في منصات الـ Spot DEXes شحيحة وما تقدر تحول الرهن بدون ما تواجه انزلاق سعري قوي (Slippage)، اللعبة تنتقل لأسواق المشتقات عبر الـ Front-running:
- الخطوة 1: تشوف إن السعر باقي له بس 15 إلى 20 دولار حركة ويوصل للنقطة الحرجة 3,352.94.
- الخطوة 2: تفتح بوزيشن شورت عدواني بليفرج (Leverage) عالي على منصات الفيوچرز اللامركزية (Hyperliquid, dYdX, Vertex) أو الـ CEXes الكبيرة.
- الخطوة 3 (المحفز): في سوق السبوت (Spot) — وتتحين الوقت اللي يكون فيه دفتر الطلبات (Order Book) خفيف — يتم رمي أمر بيع ضخم. غالباً صناع السوق الكبار (Market Makers) أو تحالفات السيرشرز يسوون هالشي مع بعض عشان يضغطون السعر ويسوون دامب مؤقت.
- الخطوة 4 (التتالي الكاسح): أول ما السعر يكسر نقطة التفعيل، بوتات التصفية حول العالم تبدأ تسبم (Spam) دوال التصفية. وعشان يضمنون أرباحهم، هالبوتات تبدأ تبيع الـ ETH اللي صادروه بأوامر ماركت (Market Orders) وتحوله لستيبلكوينز.
- الخطوة 5 (جني الأرباح): رمي 10,000 ETH للبيع في خلال دقيقة أو دقيقتين يكسر كل طلبات الشراء المحلية، ويسحب السعر لأسفل بزيادة 2-3%. بوزيشن الشورت مالك بيتسكر على التيك بروفيت (Take Profit) بالضبط عند قاع هذا البانيك المصنوع والمسرع.
بنية بوت التصفية: كيف تسبق الجميع في غابة الـ MEV المظلمة
إذا فكرت تكتب بوت بنفسك عشان ينفذ عمليات التصفية هذه، انسى إنك تسوي شي بسكريبت Web3 عادي. في هذا المجال، فيه حرب سرعة طاحنة على الأجزاء من الثانية، معروفة باسم الـ PGA (Priority Gas Auction) وصراعات الـ MEV-boost.
المعاملة العادية اللي ترسلها للميمبول العام (Public Mempool) بتلقطها بوتات الـ Front-running العامة فوراً. بيقشرون الـ Calldata مالك، ويرفعون الجاز (Gas) بـ 1 gwei أعلى عنك، ويخطفون الربح من جيبك في ثانية.
الـ Tech Stack لبوت MEV احترافي وجاهز للإنتاج (Production):
- لغة البرمجة: جمع البيانات والتحليلات عادة يصير بـ Python/Go. لكن العقد الذكي المنفذ (اللي ياخذ الفلاش لوان ويستدعي التصفية) لازم ينكتب وبشكل صارم بـ Solidity / Yul عشان يوصل لأقصى تحسين واستهلاك أقل للغاز. مؤخراً، المحترفين قاموا يستخدمون Rust بقوة في الباكيند (عبر نظام مكتبة
alloy). - الاتصال المباشر بمطوري البلوكات (Block Builders): المحترفين يبتعدون عن الميمبول العام كلياً. يرسلون معاملاتهم عبر ريليهات خاصة (Private Relays) مثل Flashbots (MEV-Share / MEV-Boost) أو BeaverBuild أو Titan. المعاملة تروح على شكل "Bundle" مباشرة للـ Validator. أنت حرفياً تقول للـ فاليليتور: "حط معاملتي مباشرة ورا معاملة الأوراكل اللي بتنزل سعر الـ ETH، وفي المقابل بعطيك 50% من أرباح التصفية مالي كبخشيش (Tip)".
تحت يظهر المخطط المنطقي لكيفية تفاعل مكونات هذا البوت مع بعضها:
[Blockchain Node / Websocket]
│ (يسمع البلوكات الجديدة ومعاملات الميمبول بدون توقف)
▼
[Parser & DB] ────► [Health Factor Calculator]
│ (يتفعل إذا كان الـ HF <= 1)
▼
[Flashbots / MEV Builder] ──► [Private Validator] ──► [Profit]
بنية العقد الذكي المنفِّذ (Solidity)
عشان تظبط معاك عملية التصفية (liquidation) في ترانزأكشن واحدة ذريّة (atomic transaction) وما تضربش، لازم تحط كل لوجيك التعامل مع القرض الومضي (Flash Loan) وبروتوكول الإقراض جوة عقد ذكي مخصص (custom smart contract). فكرة إنك تبعت ترانزأكشنز منفصلة من محفظتك (EOA) دي إنسىاها خالص؛ لأن البوتات المنافسة (MEV bots) هتعمل عليك فرونت ران (front-run) وتخطف منك الضامنة (collateral) في لمح البصر.
تحت ده نموذج هيكلي لعقد ذكي مكتوب بـ Solidity ^0.8.20، مِتظبط ومُحسّن عشان يتعامل مع Aave v3 من خلال ميكانيزم الـ Flash Loan.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
interface IPool {
function liquidationCall(
address collateralAsset,
address debtAsset,
address user,
uint256 debtToCover,
bool receiveAToken
) external;
function flashLoanSimple(
address receiverAddress,
address asset,
uint256 amount,
bytes calldata params,
uint16 referralCode
) external;
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
}
contract LiquidatorBot {
address public immutable owner;
IPool public immutable aavePool;
modifier onlyOwner() {
require(msg.sender == owner, "Mesh el-owner");
_;
}
constructor(address _pool) {
owner = msg.sender;
aavePool = IPool(_pool);
}
// ستراكت عشان نمرر الباراميترز جوة الكولباك بتاع الفلاش لون
struct LiquidationParams {
address collateralAsset;
address debtAsset;
address userToLiquidate;
uint256 debtToCover;
}
// 1. تريجر خارجي: بيستدعيه الباكيند بتاعك (مكتوب بـ Rust/Go/Python) أول ما يلقط الهدف
function calmedDownTrigger(
address _collateralAsset,
address _debtAsset,
address _userToLiquidate,
uint256 _debtToCover
) external onlyOwner {
bytes memory params = abi.encode(
LiquidationParams({
collateralAsset: _collateralAsset,
debtAsset: _debtAsset,
userToLiquidate: _userToLiquidate,
debtToCover: _debtToCover
})
);
// بنطلب فلاش لون من Aave على قد حجم دين الحوت بالظبط
aavePool.flashLoanSimple(
address(this),
_debtAsset,
_debtToCover,
params,
0
);
}
// 2. الكولباك من Aave: بيشتغل جوة نفس الترانزأكشن بَعد ما الفلوس تنزل في بالانس العقد
function executeOperation(
address asset,
uint256 amount,
uint256 premium,
address initiator,
bytes calldata params
) external returns (bool) {
require(msg.sender == address(aavePool), "Caller mesh valid");
LiquidationParams memory lParams = abi.decode(params, (LiquidationParams));
// بندي صلاحية (approve) للبول عشان يسحب الفلوس اللي استلفناها عشان نعمل التصفية
IERC20(lParams.debtAsset).approve(address(aavePool), lParams.debtToCover);
// بنستدعي عملية التصفية نفسها
// الباراميتر الأخير false معناه إننا عايزين ناخد الضامنة كاش ونضيفة مش مشتقات الـ aToken بتاعتهم
aavePool.liquidationCall(
lParams.collateralAsset,
lParams.debtAsset,
lParams.userToLiquidate,
lParams.debtToCover,
false
);
// في المرحلة دي، الضامنة اللي صفيناها (زي الـ ETH مثلاً) بقت موجودة في بالانس العقد
// المطلوب: نعمل سواب (swap) للضامنة دي على DEX (زي Uniswap أو 1inch) ونرجعها لعملة الدين (زي USDT مثلاً)
// عشان نغطي أصل القرض (amount) + عمولة الفلاش لون (premium)
uint256 totalOwed = amount + premium;
// [هنا بيتحط لوجيك استدعاء ()swap على Uniswap v3 / 1inch Router]
// في الآخر لازم يطلع معانا مبلغ أكبر من أو بيساوي totalOwed في البالانس ويكون بعملة debtAsset
// بنوافق على تجميعة سداد الفلاش لون
IERC20(lParams.debtAsset).approve(address(aavePool), totalOwed);
// بنبعت صافي الربح اللي فاضل لصاحب العقد علطول
uint256 profit = IERC20(lParams.debtAsset).balanceOf(address(this));
if (profit > 0) {
IERC20(lParams.debtAsset).transfer(owner, profit);
}
return true;
}
// فنكشن سحب الطوارئ لأي توكنز تتحشر جوة العقد
function withdrawToken(address _token) external onlyOwner {
uint256 balance = IERC20(_token).balanceOf(address(this));
IERC20(_token).transfer(owner, balance);
}
}تفاصيل مستخبية ومطبات قليل اللي يعرفها (معلومات ألفا من الكواليس)
لو كان الموضوع بالسهولة دي، كان كل مبرمج بقا مليونير في أسبوع. في الحقيقة، ورا كواليس اللعبة دي (اللي بنسميها الغابة المظلمة أو dark forest) في تعقيدات تقنية وتفاصيل ناشفة جداً.
1. حوار "التصفيات المرنة" (Close Factor)
مش هتعرف تصفي بوزيشن الحوت كله خبطة واحدة لو كان حجمه ملايين الدولارات. أغلب البروتوكولات الجديدة بيبقا فيها باراميتر اسمه Close Factor (غالباً بيكون متظبط على 50%). وده معناه إنك في الترانزأكشن الواحدة تقدر تسدد نص دين المستخدم بس.
يعني لو لقيت حوت عليه دين بـ 20,000,000 دولار، البوت بتاعك لازم يبعت ترانزأكشن تغطي 10,000,000 دولار كحد أقصى. الجزء اللي فاضل من الدين بيتعمل له إعادة حساب، ومؤشر الأمان (Health Factor) بتاعه بيفوق شوية، ولو البوزيشن لسه في زون المخاطرة، تقدر تصفيه تاني في البلوك اللي بعده.
2. تهنيج الأوراكلز (Oracles) والتصفيات "الوهمية"
الحيتان التقيلة مش بتسيب بوزيشناتها للهوا. غالباً بيبقوا مأمنين نفسهم بأنظمة أوتوماتيكية لامركزية (زي Gelato network أو Chainlink Automation) بتضخ مارجن (top-up) فوراً أول ما الـ HF يتهز وينزل.
وزيادة على كده، في لحظات التقلب العنيف (وقعات السوق الموت)، شبكة إيثيريوم أو شبكات الطبقة التانية (L2s زي Arbitrum و Base) بيحصل فيها زحمة وضغط غبي (Gas Spike). الأوراكل ممكن يبعت السعر الجديد على الشبكة (on-chain) متأخر ببلوك أو بلوكين. فالبوت بتاعك لو باصص على سعر السبوت للمشتقات برة الشبكة (على Binance مثلاً)، هيبعت ترانزأكشن التصفية على أساس إن الـ HF بقا تحت الـ 1، بس على مستوى العقد الذكي الترانزأكشن هتضرب REVERT؛ لأن الأوراكل جوة الشبكة لسه ما حدثش السعر. وبكده هتكون خسرت فلوس الجاز اللي اتدفع في الهوا على ترانزأكشن ما اتنفذتش.
3. الحماية من الفرونت رانينج عن طريق الـ RPCs الخاصة
لما البوت بتاعك يبعت حزمة (bundle) من خلال Flashbots، إنت بتنافس الباحثين التانيين (searchers) على أساس مين هيوزع ربح أكتر مع الـ validator. لو لقيت تصفية هتعمل لك ربح 10,000 دولار، ومنافسك ضبط البوت بتاعه إنه يدي للـ validator حوالي 99% من الربح ده كرشوة (Gas Tip)، هو اللي هياخد التصفية ويقفل البلوك—حتى لو هيطلع بصافي 100 دولار بس—والترانزأكشن بتاعتك إنت هتترفض.
هكر استراتيجي: في الشبكات اللي الجاز فيها رخيص جداً وسريعة (زي Base و Arbitrum و Solana)، حزم الـ Flashbots التقليدية بتشتغل بشكل مختلف أو مش موجودة أصلاً بالشكل المتعارف عليه. هناك اللي بيكسب هو اللي قريب فيزيائياً من الـ validators (يعني الـ ping بتاعه مع الـ RPC node قليل جداً) واللي بيعرف يغرق الشبكة ترانزأكشنز (spamming) ورا بعضها باستخدام اتصالات gRPC مخصصة.
تشيك ليست: ازاي تبني استراتيجية حوالين تصفيات الحيتان
لو عايز تقوم سيستم مراقبة (monitoring) خاص بيك أو تتداول على شلالات التصفيات دي مانيوال أو نص أوتوماتيك، تمشي على الخطوات دي بالترتيب:
- تجميع لستة الأهداف: اكتب سكريبت يلم لك عناوين المقترضين من البروتوكولات الكبيرة (Aave, Compound, Spark, Morpho, Radiant). فلتر العناوين اللي حجم الضامنة فيها معدي الـ 1,000,000 دولار.
- حاسبة التريجرز: اعمل موديل حسابي ياخد أوزان البوزيشنز الحالية للحيتان اللي بتراقبها، ويحسب السعر بالظبط اللي عنده الـ HF هيلمس 1.0000.
- ربط التنبيهات: اربط النقط الحرجة دي بسيستم بيقرا الـ order books بتاعة البورصات. أول ما سعر السوق يقرب من نقطة انفجار الحوت بأقل من 1.5%، السيستم لازم يضرب إنذار بأعلى أولوية (High Priority).
- تحديد طريقة السبوبة (Monetization):
- للتيمات اللي معاها سيولة وتقل: تشغيل بوت MEV بيور، وتجهيز بنية الفلاش لون، وخناقة على مساحة البلوك من خلال private relays.
- للمتداولين الأفراد (Retail): تفتح مركز شورت (short) عنيف في أسواق الفيوتشرز/البربتشوالز، اعتماداً على الدامب الشلالي اللي هيحصل لما البوتات تبدأ ترمي ضامنة الحوت في السوق غصب عنه (compulsory market sell).
سوق التصفيات في الـ DeFi عبارة عن رياضيات بحتة وسرعة تنفيِذ. اللي بيعرف يقرا حالة البلوكشين (blockchain state) ويبرمج حساب النقط الحرجة، دايماً هيكون سابق محللين الشارت والتحليل الفني التقليديين بمسافات ضوئية.