TestRPC/Ganache: у tx нет правильного nonce

Недавно я экспериментировал с трюфелем и следил за следующим учебным пособием: http://truffleframework.com/tutorials/pet-shop

Всякий раз, когда я пытаюсь настроить транзакцию, я получаю ту же ошибку ниже

Ошибка: ошибка: у tx нет правильного значения nonce. счет имеет nonce of: 14 tx имеет nonce of: 0

Проверяли онлайн и читали о многих статьях, связанных с этим, но пока не нашли, что может вызвать эту проблему.

  • Трюфель v3.4.7
  • Твердость v0.4.13
  • Npm v5.3.0
  • TestRPC v4.0.1 (также случается с Ganache)
  • Метаданные v3.9.5

Насколько я понимаю, он не может найти предыдущие транзакции для хеширования новой транзакции?

Ответ 1

Используя MetaMask v3.14.1 вы можете сбросить свою учетную запись следующим образом:

Сброс учетной записи В меню "Настройки" у MetaMask есть кнопка "Сбросить учетную запись". Эта кнопка уничтожает историю транзакций текущей учетной записи, которая используется для расчета текущего счета nonce.

enter image description here

У обычных пользователей никогда не должно быть причин использовать эту функцию.

Это полезно для разработчиков, которые перезагружают тестовую сеть, но хотят продолжать использовать ту же учетную запись, заставляя MetaMask полагать, что этот сетевой идентификатор является чистой сетью в новом состоянии.

Ссылка: http://metamask.helpscoutdocs.com/article/36-resetting-an-account

(Спасибо Тиму У)


Старый ответ: Ответ яцкевича верен.

Тем не менее, для людей, как использовать Truffle 4+ с "трюфелем", вам нужно удалить и переустановить MetaMask, чтобы заставить его работать снова, каждый раз, когда вы запускаете Truffle Develop!

Эта проблема рассматривается здесь: https://github.com/trufflesuite/truffle/issues/681, здесь: https://github.com/trufflesuite/ganache/issues/112, а также здесь: https://github. ком /metaMask/metamask-удлинители /questions/1999

Короче, они работают над этим, и в то же время вам нужно переустанавливать MetaMask каждый раз!

Ответ 2

Попробуйте подключиться к вашей сети TestRPC в MetaMask:

  1. Выберите Main Ethereum Network (или любой другой, кроме Localhost 8545)
  2. Выберите Localhost 8545 снова

Я наткнулся на эту проблему после остановки и запуска нового узла TestRPC.

Ответ 3

Проверьте ваш truffle.js или truffle-config.js

если вы используете HDWalletProvider как 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"
    }
  }
};