Gibt es eine sichere Möglichkeit, Geld von einer Cold Wallet mit einem nicht vertrauenswürdigen Computer zu senden?

Sie haben 2 Computer. Man ist 100% offline und somit vertrauenswürdig. Andere ist online. Private Schlüssel werden auf dem Offline-Computer gespeichert und der Online-Computer hat keinen Zugriff darauf. Gibt es eine Möglichkeit, eine Transaktion mit dem Offline-Computer zu signieren und sie dann manuell (dh durch Eingeben einer Tastatur) auf den Online-Computer zu übertragen, damit dieser sie an die Blockchain überträgt?

Ich habe ein befehlszeilenbasiertes Tutorial geschrieben, wie man Ethereum-Transaktionen offline oder halboffline erstellt (Sie fragen das Netzwerk immer noch nach Nonce und Gaspreis): tokenmarket.net/blog/…

Antworten (5)

Wir bei MyEtherWallet.com haben genau dafür ein Offline-Transaktionstool implementiert. Während die meisten Leute, die Kühlhaus-Fanatiker sind, die Befehlszeile und das Innenleben von Gaspreis und Nonce kennen, können Sie dies über die GUI tun.

  1. Navigieren Sie über Ihren Online-Computer zum Reiter „Offline-Transaktion“. Hier generieren Sie den aktuellen Gaspreis und Nonce.

  2. Geben Sie die FROM-Adresse in das Feld ein. Bitte beachten Sie, dass dies die Adresse ist, von der Sie senden, nicht AN. Dies generiert den Nonce- und Gaspreis.

  3. Wechseln Sie zu Ihrem Offline-Computer. Geben Sie die AN-ADRESSE und den BETRAG ein, den Sie senden möchten.

  4. Geben Sie den GASPREIS so ein, wie er Ihnen in Schritt 1 auf Ihrem Online-Computer angezeigt wurde.

  5. Das GAS LIMIT hat einen Standardwert von 21000. Dies deckt eine Standardtransaktion ab. Wenn Sie an einen Vertrag senden oder zusätzliche Daten in Ihre Transaktion aufnehmen, müssen Sie das Gaslimit erhöhen. Überschüssiges Gas wird Ihnen zurückgegeben.

  6. Geben Sie die NONCE so ein, wie sie Ihnen in Schritt 1 auf Ihrem Online-Computer angezeigt wurde. Wenn Sie möchten, geben Sie einige Daten ein. Daten sind optional. Wenn Sie Daten eingeben, müssen Sie mehr als die Standardgasgrenze von 21000 angeben. Alle Daten sind im HEX-Format. Wählen Sie Ihre Brieftaschendatei aus oder geben Sie Ihren privaten Schlüssel ein und entsperren Sie Ihre Brieftasche.

  7. Drücken Sie die Schaltfläche "SIGNIERTE TRANSAKTION GENERIEREN".

  8. Das Feld unter dieser Schaltfläche wird mit Ihrer markierten Transaktion ausgefüllt. Kopieren Sie diese und verschieben Sie sie zurück auf Ihren Online-Computer, oder Sie können den bereitgestellten QR-Code verwenden.

  9. Fügen Sie auf Ihrem Online-Computer die unterzeichnete Transaktion in das Textfeld in Schritt 3 ein und klicken Sie auf „TRANSAKTION SENDEN“. Dadurch wird Ihre Transaktion übertragen.

Alternativ könnten Sie andere Dienste verwenden, um die signierte Transaktion zu übertragen. Etherscan hat ein Feld, das Sie zum Senden von Transaktionen verwenden können.

drcode auf reddit hat ein Tool entwickelt, um eine signierte Transaktion zu entschlüsseln, damit Sie überprüfen können, ob sie das tut, was sie sagt.


Zu Ihrer Information, alles auf MyEtherWallet ist fast zu 100 % offline. Das einzige, was Ihren Computer beim Senden verlässt, ist die signierte Transaktion , die von Ihrem Browser generiert wird. Wir erhalten auch den Nonce- und Gaspreis, weshalb Sie diese Informationen online generieren müssen.

Ich habe mir selbst so etwas zugelegt. Ich habe einen dummen einfachen Laptop gekauft, auf dem ein Knoten läuft, der aus offensichtlichen Gründen keine Verbindung zum Netzwerk herstellt und noch nie online war. Ich verwende dieses Gerät, um Transaktionen mit der inoffiziellen RPC-Methode zu signieren eth.signTransaction. Sie nehmen dann die Ausgabe dieser Methode und stecken sie auf einen USB-Stick, verschieben den Inhalt auf meinen anderen Computer und senden die Transaktion mit eth.sendRawTransaction.

Da der Offline-Computer die Nonce nicht bestimmen kann (er hat keinen Zustand und wird denken, dass die Nonce immer 0 ist), müssen Sie daher immer selbst die richtige Nonce angeben; Das ist nicht so schwer, Sie müssen nur eine eth.getTransactionCount(addr)auf dem Computer machen, der Zugriff auf das Internet hat.

Aufschlussreich, danke. Nennen Sie mich zwar paranoid, aber Ihr Computer ist immer noch anfällig für einen Virus, der über einen USB-Stick übertragen wird. Im Idealfall kann die Offline-Maschine Daten an die Online-Maschine senden, aber nicht umgekehrt.
Sie können das Hex überschreiben, wenn Sie möchten (wahrscheinlich nicht) oder ein anderes Tool verwenden, um diesen Prozess zu sichern.
@Jeffrey W.: +1, interessant ... Können Sie Ihre Antwort bearbeiten, um die Ankündigung in diesem Fall ein wenig zu erweitern? Wann geht es aufwärts? Wird es um 1 erhöht? Was ist die Rolle dieser Nonce usw. Ich frage das, weil ich ein früher Ethereum-Benutzer bin und keine Ahnung hatte, dass es hier eine Nonce gibt: also lese ich Ihre Antwort und höre plötzlich von dieser Nonce und habe wirklich keine Ahnung, was es ist handelt von.
Bitte stellen Sie eine neue Frage und ich beantworte sie gerne :-)
@CedricMartin Dies kann bei Nonce ethereum.stackexchange.com/q/1172/42 helfen

Wenn Sie Node.jsauf Ihrem Offline-Computer installieren und einige Javascript-Dateien kopieren können (mit Modulabhängigkeiten, die auf einem Online-Computer mit abgerufen wurden npm), kommen Ihnen zwei ähnliche Bibliotheken in den Sinn. Beide könnten zum Signieren einer Rohtransaktion verwendet werden.

Die resultierende Transaktion ist nur eine Hex-codierte Zeichenfolge, die vom Offline-Computer kopiert und dann von jedem Online-Computer an das Ethereum-Netzwerk gesendet werden kann. Entweder über einen lokalen Ethereum-Knoten oder an einen (oder mehrere) öffentliche Gateway-Server die Rohtransaktionen akzeptiert und weiterleitet.

Bibliotheken :

  • ethereumjs-tx
    • sehr beliebt und die zu verwendende De-facto-Standardbibliothek
  • ethereumjs-tx-zeichen
    • macht im Grunde das gleiche
    • Imho, ich denke, dass die API einfacher zu verwenden ist. Besonders für Dinge wie:
      • Signaturprüfung
      • Rohtransaktionen zurück in menschenlesbare Datenstrukturen decodieren
    • seine installierte Größe ist um Größenordnungen kleiner

öffentliche Ethereum-Gateways :

Ich benutze jetzt die folgende Methode. Auf einem Offline-Airgapped-Computer mit einer verifizierten heruntergeladenen Version von myetherwallet und einem privaten Schlüssel, der in Keepass gespeichert ist. Ich habe die öffentliche Absenderadresse auf meinem Smartphone verfügbar. Auf meinem Smartphone, auf der Offline-Seite von mew, gebe ich die Von-Adresse ein, um den Nonce & Gas-Preis abzurufen. Ich gebe diese Details manuell auf meinem Offline-Computer ein. Ich gebe die Zieladresse auf meinem Offline-Computer ein. (Sie können diese mit einer QR-Pistole scannen) Ich erstelle die Transaktion und unterschreibe sie. Ich kopiere den Code in QtQr, um einen QR-Code zu erstellen. (Aus irgendeinem Grund war der von mew erstellte QR-Code entweder zu klein) Ich scanne diesen Code mit meinem Smartphone und übertrage ihn auf etherscan oder myetherwallet.

Es ist keine große Funktion oder Errungenschaft, grundlegende Transaktionen mit einer esoterischen MyEtherWallet „Offline-GUI“ zu erstellen (die mit dem Internet verbunden sein muss und daher trotz des irreführenden Namens eine „Online-GUI“ ist). Etherscan hat diese Funktionalität schon lange vor MEW bereitgestellt.

Was beeindruckend wäre, wäre, eine intuitive/native GUI zum Senden, Austauschen und Interagieren mit dApp-Verträgen (vielleicht sogar über ihre Webportale) verwenden zu können, aber anstatt Ihr Geld zu gefährden, indem Sie Ihren privaten Schlüssel haben müssen ( alias Keystore) auf dem mit dem Internet verbundenen Computer (mit nur einem Webdialogfeld mit einer „OK“-Schaltfläche zwischen Ihren Geldern und dem Missbrauch durch einen böswilligen Gegner), die nur die öffentliche Adresse haben, die von MEW und/oder den dApps verwendet wird, und die Rohtransaktionen bereitstellen zum Kopieren/Herunterladen zum Offline-Signieren (wie auch immer, niemand kümmert sich um eine GUI im Backend) sowie eine Möglichkeit, die signierte Transaktion entweder zu übertragen oder zu überprüfen, ob/wann sie übertragen wurde.

Ich weiß nicht, warum das derzeit so unnötig schwierig ist. Warum lässt mich MEW nicht einfach meine öffentliche ETH-Adresse angeben, um die GUI auf meinem mit dem Internet verbundenen Computer zu verwenden?