You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HashLips来源ERC-721合约预期铸造1个NFT却每次产出2个故障咨询

问题根源

你代码中的mint函数循环条件书写错误,是导致每次铸造多生成1个NFT的核心原因。

原代码的循环逻辑如下:

for (uint256 i = 0; i <= _mintAmount; i++) { //start the index at 0
  _safeMint(_to, supply + i);
}

你使用了<=比较符,当传入的_mintAmount为1时,循环会执行2次:

  • 第一次i=0,满足0 <= 1,铸造1个NFT
  • 第二次i=1,满足1 <= 1,再铸造1个NFT
    两次执行结束后刚好生成2个NFT,和你遇到的现象完全一致。这个问题也会影响其他铸造数量的调用,比如传入_mintAmount=3时,原代码会铸造4个NFT,和你设置的maxMintAmount=3规则冲突。

修复方案

把循环条件里的<=改成<即可,修改后代码如下:

for (uint256 i = 0; i < _mintAmount; i++) { //start the index at 0
  _safeMint(_to, supply + i);
}

修改后当传入_mintAmount = 1时,只有i=0满足0 < 1的条件,循环仅执行1次,刚好铸造1个NFT,符合预期。同时该修改也适配你设置的maxMintAmount=3、maxSupply=3的规则,不会出现超量铸造的问题。

内容的提问来源于stack exchange,提问作者Meowsleydale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:27:04