मुख्य सामग्री पर जाएं
Change page

स्मार्ट अनुबंध लाइब्रेरी

आपको अपने प्रोजेक्ट में हर स्मार्ट अनुबंध को शुरुआत से लिखने की आवश्यकता नहीं है। कई ओपन सोर्स स्मार्ट अनुबंध लाइब्रेरी उपलब्ध हैं जो आपके प्रोजेक्ट के लिए पुन: प्रयोज्य बिल्डिंग ब्लॉक्स प्रदान करती हैं, जिससे आपको अनावश्यक मेहनत से बचाया जा सकता है।

पूर्वापेक्षाएँ

स्मार्ट अनुबंध लाइब्रेरी में जाने से पहले, स्मार्ट अनुबंध की संरचना की अच्छी समझ होना एक अच्छा विचार है। यदि आपने अभी तक ऐसा नहीं किया है, तो स्मार्ट अनुबंध एनाटॉमी पर जाएँ।

लाइब्रेरी में क्या होता है

आप आमतौर पर स्मार्ट अनुबंध लाइब्रेरी में दो प्रकार के बिल्डिंग ब्लॉक्स पा सकते हैं: पुन: प्रयोज्य व्यवहार जिन्हें आप अपने अनुबंधों में जोड़ सकते हैं, और विभिन्न मानकों के कार्यान्वयन।

व्यवहार

स्मार्ट अनुबंध लिखते समय, इस बात की बहुत अधिक संभावना है कि आप खुद को बार-बार समान पैटर्न लिखते हुए पाएंगे, जैसे किसी अनुबंध में सुरक्षित संचालन करने के लिए एक admin पता निर्दिष्ट करना, या किसी अप्रत्याशित समस्या की स्थिति में एक आपातकालीन pause बटन जोड़ना।

स्मार्ट अनुबंध लाइब्रेरी आमतौर पर इन व्यवहारों के पुन: प्रयोज्य कार्यान्वयन को लाइब्रेरी (opens in a new tab) के रूप में या Solidity में इनहेरिटेंस (opens in a new tab) के माध्यम से प्रदान करती हैं।

उदाहरण के लिए, निम्नलिखित ओपनजेपेलिन अनुबंध लाइब्रेरी (opens in a new tab) से Ownable अनुबंध (opens in a new tab) का एक सरलीकृत संस्करण है, जो एक पते को अनुबंध के स्वामी के रूप में नामित करता है, और किसी विधि तक पहुंच को केवल उस स्वामी तक सीमित करने के लिए एक संशोधक (modifier) प्रदान करता है।

अपने अनुबंध में इस तरह के बिल्डिंग ब्लॉक का उपयोग करने के लिए, आपको पहले इसे आयात (import) करना होगा, और फिर इसे अपने स्वयं के अनुबंधों में विस्तारित (extend) करना होगा। यह आपको अपने स्वयं के कार्यों को सुरक्षित करने के लिए आधार Ownable अनुबंध द्वारा प्रदान किए गए संशोधक का उपयोग करने की अनुमति देगा।

import ".../Ownable.sol"; // आयातित लाइब्रेरी का पथ

contract MyContract is Ownable {
    // निम्नलिखित फ़ंक्शन को केवल स्वामी द्वारा कॉल किया जा सकता है
    function secured() onlyOwner public {
        msg.sender.transfer(1 ether);
    }
}

एक अन्य लोकप्रिय उदाहरण SafeMath (opens in a new tab) या DsMath (opens in a new tab) है। ये ऐसी लाइब्रेरी हैं (आधार अनुबंधों के विपरीत) जो ओवरफ़्लो जांच के साथ अंकगणितीय कार्य प्रदान करती हैं, जो भाषा द्वारा प्रदान नहीं की जाती हैं। अपने अनुबंध को ओवरफ़्लो से बचाने के लिए मूल अंकगणितीय संचालन के बजाय इनमें से किसी भी लाइब्रेरी का उपयोग करना एक अच्छा अभ्यास है, जिसके विनाशकारी परिणाम हो सकते हैं!

मानक

संयोजकता और अंतर-संचालनीयता को सुविधाजनक बनाने के लिए, इथेरियम समुदाय ने ERCs के रूप में कई मानकों को परिभाषित किया है। आप उनके बारे में मानक अनुभाग में अधिक पढ़ सकते हैं।

अपने अनुबंधों के हिस्से के रूप में ERC को शामिल करते समय, अपना स्वयं का कार्यान्वयन बनाने की कोशिश करने के बजाय मानक कार्यान्वयन की तलाश करना एक अच्छा विचार है। कई स्मार्ट अनुबंध लाइब्रेरी में सबसे लोकप्रिय ERCs के कार्यान्वयन शामिल हैं। उदाहरण के लिए, सर्वव्यापी ERC-20 विनिमेय टोकन मानक HQ20 (opens in a new tab), DappSys (opens in a new tab) और ओपनजेपेलिन (opens in a new tab) में पाया जा सकता है। इसके अतिरिक्त, कुछ ERCs स्वयं ERC के हिस्से के रूप में विहित (canonical) कार्यान्वयन भी प्रदान करते हैं।

यह उल्लेख करने योग्य है कि कुछ ERCs स्टैंडअलोन नहीं हैं, बल्कि अन्य ERCs के अतिरिक्त हैं। उदाहरण के लिए, ERC-2612 (opens in a new tab) इसकी उपयोगिता में सुधार के लिए ERC-20 में एक एक्सटेंशन जोड़ता है।

लाइब्रेरी कैसे जोड़ें

अपने प्रोजेक्ट में इसे कैसे शामिल करें, इसके विशिष्ट निर्देशों के लिए हमेशा उस लाइब्रेरी के दस्तावेज़ देखें जिसे आप शामिल कर रहे हैं। कई Solidity अनुबंध लाइब्रेरी npm का उपयोग करके पैक की जाती हैं, इसलिए आप बस उन्हें npm install कर सकते हैं। अनुबंधों के संकलन के लिए अधिकांश उपकरण स्मार्ट अनुबंध लाइब्रेरी के लिए आपके node_modules में देखेंगे, इसलिए आप निम्नलिखित कर सकते हैं:

// यह आपके node_modules से @openzeppelin/contracts लाइब्रेरी को लोड करेगा
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";

contract MyNFT is ERC721 {
    constructor() ERC721("MyNFT", "MNFT") public { }
}

आप जिस भी तरीके का उपयोग करते हैं, लाइब्रेरी शामिल करते समय, हमेशा भाषा संस्करण पर नज़र रखें। उदाहरण के लिए, यदि आप अपने अनुबंध Solidity 0.5 में लिख रहे हैं तो आप Solidity 0.6 के लिए लाइब्रेरी का उपयोग नहीं कर सकते हैं।

कब उपयोग करें

अपने प्रोजेक्ट के लिए स्मार्ट अनुबंध लाइब्रेरी का उपयोग करने के कई लाभ हैं। सबसे पहले और सबसे महत्वपूर्ण, यह आपको उपयोग के लिए तैयार बिल्डिंग ब्लॉक्स प्रदान करके आपका समय बचाता है जिन्हें आप स्वयं कोड करने के बजाय अपने सिस्टम में शामिल कर सकते हैं।

सुरक्षा भी एक बड़ा फायदा है। ओपन सोर्स स्मार्ट अनुबंध लाइब्रेरी की भी अक्सर भारी जांच की जाती है। यह देखते हुए कि कई प्रोजेक्ट उन पर निर्भर हैं, समुदाय द्वारा उन्हें निरंतर समीक्षा के अधीन रखने के लिए एक मजबूत प्रोत्साहन है। पुन: प्रयोज्य अनुबंध लाइब्रेरी की तुलना में एप्लिकेशन कोड में त्रुटियां खोजना बहुत अधिक आम है। अतिरिक्त सुरक्षा के लिए कुछ लाइब्रेरी बाहरी ऑडिट (opens in a new tab) से भी गुजरती हैं।

हालाँकि, स्मार्ट अनुबंध लाइब्रेरी का उपयोग करने से आपके प्रोजेक्ट में ऐसे कोड को शामिल करने का जोखिम होता है जिससे आप परिचित नहीं हैं। किसी अनुबंध को आयात करना और उसे सीधे अपने प्रोजेक्ट में शामिल करना आकर्षक लगता है, लेकिन वह अनुबंध क्या करता है, इसकी अच्छी समझ के बिना, आप अनजाने में किसी अप्रत्याशित व्यवहार के कारण अपने सिस्टम में कोई समस्या पेश कर सकते हैं। हमेशा सुनिश्चित करें कि आप जिस कोड को आयात कर रहे हैं उसके दस्तावेज़ पढ़ें, और फिर उसे अपने प्रोजेक्ट का हिस्सा बनाने से पहले कोड की स्वयं समीक्षा करें!

अंत में, यह तय करते समय कि किसी लाइब्रेरी को शामिल करना है या नहीं, इसके समग्र उपयोग पर विचार करें। व्यापक रूप से अपनाई गई लाइब्रेरी में एक बड़ा समुदाय होने और समस्याओं के लिए इस पर अधिक नज़र रखने का लाभ होता है। स्मार्ट अनुबंधों के साथ निर्माण करते समय सुरक्षा आपका प्राथमिक ध्यान होना चाहिए!

ओपनजेपेलिन अनुबंध - सुरक्षित स्मार्ट अनुबंध विकास के लिए सबसे लोकप्रिय लाइब्रेरी।

DappSys - स्मार्ट-अनुबंधों के लिए सुरक्षित, सरल, लचीले बिल्डिंग-ब्लॉक्स।

HQ20 - वास्तविक दुनिया के लिए पूरी तरह से सुसज्जित वितरित एप्लिकेशन बनाने में आपकी सहायता करने के लिए अनुबंधों, लाइब्रेरी और उदाहरणों के साथ एक Solidity प्रोजेक्ट।

thirdweb Solidity SDK - कस्टम स्मार्ट अनुबंधों को कुशलतापूर्वक बनाने के लिए आवश्यक उपकरण प्रदान करता है

आगे की पढ़ाई

क्या आप किसी ऐसे सामुदायिक संसाधन के बारे में जानते हैं जिसने आपकी मदद की? इस पृष्ठ को संपादित करें और इसे जोड़ें!