我想请求一些帮助来开发一个铸币功能,该功能限制公共用户只能以0的铸币价格铸造一个NFT(不包括gas费)-在促销赠品的情况下。这可能吗?我欢迎任何建议,甚至是一个补充的集中解决方案。
这是我目前的功能。目前,我可以限制免费挖矿NFT数量的唯一方法是合约的所有者执行挖矿。但我希望公共用户执行此功能,特别是如果免费nft的数量很多,因此需要相关的天然气费用。它基于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);
}
}
require(balanceOf(msg.sender) <= maxGiveAway,"No more available.!");
将让用户mint允许的最大数量赠送!