2

我想请求一些帮助来开发一个铸币功能,该功能限制公共用户只铸币一个,铸币价格为 0(不包括汽油费)的 NFT - 在促销赠品的情况下。这甚至可能吗?我欢迎任何建议,甚至是补充集中式解决方案。

到目前为止,这是我的功能。目前,我可以限制免费铸币 NFT 数量的唯一方法是合约所有者执行铸币。但我希望公共用户执行此功能,特别是如果免费 NFT 的数量很多,因此会产生相关的 gas 费用。它基于 OpenZeppelin 合约:

contract MyTestContract is ERC721, ERC721Enumerable, Ownable {

bool public preLaunchActive = false;
uint256 public maxGiveAway = 3;

function myPreLaunchGiveAway(uint amount, address to) public onlyOwner {
    require(preLaunchActive, "preLaunchActive state is not active.");
    require(amount <= maxGiveAway, "No more available.");
    require(amount > 0, "Amount must be greater than 0.");
    for (uint i = 0; i < amount; i++) {
        uint256 tokenId = totalSupply();
        if (tokenId < maxGiveAway) {
            _safeMint(to, tokenId);
        }
    }

    maxGiveAway = maxGiveAway.sub(amount);
}

}
4

1 回答 1

0
require(balanceOf(msg.sender) <= maxGiveAway,"No more available.!");

将让用户铸币允许的最大数量赠送!

于 2022-01-08T02:52:27.303 回答