Web3 کا استعمال کرتے ہوئے لین دین بھیجنا
یہ Web3 کا استعمال کرتے ہوئے Ethereum لین دین بھیجنے کے لیے ایک ابتدائی دوستانہ گائیڈ ہے۔ Ethereum بلاک چین پر لین دین بھیجنے کے لیے تین اہم مراحل ہیں: تخلیق کریں، دستخط کریں، اور براڈکاسٹ کریں۔ ہم ان تینوں پر عمل کریں گے، امید ہے کہ آپ کے تمام سوالوں کے جواب مل جائیں گے! اس ٹیوٹوریل میں، ہم اپنے لین دین کو Ethereum چین پر بھیجنے کے لیے Alchemy (opens in a new tab) کا استعمال کریں گے۔ آپ یہاں ایک مفت Alchemy اکاؤنٹ بنا سکتے ہیں (opens in a new tab)۔
نوٹ: یہ گائیڈ آپ کی ایپ کے لیے بیک اینڈ پر آپ کے لین دین پر دستخط کرنے کے لیے ہے۔ اگر آپ فرنٹ اینڈ پر اپنے لین دین پر دستخط کو مربوط کرنا چاہتے ہیں، تو براؤزر فراہم کنندہ کے ساتھ Web3 کو مربوط کرنے (opens in a new tab) کی جانچ کریں۔
بنیادی باتیں
زیادہ تر بلاک چین ڈویلپرز کی طرح جب وہ پہلی بار شروع کرتے ہیں، تو ہو سکتا ہے کہ آپ نے لین دین بھیجنے کے طریقے پر کچھ تحقیق کی ہو (ایسی چیز جو بہت آسان ہونی چاہیے) اور بہت سارے گائیڈز کا سامنا کیا ہو، ہر ایک مختلف باتیں کہہ رہا ہو اور آپ کو تھوڑا مغلوب اور الجھن میں ڈال دیا ہو۔ اگر آپ بھی اسی حال میں ہیں، تو فکر نہ کریں؛ ہم سب کبھی نہ کبھی اس حال میں تھے! تو، شروع کرنے سے پہلے، آئیے کچھ چیزوں کو سیدھا کر لیں:
1. Alchemy آپ کی نجی کلیدوں کو ذخیرہ نہیں کرتا ہے
- اس کا مطلب ہے کہ Alchemy آپ کی طرف سے لین دین پر دستخط اور بھیج نہیں سکتا ہے۔ اس کی وجہ سیکورٹی کے مقاصد ہیں۔ Alchemy کبھی بھی آپ سے اپنی نجی کلید شیئر کرنے کے لیے نہیں کہے گا، اور آپ کو کبھی بھی اپنی نجی کلید کسی میزبان نوڈ (یا اس معاملے میں کسی کے ساتھ) شیئر نہیں کرنی چاہیے۔
- آپ Alchemy کے کور API کا استعمال کرتے ہوئے بلاک چین سے پڑھ سکتے ہیں، لیکن اس پر لکھنے کے لیے آپ کو Alchemy کے ذریعے بھیجنے سے پہلے اپنے لین دین پر دستخط کرنے کے لیے کچھ اور استعمال کرنے کی ضرورت ہوگی (یہ کسی بھی دوسرے نوڈ سروس کے لیے بھی ایسا ہی ہے)۔
2. ایک “دستخط کنندہ” کیا ہے؟
- دستخط کنندگان آپ کے لیے آپ کی نجی کلید کا استعمال کرتے ہوئے لین دین پر دستخط کریں گے۔ اس ٹیوٹوریل میں ہم اپنے لین دین پر دستخط کرنے کے لیے Alchemy web3 (opens in a new tab) کا استعمال کریں گے، لیکن آپ کوئی دوسری web3 لائبریری بھی استعمال کر سکتے ہیں۔
- فرنٹ اینڈ پر، دستخط کنندہ کی ایک اچھی مثال MetaMask (opens in a new tab) ہوگی، جو آپ کی طرف سے لین دین پر دستخط اور بھیجے گا۔
3. مجھے اپنے لین دین پر دستخط کرنے کی ضرورت کیوں ہے؟
- ہر وہ صارف جو Ethereum نیٹ ورک پر لین دین بھیجنا چاہتا ہے اسے لین دین پر دستخط کرنا ہوگا (اپنی نجی کلید کا استعمال کرتے ہوئے)، تاکہ یہ تصدیق کی جا سکے کہ لین دین کا ماخذ وہی ہے جس کا وہ دعویٰ کرتا ہے۔
- اس نجی کلید کی حفاظت کرنا بہت ضروری ہے، کیونکہ اس تک رسائی آپ کے Ethereum اکاؤنٹ پر مکمل کنٹرول فراہم کرتی ہے، جس سے آپ (یا رسائی رکھنے والے کسی بھی شخص) کو آپ کی طرف سے لین دین کرنے کی اجازت ملتی ہے۔
4. میں اپنی نجی کلید کی حفاظت کیسے کروں؟
- اپنی نجی کلید کی حفاظت کرنے اور اسے لین دین بھیجنے کے لیے استعمال کرنے کے بہت سے طریقے ہیں۔ اس ٹیوٹوریل میں ہم ایک
.envفائل کا استعمال کریں گے۔ تاہم، آپ ایک علیحدہ فراہم کنندہ بھی استعمال کر سکتے ہیں جو نجی کلیدوں کو ذخیرہ کرتا ہے، ایک کیسٹور فائل، یا دیگر اختیارات استعمال کر سکتے ہیں۔
5. eth_sendTransaction اور eth_sendRawTransaction کے درمیان کیا فرق ہے؟
eth_sendTransaction اور eth_sendRawTransaction دونوں Ethereum API فنکشنز ہیں جو Ethereum نیٹ ورک پر لین دین کو براڈکاسٹ کرتے ہیں تاکہ اسے مستقبل کے بلاک میں شامل کیا جا سکے۔ وہ لین دین پر دستخط کو سنبھالنے کے طریقے میں مختلف ہیں۔
eth_sendTransaction(opens in a new tab) کا استعمال بغیر دستخط شدہ لین دین بھیجنے کے لیے کیا جاتا ہے، جس کا مطلب ہے کہ جس نوڈ پر آپ بھیج رہے ہیں اسے آپ کی نجی کلید کا انتظام کرنا چاہیے تاکہ وہ اسے چین پر براڈکاسٹ کرنے سے پہلے لین دین پر دستخط کر سکے۔ چونکہ Alchemy صارف کی نجی کلیدوں کو نہیں رکھتا ہے، اس لیے وہ اس طریقے کی حمایت نہیں کرتے ہیں۔eth_sendRawTransaction(opens in a new tab) کا استعمال ان لین دین کو براڈکاسٹ کرنے کے لیے کیا جاتا ہے جن پر پہلے ہی دستخط ہو چکے ہیں۔ اس کا مطلب ہے کہ آپ کو پہلےsignTransaction(tx, private_key)(opens in a new tab) کا استعمال کرنا ہوگا، پھر نتیجہ کوeth_sendRawTransactionمیں پاس کرنا ہوگا۔
web3 کا استعمال کرتے وقت، eth_sendRawTransaction کو فنکشن web3.eth.sendSignedTransaction (opens in a new tab) کو کال کرکے رسائی حاصل کی جاتی ہے۔
اس ٹیوٹوریل میں ہم یہی استعمال کریں گے۔
6. web3 لائبریری کیا ہے؟
- Web3.js معیاری JSON-RPC کالز کے ارد گرد ایک ریپر لائبریری ہے جو Ethereum کی ڈیولپمنٹ میں استعمال کرنا کافی عام ہے۔
- مختلف زبانوں کے لیے بہت سی web3 لائبریریاں ہیں۔ اس ٹیوٹوریل میں ہم Alchemy Web3 (opens in a new tab) کا استعمال کریں گے جو JavaScript میں لکھی گئی ہے۔ آپ یہاں (opens in a new tab) دیگر اختیارات جیسے ethers.js (opens in a new tab) دیکھ سکتے ہیں۔
ٹھیک ہے، اب جب کہ ہم نے ان میں سے کچھ سوالات کو راستے سے ہٹا دیا ہے، آئیے ٹیوٹوریل کی طرف بڑھتے ہیں۔ Alchemy discord (opens in a new tab) میں کسی بھی وقت سوالات پوچھنے کے لیے آزاد محسوس کریں!
7. محفوظ، گیس-آپٹمائزڈ، اور نجی لین دین کیسے بھیجیں؟
- Alchemy کے پاس Transact APIs کا ایک مجموعہ ہے (opens in a new tab)۔ آپ ان کا استعمال مضبوط لین دین بھیجنے، لین دین ہونے سے پہلے ان کی تقلید کرنے، نجی لین دین بھیجنے، اور گیس-آپٹمائزڈ لین دین بھیجنے کے لیے کر سکتے ہیں۔
- آپ Notify API (opens in a new tab) کا استعمال بھی کر سکتے ہیں تاکہ آپ کو مطلع کیا جا سکے جب آپ کا لین دین میمپول سے کھینچ کر چین میں شامل کیا جائے۔
نوٹ: اس گائیڈ کے لیے Alchemy اکاؤنٹ، ایک Ethereum ایڈریس یا MetaMask والیٹ، NodeJs، اور npm انسٹال ہونا ضروری ہے۔ اگر نہیں، تو ان اقدامات پر عمل کریں:
- ایک مفت Alchemy اکاؤنٹ بنائیں (opens in a new tab)
- MetaMask اکاؤنٹ بنائیں (opens in a new tab) (یا ایک Ethereum ایڈریس حاصل کریں)
- NodeJs اور NPM انسٹال کرنے کے لیے ان اقدامات پر عمل کریں (opens in a new tab)
اپنا لین دین بھیجنے کے اقدامات
1. Sepolia ٹیسٹ نیٹ پر ایک Alchemy ایپ بنائیں
اپنے Alchemy ڈیش بورڈ (opens in a new tab) پر جائیں اور ایک نئی ایپ بنائیں، اپنے نیٹ ورک کے لیے Sepolia (یا کوئی دوسرا ٹیسٹ نیٹ) کا انتخاب کریں۔
2. Sepolia فاسیٹ سے ETH کی درخواست کریں
ETH حاصل کرنے کے لیے Alchemy Sepolia فاسیٹ (opens in a new tab) پر دی گئی ہدایات پر عمل کریں۔ یقینی بنائیں کہ آپ اپنا Sepolia Ethereum ایڈریس (MetaMask سے) شامل کریں اور کوئی دوسرا نیٹ ورک نہیں۔ ہدایات پر عمل کرنے کے بعد، دوبارہ چیک کریں کہ آپ نے اپنے والیٹ میں ETH وصول کر لیا ہے۔
3. ایک نئی پراجیکٹ ڈائرکٹری بنائیں اور اس میں cd کریں
کمانڈ لائن (macs کے لیے ٹرمینل) سے ایک نئی پراجیکٹ ڈائرکٹری بنائیں اور اس میں نیویگیٹ کریں:
1mkdir sendtx-example2cd sendtx-example4. Alchemy Web3 (یا کوئی بھی web3 لائبریری) انسٹال کریں
Alchemy Web3 (opens in a new tab) انسٹال کرنے کے لیے اپنی پراجیکٹ ڈائرکٹری میں درج ذیل کمانڈ چلائیں:
نوٹ، اگر آپ ethers.js لائبریری استعمال کرنا چاہتے ہیں، تو یہاں دی گئی ہدایات پر عمل کریں (opens in a new tab)۔
1npm install @alch/alchemy-web35. dotenv انسٹال کریں
ہم اپنی API کلید اور نجی کلید کو محفوظ طریقے سے ذخیرہ کرنے کے لیے ایک .env فائل استعمال کریں گے۔
1npm install dotenv --save6. .env فائل بنائیں
اپنی پراجیکٹ ڈائرکٹری میں ایک .env فائل بنائیں اور درج ذیل شامل کریں (“your-api-url" اور "your-private-key" کو تبدیل کرتے ہوئے)
- اپنا Alchemy API URL تلاش کرنے کے لیے، اپنے ڈیش بورڈ پر ابھی بنائی گئی ایپ کے ایپ تفصیلات کے صفحے پر جائیں، اوپر دائیں کونے میں “View Key” پر کلک کریں، اور HTTP URL حاصل کریں۔
- MetaMask کا استعمال کرتے ہوئے اپنی نجی کلید تلاش کرنے کے لیے، یہ گائیڈ (opens in a new tab) دیکھیں۔
1API_URL = "your-api-url"2PRIVATE_KEY = "your-private-key".env کو کمٹ نہ کریں! براہ کرم یقینی بنائیں کہ آپ اپنی .env فائل کسی کے ساتھ شیئر یا ظاہر نہ کریں، کیونکہ ایسا کرنے سے آپ اپنے رازوں پر سمجھوتہ کر رہے ہیں۔ اگر آپ ورژن کنٹرول استعمال کر رہے ہیں، تو اپنی .env کو gitignore فائل میں شامل کریں۔7. sendTx.js فائل بنائیں
بہت اچھا، اب جب کہ ہمارا حساس ڈیٹا ایک .env فائل میں محفوظ ہے، آئیے کوڈنگ شروع کرتے ہیں۔ ہمارے بھیجنے والے لین دین کی مثال کے لیے، ہم ETH کو Sepolia فاسیٹ پر واپس بھیجیں گے۔
ایک sendTx.js فائل بنائیں، جہاں ہم اپنے مثال کے لین دین کو کنفیگر اور بھیجیں گے، اور اس میں کوڈ کی درج ذیل لائنیں شامل کریں:
1async function main() {2 require('dotenv').config();3 const { API_URL, PRIVATE_KEY } = process.env;4 const { createAlchemyWeb3 } = require("@alch/alchemy-web3");5 const web3 = createAlchemyWeb3(API_URL);6 const myAddress = '0x610Ae88399fc1687FA7530Aac28eC2539c7d6d63' //TODO: replace this address with your own public address78 const nonce = await web3.eth.getTransactionCount(myAddress, 'latest'); // nonce starts counting from 0910 const transaction = {11 'to': '0x31B98D14007bDEe637298086988A0bBd31184523', // faucet address to return eth12 'value': 1000000000000000000, // 1 ETH13 'gas': 30000,14 'nonce': nonce,15 // optional data field to send message or execute smart contract16 };1718 const signedTx = await web3.eth.accounts.signTransaction(transaction, PRIVATE_KEY);1920 web3.eth.sendSignedTransaction(signedTx.rawTransaction, function(error, hash) {21 if (!error) {22 console.log("🎉 The hash of your transaction is: ", hash, "\n Check Alchemy's Mempool to view the status of your transaction!");23 } else {24 console.log("❗Something went wrong while submitting your transaction:", error)25 }26 });27}2829main();سب دکھائیںیقینی بنائیں کہ آپ لائن 6 پر موجود ایڈریس کو اپنے عوامی ایڈریس سے تبدیل کریں۔
اب، اس کوڈ کو چلانے سے پہلے، آئیے یہاں کچھ اجزاء کے بارے میں بات کرتے ہیں۔
nonce: نونس کی تفصیلات کا استعمال آپ کے ایڈریس سے بھیجے گئے لین دین کی تعداد پر نظر رکھنے کے لیے کیا جاتا ہے۔ ہمیں اس کی ضرورت سیکورٹی کے مقاصد اور ری پلے حملوں (opens in a new tab) کو روکنے کے لیے ہے۔ اپنے ایڈریس سے بھیجے گئے لین دین کی تعداد حاصل کرنے کے لیے ہم getTransactionCount (opens in a new tab) کا استعمال کرتے ہیں۔transaction: لین دین کی آبجیکٹ کے کچھ پہلو ہیں جن کی ہمیں وضاحت کرنے کی ضرورت ہے۔to: یہ وہ ایڈریس ہے جس پر ہم ETH بھیجنا چاہتے ہیں۔ اس معاملے میں، ہم ETH کو Sepolia فاسیٹ (opens in a new tab) پر واپس بھیج رہے ہیں جس سے ہم نے ابتدائی طور پر درخواست کی تھی۔value: یہ وہ رقم ہے جسے ہم بھیجنا چاہتے ہیں، جو Wei میں بیان کی گئی ہے جہاں 10^18 Wei = 1 ETHgas: اپنے لین دین میں شامل کرنے کے لیے گیس کی صحیح مقدار کا تعین کرنے کے بہت سے طریقے ہیں۔ Alchemy کے پاس ایک گیس پرائس ویب ہک (opens in a new tab) بھی ہے جو آپ کو مطلع کرتا ہے جب گیس کی قیمت ایک خاص حد کے اندر آ جاتی ہے۔ Mainnet لین دین کے لیے، گیس کی صحیح مقدار کا تعین کرنے کے لیے ETH Gas Station (opens in a new tab) جیسے گیس ایسٹیمیٹر کو چیک کرنا ایک اچھا عمل ہے۔ 21000 گیس کی کم از کم مقدار ہے جو Ethereum پر ایک آپریشن استعمال کرے گا، لہذا اس بات کو یقینی بنانے کے لیے کہ ہمارا لین دین انجام دیا جائے گا ہم یہاں 30000 ڈالتے ہیں۔nonce: اوپر نونس کی تعریف دیکھیں۔ نونس صفر سے گننا شروع کرتا ہے۔- [اختیاری] ڈیٹا: آپ کی منتقلی کے ساتھ اضافی معلومات بھیجنے، یا اسمارٹ کنٹریکٹ کو کال کرنے کے لیے استعمال کیا جاتا ہے، بیلنس کی منتقلی کے لیے ضروری نہیں، نیچے دیا گیا نوٹ دیکھیں۔
signedTx: اپنے لین دین کی آبجیکٹ پر دستخط کرنے کے لیے ہمPRIVATE_KEYکے ساتھsignTransactionطریقہ استعمال کریں گے۔sendSignedTransaction: ایک بار جب ہمارے پاس دستخط شدہ لین دین ہو جاتا ہے، تو ہم اسےsendSignedTransactionکا استعمال کرتے ہوئے بعد کے بلاک میں شامل کرنے کے لیے بھیج سکتے ہیں۔
ڈیٹا پر ایک نوٹ Ethereum میں دو اہم قسم کے لین دین بھیجے جا سکتے ہیں۔
- بیلنس کی منتقلی: ایک ایڈریس سے دوسرے ایڈریس پر ETH بھیجیں۔ کوئی ڈیٹا فیلڈ درکار نہیں، تاہم، اگر آپ اپنے لین دین کے ساتھ اضافی معلومات بھیجنا چاہتے ہیں، تو آپ اس فیلڈ میں HEX فارمیٹ میں وہ معلومات شامل کر سکتے ہیں۔
- مثال کے طور پر، فرض کریں کہ ہم ایک IPFS دستاویز کا ہیش Ethereum چین پر لکھنا چاہتے ہیں تاکہ اسے ایک ناقابل تغیر ٹائم اسٹیمپ دیا جا سکے۔ ہمارا ڈیٹا فیلڈ پھر اس طرح نظر آنا چاہئے:
web3.utils.toHex('IPFS ہیش')۔ اور اب کوئی بھی چین سے استفسار کر سکتا ہے اور دیکھ سکتا ہے کہ وہ دستاویز کب شامل کی گئی تھی۔
- مثال کے طور پر، فرض کریں کہ ہم ایک IPFS دستاویز کا ہیش Ethereum چین پر لکھنا چاہتے ہیں تاکہ اسے ایک ناقابل تغیر ٹائم اسٹیمپ دیا جا سکے۔ ہمارا ڈیٹا فیلڈ پھر اس طرح نظر آنا چاہئے:
- اسمارٹ کنٹریکٹ لین دین: چین پر کچھ اسمارٹ کنٹریکٹ کوڈ پر عمل کریں۔ اس معاملے میں، ڈیٹا فیلڈ میں وہ اسمارٹ فنکشن ہونا چاہئے جسے آپ کسی بھی پیرامیٹرز کے ساتھ عمل کرنا چاہتے ہیں۔
- ایک عملی مثال کے لیے، اس ہیلو ورلڈ ٹیوٹوریل (opens in a new tab) میں مرحلہ 8 دیکھیں۔
8. node sendTx.js کا استعمال کرتے ہوئے کوڈ چلائیں
اپنے ٹرمینل یا کمانڈ لائن پر واپس جائیں اور چلائیں:
1node sendTx.js9. Mempool میں اپنا لین دین دیکھیں
اپنے Alchemy ڈیش بورڈ میں Mempool صفحہ (opens in a new tab) کھولیں اور اپنا لین دین تلاش کرنے کے لیے بنائی گئی ایپ کے ذریعے فلٹر کریں۔ یہ وہ جگہ ہے جہاں ہم اپنے لین دین کی منتقلی کو زیر التواء حالت سے مائنڈ حالت (اگر کامیاب ہو) یا غیر کامیاب ہونے پر ڈراپڈ حالت میں دیکھ سکتے ہیں۔ یقینی بنائیں کہ اسے "All" پر رکھیں تاکہ آپ "mined"، "pending"، اور "dropped" لین دین کو کیپچر کر سکیں۔ آپ ایڈریس 0x31b98d14007bdee637298086988a0bbd31184523 پر بھیجے گئے لین دین کو تلاش کرکے بھی اپنا لین دین تلاش کر سکتے ہیں۔
ایک بار جب آپ اسے تلاش کر لیں تو اپنے لین دین کی تفصیلات دیکھنے کے لیے، tx ہیش کو منتخب کریں، جو آپ کو اس طرح کے منظر پر لے جائے گا:
وہاں سے آپ سرخ رنگ میں دائرے والے آئیکن پر کلک کرکے Etherscan پر اپنا لین دین دیکھ سکتے ہیں!
یپییییی! آپ نے ابھی Alchemy کا استعمال کرتے ہوئے اپنا پہلا Ethereum لین دین بھیجا ہے 🎉**
اس گائیڈ کے بارے میں رائے اور تجاویز کے لیے، براہ کرم Alchemy's Discord (opens in a new tab) پر Elan کو پیغام دیں!
اصل میں https://docs.alchemyapi.io/tutorials/sending-transactions-using-web3-and-alchemy (opens in a new tab) پر شائع ہوا
صفحہ کی آخری تازہ کاری: 18 دسمبر، 2025
