स्मार्ट अनुबंध
इस पृष्ठ में प्रोटोकॉल v1.1.0 में मुख्य पूल और वाउचर अनुबंधों का वर्णन किया गया है। अनुबंध व्यवहार निपटान यांत्रिकी प्रदान करता है; यह जारीकर्ता प्रकटीकरण, पूल नियम या किसी विशेष उपयोग के लिए लागू अन्य लेनदेन शर्तों को प्रतिस्थापित नहीं करता है।
उपयोग अवधारणाएँ और शब्दावली शासन के बीच अंतर करने के लिएप्रतिबद्धता पूलसेSwapPool, और मुआवजे की प्रस्तुति, वादे की पूर्ति और डिस्चार्ज से स्वैप निपटान।
वाउचर (GiftableToken)
GiftableToken एक हैERC20टोकन के साथ यांत्रिकी जो एक जारीकर्ता वाउचर के लिए उपयोग कर सकता हैः
- अधिकृत मिंटिंग मालिक उन लेखकों को नामित कर सकता है जो
mintToके साथ टोकन जारी कर सकते हैं। - वैकल्पिक समाप्ति एक अवधि समाप्त
0अनुबंध स्तर की समाप्ति का कोई मतलब नहीं है। अन्यथा, स्थानांतरण, मोटिंग और जलने को कॉन्फ़िगर किए गए समय टिकट पर या उसके बाद वापस आ जाता है।expiredकॉल करके राज्यapplyExpiryसीधे। - आपूर्ति लेखांकन —
totalMintedऔरtotalBurnedकेवल मालिकों के लिएburnकार्य मालिक के पते द्वारा रखे गए टोकन जलाता है।
टोकन अनुबंध जारीकर्ता की वस्तुओं या सेवाओं की पहचान नहीं करता, भुनाने का मूल्य तय नहीं करता, क्षमता साबित नहीं करता और नकद में बदलने का वादा नहीं करता। GiftableToken केवल जारीकर्ता के अलग से प्रकाशित नियमों और व्यवहार के माध्यम से भुनाए जा सकने वाला वादा बनता है। जारीकर्ता उन शर्तों का सही वर्णन करने और उन्हें पूरा करने के लिए ज़िम्मेदार रहता है।
प्रतिबद्धता पूल (SwapPool)
SwapPool एक टोकन वॉल्ट और स्वैप-सेटलमेंट इंजन है. हालांकि यह उजागर करता हैERC20पूल नाम, प्रतीक और दशमलव संख्याओं के लिए मेटाडेटा, v1.1.0अनुबंध में पूल शेयर टोकन नहीं होते हैं। तरलता पूल में टोकन स्थानांतरित करके प्रदान की जाती है, और अनुबंध स्वामी उपलब्ध तरलताओं को वापस ले सकता है।
संरचना और वैकल्पिक निर्भरताएं
| विन्यास | अनसेट होने पर | सील योग्य पता स्लॉट |
|---|---|---|
tokenRegistry | किसी भी टोकन पूल के क्युरेशन चेक पास कर सकते हैं | हाँ |
tokenLimiter | जमाओं के पास अनुबंध स्तर की शेष सीमा नहीं है | हाँ |
quoter | कच्चे इनपुट की मात्रा को कच्ची उद्धृत आउटपुट राशि के रूप में माना जाता है | हाँ |
feePolicy | पूल शुल्क शून्य है | हाँ |
feeAddress | निर्दिष्ट प्राप्तकर्ता के लिए पूल शुल्क को वापस लेने योग्य शुल्क के रूप में नहीं लगाया जाता है | हाँ |
protocolFeeController | कोई प्रोटोकॉल शुल्क नहीं लिया जाता है | नहीं |
पांच सील बिट्स स्थायी रूप से धारा को बंद कर देते हैंfeePolicy, feeAddress, quoter, tokenRegistry और tokenLimiter उनके संबंधित सेटर्स के विरुद्ध पते।protocolFeeController और feesDecoupled आरंभिकरण मान हैं और उन पांच बिट्स में से नहीं हैं।
पते के स्लॉट को सील करना उस पते पर अनुबंध को फ्रीज नहीं करता है। एक सील रजिस्ट्री, लिमिटर, उद्धरण या शुल्क नीति और एक कॉन्फ़िगर किए गए प्रोटोकॉल-शुल्क नियंत्रक अभी भी बदल सकते हैं यदि इसका अपना शासन इसे अनुमति देता है। ERC-1967 प्रॉक्सी व्यवस्थापक भी पूल कार्यान्वयन को अपग्रेड कर सकता है। इसलिए एक सार्थक अपरिवर्तनीयता का दावा पूल मालिक, प्रॉक्सी प्रशासक और प्रत्येक विन्यासित निर्भरता के शासन पर निर्भर करता है.
स्वैप सेटलमेंट
स्वैप के लिए, SwapPool:
- जांच करता है कि इनपुट और आउटपुट टोकन वैकल्पिक रजिस्टर से गुजरते हैं और अनुरोधित इनपुट को वैकल्पિક पूल बैलेंस सीमा के साथ परीक्षण करता है।
- कॉल करने वाले से इनपुट टोकन निकालता है और वास्तव में प्राप्त राशि को मापता है। मूल्य निर्धारण इस मापी गई राशि का उपयोग करता है, जिसमें फीस-ऑन-ट्रान्सफर टोकन भी शामिल हैं।
- कॉन्फ़िगर किए गए कोटर से सकल उद्धरण प्राप्त करता है, या जब कोई कोटर सेट नहीं होता है तो कच्चे प्राप्त राशि का उपयोग करता है।
- पूल शुल्क और किसी अतिरिक्त प्रोटोकॉल शुल्क की गणना करता है, फिर उपलब्ध आउटपुट टोकन तरलता की जांच करता है।
- प्रोटोकॉल शुल्क को सीधे कॉन्फ़िगर किए गए प्रोटोकल प्राप्तकर्ता को भेजता है, नाममात्र शुद्ध आउटपुट को प्राप्तकर्ता पर स्थानांतरित करता है और जब एक शुल्क पते को कॉन्फ़िफिगर किया जाता है तो पूल शुल्क रिकॉर्ड करता है।
- विरासत का प्रसार करता है
Swapघटना और अधिक विस्तृतSwapSettlementघटना।
SwapSettlement प्रारंभकर्ता, दोनों टोकन, मापा इनपुट, सकल कोटेड आउटपुट, नामांकित आउटपुट भेजे गए, प्राप्तकर्ता पर वास्तव में देखे गए आउटपुट को रिकॉर्ड करता है, पूल शुल्क और प्रोटोकॉल शुल्क। नाममात्र और अवलोकन किए गए आउटपॉइंट अलग हो सकते हैं जब आउटपुट टोकन स्वयं एक स्थानांतरण शुल्क लेता है।fee विरासत में क्षेत्र Swap घटना केवल पूल शुल्क है।
छह-वस्तुwithdraw(tokenOut, tokenIn, value, recipient, minAmountOut, deadline) अधिभार सीमाबद्ध निष्पादन पथ है। यह समय सीमा के बाद या जब प्राप्तकर्ता की देखी गई शेष वृद्धि से नीचे होती हैminAmountOut. एकीकृतकर्ताओं को इसे पसंद करना चाहिए क्योंकि एक प्रदर्शित बोली अस्थायी हैः उद्धरण स्थिति, शुल्क नीति, तरलता, सीमाएं और Oracle डेटा निष्पादन से पहले बदल सकते हैं। पुराने तीन-और चार तर्क अधिभार उन पूल स्तर की सीमाओं प्रदान नहीं करते हैं.
अतिरिक्त शुल्क की गणना
पूल और प्रोटोकॉल शुल्क दोनों सकल कोटेड आउटपुट से कटौती किए जाते हैं। पूल शुल्क से कटौती नहीं की गई, और पूल अपनी पूरी गणना की गई फीस को बरकरार रखता है।
उदाहरण के लिए, 100 इकाइयों की सकल बोली परः
- 2% पूल शुल्क 2 इकाइयों को पूल के लिए प्राप्त होता है;
- उस पूल शुल्क पर लागू 10% प्रोटोकॉल दर एक और 0.2 इकाइयों को सीधे प्रोटोकॉलर प्राप्तकर्ता को भेजती है; तथा
- उपयोगकर्ता को 97.8 इकाइयां प्राप्त होती हैं।
प्रोटोकॉल गणना में गणना किए गए पूल शुल्क का अधिकतम उपयोग किया जाता है और एक अनुमानित 1% शुल्क आधार। यह बहुत कम पूल फीस को प्रोटोकॉल्स की गणना को लगभग शून्य तक कम करने से रोकता है। अमान्य संयुक्त दरें वापस आ जाती हैंFeeTooHigh, और एक उद्धरण जो शून्य पर सुलझाने के लिए रिवर्स InsufficientOutput.
मालिक और उन्नयन शक्तियां
अनुबंध के मालिक जमा किए गए पूल शुल्क एकत्र कर सकते हैं और किसी भी उपलब्ध पूल टोकन को चयनित गैर-शून्य पते पर स्थानांतरित करने के लिए withdrawLiquidity पर कॉल कर सकते है। जब शुल्क अलग हो जाते हैं, तो जमा किए जाने वाले शुल्क इस तरलता निकासी पथ से आरक्षित होते हैं; अन्यथा वे पूल बैलेंस का हिस्सा बने रहते हैं। पूल प्रतिभागियों को जमा की गई तरलताओं को स्थायी रूप से लॉक किया गया नहीं समझना चाहिए जब तक कि अतिरिक्त, सत्यापित शासन नियंत्रण उस परिणाम की पुष्टि न करें।
कॉन्फ़िगरेशन सीलिंग इस तरलता निकासी शक्ति को नहीं हटाती है। यह अलग ERC-1967 प्रॉक्सी प्रशासक के अपग्रेड पावर को भी नहीं हटाता है।
मूल्यांकन मॉड्यूल
सभी तीनों कोटेटर आगे और पीछे की बोली कार्यों को लागू करते हैंSwapPool और SwapRouter:
DecimalQuoter1:1 मूल्य-समानता परिकल्पना के तहत राज्य रहित दशमलव सामान्यीकरण।RelativeQuoterदशमलव सामान्यीकरण प्लस मालिक द्वारा प्रबंधित सापेक्ष मूल्य सूचकांक। एक अनसेट टोकन सूचकांकों के लिए असमानता है.OracleQuoterएक कॉन्फ़िगर किए गए ओरेकल के माध्यम से प्रत्येक टोकन को रेट करें, जिसमें वैश्विक या प्रति टोकन स्थिरीकरण सीमा और वैकल्पिक है0.9-to-1.0आउटपुट गुणक।
OracleQuoter केवल अपने फीड चयन और प्रशासन के रूप में विश्वसनीय है। फ़ीड नामकरण और दिशा सुसंगत होनी चाहिए, दशमलव सही होना चाहिए, अपडेट सकारात्मक और ताजा होना चाहिए और शासन फीड की जगह ले सकता है या ताजगी सेटिंग्स बदल सकता है। स्रोत हेरफेर, देरी से अद्यतन, नेटवर्क आउटेज, गलत जोड़ी कॉन्फ़िगरेशन, या ओरेकल-स्वामी कुंजी का नुकसान खराब उद्धरणों का कारण बन सकता है.
OracleRelay एक ऑरकल इंटरफ़ेस के साथ संगत एक वैकल्पिक एकल-फीड, नवीनतम राउंड रिले है। एक नामित लेखक स्रोत मानों को पुनः प्रकाशित करता है; कोई क्रॉस चेन प्रमाण नहीं है और कोई संग्रहीत दौर इतिहास नहीं है। रिले केवल भविष्य के समय टिकट चेक के साथ लेखक के मूल्यों को स्वीकार करता है।OracleQuoter स्वतंत्र रूप से गैर-सकारात्मक या पुराने उत्तरों को अस्वीकार करता है, जबकि रिले मालिक लेखक को घूम सकता है या वर्तमान दौर को अमान्य कर सकता है। इसलिए उपयोगकर्ताओं को स्रोत फ़ीड, रिले लेखक, रिली मालिक और निगरानी प्रक्रिया का मूल्यांकन करना चाहिए।
शुल्क नीति और सीमाएं
FeePolicy प्रति मिलियन भागों में डिफ़ॉल्ट शुल्क संग्रहीत करता है और वैकल्पिक दिशात्मक जोड़ी ओवरराइड होती है। इसका मालिक उन दरों को बदल सकता है जब तक कि अनुबंध के बाहर शासन उस शक्ति को सीमित नहीं करता है।
Limiter एक विशिष्ट पूल पते पर टोकन के लिए अधिकतम शेष राशि संग्रहीत करता है. मालिक या अधिकृत लेखक उस सीमा को बदल सकते हैं। शून्य सीमा जमाओं को ब्लॉक करती है जब लिमिटर सक्रिय होता है; अनसेट लिमिटर्स जमाओं की सीमा नहीं रखते हैं।
इन सीमाओं का वर्णन विन्यास टोकन जोखिम वे, अपने आप में, एक टोकन बैलेंस को ऋण या कानूनी ऋण के रूप में वर्गीकृत नहीं करते हैं, किसी जारीकर्ता की क्षमता का प्रमाण नहीं देते हैं, न ही गारंटी वादे की पूर्ति करते हैं। ये प्रश्न emitter की शर्तों, Pool नियमों, उपयोगकर्ता को प्रस्तुत लेनदेन और लागू कानून पर निर्भर करते हैं.
प्रोटोकॉल शुल्क नियंत्रक
ProtocolFeeController एक वैकल्पिक तैनाती-स्तर शुल्क घटक है। इसका मालिक प्रोटोकॉल दर और प्राप्तकर्ता को बदल सकता है या शुल्क को निष्क्रिय कर सकता है। एक एकल नियंत्रक को कई पूल द्वारा साझा किया जा सकता है, लेकिन प्रोटोकल में प्रति नेटवर्क एक नियंत्रक की आवश्यकता नहीं होती है।
जब सक्रिय और कॉन्फ़िगर किया जाता है, तो प्रत्येक सफल स्वैप के दौरान प्राप्तकर्ता को सीधे आउटपुट टोकन में भुगतान किया जाता हैं। प्राप्तकर्ता धन का उपयोग कैसे करता है—उदाहरण के लिए संचालन, निगरानी, तरलता सहायता या अन्य प्रकाशित उद्देश्यों के लिए—यह एक शासन विषय है, न कि अनुबंध द्वारा दी गई गारंटी।