Contents
दूसरा चरण
इस खंड में हम आपके विकास के अनुभव को यथासंभव आसान बनाने के लिए कुछ शक्तिशाली उपकरण पेश करने जा रहे हैं। हम Truffle नामक एक विकास वातावरण स्थापित करेंगे, सॉलिडिटी का पता लगाएंगे, एक स्मार्ट अनुबंध के मूल सिद्धांतों को कवर करेंगे (हम अपना खुद का बना लेंगे!), और हमारे स्थानीय मशीन पर अपना बहुत ही नोड शुरू करें। एक बार जब हम सफलतापूर्वक स्थानीय रूप से तैनात हो जाते हैं, तो हम रीमिक्स का उपयोग अपने अनुबंध के साथ बातचीत करने और विकास प्रक्रिया में गहराई से करने के लिए करेंगे!
Truffle से परिचित
कवक
Truffle एक उत्कृष्ट विकास वातावरण है जो आपको Ethereum Virtual Machine का उपयोग करके कनेक्ट करने और परीक्षण करने दोनों की अनुमति देता है। ट्रफल को विकास को आसान बनाने के लिए बनाया गया था, और स्थानीय रूप से होने वाली बातचीत के साथ यह एक टेस्टनेट (जैसे रोपस्टीन या रिंकीबी) और मेननेट दोनों पर तैनाती के तनाव को कम करने में मदद करता है।.
Truffle पर अधिक प्रलेखन के लिए एक नज़र डालें यहां:
अपने टर्मिनल में Truffle को स्थापित करने के लिए आगे बढ़ें और निम्नलिखित चलाएं:
npm ट्रफल-जी स्थापित करें
नोट: विंडोज के लिए सिफारिशें
यदि आप विंडोज पर Truffle चला रहे हैं, तो आप कुछ नामकरण संघर्षों का सामना कर सकते हैं जो Truffle को ठीक से निष्पादित करने से रोक सकते हैं। कृपया देखें नामकरण संघर्ष को हल करने पर अनुभाग समाधान के लिए.
गनाचे
जबकि हम इस पर आगे बढ़ते हैं और ganache के लिए CLI स्थापित करते हैं
गन्चे पर एक त्वरित गति यह है कि यह एक व्यक्तिगत ब्लॉकचेन है जिसका उपयोग आप स्थानीय रूप से परियोजनाओं के कार्यशीलता को जल्दी से करने और परीक्षण करने के लिए कर सकते हैं। गनाचे एक उपकरण है जिसे आप विकास चक्र की संपूर्णता में उपयोग कर सकते हैं। आप न केवल विकसित करने में सक्षम हैं, बल्कि अपनी dApps को भी तैनात और परख सकते हैं। यह सब आपकी मशीन पर स्थानीय रूप से होता है इसलिए यह आपकी परियोजनाओं पर काम करने के लिए सबसे कम घर्षण / जोखिम वाला वातावरण है!
Npm का उपयोग करना:
npm स्थापित -g ganache-cli
ठीक है, वापस ट्रफल के लिए!
Truffle के कुछ प्रसाद प्रदान करते हैं:
- अंतर्निहित स्मार्ट अनुबंध संकलन, लिंकिंग, परिनियोजन और बाइनरी प्रबंधन.
- तेजी से विकास के लिए स्वचालित अनुबंध परीक्षण.
- स्क्रिप्ट करने योग्य, एक्स्टेंसिबल तैनाती & पलायन की रूपरेखा.
- किसी भी संख्या में जनता को तैनात करने के लिए नेटवर्क प्रबंधन & निजी नेटवर्क.
- EthPM के साथ पैकेज प्रबंधन & ERM190 मानक का उपयोग करते हुए एनपीएम.
- सीधे अनुबंध संचार के लिए इंटरएक्टिव कंसोल.
- तंग एकीकरण के समर्थन के साथ विन्यास योग्य पाइपलाइन का निर्माण.
- बाहरी स्क्रिप्ट रनर जो ट्रफल वातावरण में स्क्रिप्ट निष्पादित करता है.
हमारे ट्यूटोरियल के लिए हम जमीन से कुछ का निर्माण करने जा रहे हैं, हालांकि आप बॉयलर प्रोजेक्ट्स में से कुछ की जांच करने के लिए पूरी तरह से प्रोत्साहित हैं, ट्रफल ने पहले से ही ट्रूफल बॉक्स (पाया गया) कहा है। यहां).
अब हमारे पास ट्रफल और गैन्चे स्थापित हो गए हैं, आइए एकान्तता पर चर्चा करें!
दृढ़ता
सॉलिडिटी एक अविश्वसनीय लोकप्रिय वस्तु उन्मुख, स्मार्ट कॉन्ट्रैक्ट को लागू करने के लिए उच्च स्तरीय भाषा है जो एथेरियम वर्चुअल मशीन (ईवीएम) पर चलती है। स्मार्ट कॉन्ट्रैक्ट्स ऐसे प्रोग्राम हैं जो एथेरियम राज्य के भीतर खातों के व्यवहार को नियंत्रित करते हैं। यदि आपने पहले सॉलिडिटी की एक पंक्ति को कभी नहीं देखा है, लेकिन C ++ और या जावास्क्रिप्ट से परिचित हैं, तो आप कुछ समानताओं से अधिक नोटिस करेंगे.
सॉलिडिटी एक सांख्यिकीय रूप से टाइप की गई भाषा है जो अन्य विशेषताओं के बीच विरासत, लाइब्रेरी और जटिल उपयोगकर्ता-परिभाषित प्रकारों का समर्थन करती है। सॉलिडिटी के साथ आप वोटिंग, क्राउडफंडिंग, यहां तक कि ब्लाइंड नीलामियों जैसे कुछ मामलों के नाम के लिए कॉन्ट्रैक्ट बना सकते हैं.
सॉलिडिटी को बायटेकोड में संकलित किया जाता है जो ईवीएम पर निष्पादन योग्य होता है। सॉलिडिटी के साथ, डेवलपर्स उन अनुप्रयोगों को लिखने में सक्षम होते हैं जो स्मार्ट कॉन्ट्रैक्ट में सन्निहित व्यापार तर्क को लागू करते हैं, जो लेन-देन के गैर-प्रतिक्षेपण रिकॉर्ड के लिए छोड़ देते हैं। स्मार्ट अनुबंध उपयोगकर्ताओं को कोड पर भरोसा करने की अनुमति देते हैं, जो एक भरोसेमंद वातावरण बनाने में सहायता करता है जहां संभावित मानव भ्रष्टाचार को बहुत दूर किया जाता है.
अनुबंधों को तैनात करते समय ध्यान रखें, आपको हमेशा उस संस्करण पर ध्यान देना चाहिए जिसका आप उपयोग कर रहे हैं। ब्रेकिंग परिवर्तन, नई सुविधाएँ, और बग फिक्स नियमित रूप से पेश किए जाते हैं (यह याद रखें कि यदि आप खुद को ऑनलाइन ट्यूटोरियल के बाद पाते हैं, तो त्रुटियों में चल रहा है, इसलिए हो सकता है आपके करीब प्रलेखन).
ट्रफल प्रोजेक्ट शुरू करना
इसके साथ ही कहा कि हमारी परियोजना को शुरू करें और इसे “एथ-हेलो-वर्ल्ड” नाम दें
अपने टर्मिनल में कूदें और एक नया खाली फ़ोल्डर बनाएं
mkdir एथ-हैलो-दुनिया
एक बार जब हम अपनी खाली निर्देशिका को आगे बढ़ाते हैं और फ़ोल्डर में कूदते हैं और कमांड चलाते हैं
ट्रफल इनिट
एक बार प्रक्रिया पूरी होने के बाद हमें कुछ ऐसी फाइलें देखने में सक्षम होना चाहिए जो हमारे लिए बनाई गई थीं:
अब हमारे पास संपर्क, माइग्रेशन, एक परीक्षण फ़ोल्डर और एक ट्रफल-कॉन्फिग फ़ाइल है। आइए इन फ़ाइलों पर एक नज़र डालें और उच्च स्तर पर चर्चा करें कि वे क्या हैं.
ठेके
इस फ़ोल्डर में आपके सभी स्मार्ट कॉन्ट्रैक्ट शामिल होंगे (जो इस उदाहरण में हम सॉलिडिटी का उपयोग करके बनाएंगे)। यदि आपने कभी स्मार्ट संपर्कों के बारे में नहीं सुना है, तो उनके बारे में सोचने का एक तरीका है; ब्लॉकचेन पर चलने वाले कोड के टुकड़े (यह स्थानीय, परीक्षण या मेननेट हो सकते हैं) जो उन्हें चलाने वाले सभी के लिए समान परिणाम देने की गारंटी देते हैं। स्मार्ट कॉन्ट्रैक्ट का उपयोग डीएपी (विकेंद्रीकृत अनुप्रयोगों) के भीतर किया जाता है और इसमें उपयोग के मामलों की जबरदस्त मात्रा होती है। वोटिंग, गेमिंग, सप्लाई चेन, मुद्राएं, वित्तीय रिकॉर्ड, और यह सिर्फ कुछ ही नाम है!
इसे और भी नीचे तोड़ने के लिए निक स्जाबो ने वेंडिंग मशीन का उदाहरण दिया। यदि आप मशीन में सही मात्रा में सिक्के डालते हैं, तो आप (और आपके पहले / बाद के सभी लोग) विनिमय में एक ही सटीक परिणाम की उम्मीद कर सकते हैं। Ethereum पर बनाए गए स्मार्ट कॉन्टैक्ट्स के लिए भी यही कहा जाता है, उनमें एक वैल्यू होती है और जब तक उनकी शर्तें पूरी नहीं हो जाती हैं (यानी हमारे उदाहरण में सिक्कों की सही मात्रा) तब यह आपके द्वारा पुनर्प्राप्त की जा रही सूचना को अनलॉक और रिलीज़ कर देगा.
हम थोड़ी देर बाद सॉलिडिटी और स्मार्ट कॉन्ट्रैक्ट्स पर चर्चा करने के लिए वापस आएँगे, चलो पलायन पर जाएँ!
माइग्रेशन
माइग्रेशन जावास्क्रिप्ट फाइलें हैं जो आपको Ethereum नेटवर्क में अपने कॉन्ट्रैक्ट को तैनात करने की अनुमति देती हैं। उनके बारे में वास्तव में दिलचस्प यह है कि एक अंतर्निहित धारणा है कि आपका काम विकसित होगा, और आपकी तैनाती समय के साथ बदल जाएगी। जैसे ही आप अपडेट करते हैं, आप अपनी परियोजना के विकास के दौरान नई माइग्रेशन स्क्रिप्ट बनाते हैं। माइग्रेशन फ़ाइलों के बारे में सोचने का एक तरीका यह है कि वे आपके कार्यों के मंचन और तैनाती के लिए मुख्य रूप से जिम्मेदार हैं। उनके बारे में सोचने का एक सरल तरीका है माइग्रेशन, प्रबंधित परिनियोजन स्क्रिप्ट का एक सेट है। जैसा कि आप अपने काम को अद्यतन करते हैं, आपके पहले से चलाए गए माइग्रेशन का एक लॉग ऑन-चेन इन बिल्ट-इन माइग्रेशन अनुबंध के माध्यम से दर्ज किया जाता है.
अपने लिए एक नज़र डालें, आपके पास पहले से ही एक माइग्रेशन अनुबंध है! अपनी अनुबंध निर्देशिका पर जाएं और इसे खोलें, आपको एक Migrations.sol फ़ाइल दिखाई देगी जिसमें एक अनुबंध होता है जिसमें कुछ इस तरह से दिखना चाहिए:
यह एक डिफ़ॉल्ट अनुबंध है जो हमारे लिए तब बनाया जाता है जब हम ट्रफल इनिट चलाते हैं। प्रकृति द्वारा ट्रफल आपको माइग्रेशन सुविधा का उपयोग करने के लिए माइग्रेशन अनुबंध की आवश्यकता होती है, इसलिए इसे हटाएं नहीं!
नोट: माइग्रेशन सुविधा का लाभ लेने के लिए आपको अपने पहले माइग्रेशन के अंदर इस अनुबंध को तैनात करना होगा.
अब जब हमें अपने माइग्रेशन अनुबंध को देखने का मौका मिला है तो हम माइग्रेशन डायरेक्टरी को देख सकते हैं और हमें 1_inital_migrations.js नामक एक फ़ाइल दिखाई देगी।
नोट: इस फ़ाइल के नामकरण सम्मेलन पर एक नज़र डालें, यह एक संख्या के साथ उपसर्ग है और एक विवरण द्वारा प्रत्यय है। क्रमांकित उपसर्ग को रिकॉर्ड करने के लिए आवश्यक है कि क्या प्रवास सफलतापूर्वक चला। प्रत्यय विशुद्ध रूप से मानवीय पठनीयता के लिए है
जब आप अनुबंध बनाते हैं, तो आपको यह सुनिश्चित करने की आवश्यकता होती है कि आपके पास उनके साथ एक माइग्रेशन.जेएस फ़ाइल है। विरूपण साक्ष्य के बिना बहुत गहरे में (), तैनातीकर्ता यहां इन विधियों के उपयोग को और अधिक स्पष्ट करने के लिए ट्रफल टीम से कुछ उत्कृष्ट दस्तावेज हैं.
ट्रफल परियोजना को संकलित करने के लिए, उस निर्देशिका की जड़ में बदलें जहाँ परियोजना स्थित है और फिर एक टर्मिनल में निम्नलिखित टाइप करें:
ट्रफल संकलन
अपने टर्मिनल में अपने माइग्रेशन को चलाने के लिए आप अंततः चलते हैं (हालांकि, हमें अभी तक ऐसा करने की आवश्यकता नहीं है!)
ट्रफल प्रवास
यह आपकी परियोजना के माइग्रेशन निर्देशिका के भीतर स्थित सभी माइग्रेशन चलाएगा.
यह ध्यान रखना दिलचस्प है कि यह कमांड केवल नए बनाए गए माइग्रेशन चलाएगा। इसलिए यदि आपका पिछला माइग्रेशन सफलतापूर्वक चला, तो वह इसे पुन: चालू नहीं करेगा। इसके अलावा, यदि कोई नया माइग्रेशन चलाने के लिए मौजूद नहीं है, तो यह बस नहीं चलता है। यदि आवश्यक हो तो आप शुरू से ही अपने सभी माइग्रेशन को चलाने के लिए –reset विकल्प का उपयोग कर सकते हैं.
अन्य कमांड विकल्प प्रलेखित हैं यहां.
नोट: हमने पहले स्थापित किया था, लेकिन स्थानीय परीक्षण के लिए परीक्षण ब्लॉकचेन जैसे कि सुनिश्चित करें गनाचे माइग्रेट करने से पहले स्थापित और चल रहा है.
परिक्षण
जब लिखने के परीक्षण की बात आती है तो ट्रफल इस सहज ज्ञान युक्त बनाने के लिए कुछ उत्कृष्ट उपकरणों के साथ लोड होता है। विशेष रूप से यदि आप अपने अनुबंधों को मेननेट पर तैनात करने की योजना बनाते हैं, (लेकिन यह अच्छा अभ्यास है, तो टेस्टनेट पर भी) परीक्षणों को चलाना और अपने अनुबंधों को अपनी सर्वोत्तम क्षमताओं में जांचना बहुत महत्वपूर्ण है। ट्रफल ने आपके विकास की समीक्षा / परीक्षण करने के लिए इसे सरल और प्रबंधनीय बना दिया है.
ट्रफल का उपयोग करता है कहवा परीक्षण रूपरेखा और चाय आपको अपने जावास्क्रिप्ट परीक्षणों को लिखने के लिए एक ठोस रूपरेखा प्रदान करने के दावे के लिए.
नोट: यदि आप मोचा में इकाई परीक्षण लिखने से अपरिचित हैं, तो कृपया देखें मोचा का प्रलेखन जारी रखने से पहले.
साइड नोट: अपने अनुबंधों की पूरी तरह से समीक्षा करने के लिए उपयोग करने के लिए एक उत्कृष्ट उपकरण है मिथक, स्मार्ट कॉन्ट्रैक्ट्स के लिए गहन समीक्षा के क्षेत्र में प्रमुख सुरक्षा विश्लेषण सेवा। उनका मिशन केवल यह सुनिश्चित करना है कि आप महंगी त्रुटियों से बचें, लेकिन एथेरेम को समग्र रूप से अधिक सुरक्षित और भरोसेमंद मंच बनाने के लिए.
सभी परीक्षण फ़ाइलें ./test निर्देशिका में स्थित होनी चाहिए। Truffle केवल निम्न फ़ाइल एक्सटेंशन के साथ परीक्षण फ़ाइलें चलाएगा: .js, .ts, .es, .es6, .jsx, और .sol। अन्य सभी फाइलों को नजरअंदाज कर दिया जाता है.
सभी परीक्षण चलाने के लिए, बस चलाएं:
ट्रफल परीक्षण
अब जब हमने ट्रफ़ल इनिट बनाया है और हमारी परियोजना का मचान बनाया है, तो अब आगे बढ़ते हैं और हमारी परियोजना में हमारे स्मार्ट अनुबंध को जोड़ते हैं!
स्मार्ट कॉन्ट्रैक्ट लिखना
चलो अनुबंध निर्देशिका में कूदते हैं और अपना पहला अनुबंध लिखते हैं जिसे हम अपने स्थानीय परीक्षण वातावरण (गणक) पर तैनात करने की योजना बनाते हैं।!
हम अपनी .sol फ़ाइल बनाकर शुरू करेंगे, जिसे हम HelloWorld.sol नाम देंगे
आगे हम अपना मूल अनुबंध जोड़ सकते हैं जो कुछ इस तरह दिखाई देगा
pragma की दृढ़ता >= 0.5.8 <0.7.0; अनुबंध HelloWorld {स्ट्रिंग सार्वजनिक संदेश; कंस्ट्रक्टर (स्ट्रिंग मेमोरी initMessage) सार्वजनिक {संदेश = initMessage; } फ़ंक्शन अपडेट (स्ट्रिंग मेमोरी newMessage) सार्वजनिक {संदेश = newMessage; }}
हमारे अनुबंध को थोड़ा करीब से देखते हुए हम कुछ तत्वों को तोड़ सकते हैं
याद रखें, एक अनुबंध कार्यों और डेटा (इसकी स्थिति) का एक संग्रह है.
प्रैग्मा कीवर्ड का उपयोग कुछ संकलक सुविधाओं या जांचों को सक्षम करने में किया जा सकता है। प्रागमा निर्देश हमेशा एक स्रोत फ़ाइल के लिए स्थानीय होता है, इसलिए यदि आपको अपनी परियोजना में सक्षम होना है, तो आपको अपनी सभी फ़ाइलों के लिए प्रागमा को जोड़ना होगा। हमारे (या किसी भी) सॉलिडिटी फ़ाइल की शुरुआत में प्रैग्मेंट की घोषणा के बिना, हमारे अनुबंध को नहीं पता होगा कि कैसे संकलित किया जाए.
()यहां सॉलिडिटी डॉक्स की एक कड़ी है, जो सॉलिडिटी की बारीकियों के बारे में जानती है)
अंत में, एक अनुबंध फ़ंक्शन और डेटा (इसकी स्थिति) का एक संग्रह है जो एथेरियम ब्लॉकचैन पर एक विशिष्ट पते पर रहता है.
हमारे अनुबंध की कार्यक्षमता को देखते हुए हम देख सकते हैं कि हम अपना संदेश देखने योग्य सार्वजनिक स्ट्रिंग के लिए सेट कर रहे हैं.
कीवर्ड “सार्वजनिक” एक अनुबंध के बाहर से चर को सुलभ बनाता है और एक फ़ंक्शन बनाता है जो अन्य अनुबंध या एसडीके मूल्य स्ट्रिंग संदेश को एक्सेस करने के लिए कॉल कर सकता है.
अनुबंध HelloWorld {स्ट्रिंग सार्वजनिक संदेश;
यहां एक फ़ंक्शन है जो केवल अनुबंध के निर्माण के दौरान चलता है
कंस्ट्रक्टर (स्ट्रिंग मेमोरी initMessage) सार्वजनिक {संदेश = initMessage; }
यह एक स्ट्रिंग मान लेता है और मेमोरी डेटा स्टोरेज एरिया में वैल्यू को स्टोर करता है, उस वैल्यू मैसेज यानी इनटाइसेज में संदेश सेट करता है.
फिर हम एक संदेश शुरू कर सकते हैं जो एक पैरामीटर के रूप में पारित किया जाता है और अद्यतन फ़ंक्शन के साथ बदल / अपडेट किया जा सकता है.
यह सार्वजनिक रूप से सुलभ फ़ंक्शन है जो एक स्ट्रिंग को पैरामीटर के रूप में लेता है और `संदेश` को अपडेट करता है (नीचे देखें).
समारोह अद्यतन (स्ट्रिंग मेमोरी newMessage) सार्वजनिक {संदेश = newMessage; }}
वहां आपके पास यह एक बुनियादी लेकिन सुपाच्य हैलोवर्ल्ड अनुबंध है!
अब जब हमारे पास हमारा अनुबंध है, तो हम अब यह सुनिश्चित कर सकते हैं कि इसमें संकलन करने की क्षमता है!
हमारे प्रोजेक्ट में माइग्रेशन फ़ोल्डर पर जाएं और अब हम अपने HelloWorld अनुबंध के लिए a.js फ़ाइल समर्पित करेंगे.
हम एक नई फ़ाइल बनाएंगे और उसका नाम 2_deploy_contracts.js होगा
पहले से नामकरण सम्मेलनों पर ध्यान दें!
const HelloWorld = कलाकृतियाँ"नमस्ते दुनिया"); मॉड्यूल.एक्सपोर्ट्स = फ़ंक्शन (तैनातीकर्ता) {तैनातीकर्ता, "तार"); };
अच्छा काम! हम अपने अनुबंध को तैनात करने के लिए लगभग तैयार हैं, लेकिन पहले हमें यह सुनिश्चित करने की आवश्यकता है कि हमारी ट्रफल-कॉन्फिग फाइलों को पता है कि किससे बात करनी है। जैसा कि पहले उल्लेख किया गया है कि हम इस खंड में अपने स्थानीय वातावरण पर ध्यान केंद्रित करने जा रहे हैं, लेकिन खंड 3 (स्पोलियर) में हम न केवल स्थानीय रूप से निर्माण और तैनाती करते हैं, हम इसे एक परीक्षण नेटवर्क पर लाते हैं!
जब तक आप नेटवर्क से संबंधित अनुभाग नहीं देखते हैं, तब तक अपनी ट्रफल-config.js फ़ाइल में नीचे स्क्रॉल करें
निम्नलिखित को जोड़ना / जोड़ना
नेटवर्क: {विकास: {मेजबान: "127.0.0.1", पोर्ट: 8545, network_id: "*", },
अब आपकी फ़ाइल कुछ इस तरह दिखनी चाहिए:
यहाँ हो रहा है हम बता रहे हैं कि हमारी कॉन्फ़िग फ़ाइल विशिष्ट दिशाओं पर है कि किससे जुड़ना है। इस मामले में जैसा कि आप जल्द ही देखेंगे, हम अपने ganache-cli टूल से जुड़ जाएंगे.
गनाचे शुरू करो
इसके साथ ही कहा कि आगे बढ़ें और अपना गण आरंभ करें
अपने टर्मिनल में आगे बढ़ो और भागो
गणेश-क्लि
इसकी जांच – पड़ताल करें! अब आप अपने टर्मिनल में वहीं अपना खुद का TestRPC चला रहे हैं!
(इस पर और अधिक यहां)
नोट: इस टैब को अपने टर्मिनल में खुला रखें, लेकिन आगे जाकर एक नया काम करें.
तत्काल पुनरीक्षण
हमारी परियोजना पर वापस जाएं और हमने जो किया है, उसकी समीक्षा करने के लिए जल्दी करें.
- हमने एक नया प्रोजेक्ट बनाया
- प्रारंभिक ट्रफल
- मचान का त्वरित दौरा लिया
- हमारे HelloWorld अनुबंध बनाया
- हमारे अनुबंध के लिए हमारे माइग्रेशन फ़ोल्डर में तर्क जोड़ा
- हमारी कॉन्फ़िग फ़ाइल में गए और हमारी नेटवर्क जानकारी को समायोजित किया
हमारे अनुबंध को प्राप्त करने और चलाने का समय!
हमारी नई टर्मिनल विंडो में (जब से हम दूसरे में चल रहे हैं)
चलो आगे बढ़ो और भागो
ट्रफल संकलन
अब आपको इसे अपने टर्मिनल में परिणाम के रूप में देखना चाहिए:
यदि आप अब अपने प्रोजेक्ट पर जाते हैं, तो आप देखेंगे कि अब आपके अनुबंध फ़ोल्डर के ऊपर एक बिल्ड / कॉन्ट्रैक्ट फ़ोल्डर है, जिसमें दो.json फाइलें हैं। तुम्हें देखना चाहिए:
- नमस्कार
- माइग्रेशन। Json
उच्च स्तर पर The.json फ़ाइल परिनियोजित अनुबंध और उसके कार्यों का वर्णन करती है। यह हमें अनुबंध को प्रासंगिक बनाने और इसके कार्यों को कॉल करने की अनुमति देता है.
अगर हम अंदर नज़र डालें तो हम पूरी जानकारी देख सकते हैं:
हम इस जानकारी में गहराई से कदम तीन पर डुबकी लगाते हैं, लेकिन एबीआई पर एक नज़र रखना महत्वपूर्ण है.
एप्लिकेशन बाइनरी इंटरफ़ेस स्मार्ट कॉन्ट्रैक्ट के साथ काम करने के लिए एथेरम में उपयोग की जाने वाली डेटा एन्कोडिंग योजना है.
जानकारी को समझने के लिए अपेक्षाकृत सहज ज्ञान पर एक नज़र रखना। ABI यह भी परिभाषित करता है कि उपयोगकर्ता फ़ंक्शन को कैसे कॉल कर सकता है – अर्थात, स्मार्ट अनुबंध पते के संबंध में फ़ंक्शन का स्थान। एक उच्च स्तरीय संक्षेपण है एबीआई अनुबंध इंटरफ़ेस का वर्णन है। इसमें कोड शामिल नहीं है और इसमें स्वयं चलाने की क्षमता नहीं है। फिर आपके पास बाईटेकोड है, जो निष्पादन योग्य ईवीएम कोड है, लेकिन अपने आप में यह संदर्भ के बिना है.
प्रवास का समय
ठीक है!
इसलिए अब हमारे पास अपना ganache-cli चल रहा है और हमने अपना स्मार्ट कॉन्ट्रैक्ट संकलित कर लिया है इसलिए अब इन कॉन्ट्रैक्ट्स को स्थानांतरित करने का समय है!
अपने टर्मिनल में आगे बढ़ो और भागो
ट्रफल प्रवास
हाँ! तुमने यह किया!
हम देख सकते हैं कि हमने अपने स्मार्ट अनुबंध को सफलतापूर्वक तैनात किया है। आप देख सकते हैं कि कुछ वास्तव में उपयोगी जानकारी उत्पन्न हुई थी और यदि आप अपने दूसरे टैब पर जाते हैं, तो गणिका-क्ली के साथ आपको एक TransactionReceipt देखना चाहिए (अपने लिए एक नज़र डालें).
टेस्ट ईटीएच
इससे पहले कि हम रीमिक्स पर जाएं, हमें कुछ परीक्षण ईटीएच की पकड़ प्राप्त करने की आवश्यकता है ताकि हम रीमिक्स पर गैस शुल्क का भुगतान कर सकें (यह चिंता न करें कि यह वास्तव में आपके पैसे खर्च नहीं होंगे).
वहां जाओ यह नल और कुछ रिंकीबी को पकड़ो। ETH चरण 3 में क्या परीक्षण है, इस पर हम डुबकी लगाते हैं, लेकिन इस चरण में बस जानते हैं कि हम रिंकबी का उपयोग करेंगे जो कि प्राधिकरण नेटवर्क का एक सबूत है जो यह कहने का विरोध करता है कि रोपस्टेन जो कि कार्य प्रमाण का प्रमाण है (जो कि सार्वजनिक मुख्य के समान है नेट)। चरण 2 और 3 को पूरा करने के बाद, आपके पास प्रयोग करने के लिए अपने मेटाटॉक वॉलेट में कुछ हैं!
रीमिक्स
ठीक है, अब हमारे पास कुछ परीक्षण ईएचटी का है जो रीमिक्स के लिए है और हमारे अनुबंध को हमारे स्थानीय वातावरण के बाहर तैनात करने और यहां तक कि इसके साथ बातचीत करने की क्षमता भी है।!
“क्या हेक रीमिक्स है?”
खुशी है कि आपने पूछा!
रीमिक्स एक शक्तिशाली, ओपन सोर्स टूल है जो आपको ब्राउज़र से सीधे सॉलिडिटी कॉन्ट्रैक्ट्स लिखने में मदद करता है। रीमिक्स के बारे में विशेष रूप से एक अद्भुत तत्व यह है कि यह ब्राउज़र और स्थानीय रूप से उपयोग दोनों का समर्थन करता है! रीमिक्स कुछ प्रमुख विशेषताओं के नाम के लिए परीक्षण, डिबगिंग और अनुबंध परिनियोजन का समर्थन करता है। रीमिक्स को उनके निर्माण की प्रक्रिया में एक डेवलपर के लिए एक प्रधान उपकरण माना जाना चाहिए। स्थानीय तैनाती के साथ शुरू करना (जैसा कि हमने पहले किया था) ganache के साथ एक उत्कृष्ट नींव है, स्थानीय परिनियोजन से आगे बढ़ते हुए हम रीमिक्स पर हमारे अनुबंध के साथ प्रयोग और बातचीत कर सकते हैं।.
मुख्य रुढ़िवादी नेटवर्क के संभावित प्रक्षेपण से पहले उचित विकास और परीक्षण (बार-बार) आपका विकास आपको सिरदर्द से बचा सकता है!
अब उसी अनुबंध को लेते हैं और रीमिक्स का उपयोग करके इसे हमारे स्थानीय वातावरण के बाहर तैनात करते हैं
संपर्क यहां
हमारा अनुबंध
नई फ़ाइल पर क्लिक करें और उसका नाम HelloWorld.sol दें
(यहां वह अनुबंध है जिसका हम फिर से उपयोग करेंगे)
pragma की दृढ़ता >= 0.5.8 <0.7.0; अनुबंध HelloWorld {स्ट्रिंग सार्वजनिक संदेश; कंस्ट्रक्टर (स्ट्रिंग मेमोरी initMessage) सार्वजनिक {संदेश = initMessage; } फ़ंक्शन अपडेट (स्ट्रिंग मेमोरी newMessage) सार्वजनिक {संदेश = newMessage; }}
अब हम आगे बढ़ सकते हैं और क्षेत्र में अपना अनुबंध जोड़ सकते हैं। (इसे नीचे देखें)
अब बाएं मेनू की जाँच करें जो आपके चयनित संकलक संस्करण के लिए पूछता है.
संकलक
हमारे अनुबंध के भीतर ध्यान रखें कि हमने अपनी संकलक सीमा घोषित की है.
याद रखें कि प्रैग्मा कीवर्ड का उपयोग कुछ संकलक विशेषताओं या चेक को सक्षम करने के लिए किया जाता है.
इसलिए हम अपने कंपाइलर को 0.6.0 पर सेट कर सकते हैं जो हमारी प्रदान की गई सीमा के बीच आता है (देखें झटका)
हमारा अनुबंध स्वचालित रूप से संकलित करना चाहिए, यदि आगे नहीं जाना है और संकलन करें HelloWorld.sol
इसके बाद हम अपने अनुबंध को तैनात करने के लिए अपना पर्यावरण स्थापित करेंगे!
लेनदेन करें और चलाएं
वातावरण
अपने वातावरण का चयन करते समय आपको कुछ अलग विकल्प दिखाई देंगे:
जावास्क्रिप्ट VM: सभी लेनदेन ब्राउज़र में एक सैंडबॉक्स ब्लॉकचैन में निष्पादित किए जाएंगे। इसका मतलब यह है कि जब आप पृष्ठ को फिर से लोड करेंगे तो कुछ भी जारी नहीं रहेगा। JsVM अपना स्वयं का ब्लॉकचेन है और प्रत्येक पुनः लोड पर यह एक नया ब्लॉकचेन शुरू करेगा, पुराने को बचाया नहीं जाएगा.
इंजेक्शन प्रदाता: रीमिक्स एक इंजेक्ट किए गए वेब 3 प्रदाता से कनेक्ट होगा. मेटामस्क एक प्रदाता का एक उदाहरण है जो web3 को इंजेक्ट करता है.
Web3 प्रदाता: रीमिक्स एक रिमोट नोड से कनेक्ट होगा। आपको चयनित प्रदाता को URL प्रदान करना होगा: geth, parity या कोई Ethereum क्लाइंट.
इस उदाहरण में हम उपयोग करने जा रहे हैं: इंजेक्ट वेब 3
हम अपने मेटामास्क वॉलेट का उपयोग करेंगे और सुनिश्चित करेंगे कि हम अपने रिंकबी परीक्षण नेटवर्क से जुड़े हैं
हम बाईं ओर देख सकते हैं हम रिंकीबी से जुड़े हुए हैं और हमारे जुड़े हुए खाते का पता भी देखते हैं!
एक बार हमारे पास सब कुछ सेट होने के बाद, अपने अनुबंध को आगे बढ़ाएं और अपने अनुबंध को तैनात करें!
&# 127881; हमने यह किया! &# 127881;
प्रदान किए गए टर्मिनल की जांच करें और आप पुष्टि देख सकते हैं
अब हमारे पास हमारे तैनात अनुबंध को देखने की क्षमता है, हम अपने संदेश को अपडेट कर सकते हैं (हम दोनों को हस्ताक्षर करना होगा और इसके लिए गैस शुल्क का भुगतान करना होगा क्योंकि हम राज्य को अपडेट कर रहे हैं)
एक बार पुष्टि होने के बाद हम देख सकते हैं कि हमारा संदेश अपडेट हो गया है!
&# 129395; बहुत बढ़िया! &# 129395;
हमने वह अनुबंध लिया है जिसे हमने शुरू में स्थानीय स्तर पर शुरू किया था और रीमिक्स पर उस अनुबंध को तैनात किया है जिसमें अनुबंध पर बातचीत का एक दृश्य प्रतिनिधित्व है। यह डेवलपर के लिए एक स्वस्थ प्रवाह है क्योंकि वे इस अंतरिक्ष में निर्माण करना शुरू करते हैं। रीमिक्स एक अविश्वसनीय उपकरण है जिसे अक्सर उपयोग किया जाना चाहिए। चरण 3 में हम एक कदम आगे बढ़ने जा रहे हैं और उन सभी जानकारियों को बाँध लेंगे जो हमने चरण 1 में सीखी हैं & 2 और Truffle + Infura + React को एक साथ टाई!
- डेवलपर ऑनबोर्डिंग: चरण 1
डेवलपर ऑनबोर्डिंग: चरण 1
डेवलपर ऑनबोर्डिंग: चरण 3
डेवलपर ऑनबोर्डिंग: चरण 3
10-मिनट एथेरियम ओरिएंटेशन