首页 > 解决方案 > 仅通过 API 允许 NFT 铸造

问题描述

我正在构建一个具有不同 NFT 之间关系的 NFT 收集合同。这意味着每个铸造的 NFT 都有来自同一集合的纠缠 NFT(ei NFT #25 与 NFT#222 相关,反之亦然)。问题是我希望有一个网站可以随机化用户购买的 NFT 的 ID,所以他不能直接铸造可能很少见的纠缠不清的 NFT(用户很容易通过外观知道这一点)。

长话短说,我正试图找出一种方法来阻止用户铸造新的 NFT,但仍然让他们支付费用。我认为可能的唯一方法是使用铸币访问代码部署合约,该代码将由来自网络应用程序的铸币请求传递,因此:

uint256 MINT_PASS;
constructor(uint256 pass) ERC721("NFTexample", "XMP") public {
    CEOaddress = msg.sender;
    MINT_PASS = pass;
}

function minting(address recipient, string memory tokenURI, uint256 _tokenID, uint256 SECRET_CODE) public
    returns (uint256)
{
    require(MINT_PASS == SECRET_CODE);
    uint256 newItemId = _tokenID;
    _mint(recipient, newItemId);
}

我想做的事情有更好、更安全的实现吗?

标签: soliditynft

解决方案


推荐阅读