JavaScriptలో ఎథీరియం బ్లాక్చైన్ను ఉపయోగించడానికి web3.jsని సెటప్ చేయండి
ఈ ట్యుటోరియల్లో, ఎథీరియం బ్లాక్చైన్తో ఇంటరాక్ట్ అవ్వడానికి web3.js (opens in a new tab)తో ఎలా ప్రారంభించాలో మనం చూస్తాము. బ్లాక్చైన్ నుండి డేటాను చదవడానికి లేదా లావాదేవీలు చేయడానికి మరియు స్మార్ట్ కాంట్రాక్ట్లను డిప్లాయ్ చేయడానికి కూడా Web3.jsని ఫ్రంటెండ్లు మరియు బ్యాకెండ్లు రెండింటిలోనూ ఉపయోగించవచ్చు.
మొదటి దశ మీ ప్రాజెక్ట్లో web3.jsని చేర్చడం. వెబ్ పేజీలో దీన్ని ఉపయోగించడానికి, మీరు JSDeliver వంటి CDNని ఉపయోగించి నేరుగా లైబ్రరీని దిగుమతి చేసుకోవచ్చు.
<script src="https://cdn.jsdelivr.net/npm/web3@latest/dist/web3.min.js"></script>
మీరు మీ బ్యాకెండ్ లేదా బిల్డ్ని ఉపయోగించే ఫ్రంటెండ్ ప్రాజెక్ట్లో ఉపయోగించడానికి లైబ్రరీని ఇన్స్టాల్ చేయాలనుకుంటే, మీరు npmని ఉపయోగించి దాన్ని ఇన్స్టాల్ చేయవచ్చు:
npm install web3 --save
తర్వాత Node.js స్క్రిప్ట్ లేదా Browserify ఫ్రంటెండ్ ప్రాజెక్ట్లోకి Web3.jsని దిగుమతి చేయడానికి, మీరు కింది JavaScript లైన్ని ఉపయోగించవచ్చు:
const Web3 = require("web3")
ఇప్పుడు మనం ప్రాజెక్ట్లో లైబ్రరీని చేర్చాము కాబట్టి దాన్ని ప్రారంభించాలి. మీ ప్రాజెక్ట్ బ్లాక్చైన్తో కమ్యూనికేట్ చేయగలగాలి. చాలా ఎథీరియం లైబ్రరీలు RPC కాల్ల ద్వారా నోడ్తో కమ్యూనికేట్ చేస్తాయి. మన Web3 ప్రొవైడర్ను ప్రారంభించడానికి, ప్రొవైడర్ యొక్క URLని కన్స్ట్రక్టర్గా పంపుతూ మనం Web3 ఇన్స్టాన్స్ను ఇన్స్టాన్షియేట్ చేస్తాము. మీ కంప్యూటర్లో నోడ్ లేదా ganache ఇన్స్టాన్స్ రన్ అవుతుంటే (opens in a new tab) అది ఈ విధంగా కనిపిస్తుంది:
const web3 = new Web3("http://localhost:8545")
మీరు హోస్ట్ చేయబడిన నోడ్ను నేరుగా యాక్సెస్ చేయాలనుకుంటే, మీరు నోడ్స్ యాజ్ ఎ సర్వీస్లో ఎంపికలను కనుగొనవచ్చు.
const web3 = new Web3("https://cloudflare-eth.com")
మనం మన Web3 ఇన్స్టాన్స్ను సరిగ్గా కాన్ఫిగర్ చేశామని పరీక్షించడానికి, getBlockNumber ఫంక్షన్ని ఉపయోగించి తాజా బ్లాక్ నంబర్ను తిరిగి పొందడానికి ప్రయత్నిస్తాము. ఈ ఫంక్షన్ పారామీటర్గా కాల్బ్యాక్ను అంగీకరిస్తుంది మరియు బ్లాక్ నంబర్ను పూర్ణాంకంగా (integer) అందిస్తుంది.
var Web3 = require("web3")
const web3 = new Web3("https://cloudflare-eth.com")
web3.eth.getBlockNumber(function (error, result) {
console.log(result)
})
మీరు ఈ ప్రోగ్రామ్ను ఎగ్జిక్యూట్ చేస్తే, అది తాజా బ్లాక్ నంబర్ను ప్రింట్ చేస్తుంది: బ్లాక్చైన్ యొక్క పైభాగం. మీ కోడ్లో కాల్బ్యాక్లను నెస్టింగ్ చేయడాన్ని నివారించడానికి మీరు await/async ఫంక్షన్ కాల్లను కూడా ఉపయోగించవచ్చు:
async function getBlockNumber() {
const latestBlockNumber = await web3.eth.getBlockNumber()
console.log(latestBlockNumber)
return latestBlockNumber
}
getBlockNumber()
మీరు Web3 ఇన్స్టాన్స్లో అందుబాటులో ఉన్న అన్ని ఫంక్షన్లను అధికారిక web3.js డాక్యుమెంటేషన్ (opens in a new tab)లో చూడవచ్చు.
చాలా Web3 లైబ్రరీలు అసమకాలికంగా (asynchronous) ఉంటాయి ఎందుకంటే బ్యాక్గ్రౌండ్లో లైబ్రరీ నోడ్కు జేసన్-ఆర్పీసీ కాల్స్ చేస్తుంది, అది ఫలితాన్ని తిరిగి పంపుతుంది.
మీరు బ్రౌజర్లో పని చేస్తుంటే, కొన్ని వాలెట్లు నేరుగా Web3 ఇన్స్టాన్స్ను ఇంజెక్ట్ చేస్తాయి మరియు లావాదేవీలు చేయడానికి వినియోగదారు ఎథీరియం చిరునామాతో ఇంటరాక్ట్ అవ్వాలని మీరు ప్లాన్ చేస్తే, సాధ్యమైనప్పుడల్లా దాన్ని ఉపయోగించడానికి ప్రయత్నించాలి.
మెటామాస్క్ వాలెట్ అందుబాటులో ఉందో లేదో గుర్తించడానికి మరియు అది ఉంటే దాన్ని ఎనేబుల్ చేయడానికి ప్రయత్నించడానికి ఇక్కడ స్నిప్పెట్ ఉంది. ఇది తర్వాత వినియోగదారు బ్యాలెన్స్ను చదవడానికి మిమ్మల్ని అనుమతిస్తుంది మరియు ఎథీరియం బ్లాక్చైన్లో మీరు వారిచే చేయించాలనుకుంటున్న లావాదేవీలను ధృవీకరించడానికి వారిని అనుమతిస్తుంది:
if (window.ethereum != null) {
state.web3 = new Web3(window.ethereum)
try {
// అవసరమైతే ఖాతా యాక్సెస్ను అభ్యర్థించండి
await window.ethereum.enable()
// ఖాతాలు ఇప్పుడు బహిర్గతం చేయబడ్డాయి
} catch (error) {
// వినియోగదారు ఖాతా యాక్సెస్ను తిరస్కరించారు...
}
}
web3.jsకి ప్రత్యామ్నాయంగా Ethers.js (opens in a new tab) వంటివి ఉన్నాయి మరియు అవి కూడా సాధారణంగా ఉపయోగించబడతాయి. తదుపరి ట్యుటోరియల్లో బ్లాక్చైన్లో కొత్తగా వచ్చే బ్లాక్లను సులభంగా ఎలా వినాలో మరియు వాటిలో ఏముందో ఎలా చూడాలో (opens in a new tab) మనం చూస్తాము.