Konto ist gesperrt. Wie entsperre ich es mit json-rpc? [Duplikat]

Beim Versuch, eine Transaktion über die json-rpc-Schnittstelle auf einem Geth-Knoten (Version 1.4.10-stable-5f55d95a, läuft auf Testnet) zu senden, eth_sendTransactionerhielt ich diese Fehlermeldung:

-32000 [Nachricht] => Konto ist gesperrt

Ich habe versucht, das Konto mit dem folgenden Befehl zu entsperren:

geth --testnet --exec "personal.unlockAccount(eth.accounts[0], password, 3600)" attach true http://localhost:8545

Aber ich bekomme einen anderen Fehler:

Schwerwiegend: An Remote-Geth kann keine Verbindung hergestellt werden: ungültiger Endpunkt

Versuchen Sie, das Konto wie unter Entsperren des Kontos mit Geth beschrieben zu entsperren?

geth --testnet --unlock 0x3b877e80b... --password password

wirft auch diesen Fehler:

Schwerwiegend: Datenbank konnte nicht geöffnet werden: Ressource vorübergehend nicht verfügbar

Eine weitere Option zum Entsperren des Kontos gemäß der vorherigen URL ist die Verwendung der interaktiven Javascript-Konsole von Geth. Aber wie starte ich eine solche Konsole?

Ich habe gesehen, dass jemand das gleiche Problem mit der Code-32000-Nachricht hat: Konto ist gesperrt , aber jeder Befehl dieser Art

geth --unlock

funktioniert nicht auf meinem geth-Knoten.

Ist es trotzdem möglich, Konten direkt über die json-rpc-Schnittstelle zu entsperren?

Warum erlaubt mir Geth nicht, mein Ethereum-Konto zu entsperren? Warum "ungültiger Endpunkt"?

Werden Ihre beiden Geth-Befehle auf demselben Computer ausgeführt?

Antworten (1)

  1. Der Befehl mit attachsollte wie folgt aussehen:
$ geth --testnet --exec "personal.unlockAccount(eth.accounts[0], \"password\", 3600)" hängen Sie http://localhost:8545 an

Stellen Sie sicher, dass Sie personalin Ihrem --rpcapi "eth,web3,personal"ersten Geth, das Sie gestartet haben, enthalten sind.

  1. Der Befehl with unlocksollte als Teil des ersten Starts von Geth verwendet werden:

    • Haben Sie eine password.txtDatei, die so viele Zeilen enthält, wie Konten entsperrt werden müssen. Jede Zeile mit passwordohne die ".
    • Fügen Sie dann --unlock "0x3b877e80b..." --password password.txtzu Ihrer Geth-Befehlszeile hinzu.
  2. Abgesehen davon, um Geth mit einer Konsole zu starten, fügen Sie einfach consoleam Ende hinzu. Wenn Sie sich also in der Geth-Konsole befinden, können Sie Folgendes eingeben:

> personal.unlockAccount(eth.accounts[0])
// Oder
> personal.unlockAccount(eth.accounts[0], "password")
// Oder
> personal.unlockAccount(eth.accounts[0], "password", 3600)

Bearbeiten:

Auf eigene Gefahr, da der Aufruf das Passwort unverschlüsselt enthält, lautet der direkte Aufruf zum Entsperren über RPC:

$ curl -X POST --data '{"jsonrpc":"2.0","method":"personal_unlockAccount","params":["0x7642b...", "password", 3600],"id":67 }' http://localhost:8545
{"jsonrpc":"2.0","id":67,"result":true}
Angesichts der Tatsache, dass das Exportieren personalüber rpceinen Knoten für Exploits öffnet, sollten sie nicht stattdessen durch anhängen ipc, z . B. geth --testnet --exec "personal.unlockAccount(eth.accounts[0], \"password\", 3600)" attach ~/<datadir>/geth.ipc?
Ich stimme zu 100% zu%. Ich habe nur gefragt, ob beide Geth auf demselben Computer sind.
Danke vielmals. Die Verwendung des von Ihnen beschriebenen Befehlszeilenaufrufs für Geth funktionierte wie ein Zauber. Trotzdem frage ich mich, ob diese Entsperraktion auch über das json-rpc-Protokoll möglich sein könnte, um den Eingriff des Administrators auf der Befehlszeile zu vermeiden.
Ich habe es in der Antwort hinzugefügt, aber seien Sie vorsichtig, das Passwort wird im Klartext übertragen.
Gibt es eine Möglichkeit, das Konto mit dem privaten Schlüssel zu entsperren, ohne das Passwort @XavierLeprêtreB9lab zu verwenden
@YogeshKarodiya Ein gesperrtes Konto bedeutet hier einen gesperrten privaten Schlüssel.
@XavierLeprêtreB9lab bitte beantworte diese ethereum.stackexchange.com/questions/29904/… Frage