प्रमुख मजकुराकडे जा
Change page

स्मार्ट कॉन्ट्रॅक्ट लायब्रऱ्या

पृष्ठ अखेरचे अद्यतन: २१ ऑगस्ट, २०२५

तुम्हाला तुमच्या प्रोजेक्टमधील प्रत्येक स्मार्ट कॉन्ट्रॅक्ट अगदी सुरुवातीपासून लिहिण्याची गरज नाही. अनेक ओपन-सोर्स स्मार्ट कॉन्ट्रॅक्ट लायब्रऱ्या उपलब्ध आहेत, ज्या तुमच्या प्रोजेक्टसाठी पुन्हा वापरता येण्याजोगे बिल्डिंग ब्लॉक्स पुरवतात. यामुळे तुम्हाला पुन्हा नव्याने सुरुवात करावी लागणार नाही.

पूर्वतयारी

स्मार्ट कॉन्ट्रॅक्ट लायब्रऱ्यांमध्ये थेट प्रवेश करण्यापूर्वी, स्मार्ट कॉन्ट्रॅक्टच्या रचनेची चांगली समज असणे महत्त्वाचे आहे. जर तुम्ही अद्याप तसे केले नसेल, तर स्मार्ट कॉन्ट्रॅक्ट ॲनाटॉमी वर जा.

लायब्ररीमध्ये काय असते

स्मार्ट कॉन्ट्रॅक्ट लायब्रऱ्यांमध्ये तुम्हाला सहसा दोन प्रकारचे बिल्डिंग ब्लॉक्स आढळतील: पुन्हा वापरता येणारे बिहेवियर्स जे तुम्ही तुमच्या कॉन्ट्रॅक्टमध्ये जोडू शकता आणि विविध मानकांची अंमलबजावणी.

बिहेवियर्स

स्मार्ट कॉन्ट्रॅक्ट लिहिताना, तुम्हाला वारंवार सारखेच पॅटर्न लिहावे लागण्याची शक्यता आहे, जसे की कॉन्ट्रॅक्टमध्ये संरक्षित ऑपरेशन्स करण्यासाठी ॲडमिन ॲड्रेस नियुक्त करणे, किंवा अनपेक्षित समस्या उद्भवल्यास आपत्कालीन पॉझ बटण जोडणे.

स्मार्ट कॉन्ट्रॅक्ट लायब्रऱ्या सहसा सॉलिडिटीमध्ये लायब्रऱ्या (opens in a new tab) म्हणून किंवा इनहेरिटन्स (opens in a new tab) द्वारे या बिहेवियर्सची पुन्हा वापरण्यायोग्य अंमलबजावणी प्रदान करतात.

उदाहरणार्थ, OpenZeppelin Contracts लायब्ररी (opens in a new tab) मधील Ownable कॉन्ट्रॅक्टची (opens in a new tab) एक सरलीकृत आवृत्ती खालीलप्रमाणे आहे, जी एका ॲड्रेसला कॉन्ट्रॅक्टचा मालक म्हणून नियुक्त करते आणि केवळ त्या मालकापुरता एका मेथडचा ॲक्सेस मर्यादित करण्यासाठी मॉडिफायर प्रदान करते.

1contract Ownable {
2 address public owner;
3
4 constructor() internal {
5 owner = msg.sender;
6 }
7
8 modifier onlyOwner() {
9 require(owner == msg.sender, "Ownable: caller is not the owner");
10 _;
11 }
12}
सर्व दाखवा

तुमच्या कॉन्ट्रॅक्टमध्ये असा बिल्डिंग ब्लॉक वापरण्यासाठी, तुम्हाला प्रथम तो इम्पोर्ट करावा लागेल, आणि नंतर तुमच्या स्वतःच्या कॉन्ट्रॅक्टमध्ये त्यातून एक्सटेंड करावे लागेल. हे तुम्हाला तुमची स्वतःची फंक्शन्स सुरक्षित करण्यासाठी बेस Ownable कॉन्ट्रॅक्टद्वारे प्रदान केलेला मॉडिफायर वापरण्याची परवानगी देईल.

1import ".../Ownable.sol"; // Path to the imported library
2
3contract MyContract is Ownable {
4 // The following function can only be called by the owner
5 function secured() onlyOwner public {
6 msg.sender.transfer(1 ether);
7 }
8}

आणखी एक लोकप्रिय उदाहरण म्हणजे SafeMath (opens in a new tab) किंवा DsMath (opens in a new tab). या लायब्रऱ्या आहेत (बेस कॉन्ट्रॅक्ट्सच्या विरुद्ध) ज्या ओव्हरफ्लो तपासणीसह अंकगणितीय फंक्शन्स प्रदान करतात, जे भाषेद्वारे प्रदान केलेले नाहीत. तुमच्या कॉन्ट्रॅक्टला ओव्हरफ्लोपासून वाचवण्यासाठी नेटिव्ह अंकगणितीय ऑपरेशन्सऐवजी यापैकी कोणतीही एक लायब्ररी वापरणे ही एक चांगली सराव आहे, कारण ओव्हरफ्लोचे विनाशकारी परिणाम होऊ शकतात!

मानके

कंपोझेबिलिटी आणि इंटरऑपरेबिलिटी सुलभ करण्यासाठी, इथेरियम समुदायाने ERCs च्या स्वरूपात अनेक मानके परिभाषित केली आहेत. तुम्ही त्यांच्याबद्दल मानके विभागात अधिक वाचू शकता.

तुमच्या कॉन्ट्रॅक्टचा भाग म्हणून ERC समाविष्ट करताना, स्वतःची अंमलबजावणी करण्याचा प्रयत्न करण्याऐवजी मानक अंमलबजावणी शोधणे ही एक चांगली कल्पना आहे. अनेक स्मार्ट कॉन्ट्रॅक्ट लायब्रऱ्यांमध्ये सर्वात लोकप्रिय ERCs साठी अंमलबजावणी समाविष्ट असते. उदाहरणार्थ, सर्वव्यापी ERC20 फंजिबल टोकन स्टँडर्ड HQ20 (opens in a new tab), DappSys (opens in a new tab) आणि OpenZeppelin (opens in a new tab) मध्ये आढळू शकते. याव्यतिरिक्त, काही ERCs स्वतः ERCचा भाग म्हणून प्रमाणित अंमलबजावणी प्रदान करतात.

हे लक्षात घेण्यासारखे आहे की काही ERCs स्वतंत्र नसतात, तर त्या इतर ERCs मध्ये भर घालणाऱ्या असतात. उदाहरणार्थ, ERC2612 (opens in a new tab) हे ERC20 ची उपयोगिता सुधारण्यासाठी त्यात एक विस्तार जोडते.

लायब्ररी कशी जोडावी

तुमच्या प्रोजेक्टमध्ये लायब्ररी कशी समाविष्ट करावी याच्या विशिष्ट सूचनांसाठी तुम्ही समाविष्ट करत असलेल्या लायब्ररीच्या डॉक्युमेंटेशनचा नेहमी संदर्भ घ्या. अनेक सॉलिडिटी कॉन्ट्रॅक्ट लायब्रऱ्या npm वापरून पॅकेज केल्या जातात, त्यामुळे तुम्ही त्यांना फक्त npm install करू शकता. कॉन्ट्रॅक्ट संकलित करण्यासाठीची बहुतेक साधने तुमच्या node_modules मध्ये स्मार्ट कॉन्ट्रॅक्ट लायब्रऱ्या शोधतील, त्यामुळे तुम्ही खालीलप्रमाणे करू शकता:

1// This will load the @openzeppelin/contracts library from your node_modules
2import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
3
4contract MyNFT is ERC721 {
5 constructor() ERC721("MyNFT", "MNFT") public { }
6}

तुम्ही कोणतीही पद्धत वापरत असलात तरी, लायब्ररी समाविष्ट करताना, नेहमी भाषा आवृत्तीवर लक्ष ठेवा. उदाहरणार्थ, जर तुम्ही तुमचे कॉन्ट्रॅक्ट्स सॉलिडिटी 0.5 मध्ये लिहित असाल, तर तुम्ही सॉलिडिटी 0.6 साठीची लायब्ररी वापरू शकत नाही.

कधी वापरावे

तुमच्या प्रोजेक्टसाठी स्मार्ट कॉन्ट्रॅक्ट लायब्ररी वापरण्याचे अनेक फायदे आहेत. सर्वात महत्त्वाचे म्हणजे, ते तुम्हाला स्वतः कोड करण्याऐवजी तुमच्या सिस्टममध्ये समाविष्ट करता येणारे तयार बिल्डिंग ब्लॉक्स पुरवून तुमचा वेळ वाचवते.

सुरक्षितता हा देखील एक मोठा फायदा आहे. ओपन-सोर्स स्मार्ट कॉन्ट्रॅक्ट लायब्रऱ्यांची देखील अनेकदा कसून तपासणी केली जाते. अनेक प्रोजेक्ट्स त्यांच्यावर अवलंबून असल्यामुळे, समुदायाकडून त्यांना सतत पुनरावलोकनाखाली ठेवण्यास जोरदार प्रोत्साहन मिळते. पुन्हा वापरता येण्याजोग्या कॉन्ट्रॅक्ट लायब्रऱ्यांपेक्षा ॲप्लिकेशन कोडमध्ये त्रुटी आढळणे अधिक सामान्य आहे. अतिरिक्त सुरक्षिततेसाठी काही लायब्रऱ्यांचे बाह्य ऑडिट (opens in a new tab) देखील केले जाते.

तथापि, स्मार्ट कॉन्ट्रॅक्ट लायब्रऱ्या वापरण्यामध्ये तुमच्या प्रोजेक्टमध्ये असा कोड समाविष्ट करण्याचा धोका असतो ज्याच्याशी तुम्ही परिचित नाही. एखादे कॉन्ट्रॅक्ट इम्पोर्ट करून ते थेट तुमच्या प्रोजेक्टमध्ये समाविष्ट करणे मोहक वाटते, परंतु ते कॉन्ट्रॅक्ट काय करते याची चांगली समज नसल्यास, तुम्ही अनपेक्षित वर्तनामुळे नकळतपणे तुमच्या सिस्टममध्ये समस्या निर्माण करू शकता. तुम्ही जो कोड इम्पोर्ट करत आहात त्याचे डॉक्युमेंटेशन नेहमी वाचा आणि तुमच्या प्रोजेक्टचा भाग बनवण्यापूर्वी कोडचे स्वतः पुनरावलोकन करा!

शेवटी, लायब्ररी समाविष्ट करायची की नाही हे ठरवताना, तिच्या एकूण वापराचा विचार करा. व्यापकपणे स्वीकारलेल्या लायब्ररीला मोठा समुदाय असण्याचा आणि समस्या शोधण्यासाठी अधिक लोक त्यावर लक्ष ठेवून असण्याचा फायदा मिळतो. स्मार्ट कॉन्ट्रॅक्ट्ससह तयार करताना सुरक्षितता हे तुमचे प्राथमिक लक्ष असले पाहिजे!

OpenZeppelin Contracts - सुरक्षित स्मार्ट कॉन्ट्रॅक्ट डेव्हलपमेंटसाठी सर्वात लोकप्रिय लायब्ररी.

DappSys - स्मार्ट-कॉन्ट्रॅक्टसाठी सुरक्षित, सोपे, लवचिक बिल्डिंग-ब्लॉक्स.

HQ20 - कॉन्ट्रॅक्ट्स, लायब्रऱ्या आणि उदाहरणांसह एक सॉलिडिटी प्रोजेक्ट जो तुम्हाला वास्तविक जगासाठी पूर्ण-वैशिष्ट्यपूर्ण वितरित ॲप्लिकेशन्स तयार करण्यात मदत करतो.

thirdweb Solidity SDK - सानुकूल स्मार्ट कॉन्ट्रॅक्ट्स कार्यक्षमतेने तयार करण्यासाठी आवश्यक साधने पुरवते

पुढील वाचन

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

हा लेख उपयुक्त होता का?