الملخص: ناقشنا في المقال آلية الإقراض الرقمي (Crypto Lending) وتصفيات المراكز (Liquidations) في بروتوكولات الـ Web3 مثل (Aave v3 و Morpho Blue). استعرضنا المؤشرات الأساسية مثل (Health Factor و LTV و Liquidation Threshold)، وسيناريوهات الانزلاق السعري (Slippage) الشديدة عند تعثر أوراكل Chainlink، بالإضافة إلى تقديم سكريبت بلغة Python للمراقبة والتصفية التلقائية للمراكز.
كيف يعمل الإقراض الرقمي وأين تكمن مخاطر التصفية؟
الإقراض في عالم الكريبتو ليس مثل البنوك التقليدية؛ لا توجد معاملة ورقية ولا موظف يطلب منك كشف حساب بنكي أو ضمانات عقارية من أملاك العائلة. في الـ Web3، لا أحد يهتم باسمك، أو سجلك الائتماني، أو خططك المستقبلية. الحاكم الوحيد هنا هو الرياضيات الصارمة للعقود الذكية: تضع ضمانًا (collateral)، وتحصل على قرض مضمون بالزيادة (overcollateralized loan)، وإذا غفلت عن معامل الصحة (Health Factor) الخاص بك — ستلتهم بوتات التصفية ضامنتك بالكامل في أجزاء من الملي ثانية.
لنأخذ السيناريو الكلاسيكي على Aave v3 أو Morpho Blue. تودع ما قيمته $10,000 من عملة WBTC لتقترض $6,000 من USDC. لماذا؟ لتتجنب بيع البيتكوين الخاص بك وبالتالي عدم تحقيق أرباح رأسمالية (للتهرب من الضرائب)، وفي نفس الوقت تحصل على سيولة نقدية لتدخل بها في عملة ميم جديدة أو لتطوير أجهزتك. على الورق، يبدو الأمر كأنه الفرصة الذهبية.
لكن فجأة، ينهار السوق بنسبة 18% خلال 15 دقيقة فقط. تتبخر السيولة من دفتر الطلبات (Order Book). يقوم أوراكل Chainlink بتحديث السعر متأخرًا بضعة كتل (blocks) بسبب ازدحام الشبكة، وتتجه مركزك مباشرة إلى جحيم التصفية.
تشريح عملية التصفية: لماذا يتبخر ضمانك في غمضة عين؟
المؤشر الأساسي الذي يجب عليك مراقبته على مدار الساعة (24/7) هو معامل الصحة Health Factor (HF). المعادلة بسيطة للغاية:
HF = ∑ (Collaterali × LTVi) / Total Borrowed
إذا كان HF > 1، فأنت في أمان. أما إذا أصبح HF ≤ 1، فإن مركزك يصبح متاحًا للتصفية لأي شخص على الشبكة يملك سكريبت جاهز للتنفيذ.
| المعيار | الشرح | مثال واقعي (مجمع ETH) |
|---|---|---|
| Max LTV | الحد الأقصى لنسبة القرض المسموح بها مقابل الضمان | 80% ($800 قرض مقابل $1000 من ETH) |
| Liquidation Threshold (LT) | الحد الذي تصبح عنده المركز قابلة للتصفية | 82.5% |
| Liquidation Bonus | الخصم الذي يحصل عليه المصفّي عند شراء الضمان | 5% |
| Reserve Factor | حصة البروتوكول من عوائد الفوائد | 15% |
مهلاً، لا تنخدع. على الورق، نسبة 82.5% تبدو هامش أمان ممتاز، لكن في الواقع يجب أن تحسب حساب الانزلاق السعري الوهمي ورسوم الغاز (Gas) على الشبكة الرئيسية. عندما يرسل أوراكل من نوع Push السعر المحدث إلى العقد الذكي، تكون بوتات الـ MEV واقفة في الطابور داخل حزمة Flashbots. تشتري مركزك بخصم 5%، وتسدد دينك فورًا عبر قرض خاطف (Flash Loan) على Uniswap v3 وتجني الربح الصافي لحسابها.
النتيجة؟ تبقى أنت مع الـ USDC التي أنفقتها بالفعل في مكان ما، بينما يختفي الـ WBTC الخاص بك تمامًا. يأخذ البروتوكول الغرامة، وياخذ البوت الفارق (Spread)، وتخرج أنت بالخسارة الكاملة.
سكريبت المصفّي: كيف ترصد البوتات نقاط ضعفك؟
قبل ستة أشهر، شهدت بنفسي على شبكة Arbitrum كيف تسبب أوراكل معطوب في تبخير إيداعات بقيمة 200 ألف دولار في غضون ثلاثة كتل فقط. كتابة سكريبت تصفية أمر بسيط جدًا، لكن المحك الحقيقي يكمن في الأجزاء من الملي ثانية والوصول المباشر إلى موصلات MEV.
إليك نموذجًا أوليًا يعمل بلغة Python باستخدام مكتبة web3.py، يقوم بمراقبة المقترض في الـ LendingPool ويجهز المعاملة فورًا إذا هبط الـ HF عن 1.
import os
import time
from web3 import Web3
from web3.exceptions import ContractLogicError, TransactionNotFound
# ------------------------------------------------------------------------------
# 1. إعدادات التهيئة والاتصال
# ------------------------------------------------------------------------------
RPC_URL = os.getenv("RPC_URL", "https://arb-mainnet.g.alchemy.com/v2/YOUR_API_KEY")
PRIVATE_KEY = os.getenv("PRIVATE_KEY", "0x_YOUR_PRIVATE_KEY")
w3 = Web3(Web3.HTTPProvider(RPC_URL))
if not w3.is_connected():
raise RuntimeError("فشل الاتصال برابط الـ RPC. تأكد من صحة متغيّر RPC_URL.")
ACCOUNT = w3.eth.account.from_key(PRIVATE_KEY)
# عقود Aave v3 على شبكة Arbitrum
POOL_ADDRESS = Web3.to_checksum_address("0x794a61358D6845594F94dc1DB02A252b5b4814aD")
DATA_PROVIDER_ADDRESS = Web3.to_checksum_address("0x69FA0fee221AD11012B2f52097e8F6B7EAcF57E7")
TARGET_USER = Web3.to_checksum_address("0x0000000000000000000000000000000000000000")
COLLATERAL_ASSET = Web3.to_checksum_address("0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f") # WBTC
DEBT_ASSET = Web3.to_checksum_address("0xaf88d065e77c8cC2239327C5EDb3A432268e5831") # USDC
# ------------------------------------------------------------------------------
# 2. الـ ABI
# ------------------------------------------------------------------------------
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"
},
{
"inputs": [
{"internalType": "address", "name": "collateralAsset", "type": "address"},
{"internalType": "address", "name": "debtAsset", "type": "address"},
{"internalType": "address", "name": "user", "type": "address"},
{"internalType": "uint256", "name": "debtToCover", "type": "uint256"},
{"internalType": "bool", "name": "receiveAToken", "type": "bool"}
],
"name": "liquidationCall",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
DATA_PROVIDER_ABI = [
{
"inputs": [
{"internalType": "address", "name": "asset", "type": "address"},
{"internalType": "address", "name": "user", "type": "address"}
],
"name": "getUserReserveData",
"outputs": [
{"internalType": "uint256", "name": "currentATokenBalance", "type": "uint256"},
{"internalType": "uint256", "name": "currentStableDebt", "type": "uint256"},
{"internalType": "uint256", "name": "currentVariableDebt", "type": "uint256"},
{"internalType": "uint256", "name": "principalStableDebt", "type": "uint256"},
{"internalType": "uint256", "name": "scaledVariableDebt", "type": "uint256"},
{"internalType": "uint256", "name": "stableBorrowRate", "type": "uint256"},
{"internalType": "uint256", "name": "liquidityRate", "type": "uint256"},
{"internalType": "uint40", "name": "stableRateLastUpdated", "type": "uint40"},
{"internalType": "bool", "name": "usageAsCollateralEnabled", "type": "bool"}
],
"stateMutability": "view",
"type": "function"
}
]
ERC20_ABI = [
{
"inputs": [
{"internalType": "address", "name": "owner", "type": "address"},
{"internalType": "address", "name": "spender", "type": "address"}
],
"name": "allowance",
"outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{"internalType": "address", "name": "spender", "type": "address"},
{"internalType": "uint256", "name": "amount", "type": "uint256"}
],
"name": "approve",
"outputs": [{"internalType": "bool", "name": "", "type": "bool"}], # تعديل: تصحيح النوع إلى bool
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [{"internalType": "address", "name": "account", "type": "address"}],
"name": "balanceOf",
"outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}],
"stateMutability": "view",
"type": "function"
}
]
pool = w3.eth.contract(address=POOL_ADDRESS, abi=POOL_ABI)
data_provider = w3.eth.contract(address=DATA_PROVIDER_ADDRESS, abi=DATA_PROVIDER_ABI)
debt_token = w3.eth.contract(address=DEBT_ASSET, abi=ERC20_ABI)
tx_in_flight = False
# ------------------------------------------------------------------------------
# 3. دالة مساعدة لحساب الجاز والـ Nonce بأمان
# ------------------------------------------------------------------------------
def get_fee_parameters():
"""تستعلم عن معاملات معيار EIP-1559 مع وجود آلية احتياطية للشبكات التي لا تدعم baseFeePerGas."""
latest_block = w3.eth.get_block('latest')
base_fee = latest_block.get('baseFeePerGas')
if base_fee is not None:
max_priority_fee = w3.to_wei(0.1, 'gwei')
max_fee = base_fee * 2 + max_priority_fee
return {
'maxFeePerGas': max_fee,
'maxPriorityFeePerGas': max_priority_fee
}
else:
# احتياطي لشبكات Legacy أو شبكات L2 المخصصة
return {'gasPrice': w3.eth.gas_price}
def ensure_allowance(required_amount: int) -> bool:
"""تتأكد من وجود السماحية (allowance) وتنفذ الـ approve مع التحقق الإجباري من حالة الإيصال (receipt)."""
current_allowance = debt_token.functions.allowance(ACCOUNT.address, POOL_ADDRESS).call()
if current_allowance >= required_amount:
return True
print("[*] الـ Allowance غير كافٍ. جاري إرسال معاملة الـ approve...")
nonce = w3.eth.get_transaction_count(ACCOUNT.address, 'pending')
tx_params = {
'chainId': w3.eth.chain_id,
'from': ACCOUNT.address,
'nonce': nonce,
**get_fee_parameters()
}
tx = debt_token.functions.approve(POOL_ADDRESS, 2**256 - 1).build_transaction(tx_params)
signed_tx = w3.eth.account.sign_transaction(tx, PRIVATE_KEY)
tx_hash = w3.eth.send_raw_transaction(signed_tx.raw_transaction)
receipt = w3.eth.wait_for_transaction_receipt(tx_hash, timeout=30)
if receipt['status'] == 1:
print(f"[+] تم تأكيد الـ Approve بنجاح في البلوك {receipt['blockNumber']}")
return True
else:
print(f"[!] خطأ: تم رفض معاملة الـ Approve (Reverted)!")
return False
# ------------------------------------------------------------------------------
# 4. المنطق الرئيسي لتنفيذ التصفية (Liquidation)
# ------------------------------------------------------------------------------
def execute_liquidation(user_address: str):
global tx_in_flight
if tx_in_flight:
print("[!] العملية المحلية معطلة حالياً (هناك معاملة قيد الإرسال بالخلفية).")
return
# تعديل رقم 9: إعادة فحص سريعة لمؤشر الصحة (HF) قبل بدء التجهيز المكلف
account_data = pool.functions.getUserAccountData(user_address).call()
health_factor = account_data[5] / 10**18
if health_factor >= 1.0:
print(f"[-] إلغاء: تغير مؤشر صحة المركز (HF) إلى {health_factor:.6f} (أكبر من أو يساوي 1.0)")
return
# تعديل رقم 11: حساب الدين الدقيق بعملة USDC
reserve_data = data_provider.functions.getUserReserveData(DEBT_ASSET, user_address).call()
actual_debt_tokens = reserve_data[1] + reserve_data[2] # الثابت + المتغير
if actual_debt_tokens == 0:
print("[!] لا يوجد دين قائم بهذه العملة تحديداً.")
return
debt_to_cover = actual_debt_tokens // 2
# التحقق من رصيدنا الحالي من عملة USDC
our_balance = debt_token.functions.balanceOf(ACCOUNT.address).call()
if our_balance < debt_to_cover:
print(f"[!] رصيد USDC غير كافٍ. المطلوب: {debt_to_cover}، المتوفر: {our_balance}")
debt_to_cover = our_balance
if debt_to_cover == 0:
return
# تعديل رقم 8: التحقق من نجاح تنفيذ الـ approve
if not ensure_allowance(debt_to_cover):
return
# نستخدم 'pending' nonce لتفادي أي تضارب داخل الحساب
nonce = w3.eth.get_transaction_count(ACCOUNT.address, 'pending')
tx_params = {
'chainId': w3.eth.chain_id,
'from': ACCOUNT.address,
'nonce': nonce,
**get_fee_parameters()
}
# تعديل رقم 5: محاكاة المعاملة مباشرة قبل التجميع
try:
estimated_gas = pool.functions.liquidationCall(
COLLATERAL_ASSET,
DEBT_ASSET,
user_address,
debt_to_cover,
False
).estimate_gas(tx_params)
tx_params['gas'] = int(estimated_gas * 1.2)
except ContractLogicError as e:
print(f"[!] العقد الذكي رفض محاكاة أمر liquidationCall: {e}")
return
except Exception as e:
print(f"[!] حدث خطأ أثناء تقدير الجاز: {e}")
return
# التجميع والإرسال
try:
tx_in_flight = True
tx_data = pool.functions.liquidationCall(
COLLATERAL_ASSET,
DEBT_ASSET,
user_address,
debt_to_cover,
False
).build_transaction(tx_params)
signed_tx = w3.eth.account.sign_transaction(tx_data, PRIVATE_KEY)
tx_hash = w3.eth.send_raw_transaction(signed_tx.raw_transaction)
print(f"[+] تم إرسال المعاملة بنجاح! هادي المعاملة (Tx Hash): {tx_hash.hex()}")
# تعديل رقم 10: تحليل حالة إيصال عملية التصفية
receipt = w3.eth.wait_for_transaction_receipt(tx_hash, timeout=30)
if receipt['status'] == 1:
print(f"[تم بنجاح] تمت تصفية المركز بنجاح في البلوك {receipt['blockNumber']}!")
else:
print(f"[فشل] المعاملة تمت إضافتها للبلوك ولكنها ردت بـ REVERT (Status 0). الجاز راحت عليك.")
except Exception as e:
print(f"[!] خطأ حرج أثناء الإرسال: {e}")
finally:
tx_in_flight = False
# ------------------------------------------------------------------------------
# 5. المراقبة
# ------------------------------------------------------------------------------
def monitor_user(user_address: str):
account_data = pool.functions.getUserAccountData(user_address).call()
health_factor = account_data[5] / 10**18
print(f"المستهدف: {user_address} | مؤشر الصحة (Health Factor): {health_factor:.6f}")
if health_factor < 1.0:
print("[!] تم اكتشاف مركز مؤهل للتصفية فوراً!")
execute_liquidation(user_address)
if __name__ == "__main__":
while True:
try:
monitor_user(TARGET_USER)
time.sleep(1)
except KeyboardInterrupt:
print("\n تم إيقاف البوت يدوياً بواسطة المستخدم.")
break
except Exception as e:
print(f"خطأ: {e}")
time.sleep(3)في شبكات الـ L2 لا يوجد mempool إطلاقًا. كل شيء يعمل بمبدأ من يأتي أولاً يُخدم أولاً (FCFS). السبق لمن يحجز مقعده أولاً.
وبينما ينتظر السكريبت الخاص بك انتهاء time.sleep(1)، تكون بوتات التداول عالي التردد (HFT) متصلة عبر السوكت في نفس الكبينة التي يعمل فيها الموثق (Validator). فرصتك لتسبق ندء الهامش (Margin Call) يدويًا هي صفر مطلق.
أين تكمن الأرباح الحقيقية؟ (ولماذا يستمر الجميع في استخدام الرافعة المالية؟)
لماذا يتحمل الجميع هذه المخاطرة؟
- مرابحة أسعار الفائدة (Interest Rate Arbitrage): تقترض USDT بفائدة 4% APY على منصة (A) وتودعها في خزينة (Vault) بفائدة 12% APY على منصة (B). الفارق البالغ 8% يذهب مباشرة إلى جيبك. لكن انتبه، هناك مخاطرة في العقد الذكي: إذا فقدت المنصة (B) ربطها (depeg) أو تعرضت لاختراق عبر التداخل (reentrancy)، فستظل مدينًا بأموال حقيقية للمنصة (A).
- تفويض السيولة وترميز الضمانات (Collateral Tokenization): القِ نظرة على Pendle أو Morpho. تودع عملة stETH، وتحصل على عملات مستقرة، وتشتري بها رمز PT (Principal Tokens) بعائد ثابت. هل الأمر معقد؟ نعم. هل هو مربح؟ للغاية — حتى تظهر المشاكل الأولى في أوراكل رموز الـ LST.
- التحسين الضريبي: تحقيق الأرباح = دفع الضرائب. أخذ قرض بضمان أصل ارتفعت قيمته = عدم وجود عملية بيع فعلية. لا بيع يعني لا ضرائب. عملي؟ إلى أقصى حد.
لكن المتداولين ينسون أثر الدومينو للتصفيات المتسلسلة. في مايو 2021 وأثناء انهيار منصة FTX، أصبحت بروتوكولات كاملة غير قادرة على السداد (Bad Debt) لأن سعر الضمان كان يهبط بأسرع من قدرة البوتات على إغلاق الديون. في النهاية، المتقرضون العاديون الذين أرادوا فقط تشغيل أموالهم المستقرة بفائدة أمنة هم من دفعوا الثمن.
مجمعات الهامش المعزول (Isolated Pools) مقابل Cross-Margin: وين الخاطورة و"اللغم" المتخبي؟
كثير من المبتدئين في الكريبتو يأكلون هوا بسبب جهلهم بأبسط قواعد هندسة إدارة المخاطر. في منهجيتين مختلفات تماماً: الـ Cross-Margin (القدر المشترك أو الحساب الشامل) والـ Isolated Markets (الأسواق المعزولة مثل Morpho أو Euler v2).
في الـ Cross-Margin (وهو الإعداد الافتراضي في Aave)، محفظة الضمانات (Collateral) تبعتك كلها شغالة كدرع واحد. يعني أودعت WBTC و ETH و DAI — وربطت عليهم قرض USDC. لو نزل سعر الـ WBTC بروعه، مخدة الـ DAI بتسندك وتغطي العجز. ممتاز ومرتب؟ صح، بس لو واحد من الأصول المضمونة هبط للقاع بدون فرامل (تذكروا مثلاً الـ depeg تبع stETH بـ 2022 أو احتيال شي bridged token)، يسحب محفظتك ومركزك بالكامل للهاوية... وبطير حسابك بـ Liquidation كامل وبدون رحمة.
بينما في مجمعات الـ Isolated Pools، أنت تعزل مخاطرة كل زوج بحد ذاته. مثلاً تعمل vault مخصص لـ wstETH / USDC.
[إيداعك] ---> [مجمع معزول أ (ETH/USDC)] ---> المخاطرة محصورة في المجمع أ فقط
---> [مجمع معزول ب (PEPE/USDC)] ---> PEPE انهار = الخسارة محصورة في المجمع بلو الـ Shitcoin اللي بالمجمع (ب) هبط 99% للقاع — ما بتخسر إلا اللي أودعته بالمجمع (ب) فقط. أما الـ ETH الأساسي تبعك بالمجمع (أ) فبكون بأمان تام وفي السليم.
صح، إنك تدير ثلاث مراكز مختلفة وجع رأس وتدفع عليها Gas Fees أكثر، بس هادي الاستراتيجية الذكية الوحيدة لما تتداول في ظل الفولاتيلتي والعواصف القوية بالسوق.
الأوراكل (Oracles): كيف ينضحك عليك وتتصفر بدون ما ينخترق العقد الذكي
السمارت كونتراكت لمنصة الإقراض أعمى وأبكم بطبعه، ما عنده أي فكرة كم سعر الـ ETH في هذه اللحظة؛ هو ببساطة بيوثق بالأوراكل (Oracle). وهنا تبدأ الدراما والحركات.
هذه أهم مشاكل الأوراكل اللي بتحرق الـ Deposits والسيولة تبعتك:
- Stale Prices (الأسعار المنتهية / البايتة). الأوراكل ما بيبعت السعر كل ثانية (هذا بيدمر أي provider بالـ gas fees)، بيبعت السعر بس يصير انحراف 0.5% مثلاً أو كل 24 ساعة (Heartbeat). فلو السوق عمل شمعة هبوط خاطفة (Wick) بنسبة 5% خلال 3 ثواني ورجع ارتد فوراً، الأوراكل ممكن يحدّث السعر بالقاع تماماً! العقد الذكي بشوف «0.99 HF»، بيعطي ضوء أخضر للمصفين (Liquidators)، وبياكلوك فوراً. السوق بيرتد بعدها، وأنت بتطلع بخفي حنين ومصفّر!
- Illiquid DEX Feeds (التلاعب بسعر الـ Spot). لو البروتوكول بيعتمد على TWAP Oracle من Uniswap v3 لعملة سيولتها ضعيفة، بجي هامور (Whale) ببيع كمية كبيرة بضغطة وحدة وبنزل السعر للأرض، وبيعمل كاسكيد تصفية (Cascade Liquidations) بالقرض، وبعدها برجع يشتري العملة برخص التراب. حركة كلاسيكية معروفة.
الجدول التالي بيوضح الحسبة الرياضية الحقيقية للخسائر عند التصفية عند مستويات هبوط مختلفة للضمان (مع فرض LTV أولي 75% و Liquidation Bonus بنسبة 5%):
| هبوط سعر الضمان | Health Factor | حالة المركز | خسارة المقترض من الإيداع الأولي |
|---|---|---|---|
| -5% | 1.26 | آمن | 0% (خسارة غير محققة على الضمان فقط) |
| -15% | 1.13 | منطقة خطر | 0% (يتطلب زيادة الضمان / Top-up) |
| -25% | 0.99 | تصفية (LIQUIDATION) | ~15-20% (غرامة المصفّي + الـ Spread) |
| -40% (Flash Crash) | < 0.80 | تصفير كامل (Rekt) | خسارة 100% من الضمان (ما بيبقى معك غير القرض اللي أخذته) |
قائمة النجاة: كيف تاخد قرض بدون ما تاكل Rekt
إذا قررت تدخل عالم القروض اللامركزية (DeFi Lending)، اتّبع قواعد الأمان الصارمة هذه. أنا شخصياً تعلمتها بالطريقة الصعبة بعد كم Revert ومصادرة إجبارية للمراكز.
- خلي الـ HF دايماً مش أقل من 1.5 - 1.8. انسى المخاطرة على الحافة مع HF بحدود 1.05. أي شمعة هبوط بسيطة على الشارت بتنهي وجودك.
- أتمت عملية دعم الضمان (Self-Kicker). استخدم خدمات مثل Gelato Automation أو Chainlink Automation. اعمل Bot بسيط أول ما ينزل الـ HF تحت 1.2 بيحول Stablecoins من محفظتك للعقد فوراً عشان يسدد جزء من الدين.
- راقب الأوراكل بذكاء. اعرف شو نوع الأوراكل المربوط بالمجمع تبعك. لو كان Chainlink push-type — راقب الـ heartbeat. ولو كان Pyth — افحص الـ confidence intervals.
- اعمل التحوط عن طريق الـ Perps. أخذت قرض بضمان ETH؟ افتح Short على الـ ETH في منصة عقود مشتقة برافعة 1x بنفس قيمة القرض. هيك بتثبت مخاطرك بالقيمة الدولارية (Delta-Neutral).
القروض في الكريبتو raverage وقوة ضاربة لرأس مالك، بس مع تداول عشوائي بدون دراية بصير مثل المقصلة الموقوتة. السمارت كونتراكت ما بفرمه ولا بيهمه توقعاتك للسوق!