Web3.js gibt einen Fehler „Transaktion mit ungültiger Nonce“ aus. wenn ich versuche, Vertragsmethoden von der JavaScript-Konsole aufzurufen. Die gleichen Methoden aus den gleichen Verträgen funktionieren gut von Mist, oder, was seltsam ist, wenn ich 'geth Attach' an geth von Mist gestartet habe - web3.js funktioniert mit den gleichen Methoden, aber auf 'reinem' Mist - nicht. Es ist kein Problem von Mist, ich habe das gleiche mit Geth auf dem Server ohne Mist versucht.
Zum Beispiel:
Ich habe einen Vertrag auf https://etherscan.io/address/0x80f84866d4872f1ea412ddf10e2ed7af0b8ca8fb
Vertragscode: https://etherscan.io/address/0x80f84866d4872f1ea412ddf10e2ed7af0b8ca8fb#code
In der JavaScript-Konsole habe ich ein Vertragsobjekt ProofOfExistence (web3.eth.contract - https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethcontract ). Wenn ich versuche, die Kontaktfunktion von der JavaScript-Konsole mit web3.js aufzurufen, erhalte ich eine Fehlermeldung wie diese:
Transaction w/ invalid nonce. tx=0 state=3)
web3.eth.getTransactionCount(web3.eth.accounts[0]) gibt 3 zurück
Ich habe versucht ( https://github.com/ethereum/wiki/wiki/JavaScript-API#contract-methods ):
ProofOfExistence.docIndex();
oder
ProofOfExistence.docIndex({nonce: web3.eth.getTransactionCount(web3.eth.accounts[0])});
oder
ProofOfExistence.docIndex.call();
oder
ProofOfExistence.docIndex.call({nonce: web3.eth.getTransactionCount(web3.eth.accounts[0])});
mit dem gleichen Fehler: Transaktion mit ungültiger Nonce. tx=0 Zustand=3)
Wie greife ich auf Vertragsmethoden von web3.js zu, um diesen Fehler zu vermeiden?
Diese „Transaktion mit ungültiger Nonce“ war ein Problem auf Geth/v1.5.0-unstable/linux/go1.5.1
Auf Geth/v1.4.9-stable/linux/go1.5.1 funktioniert gut.
Die Lösung:
sudo apt-get autoremove ethereum geth # Geth/v1.5.0-unstable/linux/go1.5.1
sudo add-apt-repository -r ppa:ethereum/ethereum-dev # Geth/v1.5.0-unstable/linux/go1.5.1
sudo apt-get update && sudo apt-get install ethereum # Geth/v1.4.9-stable/linux/go1.5.1