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

Remix部署ERC721合约报the called function should be payable错误求助

问题根因排查

  • 最核心的部署失败原因:构造函数逻辑冲突
    你的合约在构造函数中直接调用了mint(90),但mint函数全局生效的校验规则require(_mintAmount <= maxMintAmount)中,maxMintAmount的默认值为20,90远大于20,触发校验直接回滚交易,这就是你不管在本地VM还是Rinkby测试网部署都失败的核心原因。
  • 其他可能的部署问题
    部署时需要传入三个构造参数:NFT名称_name、NFT标识_symbol、初始BaseURI_initBaseURI,如果参数缺失、格式错误也会触发部署失败。

修复方案

你可以任选以下任意一种方案修复:

  1. 调整构造函数的铸造数量:将mint(90)改为20以内的数值,满足当前的单次最大铸造限制
  2. 调整全局单次最大铸造限制:将uint256 public maxMintAmount = 20;的默认值修改为大于等于90的数值
  3. 给owner增加校验豁免:将mint函数中的require(_mintAmount <= maxMintAmount);移到if (msg.sender != owner())的判断分支内,owner铸造不受单次数量限制

后续使用注意事项

  • 合约默认开启白名单限制onlyWhitelisted = true,普通用户铸造前需要先调用whitelistUsers将对应地址加入白名单
  • 普通用户铸造时需要传入不小于cost * 铸造数量的ETH,否则也会触发回滚

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:57:03