做一个truffle相关的项目,每次尝试创建交易时,总会有以下的一个错误提示:
the tx doesn’t have the correct nonce
完整的一般是这样:
Error: the tx doesn't have the correct nonce. account has nonce of: 14 tx has nonce of: 0
开发环境:
- Truffle v3.4.7
- Solidity v0.4.13
- Npm v5.3.0
- TestRPC v4.0.1 (Ganache)
- Metamask v3.9.5
网上查阅并阅读了许多与nonce获取相关的文章,似乎导致这个获得nonce问题的原因,是找不到先前交易的nonce
来hash生成新交易的nonce
。
解决办法:
可以尝试通过你的MetaMask
重新连接的Test-RPC
:
- 1.选择Main Ethereum Network
或者是Localhost 8545
以太坊的其他任何网络。
- 2.然后再次选择Localhost 8545
。
在停止和启动一个新的TestRPC
节点之后,大部分情况下可以解决这个问题。
如果还不行那就用MetaMask
中的Reset Account
按钮,这个按钮擦除当前帐户的交易历史记录,用于计算常用账户的nonce。
注意:正常用户不适用这个特性。
这个只对于重置测试网络并希望继续使用同一帐户的开发人员来说是有用的,这样能使MetaMask相信这个网络ID是新状态下的干净网络。
对于用truffle 4+做truffle开发的用户来说,可能要重新装一下MetaMask。
原文:http://cw.hubwiz.com/card/c/ethereum-FAQ/1/2/1/
另外推荐一些之前的教程: