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

جاوا اسکرپٹ API لائبریریاں

صفحہ کی آخری اپ ڈیٹ: 25 فروری، 2026

کسی ویب ایپ کو ایتھیریم بلاک چین کے ساتھ تعامل کرنے (یعنی بلاک چین کا ڈیٹا پڑھنے اور/یا نیٹ ورک پر ٹرانزیکشنز بھیجنے) کے لیے، اسے ایک ایتھیریم نوڈ سے منسلک ہونا ضروری ہے۔

اس مقصد کے لیے، ہر ایتھیریم کلائنٹ JSON-RPC کی تخصیص (specification) کو نافذ کرتا ہے، لہذا طریقہ کار (methods) کا ایک یکساں مجموعہ موجود ہے جس پر ایپلیکیشنز انحصار کر سکتی ہیں۔

اگر آپ ایتھیریم نوڈ سے منسلک ہونے کے لیے جاوا اسکرپٹ کا استعمال کرنا چاہتے ہیں، تو وینیلا (vanilla) جاوا اسکرپٹ کا استعمال ممکن ہے لیکن ایکو سسٹم میں کئی سہولت بخش لائبریریاں موجود ہیں جو اسے بہت آسان بنا دیتی ہیں۔ ان لائبریریوں کے ساتھ، ڈیولپرز JSON-RPC درخواستوں کو (پس پردہ) شروع کرنے کے لیے بدیہی، ایک سطری طریقہ کار لکھ سکتے ہیں جو ایتھیریم کے ساتھ تعامل کرتے ہیں۔

براہ کرم نوٹ کریں کہ دی مرج (The Merge) کے بعد سے، ایک نوڈ چلانے کے لیے ایتھیریم سافٹ ویئر کے دو منسلک حصوں - ایک ایگزیکیوشن کلائنٹ اور ایک کنسینسس کلائنٹ - کی ضرورت ہوتی ہے۔ براہ کرم یقینی بنائیں کہ آپ کے نوڈ میں ایگزیکیوشن اور کنسینسس کلائنٹ دونوں شامل ہیں۔ اگر آپ کا نوڈ آپ کی مقامی مشین پر نہیں ہے (مثلاً، آپ کا نوڈ AWS انسٹینس پر چل رہا ہے) تو ٹیوٹوریل میں IP ایڈریسز کو اسی کے مطابق اپ ڈیٹ کریں۔ مزید معلومات کے لیے براہ کرم نوڈ چلانے پر ہمارا صفحہ دیکھیں۔

پیشگی شرائط

جاوا اسکرپٹ کو سمجھنے کے ساتھ ساتھ، ایتھیریم اسٹیک اور ایتھیریم کلائنٹس کو سمجھنا بھی مددگار ثابت ہو سکتا ہے۔

لائبریری کا استعمال کیوں کریں؟

یہ لائبریریاں براہ راست ایتھیریم نوڈ کے ساتھ تعامل کی زیادہ تر پیچیدگی کو دور کر دیتی ہیں۔ یہ یوٹیلیٹی فنکشنز بھی فراہم کرتی ہیں (مثلاً، ETH کو Gwei میں تبدیل کرنا) تاکہ ایک ڈیولپر کے طور پر آپ ایتھیریم کلائنٹس کی پیچیدگیوں سے نمٹنے میں کم وقت صرف کریں اور اپنی ایپلیکیشن کی منفرد فعالیت پر زیادہ توجہ مرکوز کر سکیں۔

لائبریری کی خصوصیات

ایتھیریم نوڈز سے جڑیں

پرووائیڈرز کا استعمال کرتے ہوئے، یہ لائبریریاں آپ کو ایتھیریم سے جڑنے اور اس کا ڈیٹا پڑھنے کی اجازت دیتی ہیں، چاہے وہ JSON-RPC، INFURA، Etherscan، Alchemy یا MetaMask کے ذریعے ہو۔

انتباہ: Web3.js کو ۴ مارچ ۲۰۲۵ کو آرکائیو کر دیا گیا تھا۔ اعلان پڑھیں (opens in a new tab)۔ نئے پروجیکٹس کے لیے متبادل لائبریریوں جیسے ethers.js (opens in a new tab) یا viem (opens in a new tab) کے استعمال پر غور کریں۔

Ethers کی مثال

1// ایک BrowserProvider ایک معیاری Web3 پرووائیڈر کو ریپ (wrap) کرتا ہے، جو کہ
2// وہ ہے جسے MetaMask ہر صفحے میں window.ethereum کے طور پر انجیکٹ (inject) کرتا ہے
3const provider = new ethers.BrowserProvider(window.ethereum)
4
5// MetaMask پلگ ان ٹرانزیکشنز کو سائن کرنے کی بھی اجازت دیتا ہے تاکہ
6// ایتھر (ether) بھیجا جا سکے اور بلاک چین کے اندر اسٹیٹ (state) تبدیل کرنے کے لیے ادائیگی کی جا سکے۔
7// اس کے لیے، ہمیں اکاؤنٹ سائنر (signer) کی ضرورت ہے...
8const signer = provider.getSigner()

Web3js کی مثال

1var web3 = new Web3("http://localhost:8545")
2// یا
3var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"))
4
5// پرووائیڈر تبدیل کریں
6web3.setProvider("ws://localhost:8546")
7// یا
8web3.setProvider(new Web3.providers.WebsocketProvider("ws://localhost:8546"))
9
10// node.js میں IPC پرووائیڈر کا استعمال
11var net = require("net")
12var web3 = new Web3("/Users/myuser/Library/Ethereum/geth.ipc", net) // mac os کا پاتھ
13// یا
14var web3 = new Web3(
15 new Web3.providers.IpcProvider("/Users/myuser/Library/Ethereum/geth.ipc", net)
16) // mac os کا پاتھ
17// ونڈوز پر پاتھ یہ ہے: "\\\\.\\pipe\\geth.ipc"
18// لینکس پر پاتھ یہ ہے: "/users/myuser/.ethereum/geth.ipc"
سب دکھائیں

ایک بار سیٹ اپ ہونے کے بعد آپ بلاک چین سے درج ذیل کے لیے استفسار (query) کر سکیں گے:

  • بلاک نمبرز
  • گیس کے تخمینے
  • اسمارٹ کانٹریکٹ ایونٹس
  • نیٹ ورک آئی ڈی
  • اور مزید...

والیٹ کی فعالیت

یہ لائبریریاں آپ کو والیٹس بنانے، کیز (keys) کا نظم کرنے اور ٹرانزیکشنز پر دستخط کرنے کی فعالیت فراہم کرتی ہیں۔

یہاں Ethers کی ایک مثال ہے

1// ایک یادداشت (mnemonic) سے والیٹ (wallet) کا انسٹنس (instance) بنائیں...
2mnemonic =
3 "announce room limb pattern dry unit scale effort smooth jazz weasel alcohol"
4walletMnemonic = Wallet.fromPhrase(mnemonic)
5
6// ...یا ایک پرائیویٹ کی (private key) سے
7walletPrivateKey = new Wallet(walletMnemonic.privateKey)
8
9walletMnemonic.address === walletPrivateKey.address
10// true
11
12// Signer API کے مطابق ایڈریس ایک Promise کے طور پر
13walletMnemonic.getAddress()
14// { Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' }
15
16// ایک والیٹ ایڈریس ہم وقت (synchronously) بھی دستیاب ہوتا ہے
17walletMnemonic.address
18// '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1'
19
20// اندرونی کرپٹوگرافک (cryptographic) اجزاء
21walletMnemonic.privateKey
22// '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db'
23walletMnemonic.publicKey
24// '0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64'
25
26// والیٹ کا mnemonic (یادداشت)
27walletMnemonic.mnemonic
28// {
29// locale: 'en',
30// path: 'm/44\'/60\'/0\'/0/0',
31// phrase: 'announce room limb pattern dry unit scale effort smooth jazz weasel alcohol'
32// }
33
34// نوٹ: پرائیویٹ کی (private key) کے ساتھ بنائے گئے والیٹ میں
35// کوئی mnemonic نہیں ہوتا (ڈیریویشن اسے روکتی ہے)
36walletPrivateKey.mnemonic
37// null
38
39// ایک پیغام کو سائن کرنا
40walletMnemonic.signMessage("Hello World")
41// { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' }
42
43tx = {
44 to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72",
45 value: utils.parseEther("1.0"),
46}
47
48// ایک ٹرانزیکشن کو سائن کرنا
49walletMnemonic.signTransaction(tx)
50// { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' }
51
52// connect میتھڈ ایک نیا انسٹنس (instance) لوٹاتا ہے
53// جو ایک پرووائیڈر سے منسلک والیٹ کا ہوتا ہے
54wallet = walletMnemonic.connect(provider)
55
56// نیٹ ورک سے کیوری (query) کرنا
57wallet.getBalance()
58// { Promise: { BigNumber: "42" } }
59wallet.getTransactionCount()
60// { Promise: 0 }
61
62// ایتھر (ether) بھیجنا
63wallet.sendTransaction(tx)
سب دکھائیں

مکمل دستاویزات پڑھیں (opens in a new tab)

ایک بار سیٹ اپ ہونے کے بعد آپ اس قابل ہو جائیں گے:

  • اکاؤنٹس بنائیں
  • ٹرانزیکشنز بھیجیں
  • ٹرانزیکشنز پر دستخط کریں
  • اور مزید...

اسمارٹ کانٹریکٹ فنکشنز کے ساتھ تعامل کریں

جاوا اسکرپٹ کلائنٹ لائبریریاں آپ کی ایپلیکیشن کو مرتب شدہ (compiled) کانٹریکٹ کے ایپلیکیشن بائنری انٹرفیس (ABI) کو پڑھ کر اسمارٹ کانٹریکٹ فنکشنز کو کال کرنے کی اجازت دیتی ہیں۔

ABI بنیادی طور پر JSON فارمیٹ میں کانٹریکٹ کے فنکشنز کی وضاحت کرتا ہے اور آپ کو اسے ایک عام جاوا اسکرپٹ آبجیکٹ کی طرح استعمال کرنے کی اجازت دیتا ہے۔

لہذا درج ذیل Solidity کانٹریکٹ:

1contract Test {
2 uint a;
3 address d = 0x12345678901234567890123456789012;
4
5 constructor(uint testInt) { a = testInt;}
6
7 event Event(uint indexed b, bytes32 c);
8
9 event Event2(uint indexed b, bytes32 c);
10
11 function foo(uint b, bytes32 c) returns(address) {
12 Event(b, c);
13 return d;
14 }
15}
سب دکھائیں

کا نتیجہ درج ذیل JSON کی صورت میں نکلے گا:

1[{
2 "type":"constructor",
3 "payable":false,
4 "stateMutability":"nonpayable"
5 "inputs":[{"name":"testInt","type":"uint256"}],
6 },{
7 "type":"function",
8 "name":"foo",
9 "constant":false,
10 "payable":false,
11 "stateMutability":"nonpayable",
12 "inputs":[{"name":"b","type":"uint256"}, {"name":"c","type":"bytes32"}],
13 "outputs":[{"name":"","type":"address"}]
14 },{
15 "type":"event",
16 "name":"Event",
17 "inputs":[{"indexed":true,"name":"b","type":"uint256"}, {"indexed":false,"name":"c","type":"bytes32"}],
18 "anonymous":false
19 },{
20 "type":"event",
21 "name":"Event2",
22 "inputs":[{"indexed":true,"name":"b","type":"uint256"},{"indexed":false,"name":"c","type":"bytes32"}],
23 "anonymous":false
24}]
سب دکھائیں

اس کا مطلب ہے کہ آپ کر سکتے ہیں:

  • اسمارٹ کانٹریکٹ کو ٹرانزیکشن بھیجیں اور اس کا طریقہ کار (method) نافذ کریں
  • EVM میں نافذ ہونے پر کسی طریقہ کار کے نفاذ میں لگنے والی گیس کا تخمینہ لگانے کے لیے کال کریں
  • کانٹریکٹ ڈیپلائے کریں
  • اور مزید...

یوٹیلیٹی فنکشنز

یوٹیلیٹی فنکشنز آپ کو کارآمد شارٹ کٹس دیتے ہیں جو ایتھیریم کے ساتھ تعمیر کو قدرے آسان بناتے ہیں۔

ETH کی قدریں پہلے سے طے شدہ طور پر Wei میں ہوتی ہیں۔ 1 ETH = 1,000,000,000,000,000,000 WEI – اس کا مطلب ہے کہ آپ بہت سارے نمبروں سے نمٹ رہے ہیں! web3.utils.toWei آپ کے لیے ایتھر کو Wei میں تبدیل کرتا ہے۔

اور ethers میں یہ اس طرح لگتا ہے:

1// کسی اکاؤنٹ کا بیلنس حاصل کریں (ایڈریس یا ENS نام کے ذریعے)
2balance = await provider.getBalance("ethers.eth")
3// { BigNumber: "2337132817842795605" }
4
5// اکثر آپ کو صارف کے لیے آؤٹ پٹ کو فارمیٹ کرنے کی ضرورت ہوگی
6// جو wei کے بجائے ایتھر (ether) میں ویلیوز دیکھنا پسند کرتے ہیں
7ethers.utils.formatEther(balance)
8// '2.337132817842795605'

دستیاب لائبریریاں

Web3.js - ایتھیریم جاوا اسکرپٹ API۔

Ethers.js - جاوا اسکرپٹ اور ٹائپ اسکرپٹ میں مکمل ایتھیریم والیٹ کا نفاذ اور یوٹیلیٹیز۔

The Graph - ایتھیریم اور IPFS ڈیٹا کو انڈیکس کرنے اور GraphQL کا استعمال کرتے ہوئے اس سے استفسار کرنے کا ایک پروٹوکول۔

Alchemy SDK - بہتر APIs کے ساتھ Ethers.js کے گرد ریپر (Wrapper)۔

viem - ایتھیریم کے لیے ٹائپ اسکرپٹ انٹرفیس۔

Codex - درجنوں چینز پر ریئل ٹائم، افزودہ بلاک چین ڈیٹا API۔

Drift - بلٹ ان کیشنگ، ہکس، اور ٹیسٹ موکس کے ساتھ ٹائپ اسکرپٹ میٹا لائبریری۔

مزید مطالعہ

کسی ایسے کمیونٹی وسیلے کے بارے میں جانتے ہیں جس نے آپ کی مدد کی ہو؟ اس صفحے میں ترمیم کریں اور اسے شامل کریں!

ٹیوٹوریلز: ایتھیریم پر جاوا اسکرپٹ APIs اور WebSockets

  • WebSockets کا استعمال – ایتھیریم ایونٹس کو سبسکرائب کرنے اور ریئل ٹائم JSON-RPC درخواستیں کرنے کے لیے Alchemy کے ساتھ WebSockets کا استعمال کیسے کریں۔

کیا یہ مضمون مددگار تھا؟