Wie entsperre ich das Konto mit Geth?

Wenn ich die web3-Schnittstelle verwende, um mich bei msgs anzumelden, sagt es mir, dass das Konto entsperrt werden soll, wie kann ich dies mit Geth verwalten und was genau bedeutet Entsperren?

Ich habe diesen Befehl ausprobiert: geth --unlock "ACCOUNT_PUBLIC_ADDRESS" --password "PASSWORD" und bekam den Fehler: Account unlock with http access is verboten Dann habe ich versucht, das Konto zu entsperren, indem ich diesen Befehl eingegeben habe: personal.unlockAccount(eth.accounts[0], '1234', 9000) auf der Javascript-Konsole, aber immer noch der gleiche Fehler: Kontoentsperrung mit HTTP-Zugriff ist verboten

Antworten (3)

Standardmäßig sind Ihre Konten in Geth „gesperrt“, was bedeutet, dass Sie keine Transaktionen von ihnen senden können. Sie müssen ein Konto entsperren, um Transaktionen direkt über Geth oder über RPC zu senden (obwohl web3 dies nicht unterstützt). Um ein Konto zu entsperren, müssen Sie das Passwort angeben, das zum Entschlüsseln des mit Ihrem Konto verknüpften privaten Schlüssels verwendet wird, sodass Sie Transaktionen signieren können.

Wie entsperren Sie ein Konto? Es gibt ein paar verschiedene Möglichkeiten, wie Sie dies tun können, die in der Geth-Dokumentation hervorgehoben werden . Ich gebe einen Überblick:

  1. Entsperren Sie das Konto, wenn Sie Geth ausführen. Der Kennwortparameter ist optional. Wenn Sie es nicht angeben, werden Sie aufgefordert, das Kennwort einzugeben.

    geth --unlock <YOUR_ACCOUNT_ADDRESS> --password <YOUR_PASSWORD>

  2. Entsperren Sie das Konto über die interaktive Javascript-Konsole von Geth. Auch hier ist das Passwort optional. Wenn Sie es nicht angeben, werden Sie aufgefordert, es einzugeben. Beachten Sie, dass in früheren Versionen von Geth die Angabe des Passworts als Parameter dazu führen würde, dass das Passwort im Geth-Protokoll angezeigt wird, was ein Sicherheitsproblem darstellen kann .

    personal.unlockAccount(address, "password")

Es ist zu beachten, dass die Eingabe des Passworts nicht interaktiv das Passwort im Klartext in der Konsolenhistorie speichert. Dies sollte wirklich nicht verwendet werden, da es einen Angriffsvektor eröffnet.
geth --unlockist der Weg, es zu tun, ich denke web3, alle Ihre Eingaben werden im Protokoll protokolliert
Ich mache den Befehl wie diesen "geth --unlock (0x3b3F14690C8Fb8b1B333Ff38961bdEEa658a3873)", aber er sagt mir, dass "ungültige Kontoadresse oder Index '(0x3b3F14690C8Fb8b1B333Ff38961bdEEa658a3873)'", warum?
Entfernen Sie die Klammern, dann sollte es funktionieren: geth --unlock 0x3b3F14690C8Fb8b1B333Ff38961bdEEa658a3873Nicht, dass Sie nach einem Passwort gefragt werden, und die Eingabeaufforderung für das Passwort könnte irgendwo in der Masse der Ausgabe während des Starts von geth versteckt sein, z. B. Unlocking account 0xb2... | Attempt 1/3 Passphrase: I0522 12:30:46.360237 node/node.go:298] IPC endpoint opened: /home/someone/.ethereum/geth.ipc I0522 12:30:46.836509 p2p/nat/nat.go:111] mapped network port tcp:30303 -> 30303 (ethereum p2p) using UPNP IGDv1-IP11(Versuchen Sie, das Wort Passphrasein der obigen Ausgabe zu finden ;) )
Sie könnten auch eine Datei für Ihr Passwort verwenden wie: --unlock "0x4ae4ddbf073ff57e5861490d72f9177d9039428a" --password "d:\\p.txt"
Der richtige Weg, um das Konto in Geth zu entsperren, ist geth unlock 0x4ae4ddbf073ff57e5861490d72f9177d9039428a,0x4ae4ddbf073ff57e5861490d72f9177d9039428b,0x4ae4ddbf073ff57e5861490d72f9177d9039428c--password <passwordFile> . passwordFile sollte das Passwort enthalten, ein Passwort in jeder Zeile.
Wenn Sie es also entsperren können, wie sperren Sie es wieder? :p
@Kebman Sie können die Zeit angeben, um es entsperrt zu halten
@kebman mit Attach oder Console: personal.unlockAccount(address, "password", 0)um entsperrt zu bleiben, bis Sie es manuell wieder sperren. personal.unlockAccount(address, "password", 300)nach 300 Sekunden automatisch verriegeln. Sie können natürlich ein Passwort hinzufügen, aber es wird nicht empfohlen. (Noch, es auf unbestimmte Zeit entsperrt zu halten.) personal.lockAccount()Funktioniert heutzutage normalerweise, um manuell zu sperren.
@bshea Beachten Sie, dass Sie auch verwenden können, wenn Sie die automatische Neusperre verwenden möchten, aber Ihr Passwort nicht als Parameter übergeben möchtenpersonal.unlockAccount("address", undefined, 300)
Hinweis: Wenn Sie "Kontoentsperrung mit HTTP-Zugriff ist verboten!" Sie sollten den Geth-Knoten über https ausführen oder (NICHT FÜR PRODUKTION) mit zusätzlichen Parametern ausführen:--allow-insecure-unlock

Nur um die ausgezeichnete akzeptierte Antwort zu ergänzen.

Sie können das Konto auch direkt von Web3 aus entsperren:

web3.personal.unlockAccount('0xE0ca...c1f7', 'mypass')

Und schließe es zurück:

web3.personal.lockAccount('0xE0ca...c1f7')

Weitere Details finden Sie im web3-eth-personalModul.

was genau bedeutet freischalten

Eine Geth-Node-Implementierung enthält eine integrierte Kontoverwaltung, d. h. sie verwaltet den privaten Schlüssel des Kontos , der in verschlüsselter Form auf der Festplatte gespeichert wird. Das Entsperren eines Kontos bedeutet, dass sein privater Schlüssel entschlüsselt und im Speicher gespeichert wird (er wird niemals entschlüsselt auf der Festplatte gespeichert).

⚠ Das bedeutet, dass Sie besonders darauf achten sollten, dass niemand über HTTP-RPC, WS-RPC oder IPC auf Ihren Geth-Knoten zugreift, da diese Schnittstellen die Übertragung von Ether von jedem freigeschalteten Konto ermöglichen ! ⚠

web3.personal.unlockAccount('prviatekey');sollte ohne den Adressparameter funktionieren