मुख्य सामग्रीवर जा

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

व्यवहार
Viem
Alchemy
नवशिक्या
एलन हॅल्पर्न
4 नोव्हेंबर, 2020
10 मिनिटांचे वाचन

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

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

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

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

1. Alchemy तुमच्या खाजगी की साठवत नाही

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

2. "साइनर" (signer) म्हणजे काय?

  • साइनर्स तुमची खाजगी की वापरून तुमच्यासाठी व्यवहारांवर स्वाक्षरी करतील. या ट्युटोरियलमध्ये आपण आपल्या व्यवहारावर स्वाक्षरी करण्यासाठी Viem (नवीन टॅबमध्ये उघडते) वापरणार आहोत, परंतु तुम्ही इतर कोणतीही Web3 लायब्ररी देखील वापरू शकता.
  • फ्रंटएंडवर, साइनरचे एक उत्तम उदाहरण मेटामास्क (नवीन टॅबमध्ये उघडते) असेल, जे तुमच्या वतीने व्यवहारांवर स्वाक्षरी करेल आणि पाठवेल.

3. मला माझ्या व्यवहारांवर स्वाक्षरी करण्याची आवश्यकता का आहे?

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

4. मी माझ्या खाजगी की चे संरक्षण कसे करू?

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

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

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

  • eth_sendTransaction चा वापर स्वाक्षरी नसलेले व्यवहार पाठवण्यासाठी केला जातो, याचा अर्थ असा की तुम्ही ज्या नोडला पाठवत आहात त्याने तुमची खाजगी की व्यवस्थापित केली पाहिजे जेणेकरून तो चेनवर प्रसारित करण्यापूर्वी व्यवहारावर स्वाक्षरी करू शकेल. Alchemy वापरकर्त्यांच्या खाजगी की ठेवत नसल्यामुळे, ते या पद्धतीला समर्थन देत नाहीत.
  • eth_sendRawTransaction (नवीन टॅबमध्ये उघडते) चा वापर आधीच स्वाक्षरी केलेल्या व्यवहारांना प्रसारित करण्यासाठी केला जातो. याचा अर्थ तुम्हाला प्रथम तुमच्या खाजगी की ने व्यवहारावर स्वाक्षरी करावी लागेल (Viem मध्ये, स्थानिक खात्यासह (नवीन टॅबमध्ये उघडते) signTransaction (नवीन टॅबमध्ये उघडते) वापरून), नंतर परिणाम eth_sendRawTransaction मध्ये पास करा.

Viem वापरताना, sendRawTransaction (नवीन टॅबमध्ये उघडते) फंक्शन कॉल करून eth_sendRawTransaction ॲक्सेस केले जाते.

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

6. Web3 लायब्ररी म्हणजे काय?

ठीक आहे, आता आपण यापैकी काही प्रश्न सोडवले आहेत, तर आपण ट्युटोरियलकडे वळूया. 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 फॉसेट्स पैकी एक वापरा. फॉसेट्स कमी प्रमाणात देतात (Alchemy फॉसेट दररोज 0.1 ETH देते), जे या ट्युटोरियलसाठी पुरेसे आहे. तुमचा Sepolia इथेरियम पत्ता (मेटामास्क मधून) समाविष्ट केल्याची खात्री करा आणि दुसरे नेटवर्क नाही. सूचनांचे अनुसरण केल्यानंतर, तुम्हाला तुमच्या वॉलेटमध्ये ETH प्राप्त झाले आहे का ते पुन्हा तपासा.

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

कमांड लाईनवरून (मॅकसाठी टर्मिनल) नवीन प्रोजेक्ट डिरेक्टरी तयार करा आणि त्यात जा:

mkdir sendtx-example
cd sendtx-example

4. Viem (किंवा कोणतीही Web3 लायब्ररी) स्थापित करा

Viem (नवीन टॅबमध्ये उघडते) स्थापित करण्यासाठी तुमच्या प्रोजेक्ट डिरेक्टरीमध्ये खालील कमांड चालवा:

लक्षात घ्या, जर तुम्हाला Ethers.js लायब्ररी वापरायची असेल, तर येथील सूचनांचे अनुसरण करा (नवीन टॅबमध्ये उघडते).

npm init -y
npm install viem

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

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

npm install dotenv

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

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

  • तुमचा Alchemy ॲप्लिकेशन प्रोग्रामिंग इंटरफेस (API) URL शोधण्यासाठी, तुम्ही तुमच्या डॅशबोर्डवर नुकत्याच तयार केलेल्या ॲपच्या ॲप तपशील पृष्ठावर जा, वरच्या उजव्या कोपर्यात "View Key" वर क्लिक करा आणि HTTP URL घ्या.
  • मेटामास्क वापरून तुमची खाजगी की शोधण्यासाठी, हे मार्गदर्शक (नवीन टॅबमध्ये उघडते) तपासा. असे खाते वापरा ज्यामध्ये फक्त टेस्टनेट ETH आहे.
API_URL="your-api-url"
PRIVATE_KEY="your-private-key"
.env कमिट करू नका! कृपया तुमची .env फाईल कधीही कोणाशीही शेअर किंवा उघड न करण्याची खात्री करा, कारण असे केल्याने तुम्ही तुमच्या गुपितांशी तडजोड करत आहात. जर तुम्ही व्हर्जन कंट्रोल वापरत असाल, तर तुमची .env एका gitignore फाईलमध्ये जोडा.

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

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

एक sendTx.js फाईल तयार करा, जिथे आपण आपला उदाहरण व्यवहार कॉन्फिगर करू आणि पाठवू, आणि त्यात खालील कोडच्या ओळी जोडा:

तुम्हाला ज्या पत्त्यावर ETH पाठवायचे आहे त्या पत्त्यासह 0xYourSecondAddress बदलण्याची खात्री करा. स्क्रिप्ट तुमचा स्वतःचा (पाठवणारा) पत्ता PRIVATE_KEY मधून मिळवते, त्यामुळे तुम्हाला तो प्रविष्ट करण्याची आवश्यकता नाही.

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

  • account: privateKeyToAccount (नवीन टॅबमध्ये उघडते) सह तुमच्या खाजगी की मधून तयार केलेले स्थानिक खाते. स्वाक्षरी करणे तुमच्या मशीनवर होते, आणि खाजगी की कधीही Alchemy ला पाठवली जात नाही.
  • publicClient आणि walletClient: Viem क्लायंट्स जे तुमच्या Alchemy URL वर जेसॉन-आरपीसी विनंत्या पाठवतात. पब्लिक क्लायंट चेनवरून वाचतो, आणि वॉलेट क्लायंट तुमच्या खात्यासाठी व्यवहार तयार करतो आणि त्यावर स्वाक्षरी करतो.
  • nonce : नॉन्स स्पेसिफिकेशनचा वापर तुमच्या पत्त्यावरून पाठवलेल्या व्यवहारांच्या संख्येचा मागोवा ठेवण्यासाठी केला जातो. सुरक्षिततेच्या उद्देशाने आणि रिप्ले हल्ले टाळण्यासाठी आपल्याला याची आवश्यकता आहे. तुमच्या पत्त्यावरून पाठवलेल्या व्यवहारांची संख्या मिळवण्यासाठी आपण getTransactionCount (नवीन टॅबमध्ये उघडते) वापरतो. Viem देखील तुमच्यासाठी हे भरेल, परंतु ते कुठून येते हे दाखवण्यासाठी आपण ते येथे स्पष्टपणे मिळवतो.
  • transaction: व्यवहार ऑब्जेक्टमध्ये काही पैलू आहेत जे आपल्याला निर्दिष्ट करणे आवश्यक आहे. prepareTransactionRequest (नवीन टॅबमध्ये उघडते) आपल्यासाठी उर्वरित भरते, ज्यामध्ये chainId आणि सध्याच्या नेटवर्क परिस्थितीवर आधारित EIP-1559 फी फील्ड्स maxFeePerGas आणि maxPriorityFeePerGas समाविष्ट आहेत.
    • to: हा तो पत्ता आहे ज्यावर आपल्याला ETH पाठवायचे आहे.
    • value: ही ती रक्कम आहे जी आपल्याला पाठवायची आहे, Wei मध्ये निर्दिष्ट केली आहे जिथे 10^18 Wei = 1 ETH. parseEther (नवीन टॅबमध्ये उघडते) आपल्यासाठी ETH रकमेचे Wei मध्ये रूपांतर करते. तुमच्या खात्याला यापेक्षा थोडे जास्त आवश्यक आहे, कारण ते गॅससाठी देखील पैसे देते.
    • gas: तुमच्या व्यवहारासोबत समाविष्ट करण्यासाठी गॅसची योग्य रक्कम ठरवण्याचे अनेक मार्ग आहेत. Alchemy webhooks (नवीन टॅबमध्ये उघडते) ला समर्थन देते जे तुम्हाला ऑनचेन क्रियाकलापांबद्दल सूचित करू शकतात. मुख्यनेट व्यवहारांसाठी, समाविष्ट करण्यासाठी गॅसची योग्य रक्कम ठरवण्यासाठी सध्याच्या गॅस परिस्थिती तपासणे ही एक चांगली सवय आहे. सामान्य पत्त्यावर साधे ETH हस्तांतरण नेहमी अचूक 21000 गॅस वापरते, जे कोणत्याही व्यवहारासाठी किमान आहे, म्हणून आपण येथे 21000 ठेवतो. जर तुम्ही gas वगळले, तर Viem तुमच्यासाठी त्याचा अंदाज लावते.
    • nonce: वरील नॉन्स व्याख्या पहा. नॉन्स शून्यापासून मोजणे सुरू करतो.
    • [पर्यायी] data: तुमच्या हस्तांतरणासोबत अतिरिक्त माहिती पाठवण्यासाठी, किंवा स्मार्ट कॉन्ट्रॅक्ट कॉल करण्यासाठी वापरले जाते, शिल्लक हस्तांतरणासाठी आवश्यक नाही, खालील टीप तपासा.
  • signedTx: आपल्या व्यवहार ऑब्जेक्टवर स्वाक्षरी करण्यासाठी आपण signTransaction पद्धत वापरू, जी आपल्या PRIVATE_KEY मधून तयार केलेल्या खात्यासह स्थानिक पातळीवर त्यावर स्वाक्षरी करते.
  • sendRawTransaction: एकदा आपल्याकडे स्वाक्षरी केलेला व्यवहार आला की, आपण sendRawTransaction वापरून तो पुढील ब्लॉकमध्ये समाविष्ट करण्यासाठी पाठवू शकतो, जे eth_sendRawTransaction ला कॉल करते.
  • waitForTransactionReceipt: व्यवहार ब्लॉकमध्ये समाविष्ट होईपर्यंत प्रतीक्षा करते आणि त्याची पावती परत करते.

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

  • शिल्लक हस्तांतरण: एका पत्त्यावरून दुसऱ्या पत्त्यावर ETH पाठवा. कोणत्याही डेटा फील्डची आवश्यकता नाही, तथापि, जर तुम्हाला तुमच्या व्यवहारासोबत अतिरिक्त माहिती पाठवायची असेल, तर तुम्ही ती माहिती या फील्डमध्ये HEX फॉरमॅटमध्ये समाविष्ट करू शकता.
    • उदाहरणार्थ, समजा आपल्याला IPFS दस्तऐवजाचा हॅश इथेरियम चेनवर लिहायचा आहे जेणेकरून त्याला अपरिवर्तनीय टाइमस्टॅम्प देता येईल. आपले डेटा फील्ड नंतर Viem चे toHex (नवीन टॅबमध्ये उघडते) वापरून data: toHex("IPFS hash") असे दिसावे. आणि आता कोणीही चेनची चौकशी करू शकतो आणि तो दस्तऐवज कधी जोडला गेला ते पाहू शकतो.
  • स्मार्ट कॉन्ट्रॅक्ट व्यवहार: चेनवर काही स्मार्ट कॉन्ट्रॅक्ट कोड कार्यान्वित करा. या प्रकरणात, डेटा फील्डमध्ये तुम्हाला कार्यान्वित करायचे असलेले स्मार्ट फंक्शन, कोणत्याही पॅरामीटर्ससह असावे.

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

तुमच्या टर्मिनल किंवा कमांड लाईनवर परत जा आणि चालवा:

node sendTx.js

9. तुमचा व्यवहार ब्लॉक एक्सप्लोररवर पहा

नोडने व्यवहार स्वीकारताच स्क्रिप्ट व्यवहार हॅश प्रिंट करते, नंतर तो ब्लॉकमध्ये समाविष्ट होईपर्यंत प्रतीक्षा करते (सामान्यतः काही सेकंदात) आणि परिणाम प्रिंट करते. तपशील पाहण्यासाठी, हॅशला Sepolia Etherscan (नवीन टॅबमध्ये उघडते) किंवा Blockscout (नवीन टॅबमध्ये उघडते) सारख्या Sepolia ब्लॉक एक्सप्लोररमध्ये पेस्ट करा. तेथे तुम्ही व्यवहार प्रलंबित (pending) पासून समाविष्ट (included) होईपर्यंत पाहू शकता, आणि रक्कम, फी आणि तो कोणत्या ब्लॉकमध्ये आला ते पाहू शकता.

जर तुम्हाला त्याऐवजी insufficient funds त्रुटी दिसली, तर तुमच्या खात्यात मूल्य अधिक गॅस कव्हर करण्यासाठी पुरेसे Sepolia ETH नाही. पायरी 2 वर परत जा आणि फॉसेटमधून अधिक विनंती करा.

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

या मार्गदर्शकाबद्दल अभिप्राय आणि सूचनांसाठी, कृपया Alchemy च्या डिस्कॉर्ड् (नवीन टॅबमध्ये उघडते) वर Elan ला संदेश पाठवा!

मूळतः Alchemy द्वारे प्रकाशित.