ప్రధాన కంటెంట్‌కి స్కిప్ చేయండి

NFT (NFT ట్యుటోరియల్ సిరీస్‌లో పార్ట్ 1/3)ను ఎలా వ్రాయాలి & డిప్లోయ్ చేయాలి

ERC-721
Alchemy
Solidity
స్మార్ట్ కాంట్రాక్టులు
ప్రారంభ
Sumi Mudgil
22 ఏప్రిల్, 2021
12 నిమిషం పఠనం

NFTలు బ్లాక్‌చైన్‌ను ప్రజల దృష్టికి తీసుకువస్తున్నందున, ఇతీరియము బ్లాక్‌చైన్‌లో మీ స్వంత NFT కాంట్రాక్ట్ (ERC-721 టోకెన్)ను ప్రచురించడం ద్వారా ఈ హైప్‌ను మీరే అర్థం చేసుకోవడానికి ఇది ఒక అద్భుతమైన అవకాశం!

Makersplace (ఇటీవల క్రిస్టీస్‌లో $69 మిలియన్లకు రికార్డు డిజిటల్ ఆర్ట్‌వర్క్ అమ్మకం చేసింది), డ్యాపర్ ల్యాబ్స్ (NBA టాప్ షాట్ & క్రిప్టో కిట్టీస్ సృష్టికర్తలు), OpenSea (ప్రపంచంలోనే అతిపెద్ద NFT మార్కెట్‌ప్లేస్), జోరా, సూపర్ రేర్, NFTfi, ఫౌండేషన్, ఎంజిన్, ఆరిజిన్ ప్రొటోకాల్, ఇమ్మ్యుటబుల్ మరియు మరెన్నో సహా NFT స్పేస్‌లోని అతిపెద్ద పేర్లకు శక్తినివ్వడం పట్ల ఆల్కెమీ చాలా గర్వంగా ఉంది.

ఈ ట్యుటోరియల్‌లో, మేము MetaMask (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ని MetaMaskలో ఎలా చూడాలో వివరిస్తాము.

మరియు వాస్తవానికి, మీకు ఏ సమయంలోనైనా ప్రశ్నలు ఉంటే, ఆల్కెమీ డిస్కార్డ్ (opens in a new tab)లో సంప్రదించడానికి లేదా ఆల్కెమీ యొక్క NFT API డాక్స్ (opens in a new tab)ను సందర్శించడానికి వెనుకాడకండి!

దశ 1: ఇతీరియము నెట్‌వర్క్‌కి కనెక్ట్ అవ్వండి

ఇతీరియము బ్లాక్‌చైన్‌కు అభ్యర్థనలు చేయడానికి చాలా మార్గాలు ఉన్నాయి, కానీ విషయాలను సులభతరం చేయడానికి, మేము Alchemy (opens in a new tab)లో ఉచిత అకౌంట్‌ను ఉపయోగిస్తాము, ఇది ఒక బ్లాక్‌చైన్ డెవలపర్ ప్లాట్‌ఫారమ్ మరియు API, ఇది మన స్వంత నోడ్‌లను అమలు చేయకుండానే ఇతీరియము చైన్‌తో కమ్యూనికేట్ చేయడానికి అనుమతిస్తుంది.

ఈ ట్యుటోరియల్‌లో, మన స్మార్ట్ కాంట్రాక్ట్ డిప్లోయ్‌మెంట్‌లో తెర వెనుక ఏమి జరుగుతుందో అర్థం చేసుకోవడానికి పర్యవేక్షణ మరియు విశ్లేషణల కోసం మేము ఆల్కెమీ యొక్క డెవలపర్ టూల్స్‌ను కూడా ఉపయోగించుకుంటాము. మీకు ఇప్పటికే ఆల్కెమీ అకౌంట్ లేకపోతే, మీరు ఇక్కడ (opens in a new tab) ఉచితంగా సైన్ అప్ చేయవచ్చు.

దశ 2: మీ యాప్‌ను సృష్టించండి (మరియు API కీ)

మీరు ఆల్కెమీ అకౌంట్‌ను సృష్టించిన తర్వాత, యాప్‌ను సృష్టించడం ద్వారా మీరు API కీని రూపొందించవచ్చు. ఇది సెపోలియా టెస్ట్ నెట్‌వర్క్‌కు అభ్యర్థనలు చేయడానికి మాకు అనుమతిస్తుంది. టెస్ట్ నెట్‌వర్క్‌ల గురించి మరింత తెలుసుకోవాలనే ఆసక్తి మీకు ఉంటే ఈ గైడ్ (opens in a new tab)ని చూడండి.

  1. మీ ఆల్కెమీ డాష్‌బోర్డ్‌లోని “యాప్‌లను సృష్టించు” పేజీకి నావిగేట్ చేయడానికి, నావ్ బార్‌లోని “యాప్స్” మీద హోవర్ చేసి, “యాప్‌ను సృష్టించు” క్లిక్ చేయండి

మీ యాప్‌ను సృష్టించండి

  1. మీ యాప్‌కు పేరు పెట్టండి (మేము “నా మొదటి NFT!” అని ఎంచుకున్నాము), చిన్న వివరణను అందించండి, చైన్ కోసం “ఇతీరియము”ను ఎంచుకోండి మరియు మీ నెట్‌వర్క్ కోసం “సెపోలియా”ను ఎంచుకోండి. విలీనం అయినప్పటి నుండి ఇతర టెస్టునెట్‌లు నిలిపివేయబడ్డాయి.

మీ యాప్‌ను కాన్ఫిగర్ చేసి ప్రచురించండి

  1. “యాప్‌ను సృష్టించు” క్లిక్ చేయండి, అంతే! మీ యాప్ దిగువ పట్టికలో కనిపించాలి.

దశ 3: ఇతీరియము అకౌంట్‌ను (చిరునామా) సృష్టించండి

లావాదేవీలను పంపడానికి మరియు స్వీకరించడానికి మాకు ఇతీరియము అకౌంట్ అవసరం. ఈ ట్యుటోరియల్ కోసం, మేము MetaMaskను ఉపయోగిస్తాము, ఇది మీ ఇతీరియము అకౌంట్ చిరునామాను నిర్వహించడానికి ఉపయోగించే బ్రౌజర్‌లోని వర్చువల్ వాలెట్. ఇతీరియములో లావాదేవీలు ఎలా పనిచేస్తాయో మీరు మరింత అర్థం చేసుకోవాలనుకుంటే, ఇతీరియము ఫౌండేషన్ నుండి ఈ పేజీని చూడండి.

మీరు ఇక్కడ (opens in a new tab) ఉచితంగా MetaMask అకౌంట్‌ను డౌన్‌లోడ్ చేసి, సృష్టించవచ్చు. మీరు అకౌంట్‌ను సృష్టిస్తున్నప్పుడు, లేదా మీకు ఇప్పటికే అకౌంట్ ఉంటే, కుడివైపు ఎగువన ఉన్న “సెపోలియా టెస్ట్ నెట్‌వర్క్”కు మారారని నిర్ధారించుకోండి (అందువల్ల మేము నిజమైన డబ్బుతో వ్యవహరించడం లేదు).

మీ నెట్‌వర్క్‌గా సెపోలియాను సెట్ చేయండి

దశ 4: ఒక ఫాసెట్ నుండి ఈథర్‌ను జోడించండి

మా స్మార్ట్ కాంట్రాక్ట్‌ను టెస్ట్ నెట్‌వర్క్‌కి డిప్లోయ్ చేయడానికి, మాకు కొన్ని నకిలీ ETH అవసరం. ETH పొందడానికి మీరు ఆల్కెమీ హోస్ట్ చేసిన సెపోలియా ఫాసెట్ (opens in a new tab)కు వెళ్లి, లాగిన్ చేసి, మీ అకౌంట్ చిరునామాను నమోదు చేసి, “నాకు ETH పంపండి” క్లిక్ చేయండి. వెంటనే మీ MetaMask అకౌంట్‌లో మీరు ETHని చూడాలి!

దశ 5: మీ బ్యాలెన్స్‌ను తనిఖీ చేయండి

మన బ్యాలెన్స్ ఉందో లేదో రెండుసార్లు తనిఖీ చేయడానికి, ఆల్కెమీ యొక్క కంపోజర్ టూల్ (opens in a new tab)ని ఉపయోగించి eth_getBalance (opens in a new tab) అభ్యర్థన చేద్దాం. ఇది మన వాలెట్‌లోని ETH మొత్తాన్ని తిరిగి ఇస్తుంది. మీరు మీ MetaMask అకౌంట్ చిరునామాను ఇన్‌పుట్ చేసి, “అభ్యర్థన పంపు” క్లిక్ చేసిన తర్వాత, మీరు ఇలాంటి ప్రతిస్పందనను చూడాలి:

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

గమనిక ఈ ఫలితం weiలో ఉంది, ETHలో కాదు. ఈథర్ యొక్క అతి చిన్న ప్రమాణంగా వీని ఉపయోగిస్తారు. 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) అనుసరించండి (మాకు Node.js (opens in a new tab) కూడా అవసరం, కాబట్టి దానిని కూడా డౌన్‌లోడ్ చేసుకోండి!).

1npm init

ఇన్‌స్టాలేషన్ ప్రశ్నలకు మీరు ఎలా సమాధానం ఇస్తారనేది ముఖ్యం కాదు; మేము దానిని సూచన కోసం ఎలా చేసామో ఇక్కడ ఉంది:

1 package name: (my-nft)
2 version: (1.0.0)
3 description: My first NFT!
4 entry point: (index.js)
5 test command:
6 git repository:
7 keywords:
8 author:
9 license: (ISC)
10 About to write to /Users/thesuperb1/Desktop/my-nft/package.json:
11
12 {
13 "name": "my-nft",
14 "version": "1.0.0",
15 "description": "My first 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: Hardhat (opens in a new tab)ను ఇన్‌స్టాల్ చేయండి

Hardhat అనేది మీ ఇతీరియము సాఫ్ట్‌వేర్‌ను కంపైల్ చేయడానికి, డిప్లోయ్ చేయడానికి, పరీక్షించడానికి మరియు డీబగ్ చేయడానికి ఒక డెవలప్‌మెంట్ ఎన్విరాన్‌మెంట్. ఇది లైవ్ చైన్‌కు డిప్లోయ్ చేయడానికి ముందు స్థానికంగా స్మార్ట్ కాంట్రాక్ట్‌లను మరియు డాప్స్‌ను రూపొందించడంలో డెవలపర్‌లకు సహాయపడుతుంది.

మా my-nft ప్రాజెక్ట్‌లో రన్ చేయండి:

1npm install --save-dev hardhat

ఇన్‌స్టాలేషన్ సూచనల (opens in a new tab)పై మరిన్ని వివరాల కోసం ఈ పేజీని చూడండి.

దశ 8: Hardhat ప్రాజెక్ట్‌ను సృష్టించండి

మా ప్రాజెక్ట్ ఫోల్డర్‌లో రన్ చేయండి:

1npx hardhat

అప్పుడు మీరు స్వాగత సందేశం మరియు మీరు ఏమి చేయాలనుకుంటున్నారో ఎంచుకోవడానికి ఒక ఎంపికను చూడాలి. “ఖాళీ 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లో).

దశ 9: ప్రాజెక్ట్ ఫోల్డర్‌లను జోడించండి

మా ప్రాజెక్ట్‌ను క్రమబద్ధంగా ఉంచడానికి, మేము రెండు కొత్త ఫోల్డర్‌లను సృష్టిస్తాము. మీ కమాండ్ లైన్‌లోని మీ ప్రాజెక్ట్ యొక్క రూట్ డైరెక్టరీకి నావిగేట్ చేసి, టైప్ చేయండి:

1mkdir contracts
2mkdir scripts
  • contracts/ లో మేము మా NFT స్మార్ట్ కాంట్రాక్ట్ కోడ్‌ను ఉంచుతాము

  • scripts/ లో మేము మా స్మార్ట్ కాంట్రాక్ట్‌తో డిప్లోయ్ చేయడానికి మరియు ఇంటరాక్ట్ అవ్వడానికి స్క్రిప్ట్‌లను ఉంచుతాము

దశ 10: మా కాంట్రాక్ట్‌ను వ్రాయండి

ఇప్పుడు మన పర్యావరణం సెటప్ చేయబడింది, మరింత ఉత్తేజకరమైన విషయాలకు వెళ్దాం: మన స్మార్ట్ కాంట్రాక్ట్ కోడ్‌ను వ్రాయడం!

మీకు ఇష్టమైన ఎడిటర్‌లో my-nft ప్రాజెక్ట్‌ను తెరవండి (మాకు VSCode (opens in a new tab) ఇష్టం). స్మార్ట్ కాంట్రాక్ట్‌లు సొలిడిటీ అనే భాషలో వ్రాయబడ్డాయి, దీనిని మేము మా MyNFT.sol స్మార్ట్ కాంట్రాక్ట్‌ను వ్రాయడానికి ఉపయోగిస్తాము.‌

  1. contracts ఫోల్డర్‌కి నావిగేట్ చేసి, MyNFT.sol అనే కొత్త ఫైల్‌ను సృష్టించండి

  2. దిగువన మా NFT స్మార్ట్ కాంట్రాక్ట్ కోడ్ ఉంది, దీనిని మేము OpenZeppelin (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", "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 రన్ చేసి మా ఫోల్డర్‌లోకి లైబ్రరీని ఇన్‌స్టాల్ చేయండి.

కాబట్టి, ఈ కోడ్ సరిగ్గా ఏమి చేస్తుంది? దానిని లైన్-బై-లైన్ విడదీద్దాం.

మా స్మార్ట్ కాంట్రాక్ట్ పైన, మేము మూడు OpenZeppelin (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 కౌంటర్‌లను అందిస్తుంది, వీటిని ఒకటి పెంచవచ్చు లేదా తగ్గించవచ్చు. మా స్మార్ట్ కాంట్రాక్ట్ మింట్ చేయబడిన NFTల మొత్తం సంఖ్యను ట్రాక్ చేయడానికి మరియు మా కొత్త NFTలో ప్రత్యేక IDని సెట్ చేయడానికి ఒక కౌంటర్‌ను ఉపయోగిస్తుంది. (స్మార్ట్ కాంట్రాక్ట్ ఉపయోగించి మింట్ చేయబడిన ప్రతి NFTకి ఒక ప్రత్యేక ID కేటాయించబడాలి—ఇక్కడ మా ప్రత్యేక ID ఉనికిలో ఉన్న NFTల మొత్తం సంఖ్య ద్వారా నిర్ణయించబడుతుంది. ఉదాహరణకు, మా స్మార్ట్ కాంట్రాక్ట్‌తో మేము మింట్ చేసే మొదటి NFTకి ID "1" ఉంటుంది, మా రెండవ NFTకి ID "2" ఉంటుంది, మొదలైనవి.)

  • @openzeppelin/contracts/access/Ownable.sol మా స్మార్ట్ కాంట్రాక్ట్‌పై యాక్సెస్ కంట్రోల్ (opens in a new tab)ని సెటప్ చేస్తుంది, కాబట్టి స్మార్ట్ కాంట్రాక్ట్ యజమాని (మీరు) మాత్రమే NFTలను మింట్ చేయగలరు. (గమనిక, యాక్సెస్ కంట్రోల్‌ను చేర్చడం పూర్తిగా ఒక ప్రాధాన్యత. మీరు మీ స్మార్ట్ కాంట్రాక్ట్‌ను ఉపయోగించి ఎవరైనా NFTని మింట్ చేయగలిగేలా చేయాలనుకుంటే, లైన్ 10లో Ownable పదాన్ని మరియు లైన్ 17లో 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 యొక్క మెటాడేటా నిజంగా దానికి జీవం పోస్తుంది, ఇది పేరు, వివరణ, చిత్రం మరియు ఇతర లక్షణాల వంటి కాన్ఫిగర్ చేయగల లక్షణాలను కలిగి ఉండటానికి అనుమతిస్తుంది. ఈ ట్యుటోరియల్ యొక్క పార్ట్ 2లో, మేము ఈ మెటాడేటాను ఎలా కాన్ఫిగర్ చేయాలో వివరిస్తాము.

mintNFT వారసత్వంగా పొందిన ERC-721 లైబ్రరీ నుండి కొన్ని పద్ధతులను పిలుస్తుంది, మరియు చివరికి తాజాగా మింట్ చేయబడిన NFT యొక్క IDని సూచించే సంఖ్యను తిరిగి ఇస్తుంది.

దశ 11: మీ ప్రాజెక్ట్‌కు MetaMask & ఆల్కెమీని కనెక్ట్ చేయండి

ఇప్పుడు మేము ఒక MetaMask వాలెట్‌ను, ఆల్కెమీ అకౌంట్‌ను సృష్టించి, మా స్మార్ట్ కాంట్రాక్ట్‌ను వ్రాశాము, ఈ మూడింటినీ కనెక్ట్ చేసే సమయం వచ్చింది.

మీ వర్చువల్ వాలెట్ నుండి పంపిన ప్రతి లావాదేవీకి మీ ప్రత్యేక ప్రైవేట్ కీని ఉపయోగించి ఒక సంతకం అవసరం. మా ప్రోగ్రామ్‌కు ఈ అనుమతిని అందించడానికి, మేము మా ప్రైవేట్ కీని (మరియు ఆల్కెమీ API కీని) ఒక ఎన్విరాన్‌మెంట్ ఫైల్‌లో సురక్షితంగా నిల్వ చేయవచ్చు.

లావాదేవీలను పంపడం గురించి మరింత తెలుసుకోవడానికి, వెబ్3ని ఉపయోగించి లావాదేవీలను పంపడంపై ఈ ట్యుటోరియల్ను చూడండి.

మొదట, మీ ప్రాజెక్ట్ డైరెక్టరీలో dotenv ప్యాకేజీని ఇన్‌స్టాల్ చేయండి:

1npm install dotenv --save

అప్పుడు, మా ప్రాజెక్ట్ యొక్క రూట్ డైరెక్టరీలో .env ఫైల్‌ను సృష్టించి, మీ MetaMask ప్రైవేట్ కీ మరియు HTTP ఆల్కెమీ API URLను దానికి జోడించండి.

  • MetaMask నుండి మీ ప్రైవేట్ కీని ఎగుమతి చేయడానికి ఈ సూచనలను (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"

వీటిని వాస్తవానికి మా కోడ్‌కు కనెక్ట్ చేయడానికి, మేము దశ 13లో మా hardhat.config.js ఫైల్‌లో ఈ వేరియబుల్స్‌ను సూచిస్తాము.

దశ 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లో కూడా ఈథర్స్ అవసరం.

దశ 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 లైసెన్స్ ఐడెంటిఫైయర్ అందించబడలేదని ఒక హెచ్చరిక రావచ్చు, కానీ దాని గురించి చింతించాల్సిన అవసరం లేదు — మిగతా అంతా బాగానే ఉంటుందని ఆశిస్తున్నాము! కాకపోతే, మీరు ఎల్లప్పుడూ ఆల్కెమీ డిస్కార్డ్ (opens in a new tab)లో సందేశం పంపవచ్చు.

దశ 15: మా డిప్లోయ్ స్క్రిప్ట్‌ను వ్రాయండి

ఇప్పుడు మా కాంట్రాక్ట్ వ్రాయబడింది మరియు మా కాన్ఫిగరేషన్ ఫైల్ సిద్ధంగా ఉంది, మా కాంట్రాక్ట్ డిప్లోయ్ స్క్రిప్ట్‌ను వ్రాసే సమయం వచ్చింది.

scripts/ ఫోల్డర్‌కి నావిగేట్ చేసి, deploy.js అనే కొత్త ఫైల్‌ను సృష్టించి, దానికి క్రింది కంటెంట్‌లను జోడించండి:

1async function main() {
2 const MyNFT = await ethers.getContractFactory("MyNFT")
3
4 // Start deployment, returning a promise that resolves to a contract object
5 const myNFT = await MyNFT.deploy()
6 await myNFT.deployed()
7 console.log("Contract deployed to address:", 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లోని ఒక కాంట్రాక్ట్‌ఫ్యాక్టరీ కొత్త స్మార్ట్ కాంట్రాక్ట్‌లను డిప్లోయ్ చేయడానికి ఉపయోగించే ఒక సంగ్రహణ, కాబట్టి ఇక్కడ MyNFT అనేది మా NFT కాంట్రాక్ట్ యొక్క ఉదాహరణల కోసం ఒక ఫ్యాక్టరీ. hardhat-ethers ప్లగిన్‌ను ఉపయోగిస్తున్నప్పుడు కాంట్రాక్ట్‌ఫ్యాక్టరీ మరియు కాంట్రాక్ట్ ఉదాహరణలు డిఫాల్ట్‌గా మొదటి సంతకం చేసేవారికి కనెక్ట్ చేయబడతాయి.

1const myNFT = await MyNFT.deploy();

ఒక కాంట్రాక్ట్‌ఫ్యాక్టరీపై deploy()ని కాల్ చేయడం డిప్లోయ్‌మెంట్‌ను ప్రారంభిస్తుంది, మరియు ఒక కాంట్రాక్ట్‌కు పరిష్కరించే ఒక ప్రామిస్‌ను తిరిగి ఇస్తుంది. ఇది మా స్మార్ట్ కాంట్రాక్ట్ ఫంక్షన్‌ల ప్రతిదానికీ ఒక పద్ధతిని కలిగి ఉన్న ఆబ్జెక్ట్.

దశ 16: మా కాంట్రాక్ట్‌ను డిప్లోయ్ చేయండి

మేము చివరికి మా స్మార్ట్ కాంట్రాక్ట్‌ను డిప్లోయ్ చేయడానికి సిద్ధంగా ఉన్నాము! మీ ప్రాజెక్ట్ డైరెక్టరీ యొక్క రూట్‌కు తిరిగి నావిగేట్ చేసి, కమాండ్ లైన్‌లో రన్ చేయండి:

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

మీరు అప్పుడు ఇలాంటిది చూడాలి:

1కాంట్రాక్ట్ డిప్లోయ్ చేయబడిన చిరునామా: 0x4C5266cCc4b3F426965d2f51b6D910325a0E7650

మేము సెపోలియా ఈథర్‌స్కాన్ (opens in a new tab)కి వెళ్లి, మా కాంట్రాక్ట్ చిరునామా కోసం శోధిస్తే, అది విజయవంతంగా డిప్లోయ్ చేయబడిందని మనం చూడగలుగుతాము. మీరు వెంటనే దానిని చూడలేకపోతే, దయచేసి కొంతసేపు వేచి ఉండండి, ఎందుకంటే దీనికి కొంత సమయం పట్టవచ్చు. లావాదేవీ ఇలా కనిపిస్తుంది:

Etherscanలో మీ లావాదేవీ చిరునామాను వీక్షించండి

నుండి చిరునామా మీ MetaMask అకౌంట్ చిరునామాతో సరిపోలాలి మరియు కు చిరునామా “కాంట్రాక్ట్ క్రియేషన్” అని చెబుతుంది. మనం లావాదేవీలోకి క్లిక్ చేస్తే, కు ఫీల్డ్‌లో మన కాంట్రాక్ట్ చిరునామాను చూస్తాము:

Etherscanలో మీ కాంట్రాక్ట్ చిరునామాను వీక్షించండి

అద్భుతం! మీరు ఇప్పుడే మీ NFT స్మార్ట్ కాంట్రాక్ట్‌ను ఇతీరియము (టెస్టునెట్) చైన్‌కు డిప్లోయ్ చేసారు!

తెర వెనుక ఏమి జరుగుతుందో అర్థం చేసుకోవడానికి, మా ఆల్కెమీ డాష్‌బోర్డ్ (opens in a new tab)లోని ఎక్స్‌ప్లోరర్ ట్యాబ్‌కు నావిగేట్ చేద్దాం. మీకు బహుళ ఆల్కెమీ యాప్‌లు ఉంటే, యాప్ ద్వారా ఫిల్టర్ చేసి “MyNFT”ని ఎంచుకున్నారని నిర్ధారించుకోండి.

ఆల్కెమీ యొక్క ఎక్స్‌ప్లోరర్ డాష్‌బోర్డ్‌తో “తెర వెనుక” చేసిన కాల్స్‌ను వీక్షించండి

ఇక్కడ మీరు Hardhat/Ethers మా కోసం .deploy() ఫంక్షన్‌ను కాల్ చేసినప్పుడు తెర వెనుక చేసిన కొన్ని JSON-RPC కాల్స్‌ను చూస్తారు. ఇక్కడ రెండు ముఖ్యమైనవి eth_sendRawTransaction, ఇది వాస్తవానికి మా స్మార్ట్ కాంట్రాక్ట్‌ను సెపోలియా చైన్‌పై వ్రాయడానికి చేసే అభ్యర్థన, మరియు eth_getTransactionByHash ఇది హాష్ ఇచ్చినప్పుడు మా లావాదేవీ గురించి సమాచారాన్ని చదవడానికి చేసే అభ్యర్థన (లావాదేవీలను పంపేటప్పుడు ఒక సాధారణ నమూనా). లావాదేవీలను పంపడం గురించి మరింత తెలుసుకోవడానికి, వెబ్3ని ఉపయోగించి లావాదేవీలను పంపడంపై ఈ ట్యుటోరియల్‌ను చూడండి.

ఈ ట్యుటోరియల్ యొక్క పార్ట్ 1 కోసం ఇంతే. పార్ట్ 2లో, మేము వాస్తవానికి ఒక NFTని మింట్ చేయడం ద్వారా మా స్మార్ట్ కాంట్రాక్ట్‌తో ఇంటరాక్ట్ అవుతాము, మరియు పార్ట్ 3లో మీ ఇతీరియము వాలెట్‌లో మీ NFTని ఎలా చూడాలో మీకు చూపిస్తాము!

పేజీ చివరి అప్‌డేట్: 5 డిసెంబర్, 2025

ఈ ట్యుటోరియల్ ఉపయోగపడిందా?