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

Web3 का उपयोग करके लेन-देन भेजना

लेन-देन
web3.js
Alchemy
शुरुआती
एलन हैल्परन
4 नवंबर 2020
12 मिनट पढ़ें

यह Web3 का उपयोग करके इथेरियम लेन-देन भेजने के लिए शुरुआती लोगों के अनुकूल एक मार्गदर्शिका है। इथेरियम ब्लॉकचेन पर लेन-देन भेजने के लिए तीन मुख्य चरण हैं: बनाना, हस्ताक्षर करना और ब्रॉडकास्ट करना। हम इन तीनों के बारे में जानेंगे, और उम्मीद है कि आपके किसी भी सवाल का जवाब देंगे! इस ट्यूटोरियल में, हम अपने लेन-देन को इथेरियम चेन पर भेजने के लिए Alchemy (एक नए टैब में खुलता है) का उपयोग करेंगे। आप यहां एक मुफ्त Alchemy खाता बना सकते हैं (एक नए टैब में खुलता है)

नोट: यह मार्गदर्शिका आपके ऐप के बैकएंड पर आपके लेन-देन पर हस्ताक्षर करने के लिए है। यदि आप फ्रंटएंड पर अपने लेन-देन पर हस्ताक्षर करने को एकीकृत करना चाहते हैं, तो ब्राउज़र प्रदाता के साथ Web3 (एक नए टैब में खुलता है) को एकीकृत करने के बारे में देखें।

मूल बातें

जब अधिकांश ब्लॉकचेन डेवलपर्स पहली बार शुरुआत करते हैं, तो आपने भी लेन-देन भेजने के तरीके (जो काफी सरल होना चाहिए) पर कुछ शोध किया होगा और कई मार्गदर्शिकाओं का सामना किया होगा, जिनमें से प्रत्येक अलग-अलग बातें कह रही होगी और आपको थोड़ा अभिभूत और भ्रमित कर रही होगी। यदि आप भी उसी स्थिति में हैं, तो चिंता न करें; हम सभी किसी न किसी बिंदु पर वहीं थे! इसलिए, शुरू करने से पहले, आइए कुछ बातें स्पष्ट कर लें:

1. Alchemy आपकी निजी कुंजी संग्रहीत नहीं करता है

  • इसका मतलब है कि Alchemy आपकी ओर से लेन-देन पर हस्ताक्षर करके उन्हें भेज नहीं सकता है। इसका कारण सुरक्षा उद्देश्य है। Alchemy आपसे कभी भी अपनी निजी कुंजी साझा करने के लिए नहीं कहेगा, और आपको कभी भी अपनी निजी कुंजी किसी होस्ट किए गए नोड (या किसी और के साथ) साझा नहीं करनी चाहिए।
  • आप Alchemy के कोर API का उपयोग करके ब्लॉकचेन से पढ़ सकते हैं, लेकिन इस पर लिखने के लिए आपको Alchemy के माध्यम से भेजने से पहले अपने लेन-देन पर हस्ताक्षर करने के लिए किसी अन्य चीज़ का उपयोग करने की आवश्यकता होगी (यह किसी भी अन्य नोड सेवा के लिए समान है)।

2. "साइनर" (signer) क्या है?

  • साइनर आपकी निजी कुंजी का उपयोग करके आपके लिए लेन-देन पर हस्ताक्षर करेंगे। इस ट्यूटोरियल में हम अपने लेन-देन पर हस्ताक्षर करने के लिए Alchemy Web3 (एक नए टैब में खुलता है) का उपयोग करेंगे, लेकिन आप किसी अन्य Web3 लाइब्रेरी का भी उपयोग कर सकते हैं।
  • फ्रंटएंड पर, साइनर का एक अच्छा उदाहरण मेटामास्क (एक नए टैब में खुलता है) होगा, जो आपकी ओर से लेन-देन पर हस्ताक्षर करेगा और भेजेगा।

3. मुझे अपने लेन-देन पर हस्ताक्षर करने की आवश्यकता क्यों है?

  • इथेरियम नेटवर्क पर लेन-देन भेजने के इच्छुक प्रत्येक उपयोगकर्ता को लेन-देन पर (अपनी निजी कुंजी का उपयोग करके) हस्ताक्षर करना होगा, ताकि यह मान्य किया जा सके कि लेन-देन का मूल वही है जो वह होने का दावा करता है।
  • इस निजी कुंजी की सुरक्षा करना बहुत महत्वपूर्ण है, क्योंकि इस तक पहुंच होने से आपके इथेरियम खाते पर पूर्ण नियंत्रण मिल जाता है, जिससे आप (या पहुंच वाला कोई भी व्यक्ति) आपकी ओर से लेन-देन कर सकता है।

4. मैं अपनी निजी कुंजी की सुरक्षा कैसे करूं?

  • अपनी निजी कुंजी की सुरक्षा करने और लेन-देन भेजने के लिए इसका उपयोग करने के कई तरीके हैं। इस ट्यूटोरियल में हम एक .env फ़ाइल का उपयोग करेंगे। हालाँकि, आप एक अलग प्रदाता का भी उपयोग कर सकते हैं जो निजी कुंजियों को संग्रहीत करता है, कीस्टोर फ़ाइल का उपयोग कर सकते हैं, या अन्य विकल्पों का उपयोग कर सकते हैं।

5. eth_sendTransaction और eth_sendRawTransaction के बीच क्या अंतर है?

eth_sendTransaction और eth_sendRawTransaction दोनों इथेरियम API फ़ंक्शन हैं जो इथेरियम नेटवर्क पर एक लेन-देन को ब्रॉडकास्ट करते हैं ताकि इसे भविष्य के ब्लॉक में जोड़ा जा सके। वे लेन-देन पर हस्ताक्षर करने के तरीके में भिन्न होते हैं।

  • eth_sendTransaction (एक नए टैब में खुलता है) का उपयोग बिना हस्ताक्षर वाले लेन-देन भेजने के लिए किया जाता है, जिसका अर्थ है कि जिस नोड पर आप भेज रहे हैं उसे आपकी निजी कुंजी का प्रबंधन करना होगा ताकि वह चेन पर ब्रॉडकास्ट करने से पहले लेन-देन पर हस्ताक्षर कर सके। चूंकि Alchemy उपयोगकर्ताओं की निजी कुंजियों को नहीं रखता है, इसलिए वे इस पद्धति का समर्थन नहीं करते हैं।
  • eth_sendRawTransaction (एक नए टैब में खुलता है) का उपयोग उन लेन-देन को ब्रॉडकास्ट करने के लिए किया जाता है जिन पर पहले ही हस्ताक्षर किए जा चुके हैं। इसका मतलब है कि आपको पहले signTransaction(tx, private_key) (एक नए टैब में खुलता है) का उपयोग करना होगा, फिर परिणाम को eth_sendRawTransaction में पास करना होगा।

Web3 का उपयोग करते समय, web3.eth.sendSignedTransaction (एक नए टैब में खुलता है) फ़ंक्शन को कॉल करके eth_sendRawTransaction तक पहुंचा जाता है।

इस ट्यूटोरियल में हम इसी का उपयोग करेंगे।

6. Web3 लाइब्रेरी क्या है?

  • Web3.js मानक जेसन-आरपीसी (JSON-RPC) कॉल के चारों ओर एक रैपर लाइब्रेरी है जिसका उपयोग इथेरियम विकास में काफी आम है।
  • विभिन्न भाषाओं के लिए कई Web3 लाइब्रेरी हैं। इस ट्यूटोरियल में हम Alchemy Web3 (एक नए टैब में खुलता है) का उपयोग करेंगे जो JavaScript में लिखा गया है। आप यहां अन्य विकल्पों की जांच कर सकते हैं जैसे Ethers.js (एक नए टैब में खुलता है)

ठीक है, अब जब हमने इनमें से कुछ सवालों को स्पष्ट कर लिया है, तो आइए ट्यूटोरियल पर आगे बढ़ते हैं। Alchemy डिस्कॉर्ड (एक नए टैब में खुलता है) में कभी भी सवाल पूछने के लिए स्वतंत्र महसूस करें!

7. सुरक्षित, गैस-अनुकूलित और निजी लेन-देन कैसे भेजें?

नोट: इस मार्गदर्शिका के लिए एक Alchemy खाता, एक इथेरियम पता या मेटामास्क वॉलेट, Node.js और npm स्थापित होना आवश्यक है। यदि नहीं, तो इन चरणों का पालन करें:

  1. एक मुफ्त Alchemy खाता बनाएं (एक नए टैब में खुलता है)
  2. मेटामास्क खाता बनाएं (एक नए टैब में खुलता है) (या एक इथेरियम पता प्राप्त करें)
  3. Node.js और npm स्थापित करें (एक नए टैब में खुलता है)

अपना लेन-देन भेजने के चरण

1. Sepolia टेस्टनेट पर एक Alchemy ऐप बनाएं

अपने Alchemy डैशबोर्ड (एक नए टैब में खुलता है) पर जाएं और अपने नेटवर्क के लिए Sepolia (या कोई अन्य टेस्टनेट) चुनकर एक नया ऐप बनाएं।

2. Sepolia फॉसेट से ETH का अनुरोध करें

ETH प्राप्त करने के लिए Alchemy Sepolia फॉसेट (एक नए टैब में खुलता है) पर दिए गए निर्देशों का पालन करें। सुनिश्चित करें कि आप अपना Sepolia इथेरियम पता (मेटामास्क से) शामिल करें, न कि किसी अन्य नेटवर्क का। निर्देशों का पालन करने के बाद, दोबारा जांच लें कि आपको अपने वॉलेट में ETH प्राप्त हो गया है।

3. एक नई प्रोजेक्ट डायरेक्टरी बनाएं और उसमें cd करें

कमांड लाइन (Mac के लिए टर्मिनल) से एक नई प्रोजेक्ट डायरेक्टरी बनाएं और उसमें नेविगेट करें:

mkdir sendtx-example
cd sendtx-example

4. Alchemy Web3 (या कोई भी Web3 लाइब्रेरी) स्थापित करें

Alchemy Web3 (एक नए टैब में खुलता है) स्थापित करने के लिए अपनी प्रोजेक्ट डायरेक्टरी में निम्नलिखित कमांड चलाएं:

ध्यान दें, यदि आप Ethers.js लाइब्रेरी का उपयोग करना चाहते हैं, तो यहां दिए गए निर्देशों का पालन करें (एक नए टैब में खुलता है)

npm install @alch/alchemy-web3

5. dotenv स्थापित करें

हम अपनी API कुंजी और निजी कुंजी को सुरक्षित रूप से संग्रहीत करने के लिए एक .env फ़ाइल का उपयोग करेंगे।

npm install dotenv --save

6. .env फ़ाइल बनाएं

अपनी प्रोजेक्ट डायरेक्टरी में एक .env फ़ाइल बनाएं और निम्नलिखित जोड़ें ("your-api-url" और "your-private-key" को बदलते हुए):

  • अपना Alchemy API URL खोजने के लिए, अपने डैशबोर्ड पर अभी बनाए गए ऐप के ऐप विवरण पृष्ठ पर जाएं, ऊपरी दाएं कोने में "View Key" पर क्लिक करें, और HTTP URL प्राप्त करें।
  • मेटामास्क का उपयोग करके अपनी निजी कुंजी खोजने के लिए, इस मार्गदर्शिका (एक नए टैब में खुलता है) को देखें।
API_URL = "your-api-url"
PRIVATE_KEY = "your-private-key"
.env को कमिट न करें! कृपया सुनिश्चित करें कि आप अपनी .env फ़ाइल को कभी भी किसी के साथ साझा या उजागर न करें, क्योंकि ऐसा करके आप अपने रहस्यों से समझौता कर रहे हैं। यदि आप संस्करण नियंत्रण (version control) का उपयोग कर रहे हैं, तो अपने .env को एक gitignore फ़ाइल में जोड़ें।

7. sendTx.js फ़ाइल बनाएं

बहुत बढ़िया, अब जब हमने अपने संवेदनशील डेटा को .env फ़ाइल में सुरक्षित कर लिया है, तो आइए कोडिंग शुरू करें। हमारे लेन-देन भेजने के उदाहरण के लिए, हम Sepolia फॉसेट में ETH वापस भेजेंगे।

एक sendTx.js फ़ाइल बनाएं, जहां हम अपने उदाहरण लेन-देन को कॉन्फ़िगर करेंगे और भेजेंगे, और इसमें कोड की निम्नलिखित पंक्तियां जोड़ें:

पंक्ति 6 पर दिए गए पते को अपने स्वयं के सार्वजनिक पते से बदलना सुनिश्चित करें।

अब, इस कोड को चलाने से पहले, आइए यहां कुछ घटकों के बारे में बात करते हैं।

  • nonce : नॉन्स विनिर्देश का उपयोग आपके पते से भेजे गए लेन-देन की संख्या पर नज़र रखने के लिए किया जाता है। हमें सुरक्षा उद्देश्यों और रीप्ले हमलों (replay attacks) को रोकने के लिए इसकी आवश्यकता है। आपके पते से भेजे गए लेन-देन की संख्या प्राप्त करने के लिए हम getTransactionCount (एक नए टैब में खुलता है) का उपयोग करते हैं।
  • transaction: लेन-देन ऑब्जेक्ट के कुछ पहलू हैं जिन्हें हमें निर्दिष्ट करने की आवश्यकता है
    • to: यह वह पता है जिस पर हम ETH भेजना चाहते हैं। इस मामले में, हम उस Sepolia फॉसेट (एक नए टैब में खुलता है) पर ETH वापस भेज रहे हैं जिससे हमने शुरू में अनुरोध किया था।
    • value: यह वह राशि है जिसे हम भेजना चाहते हैं, जिसे Wei में निर्दिष्ट किया गया है जहां 10^18 Wei = 1 ETH
    • gas: आपके लेन-देन में शामिल करने के लिए गैस की सही मात्रा निर्धारित करने के कई तरीके हैं। Alchemy वेबहुक (एक नए टैब में खुलता है) का समर्थन करता है जो आपको ऑनचेन गतिविधि के बारे में सूचित कर सकता है। मेननेट लेन-देन के लिए, शामिल करने के लिए गैस की सही मात्रा निर्धारित करने के लिए वर्तमान गैस स्थितियों की जांच करना एक अच्छा अभ्यास है। 21000 गैस की न्यूनतम मात्रा है जिसका उपयोग इथेरियम पर एक ऑपरेशन करेगा, इसलिए यह सुनिश्चित करने के लिए कि हमारा लेन-देन निष्पादित किया जाएगा, हम यहां 30000 डालते हैं।
    • nonce: ऊपर नॉन्स परिभाषा देखें। नॉन्स शून्य से गिनना शुरू करता है।
    • [वैकल्पिक] data: आपके ट्रांसफर के साथ अतिरिक्त जानकारी भेजने, या स्मार्ट अनुबंध को कॉल करने के लिए उपयोग किया जाता है, बैलेंस ट्रांसफर के लिए आवश्यक नहीं है, नीचे दिया गया नोट देखें।
  • signedTx: हमारे लेन-देन ऑब्जेक्ट पर हस्ताक्षर करने के लिए हम अपनी PRIVATE_KEY के साथ signTransaction विधि का उपयोग करेंगे
  • sendSignedTransaction: एक बार जब हमारे पास हस्ताक्षरित लेन-देन हो जाता है, तो हम sendSignedTransaction का उपयोग करके इसे बाद के ब्लॉक में शामिल करने के लिए भेज सकते हैं

डेटा पर एक नोट इथेरियम में दो मुख्य प्रकार के लेन-देन भेजे जा सकते हैं।

  • बैलेंस ट्रांसफर: एक पते से दूसरे पते पर ETH भेजें। किसी डेटा फ़ील्ड की आवश्यकता नहीं है, हालांकि, यदि आप अपने लेन-देन के साथ अतिरिक्त जानकारी भेजना चाहते हैं, तो आप इस फ़ील्ड में HEX प्रारूप में वह जानकारी शामिल कर सकते हैं।
    • उदाहरण के लिए, मान लें कि हम एक IPFS दस्तावेज़ के हैश को इथेरियम चेन पर लिखना चाहते हैं ताकि इसे एक अपरिवर्तनीय टाइमस्टैम्प दिया जा सके। तब हमारा डेटा फ़ील्ड इस तरह दिखना चाहिए: web3.utils.toHex(‘IPFS hash‘)। और अब कोई भी चेन से पूछताछ कर सकता है और देख सकता है कि वह दस्तावेज़ कब जोड़ा गया था।
  • स्मार्ट अनुबंध लेन-देन: चेन पर कुछ स्मार्ट अनुबंध कोड निष्पादित करें। इस मामले में, डेटा फ़ील्ड में वह स्मार्ट फ़ंक्शन होना चाहिए जिसे आप निष्पादित करना चाहते हैं, साथ ही कोई भी पैरामीटर।

8. node sendTx.js का उपयोग करके कोड चलाएं

अपने टर्मिनल या कमांड लाइन पर वापस नेविगेट करें और चलाएं:

node sendTx.js

9. मेमपूल में अपना लेन-देन देखें

अपने Alchemy डैशबोर्ड में मेमपूल पृष्ठ (एक नए टैब में खुलता है) खोलें और अपना लेन-देन खोजने के लिए अपने द्वारा बनाए गए ऐप के आधार पर फ़िल्टर करें। यह वह जगह है जहां हम अपने लेन-देन को लंबित (pending) स्थिति से माइन की गई (mined) स्थिति (यदि सफल हो) या ड्रॉप की गई (dropped) स्थिति (यदि असफल हो) में बदलते हुए देख सकते हैं। सुनिश्चित करें कि आप इसे "All" पर रखें ताकि आप "mined", "pending", और "dropped" लेन-देन को कैप्चर कर सकें। आप 0x31b98d14007bdee637298086988a0bbd31184523 पते पर भेजे गए लेन-देन को देखकर भी अपना लेन-देन खोज सकते हैं।

एक बार जब आप अपना लेन-देन पा लेते हैं, तो उसका विवरण देखने के लिए tx हैश का चयन करें, जो आपको एक ऐसे दृश्य पर ले जाएगा जो इस तरह दिखता है:

मेमपूल वॉचर स्क्रीनशॉट

वहां से आप लाल रंग के घेरे वाले आइकन पर क्लिक करके Etherscan पर अपना लेन-देन देख सकते हैं!

वाह! आपने अभी Alchemy का उपयोग करके अपना पहला इथेरियम लेन-देन भेजा है 🎉

इस मार्गदर्शिका के बारे में प्रतिक्रिया और सुझावों के लिए, कृपया Alchemy के डिस्कॉर्ड (एक नए टैब में खुलता है) पर Elan को संदेश भेजें!

मूल रूप से Alchemy द्वारा प्रकाशित।