कॉन्ट्रैक्ट
Duel छह कॉन्ट्रैक्ट हैं, जिनमें से पाँच Robinhood Chain पर डिप्लॉय हैं और एक कभी डिप्लॉय नहीं होता, और जो चेन के Uniswap V4 डिप्लॉयमेंट पर बने हैं। Solidity 0.8.26, Foundry, OpenZeppelin, v4-core। मुक़ाबले चेन पर रहते हैं: ऐप चेन को साइट के सर्वर के ज़रिए या सीधे पढ़ता है, और उनका इतिहास चेन के इवेंट के एक इंडेक्सर से।
| कॉन्ट्रैक्ट | भूमिका |
|---|---|
DuelFactory | एक ट्रांज़ैक्शन में मुक़ाबला लॉन्च करता है: दो टोकन, तीन पूल, लॉक की गई पोज़िशन, क्रिएटर की लॉन्च ख़रीद। आगे के मुक़ाबलों की सीमित कॉन्फ़िगरेशन रखता है; लॉन्च उस कॉन्फ़िगरेशन से बँधता है जो लॉन्च करने वाले ने पढ़ी (configHash), और अगर इस बीच कोई दूसरी लागू हो गई हो तो रिवर्ट हो जाता है। |
DuelHook | हर मुक़ाबले के तीनों पूलों का साझा Uniswap V4 hook: फ़ीस, एंटी-स्नाइप टैक्स, बदलाव पर बर्न, पुनर्संतुलन, अनुपात का औसत, राउंड और बायबैक, और हर मुक़ाबले का पॉट, क्रिएटर फ़ीस और प्रोटोकॉल फ़ीस। |
DuelToken | हर पक्ष का साधारण ERC-20: एक अरब यूनिट, बर्न करने योग्य, बिना मालिक, permit (EIP-2612) के साथ। |
DuelRouter | तय इनपुट वाला राउटर जिससे ऐप ट्रेड करता है, बिक्री का permit भी शामिल; सिर्फ़ यही किसी पक्ष को कई चरणों में बेचता है, जब उसका ETH पूल बिक्री को एक बार में नहीं ले सकता (SALE_PASSES), और जो वह पूल तब भी वापस नहीं ख़रीद सकता, उसे दूसरे पक्ष से होकर बेचता है (sell)। कोई भी V4 राउटर भी काम करता है, एक ही स्वैप में। |
DuelLens | सिर्फ़ पढ़ने वाले व्यू, जो ऐप के लिए मुक़ाबले की स्थिति इकट्ठा करते हैं। |
DuelSimulator | कभी डिप्लॉय नहीं होता। ऐप एक सिर्फ़-पढ़ने वाली कॉल (state override) के दौरान इसका कोड आपके ही पते पर रखता है, ताकि ट्रेड ठीक वैसे चले जैसे आप उसे भेजते, और बताए कि आपको क्या मिलेगा और पूलों के पुनर्संतुलन के बाद अनुपात कहाँ पहुँचेगा। |
वर्शन
यह लॉन्चपैड Duel V1 है, कोड नाम Petunia। इसका हर कॉन्ट्रैक्ट यह बताता है (फ़ैक्टरी, hook, राउटर और lens पर VERSION() और CODENAME()), और इसका लॉन्च किया हर टोकन इसे हमेशा के लिए रखता है (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
V4 hook के पते में उन callback की सूची होती है जिन्हें वह लागू करता है। Duel का hook इनका इस्तेमाल करता है:
| Callback | यह क्या करता है |
|---|---|
beforeInitialize | hook पर पूल सिर्फ़ फ़ैक्टरी खोल सकती है, और सिर्फ़ किसी मुक़ाबले के रजिस्टर्ड पूल। |
beforeAddLiquidity | लिक्विडिटी सिर्फ़ फ़ैक्टरी जोड़ सकती है, लॉन्च पर। |
beforeRemoveLiquidity | हमेशा रिवर्ट होता है: लिक्विडिटी हमेशा के लिए लॉक है। |
beforeDonate | हमेशा रिवर्ट होता है। |
beforeSwap | ख़त्म हुआ राउंड सेटल करता है, औसत अपडेट करता है, फ़ीस और टैक्स लेता है। |
afterSwap | उस रकम पर बनने वाली फ़ीस लेता है जिसे स्वैप ने तय नहीं किया, जाँचता है कि पहले से फ़ीस ली गई स्वैप पूरी भरी, फिर तीनों पूलों का पुनर्संतुलन करता है। |
फ़ीस hook के return delta से ली जाती है, इसलिए स्वैप को कोई भी रूट करे, यह लागू होती है।
कौन क्या कर सकता है
| कौन | क्या कर सकता है |
|---|---|
| कोई भी | लॉन्च, ट्रेड, ख़त्म हुए राउंड सेटल करना, क्रिएटर या ट्रेज़री के क्लेम शुरू करना, प्रस्तावित शर्तें उनके 48 घंटे पूरे होने पर लागू करना |
| मुक़ाबले का क्रिएटर | उस मुक़ाबले की क्रिएटर फ़ीस पाना; भूमिका, उसकी फ़ीस के साथ, उसे स्वीकार करने वाले पते को सौंपना |
| फ़ैक्टरी का मालिक | नए लॉन्च रोकना; 48 घंटे बाद आगे के मुक़ाबलों की सीमित शर्तें या प्रोटोकॉल ट्रेज़री बदलना। जमा हुई प्रोटोकॉल फ़ीस, क्लेम के समय की मौजूदा ट्रेज़री को मिलती है। सभी मुक़ाबलों की स्वैप फ़ीस में प्रोटोकॉल का हिस्सा तुरंत घटाना, या फिर बढ़ाना, पर कभी भी उनकी शर्तों से ज़्यादा नहीं। |
| कोई नहीं | लिक्विडिटी निकालना, टोकन मिंट करना, पॉट हटाना, चालू मुक़ाबले के ट्रेडरों की दी जाने वाली फ़ीस या उसके क्रिएटर का हिस्सा बदलना, प्रोटोकॉल का हिस्सा किसी मुक़ाबले की शर्तों से ऊपर ले जाना, किसी मुक़ाबले की क्रिएटर भूमिका छीनना, कॉन्ट्रैक्ट अपग्रेड करना |
और
- सुरक्षा: फ़ंड को क्या सुरक्षित रखता है, और इसकी जाँच कैसे हुई।
- Duel पर बनाएँ: अपने कोड से मुक़ाबले पढ़ना और ट्रेड करना।