Wie verhindert man einen Replay-Angriff zwischen zwei konkurrierenden Ketten?

Nach der jüngsten Hardfork haben wir eine Gewinnkette und eine viel kürzere Verlustkette übrig. Wenn Sie jedoch für oder gegen die Gabel sind, können Sie immer noch die eine oder andere Kette abbauen und verwenden.

Jetzt gibt es ein Problem. Nehmen wir an, ich bin in der Non-Fork-Kette und erstelle eine Transaktion, signiere sie und sende sie an das Non-Fork-Netzwerk. Vitalik warnte Benutzer vor Replay-Angriffen:

Wenn Benutzer weiterhin daran interessiert sind, der Non-Fork-Kette zu folgen, sollten sie trotzdem aktualisieren, aber mit --oppose-dao-forkaktiviertem Flag ausführen, obwohl sie sich vor Transaktionswiederholungsangriffen hüten und geeignete Maßnahmen ergreifen sollten, um sich davor zu schützen; Benutzer, die kein Interesse an der Non-Fork-Kette haben, müssen sich keine Gedanken über Transaktionswiederholungsangriffe machen.

Jetzt verstehe ich, dass die Transaktion für beide Ketten gültig wäre. Wie verhindere ich, dass die Transaktion im Pro-Fork-Netzwerk übertragen wird? Und wie verhindere ich, dass die Transaktion in der Pro-Fork-Kette gültig ist?

Antworten (3)

Eine Anleitung speziell zum Schutz vor Replay-Angriffen von der TheDAO-Hardfork , von https://blog.ethereum.org/2016/07/26/onward_from_the_hard_fork

Benutzern, die daran interessiert sind, Aktionen mit ihrem ETC durchzuführen, einschließlich der Erstellung und Teilnahme an Anwendungen, der Umwandlung in ein anderes Asset usw., wird empfohlen, den Splittervertrag unter Adresse 0xaa1a6e3e6ef20068f7f8d8c835d2d22fd5116444zu verwenden, um ihr ETC auf ein separates, neu erstelltes Konto zu verschieben, um Replay-Angriffe zu vermeiden ; Wir ermutigen die ETC-Community auch, die Einführung einer sekundären Hard Fork in Betracht zu ziehen, um Transaktionsformate zu ändern und weitere Replay-Angriffe unmöglich zu machen. Bis und sofern dies nicht geschieht, sollten ETH und ETC, sobald sie „geteilt“ sind, über separate Wallets verwaltet werden.

Um den Splitter-Vertrag innerhalb der Ethereum-Wallet zu verwenden, klicken Sie auf Contracts -> Watch Contract, kopieren Sie die Adresse und ABI von der oben verlinkten Etherscan-Seite und klicken Sie auf „OK“; Klicken Sie dann auf den Vertrag auf der Registerkarte Verträge, wählen Sie „In Vertrag schreiben“ und wählen Sie die Funktion „Teilen“. Es wird nach zwei Adressen gefragt; Geben Sie für die erste die Adresse an, an die Ihr ETH gehen soll (Sie können die gleiche Adresse angeben, von der Sie senden), für die zweite geben Sie die Adresse an, an die das ETC gehen soll. Stellen Sie sicher, dass Sie dies zuerst mit einer sehr kleinen Menge Ether versuchen, um sicherzustellen, dass es funktioniert, bevor Sie die Menge erhöhen. Sie können den Ethereum Classic Explorer hier verwenden , um zu überprüfen, ob ETC-Guthaben übertragen wurden. Eine ausführlichere, von der Community bereitgestellte Anleitung finden Sie hier.

Eine allgemeine Lösung ist EIP 155 Simple Replay Attack Protection .

Beginnend mit Geth 1.5.3 und Parity 1.4.4 implementieren sie EIP 155, sodass Ihre ETH-Transaktionen vor einem Replay-Angriff auf ETC sicher sein sollten. Erstellen Sie ein weiteres Konto und verschieben Sie alle Ihre ETH an die neue Adresse. Vergessen Sie nicht, dieses neue Konto zu sichern (und löschen Sie nicht das alte Konto, da es Ihren ETC enthält).

Wenn Sie ein anderes Wallet verwenden, sollten Sie überprüfen, ob dieses EIP 155 implementiert hat.

Der einfache Low-Tech-Weg, dies für ETH zu tun, die in einem regulären Konto in externem Besitz gehalten werden, besteht darin, zwei neue Adressen zu erstellen, eine für jede Kette, und eine Transaktion an jeder Kette zu senden, die Ihren Ether an eine andere Adresse verschiebt. Sobald dies erledigt ist, kommt jede nachfolgende wiedergegebene Transaktion von einer Adresse ohne ETH darin und ist daher ungültig.

Es ist theoretisch möglich, dass Sie Opfer eines Replay-Angriffs werden, während Sie dies versuchen, und am Ende wird die ETH in beiden Ketten an dieselbe Adresse verschoben. Aber da Sie diese Adresse kontrollieren, können Sie es einfach erneut versuchen, bis es funktioniert.

Stalker wiederholen. Dies könnte im Prinzip so lange dauern, bis Sie alle Ihre Gebührenmittel aufgebraucht haben.
Theoretisch könnte es. Aber man muss nur einmal Glück haben, während der Stalker jedes Mal Glück haben müsste.
Nicht nur theoretisch: So ziemlich jede Transaktion wird über beide Ketten hinweg wiederholt. Ich vermute, dass dies an einigen Clients liegt, die sich mit Peers in beiden Ketten verbinden und Transaktionen weiterleiten. Sie sind nicht bösartig, aber die Wirkung ist die gleiche.
@Nick, ist die Logik hier (und die mit den verschiedenen Split-Kontrakten verbunden), dass es keine Rolle spielt, wenn ich in einen Zustand gelangen kann, in dem eine Kette Ether auf einem bestimmten Konto hat, während die andere Kette dies nicht tut, während Transaktionen wiedergegeben werden können ? - In der Kette, in der das Konto kein Guthaben hat, schlagen die wiederholten Transaktionen fehl. Wenn ja ... Gibt es zu diesem Zeitpunkt noch andere Risiken oder in der Zukunft, oder ist es 100% sicher, an jeder Kette unabhängig zu handeln?
@ThomasClowes Mehr oder weniger. Eine Transaktion, die versucht, mehr Guthaben zu verwenden, als verfügbar ist, wird überhaupt nicht ausgeführt.