Free

دع Claude يقرأ تجمّع Uniswap V3 في 5 دقائق

حقل liquidity في تجمّع Uniswap V3 ليس مالاً ولا عمق مبادلة. دع Claude يشرح لك كل حقل سهل الوقوع في فهمه الخاطئ.


من يلامس DeFi ينتهي به الأمر عاجلاً أو آجلاً وهو يحدّق في بيانات تجمّعات Uniswap V3. وفي تلك الشبكة من الأرقام على صفحة التجمّع، يوجد حقل واحد على الأقل يقرأه أغلب الناس بشكل خاطئ في المرة الأولى —— خطأ كبير بما يكفي لجعلك تظنّ أنّ تجمّعاً قيمته 100 مليون دولار يحوي 3.2 كوينتليون دولار من "السيولة" في داخله.

هذا المقال يقرأ تجمّعاً من أوّله إلى آخره في خمس دقائق، باستخدام smarts MCP مع Claude. بيانات حقيقية، تجمّع USDC/WETH 0.05% على mainnet.

استخراج كامل حالة التجمّع بجملة واحدة

بعد ربط smarts MCP، يستدعي Claude الدالة get_uniswap_v3_pool بـ slug هو univ3-usdc-weth-eth، فيعود بهذا:

protocol: Uniswap V3
pair: USDC/WETH
fee: 0.05%
price:
  1 WETH in USDC: 2310.3381
  1 USDC in WETH: 0.00043283
tick: 198868
liquidity: 3243712254364037809
liquidity_note: Uniswap V3 sqrt-formula virtual liquidity
                at the current tick. Not a USD amount and
                not the depth available to swap.
tvl_usd: 100,645,897.62
tokens:
  token0: USDC (decimals 6)
  token1: WETH (decimals 18)
block_number: 24959248

البيانات نفسها بسيطة. النقطة هي أنّ كل حقل يحمل فخّاً. حقلاً تلو الآخر.

token0 و token1 ليسا مرتّبين كما تتوقّع

يفترض الناس أنّ في تجمّع USDC/WETH يكون USDC هو "العملة الأساسية" و WETH هو "الأصل المسعّر". خطأ. يرتّب Uniswap V3 الـ token0 و token1 ترتيباً صارماً وفقاً للقيمة العددية للعنوانين. عنوان USDC 0xa0b8... أصغر من عنوان WETH 0xc02a...، لذا token0 = USDC و token1 = WETH.

هذا الترتيب يحكم كل حساب داخلي: اتجاه السعر، اتجاه الـ tick، وحدة قياس السيولة. انتقل إلى تجمّع آخر، مثلاً WETH/DAI، وقد ينقلب دور token0/token1 —— كل حدس بأنّ "ETH صاعد أم هابط؟" يحتاج إلى إعادة حساب.

من فوائد ترك Claude يقرأ التجمّع: يردّ السعر بعنوان واضح لكلا الاتجاهين، فلا تضطرّ إلى الحساب الذهني "أيّ جانب من الـ tick يخصّ أيّ عملة".

fee 0.05% يعني أنّ هذا تجمّع "زوج مستقر"

أربع شرائح رسوم شائعة في Uniswap V3 هي 0.01% / 0.05% / 0.30% / 1.00%.

  • 0.01%: عملة مستقرة مقابل عملة مستقرة (USDC/USDT)
  • 0.05%: أصول مرتبطة ارتباطاً عالياً (USDC/WETH وما يشبهها —— أزواج عميقة محدودة التذبذب)
  • 0.30%: أزواج اعتيادية
  • 1.00%: أزواج طويلة الذيل عالية التذبذب

استخدام USDC/WETH لشريحة 0.05% بدل 0.30% يقول: صانعو السوق يراهنون على الحجم لا على رسوم سمينة لكل صفقة، لأنّ التذبذب محدود والتدفّق هائل.

بمعرفة هذا، حالما ترى تجمّعاً جديداً برسوم 1% يمكنك التخمين: إمّا توكن جديد، أو زوج لا يهتمّ به أحد.

price يأتي مباشرة من tick الحالي —— لا يوجد "سعر آخر صفقة"

لا يحتوي حال تجمّع V3 على حقل مستقل اسمه "سعر آخر صفقة". السعر الحالي هو ما يقوله slot0.sqrtPriceX96، والـ tick هو تعبيره اللوغاريتمي. بمعنى آخر: ما لم يتداول أحد، يبقى السعر معلّقاً في مكانه، وهذا نموذج مختلف تماماً عن "آخر تنفيذ" لدى منصّات التداول المركزية.

(لمعرفة الأسعار التاريخية يستخدم oracle الداخلي لـ V3 —— حال التجمّع يحوي مصفوفة من مراكمات observation تتيح اشتقاق TWAP. تلك آلية مستقلّة.)

ما قرأناه للتوّ من 1 WETH = 2310.34 USDC هو "تسعير التجمّع الحالي"؛ المبادلة التالية تنطلق من هذا السعر وتدفعه على طول المنحنى إلى tick جديد.

tick هو إحداثي متقطّع للسعر اللوغاريتمي

tick: 198868 رقم يربك الجميع لأوّل مرّة. تشعر أنّه نوع من السعر، لكنه ليس بالدولار.

يجزّئ V3 السعر لوغاريتمياً: raw_price = 1.0001^tick، حيث raw_price هو wei من token1 مقسوماً على wei من token0 —— ليس سعر العرض. لتحويله إلى "1 ETH كم USDC" يجب ضربه إضافةً بـ 10^(decimals_token0 - decimals_token1). بعد هذا الضبط، يقابل الـ tick 198868 تقريباً 1 ETH ≈ 2310 USDC.

لماذا كل هذا الالتفاف؟ لأنّ تحويل السعر إلى لوغاريتمي يتيح لصانعي السوق وضع السيولة في نطاق سعري بعينه فقط —— مثلاً "بين 2200 و2400 فقط". الـ ticks المتقطّعة هي ملصقات تلك النطاقات. هذا هو الابتكار المميّز لـ V3 مقابل V2: السيولة المركّزة.

في الممارسة لا تحتاج إلى حساب الـ ticks. ما يلزمك معرفته: ارتفاع قيمة tick لا يعني بالضرورة ارتفاع السعر (يعتمد على من هو token0)، وخطوة tick واحدة تساوي تغيراً سعرياً بنسبة 0.01%.

حقل liquidity: الأسهل قراءةً بشكل خاطئ

هنا الفخّ الكبير: liquidity: 3243712254364037809.

19 رقماً، يبدو وكأنّه بمستوى wei. لكنّه ليس مالاً.

إنّه "السيولة الافتراضية" L من رياضيات Uniswap V3 —— معامل داخلي يعبّر عن ميل منحنى صنع السوق ضمن نطاق sqrt-price. وحدته ليست USD ولا يقارن بما يمتلكه التجمّع فعلاً.

استجابة الأداة تتضمّن تحذيراً صريحاً عبر liquidity_note:

Uniswap V3 sqrt-formula virtual liquidity at the current tick. Not a USD amount and not the depth available to swap.

لماذا الجزء الثاني؟ لأنّ خطأً شائعاً آخر هو قراءة liquidity على أنّه "كم يمكنني مبادلته الآن دون انزلاق". خطأ أيضاً. عمق المبادلة في V3 يحسب على شرائح: داخل نطاق الـ tick الحالي تستخدم هذا الـ L مع صيغة sqrt-price؛ بمجرّد أن تدفع المبادلة السعر عبر حدّ tick، تنتقل إلى النطاق التالي وتتحوّل إلى L الخاصّ به. كلّ حدّ تعبره يستبدل L جديداً، حتى تنتهي الصفقة. إذاً "كم يمكن مبادلته دون انزلاق" يعتمد على كم من L مودع في كل نطاق على المسار —— رقم واحد من slot0 لا يخبرك بشيء عن ذلك.

الخلاصة: لا تقارن حقل liquidity بـ USD، ولا تستخدمه لمقارنة "العمق" بين التجمّعات —— ذلك مضلّل.

TVL: كم من المال موجود فعلياً في التجمّع

tvl_usd: 100,645,897.62. هذا هو المال الحقيقي في التجمّع.

من أين يأتي هذا الرقم؟ هو الرصيد الفعلي للعقد من USDC مضافاً إليه رصيده الفعلي من WETH، كلٌّ مضروب في السعر الحالي بالدولار من DefiLlama، ثمّ يجمعان.

بالمقارنة مع حقل liquidity:

الحقل القيمة المعنى
liquidity 3.24 × 10¹⁸ معامل رياضي داخلي لـ V3، بلا وحدة
tvl_usd $100,645,897 المال الفعلي الذي يحوزه التجمّع

كلاهما يترجم في الكلام العادي إلى "السيولة"، لكنهما شيئان مختلفان. للسرد انظر إلى TVL، للحساب انظر إلى liquidity، ولا تخلطهما أبداً.

block_number: أنت تنظر إلى لقطة في زمن محدّد

تفصيل أخير: block_number: 24959248.

البيانات على السلسلة تأتي دائماً برقم بلوك. كل حقل سحبه Claude قُرئ في البلوك ذاته. هذا يعني أمرين:

  1. السعر والسيولة و TVL منسجمة فيما بينها (لا انجراف من نوع "السعر قبل 5 دقائق و TVL الآن")
  2. قد تكون مختلفة بعد ثانية واحدة

لمنطق المراقبة أو المراجحة، هذه هي الخاصيّة الفاصلة —— سحبة واحدة تمنحك رؤية متّسقة للعالم، دون قلق من فروقات زمنية بين الحقول.

وضعها قيد الاستخدام

بعد فهم كل ذلك، تنفتح صندوق الأدوات:

  • فحص صحّة التجمّع: اسحب الأرصدة الفعلية لـ token0/token1 (لا حقل liquidity) وتحقّق من تطابقها رياضياً مع TVL. أرصدة كبيرة وسعر بعيد عن القيمة العادلة قد يدلّ على فرصة مراجحة.
  • مقارنة بين شرائح الرسوم: لـ USDC/WETH تجمّعان عند 0.05% و 0.30%؛ تتقارب أسعارهما عادةً —— اتساع الفارق إشارة مراجحة.
  • مقارنة عبر السلاسل: قارن USDC/WETH على Ethereum mainnet بـ USDC/WETH على Base —— الفارق يحكي عن كلفة الجسر والسيولة.
  • مراقبة الـ ticks: تتبّع تحرّكات الـ tick لاكتشاف "اجتاز السعر للتوّ حدّاً ما".

كل هذا كان يتطلّب سابقاً تثبيت web3.py وكتابة سكربت وصيانة ABI واستئجار RPC. الآن كله على مستوى المحادثة مع Claude + MCP —— تسأل، فيقرأ.

لست بحاجة إلى الرياضيات لقراءة التجمّع

نموذج رياضيات V3 يحوي جداراً للدخول. sqrtPriceX96، الـ ticks، L، السيولة المركّزة —— هذه المفاهيم أعادت كثيرين أدراجهم. لكن في الممارسة 90% من احتياجك هو "هل هذا التجمّع سليم، هل فيه مال، كم السعر؟" —— بلا صيغ.

اجعل Claude مترجم V3 الخاصّ بك، يحوّل السيولة الافتراضية وترميز الـ ticks إلى عبارة بشريّة بسيطة من نوع "1 ETH = 2310 USDC، التجمّع يحوي 100 مليون دولار". القرارات من تلك النقطة فصاعداً تخصّك أنت.