ప్రధాన కంటెంట్‌కు దాటవేయి

Web3 ఉపయోగించి లావాదేవీలను పంపడం

లావాదేవీలు
web3.js
Alchemy
ప్రారంభ స్థాయి
ఎలాన్ హాల్పెర్న్
4 నవంబర్, 2020
8 నిమిషాల పఠనం

Web3 ఉపయోగించి ఎథీరియం లావాదేవీలను పంపడానికి ఇది ఒక బిగినర్స్ ఫ్రెండ్లీ గైడ్. ఎథీరియం బ్లాక్‌చైన్‌కు లావాదేవీని పంపడానికి మూడు ప్రధాన దశలు ఉన్నాయి: సృష్టించడం, సంతకం చేయడం మరియు ప్రసారం చేయడం. మీకు ఉన్న ఏవైనా ప్రశ్నలకు సమాధానం ఇస్తూ, మనం ఈ మూడింటి గురించి తెలుసుకుందాం! ఈ ట్యుటోరియల్‌లో, మన లావాదేవీలను ఎథీరియం చైన్‌కు పంపడానికి మనం Alchemy (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)ని ఉపయోగిస్తాము. మీరు ఇక్కడ ఉచిత Alchemy ఖాతాను సృష్టించవచ్చు (కొత్త ట్యాబ్‌లో తెరవబడుతుంది).

గమనిక: ఈ గైడ్ మీ యాప్ కోసం _బ్యాకెండ్_లో మీ లావాదేవీలపై సంతకం చేయడం కోసం ఉద్దేశించబడింది. మీరు ఫ్రంటెండ్‌లో మీ లావాదేవీలపై సంతకం చేయడాన్ని ఏకీకృతం చేయాలనుకుంటే, బ్రౌజర్ ప్రొవైడర్‌తో Web3 (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)ని ఏకీకృతం చేయడం గురించి చూడండి.

ప్రాథమిక అంశాలు

చాలా మంది బ్లాక్‌చైన్ డెవలపర్‌లు మొదట ప్రారంభించినప్పుడు, లావాదేవీని ఎలా పంపాలి (ఇది చాలా సులభంగా ఉండాలి) అనే దానిపై మీరు కొంత పరిశోధన చేసి ఉండవచ్చు మరియు అనేక గైడ్‌లను చూసి ఉండవచ్చు, ఒక్కొక్కటి ఒక్కో రకంగా చెబుతూ మిమ్మల్ని కొంచెం గందరగోళానికి గురిచేసి ఉండవచ్చు. మీరు కూడా అదే పరిస్థితిలో ఉంటే, చింతించకండి; మేమంతా ఒకానొక సమయంలో అలా ఉన్నవారమే! కాబట్టి, మనం ప్రారంభించడానికి ముందు, కొన్ని విషయాలను స్పష్టం చేసుకుందాం:

1. Alchemy మీ ప్రైవేట్ కీలను నిల్వ చేయదు

  • అంటే Alchemy మీ తరపున లావాదేవీలపై సంతకం చేయలేదు మరియు పంపలేదు. దీనికి కారణం భద్రతా ప్రయోజనాలే. Alchemy మీ ప్రైవేట్ కీని పంచుకోమని మిమ్మల్ని ఎప్పటికీ అడగదు మరియు మీరు మీ ప్రైవేట్ కీని హోస్ట్ చేసిన నోడ్‌తో (లేదా ఎవరితోనైనా) ఎప్పుడూ పంచుకోకూడదు.
  • మీరు Alchemy యొక్క కోర్ APIని ఉపయోగించి బ్లాక్‌చైన్ నుండి చదవవచ్చు, కానీ దానికి వ్రాయడానికి మీరు Alchemy ద్వారా పంపే ముందు మీ లావాదేవీలపై సంతకం చేయడానికి వేరే దేనినైనా ఉపయోగించాల్సి ఉంటుంది (ఇది మరే ఇతర నోడ్ సేవకైనా వర్తిస్తుంది).

2. “సైనర్ (signer)” అంటే ఏమిటి?

3. నేను నా లావాదేవీలపై ఎందుకు సంతకం చేయాలి?

  • ఎథీరియం నెట్‌వర్క్‌లో లావాదేవీని పంపాలనుకునే ప్రతి వినియోగదారుడు, లావాదేవీ యొక్క మూలం వారు చెప్పుకుంటున్న వారే అని ధృవీకరించడానికి లావాదేవీపై (వారి ప్రైవేట్ కీని ఉపయోగించి) తప్పనిసరిగా సంతకం చేయాలి.
  • ఈ ప్రైవేట్ కీని రక్షించడం చాలా ముఖ్యం, ఎందుకంటే దీనికి యాక్సెస్ కలిగి ఉండటం వలన మీ ఎథీరియం ఖాతాపై పూర్తి నియంత్రణ లభిస్తుంది, ఇది మీ తరపున లావాదేవీలను నిర్వహించడానికి మిమ్మల్ని (లేదా యాక్సెస్ ఉన్న ఎవరినైనా) అనుమతిస్తుంది.

4. నా ప్రైవేట్ కీని నేను ఎలా రక్షించుకోవాలి?

  • మీ ప్రైవేట్ కీని రక్షించడానికి మరియు లావాదేవీలను పంపడానికి దాన్ని ఉపయోగించడానికి అనేక మార్గాలు ఉన్నాయి. ఈ ట్యుటోరియల్‌లో మనం .env ఫైల్‌ను ఉపయోగిస్తాము. అయితే, మీరు ప్రైవేట్ కీలను నిల్వ చేసే ప్రత్యేక ప్రొవైడర్‌ను కూడా ఉపయోగించవచ్చు, కీస్టోర్ ఫైల్‌ను ఉపయోగించవచ్చు లేదా ఇతర ఎంపికలను ఉపయోగించవచ్చు.

5. eth_sendTransaction మరియు eth_sendRawTransaction మధ్య తేడా ఏమిటి?

eth_sendTransaction మరియు eth_sendRawTransaction రెండూ ఎథీరియం API ఫంక్షన్‌లు, ఇవి ఎథీరియం నెట్‌వర్క్‌కు లావాదేవీని ప్రసారం చేస్తాయి, తద్వారా అది భవిష్యత్తు బ్లాక్‌కు జోడించబడుతుంది. లావాదేవీల సంతకం చేయడాన్ని అవి ఎలా నిర్వహిస్తాయి అనే దానిలో అవి విభిన్నంగా ఉంటాయి.

Web3ని ఉపయోగిస్తున్నప్పుడు, web3.eth.sendSignedTransaction (కొత్త ట్యాబ్‌లో తెరవబడుతుంది) ఫంక్షన్‌ను కాల్ చేయడం ద్వారా 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 ఎథీరియం చిరునామాను (మెటామాస్క్ నుండి) చేర్చారని నిర్ధారించుకోండి, వేరే నెట్‌వర్క్‌ది కాదు. సూచనలను అనుసరించిన తర్వాత, మీ వాలెట్‌లో ETHని స్వీకరించారో లేదో ఒకటికి రెండుసార్లు తనిఖీ చేయండి.

3. కొత్త ప్రాజెక్ట్ డైరెక్టరీని సృష్టించండి మరియు దానిలోకి cd చేయండి

కమాండ్ లైన్ (మాక్‌ల కోసం టెర్మినల్) నుండి కొత్త ప్రాజెక్ట్ డైరెక్టరీని సృష్టించండి మరియు దానిలోకి నావిగేట్ చేయండి:

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 ఫైల్‌ను ఎవరితోనూ పంచుకోకుండా లేదా బహిర్గతం చేయకుండా చూసుకోండి, ఎందుకంటే అలా చేయడం ద్వారా మీరు మీ రహస్యాలను రాజీ పడుతున్నారు. మీరు వెర్షన్ కంట్రోల్‌ని ఉపయోగిస్తుంటే, మీ .envని gitignore ఫైల్‌కి జోడించండి.

7. sendTx.js ఫైల్‌ను సృష్టించండి

అద్భుతం, ఇప్పుడు మన సున్నితమైన డేటా .env ఫైల్‌లో రక్షించబడింది కాబట్టి, కోడింగ్ ప్రారంభిద్దాం. మన లావాదేవీని పంపే ఉదాహరణ కోసం, మనం ETHని తిరిగి Sepolia ఫాసెట్‌కి పంపుతాము.

sendTx.js ఫైల్‌ను సృష్టించండి, ఇక్కడే మనం మన ఉదాహరణ లావాదేవీని కాన్ఫిగర్ చేస్తాము మరియు పంపుతాము, దానికి కింది కోడ్ పంక్తులను జోడించండి:

6వ పంక్తిలోని చిరునామాను మీ స్వంత పబ్లిక్ చిరునామాతో భర్తీ చేశారని నిర్ధారించుకోండి.

ఇప్పుడు, ఈ కోడ్‌ను రన్ చేయడానికి ముందు, ఇక్కడ ఉన్న కొన్ని భాగాల గురించి మాట్లాడుకుందాం.

  • nonce : మీ చిరునామా నుండి పంపబడిన లావాదేవీల సంఖ్యను ట్రాక్ చేయడానికి నాన్స్ స్పెసిఫికేషన్ ఉపయోగించబడుతుంది. భద్రతా ప్రయోజనాల కోసం మరియు రీప్లే దాడులను నిరోధించడానికి మనకు ఇది అవసరం. మీ చిరునామా నుండి పంపబడిన లావాదేవీల సంఖ్యను పొందడానికి మనం getTransactionCount (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)ని ఉపయోగిస్తాము.
  • transaction: లావాదేవీ ఆబ్జెక్ట్‌లో మనం పేర్కొనవలసిన కొన్ని అంశాలు ఉన్నాయి
    • to: మనం ETHని పంపాలనుకుంటున్న చిరునామా ఇది. ఈ సందర్భంలో, మనం మొదట అభ్యర్థించిన Sepolia ఫాసెట్ (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)కి ETHని తిరిగి పంపుతున్నాము.
    • value: ఇది మనం పంపాలనుకుంటున్న మొత్తం, ఇది Weiలో పేర్కొనబడింది, ఇక్కడ 10^18 Wei = 1 ETH
    • gas: మీ లావాదేవీతో చేర్చాల్సిన సరైన గ్యాస్ మొత్తాన్ని నిర్ణయించడానికి అనేక మార్గాలు ఉన్నాయి. ఆన్‌చైన్ కార్యాచరణ గురించి మీకు తెలియజేయగల వెబ్‌హుక్స్ (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)కి Alchemy మద్దతు ఇస్తుంది. మెయిన్‌నెట్ లావాదేవీల కోసం, చేర్చాల్సిన సరైన గ్యాస్ మొత్తాన్ని నిర్ణయించడానికి ప్రస్తుత గ్యాస్ పరిస్థితులను తనిఖీ చేయడం మంచి పద్ధతి. ఎథీరియంలో ఒక ఆపరేషన్ ఉపయోగించే కనీస గ్యాస్ మొత్తం 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 డ్యాష్‌బోర్డ్‌లో మెంపూల్ పేజీ (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)ని తెరిచి, మీ లావాదేవీని కనుగొనడానికి మీరు సృష్టించిన యాప్ ద్వారా ఫిల్టర్ చేయండి. ఇక్కడే మన లావాదేవీ పెండింగ్ స్థితి నుండి మైన్ చేయబడిన స్థితికి (విజయవంతమైతే) లేదా విఫలమైతే డ్రాప్ చేయబడిన స్థితికి మారడాన్ని మనం చూడవచ్చు. మీరు “మైన్ చేయబడిన”, “పెండింగ్” మరియు “డ్రాప్ చేయబడిన” లావాదేవీలను క్యాప్చర్ చేయడానికి దీన్ని “అన్నీ (All)”లో ఉంచారని నిర్ధారించుకోండి. మీరు 0x31b98d14007bdee637298086988a0bbd31184523 చిరునామాకు పంపిన లావాదేవీల కోసం వెతకడం ద్వారా కూడా మీ లావాదేవీని శోధించవచ్చు.

మీరు మీ లావాదేవీని కనుగొన్న తర్వాత దాని వివరాలను వీక్షించడానికి, tx హాష్‌ను ఎంచుకోండి, ఇది మిమ్మల్ని ఇలా కనిపించే వీక్షణకు తీసుకెళుతుంది:

మెంపూల్ వాచర్ స్క్రీన్‌షాట్

అక్కడ నుండి మీరు ఎరుపు రంగులో వృత్తాకారంలో ఉన్న చిహ్నంపై క్లిక్ చేయడం ద్వారా Etherscanలో మీ లావాదేవీని వీక్షించవచ్చు!

అద్భుతం! మీరు Alchemyని ఉపయోగించి మీ మొదటి ఎథీరియం లావాదేవీని పంపారు 🎉

ఈ గైడ్ గురించి ఫీడ్‌బ్యాక్ మరియు సూచనల కోసం, దయచేసి Alchemy యొక్క డిస్కార్డ్ (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)లో Elanకి సందేశం పంపండి!

వాస్తవానికి Alchemy ద్వారా ప్రచురించబడింది.