Matic测试网铸造ERC721 NFT报EIP-1559不支持错误,求助排查
错误原因
报错核心是你发起铸造交易时默认使用了EIP-1559类型的交易结构,但你当前调用的RPC节点或链配置不兼容该交易格式,导致交易校验失败。虽然Polygon Mumbai官方支持EIP-1559,但部分公共RPC节点对这类交易的适配存在缺陷,加上部分web3/Hardhat版本默认优先走EIP-1559交易,没有自动降级到legacy交易的逻辑,就会触发该报错。
解决方案
- 方案1:Hardhat全局配置关闭EIP-1559
在hardhat.config.js的Mumbai网络配置项中新增eip1559: false参数,强制所有交易使用传统的gasPrice模式,示例配置:module.exports = { networks: { mumbai: { url: "你的Mumbai RPC地址", accounts: ["你的钱包私钥"], chainId: 80001, eip1559: false } } } - 方案2:交易参数手动指定legacy模式
不需要修改全局配置的情况下,调用铸造方法时手动传入gasPrice,不要填写maxPriorityFeePerGas、maxFeePerGas两个EIP-1559专属参数即可,示例代码:// 以ethers为例 const tx = await nftContract.mint(接收地址, tokenId, { gasPrice: await ethers.provider.getGasPrice() }) await tx.wait() - 方案3:升级依赖版本
低版本web3.js/ethers对Polygon链的EIP-1559自动识别存在bug,升级到web3.js v4+或者ethers v6+版本后,工具会自动检测链支持的交易类型,自动适配格式。 - 方案4:更换RPC节点
你使用的公共RPC节点可能存在EIP-1559支持不完善的问题,更换为官方公共RPC或者专属付费RPC即可解决节点适配问题。
内容的提问来源于stack exchange,提问作者stochasticcrap
相关产品推荐
相关产品推荐

