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

एनएफटी की टकसाल कैसे करें (एनएफटी ट्यूटोरियल सीरीज़ का भाग 2/3)

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

Beeple (opens in a new tab): $69 मिलियन 3LAU (opens in a new tab): $11 मिलियन Grimes (opens in a new tab): $6 मिलियन

उन सभी ने अल्केमी के शक्तिशाली API का उपयोग करके अपने एनएफटीज़ की टकसाल की। इस ट्यूटोरियल में, हम आपको सिखाएंगे कि <10 मिनट में यही कैसे करें।

"एनएफटी की टकसाल करना" ब्लॉकचेन पर आपके ERC-721 टोकन के एक अद्वितीय उदाहरण को प्रकाशित करने की प्रक्रिया है। इस एनएफटी ट्यूटोरियल सीरीज़ के भाग 1 से हमारे स्मार्ट अनुबंध का उपयोग करके, आइए अपने वेब3 कौशल को प्रदर्शित करें और एक एनएफटी की टकसाल करें। इस ट्यूटोरियल के अंत में, आप उतने एनएफटी की टकसाल कर पाएँगे जितने आपका दिल (और वॉलेट) चाहे!

आइए शुरू करते हैं!

चरण 1: वेब3 इंस्टॉल करें

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

अपनी प्रोजेक्ट होम डायरेक्टरी में चलाएँ:

1npm install @alch/alchemy-web3

चरण 2: एक 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)

चरण 3: अपना अनुबंध ABI प्राप्त करें

हमारा अनुबंध ABI (एप्लिकेशन बाइनरी इंटरफ़ेस) हमारे स्मार्ट अनुबंध के साथ इंटरैक्ट करने का इंटरफ़ेस है। आप अनुबंध ABI के बारे में यहाँ (opens in a new tab) और जान सकते हैं। हार्डहैट स्वचालित रूप से हमारे लिए एक 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

चरण 4: आईपीएफएस का उपयोग करके अपने एनएफटी के लिए मेटाडेटा कॉन्फ़िगर करें

यदि आपको भाग 1 के हमारे ट्यूटोरियल से याद है, तो हमारा mintNFT स्मार्ट अनुबंध फ़ंक्शन एक tokenURI पैरामीटर लेता है जिसे एनएफटी के मेटाडेटा का वर्णन करने वाले JSON दस्तावेज़ में रिज़ाॅल्व होना चाहिए— जो वास्तव में एनएफटी को जीवंत बनाता है, जिससे इसमें नाम, विवरण, छवि और अन्य विशेषताओं जैसे कॉन्फ़िगर करने योग्य गुण होते हैं।

इंटरप्लेनेटरी फ़ाइल सिस्टम (आईपीएफएस) एक वितरित फ़ाइल सिस्टम में डेटा को संग्रहीत और साझा करने के लिए एक विकेन्द्रीकृत प्रोटोकॉल और पीयर-टू-पीयर नेटवर्क है।

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

एक बार जब आप एक खाता बना लेते हैं:

  • "फ़ाइलें" पेज पर जाएँ और पेज के ऊपर-बाईं ओर नीले "अपलोड" बटन पर क्लिक करें।

  • पिनाटा पर एक छवि अपलोड करें — यह आपके एनएफटी के लिए छवि संपत्ति होगी। आप एसेट का जो भी चाहें नाम रख सकते हैं

  • अपलोड करने के बाद, आप "फ़ाइलें" पेज पर तालिका में फ़ाइल की जानकारी देखेंगे। आपको एक CID कॉलम भी दिखाई देगा। आप इसके आगे वाले कॉपी बटन पर क्लिक करके CID कॉपी कर सकते हैं। आप अपना अपलोड यहाँ देख सकते हैं: https://gateway.pinata.cloud/ipfs/<CID>। उदाहरण के लिए, हमारे द्वारा आईपीएफएस पर उपयोग की गई छवि आप यहाँ (opens in a new tab) देख सकते हैं।

विज़ुअल शिक्षार्थियों के लिए, उपरोक्त चरणों का सारांश यहाँ दिया गया है:

पिनाटा पर अपनी छवि कैसे अपलोड करें

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

अपनी रूट डायरेक्टरी में, 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 में डेटा बदलने के लिए स्वतंत्र हैं। आप एट्रिब्यूट सेक्शन को हटा या उसमें जोड़ सकते हैं। सबसे महत्वपूर्ण बात, यह सुनिश्चित करें कि छवि फ़ील्ड आपकी आईपीएफएस छवि के स्थान को इंगित करता है — अन्यथा, आपके एनएफटी में एक (बहुत प्यारे!) की तस्वीर शामिल होगी कुत्ते की।

एक बार जब आप JSON फ़ाइल का संपादन कर लें, तो उसे सेव कर लें और छवि अपलोड करने के लिए हमने जो चरण अपनाए थे, उन्हीं का पालन करते हुए उसे पिनाटा पर अपलोड करें।

अपनी nft-metadata.json को पिनाटा पर कैसे अपलोड करें

चरण 5: अपने अनुबंध का एक उदाहरण बनाएँ

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

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

उपरोक्त उदाहरण में, हमारा अनुबंध पता 0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778 है।

इसके बाद हम ABI और पते का उपयोग करके अपना अनुबंध बनाने के लिए वेब3 अनुबंध विधि (opens in a new tab) का उपयोग करेंगे। अपनी mint-nft.js फ़ाइल में, निम्नलिखित जोड़ें:

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

चरण 6: .env फ़ाइल को अपडेट करें

अब, एथेरियम चेन पर लेनदेन बनाने और भेजने के लिए, हम खाते का नॉन्स (नीचे समझाएँगे) प्राप्त करने के लिए आपके सार्वजनिक एथेरियम खाते के पते का उपयोग करेंगे।

अपनी सार्वजनिक कुंजी को अपनी .env फ़ाइल में जोड़ें — यदि आपने ट्यूटोरियल का भाग 1 पूरा कर लिया है, तो हमारी .env फ़ाइल अब इस तरह दिखनी चाहिए:

1API_URL = "https://eth-sepolia.g.alchemy.com/v2/your-api-key"
2PRIVATE_KEY = "your-private-account-address"
3PUBLIC_KEY = "your-public-account-address"

चरण 7: अपना लेनदेन बनाएँ

सबसे पहले, आइए 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() — वह गणना जो हम इस लेनदेन में करना चाहते हैं — जो इस मामले में एक एनएफटी की टकसाल है

अब आपकी 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 }
सभी दिखाएँ

चरण 8: लेनदेन पर हस्ताक्षर करें

अब जब हमने अपना लेनदेन बना लिया है, तो इसे भेजने के लिए हमें इस पर हस्ताक्षर करने की आवश्यकता है। यहाँ हम अपनी निजी कुंजी का उपयोग करेंगे।

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 के मेमपूल की जाँच करें!"
36 )
37 } else {
38 console.log(
39 "आपका लेनदेन सबमिट करते समय कुछ गलत हो गया:",
40 err
41 )
42 }
43 }
44 )
45 })
46 .catch((err) => {
47 console.log(" वादा विफल हुआ:", err)
48 })
49}
सभी दिखाएँ

चरण 9: mintNFT को कॉल करें और नोड mint-nft.js चलाएँ

आपको वह metadata.json याद है जिसे आपने पिनाटा पर अपलोड किया था? पिनाटा से इसका हैशकोड प्राप्त करें और निम्नलिखित को mintNFT फ़ंक्शन में पैरामीटर के रूप में पास करें https://gateway.pinata.cloud/ipfs/<metadata-hash-code>

हैशकोड प्राप्त करने का तरीका यहाँ दिया गया है:

पिनाटा पर अपना nft मेटाडेटा हैशकोड कैसे प्राप्त करेंPinata पर अपना nft मेटाडेटा हैशकोड कैसे प्राप्त करें

https://gateway.pinata.cloud/ipfs/<metadata-hash-code> को एक अलग विंडो में लोड करके दोबारा जाँच लें कि आपके द्वारा कॉपी किया गया हैशकोड आपकी 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 के मेमपूल की जाँच करें!"
36 )
37 } else {
38 console.log(
39 "आपका लेनदेन सबमिट करते समय कुछ गलत हो गया:",
40 err
41 )
42 }
43 }
44 )
45 })
46 .catch((err) => {
47 console.log("वादा विफल हुआ:", err)
48 })
49}
50
51mintNFT("ipfs://QmYueiuRNmL4MiA2GwtVMm6ZagknXnSpQnB3z2gWbz36hP")
सभी दिखाएँ

अब, अपना एनएफटी डिप्लॉय करने के लिए node scripts/mint-nft.js चलाएँ। कुछ सेकंड के बाद, आपको अपने टर्मिनल में इस तरह की प्रतिक्रिया दिखनी चाहिए:

1आपके लेनदेन का हैश है: 0x301791fdf492001fcd9d5e5b12f3aa1bbbea9a88ed24993a8ab2cdae2d06e1e8
2
3अपने लेनदेन की स्थिति देखने के लिए अल्केमी के मेमपूल की जाँच करें!

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

ईथरस्कैन पर अपना एनएफटी लेनदेन हैश देखेंEtherscan पर अपना एनएफटी लेनदेन हैश देखें

और बस हो गया! अब आपने एथेरियम ब्लॉकचेन पर एक एनएफटी डिप्लॉय और उसकी टकसाल कर ली है

mint-nft.js का उपयोग करके आप उतने एनएफटी की टकसाल कर सकते हैं जितना आपका दिल (और वॉलेट) चाहे! बस यह सुनिश्चित करें कि आप एनएफटी के मेटाडेटा का वर्णन करते हुए एक नया tokenURI पास करें (अन्यथा, आप बस अलग-अलग आईडी के साथ बहुत सारे एक जैसे एनएफटी बना देंगे)।

संभवतः, आप अपने वॉलेट में अपना एनएफटी दिखाना चाहेंगे — तो भाग 3: अपने वॉलेट में अपना एनएफटी कैसे देखें देखना सुनिश्चित करें!

पेज का अंतिम अपडेट: 23 फ़रवरी 2026

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