---
title: "ஒரு NFT-ஐ எழுதுவது மற்றும் நிலைநிறுத்துவது எப்படி (NFT பயிற்சித் தொடரின் பகுதி 1/3)"
description: "இந்தப் பயிற்சி NFT-கள் குறித்த தொடரின் பகுதி 1 ஆகும், இது எத்திரியம் மற்றும் இன்டர் பிளானட்டரி ஃபைல் சிஸ்டம் (IPFS) ஆகியவற்றைப் பயன்படுத்தி ஒரு பூஞ்சையற்ற வில்லை (ERC-721 வில்லை) திறன் ஒப்பந்தத்தை எவ்வாறு எழுதுவது மற்றும் நிலைநிறுத்துவது என்பதைப் படிப்படியாகக் கொண்டு செல்லும்."
author: "சுமி முத்கில்"
tags: ["ERC-721", "Alchemy", "Solidity", "திறன் ஒப்பந்தங்கள்"]
skill: beginner
breadcrumb: "NFT-ஐ எழுதி நிலைநிறுத்துங்கள்"
lang: ta
published: 2021-04-22
---

NFT-கள் தொகுதிச்சங்கிலியைப் பொதுமக்களின் கவனத்திற்குக் கொண்டு வருவதால், எத்திரியம் தொகுதிச்சங்கிலியில் உங்கள் சொந்த NFT ஒப்பந்தத்தை (ERC-721 வில்லை) வெளியிடுவதன் மூலம் இந்த எதிர்பார்ப்பை நீங்களே புரிந்துகொள்ள இது ஒரு சிறந்த வாய்ப்பாகும்!

Makersplace (சமீபத்தில் Christie’s-இல் $69 மில்லியனுக்கு டிஜிட்டல் கலைப்படைப்பு விற்பனை செய்து சாதனை படைத்தது), Dapper Labs (NBA Top Shot மற்றும் Crypto Kitties-இன் உருவாக்குநர்கள்), ஓபன்சீ (உலகின் மிகப்பெரிய NFT சந்தை), Zora, Super Rare, NFTfi, Foundation, Enjin, Origin Protocol, Immutable மற்றும் பலவற்றை உள்ளடக்கிய NFT துறையில் உள்ள மிகப்பெரிய பெயர்களுக்கு ஆற்றல் அளிப்பதில் Alchemy மிகவும் பெருமை கொள்கிறது.

இந்தப் பயிற்சியில், [மெட்டாமேஸ்க்](https://metamask.io/), [Solidity](https://docs.soliditylang.org/en/v0.8.0/), [Hardhat](https://hardhat.org/), [Pinata](https://pinata.cloud/) மற்றும் [Alchemy](https://alchemy.com/signup/eth) ஆகியவற்றைப் பயன்படுத்தி Sepolia சோதனை வலையமைப்பில் ஒரு ERC-721 திறன் ஒப்பந்தத்தை உருவாக்கி நிலைநிறுத்துவது குறித்துப் பார்ப்போம் (இவை எதைக் குறிக்கின்றன என்று உங்களுக்கு இன்னும் புரியவில்லை என்றால் கவலைப்பட வேண்டாம் — நாங்கள் அதை விளக்குவோம்!).

இந்தப் பயிற்சியின் பகுதி 2-இல், ஒரு NFT-ஐ அச்சிட நமது திறன் ஒப்பந்தத்தை எவ்வாறு பயன்படுத்தலாம் என்பதைப் பார்ப்போம், மேலும் பகுதி 3-இல் மெட்டாமேஸ்க்-இல் உங்கள் NFT-ஐ எவ்வாறு பார்ப்பது என்பதை விளக்குவோம்.

நிச்சயமாக, எந்த நேரத்திலும் உங்களுக்குக் கேள்விகள் இருந்தால், [Alchemy டிஸ்கார்ட்](https://discord.gg/gWuC7zB)-இல் தொடர்புகொள்ளத் தயங்க வேண்டாம் அல்லது [Alchemy-இன் NFT API ஆவணங்களை](https://www.alchemy.com/docs/reference/nft-api-quickstart) பார்வையிடவும்!

## படி 1: எத்திரியம் பிணையத்துடன் இணைக்கவும் {#connect-to-ethereum}

எத்திரியம் தொகுதிச்சங்கிலிக்குக் கோரிக்கைகளைச் செய்யப் பல வழிகள் உள்ளன, ஆனால் விஷயங்களை எளிதாக்க, நாம் [Alchemy](https://alchemy.com/signup/eth)-இல் ஒரு இலவசக் கணக்கைப் பயன்படுத்துவோம், இது ஒரு தொகுதிச்சங்கிலி உருவாக்குநர் தளம் மற்றும் API ஆகும், இது நமது சொந்த கணுக்களை இயக்காமலேயே எத்திரியம் சங்கிலியுடன் தொடர்புகொள்ள அனுமதிக்கிறது.

இந்தப் பயிற்சியில், நமது திறன் ஒப்பந்த நிலைநிறுத்தத்தில் தொழில்நுட்ப ரீதியாக என்ன நடக்கிறது என்பதைப் புரிந்துகொள்ள, கண்காணிப்பு மற்றும் பகுப்பாய்விற்கான Alchemy-இன் உருவாக்குநர் கருவிகளையும் நாம் பயன்படுத்திக் கொள்வோம். உங்களிடம் ஏற்கனவே Alchemy கணக்கு இல்லையென்றால், நீங்கள் [இங்கே](https://alchemy.com/signup/eth) இலவசமாகப் பதிவு செய்யலாம்.

## படி 2: உங்கள் செயலியை (மற்றும் API திறவுகோலை) உருவாக்கவும் {#make-api-key}

நீங்கள் ஒரு Alchemy கணக்கை உருவாக்கியவுடன், ஒரு செயலியை உருவாக்குவதன் மூலம் API திறவுகோலை உருவாக்கலாம். இது Sepolia சோதனை வலையமைப்பிற்குக் கோரிக்கைகளைச் செய்ய நம்மை அனுமதிக்கும். சோதனை வலையமைப்புகள் பற்றி மேலும் அறிய நீங்கள் ஆர்வமாக இருந்தால் [இந்த வழிகாட்டியைப்](https://www.alchemy.com/docs/choosing-a-web3-network) பார்க்கவும்.

1. வழிசெலுத்தல் பட்டியில் உள்ள "Apps" என்பதன் மீது சுட்டியை வைத்து, "Create App" என்பதைக் கிளிக் செய்வதன் மூலம் உங்கள் Alchemy டாஷ்போர்டில் உள்ள "Create App" பக்கத்திற்குச் செல்லவும்.

![Create your app](./create-your-app.png)

2. உங்கள் செயலிக்குப் பெயரிடவும் (நாங்கள் "My First NFT!" என்பதைத் தேர்ந்தெடுத்தோம்), ஒரு சிறிய விளக்கத்தை வழங்கவும், சங்கிலிக்கு "Ethereum" என்பதைத் தேர்ந்தெடுக்கவும், மேலும் உங்கள் பிணையத்திற்கு "Sepolia" என்பதைத் தேர்ந்தெடுக்கவும். ஒருங்கிணைப்புக்குப் பிறகு மற்ற சோதனை வலையமைப்புகள் கைவிடப்பட்டன.

![Configure and publish your app](./alchemy-explorer-sepolia.png)

3. "Create app" என்பதைக் கிளிக் செய்யவும், அவ்வளவுதான்! உங்கள் செயலி கீழே உள்ள அட்டவணையில் தோன்ற வேண்டும்.

## படி 3: ஒரு எத்திரியம் கணக்கை (முகவரியை) உருவாக்கவும் {#create-eth-address}

பரிவர்த்தனைகளை அனுப்பவும் பெறவும் நமக்கு ஒரு எத்திரியம் கணக்கு தேவை. இந்தப் பயிற்சிக்காக, உங்கள் எத்திரியம் கணக்கு முகவரியை நிர்வகிக்கப் பயன்படுத்தப்படும் உலாவியில் உள்ள மெய்நிகர் பணப்பையான மெட்டாமேஸ்க்-ஐப் பயன்படுத்துவோம். எத்திரியத்தில் பரிவர்த்தனைகள் எவ்வாறு செயல்படுகின்றன என்பதைப் பற்றி நீங்கள் மேலும் புரிந்துகொள்ள விரும்பினால், எத்தீரியம் அறக்கட்டளையின் [இந்தப் பக்கத்தைப்](/developers/docs/transactions/) பார்க்கவும்.

நீங்கள் [இங்கே](https://metamask.io/download) இலவசமாக மெட்டாமேஸ்க் கணக்கைப் பதிவிறக்கம் செய்து உருவாக்கலாம். நீங்கள் ஒரு கணக்கை உருவாக்கும்போது, அல்லது உங்களிடம் ஏற்கனவே கணக்கு இருந்தால், மேல் வலதுபுறத்தில் உள்ள "Sepolia Test Network"-க்கு மாறுவதை உறுதிசெய்து கொள்ளவும் (இதனால் நாம் உண்மையான பணத்தைக் கையாள மாட்டோம்).

![Set Sepolia as your network](./metamask-goerli.png)

## படி 4: ஒரு பாசெட்டிலிருந்து ஈதரைச் சேர்க்கவும் {#step-4-add-ether-from-a-faucet}

நமது திறன் ஒப்பந்தத்தைச் சோதனை வலையமைப்பில் நிலைநிறுத்த, நமக்குச் சில போலி ETH தேவைப்படும். ETH-ஐப் பெற, Alchemy வழங்கும் [Sepolia பாசெட்டிற்குச்](https://sepoliafaucet.com/) சென்று, உள்நுழைந்து உங்கள் கணக்கு முகவரியை உள்ளிட்டு, "Send Me ETH" என்பதைக் கிளிக் செய்யலாம். சிறிது நேரத்திலேயே உங்கள் மெட்டாமேஸ்க் கணக்கில் ETH-ஐக் காண முடியும்!

## படி 5: உங்கள் இருப்பைச் சரிபார்க்கவும் {#check-balance}

நமது இருப்பு அங்கு உள்ளதா என்பதை மீண்டும் சரிபார்க்க, [Alchemy-இன் சாண்ட்பாக்ஸ் கருவியைப்](https://sandbox.alchemy.com/?network=ETH_SEPOLIA&method=eth_getBalance&body.id=1&body.jsonrpc=2.0&body.method=eth_getBalance&body.params%5B0%5D=&body.params%5B1%5D=latest) பயன்படுத்தி ஒரு [eth_getBalance](https://www.alchemy.com/docs/chains/ethereum/ethereum-api-endpoints/eth-get-balance) கோரிக்கையைச் செய்வோம். இது நமது பணப்பையில் உள்ள ETH-இன் அளவைத் திருப்பித் தரும். உங்கள் மெட்டாமேஸ்க் கணக்கு முகவரியை உள்ளிட்டு, "Send Request" என்பதைக் கிளிக் செய்த பிறகு, இது போன்ற ஒரு பதிலைக் காண வேண்டும்:

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

> **குறிப்பு** இந்த முடிவு Wei-இல் உள்ளது, ETH-இல் அல்ல. ஈதரின் மிகச்சிறிய மதிப்பாக Wei பயன்படுத்தப்படுகிறது. Wei-இலிருந்து ETH-க்கு மாற்றுவது 1 eth = 10<sup>18</sup> wei ஆகும். எனவே நாம் 0xde0b6b3a7640000 என்பதை தசமத்திற்கு மாற்றினால் 1\*10<sup>18</sup> wei கிடைக்கும், இது 1 ETH-க்குச் சமம்.

அப்பாடா! நமது போலிப் பணம் அனைத்தும் அங்கு உள்ளது.
## படி 6: நமது திட்டத்தைத் தொடங்கவும் {#initialize-project}

முதலில், நமது திட்டத்திற்காக ஒரு கோப்புறையை உருவாக்க வேண்டும். உங்கள் கட்டளை வரிக்குச் சென்று தட்டச்சு செய்யவும்:

    mkdir my-nft
    cd my-nft

இப்போது நாம் நமது திட்டக் கோப்புறைக்குள் இருப்பதால், திட்டத்தைத் தொடங்க npm init-ஐப் பயன்படுத்துவோம். உங்களிடம் ஏற்கனவே npm நிறுவப்படவில்லை என்றால், [Node.js நிறுவல் வழிமுறைகளைப்](https://nodejs.org/en/download/) பின்பற்றவும் (இந்தப் பயிற்சிக்கு நமக்கு Node.js மற்றும் npm தேவைப்படும்).

    npm init

நிறுவல் கேள்விகளுக்கு நீங்கள் எவ்வாறு பதிலளிக்கிறீர்கள் என்பது முக்கியமல்ல; குறிப்புக்காக நாங்கள் அதை எவ்வாறு செய்தோம் என்பது இங்கே:

```json
    package name: (my-nft)
    version: (1.0.0)
    description: My first NFT!
    entry point: (index.js)
    test command:
    git repository:
    keywords:
    author:
    license: (ISC)
    About to write to /Users/thesuperb1/Desktop/my-nft/package.json:

    {
      "name": "my-nft",
      "version": "1.0.0",
      "description": "My first NFT!",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC"
    }
```

package.json-க்கு ஒப்புதல் அளிக்கவும், நாம் தொடங்குவதற்குத் தயாராகிவிட்டோம்!
## படி 7: [Hardhat](https://hardhat.org/getting-started/#overview)-ஐ நிறுவவும் {#install-hardhat}

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

நமது my-nft திட்டத்திற்குள் இயக்கவும்:

    npm install --save-dev hardhat

[நிறுவல் வழிமுறைகள்](https://hardhat.org/getting-started/#overview) குறித்த கூடுதல் விவரங்களுக்கு இந்தப் பக்கத்தைப் பார்க்கவும்.

## படி 8: Hardhat திட்டத்தை உருவாக்கவும் {#create-hardhat-project}

நமது திட்டக் கோப்புறைக்குள் இயக்கவும்:

    npx hardhat

நீங்கள் ஒரு வரவேற்புச் செய்தியையும், நீங்கள் என்ன செய்ய விரும்புகிறீர்கள் என்பதைத் தேர்ந்தெடுப்பதற்கான விருப்பத்தையும் காண வேண்டும். "create an empty hardhat.config.js" என்பதைத் தேர்ந்தெடுக்கவும்:

    888    888                      888 888               888
    888    888                      888 888               888
    888    888                      888 888               888
    8888888888  8888b.  888d888 .d88888 88888b.   8888b.  888888
    888    888     "88b 888P"  d88" 888 888 "88b     "88b 888
    888    888 .d888888 888    888  888 888  888 .d888888 888
    888    888 888  888 888    Y88b 888 888  888 888  888 Y88b.
    888    888 "Y888888 888     "Y88888 888  888 "Y888888  "Y888
    👷 Welcome to Hardhat v2.0.11 👷‍
    ? What do you want to do? …
    Create a sample project
    ❯ Create an empty hardhat.config.js
    Quit

இது நமக்காக ஒரு hardhat.config.js கோப்பை உருவாக்கும், அங்குதான் நமது திட்டத்திற்கான அனைத்து அமைப்புகளையும் குறிப்பிடுவோம் (படி 13-இல்).

## படி 9: திட்டக் கோப்புறைகளைச் சேர்க்கவும் {#add-project-folders}

நமது திட்டத்தை ஒழுங்கமைக்க, இரண்டு புதிய கோப்புறைகளை உருவாக்குவோம். உங்கள் கட்டளை வரியில் உங்கள் திட்டத்தின் மூலக் கோப்பகத்திற்குச் சென்று தட்டச்சு செய்யவும்:

    mkdir contracts
    mkdir scripts

- contracts/ என்பது நமது NFT திறன் ஒப்பந்தக் குறியீட்டை வைத்திருக்கும் இடமாகும்

- scripts/ என்பது நமது திறன் ஒப்பந்தத்தை நிலைநிறுத்தவும் அதனுடன் தொடர்புகொள்ளவும் ஸ்கிரிப்ட்களை வைத்திருக்கும் இடமாகும்

## படி 10: நமது ஒப்பந்தத்தை எழுதவும் {#write-contract}

இப்போது நமது சூழல் அமைக்கப்பட்டுள்ளதால், மேலும் சுவாரஸ்யமான விஷயங்களுக்குச் செல்வோம்: _நமது திறன் ஒப்பந்தக் குறியீட்டை எழுதுதல்!_

உங்களுக்குப் பிடித்த எடிட்டரில் my-nft திட்டத்தைத் திறக்கவும் (நாங்கள் [VSCode](https://code.visualstudio.com/)-ஐ விரும்புகிறோம்). திறன் ஒப்பந்தங்கள் Solidity எனப்படும் மொழியில் எழுதப்படுகின்றன, இதைத்தான் நமது MyNFT.sol திறன் ஒப்பந்தத்தை எழுதப் பயன்படுத்துவோம்.‌

1. `contracts` கோப்புறைக்குச் சென்று MyNFT.sol என்ற புதிய கோப்பை உருவாக்கவும்

2. கீழே நமது NFT திறன் ஒப்பந்தக் குறியீடு உள்ளது, இது [ஓப்பன்செப்பெலின்](https://docs.openzeppelin.com/contracts/3.x/erc721) நிரலகத்தின் ERC-721 செயலாக்கத்தை அடிப்படையாகக் கொண்டது. கீழே உள்ள உள்ளடக்கங்களை நகலெடுத்து உங்கள் MyNFT.sol கோப்பில் ஒட்டவும்.

   ```solidity
   //[https://docs.openzeppelin.com/contracts/3.x/erc721](https://docs.openzeppelin.com/contracts/3.x/erc721) அடிப்படையிலான ஒப்பந்தம்
   // SPDX-License-Identifier: MIT
   pragma solidity ^0.8.0;

   import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
   import "@openzeppelin/contracts/utils/Counters.sol";
   import "@openzeppelin/contracts/access/Ownable.sol";
   import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";

   contract MyNFT is ERC721URIStorage, Ownable {
       using Counters for Counters.Counter;
       Counters.Counter private _tokenIds;

       constructor() ERC721("MyNFT", "NFT") {}

       function mintNFT(address recipient, string memory tokenURI)
           public onlyOwner
           returns (uint256)
       {
           _tokenIds.increment();

           uint256 newItemId = _tokenIds.current();
           _mint(recipient, newItemId);
           _setTokenURI(newItemId, tokenURI);

           return newItemId;
       }
   }
   ```

3. ஓப்பன்செப்பெலின் ஒப்பந்தங்கள் நிரலகத்திலிருந்து நாம் வகுப்புகளைப் பெறுவதால், நிரலகத்தை நமது கோப்புறையில் நிறுவ உங்கள் கட்டளை வரியில் `npm install @openzeppelin/contracts^4.0.0` என்பதை இயக்கவும்.

எனவே, இந்தக் குறியீடு சரியாக என்ன _செய்கிறது_? இதை வரியாகப் பிரித்துப் பார்ப்போம்.

நமது திறன் ஒப்பந்தத்தின் மேற்புறத்தில், மூன்று [ஓப்பன்செப்பெலின்](https://openzeppelin.com/) திறன் ஒப்பந்த வகுப்புகளை இறக்குமதி செய்கிறோம்:

- @openzeppelin/contracts/token/ERC721/ERC721.sol என்பது ERC-721 தரநிலையின் செயலாக்கத்தைக் கொண்டுள்ளது, இதை நமது NFT திறன் ஒப்பந்தம் பெறும். (செல்லுபடியாகும் NFT-ஆக இருக்க, உங்கள் திறன் ஒப்பந்தம் ERC-721 தரநிலையின் அனைத்து முறைகளையும் செயல்படுத்த வேண்டும்.) பெறப்பட்ட ERC-721 செயல்பாடுகள் பற்றி மேலும் அறிய, இடைமுக வரையறையை [இங்கே](https://eips.ethereum.org/EIPS/eip-721) பார்க்கவும்.

- @openzeppelin/contracts/utils/Counters.sol என்பது ஒன்றால் மட்டுமே அதிகரிக்க அல்லது குறைக்கக்கூடிய கவுண்டர்களை வழங்குகிறது. அச்சிடப்பட்ட NFT-களின் மொத்த எண்ணிக்கையைக் கண்காணிக்கவும், நமது புதிய NFT-இல் தனித்துவமான ஐடியை அமைக்கவும் நமது திறன் ஒப்பந்தம் ஒரு கவுண்டரைப் பயன்படுத்துகிறது. (திறன் ஒப்பந்தத்தைப் பயன்படுத்தி அச்சிடப்படும் ஒவ்வொரு NFT-க்கும் ஒரு தனித்துவமான ஐடி ஒதுக்கப்பட வேண்டும்—இங்கே நமது தனித்துவமான ஐடி பயன்பாட்டில் உள்ள NFT-களின் மொத்த எண்ணிக்கையால் தீர்மானிக்கப்படுகிறது. எடுத்துக்காட்டாக, நமது திறன் ஒப்பந்தத்துடன் நாம் அச்சிடும் முதல் NFT-இன் ஐடி "1", நமது இரண்டாவது NFT-இன் ஐடி "2" போன்றவற்றைக் கொண்டிருக்கும்.)

- @openzeppelin/contracts/access/Ownable.sol நமது திறன் ஒப்பந்தத்தில் [அணுகல் கட்டுப்பாட்டை](https://docs.openzeppelin.com/contracts/3.x/access-control) அமைக்கிறது, எனவே திறன் ஒப்பந்தத்தின் உரிமையாளர் (நீங்கள்) மட்டுமே NFT-களை அச்சிட முடியும். (குறிப்பு, அணுகல் கட்டுப்பாட்டைச் சேர்ப்பது முற்றிலும் ஒரு விருப்பமாகும். உங்கள் திறன் ஒப்பந்தத்தைப் பயன்படுத்தி யார் வேண்டுமானாலும் NFT-ஐ அச்சிட விரும்பினால், வரி 10-இல் உள்ள Ownable மற்றும் வரி 17-இல் உள்ள onlyOwner என்ற சொற்களை அகற்றவும்.)

நமது இறக்குமதி அறிக்கைகளுக்குப் பிறகு, நமது தனிப்பயன் NFT திறன் ஒப்பந்தம் உள்ளது, இது ஆச்சரியப்படும் விதமாகச் சிறியது — இது ஒரு கவுண்டர், ஒரு ஆக்கி மற்றும் ஒற்றைச் செயல்பாட்டை மட்டுமே கொண்டுள்ளது! NFT-இன் உரிமையாளரைத் திருப்பித் தரும் `ownerOf` மற்றும் ஒரு கணக்கிலிருந்து மற்றொரு கணக்கிற்கு NFT-இன் உரிமையை மாற்றும் `transferFrom` போன்ற ஒரு NFT-ஐ உருவாக்க நமக்குத் தேவையான பெரும்பாலான முறைகளைச் செயல்படுத்தும் நமது பெறப்பட்ட ஓப்பன்செப்பெலின் ஒப்பந்தங்களுக்கு இது நன்றி.

நமது ERC-721 ஆக்கியில், "MyNFT" மற்றும் "NFT" ஆகிய 2 சரங்களை நாம் அனுப்புவதை நீங்கள் கவனிப்பீர்கள். முதல் மாறி திறன் ஒப்பந்தத்தின் பெயர், இரண்டாவது அதன் சின்னம். இந்த மாறிகள் ஒவ்வொன்றிற்கும் நீங்கள் விரும்பியபடி பெயரிடலாம்!

இறுதியாக, ஒரு NFT-ஐ அச்சிட அனுமதிக்கும் நமது செயல்பாடு `mintNFT(address recipient, string memory tokenURI)` உள்ளது! இந்தச் செயல்பாடு இரண்டு மாறிகளை எடுத்துக்கொள்வதை நீங்கள் கவனிப்பீர்கள்:

- `address recipient` புதிதாக அச்சிடப்பட்ட உங்கள் NFT-ஐப் பெறும் முகவரியைக் குறிப்பிடுகிறது

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

`mintNFT` பெறப்பட்ட ERC-721 நிரலகத்திலிருந்து சில முறைகளை அழைக்கிறது, மேலும் இறுதியில் புதிதாக அச்சிடப்பட்ட NFT-இன் ஐடியைக் குறிக்கும் எண்ணைத் திருப்பித் தருகிறது.

## படி 11: மெட்டாமேஸ்க் மற்றும் Alchemy-ஐ உங்கள் திட்டத்துடன் இணைக்கவும் {#connect-metamask-and-alchemy}

இப்போது நாம் ஒரு மெட்டாமேஸ்க் பணப்பை, Alchemy கணக்கை உருவாக்கி, நமது திறன் ஒப்பந்தத்தை எழுதியுள்ளோம், மூன்றையும் இணைக்க வேண்டிய நேரம் இது.

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

பரிவர்த்தனைகளை அனுப்புவது பற்றி மேலும் அறிய, Web3-ஐப் பயன்படுத்திப் பரிவர்த்தனைகளை அனுப்புவது குறித்த [இந்தப் பயிற்சியைப்](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) பார்க்கவும்.

முதலில், உங்கள் திட்டக் கோப்பகத்தில் dotenv தொகுப்பை நிறுவவும்:

    npm install dotenv --save

பின்னர், நமது திட்டத்தின் மூலக் கோப்பகத்தில் ஒரு `.env` கோப்பை உருவாக்கி, அதில் உங்கள் மெட்டாமேஸ்க் தனிப்பட்ட திறவுகோல் மற்றும் HTTP Alchemy API URL-ஐச் சேர்க்கவும்.

- மெட்டாமேஸ்க்-இலிருந்து உங்கள் தனிப்பட்ட திறவுகோலை ஏற்றுமதி செய்ய [இந்த வழிமுறைகளைப்](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key) பின்பற்றவும்

- HTTP Alchemy API URL-ஐப் பெற்று அதை உங்கள் கிளிப்போர்டுக்கு நகலெடுக்கக் கீழே பார்க்கவும்

![Copy your Alchemy API URL](./copy-alchemy-api-url.mp4#842x480)

உங்கள் `.env` இப்போது இதுபோன்று இருக்க வேண்டும்:

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

இவற்றை நமது குறியீட்டுடன் இணைக்க, படி 13-இல் உள்ள நமது hardhat.config.js கோப்பில் இந்த மாறிகளைக் குறிப்பிடுவோம்.

<EnvWarningBanner />

## படி 12: Ethers.js-ஐ நிறுவவும் {#install-ethers}

Ethers.js என்பது [நிலையான ஜேசன்-ஆர்பிசி முறைகளை](/developers/docs/apis/json-rpc/) அதிகப் பயனர் நட்பு முறைகளுடன் மூடுவதன் மூலம் எத்திரியத்துடன் தொடர்புகொள்வதையும் கோரிக்கைகளைச் செய்வதையும் எளிதாக்கும் ஒரு நிரலகமாகும்.

கூடுதல் கருவிகள் மற்றும் நீட்டிக்கப்பட்ட செயல்பாட்டிற்கான [செருகுநிரல்களை](https://hardhat.org/plugins/) ஒருங்கிணைப்பதை Hardhat மிகவும் எளிதாக்குகிறது. ஒப்பந்த நிலைநிறுத்தத்திற்கு [Ethers செருகுநிரலை](https://hardhat.org/docs/plugins/official-plugins#hardhat-ethers) நாம் பயன்படுத்திக் கொள்வோம் ([Ethers.js](https://github.com/ethers-io/ethers.js/) சில மிகச் சிறந்த ஒப்பந்த நிலைநிறுத்த முறைகளைக் கொண்டுள்ளது).

உங்கள் திட்டக் கோப்பகத்தில் தட்டச்சு செய்யவும்:

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

அடுத்த படியில் நமது hardhat.config.js-இல் ethers-உம் தேவைப்படும்.

## படி 13: hardhat.config.js-ஐப் புதுப்பிக்கவும் {#update-hardhat-config}

இதுவரை நாம் பல சார்புகள் மற்றும் செருகுநிரல்களைச் சேர்த்துள்ளோம், இப்போது நமது திட்டத்திற்கு அவை அனைத்தையும் பற்றித் தெரியப்படுத்த hardhat.config.js-ஐப் புதுப்பிக்க வேண்டும்.

உங்கள் hardhat.config.js-ஐ இதுபோன்று புதுப்பிக்கவும்:

```js
    /**
    * @type import('hardhat/config').HardhatUserConfig
    */
    require('dotenv').config();
    require("@nomiclabs/hardhat-ethers");
    const { API_URL, PRIVATE_KEY } = process.env;
    module.exports = {
       solidity: "0.8.1",
       defaultNetwork: "sepolia",
       networks: {
          hardhat: {},
          sepolia: {
             url: API_URL,
             accounts: [`0x${PRIVATE_KEY}`]
          }
       },
    }
```

## படி 14: நமது ஒப்பந்தத்தைத் தொகுக்கவும் {#compile-contract}

இதுவரை எல்லாம் சரியாக வேலை செய்கிறதா என்பதை உறுதிப்படுத்த, நமது ஒப்பந்தத்தைத் தொகுப்போம். தொகுக்கும் பணி என்பது உள்ளமைக்கப்பட்ட hardhat பணிகளில் ஒன்றாகும்.

கட்டளை வரியிலிருந்து இயக்கவும்:

    npx hardhat compile

மூலக் கோப்பில் SPDX உரிம அடையாளங்காட்டி வழங்கப்படவில்லை என்பது பற்றிய எச்சரிக்கையை நீங்கள் பெறலாம், ஆனால் அதைப் பற்றிக் கவலைப்படத் தேவையில்லை — மற்ற அனைத்தும் நன்றாக இருக்கும் என்று நம்புகிறோம்! இல்லையென்றால், நீங்கள் எப்போதும் [Alchemy டிஸ்கார்ட்](https://discord.gg/u72VCg3)-இல் செய்தி அனுப்பலாம்.

## படி 15: நமது நிலைநிறுத்த ஸ்கிரிப்டை எழுதவும் {#write-deploy}

இப்போது நமது ஒப்பந்தம் எழுதப்பட்டு, நமது உள்ளமைவு கோப்பு தயாராக உள்ளதால், நமது ஒப்பந்த நிலைநிறுத்த ஸ்கிரிப்டை எழுத வேண்டிய நேரம் இது.

`scripts/` கோப்புறைக்குச் சென்று `deploy.js` என்ற புதிய கோப்பை உருவாக்கி, அதில் பின்வரும் உள்ளடக்கங்களைச் சேர்க்கவும்:

```js
async function main() {
  const MyNFT = await ethers.getContractFactory("MyNFT")

  // நிலைநிறுத்தத்தைத் தொடங்கி, ஒரு ஒப்பந்தப் பொருளாகத் தீர்க்கப்படும் promise-ஐ வழங்குகிறது
  const myNFT = await MyNFT.deploy()
  await myNFT.deployed()
  console.log("Contract deployed to address:", myNFT.address)
}

main()
  .then(() => process.exit(0))
  .catch((error) => {
    console.error(error)
    process.exit(1)
  })
```

Hardhat அவர்களின் [ஒப்பந்தங்கள் பயிற்சியில்](https://hardhat.org/tutorial/testing-contracts.html#writing-tests) இந்தக் குறியீட்டின் ஒவ்வொரு வரியும் என்ன செய்கிறது என்பதை விளக்குவதில் ஒரு அற்புதமான வேலையைச் செய்கிறது, அவர்களின் விளக்கங்களை நாங்கள் இங்கே ஏற்றுக்கொண்டோம்.

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

ethers.js-இல் உள்ள ContractFactory என்பது புதிய திறன் ஒப்பந்தங்களை நிலைநிறுத்தப் பயன்படுத்தப்படும் ஒரு சுருக்கமாகும், எனவே இங்குள்ள MyNFT என்பது நமது NFT ஒப்பந்தத்தின் நிகழ்வுகளுக்கான ஒரு தொழிற்சாலையாகும். hardhat-ethers செருகுநிரலைப் பயன்படுத்தும்போது ContractFactory மற்றும் Contract நிகழ்வுகள் இயல்பாகவே முதல் கையொப்பமிடுபவருடன் இணைக்கப்படும்.

    const myNFT = await MyNFT.deploy();

ContractFactory-இல் deploy()-ஐ அழைப்பது நிலைநிறுத்தத்தைத் தொடங்கும், மேலும் Contract-க்குத் தீர்வு காணும் ஒரு Promise-ஐத் திருப்பித் தரும். இது நமது திறன் ஒப்பந்தச் செயல்பாடுகள் ஒவ்வொன்றிற்கும் ஒரு முறையைக் கொண்ட பொருளாகும்.

## படி 16: நமது ஒப்பந்தத்தை நிலைநிறுத்தவும் {#deploy-contract}

இறுதியாக நமது திறன் ஒப்பந்தத்தை நிலைநிறுத்தத் தயாராகிவிட்டோம்! உங்கள் திட்டக் கோப்பகத்தின் மூலத்திற்குத் திரும்பிச் சென்று, கட்டளை வரியில் இயக்கவும்:

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

நீங்கள் இது போன்ற ஒன்றைக் காண வேண்டும்:

    Contract deployed to address: 0x4C5266cCc4b3F426965d2f51b6D910325a0E7650

நாம் [Sepolia Etherscan](https://sepolia.etherscan.io/)-க்குச் சென்று நமது ஒப்பந்த முகவரியைத் தேடினால், அது வெற்றிகரமாக நிலைநிறுத்தப்பட்டிருப்பதைக் காண முடியும். உங்களால் அதை உடனடியாகப் பார்க்க முடியாவிட்டால், சிறிது நேரம் காத்திருக்கவும், ஏனெனில் இதற்குச் சிறிது நேரம் ஆகலாம். பரிவர்த்தனை இதுபோன்று இருக்கும்:

![View your transaction address on Etherscan](./etherscan-sepoila-contract-creation.png)

From முகவரி உங்கள் மெட்டாமேஸ்க் கணக்கு முகவரியுடன் பொருந்த வேண்டும் மற்றும் To முகவரி "Contract Creation" என்று கூறும். நாம் பரிவர்த்தனையைக் கிளிக் செய்தால், To புலத்தில் நமது ஒப்பந்த முகவரியைக் காண்போம்:

![View your contract address on Etherscan](./etherscan-sepolia-tx-details.png)

ஆமாம்! நீங்கள் இப்போதுதான் உங்கள் NFT திறன் ஒப்பந்தத்தை எத்திரியம் (சோதனை வலையமைப்பு) சங்கிலியில் நிலைநிறுத்தியுள்ளீர்கள்!

தொழில்நுட்ப ரீதியாக என்ன நடக்கிறது என்பதைப் புரிந்துகொள்ள, நமது [Alchemy டாஷ்போர்டில்](https://dashboard.alchemy.com/explorer) உள்ள Explorer தாவலுக்குச் செல்வோம். உங்களிடம் பல Alchemy செயலிகள் இருந்தால், செயலி மூலம் வடிகட்டி "MyNFT" என்பதைத் தேர்ந்தெடுப்பதை உறுதிசெய்யவும்.

![View calls made “under the hood” with Alchemy’s Explorer Dashboard](./alchemy-explorer-goerli.png)

நாம் .deploy() செயல்பாட்டை அழைத்தபோது Hardhat/Ethers நமக்காகத் தொழில்நுட்ப ரீதியாகச் செய்த ஒரு சில ஜேசன்-ஆர்பிசி அழைப்புகளை இங்கே காண்பீர்கள். இங்கே குறிப்பிட வேண்டிய இரண்டு முக்கியமானவை [eth_sendRawTransaction](/developers/docs/apis/json-rpc/#eth_sendrawtransaction), இது உண்மையில் நமது திறன் ஒப்பந்தத்தை Sepolia சங்கிலியில் எழுதுவதற்கான கோரிக்கையாகும், மற்றும் [eth_getTransactionByHash](/developers/docs/apis/json-rpc/#eth_gettransactionbyhash) இது ஹாஷ் கொடுக்கப்பட்ட நமது பரிவர்த்தனை பற்றிய தகவல்களைப் படிப்பதற்கான கோரிக்கையாகும் (பரிவர்த்தனைகளை அனுப்பும்போது ஒரு பொதுவான முறை). பரிவர்த்தனைகளை அனுப்புவது பற்றி மேலும் அறிய, [Web3-ஐப் பயன்படுத்திப் பரிவர்த்தனைகளை அனுப்புவது](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) குறித்த இந்தப் பயிற்சியைப் பார்க்கவும்.

இந்தப் பயிற்சியின் பகுதி 1-க்கு அவ்வளவுதான். [பகுதி 2-இல், ஒரு NFT-ஐ அச்சிடுவதன் மூலம் நமது திறன் ஒப்பந்தத்துடன் நாம் உண்மையில் தொடர்புகொள்வோம்](/developers/tutorials/how-to-mint-an-nft/), மேலும் [பகுதி 3-இல் உங்கள் எத்திரியம் பணப்பையில் உங்கள் NFT-ஐ எவ்வாறு பார்ப்பது என்பதைக் காண்பிப்போம்](/developers/tutorials/how-to-view-nft-in-metamask/)!
