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

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

लेन-देन
web3.js
Alchemy
शुरुआती
एलन हैल्परन
4 नवंबर 2020
12 मिनट पढ़ें
पृष्ठ संपादित करें (opens in a new tab)

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

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

मूल बातें

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

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

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

2. "हस्ताक्षरकर्ता" (signer) क्या है?

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

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

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

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

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

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

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

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

Web3 का उपयोग करते समय, web3.eth.sendSignedTransaction (opens in a new tab) फ़ंक्शन को कॉल करके eth_sendRawTransaction तक पहुंचा जाता है।

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

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

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

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

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

  • Alchemy के पास Transact API का एक सूट है (opens in a new tab)। आप इनका उपयोग प्रबलित लेन-देन भेजने, लेन-देन होने से पहले उनका अनुकरण करने, निजी लेन-देन भेजने और गैस-अनुकूलित लेन-देन भेजने के लिए कर सकते हैं।
  • जब आपका लेन-देन मेमपूल से निकाला जाता है और चेन में जोड़ा जाता है, तो अलर्ट प्राप्त करने के लिए आप Notify API (opens in a new tab) का भी उपयोग कर सकते हैं।

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

  1. एक मुफ्त Alchemy खाता बनाएं (opens in a new tab)
  2. मेटामास्क खाता बनाएं (opens in a new tab) (या एक इथेरियम पता प्राप्त करें)
  3. NodeJs और NPM स्थापित करने के लिए इन चरणों का पालन करें (opens in a new tab)

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

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

अपने Alchemy डैशबोर्ड (opens in a new tab) पर जाएं और अपने नेटवर्क के लिए Sepolia (या कोई अन्य टेस्टनेट) चुनकर एक नया ऐप बनाएं।

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

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

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

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

mkdir sendtx-example
cd sendtx-example

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

Alchemy Web3 (opens in a new tab) स्थापित करने के लिए अपनी प्रोजेक्ट डायरेक्टरी में निम्नलिखित कमांड चलाएं:

ध्यान दें, यदि आप Ethers.js लाइब्रेरी का उपयोग करना चाहते हैं, तो यहां दिए गए निर्देशों का पालन करें (opens in a new tab)

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 प्राप्त करें।
  • मेटामास्क का उपयोग करके अपनी निजी कुंजी खोजने के लिए, इस मार्गदर्शिका (opens in a new tab) को देखें।
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) (opens in a new tab) को रोकने के लिए इसकी आवश्यकता है। आपके पते से भेजे गए लेन-देन की संख्या प्राप्त करने के लिए हम getTransactionCount (opens in a new tab) का उपयोग करते हैं।
  • transaction: लेन-देन ऑब्जेक्ट में कुछ पहलू हैं जिन्हें हमें निर्दिष्ट करने की आवश्यकता है
    • to: यह वह पता है जिस पर हम ETH भेजना चाहते हैं। इस मामले में, हम उस Sepolia फॉसेट (opens in a new tab) में ETH वापस भेज रहे हैं जिससे हमने शुरू में अनुरोध किया था।
    • value: यह वह राशि है जिसे हम भेजना चाहते हैं, जिसे Wei में निर्दिष्ट किया गया है जहां 10^18 Wei = 1 ETH
    • gas: आपके लेन-देन के साथ शामिल करने के लिए गैस की सही मात्रा निर्धारित करने के कई तरीके हैं। Alchemy के पास एक गैस मूल्य वेबहुक (opens in a new tab) भी है जो आपको सूचित करता है कि गैस मूल्य एक निश्चित सीमा के भीतर कब आता है। मेननेट लेन-देन के लिए, शामिल करने के लिए गैस की सही मात्रा निर्धारित करने के लिए ETH Gas Station (opens in a new tab) जैसे गैस अनुमानक की जांच करना एक अच्छा अभ्यास है। 21000 गैस की न्यूनतम मात्रा है जिसका उपयोग इथेरियम पर एक ऑपरेशन करेगा, इसलिए यह सुनिश्चित करने के लिए कि हमारा लेन-देन निष्पादित किया जाएगा, हम यहां 30000 डालते हैं।
    • nonce: ऊपर नॉन्स की परिभाषा देखें। नॉन्स शून्य से गिनना शुरू करता है।
    • [वैकल्पिक] डेटा: आपके ट्रांसफर के साथ अतिरिक्त जानकारी भेजने, या स्मार्ट अनुबंध को कॉल करने के लिए उपयोग किया जाता है, बैलेंस ट्रांसफर के लिए आवश्यक नहीं है, नीचे दिया गया नोट देखें।
  • signedTx: अपने लेन-देन ऑब्जेक्ट पर हस्ताक्षर करने के लिए हम अपनी PRIVATE_KEY के साथ signTransaction विधि का उपयोग करेंगे
  • sendSignedTransaction: एक बार जब हमारे पास हस्ताक्षरित लेन-देन हो जाता है, तो हम इसे sendSignedTransaction का उपयोग करके बाद के ब्लॉक में शामिल करने के लिए भेज सकते हैं

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

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

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

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

node sendTx.js

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

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

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

Mempool watcher screenshot

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

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

इस मार्गदर्शिका के बारे में प्रतिक्रिया और सुझावों के लिए, कृपया Alchemy के डिस्कॉर्ड (opens in a new tab) पर एलन को संदेश भेजें!

मूल रूप से https://docs.alchemyapi.io/tutorials/sending-transactions-using-web3-and-alchemy (opens in a new tab) पर प्रकाशित

पेज का अंतिम अपडेट: 3 मार्च 2026