स्मार्ट अनुबंधों का परिचय
अंतिम संपादन: @wackerow(opens in a new tab), 22 अप्रैल 2024
स्मार्ट अनुबंध क्या हैं?
एक "स्मार्ट अनुबंध" बस एक प्रोग्राम है जो एथेरियम ब्लॉकचेन पर चलता है। यह कोड (इसके फंक्शंस) और डेटा (इसकी स्थिति) का एक संग्रह है जो एथेरियम ब्लॉकचेन पर एक विशिष्ट पते पर रहता है।
स्मार्ट अनुबंध एक प्रकार का एथेरियम खाता है। इसका मतलब है कि उनके पास एक संतुलन है और वे लेनदेन के लक्ष्य हो सकते हैं। हालाँकि, वे किसी यूज़र द्वारा नियंत्रित नहीं होते हैं, इसके बजाय वे नेटवर्क पर परिनियोजित होते हैं और प्रोग्राम के अनुसार चलते हैं। यूज़र खाते तब लेनदेन सबमिट करके एक स्मार्ट अनुबंध के साथ इंटरैक्ट कर सकते हैं जो स्मार्ट अनुबंध पर परिभाषित फंक्शन निष्पादित करते हैं। स्मार्ट अनुबंध नियमों को परिभाषित कर सकते हैं, जैसे कि एक नियमित अनुबंध, और स्वचालित रूप से उन्हें कोड के माध्यम से लागू करें। स्मार्ट अनुबंधों को डिफ़ॉल्ट रूप से हटाया नहीं जा सकता है, और उनके साथ सहभागिता अपरिवर्तनीय हैं।
आवश्यक शर्तें
यदि आप अभी शुरुआत कर रहे हैं या कम तकनीकी परिचय की तलाश कर रहे हैं, तो हम स्मार्ट अनुबंधों के लिए हमारे परिचय की सलाह देते हैं।
स्मार्ट अनुबंध की दुनिया में कूदने से पहले सुनिश्चित करें कि आपने खातों, लेनदेन और एथेरियम वर्चुअल मशीन के बारे में पढ़ लिया है।
एक डिजिटल वेंडिंग मशीन
शायद एक स्मार्ट अनुबंध के लिए सबसे अच्छा रूपक एक वेंडिंग मशीन है, जैसा कि निक स्ज़ाबो(opens in a new tab) द्वारा वर्णित किया गया है। सही इनपुट के साथ, एक निश्चित आउटपुट की गारंटी है।
वेंडिंग मशीन से स्नैक प्राप्त करने के लिए:
1money + snack selection = snack dispensed
इस तर्क को वेंडिंग मशीन में प्रोग्राम किया जाता है।
स्मार्ट अनुबंध, एक वेंडिंग मशीन की तरह इसमें तर्क प्रोग्राम किया गया है। यहां एक सरल उदाहरण दिया गया है कि यदि यह वेंडिंग मशीन Solidity में लिखा गया स्मार्ट अनुबंध होता तो यह कैसा दिखता:
1pragma solidity 0.8.7;23contract VendingMachine {45 // Declare state variables of the contract6 address public owner;7 mapping (address => uint) public cupcakeBalances;89 // When 'VendingMachine' contract is deployed:10 // 1. set the deploying address as the owner of the contract11 // 2. set the deployed smart contract's cupcake balance to 10012 constructor() {13 owner = msg.sender;14 cupcakeBalances[address(this)] = 100;15 }1617 // Allow the owner to increase the smart contract's cupcake balance18 function refill(uint amount) public {19 require(msg.sender == owner, "Only the owner can refill.");20 cupcakeBalances[address(this)] += amount;21 }2223 // Allow anyone to purchase cupcakes24 function purchase(uint amount) public payable {25 require(msg.value >= amount * 1 ether, "You must pay at least 1 ETH per cupcake");26 require(cupcakeBalances[address(this)] >= amount, "Not enough cupcakes in stock to complete this purchase");27 cupcakeBalances[address(this)] -= amount;28 cupcakeBalances[msg.sender] += amount;29 }30}सभी दिखाएँकॉपी करें
जैसे एक वेंडिंग मशीन एक विक्रेता कर्मचारी की आवश्यकता को कैसे दूर करती है, स्मार्ट अनुबंध कई उद्योगों में बिचौलियों की जगह ले सकते हैं।
अनुमति रहित
कोई भी स्मार्ट अनुबंध लिख सकता है और इसे नेटवर्क पर परिनियोजित कर सकता है। आपको बस स्मार्ट अनुबंध भाषा में कोड करना सीखना होगा, और अपने अनुबंध को परिनियोजित करने के लिए पर्याप्त ETH की आवश्यकता होगी। एक स्मार्ट अनुबंध को परिनियोजित करना तकनीकी रूप से एक लेनदेन है, इसलिए आपको गैस का भुगतान उसी तरह करना होगा जैसे आपको एक साधारण ETH हस्तांतरण के लिए गैस का भुगतान करने की आवश्यकता होती है। हालांकि, अनुबंध परिनियोजित करने के लिए गैस की लागत कहीं अधिक है।
एथेरियम में स्मार्ट अनुबंध लिखने के लिए डेवलपर के अनुकूल भाषाएं हैं:
- Solidity
- Vyper
हालांकि, उन्हें परिनियोजित करने से पहले संकलित किया जाना चाहिए ताकि एथेरियम की वर्चुअल मशीन अनुबंध की व्याख्या कर और स्टोर कर सके। संकलन पर अधिक
कम्पोसाबिलिटी
स्मार्ट अनुबंध एथेरियम पर सार्वजनिक हैं और इन्हें खुले API के रूप में माना जा सकता है। इसका मतलब है कि आप अपने स्वयं के स्मार्ट अनुबंध में अन्य स्मार्ट अनुबंधों को कॉल कर सकते हैं ताकि जो संभव हो सके उसका विस्तार किया जा सके। अनुबंध अन्य अनुबंधों को भी परिनियोजित कर सकते हैं।
स्मार्ट अनुबंध कम्पोज़ेबिलिटी के बारे में अधिक जानें।
सीमाएं
अकेले स्मार्ट अनुबंधों को "वास्तविक दुनिया" के इवेंट्स के बारे में जानकारी नहीं मिल सकती क्योंकि वे ऑफ-चेन स्रोतों से डेटा पुनर्प्राप्त नहीं कर सकते हैं। इसका मतलब है कि वे वास्तविक दुनिया में इवेंट्स का जवाब नहीं दे सकते। यह डिजाइन द्वारा है। बाहरी जानकारी पर भरोसा करने से आम सहमति खतरे में पड़ सकती है, जो सुरक्षा और विकेंद्रीकरण के लिए महत्वपूर्ण है।
हालांकि, ब्लॉकचेन एप्लिकेशन के लिए ऑफ-चेन डेटा का उपयोग करने में सक्षम होना महत्वपूर्ण है। समाधान ओरेकल्स हैं जो ऐसे उपकरण हैं जो ऑफ-चेन डेटा को ग्रहण करते हैं और इसे स्मार्ट अनुबंधों के लिए उपलब्ध कराते हैं।
स्मार्ट अनुबंधों की एक और सीमा अधिकतम अनुबंध आकार है। एक स्मार्ट अनुबंध अधिकतम 24KB का हो सकता है या इसकी गैस खत्म हो जाएगी। डायमंड पैटर्न(opens in a new tab) का उपयोग करके इसकी परिक्रमा की जा सकती है।
मल्टीसिग अनुबंध
मल्टीसिग (एकाधिक-हस्ताक्षर) अनुबंध स्मार्ट अनुबंध खाते हैं जिन्हें लेनदेन निष्पादित करने के लिए कई वैध हस्ताक्षर की आवश्यकता होती है। ईथर या अन्य टोकन की पर्याप्त मात्रा रखने वाले अनुबंधों के लिए विफलता के एकल बिंदुओं से बचने के लिए यह बहुत उपयोगी है। मल्टीसिग अनुबंध निष्पादन और कई पार्टियों के बीच प्रमुख प्रबंधन के लिए जिम्मेदारी को विभाजित करते हैं और एक निजी चाबी के नुकसान को रोकते हैं जिससे धन की अपरिवर्तनीय हानि होती है। इन कारणों से, मल्टीसिग अनुबंधों का उपयोग सरल डीएओ शासन के लिए किया जा सकता है। मल्टीसिग को निष्पादित करने के लिए M संभावित स्वीकार्य हस्ताक्षर (जहां N ≤ M, और M > 1) में से N हस्ताक्षर की आवश्यकता होती है। N = 3, M = 5
और N = 4, M = 7
आमतौर पर उपयोग किए जाते हैं। एक 4/7 मल्टीसिग को सात संभावित वैध हस्ताक्षरों में से चार की आवश्यकता होती है। इसका मतलब है कि तीन हस्ताक्षर खो जाने पर भी धन अभी भी पुनर्प्राप्त करने योग्य है। इस मामले में, इसका मतलब यह भी है कि अनुबंध को निष्पादित करने के लिए अधिकांश कुंजी-धारकों को सहमत होना चाहिए और हस्ताक्षर करना चाहिए।
स्मार्ट अनुबंध संसाधन
OpenZeppelin अनुबंध - सुरक्षित स्मार्ट अनुबंध विकास के लिए लाइब्रेरी।
- openzeppelin.com/contracts/(opens in a new tab)
- GitHub(opens in a new tab)
- सामुदायिक फोरम(opens in a new tab)