---
title: "स्मार्ट अनुबंध लाइब्रेरी"
description: "अपने इथेरियम विकास प्रोजेक्ट्स को गति देने के लिए पुन: प्रयोज्य स्मार्ट अनुबंध लाइब्रेरी और बिल्डिंग ब्लॉक्स खोजें।"
lang: hi
---

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

## पूर्वापेक्षाएँ {#prerequisites}

स्मार्ट अनुबंध लाइब्रेरी में जाने से पहले, स्मार्ट अनुबंध की संरचना की अच्छी समझ होना एक अच्छा विचार है। यदि आपने अभी तक ऐसा नहीं किया है, तो [स्मार्ट अनुबंध एनाटॉमी](/developers/docs/smart-contracts/anatomy/) पर जाएँ।

## लाइब्रेरी में क्या होता है {#whats-in-a-library}

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

### व्यवहार {#behaviors}

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

स्मार्ट अनुबंध लाइब्रेरी आमतौर पर इन व्यवहारों के पुन: प्रयोज्य कार्यान्वयन को [लाइब्रेरी](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#libraries) के रूप में या Solidity में [इनहेरिटेंस](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#inheritance) के माध्यम से प्रदान करती हैं।

उदाहरण के लिए, निम्नलिखित [ओपनजेपेलिन अनुबंध लाइब्रेरी](https://github.com/OpenZeppelin/openzeppelin-contracts) से [`Ownable` अनुबंध](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.2.0/contracts/access/Ownable.sol) का एक सरलीकृत संस्करण है, जो एक पते को अनुबंध के स्वामी के रूप में नामित करता है, और किसी विधि तक पहुंच को केवल उस स्वामी तक सीमित करने के लिए एक संशोधक (modifier) प्रदान करता है।

```solidity
contract Ownable {
    address public owner;

    constructor() internal {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        require(owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }
}
```

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

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

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

एक अन्य लोकप्रिय उदाहरण [SafeMath](https://docs.openzeppelin.com/contracts/3.x/utilities#math) या [DsMath](https://dappsys.readthedocs.io/en/latest/ds_math.html) है। ये ऐसी लाइब्रेरी हैं (आधार अनुबंधों के विपरीत) जो ओवरफ़्लो जांच के साथ अंकगणितीय कार्य प्रदान करती हैं, जो भाषा द्वारा प्रदान नहीं की जाती हैं। अपने अनुबंध को ओवरफ़्लो से बचाने के लिए मूल अंकगणितीय संचालन के बजाय इनमें से किसी भी लाइब्रेरी का उपयोग करना एक अच्छा अभ्यास है, जिसके विनाशकारी परिणाम हो सकते हैं!

### मानक {#standards}

[संयोजकता और अंतर-संचालनीयता](/developers/docs/smart-contracts/composability/) को सुविधाजनक बनाने के लिए, इथेरियम समुदाय ने **ERCs** के रूप में कई मानकों को परिभाषित किया है। आप उनके बारे में [मानक](/developers/docs/standards/) अनुभाग में अधिक पढ़ सकते हैं।

अपने अनुबंधों के हिस्से के रूप में ERC को शामिल करते समय, अपना स्वयं का कार्यान्वयन बनाने की कोशिश करने के बजाय मानक कार्यान्वयन की तलाश करना एक अच्छा विचार है। कई स्मार्ट अनुबंध लाइब्रेरी में सबसे लोकप्रिय ERCs के कार्यान्वयन शामिल हैं। उदाहरण के लिए, सर्वव्यापी [ERC-20 विनिमेय टोकन मानक](/developers/tutorials/understand-the-erc-20-token-smart-contract/) [HQ20](https://github.com/HQ20/contracts/blob/master/contracts/token/README.md), [DappSys](https://github.com/dapphub/ds-token/) और [ओपनजेपेलिन](https://docs.openzeppelin.com/contracts/3.x/erc20) में पाया जा सकता है। इसके अतिरिक्त, कुछ ERCs स्वयं ERC के हिस्से के रूप में विहित (canonical) कार्यान्वयन भी प्रदान करते हैं।

यह उल्लेख करने योग्य है कि कुछ ERCs स्टैंडअलोन नहीं हैं, बल्कि अन्य ERCs के अतिरिक्त हैं। उदाहरण के लिए, [ERC-2612](https://eips.ethereum.org/EIPS/eip-2612) इसकी उपयोगिता में सुधार के लिए ERC-20 में एक एक्सटेंशन जोड़ता है।

## लाइब्रेरी कैसे जोड़ें {#how-to}

अपने प्रोजेक्ट में इसे कैसे शामिल करें, इसके विशिष्ट निर्देशों के लिए हमेशा उस लाइब्रेरी के दस्तावेज़ देखें जिसे आप शामिल कर रहे हैं। कई Solidity अनुबंध लाइब्रेरी `npm` का उपयोग करके पैक की जाती हैं, इसलिए आप बस उन्हें `npm install` कर सकते हैं। अनुबंधों के [संकलन](/developers/docs/smart-contracts/compiling/) के लिए अधिकांश उपकरण स्मार्ट अनुबंध लाइब्रेरी के लिए आपके `node_modules` में देखेंगे, इसलिए आप निम्नलिखित कर सकते हैं:

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

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

आप जिस भी तरीके का उपयोग करते हैं, लाइब्रेरी शामिल करते समय, हमेशा [भाषा](/developers/docs/smart-contracts/languages/) संस्करण पर नज़र रखें। उदाहरण के लिए, यदि आप अपने अनुबंध Solidity 0.5 में लिख रहे हैं तो आप Solidity 0.6 के लिए लाइब्रेरी का उपयोग नहीं कर सकते हैं।

## कब उपयोग करें {#when-to-use}

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

सुरक्षा भी एक बड़ा फायदा है। ओपन सोर्स स्मार्ट अनुबंध लाइब्रेरी की भी अक्सर भारी जांच की जाती है। यह देखते हुए कि कई प्रोजेक्ट उन पर निर्भर हैं, समुदाय द्वारा उन्हें निरंतर समीक्षा के अधीन रखने के लिए एक मजबूत प्रोत्साहन है। पुन: प्रयोज्य अनुबंध लाइब्रेरी की तुलना में एप्लिकेशन कोड में त्रुटियां खोजना बहुत अधिक आम है। अतिरिक्त सुरक्षा के लिए कुछ लाइब्रेरी [बाहरी ऑडिट](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/audits) से भी गुजरती हैं।

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

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

## संबंधित उपकरण {#related-tools}

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

- [दस्तावेज़ीकरण](https://docs.openzeppelin.com/contracts/)
- [GitHub](https://github.com/OpenZeppelin/openzeppelin-contracts)
- [सामुदायिक फ़ोरम](https://forum.openzeppelin.com/c/general/16)

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

- [दस्तावेज़ीकरण](https://dappsys.readthedocs.io/)
- [GitHub](https://github.com/dapphub/dappsys)

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

- [GitHub](https://github.com/HQ20/contracts)

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

- [दस्तावेज़ीकरण](https://portal.thirdweb.com/contracts/build/overview)
- [GitHub](https://github.com/thirdweb-dev/contracts)

## संबंधित ट्यूटोरियल {#related-tutorials}

- [इथेरियम डेवलपर्स के लिए सुरक्षा संबंधी विचार](/developers/docs/smart-contracts/security/) _– स्मार्ट अनुबंध बनाते समय सुरक्षा संबंधी विचारों पर एक ट्यूटोरियल, जिसमें लाइब्रेरी का उपयोग शामिल है।_
- [ERC-20 टोकन स्मार्ट अनुबंध को समझें](/developers/tutorials/understand-the-erc-20-token-smart-contract/) _- कई लाइब्रेरी द्वारा प्रदान किए गए ERC-20 मानक पर ट्यूटोरियल।_

## आगे की पढ़ाई {#further-reading}

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