web-dev-qa-db-fra.com

TestRPC / Ganache: le tx n'a pas le bon nonce

J'ai expérimenté la truffe récemment et j'ai suivi le tutoriel suivant: http://truffleframework.com/tutorials/pet-shop

Chaque fois que j'essaie de configurer une transaction, je reçois toujours la même erreur ci-dessous

Erreur: Erreur: le tx n'a pas le nonce correct. compte a nonce de: 14 tx a nonce de: 0

Vérifié en ligne et lu de nombreux articles à ce sujet, mais jusqu'à présent, je n'ai pas trouvé ce qui pourrait causer ce problème.

  • Truffle v3.4.7
  • Solidité v0.4.13
  • Npm v5.3.0
  • TestRPC v4.0.1 (se produit également avec Ganache)
  • Metamask v3.9.5

D'après ce que je comprends, il semble qu'il ne soit pas en mesure de trouver les transactions précédentes pour hacher la nouvelle transaction?

31
user1664

Utilisation de MetaMask v3.14.1 vous pouvez réinitialiser votre compte comme suit:

Réinitialisation d'un compte Dans le menu Paramètres, MetaMask dispose d'un bouton "Réinitialiser le compte". Ce bouton efface l'historique des transactions du compte courant, qui est utilisé pour calculer le nonce du compte courant.

enter image description here

Les utilisateurs normaux ne devraient jamais avoir de raison d'utiliser cette fonctionnalité.

Ceci est utile pour les développeurs qui réinitialisent un réseau de test mais souhaitent continuer à utiliser le même compte, forçant MetaMask à croire que cet ID réseau est un réseau propre à l'état neuf.

Réf: http://metamask.helpscoutdocs.com/article/36-resetting-an-account

(Merci à Tim W )


Ancienne réponse: La réponse de yatskevich est correcte.

Cependant, pour ceux qui utilisent Truffle 4+ avec "truffle develop", vous devez supprimer et réinstaller MetaMask pour le faire fonctionner à nouveau chaque fois que vous exécutez Truffle Develop!

Ce problème est résolu ici: https://github.com/trufflesuite/truffle/issues/681 , ici: https://github.com/trufflesuite/ganache/issues/112 , et aussi ici: https://github.com/MetaMask/metamask-extension/issues/1999

En bref, ils y travaillent et en attendant, vous devez réinstaller MetaMask à chaque fois!

40
Muhammad Altabba

Essayez de vous reconnecter à votre réseau TestRPC dans MetaMask:

  1. Sélectionnez Main Ethereum Network (ou tout autre que Localhost 8545)
  2. Sélectionnez Localhost 8545 encore

J'ai rencontré ce problème après avoir arrêté et démarré un nouveau nœud TestRPC.

30
yatskevich

Vérifier votre truffle.js ou truffle-config.js

si vous utilisez le HDWalletProvider comme ci-dessous, il semble que ce soit la cause de l'erreur

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"
    }
  }
};

supprimer le HDWalletProvider comme ci-dessous, il résout le mien

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"
    }
  }
};
0
grandia