प्रमुख मजकुराकडे जा

Web3 वापरून व्यवहार पाठवणे

व्यवहार
web3.js
alchemy
नवशिक्या
Elan Halpern
४ नोव्हेंबर, २०२०
9 मिनिट वाचन

Web3 वापरून Ethereum व्यवहार पाठवण्यासाठी ही एक नवशिक्यांसाठी सोपी मार्गदर्शक पुस्तिका आहे. Ethereum ब्लॉकचेनवर व्यवहार पाठवण्यासाठी तीन मुख्य पायऱ्या आहेत: तयार करणे, स्वाक्षरी करणे आणि प्रसारित करणे. आपण या तिन्ही पायऱ्या पाहू, आणि आशा आहे की तुमच्या मनात असलेले कोणतेही प्रश्न सुटतील! या ट्युटोरियलमध्ये, आपण आपले व्यवहार Ethereum चेनवर पाठवण्यासाठी Alchemy (opens in a new tab) वापरणार आहोत. तुम्ही येथे एक विनामूल्य Alchemy खाते तयार करू शकता (opens in a new tab).

टीप: ही मार्गदर्शक पुस्तिका तुमच्या ॲपसाठी बॅकएंडवर तुमचे व्यवहार साइन करण्यासाठी आहे. जर तुम्हाला तुमच्या व्यवहारांवर फ्रंटएंडवर स्वाक्षरी करायची असेल, तर ब्राउझर प्रोव्हायडरसह Web3 (opens in a new tab) एकत्रित करणे तपासा.

मूलभूत गोष्टी

बहुतेक ब्लॉकचेन डेव्हलपर्सप्रमाणे, जेव्हा ते प्रथम सुरुवात करतात, तेव्हा तुम्ही व्यवहार कसा पाठवायचा (जी गोष्ट खूप सोपी असावी) यावर काही संशोधन केले असेल आणि तुम्हाला अनेक मार्गदर्शक पुस्तिका मिळाल्या असतील, प्रत्येक वेगळी गोष्ट सांगत असेल आणि तुम्हाला थोडे भारावून टाकले असेल आणि गोंधळात पाडले असेल. जर तुम्हीही याच स्थितीत असाल, तर काळजी करू नका; आम्ही सर्वजण कधी ना कधी यातून गेलो आहोत! तर, आपण सुरू करण्यापूर्वी, काही गोष्टी स्पष्ट करूया:

१. Alchemy तुमच्या प्रायव्हेट की (private keys) संग्रहित करत नाही

  • याचा अर्थ असा की Alchemy तुमच्या वतीने व्यवहार साइन करून पाठवू शकत नाही. याचे कारण सुरक्षिततेच्या उद्देशाने आहे. Alchemy तुम्हाला तुमची प्रायव्हेट की शेअर करण्यास कधीही सांगणार नाही, आणि तुम्ही तुमची प्रायव्हेट की कधीही होस्टेड नोडसोबत (किंवा कोणासोबतही) शेअर करू नये.
  • तुम्ही Alchemy च्या कोअर API चा वापर करून ब्लॉकचेनवरून वाचू शकता, परंतु त्यावर लिहिण्यासाठी तुम्हाला तुमचे व्यवहार Alchemy द्वारे पाठवण्यापूर्वी साइन करण्यासाठी दुसरे काहीतरी वापरावे लागेल (हे इतर कोणत्याही नोड सेवेसाठी सारखेच आहे).

२. “साइनर” (signer) म्हणजे काय?

  • साइनर्स तुमच्यासाठी तुमची प्रायव्हेट की वापरून व्यवहार साइन करतील. या ट्युटोरियलमध्ये आपण आपला व्यवहार साइन करण्यासाठी Alchemy web3 (opens in a new tab) वापरणार आहोत, परंतु तुम्ही इतर कोणतीही web3 लायब्ररी देखील वापरू शकता.
  • फ्रंटएंडवर, साइनरचे एक चांगले उदाहरण MetaMask (opens in a new tab) आहे, जे तुमच्या वतीने व्यवहार साइन करून पाठवते.

३. मला माझे व्यवहार साइन करण्याची गरज का आहे?

  • Ethereum नेटवर्कवर व्यवहार पाठवू इच्छिणाऱ्या प्रत्येक वापरकर्त्याला व्यवहारावर (त्यांची प्रायव्हेट की वापरून) स्वाक्षरी करणे आवश्यक आहे, जेणेकरून व्यवहाराचा उगम तोच आहे ज्याचा दावा केला जात आहे, हे प्रमाणित करता येईल.
  • या प्रायव्हेट कीचे संरक्षण करणे अत्यंत महत्त्वाचे आहे, कारण तिचा ॲक्सेस मिळाल्यास तुमच्या Ethereum खात्यावर पूर्ण नियंत्रण मिळते, ज्यामुळे तुम्ही (किंवा ॲक्सेस असलेली कोणतीही व्यक्ती) तुमच्या वतीने व्यवहार करू शकता.

४. मी माझ्या प्रायव्हेट कीचे संरक्षण कसे करू?

  • तुमची प्रायव्हेट की संरक्षित करण्याचे आणि व्यवहार पाठवण्यासाठी ती वापरण्याचे अनेक मार्ग आहेत. या ट्युटोरियलमध्ये आपण .env फाईल वापरणार आहोत. तथापि, तुम्ही प्रायव्हेट की संग्रहित करणारा वेगळा प्रोव्हायडर, कीस्टोअर फाईल किंवा इतर पर्याय देखील वापरू शकता.

५. eth_sendTransaction आणि eth_sendRawTransaction मध्ये काय फरक आहे?

eth_sendTransaction आणि eth_sendRawTransaction ही दोन्ही Ethereum API फंक्शन्स आहेत जी Ethereum नेटवर्कवर व्यवहार प्रसारित करतात जेणेकरून तो भविष्यातील ब्लॉकमध्ये जोडला जाईल. ते व्यवहारांच्या साइनिंगला कसे हाताळतात यात ते भिन्न आहेत.

  • 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 वापरताना, eth_sendRawTransaction web3.eth.sendSignedTransaction (opens in a new tab) फंक्शनला कॉल करून ॲक्सेस केले जाते.

या ट्युटोरियलमध्ये आपण हेच वापरणार आहोत.

६. web3 लायब्ररी म्हणजे काय?

  • Web3.js ही मानक JSON-RPC कॉल्सभोवती एक रॅपर लायब्ररी आहे जी Ethereum डेव्हलपमेंटमध्ये वापरणे अगदी सामान्य आहे.
  • वेगवेगळ्या भाषांसाठी अनेक web3 लायब्ररी आहेत. या ट्युटोरियलमध्ये आपण Alchemy Web3 (opens in a new tab) वापरणार आहोत जी JavaScript मध्ये लिहिलेली आहे. तुम्ही येथे (opens in a new tab) ethers.js (opens in a new tab) सारखे इतर पर्याय पाहू शकता.

ठीक आहे, आता आपण यापैकी काही प्रश्न बाजूला ठेवले आहेत, चला ट्युटोरियलकडे वळूया. Alchemy discord (opens in a new tab) मध्ये कधीही प्रश्न विचारण्यास मोकळ्या मनाने विचारा!

७. सुरक्षित, गॅस-ऑप्टिमाइझ केलेले आणि खाजगी व्यवहार कसे पाठवायचे?

  • Alchemy कडे Transact APIs चा एक संच आहे (opens in a new tab). तुम्ही याचा वापर रीइन्फोर्स्ड व्यवहार पाठवण्यासाठी, व्यवहार घडण्यापूर्वी त्यांचे सिम्युलेशन करण्यासाठी, खाजगी व्यवहार पाठवण्यासाठी आणि गॅस-ऑप्टिमाइझ केलेले व्यवहार पाठवण्यासाठी करू शकता.
  • तुमचा व्यवहार मेमपूलमधून काढला जातो आणि चेनमध्ये जोडला जातो तेव्हा सूचित होण्यासाठी तुम्ही Notify API (opens in a new tab) चा देखील वापर करू शकता.

टीप: या मार्गदर्शक पुस्तिकेसाठी एक Alchemy खाते, एक Ethereum ॲड्रेस किंवा MetaMask वॉलेट, NodeJs आणि npm इंस्टॉल केलेले असणे आवश्यक आहे. जर नसेल, तर या पायऱ्या फॉलो करा:

  1. एक विनामूल्य Alchemy खाते तयार करा (opens in a new tab)
  2. MetaMask खाते तयार करा (opens in a new tab) (किंवा एक Ethereum ॲड्रेस मिळवा)
  3. NodeJs आणि NPM इंस्टॉल करण्यासाठी या पायऱ्या फॉलो करा (opens in a new tab)

तुमचा व्यवहार पाठवण्याच्या पायऱ्या

१. Sepolia टेस्टनेटवर एक Alchemy ॲप तयार करा

तुमच्या Alchemy Dashboard (opens in a new tab) वर नेव्हिगेट करा आणि एक नवीन ॲप तयार करा, तुमच्या नेटवर्कसाठी Sepolia (किंवा इतर कोणताही टेस्टनेट) निवडा.

२. Sepolia फॉसेटमधून ETH ची विनंती करा

ETH मिळवण्यासाठी Alchemy Sepolia faucet (opens in a new tab) वरील सूचनांचे पालन करा. तुमचा Sepolia Ethereum ॲड्रेस (MetaMask मधून) समाविष्ट केल्याची खात्री करा आणि दुसरे नेटवर्क नाही. सूचनांचे पालन केल्यानंतर, तुम्हाला तुमच्या वॉलेटमध्ये ETH मिळाल्याची पुन्हा खात्री करा.

३. एक नवीन प्रोजेक्ट डिरेक्टरी तयार करा आणि त्यात cd करा

कमांड लाइनवरून (macs साठी टर्मिनल) एक नवीन प्रोजेक्ट डिरेक्टरी तयार करा आणि त्यात नेव्हिगेट करा:

1mkdir sendtx-example
2cd sendtx-example

४. Alchemy Web3 (किंवा कोणतीही web3 लायब्ररी) इंस्टॉल करा

Alchemy Web3 (opens in a new tab) इंस्टॉल करण्यासाठी तुमच्या प्रोजेक्ट डिरेक्टरीमध्ये खालील कमांड चालवा:

टीप, जर तुम्हाला ethers.js लायब्ररी वापरायची असेल, तर येथील सूचनांचे पालन करा (opens in a new tab).

1npm install @alch/alchemy-web3

५. dotenv इंस्टॉल करा

आपण आपली API की आणि प्रायव्हेट की सुरक्षितपणे संग्रहित करण्यासाठी .env फाईल वापरू.

1npm install dotenv --save

६. .env फाईल तयार करा

तुमच्या प्रोजेक्ट डिरेक्टरीमध्ये .env फाईल तयार करा आणि खालील गोष्टी जोडा ("your-api-url" आणि "your-private-key" बदलून)

  • तुमचा Alchemy API URL शोधण्यासाठी, तुमच्या डॅशबोर्डवर तुम्ही नुकतेच तयार केलेल्या ॲपच्या तपशील पृष्ठावर नेव्हिगेट करा, वरच्या उजव्या कोपऱ्यात "View Key" वर क्लिक करा आणि HTTP URL मिळवा.
  • MetaMask वापरून तुमची प्रायव्हेट की शोधण्यासाठी, ही मार्गदर्शिका (opens in a new tab) तपासा.
1API_URL = "your-api-url"
2PRIVATE_KEY = "your-private-key"

७. sendTx.js फाईल तयार करा

छान, आता आपला संवेदनशील डेटा .env फाईलमध्ये संरक्षित झाला आहे, चला कोडिंग सुरू करूया. आपल्या व्यवहार पाठवण्याच्या उदाहरणासाठी, आपण Sepolia फॉसेटला 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's Mempool तपासा!");
23 } else {
24 console.log("❗तुमचा व्यवहार सबमिट करताना काहीतरी चूक झाली:", error)
25 }
26 });
27}
28
29main();
सर्व दाखवा

ओळ ६ वरील ॲड्रेस तुमच्या स्वतःच्या सार्वजनिक ॲड्रेसने बदलण्याची खात्री करा.

आता, हा कोड चालवण्यापूर्वी, येथील काही घटकांबद्दल बोलूया.

  • nonce : नॉन्स स्पेसिफिकेशनचा वापर तुमच्या ॲड्रेसवरून पाठवलेल्या व्यवहारांच्या संख्येचा मागोवा ठेवण्यासाठी केला जातो. सुरक्षिततेच्या उद्देशाने आणि रिप्ले हल्ले (opens in a new tab) टाळण्यासाठी आपल्याला याची आवश्यकता आहे. तुमच्या ॲड्रेसवरून पाठवलेल्या व्यवहारांची संख्या मिळवण्यासाठी आम्ही getTransactionCount (opens in a new tab) वापरतो.
  • transaction: व्यवहार ऑब्जेक्टमध्ये काही पैलू आहेत जे आपल्याला निर्दिष्ट करणे आवश्यक आहे
    • to: हा तो ॲड्रेस आहे जिथे आपल्याला ETH पाठवायचा आहे. या प्रकरणात, आपण ज्या Sepolia faucet (opens in a new tab) कडून सुरुवातीला विनंती केली होती, त्याला ETH परत पाठवत आहोत.
    • value: ही रक्कम आहे जी आपण पाठवू इच्छितो, Wei मध्ये निर्दिष्ट केली आहे जिथे 10^18 Wei = 1 ETH
    • gas: तुमच्या व्यवहारामध्ये समाविष्ट करण्यासाठी गॅसची योग्य रक्कम निश्चित करण्याचे अनेक मार्ग आहेत. Alchemy कडे एक गॅस किंमत वेबहुक (opens in a new tab) देखील आहे जो गॅसची किंमत एका विशिष्ट मर्यादेत आल्यावर तुम्हाला सूचित करतो. Mainnet व्यवहारांसाठी, ETH Gas Station (opens in a new tab) सारख्या गॅस एस्टिमेटरला तपासून समाविष्ट करण्यासाठी गॅसची योग्य रक्कम निश्चित करणे ही एक चांगली प्रथा आहे. 21000 ही Ethereum वरील ऑपरेशनसाठी लागणारी किमान गॅसची रक्कम आहे, म्हणून आपला व्यवहार कार्यान्वित होईल याची खात्री करण्यासाठी आम्ही येथे 30000 ठेवले आहे.
    • nonce: वरील नॉन्सची व्याख्या पहा. नॉन्सची गणना शून्यापासून सुरू होते.
    • [पर्यायी] डेटा: तुमच्या ट्रान्सफरसोबत अतिरिक्त माहिती पाठवण्यासाठी किंवा स्मार्ट कॉन्ट्रॅक्टला कॉल करण्यासाठी वापरले जाते, बॅलन्स ट्रान्सफरसाठी आवश्यक नाही, खालील टीप पहा.
  • signedTx: आपला व्यवहार ऑब्जेक्ट साइन करण्यासाठी आपण signTransaction पद्धत आपल्या PRIVATE_KEY सोबत वापरू.
  • sendSignedTransaction: एकदा आपल्याकडे साइन केलेला व्यवहार आला की, आपण sendSignedTransaction वापरून तो पुढील ब्लॉकमध्ये समाविष्ट करण्यासाठी पाठवू शकतो.

डेटावर एक टीप Ethereum मध्ये दोन मुख्य प्रकारचे व्यवहार पाठवले जाऊ शकतात.

  • बॅलन्स ट्रान्सफर: एका ॲड्रेसवरून दुसऱ्या ॲड्रेसवर ETH पाठवा. डेटा फील्ड आवश्यक नाही, तथापि, जर तुम्हाला तुमच्या व्यवहार सोबत अतिरिक्त माहिती पाठवायची असेल, तर तुम्ही ती माहिती या फील्डमध्ये HEX फॉरमॅटमध्ये समाविष्ट करू शकता.
    • उदाहरणार्थ, समजा आपल्याला एका IPFS डॉक्युमेंटचा हॅश Ethereum चेनवर लिहायचा आहे जेणेकरून त्याला एक अपरिवर्तनीय टाइमस्टॅम्प मिळेल. मग आपले डेटा फील्ड असे दिसले पाहिजे: web3.utils.toHex(‘IPFS hash‘). आणि आता कोणीही चेनची क्वेरी करू शकतो आणि ते डॉक्युमेंट केव्हा जोडले गेले ते पाहू शकतो.
  • स्मार्ट कॉन्ट्रॅक्ट व्यवहार: चेनवर काही स्मार्ट कॉन्ट्रॅक्ट कोड कार्यान्वित करा. या प्रकरणात, डेटा फील्डमध्ये तुम्ही कार्यान्वित करू इच्छित असलेले स्मार्ट फंक्शन, कोणत्याही पॅरामीटर्ससह असले पाहिजे.

८. node sendTx.js वापरून कोड चालवा

तुमच्या टर्मिनल किंवा कमांड लाइनवर परत नेव्हिगेट करा आणि चालवा:

1node sendTx.js

९. तुमचा व्यवहार Mempool मध्ये पहा

तुमच्या Alchemy डॅशबोर्डमध्ये Mempool पृष्ठ (opens in a new tab) उघडा आणि तुमचा व्यवहार शोधण्यासाठी तुम्ही तयार केलेल्या ॲपनुसार फिल्टर करा. येथे आपण आपला व्यवहार प्रलंबित स्थितीतून माइन केलेल्या स्थितीत (यशस्वी झाल्यास) किंवा ड्रॉप केलेल्या स्थितीत (अयशस्वी झाल्यास) संक्रमण होताना पाहू शकतो. याला "All" वर ठेवण्याची खात्री करा जेणेकरून तुम्ही "mined", "pending", आणि "dropped" व्यवहार कॅप्चर करू शकाल. तुम्ही 0x31b98d14007bdee637298086988a0bbd31184523 या ॲड्रेसवर पाठवलेले व्यवहार शोधून तुमचा व्यवहार शोधू शकता.

तुमचा व्यवहार सापडल्यावर त्याचे तपशील पाहण्यासाठी, tx हॅश निवडा, जो तुम्हाला अशा दिसणाऱ्या दृश्याकडे घेऊन जाईल:

Mempool वॉचर स्क्रीनशॉट

तिथून तुम्ही लाल रंगात गोल केलेल्या आयकॉनवर क्लिक करून तुमचा व्यवहार Etherscan वर पाहू शकता!

यिप्पी! तुम्ही नुकताच Alchemy वापरून तुमचा पहिला Ethereum व्यवहार पाठवला आहे 🎉

या मार्गदर्शक पुस्तिकेबद्दल अभिप्राय आणि सूचनांसाठी, कृपया Alchemy च्या Discord (opens in a new tab) वर एलानला मेसेज करा!

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

पृष्ठ अखेरचे अद्यतन: १८ डिसेंबर, २०२५

हे मार्गदर्शन उपयुक्त होते का?