---
title: "⁦JavaScript⁩ میں ایتھیریم بلاک چین استعمال کرنے کے لیے ⁦web3.js⁩ سیٹ اپ کریں"
description: "جانیں کہ ⁦JavaScript⁩ ایپلیکیشنز سے ایتھیریم بلاک چین کے ساتھ تعامل کرنے کے لیے ⁦web3.js⁩ لائبریری کو کیسے سیٹ اپ اور کنفیگر کیا جائے۔"
author: "jdourlens"
tags:
  - "web3.js"
  - "javascript"
skill: beginner
breadcrumb: "⁦web3.js⁩ سیٹ اپ"
lang: ur
published: 2020-04-11
source: EthereumDev
sourceUrl: https://ethereumdev.io/setup-web3js-to-use-the-ethereum-blockchain-in-javascript/
address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
---

اس ٹیوٹوریل میں، ہم دیکھیں گے کہ ایتھیریم بلاک چین کے ساتھ تعامل کرنے کے لیے [<span dir="ltr">web3.js</span>](https://web3js.readthedocs.io/) کے ساتھ کیسے شروعات کی جائے۔ <span dir="ltr">Web3.js</span> کو فرنٹ اینڈز اور بیک اینڈز دونوں میں بلاک چین سے ڈیٹا پڑھنے یا ٹرانزیکشنز کرنے اور یہاں تک کہ سمارٹ کانٹریکٹس تعینات کرنے کے لیے استعمال کیا جا سکتا ہے۔

پہلا قدم اپنے پروجیکٹ میں <span dir="ltr">web3.js</span> کو شامل کرنا ہے۔ اسے ویب پیج میں استعمال کرنے کے لیے، آپ <span dir="ltr">JSDeliver</span> جیسے <span dir="ltr">CDN</span> کا استعمال کرتے ہوئے براہ راست لائبریری امپورٹ کر سکتے ہیں۔

```html
<script src="https://cdn.jsdelivr.net/npm/web3@latest/dist/web3.min.js"></script>
```

اگر آپ اپنے بیک اینڈ یا فرنٹ اینڈ پروجیکٹ میں استعمال کرنے کے لیے لائبریری انسٹال کرنے کو ترجیح دیتے ہیں جو بلڈ استعمال کرتا ہے تو آپ اسے <span dir="ltr">npm</span> کا استعمال کرتے ہوئے انسٹال کر سکتے ہیں:

```bash
npm install web3 --save
```

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

```js
const Web3 = require("web3")
```

اب جب کہ ہم نے پروجیکٹ میں لائبریری شامل کر لی ہے، ہمیں اسے شروع (initialize) کرنے کی ضرورت ہے۔ آپ کے پروجیکٹ کو بلاک چین کے ساتھ بات چیت کرنے کے قابل ہونا چاہیے۔ زیادہ تر ایتھیریم لائبریریاں <span dir="ltr">RPC</span> کالز کے ذریعے ایک [نوڈ](/developers/docs/nodes-and-clients/) کے ساتھ بات چیت کرتی ہیں۔ اپنے <span dir="ltr">Web3</span> پرووائیڈر کو شروع کرنے کے لیے، ہم پرووائیڈر کے <span dir="ltr">URL</span> کو کنسٹرکٹر کے طور پر پاس کرتے ہوئے ایک <span dir="ltr">Web3</span> انسٹینس (instance) بنائیں گے۔ اگر آپ کے کمپیوٹر پر کوئی نوڈ یا [<span dir="ltr">ganache</span> انسٹینس چل رہا ہے](https://ethereumdev.io/testing-your-smart-contract-with-existing-protocols-ganache-fork/) تو یہ اس طرح نظر آئے گا:

```js
const web3 = new Web3("http://localhost:8545")
```

اگر آپ براہ راست کسی ہوسٹڈ نوڈ تک رسائی حاصل کرنا چاہتے ہیں تو آپ [نوڈز بطور سروس](/developers/docs/nodes-and-clients/nodes-as-a-service) پر آپشنز تلاش کر سکتے ہیں۔

```js
const web3 = new Web3("https://cloudflare-eth.com")
```

یہ جانچنے کے لیے کہ ہم نے اپنے <span dir="ltr">Web3</span> انسٹینس کو درست طریقے سے کنفیگر کیا ہے، ہم `getBlockNumber` فنکشن کا استعمال کرتے ہوئے تازہ ترین بلاک نمبر بازیافت کرنے کی کوشش کریں گے۔ یہ فنکشن ایک کال بیک کو پیرامیٹر کے طور پر قبول کرتا ہے اور بلاک نمبر کو ایک انٹیجر (integer) کے طور پر واپس کرتا ہے۔

```js
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` فنکشن کالز بھی استعمال کر سکتے ہیں:

```js
async function getBlockNumber() {
  const latestBlockNumber = await web3.eth.getBlockNumber()
  console.log(latestBlockNumber)
  return latestBlockNumber
}

getBlockNumber()
```

آپ <span dir="ltr">Web3</span> انسٹینس پر دستیاب تمام فنکشنز [آفیشل <span dir="ltr">web3.js</span> دستاویزات](https://docs.web3js.org/) میں دیکھ سکتے ہیں۔

زیادہ تر <span dir="ltr">Web3</span> لائبریریاں غیر مطابقت پذیر (asynchronous) ہوتی ہیں کیونکہ پس منظر میں لائبریری نوڈ کو جے سن آر پی سی (<span dir="ltr">JSON-RPC</span>) کالز کرتی ہے جو نتیجہ واپس بھیجتا ہے۔

<Divider />

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

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

```js
if (window.ethereum != null) {
  state.web3 = new Web3(window.ethereum)
  try {
    // اگر ضرورت ہو تو اکاؤنٹ تک رسائی کی درخواست کریں
    await window.ethereum.enable()
    // اکاؤنٹس اب ظاہر ہو گئے ہیں
  } catch (error) {
    // صارف نے اکاؤنٹ تک رسائی سے انکار کر دیا...
  }
}
```

<span dir="ltr">web3.js</span> کے متبادل جیسے [<span dir="ltr">Ethers.js</span>](https://docs.ethers.io/) موجود ہیں اور عام طور پر استعمال بھی ہوتے ہیں۔ اگلے ٹیوٹوریل میں ہم دیکھیں گے کہ [بلاک چین پر آنے والے نئے بلاکس کو آسانی سے کیسے سنا جائے اور دیکھا جائے کہ ان میں کیا ہے](https://ethereumdev.io/listening-to-new-transactions-happening-on-the-blockchain/)۔