私は最近トリュフを実験しており、次のチュートリアルに従いました: http://truffleframework.com/tutorials/pet-shop
トランザクションをセットアップしようとするたびに、以下と同じエラーが発生し続けます
エラー:エラー:txに正しいナンスがありません。アカウントのナンス:14 txのナンス:0
オンラインで確認し、これに関連する多くの記事を読んでいますが、これまでのところ、この問題の原因となるものを発見していません。
私が理解していることから、新しいトランザクションをハッシュするために以前のトランザクションを見つけることができないようです?
MetaMaskを使用するv3.14.1
次のようにアカウントをリセットできます。
アカウントのリセット[設定]メニューには、MetaMaskの[アカウントのリセット]ボタンがあります。このボタンは、現在の口座のノンスを計算するために使用される現在の口座の取引履歴を消去します。
通常のユーザーには、この機能を使用する理由はないはずです。
これは、テストネットワークをリセットしたが、同じアカウントの使用を継続したい開発者にとって便利です。MetaMaskに、このネットワークIDは新しい状態のクリーンなネットワークであると思わせます。
参照: http://metamask.helpscoutdocs.com/article/36-resetting-an-account
(おかげで Tim W )
古い応答:yatskevichの答えは正しいです。
ただし、Truffle 4+を "truffle開発"で使用する方法については、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を再インストールする必要があります!
MetaMaskでTestRPCネットワークに再接続してみてください。
Main Ethereum Network
(またはLocalhost 8545以外)を選択しますLocalhost 8545
をもう一度選択します新しいTestRPCノードを停止して起動すると、この問題に出くわしました。
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"
}
}
};