कई DeFi एप्लिकेशन्स जिस गवर्नेंस पैटर्न का पालन करते हैं, वह Compound Finance के इम्प्लीमेंटेशन से काफी प्रेरित है। हालाँकि, एक मानक गवर्नेंस इंटरफेस बनाने से संबंधित कोई Ethereum Improvement Proposal नहीं है, फिर भी अधिकांश DeFi गवर्नेंस इम्प्लीमेंटेशन्स आमतौर पर समान सिद्धांतों का ही पालन करते हैं।
अंततः, गवर्नेंस कॉन्ट्रैक्ट्स मल्टीसिग्नेचर वॉलेट्स (multisignature wallets) की तरह काम करते हैं, जिसमें वोटों का वेटेज वोटर्स के टोकन बैलेंस द्वारा तय किया जाता है।
एक प्रपोज़ल (proposal) एक Ethereum ट्रांज़ेक्शन होता है: एक एड्रेस या एड्रेसेस की सूची, और एक calldata या calldatas की सूची। कम्युनिटी (उन टोकन के धारक जो उन्हें वोट देने का अधिकार देते हैं), Ethereum ट्रांज़ेक्शन्स को प्रपोज़ करती है और वोट के परिणाम के आधार पर, ट्रांज़ेक्शन को ऑन-चेन (on chain) एग्जीक्यूट किया जाता है, या अगर यह चुनाव में पास नहीं होता है तो इसे खारिज (defeated) कर दिया जाता है।
ऐसे कार्यों के लिए जो ऑन-चेन नहीं किए जाते हैं (जैसे कि किसी सॉफ्टवेयर का लीगल लाइसेंस बदलना), अधिकार देने वाले एक संदेश पर बस हस्ताक्षर (sign) कर दिया जाता है।
उपयोगी शब्द (Useful terms)
कॉन्ट्रैक्ट्स को समझना शुरू करने से पहले, गवर्नेंस कॉन्ट्रैक्ट्स के तकनीकी शब्दों को जानना उपयोगी होता है।
Proposal
प्रत्येक वोट की शुरुआत एक Proposal से होती है, जिसका वर्णन पहले किया गया था। यह हमेशा एक Ethereum ट्रांज़ेक्शन होता है जिसे साइन किया जा सकता है, यानी इसमें एक टारगेट एड्रेस (या एड्रेसेस) और calldata (या calldatas) होता है।
Proposal स्पैम को रोकने के लिए, कॉन्ट्रैक्ट्स में आमतौर पर एक प्रकार का फ़िल्टर होता है कि कौन प्रपोज़ल बना सकता है, आमतौर पर वह एड्रेस जिसके पास गवर्नेंस टोकन की कुल सप्लाई का एक निश्चित प्रतिशत होना चाहिए।
तकनीकी रूप से, एक प्रपोज़ल आमतौर पर एक Solidity struct होता है, जिसमें इसकी वर्तमान स्थिति (state), इस पर लागू किए गए वोट्स, और प्रपोज़ल पास होने पर कौन से ट्रांज़ेक्शन्स एग्जीक्यूट किए जाएंगे, इसके बारे में कुछ फ़्लैग्स होते हैं।
Vote
जैसा कि अपेक्षित है, एक वोट एक Ethereum ट्रांज़ेक्शन है जहाँ वोटर किसी प्रपोज़ल के पक्ष या विपक्ष में वोट करता है। वोट का वेटेज आमतौर पर संबंधित स्नैपशॉट (snapshot) के समय उस एड्रेस पर मौजूद टोकन्स की मात्रा द्वारा तय किया जाता है।
Quorum
यदि 100% टोकन धारकों के वोट किए बिना कोई कार्रवाई नहीं की जा सकती, तो यह बहुत संभव है कि कभी कुछ भी पूरा नहीं हो पाएगा, क्योंकि यदि केवल एक टोकन धारक ने भाग न लेने का फैसला किया तो सिस्टम ठप हो जाएगा। दूसरी ओर, यदि किसी चुनाव को वैध होने के लिए केवल 1% वोटों की आवश्यकता हो, तो अवांछनीय प्रपोज़ल्स को पास करना बहुत आसान हो जाएगा।
किसी प्रपोज़ल के भाग्य का फैसला होने के लिए, उसे वोटिंग अवधि के भीतर एक Quorum थ्रेशोल्ड (कुल संभावित वोटों का एक प्रतिशत) तक पहुँचना आवश्यक है।
Voting period
प्रपोज़ल्स Quorum तक पहुँचने के लिए अनिश्चित काल तक इंतज़ार नहीं करते हैं। अन्यथा, गवर्नेंस प्रपोज़ल उस समय एग्जीक्यूट हो सकता है जब प्रपोज़ल को प्रेरित करने वाली परिस्थितियाँ ही बदल चुकी हों। यह उलटी गिनती प्रपोज़ल बनते ही शुरू हो जाती है और यदि समय सीमा के भीतर Quorum नहीं पहुँचता है, तो प्रपोज़ल खारिज (defeated) हो जाता है।
Queued और Execution
यदि वोटिंग अवधि समाप्त होने से पहले, प्रपोज़ल के पक्ष में पर्याप्त वोट Quorum थ्रेशोल्ड को पार कर लेते हैं, तो प्रपोज़ल को पास माना जाता है। सुरक्षा कारणों से, प्रपोज़ल के सफल होने और उसके वास्तव में एग्जीक्यूट (execute) होने के बीच आमतौर पर कुछ समय का अंतर (time delay) होता है।
Timelock
इसे वोटिंग अवधि समझने की भूल न करें, यह प्रपोज़ल के अप्रूव होने और कार्रवाई के वास्तव में एग्जीक्यूट होने के बीच की देरी (delay) है।
ऐसी स्थिति पर विचार करें जहाँ गवर्नेंस कॉन्ट्रैक्ट में एक विवादास्पद प्रपोज़ल है, और यदि प्रपोज़ल लागू होता है तो असहमति रखने वाले यूज़र्स का एक समूह लिक्विडिटी वापस ले लेगा। Timelock उन्हें यह देखने के बाद बाहर निकलने का एक अवसर देता है कि वे वोट हार गए हैं।
यूज़र्स को प्रतिकूल प्रपोज़ल्स के खिलाफ कार्रवाई करने का मौका देना, प्रपोज़र्स को केवल ऐसे प्रपोज़ल्स शामिल करने के लिए प्रेरित करता है जो विद्रोह का कारण न बनें।
गवर्नेंस के चरण (The phases of governance)
गवर्नेंस प्रपोज़ल कैसे बनाया जाता है, उस पर वोट कैसे होता है और उसे कैसे एग्जीक्यूट किया जाता है, इसके लिए कोई सार्वभौमिक विशिष्टता (universal specification) नहीं है। हालाँकि, आप मोटे तौर पर उम्मीद कर सकते हैं कि यह इन ट्रांज़ेक्शन्स के कुछ अनुमानित क्रम का पालन करेगा:
Pending ⭢ Active ⭢ Defeated ⭢ Canceled
⮑ Succeeded ⭢ Queued ⭢ Executed
⮑----------⮑-------⮑ Expired
यहाँ Compound Finance का गवर्नेंस स्टेट ट्रांज़िशन फ्लो दिया गया है:

https://docs.compound.finance/v2/governance
और यह Uniswap का है:

https://docs.uniswap.org/contracts/v2/reference/Governance/governance-reference
प्रपोज़ल बनाने (और उसे Pending में ले जाने) का अधिकार किसके पास है, यह प्रोटोकॉल पर निर्भर करता है। एक सामान्य पैटर्न यह है कि वे वॉलेट्स जिनके पास पर्याप्त गवर्नेंस टोकन होते हैं, प्रपोज़ल बना सकते हैं। इसी तरह, स्टेट को “canceled” में बदलने का अधिकार किसके पास है, यह भी प्रोटोकॉल पर निर्भर करता है। इन कार्यों को एग्जीक्यूट करने का अधिकार किसके पास है, इसका कोई सार्वभौमिक मानक नहीं है।
जब स्टेट ट्रांज़िशन कब हो सकता है, इसके बारे में अनिश्चितता हो, तो सीधे गवर्नेंस Solidity स्मार्ट कॉन्ट्रैक्ट को पढ़ना सबसे अच्छा होता है।
Governor Alpha और Bravo
DeFi में गवर्नेंस कैसे किया जाता है, इसे Compound ने काफी प्रभावित किया है। 2021 में, Compound ने अपने मूल गवर्नेंस स्मार्ट कॉन्ट्रैक्ट डिज़ाइन में नई सुविधाएँ पेश कीं। इस नए डिज़ाइन को Governor Bravo कहा गया, और अन्य DeFi प्रोटोकॉल्स ने भी इन डिज़ाइन बदलावों का पालन किया।
Governor Bravo में नया क्या है, यहाँ बताया गया है:
- वोटर्स केवल हाँ या ना में वोट देने के बजाय स्पष्ट रूप से “abstain” (मतदान न करने) का विकल्प चुन सकते हैं
- गवर्नेंस कॉन्ट्रैक्ट एक अपग्रेडेबल प्रॉक्सी पैटर्न बन जाता है
- वोटर्स अपने वोट्स में एक कारण (reason string) जोड़ सकते हैं
OpenZeppelin Bravo इम्प्लीमेंटेशन में, “abstain” के लिए जोड़े गए फ़ील्ड को वोट struct में देखा जा सकता है।
गवर्नेंस प्रपोज़ल को एग्जीक्यूट करने के वर्कफ़्लो का एक उदाहरण
वेबसाइट tally.xyz एक बहुत अच्छा इंटरफ़ेस प्रदान करती है जो गवर्नेंस प्रपोज़ल के वर्कफ़्लो को दर्शाता है।
आइए Uniswap के प्रपोज़ल 9 को देखें, जो उनके लिक्विडिटी पूल्स में 1 बेसिस पॉइंट (basis point) फी टीयर (fee tier) जोड़ने का एक सफल प्रपोज़ल था।
जो लोग Uniswap से अपरिचित हैं, उनके लिए: लिक्विडिटी प्रोवाइडर्स (liquidity providers) तब फीस कमाते हैं जब कोई व्यक्ति जो टोकन ट्रेड करना चाहता है, लिक्विडिटी प्रोवाइडर्स द्वारा बनाए गए पूल्स के खिलाफ स्वैप एग्जीक्यूट करता है। यह फीस पूल बनाते समय निर्धारित की जाती है, लेकिन यह केवल निर्धारित फी साइज़ के फिक्स्ड सेट में से हो सकती है। कम्युनिटी अन्य टोकन स्वैपिंग DeFi सेवाओं के खिलाफ प्रतिस्पर्धी बने रहने के लिए एक बहुत छोटा फी विकल्प जोड़ना चाहती थी, और यह प्रपोज़ल पास हो गया।
यहाँ वोट और एग्जीक्यूशन का tally द्वारा किया गया विज़ुअलाइज़ेशन है।

https://www.tally.xyz/gov/uniswap/proposal/9
यह पेज काफी हद तक खुद ही स्पष्ट करने वाला (self explanatory) होना चाहिए, लेकिन हम सुविधा के लिए यहाँ संक्षेप में समझाएँगे।
यहाँ सूचीबद्ध प्रत्येक कार्य ऑन-चेन (on-chain) कार्य हैं। पाठक Etherscan पर संबंधित ट्रांज़ेक्शन्स तक पहुँचने के लिए तीन डॉट वाले विजेट पर क्लिक कर सकते हैं।
यहाँ वह ट्रांज़ेक्शन है जहाँ प्रपोज़ल वास्तव में एग्जीक्यूट किया गया था। https://etherscan.io/tx/0x5c84f89a67237db7500538b81af61ebd827c081302dd73a1c20c8f6efaaf4f3c#eventlog
यह स्पष्ट है कि FeeAmountEnabled इवेंट को 0x1f98431c8ad98523631ae4a59f267346ea31f984 पर मौजूद कॉन्ट्रैक्ट द्वारा एमिट (emit) किया गया था, जो पूल्स बनाने के लिए Uniswap फ़ैक्टरी है।
Tally आसानी से वह कोड प्रदान करता है जिसे एग्जीक्यूट करने पर वोटर्स वोट कर रहे थे, और जिसे अंततः एग्जीक्यूट किया गया था।
गवर्नेंस अटैक्स (Governance Attacks)
यहाँ कुछ ऐसे गवर्नेंस अटैक्स के उदाहरण दिए गए हैं जिन्हें हैकर्स ने सफलतापूर्वक एग्जीक्यूट किया।
फ्लैश लोन अटैक (Flash loan attack)
BeanStalk प्रोटोकॉल में emergencyCommit नाम का एक फीचर था जहाँ यदि पर्याप्त वोटर्स ट्रांज़ेक्शन का समर्थन करते हैं तो ट्रांज़ेक्शन तुरंत एग्जीक्यूट किया जा सकता था। इसका उद्देश्य उस स्थिति में टाइम डिले (time delay) को बायपास करना था जब किसी आपातकालीन प्रपोज़ल को तुरंत पास करना आवश्यक हो। हमलावर ने फ्लैशलोन (flashloan) लेकर पर्याप्त वोटिंग पावर प्राप्त कर इसका फायदा उठाया, ताकि वह timelocks को बायपास कर सके और एक ऐसा कमांड एग्जीक्यूट कर सके जिससे प्रोटोकॉल के फंड्स निकाल लिए गए।
लो प्राइस अटैक (Low price attack)
यदि किसी टोकन की कीमत बहुत कम है, तो कोई हमलावर आर्थिक रूप से इतने वोट प्राप्त कर सकता है कि वह अपनी इच्छा के अनुसार कोई भी प्रपोज़ल पास करवा सके। ऐसे प्रोटोकॉल्स जिनमें गवर्नेंस टोकन के मार्केट कैपिटलाइज़ेशन (market capitalization) की तुलना में प्रोटोकॉल में महत्वपूर्ण एसेट्स लॉक होते हैं, वे विशेष रूप से इस तरह के हमले के प्रति संवेदनशील (suceptible) होते हैं। यह हमला True Seniorage Dollar के खिलाफ किया गया था, जहाँ हमलावर ने अपने लिए अरबों स्टेबलकॉइन्स (stablecoins) मिंट (mint) करने के लिए वोट किया, और फिर उन्हें दूसरे डिसेंट्रलाइज़्ड एक्सचेंज पर बेच दिया। क्योंकि गवर्नेंस टोकन्स का मार्केट कैपिटलाइज़ेशन अपेक्षाकृत कम होता है, इसलिए 51% अटैक की संभावना नगण्य नहीं होती है।
सामाजिक या राजनीतिक हमले (Social or political attacks)
किसी भी लोकतंत्र की तरह, वोटों को एक निश्चित हद तक सामाजिक रूप से मैनिपुलेट (manipulate) किया जा सकता है। एक सुसज्जित हमलावर द्वारा चलाया गया एक समन्वित (coordinated) अभियान अवांछनीय प्रपोज़ल्स को एग्जीक्यूशन तक पहुँचा सकता है।
सुधार की गुंजाइश (Room for improvement)
यह अभी तक स्थापित नहीं हुआ है कि DeFi गवर्नेंस का वर्तमान पैटर्न, जिसका वर्णन यह लेख करता है, वास्तव में सबसे अच्छा तरीका है। Vitalik Buterin ने छोटे वोटर्स के लिए वर्तमान प्रथाओं को आमतौर पर बुरा बताते हुए उनकी आलोचना की है। उन्होंने अपने ब्लॉग पोस्ट में समाधान प्रस्तावित किए। एक समाधान जिसे कुछ लोकप्रियता मिली, वह है होल्डिंग्स के स्क्वायर रूट (वर्गमूल) द्वारा वोटों का वेटेज तय करना, जिसे “quadratic voting” भी कहा जाता है। इसमें अभी भी एक अनसुलझी समस्या है क्योंकि एक हमलावर स्क्वायर रूट फ़ंक्शन द्वारा अपने वोटों को कम वेटेज दिए जाने से बचने के लिए अपनी होल्डिंग्स को कई एड्रेसेस में विभाजित कर सकता है।
गवर्नेंस स्थापित करने के लिए टूल्स
जो लोग ऑन-चेन गवर्नेंस के साथ DAOs स्थापित करना चाहते हैं, उनके लिए स्क्रैच (शुरुआत) से कॉन्ट्रैक्ट्स लिखने से बचने के लिए यहाँ कुछ संसाधन दिए गए हैं।
- https://wizard.openzeppelin.com/#governor
- https://www.tally.xyz/developers
- https://docs.alchemy.com/docs/how-to-create-a-dao-governance-token
निष्कर्ष (Conclusion)
गवर्नेंस कॉन्ट्रैक्ट्स वर्तमान में गवर्नेंस टोकन धारकों के लिए इस बात पर वोट करने का स्वीकृत पैटर्न हैं कि कौन से Ethereum ट्रांज़ेक्शन्स एग्जीक्यूट किए जाएँ। हालाँकि एक सामान्य पैटर्न है जिसका कई प्रोजेक्ट्स पालन करते हैं, लेकिन सुरक्षित और निष्पक्ष तरीके से गवर्नेंस संचालित करना अभी भी एक खुला शोध का विषय (open research question) है।
और जानें (Learn More)
Ethereum और DeFi डेवलपमेंट सीखने के लिए हमारा blockchain bootcamp देखें।
मूल रूप से 27 फरवरी, 2023 को प्रकाशित