अपना पहला स्मार्ट अनुबंध कैसे लिखें?



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

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

नीचे विषयों को इस स्मार्ट कॉन्ट्रैक्ट डेवलपमेंट ट्यूटोरियल में शामिल किया गया है:





अपने स्मार्ट अनुबंध का निर्माण

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



स्मार्ट कॉन्ट्रैक्ट की संरचना

संक्षेप में स्मार्ट अनुबंध, निम्नलिखित का एक संग्रह है

  • डेटा - जो अनुबंध की वर्तमान स्थिति को बनाए रखता है
  • समारोह - जो अनुबंध की स्थिति को बदलने के लिए तर्क को लागू करते हैं

सॉलिडिटी स्मार्ट कॉन्ट्रैक्ट्स एक मानक संरचना का पालन करते हैं। कोई भी स्मार्ट कॉन्ट्रैक्ट निम्नलिखित कथन से शुरू होता है



प्रज्ञा निर्देश

'Pragma' कीवर्ड का उपयोग कुछ संकलक सुविधाओं या चेक को सक्षम करने के लिए किया जा सकता है। नीचे दिए गए कथन में परिभाषित किया गया है कि स्रोत फ़ाइल (स्मार्ट अनुबंध) 0.4.0 से पहले संकलक के साथ और संकलक संस्करण 0.6.0 के बाद संकलित नहीं करेगा। यह घोषणा यह सुनिश्चित करती है कि जब कोई नया संकलक संस्करण पेश किया जाता है तो कोई अनपेक्षित व्यवहार पेश नहीं किया जाता है।

pragma सॉलिडिटी> = 0.4.0<=0.6.0 

अनुबंध की घोषणा

अनुबंध को 'अनुबंध' कीवर्ड का उपयोग करके घोषित किया गया है। यह एक रिक्त अनुबंध की घोषणा करता है जिसे 'खरीदकर्ता' नाम से पहचाना जाता है।

अनुबंध खरीदकर्ता {}

अनुबंध के लिए प्रासंगिक डेटा संग्रहीत करना

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

स्मार्ट अनुबंध विकास: चर का परिचय

ठोसता में, चर दो प्रकार के होते हैं

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

स्मार्ट कॉन्ट्रैक्ट में डेटा जोड़ना

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

Ec2 विंडोज़ उदाहरण के लिए फ़ाइलें स्थानांतरण

अब हम जो चर पेश कर रहे हैं वह एक अहस्ताक्षरित पूर्णांक है और इसे uint256 द्वारा दर्शाया गया है, यहाँ 256 256 बिट्स स्टोरेज को दर्शाता है।

  • यू - अहस्ताक्षरित (मतलब यह प्रकार केवल सकारात्मक पूर्णांक का प्रतिनिधित्व कर सकता है, सकारात्मक और नकारात्मक पूर्णांक नहीं)
  • INT - पूर्णांक
  • 256 - 256 बिट आकार में
  • न्यूनतम मूल्य uint256 सौंपा जा सकता है 0 है
  • अधिकतम मूल्य uint256 सौंपा जा सकता है 2 ^ 256-1 [एक बहुत बड़ी संख्या]

उत्पाद की मात्रा केवल एक सकारात्मक मूल्य है और वर्तमान धारणा है कि हम उत्पाद की मात्रा के लिए एक बहुत बड़े मूल्य को पूरा करने जा रहे हैं।

लिनक्स पर हडूप कैसे स्थापित करें

घोषित किया गया 'product_quantity' वैरिएबल अनुबंध स्थिति का हिस्सा है और इसलिए अनुबंध स्थान में बना रहता है या संग्रहीत रहता है। वर्तमान में, यह चर मान 0 पर डिफ़ॉल्ट होगा।

अनुबंध खरीद अधिकारी {uint256 product_quantity}

कंस्ट्रक्टर को परिभाषित करना

कॉन्ट्रैक्टर की तैनाती होने पर कंस्ट्रक्टर को बुलाया जाता है। कंस्ट्रक्टर अनुबंध को कुछ मूल्यों के साथ आरंभ करता है। वर्तमान परिदृश्य में, उत्पाद की मात्रा 100 पर सेट होती है, जब अनुबंध तैनात किया जाता है। एक वैरिएबल कंस्ट्रक्टर को एक वैरिएबल पास करके भी बनाया जा सकता है और पास में वैल्यू में इस्तेमाल करके product_quantity को इनिशियलाइज़ किया जा सकता है।

यहां ध्यान देने योग्य बात यह है कि कंस्ट्रक्टर से जुड़े एक्सेस मॉडिफायर 'पब्लिक' हैं। सार्वजनिक कीवर्ड निर्दिष्ट करता है कि कोई भी इस फ़ंक्शन का उपयोग कर सकता है, यह एक प्रतिबंधित फ़ंक्शन नहीं है।

निर्माता () सार्वजनिक {product_quantity = 100}

कार्यों को जोड़ना

आइए अब अपने प्रोग्राम को इंटरैक्टिव बनाने के लिए फंक्शन जोड़ें। कार्य नियंत्रित क्षमताएं हैं जिन्हें एक कार्यक्रम में जोड़ा जा सकता है। कोई भी फंक्शन कीवर्ड फंक्शन से पहले होता है। कुल मिलाकर यह है कि फ़ंक्शन घोषणा कैसे दिखती है' समारोह ”।

फ़ंक्शन प्राप्त करें

किसी भी कार्यक्रम के लिए सबसे आम आवश्यकताओं में से एक, संग्रहीत मूल्य को पढ़ना है। निम्नलिखित अनुबंध में, हमें 'product_quantity' मान पढ़ने की आवश्यकता है। इस क्षमता को प्रदान करने के लिए, एक रीड फंक्शन या एक गेट फंक्शन जोड़ा जाता है। इस फ़ंक्शन में हम संग्रहीत मान में कोई हेरफेर नहीं कर रहे हैं, हम केवल संग्रहीत मूल्य को पुनः प्राप्त कर रहे हैं।

आइये अब हम अपने get function को तोड़ते हैं (get_quantity)

नहीं। कीवर्ड मान
एक get_quantity (){कोई पैरामीटर पास नहीं हैं}
सह लोक{कोई भी कार्य कर सकता है}
राय{यह दर्शाता है कि फ़ंक्शन केवल अनुबंध की स्थिति को पढ़ता है, अनुबंध की स्थिति को नहीं बदलता है, इसलिए देखें}
प्रकार uint256 का एक चर लौटाता है {परिभाषित किया जाता है कि फ़ंक्शन क्या लौटा है}
फ़ंक्शन get_quantity () सार्वजनिक दृश्य रिटर्न (uint256) {वापसी product_quantity}

सेटर कार्य

डेटा पढ़ना आवश्यक है और हमने इसे अंतिम अनुभाग में पूरा किया है, लेकिन अधिकांश परिदृश्य में डेटा को लिखने / अपडेट करने की क्षमता भी आवश्यक है। सेटर फंक्शन को जोड़कर यह विशिष्ट क्षमता प्रदान की जाती है। यह फ़ंक्शन इनपुट पैरामीटर के रूप में उपयोगकर्ता से मूल्य लेता है। उपयोगकर्ता द्वारा फ़ंक्शन को प्रदान किए गए मूल्य का उपयोग करके चर 'product_quantity' का मान / अद्यतन लिखा जाता है।

चलिए अब अपने सेट फंक्शन को अपडेट करते हैं (update_quantity)

उत्पाद की मात्रा के मूल्य को अद्यतन करने के लिए एक फ़ंक्शन जोड़ना

नहीं। कीवर्ड मान
एक update_quantity (uint256 मूल्य){uint256 प्रकार का पैरामीटर मान पारित किया गया}
सह लोक{कोई भी कार्य कर सकता है}
आवश्यक नहीं है क्योंकि राज्य कार्यों द्वारा अद्यतन हो रहा है
प्रकार uint256 का एक चर लौटाता है (परिभाषित किया जाता है कि फ़ंक्शन क्या लौटा है)
function update_quantity (uint256 मान) सार्वजनिक {product_quantity = product_quantity + value}

यह सब एक साथ प्लग करना, यह है कि समग्र अनुबंध कैसा दिखना चाहिए।

pragma सॉलिडिटी> = 0.4.0<=0.6.0 contract PurchaseOrder{ uint256 product_quantity //state variable /*Called with the contract is deployed and initializes the value*/ constructor() public{ product_quantity = 100 } // Get Function function get_quantity() public view returns(uint256){ return product_quantity } // Set Function function update_quantity(uint256 value) public { product_quantity = product_quantity + value } } 

स्मार्ट कॉन्ट्रैक्ट की तैनाती

स्मार्ट अनुबंध का परीक्षण करने का समय। इस स्मार्ट अनुबंध का परीक्षण करने के लिए, हम उपयोग करेंगे रीमिक्स ऑनलाइन आईडीई

रीमिक्स एक ऑनलाइन खेल का मैदान है इथेरियम स्मार्ट अनुबंध । रीमिक्स पूरी तरह से ब्राउज़र आधारित है। रीमिक्स आपको एक ऑनलाइन आईडीई (एकीकृत विकास वातावरण) प्रदान करता है जहां आप अपने स्मार्ट अनुबंध लिख सकते हैं। रीमिक्स आपको ऑनलाइन सॉलिडिटी कंपाइलर क्षमता प्रदान करता है। रीमिक्स आईडीई में स्मार्ट अनुबंध को एक विशिष्ट संकलक संस्करण का मूल रूप से उपयोग करके संकलित किया जा सकता है।

रीमिक्स स्मार्ट कॉन्ट्रैक्ट को जल्दी से टेस्ट करने की क्षमता भी प्रदान करता है।

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

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

रीमिक्स ने हाल ही में अपने यूआई को अपग्रेड किया है।

Remix-UI-Smart-Contracts-Edureka

उपरोक्त छवि में हाइलाइट किए गए फ़ाइल आइकन पर क्लिक करें, फ़ाइल एक्सप्लोरर खुल जाएगा।

  1. प्लस आइकन पर क्लिक करके, एक नई फ़ाइल बनाई जा सकती है, फ़ाइल का नाम PurchaseOrder.sol
  2. यह PurchaseOrder.sol नामक एक खाली फ़ाइल बनाएगा, इस फ़ाइल को क्लिक करें और खोलें।
  3. चलिए हम खरीद अनुबंध में पूरा अनुबंध कॉपी करते हैं।
  4. दूसरे आइकन पर क्लिक करें, फ़ाइल आइकन के ठीक नीचे बाएं मेनू में, सॉलिडिटी कंपाइलर विकल्प दिखाई देना चाहिए।
  5. कंपाइलर लेबल के तहत, कंपाइलर संस्करण का चयन करें। वर्तमान चयनित संस्करण 0.5.8 है।
  6. संकलक संस्करण के चयन के बाद, 'CompileOrder.sol' पर क्लिक करें। यह स्मार्ट अनुबंध को संकलित करेगा।

7. एक बार जब स्मार्ट अनुबंध सफलतापूर्वक संकलित हो जाता है, तो 'संकलन विवरण' बटन पर क्लिक करें और निम्नलिखित विवरण सामने आने चाहिए। संकलन के बाद, दो प्रमुख जानकारी उपलब्ध कराई गई है

    • ABI - एप्लिकेशन बाइनरी इंटरफ़ेस। यह एक json फ़ाइल है जो स्मार्ट कॉन्ट्रैक्ट में उजागर किए गए सभी तरीकों के विवरणों के साथ मेटा के तरीकों के बारे में बताती है। इस पर अधिक चर्चा बाद के ब्लॉगों में की जाएगी।
    • बाइटकोड- EVM (Ethereum virtual machine) ऑपरेशन कोड, स्मार्ट कॉन्ट्रैक्ट लॉजिक संकलन पर बाईटेकोड में परिवर्तित हो जाता है।

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

परिनियोजन विकल्प

परिनियोजन स्क्रीन, विकल्पों की एक जोड़ी प्रदान करता है, आइए हम उन्हें एक-एक करके देखें।

  • पर्यावरण: यह अमेज़ॅन, फ्लिपकार्ट, न्यूएग (इन सभी ऑनलाइन रिटेलर हैं) से लैपटॉप खरीदने के लिए चुनने के समान एक विकल्प के बारे में सोचा जा सकता है। आप अपनी पसंद के आधार पर एक विकल्प बनाते हैं, जहां से आप खरीदना चाहते हैं। इसी तरह, रीमिक्स के मामले में, हमारे पास एक विकल्प है जहां स्मार्ट अनुबंध को तैनात करना और स्मार्ट अनुबंध का परीक्षण करना है। पर्यावरण लेबल के आगे ड्रॉपडाउन तीन चयन प्रदान करता है
    • जावास्क्रिप्ट वीएम - एक स्थानीय एथेरियम एकल नोड ब्राउज़र मेमोरी में घूमता है और 5 पूर्व-निर्धारित परीक्षण खाते प्रदान करता है जो लेनदेन के लिए इस्तेमाल किया जा सकता है (तैनाती, चालान कार्य)
    • इंजेक्ट वेब 3 प्रदान करें - यह मेटामास्क पर निर्भर करता है। मेटामास्क एक दलाल या बिचौलिया की तरह है, जो वेब अनुप्रयोगों को स्मार्ट अनुबंध के साथ बातचीत करने की अनुमति देता है। मेटामास्क पहचानों को प्रबंधित करने की क्षमता प्रदान करता है और एथेरम नेटवर्क को भेजे जाने वाले लेनदेन पर हस्ताक्षर करता है। यह बिचौलिया या 3आर डीपार्टी यह निर्धारित करने में आपकी मदद करती है कि ब्लॉकचेन नेटवर्क को स्मार्ट कॉन्ट्रैक्ट पर तैनात किया जाएगा।
    • Web3 प्रदाता - यदि आप एक स्थानीय Ethereum नोड चला रहे हैं और RPC समापन बिंदु उपलब्ध है, तो इस विकल्प का उपयोग किया जा सकता है। स्मार्ट कॉन्ट्रैक्ट को स्थानीय एथेरियम नोड में तैनात किया जाएगा।
  • लेखा: यह जानकारी चयनित वातावरण के आधार पर आबाद है। उदाहरण के लिए। जावास्क्रिप्ट वीएम 5 पूर्वनिर्मित परीक्षण खाते प्रदान करता है। Web3 प्रदाता और इंजेक्ट किए गए Web3 के मामले में पूर्वनिर्मित परीक्षण खाते प्रदान नहीं करते हैं।
  • गैस सीमा: यह परिभाषित करता है कि गैस का अधिकतम परिमाण किसी भी लेनदेन के लिए खर्च करने के लिए तैयार है। यह अनंत लूप के खिलाफ की रक्षा करने का स्थान है और अनंत लूप की स्थिति के मामले में खाते के सभी फंडों को नष्ट कर देता है।
  • मूल्य: वह मूल्य जो स्मार्ट अनुबंध को तैनात करते समय भेजने की आवश्यकता हो सकती है। यह एक वैकल्पिक मूल्य है।

अनुबंध को तैनात करने के लिए, जावास्क्रिप्ट वीएम विकल्प का चयन करें, खातों से पहला खाता नीचे छोड़ें का चयन करें, खाते के शेष (100 अंक) पर ध्यान दें।

सुनिश्चित करें कि स्मार्ट अनुबंध नाम दिखाई दे रहा है। प्रमुख क्रियाएं जो घटित होंगी

  1. खाता संतुलन 100 ईथर से 99.999999 ईथर में बदल जाता है, कटौती की गई राशि स्मार्ट अनुबंध को तैनात करने के लिए लेनदेन लागत है।
  2. तैनात अनुबंध के तहत स्मार्ट अनुबंध के लिए एक नई टाइल दिखाई देगी, जो नए स्मार्ट अनुबंध के पते को कुछ इस तरह प्रदान करेगी (0x692a70d2e424a56d2c6c27aa97d1a86395877b3a)
  3. कंसोल विंडो में निम्नलिखित जानकारी दिखाई देगी
    1. लेनदेन हैश - विशिष्ट रूप से अनुबंध परिनियोजन की पहचान करता है
    2. लेन - देन की लागत
    3. अनुबंध का पता

तैनात अनुबंध के साथ बातचीत

  1. परिनियोजित अनुबंध के तहत, दो इंटरैक्शन विधियाँ उपलब्ध हैं update_quantity और get_quantity।
  2. ये दोनों इंटरैक्शन मेथड्स 'परचेज ऑर्डर' अनुबंध में परिभाषित सार्वजनिक तरीके हैं।
  3. अद्यतन मात्रा 'update_quantity' विधि के लिए इनपुट पैरामीटर की आवश्यकता होती है, इसलिए इनपुट बॉक्स।
  4. मात्रा प्राप्त करें 'get_quantity' विधि product_quantity के मान को पुनः प्राप्त करती है।
  5. आइए देखें कि क्या होता है जब get_quantity को लागू किया जाता है, रिटर्न मान 100 दिखाया जाता है, जिसे कंस्ट्रक्टर में आरंभीकृत किया गया था। इससे लेन-देन नहीं होता है
  6. चलिए update_quantity मंगवाते हैं और इनपुट के रूप में 30 प्रदान करते हैं। इसके कारण लेनदेन होता है

संक्षेप में, कोई भी ऑपरेशन जो अनुबंध की स्थिति के लिए ऑपरेशन का कारण बनता है (यानी अनुबंध चर बदलता है) एक लेनदेन का परिणाम होगा।

कोई भी ऑपरेशन जो अनुबंध की स्थिति को पढ़ता है, वह लेनदेन का कारण नहीं बनता है।

स्मार्ट अनुबंध विकास निष्कर्ष

इसके साथ, हमने अभी-अभी अपना पहला स्मार्ट अनुबंध बनाया है, बस ठोसता की सतह को खरोंच दिया है। हमने अभी देखा है कि स्मार्ट अनुबंध को लागू करने से लेकर लेन-देन शुरू करने तक स्मार्ट अनुबंध का सही परीक्षण करने में क्या लगता है।

def __init __ (स्व):

अगले ब्लॉग में जो स्मार्ट कॉन्ट्रैक्ट डेवलपमेंट सीरीज़ का एक निरंतरता है, हम सॉलिडिटी फंडामेंटल में गहराई से ध्यान केन्द्रित करने जा रहे हैं, स्मार्ट कॉन्ट्रैक्ट परिनियोजन में एक गहरा गोता लगा रहे हैं।

उसी के साथ, मैं यह निष्कर्ष निकालता हूं स्मार्ट कॉन्ट्रैक्ट विकास ब्लॉग। मुझे उम्मीद है कि आपको यह ब्लॉग पढ़ने में मज़ा आया और इसे जानकारीपूर्ण लगा।

मैंच आप स्मार्ट कॉन्ट्रैक्ट्स सीखना चाहते हैं, ब्लॉकचैन के क्षेत्र में कैरियर बनाना और एथेरियम प्रोग्रामिंग में विशेषज्ञता हासिल करना, लाइव-ऑनलाइन में नामांकित होना यहाँ, यह आपके सीखने की अवधि में मार्गदर्शन करने के लिए 24 * 7 समर्थन के साथ आता है।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया 'स्मार्ट कॉन्ट्रैक्ट डेवलपमेंट' की टिप्पणी अनुभाग में इसका उल्लेख करें और हम आपको ईयरली पर वापस मिलेंगेसेंट।