TestRPC / Ganache:tx没有正确的nonce

时间:2017-08-09 08:43:57

标签: node.js ethereum truffle metamask

我最近一直在尝试使用松露,并遵循以下教程:http://truffleframework.com/tutorials/pet-shop

每当我尝试设置一个事务时,我都会在

下面遇到同样的错误
  

错误:错误:tx没有正确的nonce。 account hasce of:14 tx hasce of:0

在网上查看并阅读了很多与此相关的文章,但到目前为止还没有找到可能导致此问题的原因。

  • Truffle v3.4.7
  • Solidity v0.4.13
  • Npm v5.3.0
  • TestRPC v4.0.1(也适用于Ganache)
  • Metamask v3.9.5

根据我的理解,它似乎无法找到以前的事务来散列新事务?

3 个答案:

答案 0 :(得分:39)

使用MetaMask v3.14.1您可以按以下方式重置帐户:

  

重置帐户在设置菜单中,MetaMask有一个"重置   帐户"按钮。此按钮可擦除当前帐户的交易   历史记录,用于计算当前帐户的随机数。

     

enter image description here

     

普通用户永远不应该有理由使用此功能。

     

这对于重置测试网络但想要的开发人员非常有用   继续使用相同的帐户,迫使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网络:

  1. 选择Main Ethereum Network(或除Localhost 8545以外的任何其他内容)
  2. 再次选择Localhost 8545
  3. 在停止并启动一个新的TestRPC节点后,我偶然发现了这个问题。

答案 2 :(得分:0)

检查您的truffle.jstruffle-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"
    }
  }
};