मराठी

NFTs साठी ERC-721 स्मार्ट कॉन्ट्रॅक्ट्सची गुंतागुंत एक्सप्लोर करा. त्यांची रचना, अंमलबजावणी, सुरक्षा विचार आणि वास्तविक-जगातील उपयोगांबद्दल जाणून घ्या.

NFT स्मार्ट कॉन्ट्रॅक्ट्स: ERC-721 अंमलबजावणीचा सखोल अभ्यास

नॉन-फंजिबल टोकन्स (NFTs) ने डिजिटल मालमत्तेच्या क्षेत्रात क्रांती घडवली आहे, ज्यामुळे ब्लॉकचेनवर अद्वितीय वस्तूंचे प्रतिनिधित्व करणे शक्य झाले आहे. बहुतेक NFTs च्या केंद्रस्थानी ERC-721 मानक आहे, जे हे टोकन्स कसे तयार केले जातात, व्यवस्थापित केले जातात आणि हस्तांतरित केले जातात यावर नियंत्रण ठेवणाऱ्या नियमांचा एक संच आहे. हे सर्वसमावेशक मार्गदर्शक ERC-721 स्मार्ट कॉन्ट्रॅक्ट्सचा सखोल अभ्यास प्रदान करते, ज्यामध्ये त्यांची रचना, अंमलबजावणीचे तपशील, सुरक्षा विचार आणि व्यावहारिक उपयोग समाविष्ट आहेत.

ERC-721 म्हणजे काय?

ERC-721 हे इथेरियम ब्लॉकचेनवर नॉन-फंजिबल टोकन्स दर्शवण्यासाठी एक मानक आहे. ERC-20 टोकन्सच्या विपरीत, जे फंजिबल आहेत (म्हणजे प्रत्येक टोकन इतर प्रत्येक टोकनसारखेच असते), ERC-721 टोकन्स अद्वितीय असतात. प्रत्येक टोकनला एक विशिष्ट आयडी असतो, ज्यामुळे ते अद्वितीय डिजिटल किंवा भौतिक मालमत्तेच्या मालकीचे प्रतिनिधित्व करण्यासाठी योग्य ठरते.

ERC-721 टोकन्सची मुख्य वैशिष्ट्ये:

ERC-721 स्मार्ट कॉन्ट्रॅक्टची रचना

ERC-721 स्मार्ट कॉन्ट्रॅक्ट हा एक सॉलिडिटी प्रोग्राम आहे जो ERC-721 मानक लागू करतो. यात सामान्यतः खालील घटक समाविष्ट असतात:

मुख्य फंक्शन्स:

मेटाडेटा विस्तार (पर्यायी):

गणना विस्तार (पर्यायी):

ओपनझेपेलिनसह ERC-721 स्मार्ट कॉन्ट्रॅक्टची अंमलबजावणी करणे

ओपनझेपेलिन (OpenZeppelin) स्मार्ट कॉन्ट्रॅक्ट्सची एक सुरक्षित आणि ऑडिट केलेली लायब्ररी प्रदान करते, जी ERC-721 टोकन्सचा विकास सोपा करते. ओपनझेपेलिनच्या ERC721 अंमलबजावणीचा वापर केल्याने तुमच्या कोडमध्ये त्रुटी येण्याचा धोका कमी होतो. ओपनझेपेलिन वापरून ERC-721 स्मार्ट कॉन्ट्रॅक्ट कसे लागू करायचे याचे उदाहरण येथे आहे:

पूर्व-आवश्यकता:

पायऱ्या:

  1. Truffle किंवा Hardhat प्रोजेक्ट सुरू करा:
# Truffle
mkdir my-nft-project
cd my-nft-project
truffle init

# Hardhat
mkdir my-nft-project
cd my-nft-project
npx hardhat
  1. ओपनझेपेलिन कॉन्ट्रॅक्ट्स स्थापित करा:
npm install @openzeppelin/contracts
  1. ERC-721 स्मार्ट कॉन्ट्रॅक्ट तयार करा: तुमच्या `contracts` डिरेक्टरीमध्ये एक नवीन सॉलिडिटी फाईल (उदा. `MyNFT.sol`) तयार करा.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/utils/Counters.sol";

contract MyNFT is ERC721 {
    using Counters for Counters.Counter;
    Counters.Counter private _tokenIds;

    string private _baseURI;

    constructor(string memory name, string memory symbol, string memory baseURI) ERC721(name, symbol) {
        _baseURI = baseURI;
    }

    function mintNFT(address recipient) public returns (uint256) {
        _tokenIds.increment();

        uint256 newItemId = _tokenIds.current();
        _mint(recipient, newItemId);
        _setTokenURI(newItemId, string(abi.encodePacked(_baseURI, Strings.toString(newItemId), ".json")));

        return newItemId;
    }

    function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {
        require(_exists(tokenId), "ERC721Metadata: URI set of nonexistent token");
        _tokenURIs[tokenId] = _tokenURI;
    }

    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

        string memory _tokenURI = _tokenURIs[tokenId];
        return string(abi.encodePacked(_tokenURI));
    }

    mapping (uint256 => string) private _tokenURIs;

    function setBaseURI(string memory baseURI) public {
        _baseURI = baseURI;
    }



    // खालील फंक्शन्स सॉलिडिटीसाठी आवश्यक ओव्हरराइड्स आहेत.

    function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal override(ERC721) {
        super._beforeTokenTransfer(from, to, tokenId);
    }
}

import "@openzeppelin/contracts/utils/Strings.sol";
  1. स्मार्ट कॉन्ट्रॅक्ट कंपाईल करा: तुमचा स्मार्ट कॉन्ट्रॅक्ट कंपाईल करण्यासाठी Truffle किंवा Hardhat वापरा.
# Truffle
truffle compile

# Hardhat
npx hardhat compile
  1. डिप्लॉयमेंट स्क्रिप्ट तयार करा: तुमच्या `migrations` किंवा `scripts` डिरेक्टरीमध्ये एक नवीन जावास्क्रिप्ट फाईल (उदा. `deploy.js`) तयार करा.
// ट्रफल मायग्रेशन उदाहरण
const MyNFT = artifacts.require("MyNFT");

module.exports = async function (deployer) {
  await deployer.deploy(MyNFT, "MyNFT", "MNFT", "ipfs://YOUR_IPFS_CID/");
};

// हार्डहॅट डिप्लॉयमेंट स्क्रिप्ट उदाहरण
async function main() {
  const MyNFT = await ethers.getContractFactory("MyNFT");
  const myNFT = await MyNFT.deploy("MyNFT", "MNFT", "ipfs://YOUR_IPFS_CID/");

  await myNFT.deployed();

  console.log("MyNFT deployed to:", myNFT.address);
}

main()
  .then(() => process.exit(0))
  .catch((error) => {
    console.error(error);
    process.exit(1);
  });
  1. स्मार्ट कॉन्ट्रॅक्ट डिप्लॉय करा: तुमचा स्मार्ट कॉन्ट्रॅक्ट स्थानिक ब्लॉकचेन (उदा. Ganache) किंवा चाचणी नेटवर्कवर (उदा. Ropsten, Rinkeby) डिप्लॉय करा.
# Truffle
truffle migrate

# Hardhat
npx hardhat run scripts/deploy.js --network localhost

`ipfs://YOUR_IPFS_CID/` ला तुमच्या वास्तविक IPFS CID (कंटेंट आयडेंटिफायर) ने बदलायला विसरू नका. हा बेस URI तुमच्या NFT मेटाडेटा JSON फाइल्स कुठे संग्रहित केल्या जातील त्या स्थानाकडे निर्देश करतो.

IPFS वर NFT मेटाडेटा संग्रहित करणे

ब्लॉकचेनवर डेटा संग्रहित करण्याचा खर्च कमी करण्यासाठी NFT मेटाडेटा सामान्यतः ऑफ-चेन संग्रहित केला जातो. IPFS (इंटरप्लॅनेटरी फाईल सिस्टम) हे एक विकेंद्रित स्टोरेज नेटवर्क आहे जे सामान्यतः NFT मेटाडेटा संग्रहित करण्यासाठी वापरले जाते. प्रत्येक NFT मध्ये एक `tokenURI` असतो जो IPFS वरील एका JSON फाईलकडे निर्देश करतो, ज्यात NFT बद्दलचा मेटाडेटा असतो, जसे की त्याचे नाव, वर्णन, इमेज URL आणि इतर गुणधर्म.

उदाहरण NFT मेटाडेटा (JSON):

{
  "name": "My Awesome NFT",
  "description": "This is a unique NFT.",
  "image": "ipfs://YOUR_IPFS_CID/image.png",
  "attributes": [
    {
      "trait_type": "Background",
      "value": "Blue"
    },
    {
      "trait_type": "Character",
      "value": "Robot"
    }
  ]
}

`ipfs://YOUR_IPFS_CID/image.png` ला तुमच्या इमेजच्या वास्तविक IPFS CID ने बदला.

IPFS वर मेटाडेटा अपलोड करण्याच्या पायऱ्या:

  1. एक IPFS क्लायंट निवडा: IPFS डेस्कटॉप, Pinata, किंवा NFT.Storage सारखा IPFS क्लायंट निवडा.
  2. तुमचा मेटाडेटा अपलोड करा: तुमच्या निवडलेल्या क्लायंटचा वापर करून तुमच्या NFT मेटाडेटा JSON फाइल्स आणि इमेजेस IPFS वर अपलोड करा.
  3. IPFS CID मिळवा: तुमचा मेटाडेटा अपलोड केल्यानंतर, तुम्हाला एक IPFS CID मिळेल. हा IPFS वरील तुमच्या डेटासाठी एक अद्वितीय ओळखकर्ता आहे.
  4. स्मार्ट कॉन्ट्रॅक्ट अपडेट करा: तुमच्या स्मार्ट कॉन्ट्रॅक्टमधील `tokenURI` फंक्शनला तुमच्या IPFS CID कडे निर्देश करण्यासाठी अपडेट करा.

ERC-721 स्मार्ट कॉन्ट्रॅक्ट्ससाठी सुरक्षा विचार

ERC-721 स्मार्ट कॉन्ट्रॅक्ट्स विकसित करताना सुरक्षा सर्वात महत्त्वाची आहे. येथे काही महत्त्वाचे सुरक्षा विचार आहेत:

ERC-721 NFTs चे वास्तविक-जगातील उपयोग

ERC-721 NFTs विविध प्रकारच्या उपयोगांमध्ये वापरले जातात, यासह:

आंतरराष्ट्रीय उदाहरणे:

प्रगत ERC-721 संकल्पना

ERC-721A

ERC-721A हे ERC-721 मानकाचे अधिक गॅस-कार्यक्षम अंमलबजावणी आहे जे एकाच व्यवहारात अनेक NFTs मिंट करण्यास ऑप्टिमाइझ करते. हे एकाधिक टोकन्सवर स्टोरेज खर्च विभागून गॅस खर्च कमी करते. ज्या प्रकल्पांमध्ये मोठ्या संख्येने NFTs मिंट करणे समाविष्ट आहे त्यांच्यासाठी हे फायदेशीर ठरू शकते.

लेझी मिंटिंग

लेझी मिंटिंग हे एक तंत्र आहे जिथे NFTs फक्त खरेदी केल्यावरच मिंट केले जातात. यामुळे ज्या प्रकल्पांमध्ये मोठ्या संख्येने NFTs आहेत परंतु त्यापैकी सर्व विकल्या जाण्याची अपेक्षा नाही, अशा प्रकल्पांसाठी गॅस खर्च वाचू शकतो. NFT खरेदी होईपर्यंत NFT मेटाडेटा ऑफ-चेन संग्रहित केला जातो, ज्यावेळी टोकन मिंट केले जाते आणि मेटाडेटा ब्लॉकचेनमध्ये जोडला जातो.

सोलबाउंड टोकन्स

सोलबाउंड टोकन्स असे NFTs आहेत जे कायमस्वरूपी एका विशिष्ट पत्त्याशी जोडलेले असतात आणि हस्तांतरित केले जाऊ शकत नाहीत. हे टोकन्स शैक्षणिक पदवी, व्यावसायिक प्रमाणपत्रे किंवा समुदायातील सदस्यत्वासारख्या अहस्तांतरणीय क्रेडेन्शियल्सचे प्रतिनिधित्व करण्यासाठी वापरले जाऊ शकतात. हे `transferFrom` फंक्शन काढून किंवा प्रतिबंधित करून सक्षम केले जाते.

ERC-721 आणि NFTs चे भविष्य

ERC-721 मानक सतत विकसित होत आहे, ज्यात त्याची कार्यक्षमता, सुरक्षा आणि कार्यक्षमता सुधारण्यावर लक्ष केंद्रित करून संशोधन आणि विकास चालू आहे. भविष्यातील घडामोडींमध्ये हे समाविष्ट असू शकते:

निष्कर्ष

ERC-721 स्मार्ट कॉन्ट्रॅक्ट्स हे ब्लॉकचेनवर अद्वितीय डिजिटल आणि भौतिक मालमत्तेच्या मालकीचे प्रतिनिधित्व करण्यासाठी एक शक्तिशाली साधन आहे. ERC-721 ची रचना, अंमलबजावणीचे तपशील, सुरक्षा विचार आणि व्यावहारिक उपयोग समजून घेऊन, विकासक नाविन्यपूर्ण आणि प्रभावी NFT प्रकल्प तयार करू शकतात. NFT इकोसिस्टम वाढत आणि विकसित होत असताना, ERC-721 मानक डिजिटल मालकीचे भविष्य घडवण्यात महत्त्वपूर्ण भूमिका बजावेल.

हे मार्गदर्शक ERC-721 स्मार्ट कॉन्ट्रॅक्ट्स समजून घेण्यासाठी आणि लागू करण्यासाठी एक भक्कम पाया प्रदान करते. तुमचे स्वतःचे NFT प्रकल्प विकसित आणि तैनात करताना नेहमी सुरक्षिततेला प्राधान्य द्या आणि सर्वोत्तम पद्धतींचे पालन करा. शुभेच्छा!