So führen Sie eine Transaktion aus, ohne das Konto von der Web3-Benutzeroberfläche zu entsperren

Ich arbeite an einer App, die in einer privaten Blockchain bereitgestellt wird. Zum Testen habe ich mein Konto über die Geth-Konsole entsperrt, um die Meldung „Konto des Unterzeichners konnte nicht entsperrt werden“ zu überwinden. Es besteht jedoch das Risiko, dass jemand anderes den Knoten verbinden und Transaktionen ausführen kann, wenn ich das Konto entsperre (egal wie kurz die Dauer der Kontoentsperrung ist). Wie führe ich eine Transaktion aus, ohne das Konto zu entsperren? Kann ich bei jeder Transaktion ein Passwort senden?

Sehen Sie sich dies an, wenn Sie es automatisch entsperren möchten ethereum.stackexchange.com/q/2934/259

Antworten (2)

Verwenden Sie web3.personal.unlockAccount("accnumber", "password", duration)diese Option, um das Konto aus der Ferne zu entsperren. Diese API kann über RCP zur Verfügung gestellt werden:

    /geth --testnet --fast --rpc --rpcapi "db,eth,net,web3,personal" console

Dies mindert jedoch kein Risiko. Wenn ein Angreifer eine direkte Verbindung zum RPC Ihres Knotens hat, kann er oder sie den Knoten einfach wiederholt mit sendTransactionAnfragen bombardieren, bis das Konto zufällig entsperrt wird. Geben Sie die RPC-Schnittstelle also nicht an Dritte weiter. Stellen Sie sicher, dass es von Ihren Servern nur mit IP-Whitelists und ähnlichem verbunden werden kann.

Sie können nicht, das Konto enthält im Wesentlichen den privaten Schlüssel, der zum Signieren von Transaktionen benötigt wird. Der private Schlüssel wird verwendet, um eine Signatur zu erstellen, und der öffentliche Schlüssel (der von der Adresse abgeleitet wird) wird verwendet, um sie zu verifizieren (der Unterzeichner könnte die einzige Einheit sein, die in der Lage ist, diese Signatur zu erstellen).

Nein, das Passwort dient nur zum Schutz des mit AES verschlüsselten privaten Schlüssels (das Passwort ist der Schlüssel zum Entschlüsseln des privaten Schlüssels des Kontos).

Wie kann ich meinen privaten Schlüssel sehen?
Bitte stellen Sie eine separate Frage, da sie sich nicht auf diese bezieht.