我最近一直在尝试使用松露,并遵循以下教程:http://truffleframework.com/tutorials/pet-shop
每当我尝试设置一个事务时,我都会在
下面遇到同样的错误错误:错误:tx没有正确的nonce。 account hasce of:14 tx hasce of:0
在网上查看并阅读了很多与此相关的文章,但到目前为止还没有找到可能导致此问题的原因。
根据我的理解,它似乎无法找到以前的事务来散列新事务?
答案 0 :(得分:39)
使用MetaMask v3.14.1
您可以按以下方式重置帐户:
重置帐户在设置菜单中,MetaMask有一个"重置 帐户"按钮。此按钮可擦除当前帐户的交易 历史记录,用于计算当前帐户的随机数。
普通用户永远不应该有理由使用此功能。
这对于重置测试网络但想要的开发人员非常有用 继续使用相同的帐户,迫使MetaMask相信这一点 网络ID是处于新鲜状态的干净网络。
参考:http://metamask.helpscoutdocs.com/article/36-resetting-an-account
(感谢Tim Wu)
旧回应: yatskevich的答案是正确的。
然而,对于人们如何使用Truffle 4+和#34;松露开发",每次运行Truffle Develop时,你需要删除并重新安装MetaMask以使其再次运行!
此问题在此处解决: https://github.com/trufflesuite/truffle/issues/681,在这里: https://github.com/trufflesuite/ganache/issues/112,以及https://github.com/MetaMask/metamask-extension/issues/1999
简而言之,他们正在努力,同时您每次都需要重新安装MetaMask!
答案 1 :(得分:30)
尝试在MetaMask中重新连接到TestRPC网络:
Main Ethereum Network
(或除Localhost 8545以外的任何其他内容)Localhost 8545
在停止并启动一个新的TestRPC节点后,我偶然发现了这个问题。
答案 2 :(得分:0)
检查您的truffle.js
或truffle-config.js
如果您像下面那样使用HDWalletProvider
,似乎是导致错误的原因
var HDWalletProvider = require("truffle-hdwallet-provider");
var mnemonic = "your mnemonic";
module.exports = {
networks: {
development: {
provider: function() {
return new HDWalletProvider(mnemonic, "http://127.0.0.1:8545/", 0, 50);
},
network_id: '*',
gas: 9999999
}
},
compilers: {
solc: {
version: "^0.4.25"
}
}
};
如下所示删除HDWalletProvider,它解决了我的问题
module.exports = {
networks: {
development: {
host: "127.0.0.1", // Localhost
port: 8545, // Standard Ganache UI port
network_id: "*",
gas: 4600000
}
},
compilers: {
solc: {
version: "0.5.2"
}
}
};