प्रमुख मजकुराकडे जा

NFT कसे लिहावे आणि उपयोजित करावे (NFT ट्यूटोरियल मालिकेचा भाग 1/3)

ERC-721
Alchemy
Solidity
स्मार्ट कॉन्ट्रॅक्ट
नवशिक्या
Sumi Mudgil
२२ एप्रिल, २०२१
13 मिनिट वाचन

NFTs ब्लॉकचेनला लोकांच्या नजरेत आणत असल्याने, आता Ethereum ब्लॉकचेनवर तुमचे स्वतःचे NFT कॉन्ट्रॅक्ट (ERC-721 टोकन) प्रकाशित करून ही क्रेझ स्वतः समजून घेण्याची एक उत्तम संधी आहे!

Alchemy ला NFT क्षेत्रातील सर्वात मोठ्या नावांना, ज्यात Makersplace (ज्याने अलीकडेच क्रिस्टीजमध्ये $69 दशलक्षमध्ये डिजिटल कलाकृती विक्रीचा विक्रम केला), Dapper Labs (NBA टॉप शॉट आणि क्रिप्टो किटीजचे निर्माते), OpenSea (जगातील सर्वात मोठे NFT मार्केटप्लेस), Zora, Super Rare, NFTfi, Foundation, Enjin, Origin Protocol, Immutable आणि बरेच काही समाविष्ट आहेत, त्यांना सामर्थ्य देण्याचा प्रचंड अभिमान आहे.

या ट्यूटोरियलमध्ये, आम्ही MetaMaskopens in a new tab, Solidityopens in a new tab, Hardhatopens in a new tab, Pinataopens in a new tab आणि Alchemyopens in a new tab वापरून Sepolia चाचणी नेटवर्कवर ERC-721 स्मार्ट कॉन्ट्रॅक्ट तयार आणि उपयोजित करण्याच्या प्रक्रियेतून जाऊ (जर तुम्हाला यापैकी कशाचाही अर्थ अजून समजला नसेल तर काळजी करू नका - आम्ही ते समजावून सांगू!).

या ट्यूटोरियलच्या भाग २ मध्ये आपण NFT मिंट करण्यासाठी आपल्या स्मार्ट कॉन्ट्रॅक्टचा कसा वापर करू शकतो हे पाहू आणि भाग ३ मध्ये आपण MetaMask वर तुमचा NFT कसा पाहायचा हे समजावून सांगू.

आणि अर्थातच, कोणत्याही क्षणी तुम्हाला प्रश्न असल्यास, Alchemy Discordopens in a new tab मध्ये संपर्क साधण्यास किंवा Alchemy's NFT API docsopens in a new tab ला भेट देण्यास अजिबात संकोच करू नका!

पायरी १: Ethereum नेटवर्कशी कनेक्ट करा

Ethereum ब्लॉकचेनला विनंत्या करण्याचे बरेच मार्ग आहेत, पण गोष्टी सोप्या करण्यासाठी, आम्ही Alchemyopens in a new tab वर एक विनामूल्य खाते वापरू, जे एक ब्लॉकचेन डेव्हलपर प्लॅटफॉर्म आणि API आहे, जे आम्हाला स्वतःचे नोड न चालवता Ethereum चेनशी संवाद साधण्याची परवानगी देते.

या ट्यूटोरियलमध्ये, आम्ही आमच्या स्मार्ट कॉन्ट्रॅक्टच्या उपयोजनामध्ये काय चालले आहे हे समजून घेण्यासाठी देखरेख आणि विश्लेषणासाठी Alchemy च्या डेव्हलपर साधनांचाही फायदा घेऊ. तुमच्याकडे आधीपासून Alchemy खाते नसल्यास, तुम्ही येथेopens in a new tab विनामूल्य साइन अप करू शकता.

पायरी २: तुमचे ॲप (आणि API की) तयार करा

एकदा तुम्ही Alchemy खाते तयार केल्यावर, तुम्ही ॲप तयार करून API की तयार करू शकता. हे आम्हाला Sepolia चाचणी नेटवर्कवर विनंत्या करण्याची परवानगी देईल. जर तुम्ही चाचणी नेटवर्क्सबद्दल अधिक जाणून घेण्यास उत्सुक असाल तर हे मार्गदर्शकopens in a new tab पहा.

  1. तुमच्या Alchemy डॅशबोर्डवरील “ॲप तयार करा” पेजवर जाण्यासाठी, नॅव्ह बारमधील “ॲप्स” वर होव्हर करा आणि “ॲप तयार करा” वर क्लिक करा.

तुमचे ॲप तयार करा

  1. तुमच्या ॲपला नाव द्या (आम्ही “माझे पहिले NFT!” निवडले आहे), एक छोटे वर्णन द्या, चेनसाठी “Ethereum” निवडा आणि तुमच्या नेटवर्कसाठी “Sepolia” निवडा. मर्ज झाल्यापासून इतर टेस्टनेट रद्द करण्यात आले आहेत.

तुमचे ॲप कॉन्फिगर करा आणि प्रकाशित करा

  1. “ॲप तयार करा” वर क्लिक करा आणि झाले! तुमचे ॲप खालील टेबलमध्ये दिसावे.

पायरी ३: Ethereum खाते (पत्ता) तयार करा

आम्हाला व्यवहार पाठवण्यासाठी आणि प्राप्त करण्यासाठी Ethereum खात्याची आवश्यकता आहे. या ट्यूटोरियलसाठी, आम्ही MetaMask वापरू, जे ब्राउझरमधील एक व्हर्च्युअल वॉलेट आहे, जे तुमचा Ethereum खाते पत्ता व्यवस्थापित करण्यासाठी वापरले जाते. तुम्हाला Ethereum वरील व्यवहार कसे कार्य करतात याबद्दल अधिक समजून घ्यायचे असल्यास, Ethereum फाउंडेशनचे हे पेज पहा.

तुम्ही येथेopens in a new tab विनामूल्य MetaMask खाते डाउनलोड आणि तयार करू शकता. तुम्ही खाते तयार करत असताना, किंवा तुमच्याकडे आधीपासूनच खाते असल्यास, वरच्या उजवीकडे “Sepolia चाचणी नेटवर्क” वर स्विच केल्याची खात्री करा (जेणेकरून आपण खऱ्या पैशांशी व्यवहार करणार नाही).

Sepolia ला तुमचे नेटवर्क म्हणून सेट करा

पायरी ४: फॉसेटमधून इथर जोडा

आपला स्मार्ट कॉन्ट्रॅक्ट चाचणी नेटवर्कवर उपयोजित करण्यासाठी, आम्हाला काही बनावट ETH ची आवश्यकता असेल. ETH मिळविण्यासाठी तुम्ही Alchemy द्वारा होस्ट केलेल्या Sepolia Faucetopens in a new tab वर जाऊ शकता, लॉग इन करा आणि तुमच्या खात्याचा पत्ता प्रविष्ट करा, “Send Me ETH” वर क्लिक करा. लवकरच तुम्हाला तुमच्या MetaMask खात्यात ETH दिसेल!

पायरी ५: तुमची शिल्लक तपासा

आपली शिल्लक आहे की नाही हे पुन्हा तपासण्यासाठी, चला Alchemy’s composer toolopens in a new tab वापरून eth_getBalanceopens in a new tab विनंती करूया. हे आमच्या वॉलेटमधील ETH ची रक्कम परत करेल. तुम्ही तुमच्या MetaMask खात्याचा पत्ता इनपुट केल्यानंतर आणि “Send Request” वर क्लिक केल्यानंतर, तुम्हाला असा प्रतिसाद दिसेल:

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

टीप हा निकाल ETH मध्ये नाही, तर wei मध्ये आहे. Wei हे इथरचे सर्वात लहान एकक म्हणून वापरले जाते. wei चे ETH मध्ये रूपांतरण 1 eth = 1018 wei असे आहे. म्हणून जर आपण 0xde0b6b3a7640000 हे दशांश मध्ये रूपांतरित केले तर आपल्याला 1*1018 wei मिळतील, जे 1 ETH च्या बरोबर आहे.

हुश्श! आपले बनावट पैसे तिथे आहेत.

पायरी ६: आपला प्रोजेक्ट सुरू करा

प्रथम, आपल्याला आपल्या प्रोजेक्टसाठी एक फोल्डर तयार करण्याची आवश्यकता असेल. तुमच्या कमांड लाइनवर नेव्हिगेट करा आणि टाइप करा:

1mkdir my-nft
2cd my-nft

आता आपण आपल्या प्रोजेक्ट फोल्डरमध्ये आहोत, आपण प्रोजेक्ट सुरू करण्यासाठी npm init वापरू. तुमच्याकडे आधीपासून npm इंस्टॉल केलेले नसल्यास, या सूचनांचेopens in a new tab पालन करा (आम्हाला Node.jsopens 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 \"त्रुटी: कोणतीही चाचणी निर्दिष्ट केलेली नाही\" && exit 1"
19 },
20 "author": "",
21 "license": "ISC"
22 }
सर्व दाखवा

package.json ला मान्यता द्या, आणि आपण पुढे जाण्यासाठी तयार आहोत!

पायरी ७: Hardhatopens in a new tab इंस्टॉल करा

Hardhat हे तुमचे Ethereum सॉफ्टवेअर संकलित (compile), उपयोजित (deploy), चाचणी (test) आणि डीबग (debug) करण्यासाठी एक विकास वातावरण आहे. हे डेव्हलपर्सना थेट चेनवर उपयोजित करण्यापूर्वी स्थानिक पातळीवर स्मार्ट कॉन्ट्रॅक्ट्स आणि dApps तयार करताना मदत करते.

आपल्या my-nft प्रोजेक्टमध्ये चालवा:

1npm install --save-dev hardhat

इन्स्टॉलेशन सूचनांविषयीopens in a new tab अधिक तपशीलांसाठी हे पेज पहा.

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

हे आमच्यासाठी एक hardhat.config.js फाइल तयार करेल जिथे आम्ही आमच्या प्रोजेक्टसाठी सर्व सेटअप निर्दिष्ट करू (पायरी 13 वर).

पायरी ९: प्रोजेक्ट फोल्डर्स जोडा

आपला प्रोजेक्ट संघटित ठेवण्यासाठी, आम्ही दोन नवीन फोल्डर्स तयार करू. तुमच्या कमांड लाइनमधील प्रोजेक्टच्या मूळ डिरेक्टरीवर नेव्हिगेट करा आणि टाइप करा:

1mkdir contracts
2mkdir scripts
  • contracts/ मध्ये आम्ही आमच्या NFT स्मार्ट कॉन्ट्रॅक्टचा कोड ठेवू.

  • scripts/ मध्ये आम्ही आमचे स्मार्ट कॉन्ट्रॅक्ट उपयोजित करण्यासाठी आणि त्याच्याशी संवाद साधण्यासाठी स्क्रिप्ट्स ठेवू.

पायरी १०: आमचा कॉन्ट्रॅक्ट लिहा

आता आमचे वातावरण सेट झाले आहे, चला अधिक रोमांचक गोष्टींकडे वळूया: आमच्या स्मार्ट कॉन्ट्रॅक्टचा कोड लिहिणे!

तुमच्या आवडत्या एडिटरमध्ये my-nft प्रोजेक्ट उघडा (आम्हाला VSCodeopens in a new tab आवडते). स्मार्ट कॉन्ट्रॅक्ट्स Solidity नावाच्या भाषेत लिहिले जातात, जी आम्ही आमचे MyNFT.sol स्मार्ट कॉन्ट्रॅक्ट लिहिण्यासाठी वापरू.

  1. contracts फोल्डरवर नेव्हिगेट करा आणि MyNFT.sol नावाची एक नवीन फाइल तयार करा.

  2. खाली आमच्या NFT स्मार्ट कॉन्ट्रॅक्टचा कोड आहे, जो आम्ही OpenZeppelinopens 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", "NFT") {}
    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. कारण आम्ही OpenZeppelin कॉन्ट्रॅक्ट्स लायब्ररीमधून क्लासेस घेत आहोत, तुमच्या कमांड लाइनमध्ये npm install @openzeppelin/contracts^4.0.0 चालवून ती लायब्ररी आमच्या फोल्डरमध्ये इंस्टॉल करा.

तर, हा कोड नक्की काय करतो? चला, ओळी-ओळीने ते समजून घेऊया.

आपल्या स्मार्ट कॉन्ट्रॅक्टच्या शीर्षस्थानी, आम्ही तीन OpenZeppelinopens 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 वर युनिक आयडी सेट करण्यासाठी काउंटर वापरतो. (स्मार्ट कॉन्ट्रॅक्ट वापरून मिंट केलेल्या प्रत्येक NFT ला एक युनिक आयडी नियुक्त करणे आवश्यक आहे - येथे आमचा युनिक आयडी फक्त अस्तित्वात असलेल्या एकूण NFTs च्या संख्येवरून निर्धारित केला जातो. उदाहरणार्थ, आम्ही आमच्या स्मार्ट कॉन्ट्रॅक्टसह मिंट केलेल्या पहिल्या NFT चा आयडी "1" आहे, आमच्या दुसऱ्या NFT चा आयडी "2" आहे, इत्यादी.)

  • @openzeppelin/contracts/access/Ownable.sol आमच्या स्मार्ट कॉन्ट्रॅक्टवर ॲक्सेस कंट्रोलopens in a new tab सेट करते, त्यामुळे फक्त स्मार्ट कॉन्ट्रॅक्टचा मालक (तुम्ही) NFTs मिंट करू शकतो. (लक्षात घ्या, ॲक्सेस कंट्रोल समाविष्ट करणे ही पूर्णपणे एक पसंती आहे. जर तुम्हाला तुमच्या स्मार्ट कॉन्ट्रॅक्टचा वापर करून कोणालाही NFT मिंट करण्याची परवानगी द्यायची असेल, तर ओळ १० वरील Ownable शब्द आणि ओळ १७ वरील onlyOwner काढून टाका.)

आमच्या इम्पोर्ट स्टेटमेंटनंतर, आमचा कस्टम NFT स्मार्ट कॉन्ट्रॅक्ट आहे, जो आश्चर्यकारकपणे लहान आहे — त्यात फक्त एक काउंटर, एक कन्स्ट्रक्टर आणि एकच फंक्शन आहे! हे आमच्या इनहेरिटेड OpenZeppelin कॉन्ट्रॅक्ट्समुळे शक्य झाले आहे, जे NFT तयार करण्यासाठी आवश्यक असलेल्या बहुतेक पद्धती लागू करतात, जसे की ownerOf जे NFT चा मालक परत करते, आणि transferFrom, जे NFT ची मालकी एका खात्यातून दुसऱ्या खात्यात हस्तांतरित करते.

आमच्या ERC-721 कन्स्ट्रक्टरमध्ये, तुमच्या लक्षात येईल की आम्ही 2 स्ट्रिंग्स, “MyNFT” आणि “NFT” पास करतो. पहिले व्हेरिएबल स्मार्ट कॉन्ट्रॅक्टचे नाव आहे, आणि दुसरे त्याचे चिन्ह आहे. तुम्ही या प्रत्येक व्हेरिएबलला तुम्हाला हवे ते नाव देऊ शकता!

शेवटी, आमच्याकडे mintNFT(address recipient, string memory tokenURI) हे फंक्शन आहे जे आम्हाला NFT मिंट करण्याची परवानगी देते! तुमच्या लक्षात येईल की हे फंक्शन दोन व्हेरिएबल्स घेते:

  • address recipient तो पत्ता निर्दिष्ट करतो जो तुमचा नव्याने मिंट केलेला NFT प्राप्त करेल.

  • string memory tokenURI ही एक स्ट्रिंग आहे जी NFT च्या मेटाडेटाचे वर्णन करणाऱ्या JSON डॉक्युमेंटमध्ये रिझॉल्व झाली पाहिजे. NFT चा मेटाडेटाच त्याला जिवंत करतो, ज्यामुळे त्यात नाव, वर्णन, प्रतिमा आणि इतर गुणधर्मांसारखे कॉन्फिगर करण्यायोग्य गुणधर्म असू शकतात. या ट्यूटोरियलच्या भाग २ मध्ये, आम्ही हा मेटाडेटा कसा कॉन्फिगर करायचा याचे वर्णन करू.

mintNFT इनहेरिटेड ERC-721 लायब्ररीमधून काही पद्धती कॉल करते आणि शेवटी एक संख्या परत करते जी नव्याने मिंट केलेल्या NFT चा आयडी दर्शवते.

पायरी ११: MetaMask आणि Alchemy ला तुमच्या प्रोजेक्टशी कनेक्ट करा

आता आम्ही MetaMask वॉलेट, Alchemy खाते तयार केले आहे आणि आमचा स्मार्ट कॉन्ट्रॅक्ट लिहिला आहे, आता तिन्ही कनेक्ट करण्याची वेळ आली आहे.

तुमच्या व्हर्च्युअल वॉलेटमधून पाठवलेल्या प्रत्येक व्यवहारासाठी तुमच्या युनिक प्रायव्हेट की वापरून स्वाक्षरी आवश्यक आहे. आमच्या प्रोग्रामला ही परवानगी देण्यासाठी, आम्ही आमची प्रायव्हेट की (आणि Alchemy API की) एका एन्व्हायर्नमेंट फाइलमध्ये सुरक्षितपणे संग्रहित करू शकतो.

व्यवहार पाठवण्याबद्दल अधिक जाणून घेण्यासाठी, वेब3 वापरून व्यवहार पाठवण्यावरील हे ट्यूटोरियल पहा.

प्रथम, तुमच्या प्रोजेक्ट डिरेक्टरीमध्ये dotenv पॅकेज इंस्टॉल करा:

1npm install dotenv --save

त्यानंतर, आमच्या प्रोजेक्टच्या रूट डिरेक्टरीमध्ये एक .env फाइल तयार करा आणि त्यात तुमची MetaMask प्रायव्हेट की आणि HTTP Alchemy API URL जोडा.

  • MetaMask मधून तुमची प्रायव्हेट की एक्सपोर्ट करण्यासाठी या सूचनांचेopens in a new tab पालन करा.

  • HTTP Alchemy API URL मिळविण्यासाठी खाली पहा आणि ती तुमच्या क्लिपबोर्डवर कॉपी करा.

तुमची Alchemy API URL कॉपी करा

तुमची .env आता अशी दिसावी:

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

यांना प्रत्यक्षात आमच्या कोडशी जोडण्यासाठी, आम्ही या व्हेरिएबल्सचा संदर्भ आमच्या hardhat.config.js फाइलमध्ये पायरी १३ मध्ये देऊ.

पायरी १२: Ethers.js इंस्टॉल करा

Ethers.js ही एक लायब्ररी आहे जी अधिक वापरकर्ता-अनुकूल पद्धतींसह प्रमाणित JSON-RPC पद्धती गुंडाळून Ethereum शी संवाद साधणे आणि विनंत्या करणे सोपे करते.

Hardhat अतिरिक्त टूलिंग आणि विस्तारित कार्यक्षमतेसाठी प्लगइन्सopens in a new tab समाकलित करणे खूप सोपे करते. आम्ही कॉन्ट्रॅक्ट डिप्लॉयमेंटसाठी Ethers प्लगइनopens in a new tab चा फायदा घेणार आहोत (Ethers.jsopens in a new tab मध्ये काही अत्यंत स्वच्छ कॉन्ट्रॅक्ट डिप्लॉयमेंट पद्धती आहेत).

आपल्या प्रोजेक्ट डिरेक्टरीमध्ये टाइप करा:

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

आम्ही आमच्या hardhat.config.js मध्ये पुढील पायरीवर ethers ची आवश्यकता देखील भासवू.

पायरी १३: 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 }
सर्व दाखवा

पायरी १४: आमचा कॉन्ट्रॅक्ट संकलित करा

आतापर्यंत सर्व काही कार्यरत आहे याची खात्री करण्यासाठी, चला आमचा कॉन्ट्रॅक्ट संकलित करूया. संकलित करण्याचे काम हे बिल्ट-इन हार्डहॅट कामांपैकी एक आहे.

कमांड लाइनमधून चालवा:

1npx hardhat compile

तुम्हाला कदाचित स्त्रोत फाइलमध्ये SPDX परवाना अभिज्ञापक प्रदान न केल्याबद्दल चेतावणी मिळू शकते, परंतु त्याबद्दल काळजी करण्याची गरज नाही — आशा आहे की इतर सर्व काही ठीक दिसेल! नसल्यास, तुम्ही नेहमी Alchemy discordopens in a new tab मध्ये संदेश पाठवू शकता.

पायरी १५: आमची उपयोजन स्क्रिप्ट लिहा

आता आमचा कॉन्ट्रॅक्ट लिहिला आहे आणि आमची कॉन्फिगरेशन फाइल तयार आहे, आता आमच्या कॉन्ट्रॅक्टची उपयोजन स्क्रिप्ट लिहिण्याची वेळ आली आहे.

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 })
सर्व दाखवा

Hardhat त्यांच्या कॉन्ट्रॅक्ट्स ट्यूटोरियलopens in a new tab मध्ये या प्रत्येक कोड ओळी काय करते हे आश्चर्यकारकपणे स्पष्ट करते, आम्ही त्यांचे स्पष्टीकरण येथे स्वीकारले आहे.

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

ethers.js मधील ContractFactory हे नवीन स्मार्ट कॉन्ट्रॅक्ट्स उपयोजित करण्यासाठी वापरले जाणारे एक ॲब्स्ट्रॅक्शन आहे, म्हणून MyNFT येथे आमच्या NFT कॉन्ट्रॅक्टच्या उदाहरणांसाठी एक फॅक्टरी आहे. hardhat-ethers प्लगइन वापरताना ContractFactory आणि Contract उदाहरणे डीफॉल्टनुसार पहिल्या स्वाक्षरीकर्त्याशी जोडलेली असतात.

1const myNFT = await MyNFT.deploy();

ContractFactory वर deploy() कॉल केल्याने उपयोजन सुरू होईल, आणि एक Promise परत करेल जो Contract मध्ये रिझॉल्व्ह होतो. हे ते ऑब्जेक्ट आहे ज्यामध्ये आमच्या प्रत्येक स्मार्ट कॉन्ट्रॅक्ट फंक्शनसाठी एक पद्धत आहे.

पायरी १६: आमचा कॉन्ट्रॅक्ट उपयोजित करा

आम्ही अखेरीस आमचा स्मार्ट कॉन्ट्रॅक्ट उपयोजित करण्यास तयार आहोत! तुमच्या प्रोजेक्ट डिरेक्टरीच्या रूटवर परत नेव्हिगेट करा आणि कमांड लाइनमध्ये चालवा:

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

तुम्हाला त्यानंतर असे काहीतरी दिसेल:

1कॉन्ट्रॅक्ट या पत्त्यावर उपयोजित केले आहे: 0x4C5266cCc4b3F426965d2f51b6D910325a0E7650

जर आपण Sepolia etherscanopens in a new tab वर गेलो आणि आमच्या कॉन्ट्रॅक्ट पत्त्यासाठी शोधले तर आपल्याला ते यशस्वीरित्या उपयोजित झाल्याचे दिसेल. जर तुम्हाला ते लगेच दिसत नसेल, तर कृपया थोडा वेळ थांबा कारण यास काही वेळ लागू शकतो. व्यवहार असा काहीतरी दिसेल:

Etherscan वर तुमचा व्यवहार पत्ता पहा

From पत्ता तुमच्या MetaMask खाते पत्त्याशी जुळला पाहिजे आणि To पत्त्यावर “Contract Creation” दिसेल. जर आपण व्यवहारात क्लिक केले तर, आपल्याला To फील्डमध्ये आमचा कॉन्ट्रॅक्ट पत्ता दिसेल:

Etherscan वर तुमचा कॉन्ट्रॅक्ट पत्ता पहा

व्वा! तुम्ही नुकताच तुमचा NFT स्मार्ट कॉन्ट्रॅक्ट Ethereum (टेस्टनेट) चेनवर उपयोजित केला आहे!

पडद्यामागे काय चालले आहे हे समजून घेण्यासाठी, चला आमच्या Alchemy dashboardopens in a new tab मधील Explorer टॅबवर नेव्हिगेट करूया. तुमच्याकडे अनेक Alchemy ॲप्स असल्यास, ॲपनुसार फिल्टर केल्याची खात्री करा आणि “MyNFT” निवडा.

Alchemy's Explorer डॅशबोर्डसह पडद्यामागे केलेले कॉल पहा

येथे तुम्हाला काही JSON-RPC कॉल्स दिसतील जे Hardhat/Ethers ने आमच्यासाठी पडद्यामागे केले होते जेव्हा आम्ही .deploy() फंक्शन कॉल केले होते. येथे दोन महत्त्वाचे कॉल म्हणजे eth_sendRawTransaction, जी प्रत्यक्षात आमचा स्मार्ट कॉन्ट्रॅक्ट Sepolia चेनवर लिहिण्याची विनंती आहे, आणि eth_getTransactionByHash जी हॅश दिल्यावर आमच्या व्यवहाराबद्दल माहिती वाचण्याची विनंती आहे (व्यवहार पाठवताना एक सामान्य नमुना). व्यवहार पाठवण्याबद्दल अधिक जाणून घेण्यासाठी, Web3 वापरून व्यवहार पाठवण्यावरील हे ट्यूटोरियल पहा.

या ट्यूटोरियलच्या भाग १ साठी एवढेच. भाग २ मध्ये, आपण प्रत्यक्षात NFT मिंट करून आमच्या स्मार्ट कॉन्ट्रॅक्टशी संवाद साधू, आणि भाग ३ मध्ये आम्ही तुम्हाला तुमच्या Ethereum वॉलेटमध्ये तुमचा NFT कसा पाहायचा हे दाखवू!

पृष्ठ अखेरचे अद्यतन: ५ डिसेंबर, २०२५

हे मार्गदर्शन उपयुक्त होते का?