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-fork
aktiviertem 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?
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
0xaa1a6e3e6ef20068f7f8d8c835d2d22fd5116444
zu 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.
Ethan
Edmund Edgar
Nick Johnson
Thomas Cloes
Nick Johnson