簡體   English   中英

SOLIDITY 中每個智能合約的獨家 NFT

[英]Exclusive NFT per smart contract in SOLIDITY

我只想為每個智能合約鑄造一個獨家 NFT。 所有教程和書籍都展示了如何通過 ERC721 的 inheritance 制作收藏品。 所以簡單的代碼是:

pragma solidity ^0.8.0;


import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
import "hardhat/console.sol";

    contract SimpleCollectible is ERC721 {

      uint256 public tokenCounter;
      constructor () public ERC721 ("Dogie", "DOG"){
        tokenCounter = 0;
      }
      function createCollectible(string memory tokenURI) public returns (uint256) {
        uint256 newItemId = tokenCounter;
        _safeMint(msg.sender, newItemId);
        _setTokenURI(newItemId, tokenURI);
        tokenCounter = tokenCounter + 1;
        return newItemId;
      }
    }

如何將鑄幣限制為一件藝術品?

向 tokenCounter 添加條件。 您可以使用以下內容:

function createCollectible(string memory tokenURI) public returns(uint256) {
    require(tokenCounter == 0, "error msg here");
    uint256 newItemId = tokenCounter;
    _safeMint(msg.sender, newItemId);
    _setTokenURI(newItemId, tokenURI);
    tokenCounter = tokenCounter + 1;
    return newItemId;
  }

事實上,有很多方法可以達到相同的結果。 也許您可以使用簡單的 boolean 來節省一點汽油。

我希望你覺得這個有用:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM