مرکزی مواد پر جائیں

⁦JavaScript⁩ میں ایتھیریم بلاک چین استعمال کرنے کے لیے ⁦web3.js⁩ سیٹ اپ کریں

web3.js
javascript
ابتدائی
jdourlens
۱۱ اپریل، ۲۰۲۰
4 منٹ کا مطالعہ

اس ٹیوٹوریل میں، ہم دیکھیں گے کہ ایتھیریم بلاک چین کے ساتھ تعامل کرنے کے لیے 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

پھر Web3.js کو Node.js سکرپٹ یا Browserify فرنٹ اینڈ پروجیکٹ میں امپورٹ کرنے کے لیے، آپ JavaScript کی درج ذیل لائن استعمال کر سکتے ہیں:

const Web3 = require("web3")

اب جب کہ ہم نے پروجیکٹ میں لائبریری شامل کر لی ہے، ہمیں اسے شروع (initialize) کرنے کی ضرورت ہے۔ آپ کے پروجیکٹ کو بلاک چین کے ساتھ بات چیت کرنے کے قابل ہونا چاہیے۔ زیادہ تر ایتھیریم لائبریریاں RPC کالز کے ذریعے ایک نوڈ کے ساتھ بات چیت کرتی ہیں۔ اپنے Web3 پرووائیڈر کو شروع کرنے کے لیے، ہم پرووائیڈر کے URL کو کنسٹرکٹر کے طور پر پاس کرتے ہوئے ایک Web3 انسٹینس (instance) بنائیں گے۔ اگر آپ کے کمپیوٹر پر کوئی نوڈ یا 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)
})

اگر آپ اس پروگرام کو چلاتے ہیں، تو یہ آسانی سے تازہ ترین بلاک نمبر پرنٹ کرے گا: بلاک چین کا سب سے اوپری حصہ۔ آپ اپنے کوڈ میں نیسٹنگ کال بیکس (nesting callbacks) سے بچنے کے لیے 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) ہوتی ہیں کیونکہ پس منظر میں لائبریری نوڈ کو جے سن آر پی سی (JSON-RPC) کالز کرتی ہے جو نتیجہ واپس بھیجتا ہے۔


اگر آپ براؤزر میں کام کر رہے ہیں، تو کچھ والیٹس براہ راست ایک Web3 انسٹینس انجیکٹ کرتے ہیں اور آپ کو جب بھی ممکن ہو اسے استعمال کرنے کی کوشش کرنی چاہیے خاص طور پر اگر آپ ٹرانزیکشنز کرنے کے لیے صارف کے ایتھیریم پتہ کے ساتھ تعامل کرنے کا ارادہ رکھتے ہیں۔

یہ معلوم کرنے کے لیے کہ آیا میٹاماسک والیٹ دستیاب ہے اور اگر ہے تو اسے فعال کرنے کی کوشش کرنے کے لیے یہاں ایک اسنیپٹ (snippet) ہے۔ یہ بعد میں آپ کو صارف کا بیلنس پڑھنے کی اجازت دے گا اور انہیں ان ٹرانزیکشنز کی توثیق کرنے کے قابل بنائے گا جو آپ ان سے ایتھیریم بلاک چین پر کروانا چاہتے ہیں:

web3.js کے متبادل جیسے Ethers.js (opens in a new tab) موجود ہیں اور عام طور پر استعمال بھی ہوتے ہیں۔ اگلے ٹیوٹوریل میں ہم دیکھیں گے کہ بلاک چین پر آنے والے نئے بلاکس کو آسانی سے کیسے سنا جائے اور دیکھا جائے کہ ان میں کیا ہے (opens in a new tab)۔