繁体   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