Verständnisproblem zum 51% Angriffsrisiko

Ich beschäftige mich jetzt schon eine ganze Weile mit BTC, an einer Stelle komme ich aber gedanklich nicht weiter. Ich weiß, dass für BTC zwei verschiedene Rechner zum Einsatz kommen:
1.) Nodes. Das sind Rechner mit der Bitcoin-Software. Sie sind untereinander vernetzt, alle speichern die Blockchain und achten auf die Einhaltung der Gültigkeitsregeln. Sie halten die anstehenden Transaktionen in einer Warteschleife (Mempool) für die Miner. Dazu wird nur relativ geringe Rechenleistung benötigt, viele Nodes sind beispielsweise Raspberry Pi Minirechner. Angenommen, es gäbe 100.000 Nodes, dann müsste ich für einen 51% Angriff also 51.000 Nodes unter Kontrolle bekommen. Reine Stückzahl also, Rechenleistung wenig relevant. Das verstehe ich.

2.) Miningrechner. Hohe Rechenleistung. Arbeiten hochspezialisiert an der Erzeugung von Zufallszahlen, um einen Block zu finden und wenn das gelungen ist, die Transaktionen vom Mempool in den Block zu schreiben. Diese Miningrechner bündeln oft ihre Rechenleistung in Pools. Soweit alles klar. Unklar ist mir, wie Miningrechner die Kontrolle über die Blockchain im Falle einer Pool-Leistung über 51% bekommen könnten! Die müssen doch die Regeln auf den Nodes beachten und jede Manipulation würde von den Nodes als ungültig abgewiesen, oder? Wo ist mein Denkfehler? Ein hochspezialisierter Miningrechner kann doch keinen Code manipulieren? Und ein Pool doch erst recht nicht, weil der nur die Hashes bündelt?

1 „Gefällt mir“

Nur kurz - weil du wie wir alle in dieses Rabbit Hole gefallen bist. :face_holding_back_tears:

Eine 51% Attacke wäre Theoretisch denkbar, aber praktisch unmöglich. Die Nodes musst du dir als das dezentrale Kassabuch vorstellen, welche die Blockchain gleichzeitig herunterladen und damit werden letztlich die gesamten Bitcoinbestände verwaltet. Alle haben weltweit gesehen den gleichen Bitcoin Konto Stand. Die Attacke zielt nicht auf die Nodes, sondern auf das Mining. Eine Node kannst du auch betreiben. Sozusagen Freiwilligenarbeit für Bitcoin.

Was das Mining betrifft so musst du dir eine verrücktes stromintensives Rennen vorstellen, das alle Miner gleichzeitig antreten um die Rewards in Form von Bitcoin sich erhoffen. Das mathematische Rätsel das vom ersten gefunden wird, wird belohnt und darf den nächsten Block mit sämtlichen Bitcoin Angaben darin der Blockchain anfügen. Das Spiel wiederholt sich immerzu seit Sathoshi damals das Projekt gestartet hatte.

Schau mal hier rein. Fand ich gut erklärt für Einsteiger:

und wenn du Englisch kannst, ist das hier auch ehr gut:

1 „Gefällt mir“

Zu erstens: die Nodes sind absolut nicht relevant für eine 51% Attacke.

Nodes speichern lediglich die Blockchain. Das ist also einfach nur eine (unveränderliche) Datenbank.

Unveränderlich ist hier in klammern geschrieben, weil sie durch eine 51% Attacke zwar theoretisch verändert werden, die Chance dafür aber astronomisch klein ist.

Um das zu verstehen musst du dir anschauen, warum die Datenbank unveränderlich wird. Das liegt daran, dass die Blöcke immer kryptografisch aufeinander aufbauen. Wenn du einen Block verändern willst, dann veränderst du den Fingerabdruck des Blockes. Alle Blöcke, die aber auf den alten Block aufbauen sind dann auf einmal ungültig. So entsteht erst die Kette an Blöcken und dieses Prinzip sorgt für die Unveränderlichkeit der Daten.

Also klar kannst du die Daten beliebig abändern, aber das fällt sofort auf weil alle Nachfolgenden Blöcke damit unbrauchbar gemacht werden.

Dieses Prinzip der Blockkette macht die Daten eben unveränderbar. Aber eine Kette hat immer zwei lose Enden: Den ersten Block und den letzten Block.

Der Erste Block ist kein Problem, der ist per Quellcode festgelegt und somit unveränderbar. Aber die Kette soll ja wachsen. Es sollen ja immer weitere Daten in die Datenbank geschrieben werden können. Der Letzte Block ist also immer lose und damit anfällig für Änderungen. Er ist solange anfällig, bis eine gewisse Anzahl an Blöcken daran angehangen wurden. Umso mehr Blöcke an einem Block angehangen werden, desto sicherer wird der Block vor Manipulationen. Und genau diese Manipulation ist ein 51% Angriff.

Bei Bitcoin zählt ein Block, der 6 weitere Blöcke vor sich hat, als nahezu 100% sicher, also eine durchschnittliche Wartedauer von einer Stunde. Vor dieser Stunde kann es passieren, dass die Blöcke, obwohl sie gültig waren, wieder verworfen werden, weil es einen Chiansplit gegeben hat.

Das kannst du dir so vorstellen, dass an jedem Block nicht nur ein weiterer Block angehangen werden kann, sondern mehrere. Wie soll die Blockchain jetzt entscheiden, welche dieser Ketten die „richtige“ ist? Das macht die Blockchian daran fest, indem sie die Kette bevorzugt, die die meisten Blöcke (besser gesagt die meiste Schwierigkeit oder Energie) hinter sich vereint. Wenn es einen Chainsplit gibt (und das passiert dauernd bei Bitcoin), dann müssen sich die Miner entshceiden, an welcher Kette sie weiterarbeiten, also welche sie weiter verlängern wollen. Setzen sie auf die „falsche“ Kette, dann bekommen sie keinen Gewinn ausgeschüttet, weil die falsche Kette von der Mehrheit verworfen wird.

Genau hier kommt die 51% Attacke ins spiel. Wenn ein Angreifer die Mehrheit über die Miner haben kann, dann kann dieser Angreifer eben beliebig bestimmen, welche kette die längere wird, auch im Nachhinein.

Praktisch ist das aber unmöglich, weil nichteinmal die USA so viel Energie in diese Berechnungen legen könnte, die der rest der Welt dagegen aufbringt. Das sichert eben dieses lose Ende der Kette ab.

1 „Gefällt mir“

Ich verstehe deine Frage und eine lange Zeit hatte ich diese auch. Ich versuche es dir zu erklären:

Die Gefahr bei einer Entität, welche über 51% der Rechenleistung verfügt, liegt nicht darin, dass dieser das Protokoll ändern könnte, das kann er nämlich nicht, sondern darin, dass er mit seinen 51% der gesamten Rechenleistung schneller Blöcke bauen kann, als der Rest der Miner. Ein praktisches Beispiel.

Martin mit 51% der Rechenleistung kauft bei Sabrina eine große Menge Gold ein. Er bezahlt in Bitcoin und schickt diese an Sabrina. Sabrina schaut in die Blockchain und sieht, dass die Zahlung eingehend ist. Die Zahlung wird in Block 100A aufgenommen und sie wartet bis die Zahlung 6 Blöcke zurückliegt. Wenn Block 106 entstanden ist und in die Blockchain geschrieben wurde, übergibt sie Martin das Gold. Währenddessen, arbeitet Martin an Block 100B. In diesem Block sendet er nicht Sabrina die Bitcoin, sondern sich selbst. Der Clue ist jetzt, dass Martin mit 51% der Rechenleistung, die längere Kette, die inzwischen bei Block 106 ist, einholen kann. Er arbeitet also weiter und sobald seine Kette länger ist als die ehrliche Kette, veröffentlicht er seine. Die Nodes übernehmen Martins Kette und schreiben ihre Blockchain um, da das Protokoll besagt, dass immer die längste Kette die Gültige ist.

Diese neue Kette kommt Martin zugunsten, da laut dieser Martin keine Zahlung an Sabrina getätigt hat.

EDIT: während ich meine Antwort geschrieben habe, wurde die Frage schon 3 mal beantwortet. :sweat_smile:

2 „Gefällt mir“

"Das kannst du dir so vorstellen, dass an jedem Block nicht nur ein weiterer Block angehangen werden kann, sondern mehrere. Wie soll die Blockchain jetzt entscheiden, welche dieser Ketten die „richtige“ ist? Das macht die Blockchian daran fest, indem sie die Kette bevorzugt, die die meisten Blöcke (besser gesagt die meiste Schwierigkeit oder Energie) hinter sich vereint. Wenn es einen Chainsplit gibt (und das passiert dauernd bei Bitcoin), dann müssen sich die Miner entshceiden, an welcher Kette sie weiterarbeiten, also welche sie weiter verlängern wollen. Setzen sie auf die „falsche“ Kette, dann bekommen sie keinen Gewinn ausgeschüttet, weil die falsche Kette von der Mehrheit verworfen wird.

Genau hier kommt die 51% Attacke ins spiel. Wenn ein Angreifer die Mehrheit über die Miner haben kann, dann kann dieser Angreifer eben beliebig bestimmen, welche kette die längere wird, auch im Nachhinein."

Vielen Dank, DAS war genau die Antwort auf meine Frage. Jetzt ist der AHA-Effekt da!

2 „Gefällt mir“

Du musst dir vor Augen halten, das du für so eine Attacke mehr Rechenleistung bräuchtest als aktuell vorhanden und diese Attacke über eine lange Zeitraum aufrecht erhalten müsstest.

Das ist nahezu ausgeschlossen.

Wenn du die gesamte blockchain zurückrechnen willst, müsstest du alle jemals dafür aufgebrachte Energie und noch mehr dafür haben.