33

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

每当我尝试设置交易时,我都会在下面收到相同的错误

错误:错误:tx 没有正确的随机数。帐户的随机数为:14 tx 的随机数为:0

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

  • 松露 v3.4.7
  • 坚固性 v0.4.13
  • npm v5.3.0
  • TestRPC v4.0.1(Ganache 也会发生)
  • 元掩码 v3.9.5

据我了解,似乎无法找到以前的交易来散列新交易?

4

3 回答 3

42

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

重置帐户 在设置菜单中,MetaMask 有一个“重置帐户”按钮。此按钮擦除当前账户的交易历史,用于计算当前账户的 nonce。

在此处输入图像描述

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

这对于重置测试网络但希望继续使用相同帐户的开发人员很有用,迫使 MetaMask 相信此网络 ID 是处于全新状态的干净网络。

参考: http: //metamask.helpscoutdocs.com/article/36-resetting-an-account

(感谢Tim Wu


旧回复: yatskevich 的回答是正确的。

但是,对于如何使用 Truffle 4+ 和“truffle develop”的人来说,每次运行 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!

于 2017-11-22T07:59:49.787 回答
30

尝试在 MetaMask 中重新连接到您的 TestRPC 网络:

  1. 选择Main Ethereum Network(或除 Localhost 8545 以外的任何其他内容)
  2. Localhost 8545再次选择

在停止并启动新的 TestRPC 节点后,我偶然发现了这个问题。

于 2017-08-14T14:20:52.440 回答
2

检查您的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"
    }
  }
};
于 2019-05-16T08:14:56.623 回答