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

ERC4907合约_beforeTokenTransfer函数编译参数数量错误排查

解决ERC4907 + OpenZeppelin ERC721编译错误:_beforeTokenTransfer参数不匹配

问题场景

使用以下工具链开发NFT市场:

  • Truffle v5.6.8
  • Ganache v7.5.0
  • Solidity v0.5.16
    基于ERC4907智能合约开发时,编译触发错误:_beforeTokenTransfer函数调用传入3个参数,却被预期传入4个。即使参考官方ERC4907实现代码,问题依然存在。

问题原因

OpenZeppelin的ERC721合约在2022-11-08进行了破坏性更新,为_beforeTokenTransfer函数新增了uint256 batchSize参数,导致旧版ERC4907实现中仅传3个参数的调用方式与新版ERC721的函数签名不兼容。

解决方案

修改ERC4907合约中调用_beforeTokenTransfer的代码,补充batchSize参数。由于ERC4907针对单NFT操作,该参数通常传入1:

// 原调用(报错)
_beforeTokenTransfer(from, to, tokenId);

// 修改后(正常编译)
_beforeTokenTransfer(from, to, tokenId, 1);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 13:35:14