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

Goerli测试网NFT铸造交易长时间Pending问题求助

解决NFT铸造交易Pending无法获取回执的问题

可能原因及对应解决方案

1. Gas参数设置不合理(最常见原因)

你的代码仅通过getGasPrice()获取基础Gas价格,但Goerli测试网的矿工有时需要更高的优先级费用或总费用才会打包交易。当前输出的Gas价格约40.68 Gwei,可能低于网络当前的最低要求。

修复方法:
改用EIP-1559动态费用机制,显式设置优先级费用和总费用:

// 替换原mintNFT调用,根据网络情况调整数值
const mintNftTx = await BasicNft.mintNFT({
  maxPriorityFeePerGas: ethers.utils.parseUnits("5", "gwei"),
  maxFeePerGas: ethers.utils.parseUnits("50", "gwei")
})

也可以额外设置Gas Limit,避免合约执行时Gas不足:

const mintNftTx = await BasicNft.mintNFT({
  gasLimit: 300000, // BasicNFT mint一般消耗15-20万Gas,预留冗余量
  maxPriorityFeePerGas: ethers.utils.parseUnits("5", "gwei"),
  maxFeePerGas: ethers.utils.parseUnits("50", "gwei")
})

2. 合约实例未正确连接到签名钱包

代码中用ethers.getContract("BasicNft")获取合约实例,但未指定签名者,可能默认使用的账户存在权限或nonce问题。

修复方法:
将合约连接到你的部署者钱包:

// 获取部署者账户
const [deployer] = await ethers.getSigners()
// 绑定签名者到合约
const BasicNft = await ethers.getContract("BasicNft", deployer)
const NftMarketplace = await ethers.getContract("NftMarketplace", deployer)

3. RPC节点同步问题

你使用的Alchemy RPC节点可能出现延迟或同步异常,导致交易状态无法及时更新。

修复方法:

  • 更换其他Goerli测试网RPC节点,修改.env中的GOERLI_RPC_URL。
  • 清理Hardhat缓存后重试:执行npx hardhat clean,再重新运行脚本。

4. 交易Nonce冲突

如果钱包存在未确认的历史交易,新交易的nonce可能重复或顺序错误,导致交易卡住。

修复方法:
手动指定交易nonce,确保与钱包当前nonce一致:

const nonce = await deployer.getTransactionCount()
const mintNftTx = await BasicNft.mintNFT({
  nonce: nonce,
  // 加上Gas参数
})

也可以在钱包中取消所有Pending交易后,重新运行脚本。

5. 合约代码逻辑异常

检查BasicNft合约的mintNFT函数是否存在问题:

  • 确认函数是公开可调用的,没有额外的访问控制限制(比如仅白名单地址可 mint)。
  • 确认函数内部逻辑无错误(比如缺少tokenURI参数、状态变量异常),可以先在Hardhat本地网络运行脚本验证功能。

临时排查步骤

  1. 若控制台输出有交易哈希,复制到Goerli区块浏览器查询状态,查看是否有明确错误提示。
  2. 执行npx hardhat balance --account <你的钱包地址> --network goerli,确认钱包ETH余额充足。
  3. 去掉--network goerli参数,在本地网络运行脚本,验证代码逻辑是否正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:05:27