我只想为每个智能合同制作一个独家NFT。所有的教程和书籍都展示了如何通过继承ERC721来制作收藏品。所以简单的代码是:
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;
}
}如何将造币限制在一件艺术品上?
发布于 2022-01-28 18:19:19
向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;
}事实上,有很多方法可以达到同样的效果。也许你可以用一个简单的布尔值来节省一点汽油。
我希望你认为这是有用的:)
https://stackoverflow.com/questions/70897461
复制相似问题