جاوا اسکرپٹ میں ایتھیریم بلاک چین استعمال کرنے کے لیے web3.js سیٹ اپ کریں
اس ٹیوٹوریل میں، ہم دیکھیں گے کہ ایتھیریم بلاک چین کے ساتھ تعامل کرنے کے لیے web3.js (opens in a new tab) کے ساتھ کیسے شروعات کی جائے۔ Web3.js کو فرنٹ اینڈز اور بیک اینڈز دونوں میں بلاک چین سے ڈیٹا پڑھنے یا ٹرانزیکشنز کرنے اور یہاں تک کہ اسمارٹ کانٹریکٹس (smart contracts) کو ڈیپلائے کرنے کے لیے استعمال کیا جا سکتا ہے۔
پہلا قدم اپنے پروجیکٹ میں web3.js کو شامل کرنا ہے۔ اسے ویب پیج میں استعمال کرنے کے لیے، آپ JSDeliver جیسے CDN کا استعمال کرتے ہوئے لائبریری کو براہ راست امپورٹ کر سکتے ہیں۔
1<script src="https://cdn.jsdelivr.net/npm/web3@latest/dist/web3.min.js"></script>اگر آپ اپنے بیک اینڈ یا فرنٹ اینڈ پروجیکٹ جو بلڈ (build) استعمال کرتا ہے، میں استعمال کرنے کے لیے لائبریری کو انسٹال کرنے کو ترجیح دیتے ہیں تو آپ اسے npm کا استعمال کرتے ہوئے انسٹال کر سکتے ہیں:
npm install web3 --saveپھر Web3.js کو Node.js اسکرپٹ یا Browserify فرنٹ اینڈ پروجیکٹ میں امپورٹ کرنے کے لیے، آپ جاوا اسکرپٹ کی درج ذیل لائن استعمال کر سکتے ہیں:
1const Web3 = require("web3")اب چونکہ ہم نے پروجیکٹ میں لائبریری شامل کر لی ہے، ہمیں اسے انیشلائز (initialize) کرنے کی ضرورت ہے۔ آپ کے پروجیکٹ کو بلاک چین کے ساتھ بات چیت کرنے کے قابل ہونا چاہیے۔ زیادہ تر ایتھیریم لائبریریاں RPC کالز کے ذریعے ایک نوڈ کے ساتھ بات چیت کرتی ہیں۔ اپنے Web3 پرووائیڈر کو شروع کرنے کے لیے، ہم پرووائیڈر کے URL کو کنسٹرکٹر کے طور پر پاس کرتے ہوئے ایک Web3 انسٹینس (instance) بنائیں گے۔ اگر آپ کے کمپیوٹر پر کوئی نوڈ یا ganache انسٹینس چل رہا ہے (opens in a new tab) تو یہ اس طرح نظر آئے گا:
1const web3 = new Web3("http://localhost:8545")اگر آپ براہ راست کسی ہوسٹڈ نوڈ تک رسائی حاصل کرنا چاہتے ہیں تو آپ نوڈز بطور سروس پر آپشنز تلاش کر سکتے ہیں۔
1const web3 = new Web3("https://cloudflare-eth.com")یہ جانچنے کے لیے کہ آیا ہم نے اپنے Web3 انسٹینس کو درست طریقے سے کنفیگر کیا ہے، ہم getBlockNumber فنکشن کا استعمال کرتے ہوئے تازہ ترین بلاک نمبر بازیافت کرنے کی کوشش کریں گے۔ یہ فنکشن ایک پیرامیٹر کے طور پر کال بیک (callback) کو قبول کرتا ہے اور بلاک نمبر کو ایک انٹیجر (integer) کے طور پر واپس کرتا ہے۔
1var Web3 = require("web3")2const web3 = new Web3("https://cloudflare-eth.com")34web3.eth.getBlockNumber(function (error, result) {5 console.log(result)6})اگر آپ اس پروگرام کو چلاتے ہیں، تو یہ آسانی سے تازہ ترین بلاک نمبر پرنٹ کرے گا: بلاک چین کا سب سے اوپری حصہ۔ آپ اپنے کوڈ میں نیسٹنگ کال بیکس (nesting callbacks) سے بچنے کے لیے await/async فنکشن کالز بھی استعمال کر سکتے ہیں:
1async function getBlockNumber() {2 const latestBlockNumber = await web3.eth.getBlockNumber()3 console.log(latestBlockNumber)4 return latestBlockNumber5}67getBlockNumber()آپ Web3 انسٹینس پر دستیاب تمام فنکشنز کو آفیشل web3.js دستاویزات (opens in a new tab) میں دیکھ سکتے ہیں۔
زیادہ تر Web3 لائبریریاں غیر ہم آہنگ (asynchronous) ہوتی ہیں کیونکہ پس منظر میں لائبریری نوڈ کو JSON-RPC کالز کرتی ہے جو نتیجہ واپس بھیجتا ہے۔
اگر آپ براؤزر میں کام کر رہے ہیں، تو کچھ والیٹس براہ راست ایک Web3 انسٹینس انجیکٹ کرتے ہیں اور آپ کو جب بھی ممکن ہو اسے استعمال کرنے کی کوشش کرنی چاہیے، خاص طور پر اگر آپ ٹرانزیکشنز کرنے کے لیے صارف کے ایتھیریم ایڈریس کے ساتھ تعامل کرنے کا ارادہ رکھتے ہیں۔
یہ جانچنے کے لیے کہ آیا MetaMask والیٹ دستیاب ہے اور اگر ہے تو اسے فعال کرنے کی کوشش کرنے کے لیے اسنیپٹ (snippet) یہ ہے۔ یہ بعد میں آپ کو صارف کا بیلنس پڑھنے کی اجازت دے گا اور انہیں ان ٹرانزیکشنز کی توثیق کرنے کے قابل بنائے گا جو آپ ان سے ایتھیریم بلاک چین پر کروانا چاہتے ہیں:
1if (window.ethereum != null) {2 state.web3 = new Web3(window.ethereum)3 try {4 // اگر ضرورت ہو تو اکاؤنٹ تک رسائی کی درخواست کریں5 await window.ethereum.enable()6 // اکاؤنٹس اب ظاہر ہو چکے ہیں7 } catch (error) {8 // صارف نے اکاؤنٹ تک رسائی سے انکار کر دیا...9 }10}سب دکھائیںweb3.js کے متبادل جیسے Ethers.js (opens in a new tab) موجود ہیں اور عام طور پر استعمال بھی ہوتے ہیں۔ اگلے ٹیوٹوریل میں ہم دیکھیں گے کہ بلاک چین پر آنے والے نئے بلاکس کو آسانی سے کیسے سنا جائے اور دیکھا جائے کہ ان میں کیا ہے (opens in a new tab)۔
صفحہ کی آخری اپ ڈیٹ: 21 اگست، 2025