Privates Netzwerk mit Geth einrichten, Konto kann nicht entsperrt und Verträge nicht bereitgestellt werden

Ich habe mit Geth ein privates Netzwerk mit folgendem Befehl eingerichtet:

geth --datadir="PathToDatadir" --mine -minerthreads 2 -verbosity 3 -maxpeers 5 --ipcapi "admin,debug,eth,miner,net,personal,shh,txpool,web3" --ipcpath "geth.ipc" --port 30301 --rpc --rpcport 8101 --rpcapi eth,web3,personal --etherbase "e04fe31f4133f25ef3e5bfb39146edcf28724acd" --networkid 9990

So weit, ist es gut.

Ich habe ein Vertragssystem mit Truffle und Testrpc entwickelt und versuche nun, dieses auf mehreren Knoten bereitzustellen. Beim Ausführen von Truffle Migration stoße ich auf Probleme:

Laufende Migration: 1_initial_migration.js Ersetzen von Migrationen... Fehler aufgetreten, Bailing. Netzwerkstatus unbekannt. Überprüfen Sie erfolgreiche Transaktionen manuell. Fehler: Konto ist gesperrt

Ich habe Trüffel so konfiguriert, dass er von einer gewünschten Adresse gesendet wird (dieselbe, die als Etherbase definiert ist), aber das Konto ist gesperrt. Es gibt mehrere Möglichkeiten, ein Konto mit Geth zu entsperren. Die einzige Möglichkeit, wie es für mich zu funktionieren scheint, ist, wenn ich das Konto wie folgt entsperre:

geth --unlock "e04fe31f4133f25ef3e5bfb39146edcf28724acd" --password "fullPathtoTxtPasswordfile"

Bleibt das Konto für zukünftige Geth-Aufrufe entsperrt? Das Entsperren über personal.unlockAccount("address","fullPathtoTxtPasswordfile") in der Konsole funktioniert auch nicht. web3.accounts ist ebenfalls undefiniert.

Es scheint mir also gelungen zu sein, die Konten zu entsperren, aber die Truffle-Migration gibt mir immer noch den Fehler „Konto gesperrt“. Ich habe ähnliche Probleme beim Entsperren von Konten festgestellt, aber keine Lösung für mein eigenes spezifisches Problem gefunden.

Anscheinend wurde mein Problem dadurch verursacht, dass kein Netzwerk definiert wurde, das beim Ausführen der Truffle-Migration verwendet werden soll.

Antworten (1)

personal.unlockAccountnimmt keinen Dateipfad, sondern ein Passwort. Siehe: https://github.com/ethereum/go-ethereum/wiki/JavaScript-Console#personalunlockaccount

Versuchen Sie es in der Befehlszeile mit:

geth --unlock 0 --password "fullpathtofile"- Das Unlock-Argument benötigt einen Index. Sie können die Indizes anzeigen, indem Sie ausführen geth account list.

Wenn Sie sicherstellen möchten, dass es sich nicht um ein Problem mit der Datei handelt, können Sie auch Folgendes tun:

geth --unlock 0 --password <(echo "PASSWORD_HERE")

Das <(command)Formular führt den Befehl in der Klammer aus und erstellt eine benannte Pipe, die es an das Programm übergibt und als Datei mit dem Inhalt dieser Ausgabe fungiert. Sie können dies als Test für nicht vertrauliche Testkonten verwenden.

Danke für die nützlichen Informationen. Ich konnte das Konto bereits entsperren, indem ich die Adresse in Klammern als Parameter angab. Wenn ich jedoch die Entsperr- und Passwort-Flags dem größeren Geth-Befehl voranstelle oder anhänge, erhalte ich die folgende Meldung: Fatal: Konnte Konten nicht auflisten: Kontoindex 0 außerhalb des Bereichs [0, -1] Truffle Migrate scheint immer noch zu denken Konto ist gesperrt, während ich es in Geth entsperrt habe.