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

ابتدائی افراد کے لیے ہیلو ورلڈ اسمارٹ کانٹریکٹ

Solidity
Hardhat
Alchemy
اسمارٹ کانٹریکٹس
تعیناتی
ابتدائی
elanh
31 مارچ، 2021
15 منٹ کی پڑھائی

اگر آپ بلاک چین ڈیولپمنٹ میں نئے ہیں اور نہیں جانتے کہ کہاں سے شروع کرنا ہے، یا اگر آپ صرف یہ سمجھنا چاہتے ہیں کہ اسمارٹ کانٹریکٹس کو کیسے تعینات کیا جائے اور ان کے ساتھ کیسے تعامل کیا جائے، تو یہ گائیڈ آپ کے لیے ہے۔ ہم ایک ورچوئل والیٹ MetaMask (opens in a new tab)، Solidity (opens in a new tab)، Hardhat (opens in a new tab)، اور Alchemy (opens in a new tab) کا استعمال کرتے ہوئے Sepolia ٹیسٹ نیٹ ورک پر ایک سادہ اسمارٹ کانٹریکٹ بنانے اور تعینات کرنے کے عمل سے گزریں گے (اگر آپ کو ابھی تک ان میں سے کسی کا مطلب سمجھ نہیں آیا تو پریشان نہ ہوں، ہم اس کی وضاحت کریں گے)۔

اس ٹیوٹوریل کے حصہ 2 (opens in a new tab) میں ہم دیکھیں گے کہ ایک بار یہاں تعینات ہونے کے بعد ہم اپنے اسمارٹ کانٹریکٹ کے ساتھ کیسے تعامل کر سکتے ہیں، اور حصہ 3 (opens in a new tab) میں ہم اس بات کا احاطہ کریں گے کہ اسے Etherscan پر کیسے شائع کیا جائے۔

اگر آپ کے کسی بھی موقع پر سوالات ہوں تو بلا جھجھک Alchemy Discord (opens in a new tab) میں رابطہ کریں!

مرحلہ 1: ایتھیریم نیٹ ورک سے جڑیں

ایتھیریم چین پر درخواستیں بھیجنے کے کئی طریقے ہیں۔ سادگی کے لیے، ہم Alchemy پر ایک مفت اکاؤنٹ استعمال کریں گے، جو کہ ایک بلاک چین ڈیولپر پلیٹ فارم اور API ہے جو ہمیں اپنے نوڈز چلائے بغیر ایتھیریم چین کے ساتھ بات چیت کرنے کی اجازت دیتا ہے۔ اس پلیٹ فارم میں نگرانی اور تجزیات کے لیے ڈیولپر ٹولز بھی موجود ہیں جن کا ہم اس ٹیوٹوریل میں فائدہ اٹھائیں گے تاکہ یہ سمجھ سکیں کہ ہمارے اسمارٹ کانٹریکٹ کی تعیناتی کے پس منظر میں کیا ہو رہا ہے۔ اگر آپ کے پاس پہلے سے Alchemy اکاؤنٹ نہیں ہے، تو آپ یہاں مفت سائن اپ کر سکتے ہیں (opens in a new tab)۔

مرحلہ 2: اپنی ایپ (اور API کلید) بنائیں

ایک بار جب آپ Alchemy اکاؤنٹ بنا لیتے ہیں، تو آپ ایک ایپ بنا کر API کلید تیار کر سکتے ہیں۔ یہ ہمیں Sepolia ٹیسٹ نیٹ ورک پر درخواستیں بھیجنے کی اجازت دے گا۔ اگر آپ ٹیسٹ نیٹس سے واقف نہیں ہیں، تو یہ صفحہ دیکھیں۔

  1. اپنے Alchemy ڈیش بورڈ میں نیویگیشن بار میں "Select an app" کو منتخب کر کے اور "Create new app" پر کلک کر کے "Create new app" صفحہ پر جائیں۔

ہیلو ورلڈ ایپ بنائیں

  1. اپنی ایپ کا نام "Hello World" رکھیں، ایک مختصر تفصیل فراہم کریں، اور استعمال کا کیس منتخب کریں، مثلاً، "Infra & Tooling"۔ اس کے بعد، "Ethereum" تلاش کریں اور نیٹ ورک منتخب کریں۔

ایپ ویو ہیلو ورلڈ بنائیں

  1. آگے بڑھنے کے لیے "Next" پر کلک کریں، پھر "Create app" اور بس! آپ کی ایپ نیویگیشن بار کے ڈراپ ڈاؤن مینو میں ظاہر ہونی چاہیے، جس میں کاپی کرنے کے لیے ایک API کلید دستیاب ہوگی۔

مرحلہ 3: ایک ایتھیریم اکاؤنٹ (ایڈریس) بنائیں

ہمیں ٹرانزیکشنز بھیجنے اور وصول کرنے کے لیے ایک ایتھیریم اکاؤنٹ کی ضرورت ہے۔ اس ٹیوٹوریل کے لیے، ہم MetaMask استعمال کریں گے، جو براؤزر میں ایک ورچوئل والیٹ ہے جسے آپ کے ایتھیریم اکاؤنٹ ایڈریس کو منظم کرنے کے لیے استعمال کیا جاتا ہے۔ ٹرانزیکشنز کے بارے میں مزید جانیں۔

آپ MetaMask ڈاؤن لوڈ کر سکتے ہیں اور یہاں (opens in a new tab) مفت میں ایک ایتھیریم اکاؤنٹ بنا سکتے ہیں۔ جب آپ اکاؤنٹ بنا رہے ہوں، یا اگر آپ کے پاس پہلے سے اکاؤنٹ ہے، تو یقینی بنائیں کہ نیٹ ورک ڈراپ ڈاؤن مینو کا استعمال کرتے ہوئے "Sepolia" ٹیسٹ نیٹ ورک پر سوئچ کریں (تاکہ ہم حقیقی رقم کے ساتھ کام نہ کر رہے ہوں)۔

اگر آپ کو Sepolia فہرست میں نظر نہیں آتا، تو مینو میں جائیں، پھر Advanced میں جائیں اور نیچے اسکرول کر کے "Show test networks" کو آن کریں۔ نیٹ ورک کے انتخاب کے مینو میں، ٹیسٹ نیٹس کی فہرست تلاش کرنے کے لیے "Custom" ٹیب کا انتخاب کریں اور "Sepolia" کو منتخب کریں۔

metamask sepolia کی مثال

مرحلہ 4: فاسٹ (faucet) سے ایتھر شامل کریں

اپنے اسمارٹ کانٹریکٹ کو ٹیسٹ نیٹ ورک پر تعینات کرنے کے لیے، ہمیں کچھ نقلی ETH کی ضرورت ہوگی۔ Sepolia ETH حاصل کرنے کے لیے آپ مختلف فاسٹس کی فہرست دیکھنے کے لیے Sepolia نیٹ ورک کی تفصیلات پر جا سکتے ہیں۔ اگر ایک کام نہیں کرتا، تو دوسرا آزمائیں کیونکہ وہ بعض اوقات خالی ہو سکتے ہیں۔ نیٹ ورک ٹریفک کی وجہ سے آپ کو اپنا نقلی ETH وصول کرنے میں کچھ وقت لگ سکتا ہے۔ آپ کو جلد ہی اپنے MetaMask اکاؤنٹ میں ETH نظر آنا چاہیے!

مرحلہ 5: اپنا بیلنس چیک کریں

یہ دوبارہ چیک کرنے کے لیے کہ ہمارا بیلنس موجود ہے، آئیے Alchemy کے کمپوزر ٹول (opens in a new tab) کا استعمال کرتے ہوئے ایک eth_getBalance درخواست کریں۔ یہ ہمارے والیٹ میں موجود ETH کی رقم واپس کرے گا۔ اپنا MetaMask اکاؤنٹ ایڈریس درج کرنے اور "Send Request" پر کلک کرنے کے بعد، آپ کو اس طرح کا جواب نظر آنا چاہیے:

1{ "jsonrpc": "2.0", "id": 0, "result": "0x2B5E3AF16B1880000" }

نوٹ: یہ نتیجہ wei میں ہے نہ کہ ETH میں۔ Wei کو ایتھر کی سب سے چھوٹی اکائی کے طور پر استعمال کیا جاتا ہے۔ wei سے ETH میں تبدیلی یہ ہے: 1 eth = 1018 wei۔ لہذا اگر ہم 0x2B5E3AF16B1880000 کو اعشاریہ میں تبدیل کریں تو ہمیں 5*10¹⁸ ملتا ہے جو 5 ETH کے برابر ہے۔

شکر ہے! ہماری نقلی رقم پوری موجود ہے ۔

مرحلہ 6: ہمارے پروجیکٹ کو شروع کریں

سب سے پہلے، ہمیں اپنے پروجیکٹ کے لیے ایک فولڈر بنانا ہوگا۔ اپنی کمانڈ لائن پر جائیں اور ٹائپ کریں:

1mkdir hello-world
2cd hello-world

اب جب کہ ہم اپنے پروجیکٹ فولڈر کے اندر ہیں، ہم پروجیکٹ کو شروع کرنے کے لیے npm init کا استعمال کریں گے۔ اگر آپ کے پاس پہلے سے npm انسٹال نہیں ہے، تو ان ہدایات (opens in a new tab) پر عمل کریں (ہمیں Node.js کی بھی ضرورت ہوگی لہذا اسے بھی ڈاؤن لوڈ کریں!)۔

1npm init

اس سے کوئی خاص فرق نہیں پڑتا کہ آپ انسٹالیشن کے سوالات کا کیا جواب دیتے ہیں، حوالہ کے لیے ہم نے اسے اس طرح کیا ہے:

1package name: (hello-world)
2version: (1.0.0)
3description: hello world smart contract
4entry point: (index.js)
5test command:
6git repository:
7keywords:
8author:
9license: (ISC)
10About to write to /Users/.../.../.../hello-world/package.json:
11
12{
13 "name": "hello-world",
14 "version": "1.0.0",
15 "description": "hello world smart contract",
16 "main": "index.js",
17 "scripts": {
18 "test": "echo \\"Error: no test specified\\" && exit 1"
19 },
20 "author": "",
21 "license": "ISC"
22}
سب دکھائیں

package.json کو منظور کریں اور ہم تیار ہیں!

مرحلہ 7: Hardhat (opens in a new tab) ڈاؤن لوڈ کریں

Hardhat آپ کے ایتھیریم سافٹ ویئر کو مرتب (compile)، تعینات، ٹیسٹ، اور ڈیبگ کرنے کے لیے ایک ڈیولپمنٹ ماحول ہے۔ یہ لائیو چین پر تعینات کرنے سے پہلے مقامی طور پر اسمارٹ کانٹریکٹس اور dapps بناتے وقت ڈیولپرز کی مدد کرتا ہے۔

ہمارے hello-world پروجیکٹ کے اندر چلائیں:

1npm install --save-dev hardhat

انسٹالیشن کی ہدایات (opens in a new tab) پر مزید تفصیلات کے لیے یہ صفحہ دیکھیں۔

مرحلہ 8: Hardhat پروجیکٹ بنائیں

ہمارے پروجیکٹ فولڈر کے اندر چلائیں:

1npx hardhat

اس کے بعد آپ کو ایک خوش آمدید کا پیغام اور یہ منتخب کرنے کا آپشن نظر آنا چاہیے کہ آپ کیا کرنا چاہتے ہیں۔ "create an empty hardhat.config.js" کو منتخب کریں:

1888 888 888 888 888
2888 888 888 888 888
3888 888 888 888 888
48888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888
5888 888 "88b 888P" d88" 888 888 "88b "88b 888
6888 888 .d888888 888 888 888 888 888 .d888888 888
7888 888 888 888 888 Y88b 888 888 888 888 888 Y88b.
8888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888
9
10👷 Welcome to Hardhat v2.0.11 👷‍?
11
12What do you want to do? …
13Create a sample project
14❯ Create an empty hardhat.config.js
15Quit
سب دکھائیں

یہ ہمارے لیے ایک hardhat.config.js فائل تیار کرے گا جہاں ہم اپنے پروجیکٹ کے لیے تمام سیٹ اپ کی وضاحت کریں گے (مرحلہ 13 پر)۔

مرحلہ 9: پروجیکٹ فولڈرز شامل کریں

اپنے پروجیکٹ کو منظم رکھنے کے لیے ہم دو نئے فولڈرز بنائیں گے۔ اپنی کمانڈ لائن میں اپنے پروجیکٹ کی روٹ ڈائرکٹری پر جائیں اور ٹائپ کریں:

1mkdir contracts
2mkdir scripts
  • contracts/ وہ جگہ ہے جہاں ہم اپنی ہیلو ورلڈ اسمارٹ کانٹریکٹ کوڈ فائل رکھیں گے
  • scripts/ وہ جگہ ہے جہاں ہم اپنے کانٹریکٹ کو تعینات کرنے اور اس کے ساتھ تعامل کرنے کے لیے اسکرپٹس رکھیں گے

مرحلہ 10: اپنا کانٹریکٹ لکھیں

آپ شاید خود سے پوچھ رہے ہوں گے کہ ہم آخر کوڈ کب لکھنے والے ہیں؟؟ خیر، ہم یہاں ہیں، مرحلہ 10 پر۔

اپنے پسندیدہ ایڈیٹر میں hello-world پروجیکٹ کھولیں (ہمیں VSCode (opens in a new tab) پسند ہے)۔ اسمارٹ کانٹریکٹس Solidity نامی زبان میں لکھے جاتے ہیں جسے ہم اپنا HelloWorld.sol اسمارٹ کانٹریکٹ لکھنے کے لیے استعمال کریں گے۔

  1. "contracts" فولڈر میں جائیں اور HelloWorld.sol نامی ایک نئی فائل بنائیں۔
  2. ذیل میں ایتھیریم فاؤنڈیشن کی جانب سے ایک نمونہ ہیلو ورلڈ اسمارٹ کانٹریکٹ ہے جسے ہم اس ٹیوٹوریل کے لیے استعمال کریں گے۔ ذیل کے مواد کو کاپی کر کے اپنی HelloWorld.sol فائل میں پیسٹ کریں، اور یہ سمجھنے کے لیے تبصرے ضرور پڑھیں کہ یہ کانٹریکٹ کیا کرتا ہے:
1// سیمینٹک ورژننگ کا استعمال کرتے ہوئے، سولیڈیٹی (Solidity) کا ورژن متعین کرتا ہے۔
2// مزید جانیں: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma
3pragma solidity ^0.7.0;
4
5// `HelloWorld` کے نام سے ایک کنٹریکٹ کی تعریف کرتا ہے۔
6// کنٹریکٹ فنکشنز اور ڈیٹا (اس کی اسٹیٹ) کا مجموعہ ہوتا ہے۔ ایک بار ڈیپلائے ہونے کے بعد، کنٹریکٹ ایتھیریم بلاک چین پر ایک مخصوص ایڈریس پر موجود ہوتا ہے۔ مزید جانیں: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
7contract HelloWorld {
8
9 // `string` ٹائپ کے ایک اسٹیٹ ویری ایبل `message` کا اعلان کرتا ہے۔
10 // اسٹیٹ ویری ایبلز وہ ویری ایبلز ہوتے ہیں جن کی ویلیوز مستقل طور پر کنٹریکٹ اسٹوریج میں محفوظ ہوتی ہیں۔ `public` کی ورڈ ویری ایبلز کو کنٹریکٹ کے باہر سے قابل رسائی بناتا ہے اور ایک ایسا فنکشن بناتا ہے جسے دوسرے کنٹریکٹس یا کلائنٹس ویلیو تک رسائی کے لیے کال کر سکتے ہیں۔
11 string public message;
12
13 // بہت سی کلاس بیسڈ آبجیکٹ اورینٹڈ زبانوں کی طرح، کنسٹرکٹر ایک خاص فنکشن ہوتا ہے جو صرف کنٹریکٹ بننے پر ہی ایگزیکیوٹ ہوتا ہے۔
14 // کنسٹرکٹرز کا استعمال کنٹریکٹ کے ڈیٹا کو انیشلائز کرنے کے لیے کیا جاتا ہے۔ مزید جانیں: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
15 constructor(string memory initMessage) {
16
17 // ایک سٹرنگ آرگومنٹ `initMessage` قبول کرتا ہے اور اس کی ویلیو کو کنٹریکٹ کے `message` اسٹوریج ویری ایبل میں سیٹ کرتا ہے۔
18 message = initMessage;
19 }
20
21 // ایک پبلک فنکشن جو سٹرنگ آرگومنٹ قبول کرتا ہے اور `message` اسٹوریج ویری ایبل کو اپ ڈیٹ کرتا ہے۔
22 function update(string memory newMessage) public {
23 message = newMessage;
24 }
25}
سب دکھائیں

یہ ایک انتہائی سادہ اسمارٹ کانٹریکٹ ہے جو بننے پر ایک پیغام محفوظ کرتا ہے اور update فنکشن کو کال کر کے اسے اپ ڈیٹ کیا جا سکتا ہے۔

مرحلہ 11: MetaMask اور Alchemy کو اپنے پروجیکٹ سے جوڑیں

ہم نے ایک MetaMask والیٹ، Alchemy اکاؤنٹ بنا لیا ہے، اور اپنا اسمارٹ کانٹریکٹ لکھ لیا ہے، اب وقت آ گیا ہے کہ ان تینوں کو آپس میں جوڑیں۔

آپ کے ورچوئل والیٹ سے بھیجی جانے والی ہر ٹرانزیکشن کے لیے آپ کی منفرد نجی کلید (private key) کا استعمال کرتے ہوئے دستخط کی ضرورت ہوتی ہے۔ ہمارے پروگرام کو یہ اجازت فراہم کرنے کے لیے، ہم اپنی نجی کلید (اور Alchemy API کلید) کو محفوظ طریقے سے ایک انوائرنمنٹ فائل میں اسٹور کر سکتے ہیں۔

ٹرانزیکشنز بھیجنے کے بارے میں مزید جاننے کے لیے، web3 کا استعمال کرتے ہوئے ٹرانزیکشنز بھیجنے پر یہ ٹیوٹوریل دیکھیں۔

سب سے پہلے، اپنی پروجیکٹ ڈائرکٹری میں dotenv پیکیج انسٹال کریں:

1npm install dotenv --save

پھر، ہمارے پروجیکٹ کی روٹ ڈائرکٹری میں ایک .env فائل بنائیں، اور اس میں اپنی MetaMask نجی کلید اور HTTP Alchemy API URL شامل کریں۔

  • اپنی نجی کلید ایکسپورٹ کرنے کے لیے ان ہدایات (opens in a new tab) پر عمل کریں
  • HTTP Alchemy API URL حاصل کرنے کے لیے نیچے دیکھیں

alchemy api کلید حاصل کریں

Alchemy API URL کاپی کریں

آپ کی .env فائل کچھ اس طرح دکھنی چاہیے:

1API_URL = "https://eth-sepolia.g.alchemy.com/v2/your-api-key"
2PRIVATE_KEY = "your-metamask-private-key"

انہیں دراصل اپنے کوڈ سے جوڑنے کے لیے، ہم مرحلہ 13 پر اپنی hardhat.config.js فائل میں ان متغیرات (variables) کا حوالہ دیں گے۔

مرحلہ 12: Ethers.js انسٹال کریں

Ethers.js ایک لائبریری ہے جو معیاری JSON-RPC طریقوں کو زیادہ صارف دوست طریقوں کے ساتھ لپیٹ کر ایتھیریم کے ساتھ تعامل کرنے اور درخواستیں بھیجنے کو آسان بناتی ہے۔

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

اپنی پروجیکٹ ڈائرکٹری میں ٹائپ کریں:

1npm install --save-dev @nomiclabs/hardhat-ethers "ethers@^5.0.0"

ہمیں اگلے مرحلے میں اپنی hardhat.config.js میں بھی ethers کی ضرورت ہوگی۔

مرحلہ 13: hardhat.config.js کو اپ ڈیٹ کریں

ہم نے اب تک کئی انحصار (dependencies) اور پلگ انز شامل کیے ہیں، اب ہمیں hardhat.config.js کو اپ ڈیٹ کرنے کی ضرورت ہے تاکہ ہمارے پروجیکٹ کو ان سب کے بارے میں معلوم ہو۔

اپنی hardhat.config.js کو اپ ڈیٹ کریں تاکہ یہ اس طرح نظر آئے:

1require('dotenv').config();
2
3require("@nomiclabs/hardhat-ethers");
4const { API_URL, PRIVATE_KEY } = process.env;
5
6/**
7* @type import('hardhat/config').HardhatUserConfig
8*/
9module.exports = {
10 solidity: "0.7.3",
11 defaultNetwork: "sepolia",
12 networks: {
13 hardhat: {},
14 sepolia: {
15 url: API_URL,
16 accounts: [`0x${PRIVATE_KEY}`]
17 }
18 },
19}
سب دکھائیں

مرحلہ 14: اپنا کانٹریکٹ مرتب (compile) کریں

یہ یقینی بنانے کے لیے کہ اب تک سب کچھ کام کر رہا ہے، آئیے اپنے کانٹریکٹ کو مرتب کریں۔ compile ٹاسک بلٹ ان hardhat ٹاسکس میں سے ایک ہے۔

کمانڈ لائن سے چلائیں:

1npx hardhat compile

آپ کو SPDX license identifier not provided in source file کے بارے میں ایک انتباہ مل سکتا ہے، لیکن اس کے بارے میں فکر کرنے کی ضرورت نہیں ہے — امید ہے کہ باقی سب کچھ ٹھیک لگ رہا ہوگا! اگر نہیں، تو آپ ہمیشہ Alchemy discord (opens in a new tab) میں پیغام بھیج سکتے ہیں۔

مرحلہ 15: اپنی تعیناتی (deploy) اسکرپٹ لکھیں

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

scripts/ فولڈر میں جائیں اور deploy.js نامی ایک نئی فائل بنائیں، اور اس میں درج ذیل مواد شامل کریں:

1async function main() {
2 const HelloWorld = await ethers.getContractFactory("HelloWorld");
3
4 // Start deployment, returning a promise that resolves to a contract object
5 const hello_world = await HelloWorld.deploy("Hello World!");
6 console.log("Contract deployed to address:", hello_world.address);}
7
8main()
9 .then(() => process.exit(0))
10 .catch(error => {
11 console.error(error);
12 process.exit(1);
13 });
سب دکھائیں

Hardhat اپنے کانٹریکٹس ٹیوٹوریل (opens in a new tab) میں یہ بتانے کا ایک حیرت انگیز کام کرتا ہے کہ کوڈ کی ان میں سے ہر ایک لائن کیا کرتی ہے، ہم نے یہاں ان کی وضاحتوں کو اپنایا ہے۔

1const HelloWorld = await ethers.getContractFactory("HelloWorld");

ethers.js میں ایک ContractFactory ایک تجرید (abstraction) ہے جسے نئے اسمارٹ کانٹریکٹس کو تعینات کرنے کے لیے استعمال کیا جاتا ہے، لہذا یہاں HelloWorld ہمارے ہیلو ورلڈ کانٹریکٹ کی مثالوں (instances) کے لیے ایک فیکٹری ہے۔ hardhat-ethers پلگ ان کا استعمال کرتے وقت ContractFactory اور Contract کی مثالیں پہلے سے طے شدہ طور پر پہلے دستخط کنندہ (signer) سے جڑی ہوتی ہیں۔

1const hello_world = await HelloWorld.deploy();

ContractFactory پر deploy() کو کال کرنے سے تعیناتی شروع ہو جائے گی، اور ایک Promise واپس آئے گا جو ایک Contract میں حل ہوتا ہے۔ یہ وہ آبجیکٹ ہے جس میں ہمارے اسمارٹ کانٹریکٹ کے ہر فنکشن کے لیے ایک طریقہ (method) موجود ہے۔

مرحلہ 16: اپنا کانٹریکٹ تعینات کریں

ہم بالآخر اپنا اسمارٹ کانٹریکٹ تعینات کرنے کے لیے تیار ہیں! کمانڈ لائن پر جائیں اور چلائیں:

1npx hardhat run scripts/deploy.js --network sepolia

اس کے بعد آپ کو کچھ اس طرح نظر آنا چاہیے:

1Contract deployed to address: 0x6cd7d44516a20882cEa2DE9f205bF401c0d23570

اگر ہم Sepolia etherscan (opens in a new tab) پر جائیں اور اپنا کانٹریکٹ ایڈریس تلاش کریں تو ہمیں یہ دیکھنے کے قابل ہونا چاہیے کہ اسے کامیابی کے ساتھ تعینات کر دیا گیا ہے۔ ٹرانزیکشن کچھ اس طرح نظر آئے گی:

etherscan کانٹریکٹ

From ایڈریس آپ کے MetaMask اکاؤنٹ ایڈریس سے مماثل ہونا چاہیے اور To ایڈریس میں "Contract Creation" لکھا ہوگا لیکن اگر ہم ٹرانزیکشن پر کلک کریں تو ہمیں To فیلڈ میں اپنا کانٹریکٹ ایڈریس نظر آئے گا:

etherscan ٹرانزیکشن

مبارک ہو! آپ نے ابھی ایتھیریم چین پر ایک اسمارٹ کانٹریکٹ تعینات کیا ہے 🎉

یہ سمجھنے کے لیے کہ پس منظر میں کیا ہو رہا ہے، آئیے اپنے Alchemy ڈیش بورڈ (opens in a new tab) میں Explorer ٹیب پر جائیں۔ اگر آپ کے پاس متعدد Alchemy ایپس ہیں تو یقینی بنائیں کہ ایپ کے لحاظ سے فلٹر کریں اور "Hello World" کو منتخب کریں۔ ہیلو ورلڈ ایکسپلورر

یہاں آپ کو مٹھی بھر JSON-RPC کالز نظر آئیں گی جو Hardhat/Ethers نے ہمارے لیے پس منظر میں کی تھیں جب ہم نے .deploy() فنکشن کو کال کیا تھا۔ یہاں ذکر کرنے کے لیے دو اہم کالز eth_sendRawTransaction (opens in a new tab) ہیں، جو دراصل ہمارے کانٹریکٹ کو Sepolia چین پر لکھنے کی درخواست ہے، اور eth_getTransactionByHash (opens in a new tab) جو ہیش دیے جانے پر ہماری ٹرانزیکشن کے بارے میں معلومات پڑھنے کی درخواست ہے (ٹرانزیکشنز کے وقت ایک عام پیٹرن)۔ ٹرانزیکشنز بھیجنے کے بارے میں مزید جاننے کے لیے، Web3 کا استعمال کرتے ہوئے ٹرانزیکشنز بھیجنے پر یہ ٹیوٹوریل دیکھیں۔

اس ٹیوٹوریل کے حصہ 1 کے لیے بس اتنا ہی، حصہ 2 میں ہم دراصل اپنا ابتدائی پیغام اپ ڈیٹ کر کے اپنے اسمارٹ کانٹریکٹ کے ساتھ تعامل کریں گے (opens in a new tab)، اور حصہ 3 میں ہم اپنا اسمارٹ کانٹریکٹ Etherscan پر شائع کریں گے (opens in a new tab) تاکہ سب کو معلوم ہو سکے کہ اس کے ساتھ کیسے تعامل کرنا ہے۔

Alchemy کے بارے میں مزید جاننا چاہتے ہیں؟ ہماری ویب سائٹ (opens in a new tab) دیکھیں۔ کبھی کوئی اپ ڈیٹ نہیں چھوڑنا چاہتے؟ یہاں (opens in a new tab) ہمارے نیوز لیٹر کو سبسکرائب کریں! ہمارے Discord (opens in a new tab) میں بھی شامل ہونا یقینی بنائیں۔۔

صفحہ کی آخری اپ ڈیٹ: 5 دسمبر، 2025

کیا یہ ٹیوٹوریل مددگار تھا؟