स्मार्ट कॉन्ट्रॅक्ट्सची ओळख
स्मार्ट कॉन्ट्रॅक्ट म्हणजे काय?
"स्मार्ट कॉन्ट्रॅक्ट" हा फक्त एक प्रोग्राम आहे जो इथेरियम ब्लॉकचेनवर चालतो. हा कोड (त्याची कार्ये) आणि डेटा (त्याची स्थिती) यांचा संग्रह आहे जो इथेरियम ब्लॉकचेनवरील एका विशिष्ट पत्त्यावर असतो.
स्मार्ट कॉन्ट्रॅक्ट्स हा इथेरियम खात्याचा एक प्रकार आहे. याचा अर्थ त्यांच्याकडे शिल्लक असते आणि ते व्यवहारांचे लक्ष्य असू शकतात. तथापि, ते वापरकर्त्याद्वारे नियंत्रित केले जात नाहीत, त्याऐवजी ते नेटवर्कवर प्रस्थापित केले जातात आणि प्रोग्राम केल्याप्रमाणे चालतात. वापरकर्ता खाती नंतर स्मार्ट कॉन्ट्रॅक्टवर परिभाषित केलेले कार्य कार्यान्वित करणारे व्यवहार सबमिट करून स्मार्ट कॉन्ट्रॅक्टशी संवाद साधू शकतात. स्मार्ट कॉन्ट्रॅक्ट्स नियमित कॉन्ट्रॅक्टप्रमाणे नियम परिभाषित करू शकतात आणि कोडद्वारे त्यांची स्वयंचलितपणे अंमलबजावणी करू शकतात. स्मार्ट कॉन्ट्रॅक्ट्स डीफॉल्टनुसार हटविले जाऊ शकत नाहीत आणि त्यांच्याशी केलेले संवाद अपरिवर्तनीय असतात.
पूर्वअटी
जर तुम्ही नुकतीच सुरुवात करत असाल किंवा कमी तांत्रिक ओळखीच्या शोधात असाल, तर आम्ही आमच्या स्मार्ट कॉन्ट्रॅक्ट्सच्या ओळखीची शिफारस करतो.
स्मार्ट कॉन्ट्रॅक्ट्सच्या जगात उडी मारण्यापूर्वी तुम्ही खाती, व्यवहार आणि इथेरियम व्हर्च्युअल मशीन बद्दल वाचले असल्याची खात्री करा.
एक डिजिटल व्हेंडिंग मशीन
निक साबो (opens in a new tab) यांनी वर्णन केल्याप्रमाणे, स्मार्ट कॉन्ट्रॅक्टसाठी कदाचित सर्वोत्तम रूपक म्हणजे व्हेंडिंग मशीन. योग्य इनपुटसह, विशिष्ट आउटपुटची हमी दिली जाते.
व्हेंडिंग मशीनमधून स्नॅक मिळवण्यासाठी:
पैसे + स्नॅकची निवड = स्नॅक मिळतो
हे लॉजिक व्हेंडिंग मशीनमध्ये प्रोग्राम केलेले असते.
व्हेंडिंग मशीनप्रमाणेच स्मार्ट कॉन्ट्रॅक्टमध्ये लॉजिक प्रोग्राम केलेले असते. जर हे व्हेंडिंग मशीन Solidity मध्ये लिहिलेले स्मार्ट कॉन्ट्रॅक्ट असते तर ते कसे दिसेल याचे एक साधे उदाहरण येथे आहे:
pragma solidity 0.8.7;
contract VendingMachine {
// कॉन्ट्रॅक्टचे स्थिती व्हेरिएबल्स घोषित करा
address public owner;
mapping (address => uint) public cupcakeBalances;
// जेव्हा 'VendingMachine' कॉन्ट्रॅक्ट प्रस्थापित केले जाते:
// 1. प्रस्थापित करणारा पत्ता कॉन्ट्रॅक्टचा मालक म्हणून सेट करा
// 2. प्रस्थापित स्मार्ट कॉन्ट्रॅक्टची कपकेक शिल्लक 100 वर सेट करा
constructor() {
owner = msg.sender;
cupcakeBalances[address(this)] = 100;
}
// मालकाला स्मार्ट कॉन्ट्रॅक्टची कपकेक शिल्लक वाढवण्याची परवानगी द्या
function refill(uint amount) public {
require(msg.sender == owner, "Only the owner can refill.");
cupcakeBalances[address(this)] += amount;
}
// कोणालाही कपकेक्स खरेदी करण्याची परवानगी द्या
function purchase(uint amount) public payable {
require(msg.value >= amount * 1 ether, "You must pay at least 1 ETH per cupcake");
require(cupcakeBalances[address(this)] >= amount, "Not enough cupcakes in stock to complete this purchase");
cupcakeBalances[address(this)] -= amount;
cupcakeBalances[msg.sender] += amount;
}
}
ज्याप्रमाणे व्हेंडिंग मशीनमुळे विक्रेत्या कर्मचाऱ्याची गरज दूर होते, त्याचप्रमाणे स्मार्ट कॉन्ट्रॅक्ट्स अनेक उद्योगांमधील मध्यस्थांची जागा घेऊ शकतात.
परवानगीमुक्त
कोणीही स्मार्ट कॉन्ट्रॅक्ट लिहू शकतो आणि ते नेटवर्कवर प्रस्थापित करू शकतो. तुम्हाला फक्त स्मार्ट कॉन्ट्रॅक्ट भाषेत कोड कसा करायचा हे शिकण्याची आणि तुमचे कॉन्ट्रॅक्ट प्रस्थापित करण्यासाठी पुरेसे ETH असण्याची आवश्यकता आहे. स्मार्ट कॉन्ट्रॅक्ट प्रस्थापित करणे हा तांत्रिकदृष्ट्या एक व्यवहार आहे, त्यामुळे तुम्हाला साध्या ETH हस्तांतरणासाठी ज्याप्रमाणे गॅस द्यावा लागतो त्याचप्रमाणे गॅस द्यावा लागतो. तथापि, कॉन्ट्रॅक्ट प्रस्थापनेसाठी गॅसचा खर्च खूप जास्त असतो.
इथेरियममध्ये स्मार्ट कॉन्ट्रॅक्ट्स लिहिण्यासाठी विकसक-अनुकूल भाषा आहेत:
- Solidity
- Vyper
तथापि, ते प्रस्थापित करण्यापूर्वी संकलित (compiled) केले जाणे आवश्यक आहे जेणेकरून इथेरियमचे व्हर्च्युअल मशीन कॉन्ट्रॅक्टचा अर्थ लावू शकेल आणि ते संचयित करू शकेल. संकलनाबद्दल अधिक
संयोज्यता
स्मार्ट कॉन्ट्रॅक्ट्स इथेरियमवर सार्वजनिक असतात आणि त्यांचा ओपन APIs म्हणून विचार केला जाऊ शकतो. याचा अर्थ काय शक्य आहे याचा मोठ्या प्रमाणावर विस्तार करण्यासाठी तुम्ही तुमच्या स्वतःच्या स्मार्ट कॉन्ट्रॅक्टमध्ये इतर स्मार्ट कॉन्ट्रॅक्ट्स कॉल करू शकता. कॉन्ट्रॅक्ट्स इतर कॉन्ट्रॅक्ट्स देखील प्रस्थापित करू शकतात.
स्मार्ट कॉन्ट्रॅक्ट संयोज्यतेबद्दल अधिक जाणून घ्या.
मर्यादा
केवळ स्मार्ट कॉन्ट्रॅक्ट्स "वास्तविक-जगातील" घटनांबद्दल माहिती मिळवू शकत नाहीत कारण ते साखळीबाह्य स्रोतांमधून डेटा पुनर्प्राप्त करू शकत नाहीत. याचा अर्थ ते वास्तविक जगातील घटनांना प्रतिसाद देऊ शकत नाहीत. हे डिझाइननुसार आहे. बाह्य माहितीवर अवलंबून राहिल्याने एकमत धोक्यात येऊ शकते, जे सुरक्षा आणि विकेंद्रीकरणासाठी महत्त्वाचे आहे.
तथापि, ब्लॉकचेन ॲप्लिकेशन्सना साखळीबाह्य डेटा वापरता येणे महत्त्वाचे आहे. यावर उपाय म्हणजे ओरॅकल्स (oracles) जी अशी साधने आहेत जी साखळीबाह्य डेटा घेतात आणि तो स्मार्ट कॉन्ट्रॅक्ट्सना उपलब्ध करून देतात.
स्मार्ट कॉन्ट्रॅक्ट्सची आणखी एक मर्यादा म्हणजे कॉन्ट्रॅक्टचा जास्तीत जास्त आकार. स्मार्ट कॉन्ट्रॅक्ट जास्तीत जास्त 24KB असू शकते किंवा त्याचा गॅस संपेल. द डायमंड पॅटर्न (The Diamond Pattern) (opens in a new tab) वापरून यावर मात केली जाऊ शकते.
मल्टीसिग कॉन्ट्रॅक्ट्स
मल्टीसिग (मल्टिपल-सिग्नेचर) कॉन्ट्रॅक्ट्स ही अशी स्मार्ट कॉन्ट्रॅक्ट खाती आहेत ज्यांना व्यवहार कार्यान्वित करण्यासाठी अनेक वैध स्वाक्षऱ्या आवश्यक असतात. मोठ्या प्रमाणात इथर किंवा इतर टोकन्स असलेल्या कॉन्ट्रॅक्ट्ससाठी सिंगल पॉईंट ऑफ फेल्युअर (single points of failure) टाळण्यासाठी हे खूप उपयुक्त आहे. मल्टीसिग्स कॉन्ट्रॅक्ट अंमलबजावणी आणि की व्यवस्थापनाची जबाबदारी अनेक पक्षांमध्ये विभागतात आणि एका खाजगी कीच्या नुकसानीमुळे होणारे निधीचे अपरिवर्तनीय नुकसान टाळतात. या कारणांमुळे, साध्या DAO प्रशासनासाठी मल्टीसिग कॉन्ट्रॅक्ट्स वापरले जाऊ शकतात. कार्यान्वित करण्यासाठी मल्टीसिग्सना M संभाव्य स्वीकार्य स्वाक्षऱ्यांपैकी N स्वाक्षऱ्या आवश्यक असतात (जेथे N ≤ M, आणि M > 1). N = 3, M = 5 आणि N = 4, M = 7 सामान्यतः वापरले जातात. 4/7 मल्टीसिगला सात संभाव्य वैध स्वाक्षऱ्यांपैकी चार स्वाक्षऱ्या आवश्यक असतात. याचा अर्थ तीन स्वाक्षऱ्या गमावल्या तरीही निधी पुनर्प्राप्त करण्यायोग्य आहे. या प्रकरणात, याचा अर्थ असाही होतो की कॉन्ट्रॅक्ट कार्यान्वित करण्यासाठी बहुसंख्य की-धारकांनी सहमत असणे आणि स्वाक्षरी करणे आवश्यक आहे.
स्मार्ट कॉन्ट्रॅक्ट संसाधने
ओपनझेपलिन कॉन्ट्रॅक्ट्स - सुरक्षित स्मार्ट कॉन्ट्रॅक्ट विकासासाठी लायब्ररी.
- openzeppelin.com/contracts/ (opens in a new tab)
- GitHub (opens in a new tab)
- कम्युनिटी फोरम (opens in a new tab)
पुढील वाचन
- कॉइनबेस्: स्मार्ट कॉन्ट्रॅक्ट म्हणजे काय? (opens in a new tab)
- चेनलिंक: स्मार्ट कॉन्ट्रॅक्ट म्हणजे काय? (opens in a new tab)
- व्हिडिओ: सोप्या भाषेत स्पष्टीकरण - स्मार्ट कॉन्ट्रॅक्ट्स (opens in a new tab)
- Cyfrin Updraft: Web3 शिक्षण आणि ऑडिटिंग प्लॅटफॉर्म (opens in a new tab)
ट्यूटोरियल्स: इथेरियमवर स्मार्ट कॉन्ट्रॅक्ट स्वाक्षऱ्या (EIP-1271)
- EIP-1271: स्मार्ट कॉन्ट्रॅक्ट स्वाक्षऱ्यांवर स्वाक्षरी करणे आणि पडताळणी करणे – EIP-1271 स्मार्ट कॉन्ट्रॅक्ट्सना स्वाक्षऱ्या पडताळण्यास कसे सक्षम करते, सेफ (Safe) अंमलबजावणीच्या मार्गदर्शनासह.