جاوا اسکرپٹ 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)45// 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"))45// پرووائیڈر تبدیل کریں6web3.setProvider("ws://localhost:8546")7// یا8web3.setProvider(new Web3.providers.WebsocketProvider("ws://localhost:8546"))910// 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)56// ...یا ایک پرائیویٹ کی (private key) سے7walletPrivateKey = new Wallet(walletMnemonic.privateKey)89walletMnemonic.address === walletPrivateKey.address10// true1112// Signer API کے مطابق ایڈریس ایک Promise کے طور پر13walletMnemonic.getAddress()14// { Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' }1516// ایک والیٹ ایڈریس ہم وقت (synchronously) بھی دستیاب ہوتا ہے17walletMnemonic.address18// '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1'1920// اندرونی کرپٹوگرافک (cryptographic) اجزاء21walletMnemonic.privateKey22// '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db'23walletMnemonic.publicKey24// '0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64'2526// والیٹ کا mnemonic (یادداشت)27walletMnemonic.mnemonic28// {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// }3334// نوٹ: پرائیویٹ کی (private key) کے ساتھ بنائے گئے والیٹ میں35// کوئی mnemonic نہیں ہوتا (ڈیریویشن اسے روکتی ہے)36walletPrivateKey.mnemonic37// null3839// ایک پیغام کو سائن کرنا40walletMnemonic.signMessage("Hello World")41// { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' }4243tx = {44 to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72",45 value: utils.parseEther("1.0"),46}4748// ایک ٹرانزیکشن کو سائن کرنا49walletMnemonic.signTransaction(tx)50// { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' }5152// connect میتھڈ ایک نیا انسٹنس (instance) لوٹاتا ہے53// جو ایک پرووائیڈر سے منسلک والیٹ کا ہوتا ہے54wallet = walletMnemonic.connect(provider)5556// نیٹ ورک سے کیوری (query) کرنا57wallet.getBalance()58// { Promise: { BigNumber: "42" } }59wallet.getTransactionCount()60// { Promise: 0 }6162// ایتھر (ether) بھیجنا63wallet.sendTransaction(tx)سب دکھائیںمکمل دستاویزات پڑھیں (opens in a new tab)
ایک بار سیٹ اپ ہونے کے بعد آپ اس قابل ہو جائیں گے:
- اکاؤنٹس بنائیں
- ٹرانزیکشنز بھیجیں
- ٹرانزیکشنز پر دستخط کریں
- اور مزید...
اسمارٹ کانٹریکٹ فنکشنز کے ساتھ تعامل کریں
جاوا اسکرپٹ کلائنٹ لائبریریاں آپ کی ایپلیکیشن کو مرتب شدہ (compiled) کانٹریکٹ کے ایپلیکیشن بائنری انٹرفیس (ABI) کو پڑھ کر اسمارٹ کانٹریکٹ فنکشنز کو کال کرنے کی اجازت دیتی ہیں۔
ABI بنیادی طور پر JSON فارمیٹ میں کانٹریکٹ کے فنکشنز کی وضاحت کرتا ہے اور آپ کو اسے ایک عام جاوا اسکرپٹ آبجیکٹ کی طرح استعمال کرنے کی اجازت دیتا ہے۔
لہذا درج ذیل Solidity کانٹریکٹ:
1contract Test {2 uint a;3 address d = 0x12345678901234567890123456789012;45 constructor(uint testInt) { a = testInt;}67 event Event(uint indexed b, bytes32 c);89 event Event2(uint indexed b, bytes32 c);1011 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":false19 },{20 "type":"event",21 "name":"Event2",22 "inputs":[{"indexed":true,"name":"b","type":"uint256"},{"indexed":false,"name":"c","type":"bytes32"}],23 "anonymous":false24}]سب دکھائیںاس کا مطلب ہے کہ آپ کر سکتے ہیں:
- اسمارٹ کانٹریکٹ کو ٹرانزیکشن بھیجیں اور اس کا طریقہ کار (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" }45// اکثر آپ کو صارف کے لیے آؤٹ پٹ کو فارمیٹ کرنے کی ضرورت ہوگی6// جو wei کے بجائے ایتھر (ether) میں ویلیوز دیکھنا پسند کرتے ہیں7ethers.utils.formatEther(balance)8// '2.337132817842795605'دستیاب لائبریریاں
Web3.js - ایتھیریم جاوا اسکرپٹ API۔
Ethers.js - جاوا اسکرپٹ اور ٹائپ اسکرپٹ میں مکمل ایتھیریم والیٹ کا نفاذ اور یوٹیلیٹیز۔
The Graph - ایتھیریم اور IPFS ڈیٹا کو انڈیکس کرنے اور GraphQL کا استعمال کرتے ہوئے اس سے استفسار کرنے کا ایک پروٹوکول۔
- The Graph (opens in a new tab)
- Graph ایکسپلورر (opens in a new tab)
- دستاویزات (opens in a new tab)
- GitHub (opens in a new tab)
- Discord (opens in a new tab)
Alchemy SDK - بہتر APIs کے ساتھ Ethers.js کے گرد ریپر (Wrapper)۔
viem - ایتھیریم کے لیے ٹائپ اسکرپٹ انٹرفیس۔
Codex - درجنوں چینز پر ریئل ٹائم، افزودہ بلاک چین ڈیٹا API۔
- دستاویزات (opens in a new tab)
- ایکسپلورر (opens in a new tab)
- GitHub (opens in a new tab)
- Discord (opens in a new tab)
Drift - بلٹ ان کیشنگ، ہکس، اور ٹیسٹ موکس کے ساتھ ٹائپ اسکرپٹ میٹا لائبریری۔
مزید مطالعہ
کسی ایسے کمیونٹی وسیلے کے بارے میں جانتے ہیں جس نے آپ کی مدد کی ہو؟ اس صفحے میں ترمیم کریں اور اسے شامل کریں!
متعلقہ موضوعات
متعلقہ ٹیوٹوریلز
- جاوا اسکرپٹ میں ایتھیریم بلاک چین استعمال کرنے کے لیے Web3js سیٹ اپ کریں – اپنے پروجیکٹ میں web3.js سیٹ اپ کرنے کی ہدایات۔
- جاوا اسکرپٹ سے اسمارٹ کانٹریکٹ کو کال کرنا – DAI ٹوکن کا استعمال کرتے ہوئے، دیکھیں کہ جاوا اسکرپٹ کا استعمال کرتے ہوئے کانٹریکٹس فنکشن کو کیسے کال کیا جائے۔
- web3 اور Alchemy کا استعمال کرتے ہوئے ٹرانزیکشنز بھیجنا – بیک اینڈ سے ٹرانزیکشنز بھیجنے کے لیے مرحلہ وار رہنمائی۔
ٹیوٹوریلز: ایتھیریم پر جاوا اسکرپٹ APIs اور WebSockets
- WebSockets کا استعمال – ایتھیریم ایونٹس کو سبسکرائب کرنے اور ریئل ٹائم JSON-RPC درخواستیں کرنے کے لیے Alchemy کے ساتھ WebSockets کا استعمال کیسے کریں۔