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

वेब3 का उपयोग करके लेन-देन भेजना

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

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

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

मूल बातें

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

1. अल्केमी आपकी निजी कुंजियों को संग्रहीत नहीं करता है

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

2. “हस्ताक्षरकर्ता” क्या है?

  • हस्ताक्षरकर्ता आपकी निजी कुंजी का उपयोग करके आपके लिए लेन-देन पर हस्ताक्षर करेंगे। इस ट्यूटोरियल में हम अपने लेन-देन पर हस्ताक्षर करने के लिए अल्केमी web3 (opens in a new tab) का उपयोग करेंगे, लेकिन आप किसी अन्य वेब3 लाइब्रेरी का भी उपयोग कर सकते हैं।
  • फ्रंटएंड पर, हस्ताक्षरकर्ता का एक अच्छा उदाहरण मेटामास्क (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) का उपयोग बिना हस्ताक्षर वाले लेन-देन भेजने के लिए किया जाता है, जिसका अर्थ है कि जिस नोड को आप भेज रहे हैं, उसे आपकी निजी कुंजी का प्रबंधन करना होगा ताकि वह इसे श्रृंखला में प्रसारित करने से पहले लेन-देन पर हस्ताक्षर कर सके। चूंकि अल्केमी यूज़र की निजी कुंजियों को नहीं रखता है, इसलिए वे इस विधि का समर्थन नहीं करते हैं।
  • eth_sendRawTransaction (opens in a new tab) का उपयोग उन लेन-देनों को प्रसारित करने के लिए किया जाता है जिन पर पहले ही हस्ताक्षर किए जा चुके हैं। इसका मतलब है कि आपको पहले signTransaction(tx, private_key) (opens in a new tab) का उपयोग करना होगा, फिर परिणाम को eth_sendRawTransaction में पास करना होगा।

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

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

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

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

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

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

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

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

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

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

1. सेपोलिया टेस्टनेट पर एक अल्केमी ऐप बनाएं

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

2. सेपोलिया फॉसेट से ETH का अनुरोध करें

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

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

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

1mkdir sendtx-example
2cd sendtx-example

4. अल्केमी वेब3 (या कोई भी web3 लाइब्रेरी) इंस्टॉल करें

अल्केमी वेब3 (opens in a new tab) इंस्टॉल करने के लिए अपनी प्रोजेक्ट डायरेक्टरी में निम्नलिखित कमांड चलाएं:

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

1npm install @alch/alchemy-web3

5. dotenv इंस्टॉल करें

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

1npm install dotenv --save

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

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

  • अपना अल्केमी API URL खोजने के लिए, अपने डैशबोर्ड पर अभी बनाए गए ऐप के ऐप विवरण पृष्ठ पर जाएँ, ऊपरी दाएँ कोने में “कुंजी देखें” पर क्लिक करें, और HTTP URL प्राप्त करें।
  • मेटामास्क का उपयोग करके अपनी निजी कुंजी खोजने के लिए, इस गाइड (opens in a new tab) को देखें।
1API_URL = "your-api-url"
2PRIVATE_KEY = "your-private-key"

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

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

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

1async function main() {
2 require('dotenv').config();
3 const { API_URL, PRIVATE_KEY } = process.env;
4 const { createAlchemyWeb3 } = require("@alch/alchemy-web3");
5 const web3 = createAlchemyWeb3(API_URL);
6 const myAddress = '0x610Ae88399fc1687FA7530Aac28eC2539c7d6d63' //TODO: इस पते को अपने सार्वजनिक पते से बदलें
7
8 const nonce = await web3.eth.getTransactionCount(myAddress, 'latest'); // नॉन्स 0 से गिनती शुरू करता है
9
10 const transaction = {
11 'to': '0x31B98D14007bDEe637298086988A0bBd31184523', // eth वापस करने के लिए फॉसेट का पता
12 'value': 1000000000000000000, // 1 ETH
13 'gas': 30000,
14 'nonce': nonce,
15 // संदेश भेजने या स्मार्ट अनुबंध निष्पादित करने के लिए वैकल्पिक डेटा फ़ील्ड
16 };
17
18 const signedTx = await web3.eth.accounts.signTransaction(transaction, PRIVATE_KEY);
19
20 web3.eth.sendSignedTransaction(signedTx.rawTransaction, function(error, hash) {
21 if (!error) {
22 console.log("🎉 आपके लेन-देन का हैश है: ", hash, "\n अपने लेन-देन की स्थिति देखने के लिए Alchemy के Mempool की जाँच करें!");
23 } else {
24 console.log("❗आपका लेन-देन सबमिट करते समय कुछ गलत हो गया:", error)
25 }
26 });
27}
28
29main();
सभी दिखाएँ

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

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

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

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

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

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

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

1node sendTx.js

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

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

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

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

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

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

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

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

पेज का अंतिम अपडेट: 18 दिसंबर 2025

क्या यह ट्यूटोरियल सहायक था?