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

NFT कसे मिंट करावे (NFT ट्युटोरियल मालिकेचा भाग 2/3)

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

बीपल (opens in a new tab): $69 दशलक्ष 3LAU (opens in a new tab): $11 दशलक्ष ग्राइम्स (opens in a new tab): $6 दशलक्ष

त्या सर्वांनी Alchemy च्या शक्तिशाली API चा वापर करून त्यांचे NFTs मिंट केले. या ट्युटोरियलमध्ये, आम्ही तुम्हाला <10 मिनिटांत तेच कसे करायचे हे शिकवू.

"NFT मिंट करणे" म्हणजे ब्लॉकचेनवर तुमच्या ERC-721 टोकनची एक अद्वितीय प्रत प्रकाशित करण्याची क्रिया. या NFT ट्युटोरियल मालिकेच्या भाग १ मधील आमचा स्मार्ट कॉन्ट्रॅक्ट वापरून, चला आपले Web3 कौशल्य दाखवूया आणि एक NFT मिंट करूया. या ट्युटोरियलच्या शेवटी, तुम्ही तुमच्या मनाला (आणि वॉलेटला) हवे तितके NFTs मिंट करू शकाल!

चला सुरू करूया!

पायरी १: Web3 इंस्टॉल करा

जर तुम्ही तुमचा NFT स्मार्ट कॉन्ट्रॅक्ट तयार करण्यावरील पहिले ट्युटोरियल फॉलो केले असेल, तर तुम्हाला Ethers.js वापरण्याचा अनुभव आधीच आहे. Web3 हे Ethers सारखेच आहे, कारण ही एक लायब्ररी आहे जी Ethereum ब्लॉकचेनला विनंत्या करणे सोपे करण्यासाठी वापरली जाते. या ट्युटोरियलमध्ये आपण Alchemy Web3 (opens in a new tab) वापरणार आहोत, जी एक वर्धित Web3 लायब्ररी आहे जी स्वयंचलित पुनर्प्रयत्न आणि मजबूत WebSocket सपोर्ट देते.

तुमच्या प्रोजेक्ट होम डिरेक्टरीमध्ये चालवा:

1npm install @alch/alchemy-web3

पायरी २: mint-nft.js फाईल तयार करा

तुमच्या स्क्रिप्ट्स डिरेक्टरीमध्ये, mint-nft.js फाईल तयार करा आणि कोडच्या खालील ओळी जोडा:

1require("dotenv").config()
2const API_URL = process.env.API_URL
3const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
4const web3 = createAlchemyWeb3(API_URL)

पायरी ३: तुमचा कॉन्ट्रॅक्ट ABI मिळवा

आमचा कॉन्ट्रॅक्ट ABI (ऍप्लिकेशन बायनरी इंटरफेस) हा आमच्या स्मार्ट कॉन्ट्रॅक्टशी संवाद साधण्यासाठी इंटरफेस आहे. तुम्ही कॉन्ट्रॅक्ट ABI बद्दल अधिक माहिती येथे (opens in a new tab) मिळवू शकता. Hardhat आमच्यासाठी आपोआप एक ABI तयार करते आणि ते MyNFT.json फाईलमध्ये सेव्ह करते. हे वापरण्यासाठी, आपल्याला आपल्या mint-nft.js फाईलमध्ये कोडच्या खालील ओळी जोडून मजकूर पार्स करणे आवश्यक आहे:

1const contract = require("../artifacts/contracts/MyNFT.sol/MyNFT.json")

जर तुम्हाला ABI पाहायचा असेल तर तुम्ही ते तुमच्या कन्सोलवर प्रिंट करू शकता:

1console.log(JSON.stringify(contract.abi))

mint-nft.js चालवण्यासाठी आणि तुमचा ABI कन्सोलवर प्रिंट झालेला पाहण्यासाठी तुमच्या टर्मिनलवर नेव्हिगेट करा आणि चालवा:

1node scripts/mint-nft.js

पायरी ४: IPFS वापरून तुमच्या NFT साठी मेटाडेटा कॉन्फिगर करा

तुम्हाला भाग 1 मधील आमच्या ट्युटोरियलमधून आठवत असेल तर, आमचे mintNFT स्मार्ट कॉन्ट्रॅक्ट फंक्शन एक tokenURI पॅरामीटर घेते जे NFT च्या मेटाडेटाचे वर्णन करणाऱ्या JSON डॉक्युमेंटमध्ये रिझॉल्व्ह झाले पाहिजे — जे खरोखर NFT ला जिवंत करते, त्याला नाव, वर्णन, प्रतिमा आणि इतर गुणधर्मांसारखे कॉन्फिगर करण्यायोग्य गुणधर्म ठेवण्याची परवानगी देते.

इंटरप्लॅनेटरी फाईल सिस्टम (IPFS) हा एक विकेंद्रित प्रोटोकॉल आणि पीअर-टू-पीअर नेटवर्क आहे, जो वितरित फाईल सिस्टममध्ये डेटा संग्रहित आणि शेअर करण्यासाठी आहे.

आपला NFT खरोखर विकेंद्रित आहे याची खात्री करण्यासाठी, आपण आपली NFT मालमत्ता आणि मेटाडेटा संग्रहित करण्यासाठी Pinata, एक सोयीस्कर IPFS API आणि टूलकिट वापरणार आहोत. तुमचे Pinata खाते नसल्यास, येथे (opens in a new tab) विनामूल्य खात्यासाठी साइन अप करा आणि तुमचा ईमेल सत्यापित करण्यासाठी पायऱ्या पूर्ण करा.

एकदा तुम्ही खाते तयार केल्यानंतर:

  • "फाईल्स" पेजवर नेव्हिगेट करा आणि पेजच्या वरच्या-डाव्या कोपऱ्यात असलेल्या निळ्या "अपलोड" बटणावर क्लिक करा.

  • Pinata वर एक प्रतिमा अपलोड करा — ही तुमच्या NFT साठी प्रतिमा मालमत्ता असेल. मालमत्तेला तुम्हाला हवे ते नाव देण्यास मोकळे आहात

  • तुम्ही अपलोड केल्यानंतर, तुम्हाला "फाईल्स" पेजवरील टेबलमध्ये फाईलची माहिती दिसेल. तुम्हाला एक CID स्तंभ देखील दिसेल. तुम्ही त्याच्या पुढील कॉपी बटणावर क्लिक करून CID कॉपी करू शकता. तुम्ही तुमचे अपलोड येथे पाहू शकता: https://gateway.pinata.cloud/ipfs/<CID>. उदाहरणार्थ, आम्ही IPFS वर वापरलेली प्रतिमा तुम्ही येथे (opens in a new tab) शोधू शकता.

अधिक दृष्य शिकणाऱ्यांसाठी, वरील पायऱ्या येथे सारांशित केल्या आहेत:

तुमची प्रतिमा Pinata वर कशी अपलोड करावी

आता, आम्हाला Pinata वर आणखी एक दस्तऐवज अपलोड करायचा आहे. पण ते करण्यापूर्वी, आपल्याला ते तयार करणे आवश्यक आहे!

तुमच्या रूट डिरेक्टरीमध्ये, nft-metadata.json नावाची एक नवीन फाईल बनवा आणि खालील json कोड जोडा:

1{
2 "attributes": [
3 {
4 "trait_type": "जात",
5 "value": "Maltipoo"
6 },
7 {
8 "trait_type": "डोळ्यांचा रंग",
9 "value": "Mocha"
10 }
11 ],
12 "description": "जगातील सर्वात मोहक आणि संवेदनशील पिल्लू.",
13 "image": "ipfs://QmWmvTJmJU3pozR9ZHFmQC2DNDwi2XJtf3QGyYiiagFSWb",
14 "name": "Ramses"
15}
सर्व दाखवा

json मधील डेटा बदलण्यास मोकळे आहात. तुम्ही ऍट्रिब्युट्स विभागातून काढू किंवा त्यात भर घालू शकता. सर्वात महत्त्वाचे म्हणजे, इमेज फील्ड तुमच्या IPFS प्रतिमेच्या स्थानाकडे निर्देश करते याची खात्री करा — अन्यथा, तुमच्या NFT मध्ये एका (खूप गोंडस!) कुत्र्याचा फोटो समाविष्ट असेल.

एकदा तुम्ही JSON फाईल संपादित करणे पूर्ण केले की, ती सेव्ह करा आणि प्रतिमा अपलोड करण्यासाठी आम्ही केलेल्या त्याच पायऱ्यांचे अनुसरण करून Pinata वर अपलोड करा.

तुमचे nft-metadata.json Pinata वर कसे अपलोड करायचे

पायरी ५: तुमच्या कॉन्ट्रॅक्टची एक प्रत तयार करा

आता, आमच्या कॉन्ट्रॅक्टशी संवाद साधण्यासाठी, आपल्याला आमच्या कोडमध्ये त्याची एक प्रत तयार करणे आवश्यक आहे. असे करण्यासाठी आम्हाला आमच्या कॉन्ट्रॅक्ट ॲड्रेसची आवश्यकता असेल, जो आपण डिप्लॉयमेंटमधून किंवा Blockscout (opens in a new tab) वरून तुम्ही कॉन्ट्रॅक्ट डिप्लॉय करण्यासाठी वापरलेला ॲड्रेस शोधून मिळवू शकतो.

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

वरील उदाहरणात, आमचा कॉन्ट्रॅक्ट ॲड्रेस 0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778 आहे.

पुढे आपण ABI आणि ॲड्रेस वापरून आपला कॉन्ट्रॅक्ट तयार करण्यासाठी Web3 कॉन्ट्रॅक्ट पद्धत (opens in a new tab) वापरू. तुमच्या mint-nft.js फाईलमध्ये, खालील गोष्टी जोडा:

1const contractAddress = "0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778"
2
3const nftContract = new web3.eth.Contract(contract.abi, contractAddress)

पायरी ६: .env फाईल अपडेट करा

आता, Ethereum चेनवर व्यवहार तयार करण्यासाठी आणि पाठवण्यासाठी, आम्ही खाते नॉन्स (खाली स्पष्ट करू) मिळवण्यासाठी तुमचा सार्वजनिक Ethereum खाते ॲड्रेस वापरू.

तुमची सार्वजनिक की तुमच्या .env फाईलमध्ये जोडा — जर तुम्ही ट्युटोरियलचा भाग १ पूर्ण केला असेल, तर आमची .env फाईल आता अशी दिसेल:

1API_URL = "https://eth-sepolia.g.alchemy.com/v2/तुमची-api-की"
2PRIVATE_KEY = "तुमचा-खाजगी-खाते-ॲड्रेस"
3PUBLIC_KEY = "तुमचा-सार्वजनिक-खाते-ॲड्रेस"

पायरी ७: तुमचा व्यवहार तयार करा

प्रथम, mintNFT(tokenData) नावाचे एक फंक्शन परिभाषित करूया आणि खालील गोष्टी करून आपला व्यवहार तयार करूया:

  1. .env फाईलमधून तुमची PRIVATE_KEY आणि PUBLIC_KEY मिळवा.

  2. पुढे, आपल्याला खाते नॉन्स शोधण्याची आवश्यकता असेल. नॉन्स स्पेसिफिकेशनचा वापर तुमच्या ॲड्रेसवरून पाठवलेल्या व्यवहारांच्या संख्येचा मागोवा ठेवण्यासाठी केला जातो — ज्याची आम्हाला सुरक्षिततेच्या उद्देशाने आणि रिप्ले हल्ले (opens in a new tab) टाळण्यासाठी आवश्यकता आहे. तुमच्या ॲड्रेसवरून पाठवलेल्या व्यवहारांची संख्या मिळवण्यासाठी, आम्ही getTransactionCount (opens in a new tab) वापरतो.

  3. शेवटी आम्ही खालील माहितीसह आमचा व्यवहार सेट करू:

  • 'from': PUBLIC_KEY — आमच्या व्यवहाराचा उगम आमचा सार्वजनिक ॲड्रेस आहे

  • 'to': contractAddress — ज्या कॉन्ट्रॅक्टशी आम्ही संवाद साधू आणि व्यवहार पाठवू इच्छितो

  • 'nonce': nonce — आमच्या ॲड्रेसवरून पाठवलेल्या व्यवहारांच्या संख्येसह खाते नॉन्स

  • 'gas': estimatedGas — व्यवहार पूर्ण करण्यासाठी लागणारा अंदाजित गॅस

  • 'data': nftContract.methods.mintNFT(PUBLIC_KEY, md).encodeABI() — या व्यवहारामध्ये आपण जी गणना करू इच्छितो — जी या प्रकरणात NFT मिंट करणे आहे

तुमची mint-nft.js फाईल आता अशी दिसेल:

1 require('dotenv').config();
2 const API_URL = process.env.API_URL;
3 const PUBLIC_KEY = process.env.PUBLIC_KEY;
4 const PRIVATE_KEY = process.env.PRIVATE_KEY;
5
6 const { createAlchemyWeb3 } = require("@alch/alchemy-web3");
7 const web3 = createAlchemyWeb3(API_URL);
8
9 const contract = require("../artifacts/contracts/MyNFT.sol/MyNFT.json");
10 const contractAddress = "0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778";
11 const nftContract = new web3.eth.Contract(contract.abi, contractAddress);
12
13 async function mintNFT(tokenURI) {
14 const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, 'latest'); //नवीनतम नॉन्स मिळवा
15
16 //व्यवहार
17 const tx = {
18 'from': PUBLIC_KEY,
19 'to': contractAddress,
20 'nonce': nonce,
21 'gas': 500000,
22 'data': nftContract.methods.mintNFT(PUBLIC_KEY, tokenURI).encodeABI()
23 };
24 }
सर्व दाखवा

पायरी ८: व्यवहारावर सही करा

आता आपण आपला व्यवहार तयार केला आहे, तो पाठवण्यासाठी आपल्याला त्यावर सही करणे आवश्यक आहे. येथे आपण आपली खाजगी की वापरू.

web3.eth.sendSignedTransaction आपल्याला व्यवहाराचा हॅश देईल, ज्याचा वापर आपण आपला व्यवहार माइन झाला आहे आणि नेटवर्कद्वारे तो ड्रॉप झाला नाही याची खात्री करण्यासाठी करू शकतो. तुमच्या लक्षात येईल की व्यवहार स्वाक्षरी विभागात, आम्ही काही त्रुटी तपासणी जोडली आहे जेणेकरून आपला व्यवहार यशस्वीरित्या पार पडला की नाही हे आपल्याला कळेल.

1require("dotenv").config()
2const API_URL = process.env.API_URL
3const PUBLIC_KEY = process.env.PUBLIC_KEY
4const PRIVATE_KEY = process.env.PRIVATE_KEY
5
6const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
7const web3 = createAlchemyWeb3(API_URL)
8
9const contract = require("../artifacts/contracts/MyNFT.sol/MyNFT.json")
10const contractAddress = "0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778"
11const nftContract = new web3.eth.Contract(contract.abi, contractAddress)
12
13async function mintNFT(tokenURI) {
14 const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, "latest") //नवीनतम नॉन्स मिळवा
15
16 //व्यवहार
17 const tx = {
18 from: PUBLIC_KEY,
19 to: contractAddress,
20 nonce: nonce,
21 gas: 500000,
22 data: nftContract.methods.mintNFT(PUBLIC_KEY, tokenURI).encodeABI(),
23 }
24
25 const signPromise = web3.eth.accounts.signTransaction(tx, PRIVATE_KEY)
26 signPromise
27 .then((signedTx) => {
28 web3.eth.sendSignedTransaction(
29 signedTx.rawTransaction,
30 function (err, hash) {
31 if (!err) {
32 console.log(
33 "तुमच्या व्यवहाराचा हॅश आहे: ",
34 hash,
35 "\nतुमच्या व्यवहाराची स्थिती पाहण्यासाठी Alchemy's Mempool तपासा!"
36 )
37 } else {
38 console.log(
39 "तुमचा व्यवहार सबमिट करताना काहीतरी चूक झाली:",
40 err
41 )
42 }
43 }
44 )
45 })
46 .catch((err) => {
47 console.log(" Promise अयशस्वी झाले:", err)
48 })
49}
सर्व दाखवा

पायरी ९: mintNFT ला कॉल करा आणि नोड mint-nft.js चालवा

तुम्ही Pinata वर अपलोड केलेली metadata.json आठवते का? Pinata वरून त्याचा हॅशकोड मिळवा आणि mintNFT फंक्शनला पॅरामीटर म्हणून https://gateway.pinata.cloud/ipfs/<मेटाडेटा-हॅश-कोड> पास करा

हॅशकोड कसा मिळवायचा ते येथे आहे:

Pinata वर तुमच्या nft मेटाडेटाचा हॅशकोड कसा मिळवायचाPinata वर तुमच्या nft मेटाडेटाचा हॅशकोड कसा मिळवायचा

स्वतंत्र विंडोमध्ये https://gateway.pinata.cloud/ipfs/<मेटाडेटा-हॅश-कोड> लोड करून तुम्ही कॉपी केलेला हॅशकोड तुमच्या metadata.json शी लिंक आहे का हे पुन्हा तपासा. हे पेज खालील स्क्रीनशॉटसारखे दिसावे:

तुमच्या पेजवर json मेटाडेटा प्रदर्शित झाला पाहिजेतुमच्या पेजवर json मेटाडेटा प्रदर्शित झाला पाहिजे

एकूण, तुमचा कोड काहीसा असा दिसेल:

1require("dotenv").config()
2const API_URL = process.env.API_URL
3const PUBLIC_KEY = process.env.PUBLIC_KEY
4const PRIVATE_KEY = process.env.PRIVATE_KEY
5
6const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
7const web3 = createAlchemyWeb3(API_URL)
8
9const contract = require("../artifacts/contracts/MyNFT.sol/MyNFT.json")
10const contractAddress = "0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778"
11const nftContract = new web3.eth.Contract(contract.abi, contractAddress)
12
13async function mintNFT(tokenURI) {
14 const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, "latest") //नवीनतम नॉन्स मिळवा
15
16 //व्यवहार
17 const tx = {
18 from: PUBLIC_KEY,
19 to: contractAddress,
20 nonce: nonce,
21 gas: 500000,
22 data: nftContract.methods.mintNFT(PUBLIC_KEY, tokenURI).encodeABI(),
23 }
24
25 const signPromise = web3.eth.accounts.signTransaction(tx, PRIVATE_KEY)
26 signPromise
27 .then((signedTx) => {
28 web3.eth.sendSignedTransaction(
29 signedTx.rawTransaction,
30 function (err, hash) {
31 if (!err) {
32 console.log(
33 "तुमच्या व्यवहाराचा हॅश आहे: ",
34 hash,
35 "\nतुमच्या व्यवहाराची स्थिती पाहण्यासाठी Alchemy's Mempool तपासा!"
36 )
37 } else {
38 console.log(
39 "तुमचा व्यवहार सबमिट करताना काहीतरी चूक झाली:",
40 err
41 )
42 }
43 }
44 )
45 })
46 .catch((err) => {
47 console.log("Promise अयशस्वी झाले:", err)
48 })
49}
50
51mintNFT("ipfs://QmYueiuRNmL4MiA2GwtVMm6ZagknXnSpQnB3z2gWbz36hP")
सर्व दाखवा

आता, तुमचा NFT डिप्लॉय करण्यासाठी node scripts/mint-nft.js चालवा. काही सेकंदांनंतर, तुम्हाला तुमच्या टर्मिनलमध्ये असा प्रतिसाद दिसेल:

1तुमच्या व्यवहाराचा हॅश आहे: 0x301791fdf492001fcd9d5e5b12f3aa1bbbea9a88ed24993a8ab2cdae2d06e1e8
2
3तुमच्या व्यवहाराची स्थिती पाहण्यासाठी Alchemy's Mempool तपासा!

पुढे, तुमच्या व्यवहाराची स्थिती (तो प्रलंबित आहे, माइन झाला आहे, किंवा नेटवर्कद्वारे ड्रॉप झाला आहे) पाहण्यासाठी तुमच्या Alchemy mempool (opens in a new tab) ला भेट द्या. तुमचा व्यवहार ड्रॉप झाला असल्यास, Blockscout (opens in a new tab) तपासणे आणि तुमच्या व्यवहाराचा हॅश शोधणे देखील उपयुक्त आहे.

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

आणि बस्स! तुम्ही आता Ethereum ब्लॉकचेनवर एक NFT डिप्लॉय आणि मिंट केला आहे

mint-nft.js वापरून तुम्ही तुमच्या मनाला (आणि वॉलेटला) हवे तितके NFTs मिंट करू शकता! फक्त NFT च्या मेटाडेटाचे वर्णन करणारा एक नवीन tokenURI पास करण्याची खात्री करा (अन्यथा, तुम्ही फक्त वेगवेगळ्या आयडीसह सारख्याच अनेक प्रती तयार कराल).

साहजिकच, तुम्हाला तुमच्या वॉलेटमध्ये तुमचा NFT दाखवायला आवडेल — म्हणून भाग ३: तुमच्या वॉलेटमध्ये तुमचा NFT कसा पाहावा नक्की पहा!

पृष्ठ अखेरचे अद्यतन: २३ फेब्रुवारी, २०२६

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