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

⁦NFT⁩ کیسے لکھیں اور تعینات کریں (⁦NFT⁩ ٹیوٹوریل سیریز کا حصہ ⁦1/3⁩)

ERC-721
Alchemy
Solidity
سمارٹ کنٹریکٹس
ابتدائی
سومی مدگل
۲۲ اپریل، ۲۰۲۱
17 منٹ کا مطالعہ

چونکہ NFTs بلاک چین کو عوام کی نظروں میں لا رہے ہیں، اس لیے اب ایتھیریم بلاک چین پر اپنا NFT کنٹریکٹ (ERC-721 ٹوکن) شائع کر کے خود اس مقبولیت کو سمجھنے کا ایک بہترین موقع ہے!

Alchemy کو NFT کی دنیا کے سب سے بڑے ناموں کو طاقت فراہم کرنے پر بے حد فخر ہے، جن میں Makersplace (جس نے حال ہی میں Christie’s میں $69 Million میں ڈیجیٹل آرٹ ورک کی فروخت کا ریکارڈ قائم کیا)، Dapper Labs (NBA Top Shot اور Crypto Kitties کے تخلیق کار)، اوپن سی (دنیا کی سب سے بڑی NFT مارکیٹ پلیس)، Zora، Super Rare، NFTfi، Foundation، Enjin، Origin Protocol، Immutable، اور دیگر شامل ہیں۔

اس ٹیوٹوریل میں، ہم میٹاماسک (opens in a new tab)، Solidity (opens in a new tab)، Hardhat (opens in a new tab)، Pinata (opens in a new tab) اور Alchemy (opens in a new tab) کا استعمال کرتے ہوئے Sepolia آزمائشی نیٹ ورک پر ایک ERC-721 سمارٹ کنٹریکٹ بنانے اور تعینات کرنے کا طریقہ سیکھیں گے (اگر آپ کو ابھی تک ان میں سے کسی کا مطلب سمجھ نہیں آیا تو پریشان نہ ہوں — ہم اس کی وضاحت کریں گے!)۔

اس ٹیوٹوریل کے حصہ 2 میں ہم دیکھیں گے کہ ہم اپنے سمارٹ کنٹریکٹ کا استعمال کرتے ہوئے ایک NFT کیسے ڈھال سکتے ہیں، اور حصہ 3 میں ہم وضاحت کریں گے کہ میٹاماسک پر اپنا NFT کیسے دیکھیں۔

اور یقیناً، اگر آپ کے ذہن میں کسی بھی وقت کوئی سوال ہو، تو Alchemy ڈسکارڈ (opens in a new tab) میں رابطہ کرنے سے نہ ہچکچائیں یا Alchemy کی NFT API دستاویزات (opens in a new tab) دیکھیں۔

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

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

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

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

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

  1. نیویگیشن بار میں "Apps" پر ہوور کر کے اور "Create App" پر کلک کر کے اپنے Alchemy ڈیش بورڈ میں "Create App" صفحہ پر جائیں۔

Create your app

  1. اپنی ایپ کا نام رکھیں (ہم نے "My First NFT!" کا انتخاب کیا)، ایک مختصر تفصیل فراہم کریں، چین کے لیے "Ethereum" منتخب کریں، اور اپنے نیٹ ورک کے لیے "Sepolia" کا انتخاب کریں۔ دی مرج کے بعد سے دیگر آزمائشی نیٹ ورکس کو متروک کر دیا گیا ہے۔

Configure and publish your app

  1. "Create app" پر کلک کریں اور بس! آپ کی ایپ نیچے دیے گئے ٹیبل میں ظاہر ہونی چاہیے۔

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

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

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

Set Sepolia as your network

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

اپنے سمارٹ کنٹریکٹ کو آزمائشی نیٹ ورک پر تعینات کرنے کے لیے، ہمیں کچھ نقلی ETH کی ضرورت ہوگی۔ ETH حاصل کرنے کے لیے آپ Alchemy کے زیر اہتمام Sepolia فوسٹ (opens in a new tab) پر جا سکتے ہیں، لاگ ان کریں اور اپنے اکاؤنٹ کا پتہ درج کریں، "Send Me ETH" پر کلک کریں۔ آپ کو جلد ہی اپنے میٹاماسک اکاؤنٹ میں ETH نظر آنا چاہیے!

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

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

{"jsonrpc": "2.0", "id": 0, "result": "0xde0b6b3a7640000"}

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

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

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

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

mkdir my-nft cd my-nft

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

npm init

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

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

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

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

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

npm install --save-dev hardhat

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

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

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

npx hardhat

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

888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 8888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888 888 888 "88b 888P" d88" 888 888 "88b "88b 888 888 888 .d888888 888 888 888 888 888 .d888888 888 888 888 888 888 888 Y88b 888 888 888 888 888 Y88b. 888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888 👷 Welcome to Hardhat v2.0.11 👷‍ ? What do you want to do? … Create a sample project ❯ Create an empty hardhat.config.js Quit

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

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

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

mkdir contracts mkdir scripts

  • contracts/ وہ جگہ ہے جہاں ہم اپنا NFT سمارٹ کنٹریکٹ کوڈ رکھیں گے

  • scripts/ وہ جگہ ہے جہاں ہم اپنے سمارٹ کنٹریکٹ کو تعینات کرنے اور اس کے ساتھ بات چیت کرنے کے لیے سکرپٹس رکھیں گے

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

اب چونکہ ہمارا ماحول سیٹ اپ ہو چکا ہے، تو مزید دلچسپ چیزوں کی طرف چلتے ہیں: اپنا سمارٹ کنٹریکٹ کوڈ لکھنا!

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

  1. contracts فولڈر میں جائیں اور MyNFT.sol نامی ایک نئی فائل بنائیں۔

  2. ذیل میں ہمارا NFT سمارٹ کنٹریکٹ کوڈ ہے، جس کی بنیاد ہم نے اوپن زیپلن (opens in a new tab) لائبریری کی ERC-721 عمل درآمد پر رکھی ہے۔ ذیل کے مواد کو کاپی کریں اور اپنی MyNFT.sol فائل میں پیسٹ کریں۔

  3. چونکہ ہم اوپن زیپلن کنٹریکٹس لائبریری سے کلاسز وراثت میں لے رہے ہیں، اس لیے لائبریری کو اپنے فولڈر میں انسٹال کرنے کے لیے اپنی کمانڈ لائن میں npm install @openzeppelin/contracts^4.0.0 چلائیں۔

تو، یہ کوڈ دراصل کرتا کیا ہے؟ آئیے اسے لائن بہ لائن سمجھتے ہیں۔

اپنے سمارٹ کنٹریکٹ کے اوپری حصے میں، ہم تین اوپن زیپلن (opens in a new tab) سمارٹ کنٹریکٹ کلاسز درآمد کرتے ہیں:

  • @openzeppelin/contracts/token/ERC721/ERC721.sol میں ERC-721 معیار کا عمل درآمد شامل ہے، جسے ہمارا NFT سمارٹ کنٹریکٹ وراثت میں لے گا۔ (ایک درست NFT ہونے کے لیے، آپ کے سمارٹ کنٹریکٹ کو ERC-721 معیار کے تمام طریقوں کو نافذ کرنا چاہیے۔) وراثت میں ملے ERC-721 فنکشنز کے بارے میں مزید جاننے کے لیے، انٹرفیس کی تعریف یہاں (opens in a new tab) دیکھیں۔

  • @openzeppelin/contracts/utils/Counters.sol ایسے کاؤنٹرز فراہم کرتا ہے جنہیں صرف ایک سے بڑھایا یا کم کیا جا سکتا ہے۔ ہمارا سمارٹ کنٹریکٹ ڈھالے گئے NFTs کی کل تعداد کا ٹریک رکھنے اور ہمارے نئے NFT پر منفرد ID سیٹ کرنے کے لیے ایک کاؤنٹر استعمال کرتا ہے۔ (سمارٹ کنٹریکٹ کا استعمال کرتے ہوئے ڈھالے گئے ہر NFT کو ایک منفرد ID تفویض کی جانی چاہیے—یہاں ہماری منفرد ID کا تعین صرف موجودہ NFTs کی کل تعداد سے ہوتا ہے۔ مثال کے طور پر، ہم اپنے سمارٹ کنٹریکٹ کے ساتھ جو پہلا NFT ڈھالتے ہیں اس کی ID "1" ہے، ہمارے دوسرے NFT کی ID "2" ہے، وغیرہ۔)

  • @openzeppelin/contracts/access/Ownable.sol ہمارے سمارٹ کنٹریکٹ پر ایکسیس کنٹرول (opens in a new tab) سیٹ کرتا ہے، تاکہ صرف سمارٹ کنٹریکٹ کا مالک (آپ) ہی NFTs ڈھال سکے۔ (نوٹ، ایکسیس کنٹرول شامل کرنا مکمل طور پر ایک ترجیح ہے۔ اگر آپ چاہتے ہیں کہ کوئی بھی آپ کے سمارٹ کنٹریکٹ کا استعمال کرتے ہوئے NFT ڈھال سکے، تو لائن 10 پر لفظ Ownable اور لائن 17 پر onlyOwner کو ہٹا دیں۔)

ہماری امپورٹ سٹیٹمنٹس کے بعد، ہمارے پاس اپنا کسٹم NFT سمارٹ کنٹریکٹ ہے، جو حیرت انگیز طور پر مختصر ہے — اس میں صرف ایک کاؤنٹر، ایک کنسٹرکٹر، اور ایک ہی فنکشن شامل ہے! یہ ہمارے وراثت میں ملے اوپن زیپلن کنٹریکٹس کی بدولت ہے، جو ان زیادہ تر طریقوں کو نافذ کرتے ہیں جن کی ہمیں NFT بنانے کے لیے ضرورت ہوتی ہے، جیسے کہ ownerOf جو NFT کا مالک واپس کرتا ہے، اور transferFrom، جو NFT کی ملکیت ایک اکاؤنٹ سے دوسرے اکاؤنٹ میں منتقل کرتا ہے۔

ہمارے ERC-721 کنسٹرکٹر میں، آپ دیکھیں گے کہ ہم 2 سٹرنگز، "MyNFT" اور "NFT" پاس کرتے ہیں۔ پہلا متغیر سمارٹ کنٹریکٹ کا نام ہے، اور دوسرا اس کی علامت ہے۔ آپ ان میں سے ہر ایک متغیر کا جو چاہیں نام رکھ سکتے ہیں!

آخر میں، ہمارے پاس اپنا فنکشن mintNFT(address recipient, string memory tokenURI) ہے جو ہمیں ایک NFT ڈھالنے کی اجازت دیتا ہے! آپ دیکھیں گے کہ یہ فنکشن دو متغیرات لیتا ہے:

  • address recipient اس پتے کی وضاحت کرتا ہے جو آپ کا تازہ ڈھالا ہوا NFT وصول کرے گا

  • string memory tokenURI ایک سٹرنگ ہے جسے ایک JSON دستاویز پر حل ہونا چاہیے جو NFT کے میٹا ڈیٹا کو بیان کرتی ہے۔ ایک NFT کا میٹا ڈیٹا ہی دراصل اسے زندہ کرتا ہے، جس سے اس میں قابل ترتیب خصوصیات، جیسے کہ نام، تفصیل، تصویر، اور دیگر اوصاف شامل ہو سکتے ہیں۔ اس ٹیوٹوریل کے حصہ 2 میں، ہم بیان کریں گے کہ اس میٹا ڈیٹا کو کیسے ترتیب دیا جائے۔

mintNFT وراثت میں ملی ERC-721 لائبریری سے کچھ طریقوں کو کال کرتا ہے، اور بالآخر ایک نمبر واپس کرتا ہے جو تازہ ڈھالے گئے NFT کی ID کی نمائندگی کرتا ہے۔

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

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

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

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

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

npm install dotenv --save

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

  • میٹاماسک سے اپنی نجی کلید ایکسپورٹ کرنے کے لیے ان ہدایات (opens in a new tab) پر عمل کریں

  • HTTP Alchemy API URL حاصل کرنے کے لیے نیچے دیکھیں اور اسے اپنے کلپ بورڈ پر کاپی کریں

Copy your Alchemy API URL

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

API_URL="https://eth-sepolia.g.alchemy.com/v2/your-api-key (opens in a new tab)" PRIVATE_KEY="your-metamask-private-key"

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

.env⁩ کو کمٹ نہ کریں! براہ کرم یقینی بنائیں کہ اپنی ⁦.env⁩ فائل کو کبھی کسی کے ساتھ شیئر یا ظاہر نہ کریں، کیونکہ ایسا کرنے سے آپ اپنے رازوں کو خطرے میں ڈال رہے ہیں۔ اگر آپ ورژن کنٹرول استعمال کر رہے ہیں، تو اپنی ⁦.env⁩ کو ⁦gitignore⁩ (opens in a new tab) فائل میں شامل کریں۔

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

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

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

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

npm 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 کو اس طرح دکھنے کے لیے اپ ڈیٹ کریں:

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

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

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

npx hardhat compile

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

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

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

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

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

const MyNFT = await ethers.getContractFactory("MyNFT");

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

const myNFT = await MyNFT.deploy();

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

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

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

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

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

Contract deployed to address: 0x4C5266cCc4b3F426965d2f51b6D910325a0E7650

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

View your transaction address on Etherscan

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

View your contract address on Etherscan

زبردست! آپ نے ابھی اپنا NFT سمارٹ کنٹریکٹ ایتھیریم (آزمائشی نیٹ ورک) چین پر تعینات کر دیا ہے!

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

View calls made “under the hood” with Alchemy’s Explorer Dashboard

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

اس ٹیوٹوریل کے حصہ 1 کے لیے بس اتنا ہی۔ حصہ 2 میں، ہم دراصل ایک NFT ڈھال کر اپنے سمارٹ کنٹریکٹ کے ساتھ بات چیت کریں گے، اور حصہ 3 میں ہم آپ کو دکھائیں گے کہ اپنے ایتھیریم والیٹ میں اپنا NFT کیسے دیکھیں!