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.
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.
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.
Sehr unregelmäßig