العقود
يتكوّن Duel من ستة عقود، خمسة منها منشورة على Robinhood Chain وواحد لا يُنشر أبدًا، مبنية على نشر Uniswap V4 في الشبكة، باستخدام Solidity 0.8.26 وFoundry وOpenZeppelin وv4-core. وتعيش المبارزات على الشبكة: يقرؤها التطبيق عبر خادم الموقع أو مباشرة، ويقرأ تاريخها من مفهرس لأحداث الشبكة.
| العقد | الدور |
|---|---|
DuelFactory | يطلق مبارزة في معاملة واحدة: رمزين، وثلاثة مجمّعات، ومراكز مقفلة، وعمليات الشراء عند الإطلاق الخاصة بالمنشئ. ويملك الإعدادات المحدودة للمبارزات المستقبلية؛ ويلتزم الإطلاق بالإعدادات التي قرأها مُطلِقه (configHash) ويُلغى إذا سرت إعدادات أخرى في الأثناء. |
DuelHook | الـhook الخاص بـ Uniswap V4 الذي تتشاركه المجمّعات الثلاثة لكل مبارزة: الرسوم، وضريبة مكافحة القنص، وحرق التبديل، وإعادة الموازنة، ومتوسط النسبة، والجولات وعمليات إعادة الشراء، إضافةً إلى صندوق كل مبارزة ورسوم منشئها ورسوم البروتوكول. |
DuelToken | رمز ERC-20 العادي لكل جانب: مليار وحدة، قابل للحرق، بلا مالك، مع دعم permit (EIP-2612). |
DuelRouter | الموجّه ذو المدخل المحدد الذي يتداول عبره التطبيق، بما في ذلك permit البيع؛ وهو وحده يبيع جانبًا على عدة مراحل حين لا يستطيع مجمّع ETH الخاص به استيعاب البيع دفعة واحدة (SALE_PASSES)، وما لا يستطيع ذلك المجمّع إعادة شرائه حتى عندها عبر الجانب الآخر (sell). ويعمل أي موجّه V4 كذلك، في مبادلة واحدة. |
DuelLens | واجهات للقراءة فقط تجمع حالة المبارزة للتطبيق. |
DuelSimulator | لا يُنشر أبدًا. يضع التطبيق شيفرته على عنوانك أنت خلال استدعاء واحد للقراءة فقط (state override)، كي تُنفَّذ الصفقة كما سترسلها وتجيب عمّا ستحصل عليه وأين ستستقر النسبة بعد إعادة موازنة المجمّعات. |
الإصدار
منصة الإطلاق هذه هي Duel V1، واسمها الرمزي Petunia. ويعلن ذلك كل عقد من عقودها (VERSION() وCODENAME() على المصنع والـhook والموجّه والـlens)، ويحتفظ به كل رمز تطلقه إلى الأبد (LAUNCHPAD_VERSION() وLAUNCHPAD_CODENAME()): ويعرضه قسم «نبذة» في صفحة المبارزة كما تقوله رموزها. وأي منصة إطلاق لاحقة، تُنشر على حدة، ستتابع الترقيم باسم رمزي خاص بها، وستعلن رموزها اسمها.
العناوين
| العقد | العنوان على Robinhood Chain |
|---|---|
DuelFactory | 0x3c6e7f9Bc507a442237AF1721B2294686495BD54 |
DuelHook | 0x5F746B7B1722e9bb3849EEa97061Df50F715AAEc |
DuelRouter | 0x9e484C17E7d263F084Ab226a72FCdf301145d6D1 |
DuelLens | 0x1677d3C0a1F9Ae00519AD08C68674f63fe945389 |
يعتمد Duel على عقود Robinhood Chain التالية:
| Uniswap V4 PoolManager | 0x8366a39CC670B4001A1121B8F6A443A643e40951 |
| Universal Router (الشبكة الرئيسية) | 0x204FAca1764B154221e35c0d20aBb3c525710498 |
| V4 Quoter | 0x8Dc178eFB8111BB0973Dd9d722ebeFF267c98F94 |
| Permit2 | 0x000000000022D473030F116dDEE9F6B43aC78BA3 |
الـhook
يحمل عنوان hook في V4 قائمة الـcallbacks التي ينفّذها. ويستخدم الـhook الخاص بـ Duel ما يلي:
| الـcallback | ما يفعله |
|---|---|
beforeInitialize | لا يمكن إلا للمصنع فتح مجمّع على الـhook، ولا يكون ذلك إلا لمجمّعات مبارزة مسجّلة. |
beforeAddLiquidity | لا يمكن إلا للمصنع إضافة السيولة، عند الإطلاق. |
beforeRemoveLiquidity | يُلغى دائمًا: السيولة مقفلة إلى الأبد. |
beforeDonate | يُلغى دائمًا. |
beforeSwap | يسوّي جولة منتهية، ويحدّث المتوسطات، ويقتطع الرسوم والضرائب. |
afterSwap | يقتطع الرسوم المستحقة على المبلغ الذي لم تحدده المبادلة، ويتحقق من أن المبادلة التي اقتُطعت رسومها مسبقًا اكتملت بالكامل، ثم يعيد موازنة المجمّعات الثلاثة. |
تُقتطع الرسوم عبر return deltas الخاصة بالـhook، لذا تسري أيًّا كان من يوجّه المبادلة.
من يستطيع ماذا
| الجهة | تستطيع |
|---|---|
| أي أحد | الإطلاق، والتداول، وتسوية الجولات المنتهية، وتشغيل مطالبات المنشئ أو الخزينة، وتطبيق الشروط المقترحة بعد مرور 48 ساعة عليها |
| منشئ المبارزة | تلقّي رسوم المنشئ لتلك المبارزة؛ وتسليم الدور، مع رسومه، إلى عنوان يقبله |
| مالك المصنع | إيقاف عمليات الإطلاق الجديدة؛ وتغيير الشروط المحدودة للمبارزات المستقبلية أو خزينة البروتوكول بعد 48 ساعة. وتتلقى الخزينة الحالية رسوم البروتوكول المتراكمة وقت المطالبة. خفض حصة البروتوكول من رسوم المبادلة في كل المبارزات فورًا، أو رفعها من جديد، دون تجاوز شروطها أبدًا. |
| لا أحد | سحب السيولة، أو سك الرموز، أو نقل صندوق، أو تغيير الرسوم التي يدفعها متداولو مبارزة قائمة أو حصة منشئها، أو رفع حصة البروتوكول فوق شروط مبارزة، أو انتزاع دور المنشئ في مبارزة، أو ترقية العقود |
المزيد
- الأمان: ما الذي يحمي الأموال، وكيف جرى التحقق من ذلك.
- البناء على Duel: قراءة المبارزات والتداول من شيفرتك الخاصة.