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

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

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

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

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

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

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

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

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

2. "సైనర్" అంటే ఏమిటి?

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

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

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

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

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

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

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: మీ Alchemy URLకి జేసన్-ఆర్‌పీసీ అభ్యర్థనలను పంపే Viem క్లయింట్‌లు. పబ్లిక్ క్లయింట్ చైన్ నుండి చదువుతుంది మరియు వాలెట్ క్లయింట్ మీ ఖాతా కోసం లావాదేవీలను సిద్ధం చేస్తుంది మరియు సంతకం చేస్తుంది.
  • nonce : మీ చిరునామా నుండి పంపబడిన లావాదేవీల సంఖ్యను ట్రాక్ చేయడానికి నాన్స్ స్పెసిఫికేషన్ ఉపయోగించబడుతుంది. భద్రతా ప్రయోజనాల కోసం మరియు రీప్లే దాడులను నిరోధించడానికి మనకు ఇది అవసరం. మీ చిరునామా నుండి పంపబడిన లావాదేవీల సంఖ్యను పొందడానికి మనం getTransactionCount (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)ని ఉపయోగిస్తాము. Viem కూడా మీ కోసం దీన్ని పూరిస్తుంది, కానీ అది ఎక్కడ నుండి వస్తుందో చూపించడానికి మనం ఇక్కడ స్పష్టంగా పొందుతాము.
  • transaction: లావాదేవీ ఆబ్జెక్ట్‌లో మనం పేర్కొనవలసిన కొన్ని అంశాలు ఉన్నాయి. ప్రస్తుత నెట్‌వర్క్ పరిస్థితుల ఆధారంగా chainId మరియు EIP-1559 ఫీజు ఫీల్డ్‌లు maxFeePerGas మరియు maxPriorityFeePerGasతో సహా మిగిలిన వాటిని prepareTransactionRequest (కొత్త ట్యాబ్‌లో తెరవబడుతుంది) మన కోసం పూరిస్తుంది.
    • to: మనం ETHని పంపాలనుకుంటున్న చిరునామా ఇది.
    • value: ఇది మనం పంపాలనుకుంటున్న మొత్తం, Weiలో పేర్కొనబడింది, ఇక్కడ 10^18 Wei = 1 ETH. parseEther (కొత్త ట్యాబ్‌లో తెరవబడుతుంది) మన కోసం ETH మొత్తాన్ని Weiకి మారుస్తుంది. మీ ఖాతాకు దీని కంటే కొంచెం ఎక్కువ అవసరం, ఎందుకంటే ఇది గ్యాస్ కోసం కూడా చెల్లిస్తుంది.
    • gas: మీ లావాదేవీతో చేర్చాల్సిన సరైన గ్యాస్ మొత్తాన్ని నిర్ణయించడానికి అనేక మార్గాలు ఉన్నాయి. ఆన్‌చైన్ కార్యాచరణ గురించి మీకు తెలియజేయగల వెబ్‌హుక్స్ (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)కి Alchemy మద్దతు ఇస్తుంది. మెయిన్‌నెట్ లావాదేవీల కోసం, చేర్చాల్సిన సరైన గ్యాస్ మొత్తాన్ని నిర్ణయించడానికి ప్రస్తుత గ్యాస్ పరిస్థితులను తనిఖీ చేయడం మంచి పద్ధతి. సాధారణ చిరునామాకు సాధారణ ETH బదిలీ ఎల్లప్పుడూ సరిగ్గా 21000 గ్యాస్‌ను ఉపయోగిస్తుంది, ఇది ఏదైనా లావాదేవీకి కనీస మొత్తం, కాబట్టి మనం ఇక్కడ 21000 ఉంచుతాము. మీరు gasని వదిలివేస్తే, Viem మీ కోసం దాన్ని అంచనా వేస్తుంది.
    • nonce: పైన ఉన్న నాన్స్ నిర్వచనాన్ని చూడండి. నాన్స్ సున్నా నుండి లెక్కించడం ప్రారంభిస్తుంది.
    • [ఐచ్ఛికం] data: మీ బదిలీతో అదనపు సమాచారాన్ని పంపడానికి లేదా స్మార్ట్ కాంట్రాక్ట్‌ను కాల్ చేయడానికి ఉపయోగించబడుతుంది, బ్యాలెన్స్ బదిలీలకు అవసరం లేదు, దిగువ గమనికను తనిఖీ చేయండి.
  • signedTx: మన లావాదేవీ ఆబ్జెక్ట్‌పై సంతకం చేయడానికి మనం signTransaction పద్ధతిని ఉపయోగిస్తాము, ఇది మన PRIVATE_KEY నుండి సృష్టించబడిన ఖాతాతో స్థానికంగా సంతకం చేస్తుంది.
  • sendRawTransaction: మనకు సంతకం చేయబడిన లావాదేవీ ఉన్న తర్వాత, eth_sendRawTransactionని కాల్ చేసే sendRawTransactionని ఉపయోగించడం ద్వారా తదుపరి బ్లాక్‌లో చేర్చడానికి మనం దాన్ని పంపవచ్చు.
  • waitForTransactionReceipt: లావాదేవీ బ్లాక్‌లో చేర్చబడే వరకు వేచి ఉంటుంది మరియు దాని రశీదును అందిస్తుంది.

డేటాపై ఒక గమనిక ఎథీరియంలో పంపగల రెండు ప్రధాన రకాల లావాదేవీలు ఉన్నాయి.

  • బ్యాలెన్స్ బదిలీ: ఒక చిరునామా నుండి మరొక చిరునామాకు ETHని పంపండి. డేటా ఫీల్డ్ అవసరం లేదు, అయితే, మీరు మీ లావాదేవీతో పాటు అదనపు సమాచారాన్ని పంపాలనుకుంటే, మీరు ఆ సమాచారాన్ని ఈ ఫీల్డ్‌లో HEX ఆకృతిలో చేర్చవచ్చు.
    • ఉదాహరణకు, మార్చలేని టైమ్‌స్టాంప్‌ను ఇవ్వడానికి IPFS పత్రం యొక్క హాష్‌ను ఎథీరియం చైన్‌కు వ్రాయాలనుకుంటున్నాము అనుకుందాం. Viem యొక్క toHex (కొత్త ట్యాబ్‌లో తెరవబడుతుంది)ని ఉపయోగించి మన డేటా ఫీల్డ్ data: toHex("IPFS hash") లాగా ఉండాలి. మరియు ఇప్పుడు ఎవరైనా చైన్‌ను క్వెరీ చేయవచ్చు మరియు ఆ పత్రం ఎప్పుడు జోడించబడిందో చూడవచ్చు.
  • స్మార్ట్ కాంట్రాక్ట్ లావాదేవీ: చైన్‌లో కొంత స్మార్ట్ కాంట్రాక్ట్ కోడ్‌ను అమలు చేయండి. ఈ సందర్భంలో, డేటా ఫీల్డ్ మీరు అమలు చేయాలనుకుంటున్న స్మార్ట్ ఫంక్షన్‌ను, ఏవైనా పారామితులతో పాటు కలిగి ఉండాలి.

8. node sendTx.js ఉపయోగించి కోడ్‌ను రన్ చేయండి

మీ టెర్మినల్ లేదా కమాండ్ లైన్‌కి తిరిగి నావిగేట్ చేయండి మరియు రన్ చేయండి:

node sendTx.js

9. బ్లాక్ ఎక్స్‌ప్లోరర్‌లో మీ లావాదేవీని చూడండి

నోడ్ లావాదేవీని అంగీకరించిన వెంటనే స్క్రిప్ట్ లావాదేవీ హాష్‌ను ప్రింట్ చేస్తుంది, ఆపై అది బ్లాక్‌లో చేర్చబడే వరకు వేచి ఉంటుంది (సాధారణంగా కొన్ని సెకన్లలో) మరియు ఫలితాన్ని ప్రింట్ చేస్తుంది. వివరాలను చూడటానికి, హాష్‌ను Sepolia Etherscan (కొత్త ట్యాబ్‌లో తెరవబడుతుంది) లేదా Blockscout (కొత్త ట్యాబ్‌లో తెరవబడుతుంది) వంటి Sepolia బ్లాక్ ఎక్స్‌ప్లోరర్‌లో అతికించండి. అక్కడ మీరు లావాదేవీ పెండింగ్ నుండి చేర్చబడిన స్థితికి వెళ్లడాన్ని చూడవచ్చు మరియు అది చేరిన మొత్తం, ఫీజులు మరియు బ్లాక్‌ను చూడవచ్చు.

బదులుగా మీరు insufficient funds ఎర్రర్‌ను చూస్తే, మీ ఖాతాలో విలువ మరియు గ్యాస్‌ను కవర్ చేయడానికి తగినంత Sepolia ETH లేదు. 2వ దశకు తిరిగి వెళ్లి, ఫాసెట్ నుండి మరింత అభ్యర్థించండి.

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

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

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