Hedera测试网重置后交易Nonce不一致问题的解决方法
Hedera测试网重置后Nonce不一致问题的修复方案
问题根源
Hedera测试网重置时会彻底清空链上历史交易数据,因此eth_getTransactionCount(address, 'latest')返回的是重置后的初始Nonce(即0)。但部分RPC节点的pending交易池缓存未被完全清理,导致pending标签返回的仍是重置前使用过的Nonce值(比如你遇到的140)。MetaMask默认优先采用pending返回的Nonce构建交易,这会直接导致交易因Nonce不匹配失败。
快速修复步骤
1. 手动修正MetaMask的Nonce
- 打开MetaMask,进入目标账户的「设置」→「高级」选项
- 开启「自定义Nonce」功能
- 将Nonce手动设置为
0(或eth_getTransactionCount(address, 'latest')返回的数值) - 发送一笔小额测试交易后,关闭自定义Nonce,MetaMask会自动同步正确的Nonce
2. 切换至官方RPC节点
若使用第三方公共节点,直接替换为Hedera官方维护的测试网RPC节点——官方节点在测试网重置后会第一时间清理缓存,返回的Nonce数据准确可靠。
3. 自建节点的缓存清理操作
如果是自行运行Hedera EVM节点,执行以下命令清理缓存:
# 停止节点服务 sudo systemctl stop hedera-evm-node # 删除pending交易池缓存目录 rm -rf /var/lib/hedera-evm-node/pending-tx-pool # 重启节点服务 sudo systemctl start hedera-evm-node
验证方法
通过工具(如Postman、终端curl)发送以下JSON-RPC请求,确认返回值一致:
// 查询latest状态的Nonce {"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["你的账户地址","latest"],"id":1} // 查询pending状态的Nonce {"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["你的账户地址","pending"],"id":2}
当两个请求返回的数值相同时,即可正常进行交易操作。
内容的提问来源于stack exchange,提问作者bguiz
相关产品推荐
相关产品推荐

