முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்

ஒரு NFT-ஐ அச்சிடுவது எப்படி (NFT பயிற்சித் தொடரின் பகுதி 2/3)

ERC-721
alchemy
solidity
ஸ்மார்ட் ஒப்பந்தங்கள்
தொடக்கநிலை
சுமி முத்கில்
22 ஏப்ரல், 2021
8 நிமிட வாசிப்பு

Beeple (opens in a new tab): $69 மில்லியன் 3LAU (opens in a new tab): $11 மில்லியன் Grimes (opens in a new tab): $6 மில்லியன்

இவர்கள் அனைவரும் Alchemy-இன் சக்திவாய்ந்த API-ஐப் பயன்படுத்தி தங்களின் NFT-களை அச்சிட்டனர். இந்தப் பயிற்சியில், 10 நிமிடங்களுக்குள் அதை எப்படிச் செய்வது என்பதை நாங்கள் உங்களுக்குக் கற்பிப்போம்.

“ஒரு NFT-ஐ அச்சிடுதல்” என்பது தொகுதிச்சங்கிலியில் உங்கள் ERC-721 டோக்கனின் தனித்துவமான நிகழ்வை வெளியிடும் செயலாகும். இந்த NFT பயிற்சித் தொடரின் பகுதி 1-இல் உள்ள எங்கள் ஸ்மார்ட் ஒப்பந்தத்தைப் பயன்படுத்தி, நமது Web3 திறன்களை வெளிப்படுத்தி ஒரு NFT-ஐ அச்சிடுவோம். இந்தப் பயிற்சியின் முடிவில், உங்கள் மனமும் (மற்றும் பணப்பையும்) விரும்பும் அளவுக்கு பல NFT-களை உங்களால் அச்சிட முடியும்!

வாருங்கள் தொடங்கலாம்!

படி 1: Web3-ஐ நிறுவுங்கள்

உங்கள் NFT ஸ்மார்ட் ஒப்பந்தத்தை உருவாக்குவது குறித்த முதல் பயிற்சியை நீங்கள் பின்பற்றியிருந்தால், Ethers.js-ஐப் பயன்படுத்திய அனுபவம் உங்களுக்கு ஏற்கனவே இருக்கும். Web3 என்பது Ethers-ஐப் போன்றதே, ஏனெனில் இது எத்திரியம் தொகுதிச்சங்கிலிக்கு கோரிக்கைகளை உருவாக்குவதை எளிதாக்கப் பயன்படும் ஒரு நூலகமாகும். இந்தப் பயிற்சியில் நாம் Alchemy Web3 (opens in a new tab)-ஐப் பயன்படுத்துவோம், இது தானியங்கி மறுமுயற்சிகள் மற்றும் வலுவான WebSocket ஆதரவை வழங்கும் மேம்படுத்தப்பட்ட Web3 நூலகமாகும்.

உங்கள் திட்டத்தின் முகப்பு கோப்பகத்தில் (home directory) இதை இயக்கவும்:

npm install @alch/alchemy-web3

படி 2: ஒரு mint-nft.js கோப்பை உருவாக்குங்கள்

உங்கள் scripts கோப்பகத்திற்குள், ஒரு mint-nft.js கோப்பை உருவாக்கி, பின்வரும் குறியீட்டு வரிகளைச் சேர்க்கவும்:

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

படி 3: உங்கள் ஒப்பந்த ABI-ஐப் பெறுங்கள்

நமது ஒப்பந்த ABI (Application Binary Interface) என்பது நமது ஸ்மார்ட் ஒப்பந்தத்துடன் தொடர்புகொள்வதற்கான இடைமுகமாகும். ஒப்பந்த ABI-கள் பற்றி நீங்கள் இங்கே (opens in a new tab) மேலும் அறியலாம். Hardhat தானாகவே நமக்காக ஒரு ABI-ஐ உருவாக்கி அதை MyNFT.json கோப்பில் சேமிக்கிறது. இதைப் பயன்படுத்த, நமது mint-nft.js கோப்பில் பின்வரும் குறியீட்டு வரிகளைச் சேர்ப்பதன் மூலம் உள்ளடக்கங்களைப் பாகுபடுத்த (parse) வேண்டும்:

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

நீங்கள் ABI-ஐப் பார்க்க விரும்பினால், அதை உங்கள் கன்சோலில் அச்சிடலாம்:

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

mint-nft.js-ஐ இயக்கி, உங்கள் ABI கன்சோலில் அச்சிடப்பட்டிருப்பதைப் பார்க்க, உங்கள் முனையத்திற்குச் (terminal) சென்று இதை இயக்கவும்:

node scripts/mint-nft.js

படி 4: IPFS-ஐப் பயன்படுத்தி உங்கள் NFT-க்கான மீத்தரவை உள்ளமைக்கவும்

பகுதி 1-இல் உள்ள நமது பயிற்சியிலிருந்து உங்களுக்கு நினைவிருந்தால், நமது mintNFT ஸ்மார்ட் ஒப்பந்தச் செயல்பாடு ஒரு tokenURI அளவுருவை எடுத்துக்கொள்கிறது, அது NFT-இன் மீத்தரவை விவரிக்கும் ஒரு JSON ஆவணமாகத் தீர்க்கப்பட வேண்டும்— இதுவே உண்மையில் NFT-க்கு உயிரூட்டுகிறது, பெயர், விளக்கம், படம் மற்றும் பிற பண்புக்கூறுகள் போன்ற உள்ளமைக்கக்கூடிய பண்புகளைக் கொண்டிருக்க அனுமதிக்கிறது.

Interplanetary File System (IPFS) என்பது பகிரப்பட்ட கோப்பு முறைமையில் தரவைச் சேமிப்பதற்கும் பகிர்வதற்கும் பயன்படும் ஒரு பரவலாக்கப்பட்ட நெறிமுறை மற்றும் சக-முனைய பிணையம் ஆகும்.

நமது NFT சொத்து மற்றும் மீத்தரவைச் சேமித்து, நமது NFT உண்மையாகவே பரவலாக்கப்பட்டிருப்பதை உறுதிசெய்ய, வசதியான IPFS API மற்றும் கருவித்தொகுப்பான Pinata-ஐப் பயன்படுத்துவோம். உங்களிடம் Pinata கணக்கு இல்லையென்றால், இங்கே (opens in a new tab) இலவசக் கணக்கிற்குப் பதிவுசெய்து, உங்கள் மின்னஞ்சலைச் சரிபார்க்கும் படிகளை முடிக்கவும்.

நீங்கள் ஒரு கணக்கை உருவாக்கியதும்:

  • “Files” பக்கத்திற்குச் சென்று, பக்கத்தின் மேல்-இடதுபுறத்தில் உள்ள நீல நிற "Upload" பொத்தானைக் கிளிக் செய்யவும்.

  • Pinata-இல் ஒரு படத்தைப் பதிவேற்றவும் — இதுவே உங்கள் NFT-க்கான படச் சொத்தாக இருக்கும். இந்தச் சொத்திற்கு நீங்கள் விரும்பும் எந்தப் பெயரையும் தாராளமாக வைக்கலாம்

  • நீங்கள் பதிவேற்றிய பிறகு, "Files" பக்கத்தில் உள்ள அட்டவணையில் கோப்புத் தகவலைக் காண்பீர்கள். ஒரு CID நெடுவரிசையையும் காண்பீர்கள். அதன் அருகில் உள்ள நகலெடு பொத்தானைக் கிளிக் செய்வதன் மூலம் CID-ஐ நகலெடுக்கலாம். நீங்கள் பதிவேற்றியதை இங்கே பார்க்கலாம்: https://gateway.pinata.cloud/ipfs/<CID>. எடுத்துக்காட்டாக, நாங்கள் IPFS-இல் பயன்படுத்திய படத்தை இங்கே (opens in a new tab) காணலாம்.

காட்சிகள் மூலம் கற்பவர்களுக்கு, மேலே உள்ள படிகள் இங்கே சுருக்கப்பட்டுள்ளன:

How to upload your image to Pinata

இப்போது, நாம் Pinata-இல் மேலும் ஒரு ஆவணத்தைப் பதிவேற்றப் போகிறோம். ஆனால் அதைச் செய்வதற்கு முன், நாம் அதை உருவாக்க வேண்டும்!

உங்கள் மூலக் கோப்பகத்தில் (root directory), nft-metadata.json என்ற புதிய கோப்பை உருவாக்கி, பின்வரும் json குறியீட்டைச் சேர்க்கவும்:

json-இல் உள்ள தரவை நீங்கள் தாராளமாக மாற்றலாம். பண்புக்கூறுகள் (attributes) பிரிவில் நீங்கள் நீக்கலாம் அல்லது சேர்க்கலாம். மிக முக்கியமாக, image புலம் உங்கள் IPFS படத்தின் இருப்பிடத்தைக் குறிக்கிறதா என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள் — இல்லையெனில், உங்கள் NFT-இல் ஒரு (மிகவும் அழகான!) நாயின் புகைப்படம் இடம்பெறும்.

JSON கோப்பைத் திருத்தி முடித்ததும், அதைச் சேமித்து, படத்தைப் பதிவேற்றுவதற்கு நாம் செய்த அதே படிகளைப் பின்பற்றி Pinata-இல் பதிவேற்றவும்.

How to upload your nft-metadata.json to Pinata

படி 5: உங்கள் ஒப்பந்தத்தின் ஒரு நிகழ்வை (instance) உருவாக்குங்கள்

இப்போது, நமது ஒப்பந்தத்துடன் தொடர்புகொள்ள, நமது குறியீட்டில் அதன் ஒரு நிகழ்வை உருவாக்க வேண்டும். அவ்வாறு செய்ய, நமது ஒப்பந்த முகவரி தேவைப்படும், அதை நிலைநிறுத்தத்திலிருந்து அல்லது ஒப்பந்தத்தை நிலைநிறுத்த நீங்கள் பயன்படுத்திய முகவரியைத் தேடுவதன் மூலம் Blockscout (opens in a new tab)-இலிருந்து பெறலாம்.

View your contract address on Etherscan

மேலே உள்ள எடுத்துக்காட்டில், நமது ஒப்பந்த முகவரி 0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778 ஆகும்.

அடுத்து, ABI மற்றும் முகவரியைப் பயன்படுத்தி நமது ஒப்பந்தத்தை உருவாக்க Web3 contract முறையை (opens in a new tab) பயன்படுத்துவோம். உங்கள் mint-nft.js கோப்பில், பின்வருவனவற்றைச் சேர்க்கவும்:

const contractAddress = "0x5a738a5c5fe46a1fd5ee7dd7e38f722e2aef7778"

const nftContract = new web3.eth.Contract(contract.abi, contractAddress)

படி 6: .env கோப்பைப் புதுப்பிக்கவும்

இப்போது, எத்திரியம் சங்கிலிக்கு பரிவர்த்தனைகளை உருவாக்கி அனுப்ப, கணக்கு நான்ஸைப் பெற (கீழே விளக்கப்படும்) உங்கள் பொது எத்திரியம் கணக்கு முகவரியைப் பயன்படுத்துவோம்.

உங்கள் பொது விசையை உங்கள் .env கோப்பில் சேர்க்கவும் — நீங்கள் பயிற்சியின் பகுதி 1-ஐ முடித்திருந்தால், நமது .env கோப்பு இப்போது இப்படி இருக்க வேண்டும்:

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

படி 7: உங்கள் பரிவர்த்தனையை உருவாக்குங்கள்

முதலில், mintNFT(tokenData) என்ற பெயரிடப்பட்ட ஒரு செயல்பாட்டை வரையறுத்து, பின்வருவனவற்றைச் செய்வதன் மூலம் நமது பரிவர்த்தனையை உருவாக்குவோம்:

  1. .env கோப்பிலிருந்து உங்கள் PRIVATE_KEY மற்றும் PUBLIC_KEY-ஐப் பெறுங்கள்.

  2. அடுத்து, நாம் கணக்கு நான்ஸைக் கண்டறிய வேண்டும். உங்கள் முகவரியிலிருந்து அனுப்பப்பட்ட பரிவர்த்தனைகளின் எண்ணிக்கையைக் கண்காணிக்க நான்ஸ் விவரக்குறிப்பு பயன்படுத்தப்படுகிறது — இது பாதுகாப்பு நோக்கங்களுக்காகவும் மறுஇயக்கத் தாக்குதல்களைத் (replay attacks) (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 கோப்பு இப்போது இப்படி இருக்க வேண்டும்:

படி 8: பரிவர்த்தனையில் கையொப்பமிடுங்கள்

இப்போது நாம் நமது பரிவர்த்தனையை உருவாக்கிவிட்டதால், அதை அனுப்புவதற்கு அதில் கையொப்பமிட வேண்டும். இங்குதான் நாம் நமது தனிப்பட்ட திறவுகோலைப் பயன்படுத்துவோம்.

web3.eth.sendSignedTransaction நமக்கு பரிவர்த்தனை ஹாஷை வழங்கும், நமது பரிவர்த்தனை வெட்டியெடுக்கப்பட்டதா (mined) மற்றும் பிணையத்தால் கைவிடப்படவில்லையா என்பதை உறுதிப்படுத்த இதைப் பயன்படுத்தலாம். பரிவர்த்தனையில் கையொப்பமிடும் பிரிவில், சில பிழைச் சரிபார்ப்புகளைச் சேர்த்திருப்பதை நீங்கள் கவனிப்பீர்கள், இதன் மூலம் நமது பரிவர்த்தனை வெற்றிகரமாகச் சென்றதா என்பதை நாம் அறியலாம்.

படி 9: mintNFT-ஐ அழைத்து, node mint-nft.js-ஐ இயக்கவும்

நீங்கள் Pinata-இல் பதிவேற்றிய metadata.json நினைவிருக்கிறதா? Pinata-இலிருந்து அதன் ஹாஷ்கோடைப் பெற்று, பின்வருவனவற்றை mintNFT செயல்பாட்டிற்கு அளவுருவாக அனுப்பவும் https://gateway.pinata.cloud/ipfs/<metadata-hash-code>

ஹாஷ்கோடை எவ்வாறு பெறுவது என்பது இங்கே:

How to get your nft metadata hashcode on PinataPinata-இல் உங்கள் nft மீத்தரவு ஹாஷ்கோடை எவ்வாறு பெறுவது

https://gateway.pinata.cloud/ipfs/<metadata-hash-code>-ஐ ஒரு தனி சாளரத்தில் ஏற்றுவதன் மூலம், நீங்கள் நகலெடுத்த ஹாஷ்கோடு உங்கள் metadata.json-உடன் இணைக்கப்பட்டுள்ளதா என்பதை இருமுறை சரிபார்க்கவும். பக்கம் கீழே உள்ள ஸ்கிரீன்ஷாட்டைப் போலவே இருக்க வேண்டும்:

Your page should display the json metadataஉங்கள் பக்கம் json மீத்தரவைக் காட்ட வேண்டும்

ஒட்டுமொத்தமாக, உங்கள் குறியீடு இதுபோன்று இருக்க வேண்டும்:

இப்போது, உங்கள் NFT-ஐ நிலைநிறுத்த node scripts/mint-nft.js-ஐ இயக்கவும். சில வினாடிகளுக்குப் பிறகு, உங்கள் முனையத்தில் இது போன்ற ஒரு பதிலைக் காண வேண்டும்:

The hash of your transaction is: 0x301791fdf492001fcd9d5e5b12f3aa1bbbea9a88ed24993a8ab2cdae2d06e1e8

Check Alchemy's Mempool to view the status of your transaction!

அடுத்து, உங்கள் பரிவர்த்தனையின் நிலையைப் பார்க்க (அது நிலுவையில் உள்ளதா, வெட்டியெடுக்கப்பட்டதா அல்லது பிணையத்தால் கைவிடப்பட்டதா) உங்கள் Alchemy மெம்பூலைப் (opens in a new tab) பார்வையிடவும். உங்கள் பரிவர்த்தனை கைவிடப்பட்டால், Blockscout (opens in a new tab)-ஐச் சரிபார்த்து உங்கள் பரிவர்த்தனை ஹாஷைத் தேடுவதும் உதவியாக இருக்கும்.

View your NFT transaction hash on EtherscanEtherscan-இல் உங்கள் NFT பரிவர்த்தனை ஹாஷைப் பார்க்கவும்

அவ்வளவுதான்! நீங்கள் இப்போது எத்திரியம் தொகுதிச்சங்கிலியில் ஒரு NFT-ஐ நிலைநிறுத்தி அச்சிட்டுள்ளீர்கள்

mint-nft.js-ஐப் பயன்படுத்தி உங்கள் மனமும் (மற்றும் பணப்பையும்) விரும்பும் அளவுக்கு பல NFT-களை உங்களால் அச்சிட முடியும்! NFT-இன் மீத்தரவை விவரிக்கும் புதிய tokenURI-ஐ அனுப்புவதை மட்டும் உறுதிசெய்து கொள்ளுங்கள் (இல்லையெனில், வெவ்வேறு ID-களுடன் ஒரே மாதிரியான பலவற்றை உருவாக்குவீர்கள்).

உங்கள் பணப்பையில் உள்ள உங்கள் NFT-ஐ நீங்கள் காட்ட விரும்புவீர்கள் என்று நம்புகிறோம் — எனவே பகுதி 3: உங்கள் பணப்பையில் உங்கள் NFT-ஐ எவ்வாறு பார்ப்பது என்பதைப் பார்க்க மறக்காதீர்கள்!