Sicherheit - Geth-Wallet sperren/entsperren

Wenn Sie geth auf localhost ausführen und eine von mir bereitgestellte Webseite verwenden, um mit dem Ethereum-Netzwerk zu interagieren, kann ich dann nicht einfach das Konto entsperren und das Geld mit web3js und Javascript auf ein anderes Konto überweisen? Ich bin ein wenig verwirrt darüber, wie das Sperren und Entsperren von Wallets funktioniert und wie ich eine eigenständige Web-App erstellen kann, ohne Geth/Infura zu verwenden?

Ist es auch möglich, eine Web-Dapp mit einer Web-Wallet zu verbinden und die Web-Wallet irgendwie zu verwenden, um mit dem Vertrag zu interagieren?

Ihre Frage ist etwas unklar. Sie müssen eine Webschnittstelle bereitstellen, damit andere mit dem Ethereum-Netzwerk interagieren können? Oder möchten Sie so etwas tun ?
@AchalaDissanayake Entschuldigung, ich meinte etwas Ähnliches wie den von Ihnen bereitgestellten Link. Was passiert, wenn ich mit meiner Smart-Contract-Instanz interagiere und alle Ether von der lokalen Brieftasche in eine andere Brieftasche übertrage? Kann ich das tun, ohne dass der Benutzer es weiß, und wenn ja, wie kann ich das verhindern? Was ist eine sichere Lösung dafür?
verstanden oder immer noch verwirrt?
@AchalaDissanayake Etwas mehr Klarstellung wird helfen! Kann ich web3.personal.unlockAccount(acc, pswd) verwenden, um ein Konto mit Javascript zu entsperren? Und was wäre die pswd, um das Konto zu entsperren? Wird es die Passphrase sein, die Sie beim Erstellen des Kontos erhalten haben, oder der private Schlüssel? Muss acc auch ein Konto auf dem localhost sein, auf dem geth läuft, oder könnte es ein eth-Konto und ein entsprechendes pswd sein?
Es ist die Passphrase, die Sie brauchen. Wenn Sie die Schlüsselspeicherdatei lokal haben, können Sie sie mit dem lokalen Knoten entsperren

Antworten (1)

Wenn Sie geth auf localhost ausführen und auf meine Webseite stoßen, kann ich dann nicht einfach das Konto entsperren und das Geld mit web3js und Javascript auf ein anderes Konto überweisen?

Wenn Sie mit meiner Webseite gemeint haben, dass Sie einen Wallet-ähnlichen Service anbieten, ja, das können Sie.

Angenommen, Sie haben eine Webseite bereitgestellt und der Benutzer kann über seinen eigenen lokalen Knoten interagieren, und Sie bitten ihn, das Kennwort zum Entsperren des Kontos anzugeben. Sie können das Kennwort daraus abrufen und irgendwie einen Weg finden, auf das Dateisystem der Benutzer zuzugreifen Computer (genauso wie ein Hacker einen Weg findet, in ein System einzudringen) und die Keystore-Datei erhalten.

Aber das Hauptproblem ist, warum die Leute Ihrer Webseite oder Ihrem Service vertrauen sollten?

Wenn Sie anderen zeigen möchten, dass Ihre Webseite vertrauenswürdig ist, kann ich etwas vorschlagen wie , dass Sie die Schnittstelle zur Interaktion mit dem Ethereum bereitstellen, wenn der Benutzer sein Konto auf einem lokal ausgeführten Knoten oder Metamasken-ähnlichen Dienst entsperrt hat. Obwohl Sie also Zugriff auf die Keystore-Datei erhalten, ist es schwierig, sie zu entschlüsseln, um private Schlüssel zu finden, da Sie das Passwort/die Phrase nicht kennen.

Wallets funktionieren so, dass sie ein kryptografisches Schlüsselpaar generieren und Ihren privaten Schlüssel lokal verschlüsselt speichern. Wenn Sie also das Passwort angeben, wird der Schlüssel entschlüsselt und zum Signieren von Transaktionen verwendet. Sie können diesen Beitrag für weitere Details lesen .

Allerdings sind die Wallets nicht 100% vertrauenswürdig. Dass man den Wallet-Dienstleistern manchmal noch vertrauen muss. Hier lässt es sich gut lesen .

Abschließend kann ich Ihnen vorschlagen, einen Metamasken -ähnlichen Dienst zu verwenden, um eine vertrauenswürdige DApp zu erstellen. Diese Frage wird auch für Sie nützlich sein.

Es fällt mir am schwersten, eine importierte V3-Brieftasche mit web3 zu verbinden. Ich kann web3 nicht dazu bringen, txns erfolgreich zu signieren, wenn ich web3.eth.accounts.wallet.decrypt verwende. Es gibt keine Dokumentation darüber, wie man es zur Standardadresse macht? Ich versuche, web3.eth.accounts.wallet[0]['address']nach dem Entschlüsseln auf Standard zu setzen. Ohne die ['address']Eigenschaft wird ein Fehler ausgegeben. Vielen Dank.