قرارداد هوشمند ERC-1155 به شما این امکان را می‌دهند که چند نوع NFT یا توکن را در یک قرارداد واحد مدیریت کنید. این استاندارد به طور خاص برای مدیریت توکن‌های قابل تقسیم و غیرقابل تقسیم طراحی شده است. در اینجا مراحل ساخت یک قرارداد هوشمند ERC-1155 برای NFTهای چندگانه آورده شده است:

1. نصب محیط توسعه

برای شروع، باید محیط توسعه خود را تنظیم کنید. معمولاً از Node.js و Truffle یا Hardhat استفاده می‌شود.

نصب Node.js

ابتدا باید Node.js را نصب کنید. می‌توانید آن را از وب‌سایت رسمی Node.js دانلود کنید.

نصب Truffle

بعد از نصب Node.js، Truffle را به‌عنوان ابزار توسعه‌ خود نصب کنید:

npm install -g truffle

ایجاد یک پروژه جدید

یک پوشه جدید برای پروژه خود بسازید و یک پروژه Truffle جدید ایجاد کنید:

mkdir MyERC1155Project
cd MyERC1155Project
truffle init

2. نصب OpenZeppelin Contracts

OpenZeppelin مجموعه‌ای از قراردادهای هوشمند معتبر است که می‌توانید از آن‌ها برای نوشتن قراردادهای خود استفاده کنید. ERC-1155 یکی از استانداردهایی است که در این مجموعه وجود دارد. برای نصب OpenZeppelin:

npm install @openzeppelin/contracts

3. نوشتن قرارداد هوشمند ERC-1155

در پوشه contracts پروژه خود، یک فایل جدید با نام MyNFT.sol ایجاد کنید و کد زیر را وارد کنید:

// SPDX-License-Identifier: MIT
pragma solidity ^.8.;

import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract MyNFT is ERC1155, Ownable {
    uint256 public constant ARTWORK = ;
    uint256 public constant COLLECTIBLE = 1;

    constructor() ERC1155("https://myapi.com/api/token/{id}.json") {
        _mint(msg.sender, ARTWORK, 100, "");
        _mint(msg.sender, COLLECTIBLE, 200, "");
    }

    function mint(
        address account,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) public onlyOwner {
        _mint(account, id, amount, data);
    }

    function uri(uint256 _id) public view override returns (string memory) {
        return string(abi.encodePacked("https://myapi.com/api/token/", _id.toString(), ".json"));
    }
}

توضیحات کد

  • ERC1155: قرارداد اصلی ERC-1155 که از OpenZeppelin وارد شده است.
  • Ownable: به قرارداد این امکان را می‌دهد که فقط مالک آن بتواند توکن‌های جدید را تولید کند (mint).
  • mint: تابعی که به مالک این امکان را می‌دهد که توکن‌های جدید را بسازد.
  • uri: تابعی که آدرس متادیتا توکن‌ها را برمی‌گرداند.

آموزش سالیدیتی + 5 پروژه عملی

4. کامپایل و استقرار قرارداد

کامپایل قرارداد

با استفاده از Truffle، قرارداد خود را کامپایل کنید:

truffle compile

ایجاد اسکریپت برای استقرار قرارداد

در پوشه migrations، یک فایل جدید با نام 2_deploy_mynft.js ایجاد کنید و کد زیر را وارد کنید:

const MyNFT = artifacts.require("MyNFT");

module.exports = function (deployer) {
  deployer.deploy(MyNFT);
};

استقرار قرارداد

می‌توانید قرارداد خود را روی یک بلاکچین محلی مانند Ganache استقرار دهید:

truffle migrate --network development

5. آزمون قرارداد

حالا که قرارداد شما مستقر شده است، می‌توانید آن را با استفاده از Truffle console یا با نوشتن اسکریپت‌های تست مورد آزمایش قرار دهید.

نتیجه‌ گیری

با دنبال کردن مراحل بالا، شما می‌توانید یک قرارداد هوشمند ERC-1155 برای تولید و مدیریت چندین NFT ایجاد کنید. این قرارداد به شما امکان می‌دهد که توکن‌های مختلف را در یک قرارداد مدیریت کرده و آن‌ها را به سادگی انتشار دهید. همچنین، با استفاده از OpenZeppelin، می‌توانید از ویژگی‌های امنیتی و قابل‌اعتماد برای قرارداد خود بهره‌مند شوید.

با این روش، هزینه‌های گاز نیز کاهش پیدا می‌کند زیرا شما تنها یک قرارداد را برای چندین نوع توکن استفاده می‌کنید. حال با استقرار قرارداد و آزمایش آن، شما آماده‌اید که NFTهای خود را به دنیای بلاکچین معرفی کنید. اگر سوال یا چالشی دارید، می‌توانید به جامعه توسعه‌دهندگان یا منابع آنلاین مراجعه کنید تا بیشتر به شما در این مسیر کمک کنند.