プロモーションの景品の場合に、パブリック ユーザーが 0 のミント価格 (ガス料金を除く) で 1 つの NFT のみをミントするように制限するミント機能の開発について、いくつかの助けを求めたいと思います。これは可能ですか?補足的な一元化されたソリューションであっても、提案を歓迎します..
これまでの私の機能は次のとおりです。現時点では、NFT の無料マイニングの数を制限できる唯一の方法は、コントラクトの所有者がマイニングを実行することです。ただし、特に無料の NFT の数が多く、それに伴いガス料金が発生する場合は、パブリック ユーザーにこの機能を実行してもらいたいと思います。OpenZeppelin Contracts に基づいています。
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);
}
}