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

अपना पहला स्मार्ट अनुबंध तैनात करना

स्मार्ट अनुबंध
Remix
Solidity
तैनात करना
शुरुआती
jdourlens
3 अप्रैल 2020
5 मिनट पढ़ें

मुझे लगता है कि आप भी इथेरियम ब्लॉकचेन पर अपना पहला स्मार्ट अनुबंध तैनात करने और उसके साथ इंटरैक्ट करने के लिए हमारी तरह ही उत्साहित हैं।

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

अपना अनुबंध लिखना

पहला कदम Remix पर जाना (opens in a new tab) और एक नई फ़ाइल बनाना है। Remix इंटरफ़ेस के ऊपरी बाएँ हिस्से पर एक नई फ़ाइल जोड़ें और अपना मनचाहा फ़ाइल नाम दर्ज करें।

Adding a new file in the Remix interface

नई फ़ाइल में, हम निम्नलिखित कोड पेस्ट करेंगे।

यदि आप प्रोग्रामिंग से परिचित हैं तो आप आसानी से अनुमान लगा सकते हैं कि यह प्रोग्राम क्या करता है। यहाँ पंक्ति दर पंक्ति स्पष्टीकरण दिया गया है:

  • पंक्ति 4: हम Counter नाम से एक अनुबंध परिभाषित करते हैं।
  • पंक्ति 7: हमारा अनुबंध count नाम का एक अनसाइंड इंटीजर (unsigned integer) स्टोर करता है जो 0 से शुरू होता है।
  • पंक्ति 10: पहला फ़ंक्शन अनुबंध की स्थिति को संशोधित करेगा और हमारे वेरिएबल count को increment() करेगा।
  • पंक्ति 15: दूसरा फ़ंक्शन केवल एक गेटर (getter) है ताकि स्मार्ट अनुबंध के बाहर count वेरिएबल का मान पढ़ा जा सके। ध्यान दें कि, चूँकि हमने अपने count वेरिएबल को पब्लिक (public) के रूप में परिभाषित किया है, इसलिए यह आवश्यक नहीं है लेकिन इसे एक उदाहरण के रूप में दिखाया गया है।

हमारे पहले सरल स्मार्ट अनुबंध के लिए बस इतना ही। जैसा कि आप जानते होंगे, यह Java या C++ जैसी OOP (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) भाषाओं की एक क्लास (class) जैसा दिखता है। अब हमारे अनुबंध के साथ खेलने का समय आ गया है।

अपना अनुबंध तैनात करना

चूँकि हमने अपना पहला स्मार्ट अनुबंध लिख लिया है, अब हम इसके साथ खेलने के लिए इसे ब्लॉकचेन पर तैनात करेंगे।

ब्लॉकचेन पर स्मार्ट अनुबंध तैनात करना वास्तव में बिना किसी प्राप्तकर्ता को निर्दिष्ट किए संकलित (compiled) स्मार्ट अनुबंध के कोड वाले लेन-देन को भेजना है।

हम सबसे पहले बाईं ओर संकलन (compile) आइकन पर क्लिक करके अनुबंध को संकलित (compile) करेंगे:

The compile icon in the Remix toolbar

फिर संकलन (compile) बटन पर क्लिक करें:

The compile button in the Remix solidity compiler

आप "Auto compile" विकल्प का चयन कर सकते हैं ताकि जब भी आप टेक्स्ट एडिटर पर सामग्री सहेजें तो अनुबंध हमेशा संकलित हो जाए।

फिर "deploy and run transactions" स्क्रीन पर जाएँ:

The deploy icon in the Remix toolbar

एक बार जब आप "deploy and run transactions" स्क्रीन पर आ जाएँ, तो दोबारा जाँच लें कि आपके अनुबंध का नाम दिखाई दे रहा है और Deploy पर क्लिक करें। जैसा कि आप पृष्ठ के शीर्ष पर देख सकते हैं, वर्तमान वातावरण "JavaScript VM" है जिसका अर्थ है कि हम अपने स्मार्ट अनुबंध को एक लोकल टेस्ट ब्लॉकचेन पर तैनात करेंगे और उसके साथ इंटरैक्ट करेंगे ताकि हम तेज़ी से और बिना किसी शुल्क के परीक्षण कर सकें।

The deploy button in the Remix solidity compiler

एक बार जब आप "Deploy" बटन पर क्लिक कर देते हैं, तो आप देखेंगे कि आपका अनुबंध नीचे दिखाई दे रहा है। इसे विस्तारित करने के लिए बाईं ओर के तीर पर क्लिक करें ताकि हम अपने अनुबंध की सामग्री देख सकें। यह हमारा वेरिएबल counter, हमारा increment() फ़ंक्शन और गेटर getCounter() है।

यदि आप count या getCount बटन पर क्लिक करते हैं, तो यह वास्तव में अनुबंध के count वेरिएबल की सामग्री को प्राप्त करेगा और इसे प्रदर्शित करेगा। चूँकि हमने अभी तक increment फ़ंक्शन को कॉल नहीं किया है, इसलिए इसे 0 प्रदर्शित करना चाहिए।

The function button in the Remix solidity compiler

आइए अब बटन पर क्लिक करके increment फ़ंक्शन को कॉल करें। आप देखेंगे कि किए गए लेन-देन के लॉग विंडो के नीचे दिखाई दे रहे हैं। आप देखेंगे कि जब आप increment बटन के बजाय डेटा प्राप्त करने के लिए बटन दबाते हैं तो लॉग अलग होते हैं। ऐसा इसलिए है क्योंकि ब्लॉकचेन पर डेटा पढ़ने के लिए किसी लेन-देन (लिखने) या शुल्क की आवश्यकता नहीं होती है। क्योंकि केवल ब्लॉकचेन की स्थिति को संशोधित करने के लिए लेन-देन करने की आवश्यकता होती है:

A log of transactions

इंक्रीमेंट (increment) बटन दबाने के बाद जो हमारे increment() फ़ंक्शन को कॉल करने के लिए एक लेन-देन उत्पन्न करेगा, यदि हम वापस count या getCount बटन पर क्लिक करते हैं तो हम अपने स्मार्ट अनुबंध की नई अद्यतन स्थिति को पढ़ेंगे जिसमें count वेरिएबल 0 से बड़ा होगा।

Newly updated state of the smart contract

अगले ट्यूटोरियल में, हम कवर करेंगे कि आप अपने स्मार्ट अनुबंधों में घटनाएँ कैसे जोड़ सकते हैं। घटनाओं को लॉग करना आपके स्मार्ट अनुबंध को डीबग करने और यह समझने का एक सुविधाजनक तरीका है कि फ़ंक्शन को कॉल करते समय क्या हो रहा है।