Was ist ein Block-Withholding-Angriff?

Wie kann ein Block-Withholding-Angriff durchgeführt werden, was wäre sein Zweck und für wen ist er eine Gefahr?

Bearbeiten: Als ich dies gepostet habe, habe ich darüber nachgedacht, einen Block zurückzuhalten, den Sie in einem Pool abgebaut haben. Das Zurückhalten von Blöcken kann jedoch die Grundlage für viele verschiedene Angriffe bilden. Ich denke, dies ist als allgemeine Frage immer noch nützlich. Es ist ein zentrales Konzept in der Bitcoin-Sicherheit.

Antworten (2)

Es gibt zwei Arten von Block-Withholding-Angriffen. Einer, der als Finney-Angriff bekannt ist, zielt auf finanziellen Gewinn ab, wenn eine doppelte Ausgabe auftritt. Die zweite besteht darin, einem Poolbetreiber finanziellen Schaden zuzufügen. Ein Miner, der einen Block löst, kann einen gültigen Hash zurückhalten, nachdem er einen gefunden hat. Die Kosten für den Bergmann sind trivial (weil er den Anteil nicht erhält), aber die Kosten für den Pool sind hoch, da der Pool die Chance verliert, die 50 BTC-Blockprämiensubvention zu verdienen.

Sofern es sich bei dem Pool nicht um PPS handelt, sind die Kosten für den Angreifer nicht trivial, da er einer der Teilnehmer ist, die einen Teil der Blockbelohnung erhalten würden. Außerdem gibt es einen gewinnorientierten Block-Withholding-Angriff auf Mining-Pools, Lügen auf der Lauer.
Wenn Sie diesen Angriff durchführen, warum sollten Sie überhaupt das Hashing durchführen, um damit zu beginnen? Können Sie dem Pool nicht einfach sagen, dass Sie arbeiten, und hoffen, dass Ihnen der richtige Wert zugewiesen wird?
Denken Sie daran, als 50 BTC die Belohnung waren ... DAYUMMM

Die einfachste Form davon heißt Finney-Angriff, benannt nach Hal Finney, der ihn zuerst beschrieb . Der Angriff ist eine Variante eines Double-Spend-Angriffs, bei dem Transaktionen ohne Bestätigung akzeptiert werden.

Ein Angreifer würde einen gültigen Block generieren, ihn aber nicht senden und dann Transaktion A als Zahlung für eine Ware oder Dienstleistung senden. Ein Händler sieht Transaktion A ohne Widerspruch und akzeptiert die 0-Bestätigungstransaktion. Unmittelbar danach sendet der Angreifer den generierten Block mit Transaktion B, die mit Transaktion A in Konflikt gerät, das Bitcoin-Netzwerk akzeptiert seinen Block und macht Transaktion A ungültig.

Der Angriff ist ziemlich kostspielig, da zwischen der Generierung des Blocks durch den Angreifer und dem Abschluss von Transaktion A eine Zeitlücke besteht, in der jemand anderes im Netzwerk einen gültigen Block generieren und ihn senden könnte, wodurch der vom Angreifer generierte gültige Block ungültig wird. Daher ist es nur sinnvoll, wenn der Händler das Produkt online verkauft und es sofort freigeben könnte, z. B. ein Schlüssel für ein Softwareprodukt.

Eine allgemeine Form dieses Angriffs wurde von Satoshi Nakamoto: White Paper, Abschnitt 11 beschrieben . Theoretisch könnte ein Angreifer eine beliebige Anzahl von Blöcken vorgenerieren, z. B. wenn ein Händler 1 Bestätigung benötigt, bevor er ein Produkt freigibt, würde ein Angreifer 2 Blöcke vor dem Netzwerk vorgenerieren und erst dann Transaktion A senden, um die Ausgaben zu verdoppeln. Aber mit jedem Block steigen die Kosten exponentiell, und die Praxis, 6 Bestätigungen zu akzeptieren, bevor der Kauf freigegeben wird, macht diesen Angriff nur möglich, wenn der Angreifer fast 50 % der Netzwerk-Hash-Rate oder mehr hat.

„Wer hat es zuerst beschrieben“… Und worum geht es in Abschnitt 11 des Whitepapers?
@Stéphane Gimenez, Whitepaper beschrieb die allgemeine Form dieses Angriffs, und Hal Finney beschrieb den speziellen Fall für 0-Bestätigungstransaktionen, aber ich sollte wahrscheinlich den Link zum Whitepaper hinzufügen