Kann ich als Entwickler einen 51%-Angriff erkennen?

Ich bin ein Entwickler, der eine Anwendung erstellt, die Zahlungen in Kryptowährungen akzeptiert.

Ist es möglich, im Falle eines 51%-Angriffs ein Skript zu erstellen, das dies erkennt, sodass wir Auszahlungen automatisch aussetzen können?

Antworten (1)

Generell nein, erst wenn es zu spät ist.

Ein typischer 51%-Angriff würde wie folgt aussehen:

  1. Der Angreifer beginnt privat mit dem Mining seiner eigenen Kette, die bei Block N von der Hauptkette abweicht.

  2. Der Angreifer zahlt Münzen in Ihr Unternehmen ein und sendet sie von Adresse A. Rufen Sie diese Transaktion X auf.

  3. Der Angreifer fügt in seine eigene Kette eine Transaktion X' ein, die mit X in Konflikt steht; typischerweise sendet X' die Coins von Adresse A an eine andere Adresse, die dem Angreifer gehört.

  4. Der Angreifer wartet auf mehrere Bestätigungen der Transaktion X in den Blöcken N+1, ..., N+6 (ersetzen Sie 6 durch beliebig viele Bestätigungen, die Ihr Unternehmen wünscht) der Hauptkette.

  5. Sobald genügend Bestätigungen vorliegen, um Sie zufriedenzustellen, liefern Sie Waren oder Dienstleistungen an den Angreifer.

  6. Der Angreifer gibt seine eigene Kette frei, die jetzt Blöcke bis zu, sagen wir, N+50 hat. Da diese Kette länger ist, wird sie vom Netzwerk akzeptiert. Diese Kette enthält nicht die Transaktion X, sondern X', sodass Sie nicht die Münzen haben, von denen Sie dachten, dass Sie sie hätten.

Beachten Sie, dass bis zu Schritt 6 alles im Netzwerk völlig normal aussieht; nur der Angreifer weiß, was los ist.

Würde nach Schritt 6 jeder die IP-Adresse des Angreifers kennen?
@AlexMillar Ja, es sei denn, er hat ein VPN verwendet.
@NickODell: Ich glaube nicht, dass es jeder wissen würde, mit oder ohne VPN. Der Angreifer wird seine Adresse (oder die seines VPN oder Tor-Ausgangsknotens) allen anderen Knoten offenlegen, an die er seine Kette sendet, aber er könnte plausibel behaupten, dass er sie von jemand anderem erhalten hat und sie nur weitergeleitet hat. Ebenso kann ein unschuldiger Knoten, der die Blöcke weiterleitet, nicht unbedingt beweisen, dass er nicht der Angreifer ist, der diese Blöcke generiert hat.