मुख्य सामग्री पर जाएँ

एनएफटी को कैसे लिखें और डिप्लॉय करें (एनएफटी ट्यूटोरियल श्रृंखला का भाग 1/3)

ERC-721
Alchemy
Solidity
स्मार्ट अनुबंध
शुरआती
सुमी मुद्गिल
22 अप्रैल 2021
16 मिनट का पठन

चूंकि एनएफटीज़ ब्लॉकचेन को सार्वजनिक नज़र में ला रहे हैं, अब एथेरियम ब्लॉकचेन पर अपना खुद का एनएफटी अनुबंध (ERC-721 टोकन) प्रकाशित करके इस प्रचार को स्वयं समझने का एक उत्कृष्ट अवसर है!

अल्केमी को एनएफटी क्षेत्र में सबसे बड़े नामों को सशक्त बनाने पर बेहद गर्व है, जिसमें Makersplace (जिसने हाल ही में क्रिस्टी में $69 मिलियन में एक रिकॉर्ड डिजिटल कलाकृति की बिक्री की), Dapper Labs (NBA टॉप शॉट और Crypto Kitties के निर्माता), ओपनसी (दुनिया का सबसे बड़ा एनएफटी मार्केटप्लेस), Zora, Super Rare, NFTfi, Foundation, Enjin, Origin Protocol, Immutable, और भी बहुत कुछ शामिल हैं।

इस ट्यूटोरियल में, हम मेटामास्क (opens in a new tab), सॉलिडिटी (opens in a new tab), हार्डहैट (opens in a new tab), पिनाटा (opens in a new tab) और अल्केमी (opens in a new tab) का उपयोग करके सेपोलिया टेस्टनेट पर ERC-721 स्मार्ट अनुबंध बनाने और डिप्लॉय करने के बारे में जानेंगे (अगर आप अभी तक नहीं समझ पा रहे हैं कि इसका क्या मतलब है तो चिंता न करें — हम इसे समझाएंगे!)।

इस ट्यूटोरियल के भाग 2 में हम यह जानेंगे कि हम एनएफटी को मिंट करने के लिए अपने स्मार्ट अनुबंध का उपयोग कैसे कर सकते हैं, और भाग 3 में हम बताएंगे कि मेटामास्क पर अपना एनएफटी कैसे देखें।

और हां, अगर आपके किसी भी समय कोई प्रश्न हैं, तो अल्केमी डिस्कॉर्ड (opens in a new tab) में संपर्क करने या अल्केमी's एनएफटी API docs (opens in a new tab) पर जाने में संकोच न करें!

चरण 1: एथेरियम नेटवर्क से जुड़ें

एथेरियम ब्लॉकचेन से अनुरोध करने के कई तरीके हैं, लेकिन चीजों को आसान बनाने के लिए, हम अल्केमी (opens in a new tab) पर एक मुफ्त खाते का उपयोग करेंगे, जो एक ब्लॉकचेन डेवलपर प्लेटफॉर्म और API है जो हमें अपने स्वयं के नोड चलाए बिना एथेरियम चेन के साथ संवाद करने की अनुमति देता है।

इस ट्यूटोरियल में, हम अपने स्मार्ट अनुबंध की तैनाती में पर्दे के पीछे क्या हो रहा है, यह समझने के लिए निगरानी और विश्लेषण के लिए अल्केमी के डेवलपर टूल का भी लाभ उठाएंगे। यदि आपके पास पहले से अल्केमी खाता नहीं है, तो आप यहां (opens in a new tab) मुफ्त में साइन अप कर सकते हैं।

चरण 2: अपना ऐप (और API कुंजी) बनाएं

एक बार जब आप एक अल्केमी खाता बना लेते हैं, तो आप एक ऐप बनाकर एक API कुंजी उत्पन्न कर सकते हैं। यह हमें सेपोलिया टेस्टनेट से अनुरोध करने की अनुमति देगा। यदि आप टेस्टनेट के बारे में अधिक जानने के लिए उत्सुक हैं तो इस गाइड (opens in a new tab) को देखें।

  1. अपने अल्केमी डैशबोर्ड में "Create App" पेज पर जाने के लिए, नेव बार में "Apps" पर होवर करें और "Create App" पर क्लिक करें।

अपना ऐप बनाएं

  1. अपने ऐप को नाम दें (हमने "My First एनएफटी!" चुना), एक संक्षिप्त विवरण दें, चेन के लिए "एथेरियम" चुनें, और अपने नेटवर्क के लिए "सेपोलिया" चुनें। मर्ज के बाद से अन्य टेस्टनेट को बंद कर दिया गया है।

अपने ऐप को कॉन्फ़िगर और प्रकाशित करें

  1. “Create app” पर क्लिक करें और बस हो गया! आपका ऐप नीचे दी गई तालिका में दिखाई देना चाहिए।

चरण 3: एक एथेरियम खाता (पता) बनाएं

हमें लेनदेन भेजने और प्राप्त करने के लिए एक एथेरियम खाते की आवश्यकता है। इस ट्यूटोरियल के लिए, हम मेटामास्क का उपयोग करेंगे, जो ब्राउज़र में एक वर्चुअल वॉलेट है जिसका उपयोग आपके एथेरियम खाते के पते को प्रबंधित करने के लिए किया जाता है। यदि आप यह समझना चाहते हैं कि एथेरियम पर लेनदेन कैसे काम करते हैं, तो एथेरियम फाउंडेशन से यह पेज देखें।

आप यहां (opens in a new tab) मुफ्त में मेटामास्क खाता डाउनलोड और बना सकते हैं। जब आप एक खाता बना रहे हों, या यदि आपके पास पहले से ही एक खाता है, तो सुनिश्चित करें कि आप ऊपर दाईं ओर "सेपोलिया Test Network" पर स्विच कर लें (ताकि हम असली पैसे से काम न कर रहे हों)।

सेपोलिया को अपने नेटवर्क के रूप में सेट करें

चरण 4: एक फोसेट से ईथर जोड़ें

हमारे स्मार्ट अनुबंध को टेस्टनेट पर डिप्लॉय करने के लिए, हमें कुछ नकली ETH की आवश्यकता होगी। ETH प्राप्त करने के लिए आप अल्केमी द्वारा होस्ट किए गए सेपोलिया Faucet (opens in a new tab) पर जा सकते हैं, लॉग इन करें और अपने खाते का पता दर्ज करें, “Send Me ETH” पर क्लिक करें। इसके तुरंत बाद आपको अपने मेटामास्क खाते में ETH दिखना चाहिए!

चरण 5: अपनी शेष राशि की जांच करें

यह दोबारा जांचने के लिए कि हमारी शेष राशि है, आइए अल्केमी's composer tool (opens in a new tab) का उपयोग करके एक eth_getBalance (opens in a new tab) अनुरोध करें। यह हमारे वॉलेट में ETH की राशि वापस कर देगा। जब आप अपना मेटामास्क खाता पता इनपुट करते हैं और "Send Request" पर क्लिक करते हैं, तो आपको इस तरह का एक जवाब देखना चाहिए:

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

ध्यान दें यह परिणाम wei में है, ETH में नहीं। Wei का उपयोग ईथर के सबसे छोटे मूल्यवर्ग के रूप में किया जाता है। wei से ETH में रूपांतरण 1 ETH = 1018 wei है। इसलिए यदि हम 0xde0b6b3a7640000 को दशमलव में बदलते हैं तो हमें 1*1018 wei मिलता है, जो 1 ETH के बराबर है।

उफ्फ! हमारे नकली पैसे पूरे हैं।

चरण 6: हमारे प्रोजेक्ट को इनिशियलाइज़ करें

सबसे पहले, हमें अपने प्रोजेक्ट के लिए एक फ़ोल्डर बनाना होगा। अपने कमांड लाइन पर नेविगेट करें और टाइप करें:

1mkdir my-nft
2cd my-nft

अब जब हम अपने प्रोजेक्ट फ़ोल्डर के अंदर हैं, तो हम प्रोजेक्ट को इनिशियलाइज़ करने के लिए npm init का उपयोग करेंगे। यदि आपके पास पहले से npm इंस्टॉल नहीं है, तो इन निर्देशों (opens in a new tab) का पालन करें (हमें नोड.जेएस (opens in a new tab) की भी आवश्यकता होगी, इसलिए उसे भी डाउनलोड करें!)।

1npm init

यह वास्तव में मायने नहीं रखता कि आप इंस्टॉलेशन प्रश्नों का उत्तर कैसे देते हैं; यहां संदर्भ के लिए हमने इसे कैसे किया है:

1 पैकेज का नाम: (my-nft)
2 संस्करण: (1.0.0)
3 विवरण: मेरा पहला NFT!
4 प्रविष्टि बिंदु: (index.js)
5 टेस्ट कमांड:
6 git रिपॉजिटरी:
7 कीवर्ड:
8 लेखक:
9 लाइसेंस: (ISC)
10 /Users/thesuperb1/Desktop/my-nft/package.json पर लिखने वाला है:
11
12 {
13 "name": "my-nft",
14 "version": "1.0.0",
15 "description": "मेरा पहला NFT!",
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: हार्डहैट (opens in a new tab) इंस्टॉल करें

हार्डहैट आपके एथेरियम सॉफ्टवेयर को कंपाइल, डिप्लॉय, टेस्ट और डीबग करने के लिए एक डेवलपमेंट वातावरण है। यह डेवलपर्स को लाइव चेन पर डिप्लॉय करने से पहले स्थानीय रूप से स्मार्ट अनुबंध और डैप्स बनाने में मदद करता है।

हमारे my-nft प्रोजेक्ट के अंदर चलाएं:

1npm install --save-dev hardhat

इंस्टॉलेशन निर्देशों (opens in a new tab) पर अधिक जानकारी के लिए यह पेज देखें।

चरण 8: हार्डहैट प्रोजेक्ट बनाएं

हमारे प्रोजेक्ट फ़ोल्डर के अंदर चलाएं:

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👷 हार्डहैट v2.0.11 में आपका स्वागत है 👷‍
10? आप क्या करना चाहते हैं? …
11एक सैंपल प्रोजेक्ट बनाएं
12❯ एक खाली hardhat.config.js बनाएं
13छोड़ें

यह हमारे लिए एक hardhat.config.js फ़ाइल उत्पन्न करेगा जहां हम अपने प्रोजेक्ट के लिए सभी सेट अप निर्दिष्ट करेंगे (चरण 13 पर)।

चरण 9: प्रोजेक्ट फ़ोल्डर जोड़ें

अपने प्रोजेक्ट को व्यवस्थित रखने के लिए, हम दो नए फ़ोल्डर बनाएंगे। अपने कमांड लाइन में अपने प्रोजेक्ट की रूट डायरेक्टरी पर नेविगेट करें और टाइप करें:

1mkdir contracts
2mkdir scripts
  • contracts/ वह जगह है जहाँ हम अपना एनएफटी स्मार्ट अनुबंध कोड रखेंगे

  • scripts/ वह जगह है जहाँ हम अपने स्मार्ट अनुबंध को डिप्लॉय करने और उसके साथ इंटरैक्ट करने के लिए स्क्रिप्ट रखेंगे

चरण 10: हमारा अनुबंध लिखें

अब जब हमारा वातावरण सेट हो गया है, तो और भी रोमांचक चीजों पर आते हैं: हमारा स्मार्ट अनुबंध कोड लिखना!

my-nft प्रोजेक्ट को अपने पसंदीदा एडिटर में खोलें (हमें वीएसकोड (opens in a new tab) पसंद है)। स्मार्ट अनुबंध सॉलिडिटी नामक भाषा में लिखे जाते हैं जिसका उपयोग हम अपने MyNFT.sol स्मार्ट अनुबंध को लिखने के लिए करेंगे।‌

  1. contracts फ़ोल्डर में नेविगेट करें और MyNFT.sol नामक एक नई फ़ाइल बनाएं

  2. नीचे हमारा एनएफटी स्मार्ट अनुबंध कोड है, जिसे हमने ओपनज़ेपेलिन (opens in a new tab) लाइब्रेरी के ERC-721 कार्यान्वयन पर आधारित किया है। नीचे दी गई सामग्री को अपनी MyNFT.sol फ़ाइल में कॉपी और पेस्ट करें।

    1//अनुबंध [https://docs.openzeppelin.com/contracts/3.x/erc721](https://docs.openzeppelin.com/contracts/3.x/erc721) पर आधारित है
    2// SPDX-License-Identifier: MIT
    3pragma solidity ^0.8.0;
    4
    5import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
    6import "@openzeppelin/contracts/utils/Counters.sol";
    7import "@openzeppelin/contracts/access/Ownable.sol";
    8import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
    9
    10contract MyNFT is ERC721URIStorage, Ownable {
    11 using Counters for Counters.Counter;
    12 Counters.Counter private _tokenIds;
    13
    14 constructor() ERC721("MyNFT", "एनएफटी") {}
    15
    16 function mintNFT(address recipient, string memory tokenURI)
    17 public onlyOwner
    18 returns (uint256)
    19 {
    20 _tokenIds.increment();
    21
    22 uint256 newItemId = _tokenIds.current();
    23 _mint(recipient, newItemId);
    24 _setTokenURI(newItemId, tokenURI);
    25
    26 return newItemId;
    27 }
    28}
  3. चूंकि हम ओपनज़ेपेलिन अनुबंध लाइब्रेरी से क्लास को इनहेरिट कर रहे हैं, इसलिए अपने कमांड लाइन में लाइब्रेरी को हमारे फ़ोल्डर में इंस्टॉल करने के लिए npm install @openzeppelin/contracts^4.0.0 चलाएं।

तो, यह कोड वास्तव में क्या करता है? आइए इसे पंक्ति-दर-पंक्ति समझते हैं।

हमारे स्मार्ट अनुबंध के शीर्ष पर, हम तीन ओपनज़ेपेलिन (opens in a new tab) स्मार्ट अनुबंध क्लास को इम्पोर्ट करते हैं:

  • @openzeppelin/contracts/token/ERC721/ERC721.sol में ERC-721 मानक का कार्यान्वयन है, जिसे हमारा एनएफटी स्मार्ट अनुबंध इनहेरिट करेगा। (एक मान्य एनएफटी होने के लिए, आपके स्मार्ट अनुबंध को ERC-721 मानक के सभी तरीकों को लागू करना होगा।) इनहेरिट किए गए ERC-721 फ़ंक्शंस के बारे में अधिक जानने के लिए, यहां (opens in a new tab) इंटरफ़ेस परिभाषा देखें।

  • @openzeppelin/contracts/utils/Counters.sol काउंटर प्रदान करता है जिन्हें केवल एक-एक करके बढ़ाया या घटाया जा सकता है। हमारा स्मार्ट अनुबंध मिंट किए गए एनएफटीज़ की कुल संख्या पर नज़र रखने और हमारे नए एनएफटी पर अद्वितीय ID सेट करने के लिए एक काउंटर का उपयोग करता है। (स्मार्ट अनुबंध का उपयोग करके मिंट किए गए प्रत्येक एनएफटी को एक अद्वितीय ID दी जानी चाहिए—यहां हमारी अद्वितीय ID केवल अस्तित्व में मौजूद एनएफटीज़ की कुल संख्या से निर्धारित होती है। उदाहरण के लिए, हमारे स्मार्ट अनुबंध के साथ मिंट किए गए पहले एनएफटी की ID "1" है, हमारे दूसरे एनएफटी की ID "2" है, आदि।)

  • @openzeppelin/contracts/access/Ownable.sol हमारे स्मार्ट अनुबंध पर एक्सेस कंट्रोल (opens in a new tab) सेट करता है, इसलिए केवल स्मार्ट अनुबंध का मालिक (आप) ही एनएफटीज़ को मिंट कर सकता है। (ध्यान दें, एक्सेस कंट्रोल को शामिल करना पूरी तरह से एक प्राथमिकता है। यदि आप चाहते हैं कि कोई भी आपके स्मार्ट अनुबंध का उपयोग करके एनएफटी मिंट कर सके, तो लाइन 10 पर Ownable शब्द और लाइन 17 पर onlyOwner को हटा दें।)

हमारे इम्पोर्ट स्टेटमेंट के बाद, हमारे पास हमारा कस्टम एनएफटी स्मार्ट अनुबंध है, जो आश्चर्यजनक रूप से छोटा है - इसमें केवल एक काउंटर, एक कंस्ट्रक्टर और सिंगल फंक्शन है! यह हमारे इनहेरिटेड ओपनज़ेपेलिन अनुबंधों के कारण है, जो एनएफटी बनाने के लिए आवश्यक अधिकांश तरीकों को लागू करते हैं, जैसे कि ownerOf जो एनएफटी के मालिक को लौटाता है, और transferFrom, जो एनएफटी के स्वामित्व को एक खाते से दूसरे में स्थानांतरित करता है।

हमारे ERC-721 कंस्ट्रक्टर में, आप देखेंगे कि हम 2 स्ट्रिंग्स, “MyNFT” और “एनएफटी” पास करते हैं। पहला चर स्मार्ट अनुबंध का नाम है, और दूसरा इसका प्रतीक है। आप इनमें से प्रत्येक चर का नाम जो चाहें रख सकते हैं!

अंत में, हमारे पास हमारा फ़ंक्शन mintNFT(address recipient, string memory tokenURI) है जो हमें एक एनएफटी मिंट करने की अनुमति देता है! आप देखेंगे कि यह फ़ंक्शन दो चरों में लेता है:

  • address recipient उस पते को निर्दिष्ट करता है जिसे आपका ताज़ा मिंट किया गया एनएफटी प्राप्त होगा

  • string memory tokenURI एक स्ट्रिंग है जिसे एक JSON दस्तावेज़ में हल किया जाना चाहिए जो एनएफटी के मेटाडेटा का वर्णन करता है। एक एनएफटी का मेटाडेटा वास्तव में वही है जो इसे जीवंत करता है, जिससे इसमें नाम, विवरण, छवि और अन्य विशेषताओं जैसे विन्यास योग्य गुण हो सकते हैं। इस ट्यूटोरियल के भाग 2 में, हम इस मेटाडेटा को कॉन्फ़िगर करने का वर्णन करेंगे।

mintNFT इनहेरिटेड ERC-721 लाइब्रेरी से कुछ तरीकों को कॉल करता है, और अंततः एक संख्या लौटाता है जो ताज़ा मिंट किए गए एनएफटी की ID का प्रतिनिधित्व करती है।

चरण 11: मेटामास्क और अल्केमी को अपने प्रोजेक्ट से कनेक्ट करें

अब जब हमने एक मेटामास्क वॉलेट, अल्केमी खाता बना लिया है, और अपना स्मार्ट अनुबंध लिख लिया है, तो तीनों को जोड़ने का समय आ गया है।

आपके वर्चुअल वॉलेट से भेजे गए प्रत्येक लेनदेन के लिए आपकी अद्वितीय निजी कुंजी का उपयोग करके एक हस्ताक्षर की आवश्यकता होती है। हमारे प्रोग्राम को यह अनुमति प्रदान करने के लिए, हम अपनी निजी कुंजी (और अल्केमी API कुंजी) को एक पर्यावरण फ़ाइल में सुरक्षित रूप से संग्रहीत कर सकते हैं।

लेनदेन भेजने के बारे में अधिक जानने के लिए, web3 का उपयोग करके लेनदेन भेजने पर यह ट्यूटोरियल देखें।

सबसे पहले, अपने प्रोजेक्ट डायरेक्टरी में dotenv पैकेज इंस्टॉल करें:

1npm install dotenv --save

फिर, हमारे प्रोजेक्ट की रूट डायरेक्टरी में एक .env फ़ाइल बनाएं, और इसमें अपनी मेटामास्क निजी कुंजी और HTTP अल्केमी API URL जोड़ें।

  • मेटामास्क से अपनी निजी कुंजी एक्सपोर्ट करने के लिए इन निर्देशों (opens in a new tab) का पालन करें

  • HTTP अल्केमी API URL प्राप्त करने के लिए नीचे देखें और इसे अपने क्लिपबोर्ड पर कॉपी करें

अपना अल्केमी API URL कॉपी करें

आपका .env अब इस तरह दिखना चाहिए:

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

इन्हें वास्तव में हमारे कोड से जोड़ने के लिए, हम इन चरों को अपनी hardhat.config.js फ़ाइल में चरण 13 में संदर्भित करेंगे।

चरण 12: ईथर्स.जेएस इंस्टॉल करें

ईथर्स.जेएस एक लाइब्रेरी है जो अधिक उपयोगकर्ता-अनुकूल तरीकों के साथ मानक JSON-RPC तरीकों को रैप करके एथेरियम के साथ इंटरैक्ट करना और अनुरोध करना आसान बनाती है।

हार्डहैट अतिरिक्त टूलिंग और विस्तारित कार्यक्षमता के लिए प्लगइन्स (opens in a new tab) को एकीकृत करना बेहद आसान बनाता है। हम अनुबंध परिनियोजन के लिए Ethers प्लगइन (opens in a new tab) का लाभ उठाएंगे (ईथर्स.जेएस (opens in a new tab) में कुछ बहुत ही स्वच्छ अनुबंध परिनियोजन विधियाँ हैं)।

अपनी प्रोजेक्ट डायरेक्टरी में टाइप करें:

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

हम अगले चरण में अपनी hardhat.config.js में ethers की भी आवश्यकता होगी।

चरण 13: hardhat.config.js अपडेट करें

हमने अब तक कई निर्भरताएं और प्लगइन्स जोड़े हैं, अब हमें hardhat.config.js को अपडेट करने की आवश्यकता है ताकि हमारा प्रोजेक्ट उन सभी के बारे में जान सके।

अपनी hardhat.config.js को इस तरह दिखने के लिए अपडेट करें:

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

चरण 14: हमारा अनुबंध कंपाइल करें

यह सुनिश्चित करने के लिए कि अब तक सब कुछ काम कर रहा है, आइए हम अपने अनुबंध को कंपाइल करें। कंपाइल कार्य अंतर्निहित हार्डहैट कार्यों में से एक है।

कमांड लाइन से चलाएं:

1npx hardhat compile

आपको स्रोत फ़ाइल में SPDX लाइसेंस पहचानकर्ता प्रदान नहीं किए जाने के बारे में एक चेतावनी मिल सकती है, लेकिन इसके बारे में चिंता करने की कोई आवश्यकता नहीं है - उम्मीद है कि बाकी सब कुछ अच्छा लगेगा! यदि नहीं, तो आप हमेशा अल्केमी discord (opens in a new tab) में संदेश भेज सकते हैं।

चरण 15: हमारी डिप्लॉय स्क्रिप्ट लिखें

अब जब हमारा अनुबंध लिखा गया है और हमारी कॉन्फ़िगरेशन फ़ाइल तैयार है, तो हमारी अनुबंध डिप्लॉय स्क्रिप्ट लिखने का समय आ गया है।

scripts/ फ़ोल्डर में नेविगेट करें और deploy.js नामक एक नई फ़ाइल बनाएं, जिसमें निम्नलिखित सामग्री जोड़ें:

1async function main() {
2 const MyNFT = await ethers.getContractFactory("MyNFT")
3
4 // डिप्लॉयमेंट शुरू करें, एक प्रॉमिस लौटाता है जो एक अनुबंध ऑब्जेक्ट को हल करता है
5 const myNFT = await MyNFT.deploy()
6 await myNFT.deployed()
7 console.log("अनुबंध इस पते पर डिप्लॉय किया गया है:", myNFT.address)
8}
9
10main()
11 .then(() => process.exit(0))
12 .catch((error) => {
13 console.error(error)
14 process.exit(1)
15 })

हार्डहैट अपने अनुबंध ट्यूटोरियल (opens in a new tab) में कोड की इन पंक्तियों में से प्रत्येक क्या करता है, यह समझाने का एक अद्भुत काम करता है, हमने यहां उनकी व्याख्याओं को अपनाया है।

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

ethers.js में एक ContractFactory नए स्मार्ट अनुबंधों को डिप्लॉय करने के लिए उपयोग किया जाने वाला एक एब्स्ट्रैक्शन है, इसलिए MyNFT यहां हमारे एनएफटी अनुबंध के इंस्टेंस के लिए एक फैक्ट्री है। hardhat-ethers प्लगइन का उपयोग करते समय ContractFactory और Contract इंस्टेंस डिफ़ॉल्ट रूप से पहले हस्ताक्षरकर्ता से जुड़े होते हैं।

1const myNFT = await MyNFT.deploy();

ContractFactory पर deploy() को कॉल करने से डिप्लॉयमेंट शुरू हो जाएगा, और एक Promise लौटेगा जो एक अनुबंध को हल करता है। यह वह ऑब्जेक्ट है जिसमें हमारे प्रत्येक स्मार्ट अनुबंध फ़ंक्शन के लिए एक विधि है।

चरण 16: हमारा अनुबंध डिप्लॉय करें

हम अंततः अपने स्मार्ट अनुबंध को डिप्लॉय करने के लिए तैयार हैं! अपने प्रोजेक्ट डायरेक्टरी की रूट पर वापस नेविगेट करें, और कमांड लाइन में चलाएं:

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

इसके बाद आपको कुछ इस तरह देखना चाहिए:

1अनुबंध इस पते पर डिप्लॉय किया गया: 0x4C5266cCc4b3F426965d2f51b6D910325a0E7650

यदि हम सेपोलिया etherscan (opens in a new tab) पर जाते हैं और अपने अनुबंध पते की खोज करते हैं तो हम यह देखने में सक्षम होना चाहिए कि इसे सफलतापूर्वक डिप्लॉय किया गया है। यदि आप इसे तुरंत नहीं देख सकते हैं, तो कृपया थोड़ी देर प्रतीक्षा करें क्योंकि इसमें कुछ समय लग सकता है। लेनदेन कुछ इस तरह दिखेगा:

ईथरस्कैन पर अपना लेनदेन पता देखें

From पता आपके मेटामास्क खाते के पते से मेल खाना चाहिए और To पते पर “Contract Creation” लिखा होगा। यदि हम लेनदेन में क्लिक करते हैं, तो हम To फ़ील्ड में अपना अनुबंध पता देखेंगे:

ईथरस्कैन पर अपना अनुबंध पता देखें

बहुत बढ़िया! आपने अभी-अभी अपने एनएफटी स्मार्ट अनुबंध को एथेरियम (टेस्टनेट) चेन पर डिप्लॉय किया है!

पर्दे के पीछे क्या हो रहा है, यह समझने के लिए, आइए हमारे अल्केमी डैशबोर्ड (opens in a new tab) में एक्सप्लोरर टैब पर नेविगेट करें। यदि आपके पास कई अल्केमी ऐप हैं तो ऐप द्वारा फ़िल्टर करना और “MyNFT” का चयन करना सुनिश्चित करें।

अल्केमी के एक्सप्लोरर डैशबोर्ड के साथ "पर्दे के पीछे" की गई कॉलों को देखें

यहां आपको कुछ JSON-RPC कॉल दिखाई देंगी जो हार्डहैट/Ethers ने हमारे लिए .deploy() फ़ंक्शन को कॉल करते समय पर्दे के पीछे की थीं। यहां दो महत्वपूर्ण कॉल हैं eth_sendRawTransaction, जो वास्तव में हमारे स्मार्ट अनुबंध को सेपोलिया श्रृंखला पर लिखने का अनुरोध है, और eth_getTransactionByHash जो हैश दिए जाने पर हमारे लेनदेन के बारे में जानकारी पढ़ने का अनुरोध है (लेनदेन भेजते समय एक विशिष्ट पैटर्न)। लेनदेन भेजने के बारे में अधिक जानने के लिए, वेब3 का उपयोग करके लेनदेन भेजने पर यह ट्यूटोरियल देखें।

इस ट्यूटोरियल के भाग 1 के लिए बस इतना ही। भाग 2 में, हम वास्तव में एक एनएफटी को मिंट करके अपने स्मार्ट अनुबंध के साथ इंटरैक्ट करेंगे, और भाग 3 में हम आपको दिखाएंगे कि अपने एथेरियम वॉलेट में अपना एनएफटी कैसे देखें!

पेज का अंतिम अपडेट: 3 मार्च 2026

क्या यह ट्यूटोरियल सहायक था?