हमारा लक्ष्य एक सेगमेंट के लिए real reserves के आधार पर constant product formula प्राप्त करना है, जो इस प्रकार दिया गया है
और वहां से पिछले अध्याय में प्राप्त कुछ फ़ार्मुलों (formulas) को पुनः प्राप्त करना है।
यह अध्याय वैकल्पिक (optional) है। यह पिछले अध्यायों की तुलना में कोई मौलिक रूप से नई अवधारणाएं (concepts) पेश नहीं करता है, बल्कि price और liquidity से real reserves प्राप्त करने पर एक अलग दृष्टिकोण प्रदान करता है। इस पुस्तक के बाकी हिस्सों को प्रभावित किए बिना इसे छोड़ा जा सकता है।
Uniswap एक Constant Product Automated Market Maker है। Uniswap v2 में, यदि हम फीस को अनदेखा करें, तो पूल में स्वैप (swaps) इस नियम का पालन करते हैं कि फॉर्मूला में constant अपरिवर्तित रहता है, जहाँ और टोकन X और Y के पूल के रिज़र्व्स को दर्शाते हैं। इस अर्थ में, कोई यह कह सकता है कि फॉर्मूला पूल में swaps के व्यवहार को परिभाषित करता है।
Uniswap v3 भी एक Constant Product AMM है, जिसमें मुख्य अंतर यह है कि पूल में constant liquidity नहीं होती है बल्कि यह कई curve segments से बना होता है, जिनमें से प्रत्येक में एक निश्चित liquidity होती है।

प्रत्येक सेगमेंट में, swaps Uniswap v2 के समान ही व्यवहार का पालन करते हैं और, फीस को अनदेखा करते हुए, फॉर्मूला में वैल्यू को constant बनाए रखना चाहिए, जब तक कि swap सेगमेंट की सीमाओं (boundaries) को पार न करे।
इस प्रकार, किसी सेगमेंट में swaps को नियंत्रित करने वाला फॉर्मूला ही रहता है। हालांकि, Uniswap v2 के विपरीत, और सेगमेंट के real reserves नहीं हैं बल्कि इसके virtual reserves हैं, यानी, वे रिज़र्व्स जो सेगमेंट में तब होते जब यह एक infinite curve तक विस्तृत होता (देखें real and virtual reserves पर अध्याय)।
कोई यह पूछ सकता है कि क्या किसी सेगमेंट के लिए constant product formula को इसके virtual reserves के बजाय सेगमेंट के real reserves के संदर्भ में व्यक्त किया जा सकता है। इसका उत्तर हाँ है। वास्तव में, यह फॉर्मूला Uniswap v3 के वाइटपेपर के पृष्ठ 2 पर पाया जा सकता है, जैसा कि नीचे दिखाया गया है (यहाँ, और real reserves को दर्शाते हैं, जिन्हें हम अपनी notation में और के रूप में दर्शाते हैं)। यह वही फॉर्मूला है जो परिचय (introduction) में दिखाया गया है।

उपरोक्त फॉर्मूला liquidity, सेगमेंट की सीमाओं और real reserves के बीच एक संबंध स्थापित करता है। हमारी notation में, इस फॉर्मूले को इस प्रकार लिखा जाना चाहिए
जहाँ lower tick पर price है, upper tick पर price है, और liquidity है।
किसी दिए गए सेगमेंट के लिए, ये वैल्यूज़ निश्चित (fixed) होती हैं, जबकि real reserves बदलते रहते हैं। यह Uniswap v2 के समान है, जहाँ liquidity , में निश्चित होती है और reserves और बदल सकते हैं। दोनों ही मामलों में, फॉर्मूले संभावित रिज़र्व वैल्यूज़ को सीमित करते हैं—यदि एक टोकन का रिज़र्व बढ़ता है, तो दूसरे का रिज़र्व कम होना चाहिए ताकि liquidity स्थिर (constant) रहे।
इस विचार को नीचे दिए गए इंटरेक्टिव टूल में बेहतर तरीके से देखा जा सकता है। आप upper tick, lower tick, सेगमेंट की liquidity और वर्तमान price चुन सकते हैं। जैसे-जैसे price बढ़ता या घटता है, real reserves और बदलते हैं, लेकिन इस तरह से कि liquidity constant रहती है। दूसरे शब्दों में, real reserves के बीच का अनुपात मनमाना (arbitrary) नहीं होता बल्कि पूरी तरह से liquidity और tick सीमाओं द्वारा निर्धारित होता है।
v2 और v3 के बीच एक बड़ा अंतर यह है कि, v3 में, दोनों में से कोई एक रिज़र्व शून्य तक पहुँच सकता है बिना दूसरे के infinity तक पहुँचे। किसी सेगमेंट में एक टोकन के real reserves का समाप्त होना सामान्य है, और इस बिंदु पर price अगले सेगमेंट में चला जाता है।
यह ध्यान देने योग्य है कि codebase में constant product formula कहीं भी दिखाई नहीं देता है। Uniswap v2 में, प्रोटोकॉल केवल swaps में constant product formula लागू कर सकता है। हालांकि, v3 में, यह अधिक जटिल है क्योंकि एक swap के दौरान price कई सेगमेंट से होकर गुजर सकता है।
फिर भी, constant product formula का उपयोग सेगमेंट की सीमाओं, liquidity और वर्तमान price के संदर्भ में real reserves के लिए समीकरणों (expressions) को प्राप्त करने के लिए किया जा सकता है। हमने पिछले अध्याय में अन्य माध्यमों से इन फ़ार्मुलों को पहले ही प्राप्त कर लिया है, और इसी कारण से, यह अध्याय वैकल्पिक है।
फिर भी, यदि पाठक यह समझना चाहते हैं कि constant product formula कहाँ से आता है और इसका उपयोग किसी सेगमेंट के real reserves की गणना करने के लिए कैसे किया जा सकता है, तो यही इस अध्याय का उद्देश्य है, और हम आपको आगे बढ़ने के लिए आमंत्रित करते हैं।
एक सेगमेंट में real और virtual reserves को संबंधित करना
एक सेगमेंट के लिए constant product formula वैसा ही है जैसा Uniswap v2 में होता है,
लेकिन अब और virtual reserves हैं।
यदि हम virtual reserves को real reserves से जोड़ने का कोई तरीका खोज लें, तो हम real reserves के लिए constant product formula प्राप्त कर सकते हैं।
नीचे दिए गए चित्र पर विचार करें, जहाँ lower tick पर price है और upper tick पर price है।

ऊपर दी गई छवि में, हमारे पास है
- वर्तमान price के virtual reserves हैं,
- , पर Y में virtual reserves हैं - टोकन Y की वह मात्रा जो सेगमेंट में होती यदि यह एक infinite curve होता और price पर होता। हालाँकि, हम इसके अर्थ की तुलना में ज्यामितीय रूप (geometrically) से में अधिक रुचि रखते हैं,
- , पर X में virtual reserves हैं,
- सेगमेंट के real reserves हैं।
तब virtual और real reserves के बीच का संबंध इस प्रकार दिया जाता है
हम और को प्रतिस्थापित (substitute) करते हुए, में इन संबंधों का उपयोग करके यह प्राप्त कर सकते हैं
एक सेगमेंट में, और swaps के दौरान बदल सकते हैं, लेकिन और केवल सेगमेंट की सीमाओं पर निर्भर करते हैं, इसलिए वे सेगमेंट के लिए constants हैं। इस प्रकार, यदि हम और प्राप्त कर सकते हैं, तो हमने वांछित फॉर्मूला पा लिया है। हमने पिछले अध्याय में और प्राप्त करने के फॉर्मूले निकाले थे, और अगले भाग में हम real reserves के लिए constant product formula प्राप्त करने के लिए इन फ़ार्मुलों का उपयोग करेंगे।
Real reserves के लिए constant product formula
real and virtual reserves पर अध्याय में, हमने सीखा कि price और liquidity से किसी सेगमेंट के virtual reserves कैसे प्राप्त किए जाते हैं: और । हम निम्नानुसार और प्राप्त करने के लिए इन फ़ार्मुलों का उपयोग कर सकते हैं:
इन वैल्यूज़ का उपयोग करके, हम constant product formula
को इस प्रकार लिख सकते हैं
यह फॉर्मूला liquidity वाले सेगमेंट के लिए मान्य (valid) है, जहाँ lower tick है और upper tick है।
अब हमारे पास एक constant product formula है जो virtual reserves के किसी भी संदर्भ के बिना liquidity, real reserves, और सेगमेंट की सीमाओं को संबंधित करता है।
ध्यान दें कि real reserves से किसी सेगमेंट की liquidity की गणना करना सीधा नहीं है क्योंकि उपरोक्त फॉर्मूले में समीकरण के दोनों ओर पैरामीटर शामिल है; यह में एक द्विघात समीकरण (quadratic equation) है।
व्यवहार में, हमें इसके बारे में चिंता करने की आवश्यकता नहीं है क्योंकि प्रोटोकॉल liquidity की गणना करने के लिए उपरोक्त फॉर्मूले का उपयोग नहीं करता है। इसके बजाय, प्रोटोकॉल liquidity के बारे में जानकारी स्टोर करता है और, दी गई liquidity से, दो कीमतों के बीच टोकन X और Y के लिए real reserves की गणना करता है।
इस प्रकार, हमारी रुचि सेगमेंट की liquidity, सीमाओं और वर्तमान price के आधार पर और की गणना करने का फॉर्मूला खोजने में है।
पिछले अध्याय में, हमने constant product formula के किसी भी संदर्भ के बिना ही इन फ़ार्मुलों को प्राप्त कर लिया था—जैसा कि परिचय में बताया गया है, इसके लिए constant product formula कड़ाई से आवश्यक नहीं है।
शैक्षिक उद्देश्यों के लिए, हम constant product formula का उपयोग करके पिछले अध्याय के फ़ार्मुलों को फिर से प्राप्त करेंगे। मुख्य विचार यह है कि, भले ही codebase में constant product formula का उपयोग नहीं किया जाता है, लेकिन वर्तमान price, liquidity और सेगमेंट की सीमाओं के आधार पर real reserves की गणना करने वाले फॉर्मूले वास्तव में codebase द्वारा उपयोग किए जाते हैं, और वे फॉर्मूले constant product formula से प्राप्त किए जा सकते हैं।
इसे प्रदर्शित करने के लिए, आइए तीन संभावित परिदृश्यों (scenarios) के लिए derivation करते हैं:
- जब वर्तमान price, lower tick पर या उससे नीचे होता है, तो टोकन X में केवल real reserves होते हैं,
- जब वर्तमान price, upper tick पर या उससे ऊपर होता है, तो टोकन Y में केवल real reserves होते हैं,
- जब वर्तमान price, सेगमेंट के भीतर होता है, तो टोकन X और Y दोनों में real reserves होते हैं।
आइए उस स्थिति से शुरू करें जहाँ वर्तमान price, lower tick पर या उससे नीचे है
1. एक सेगमेंट में केवल टोकन X
उस परिदृश्य में जहाँ सेगमेंट में केवल X टोकन हैं, तब शून्य के बराबर होता है और हम निम्नानुसार प्राप्त करने के लिए constant product formula को हल कर सकते हैं:
ध्यान दें कि यह पिछले अध्याय में हमारे द्वारा निकाले गए फॉर्मूले के समान ही है।
अब उस स्थिति पर विचार करते हैं जहाँ सेगमेंट में केवल Y टोकन होते हैं—जब वर्तमान price, upper tick पर या उससे ऊपर होता है।
2. एक सेगमेंट में केवल टोकन Y
उस परिदृश्य में जहाँ सेगमेंट में केवल Y टोकन हैं, तब शून्य के बराबर होता है और हम निम्नानुसार प्राप्त करने के लिए constant product formula को हल कर सकते हैं:
ध्यान दें कि यह पिछले अध्याय में हमारे द्वारा निकाले गए फॉर्मूले के समान ही है।
अब हम अंतिम परिदृश्य की ओर मुड़ते हैं, जहाँ price, lower tick और upper tick के बीच होता है।
3. सेगमेंट में दोनों टोकन
जब price, lower और upper ticks के बीच होता है, तो सेगमेंट में X और Y दोनों टोकन होंगे।
Constant product formula
वर्तमान price को शामिल नहीं करता है, और न ही हम केवल इससे और की गणना कर सकते हैं। ध्यान दें कि हमारे पास दो अज्ञात ( और ) हैं लेकिन केवल एक समीकरण है। इस समस्या को हल करने के लिए, हमें एक और समीकरण की आवश्यकता है।
हम जानते हैं कि virtual reserves के संदर्भ में price का फॉर्मूला है। इस प्रकार, real reserves के संदर्भ में, हमारे पास है:
अब हमारे पास दो समीकरण (constant product formula और price) और दो अज्ञात ( और ) हैं। हम price के फॉर्मूले को इस प्रकार पुनर्व्यवस्थित (rearrange) कर सकते हैं:
बाईं ओर (left-hand side) का पद (term) constant product formula में दिखाई देता है, इसलिए हम इसे वहां प्रतिस्थापित (substitute) कर सकते हैं।
अब जब हमारे पास है, तो हम खोजने के लिए constant product formula में इस समीकरण का उपयोग कर सकते हैं:
और के फॉर्मूले बिल्कुल वैसे ही हैं जैसे हमने पिछले अध्याय में प्राप्त किए थे।
सारांश
Lower tick और upper tick के बीच liquidity वाले एक सेगमेंट के लिए constant product formula इस प्रकार दिया गया है
जहाँ और टोकन X और Y में real reserves हैं।