In diesem Blocktrainer 1×1-Artikel erklären wir dir das “Problem der byzantinischen Generäle“. Dabei handelt es sich um ein hypothetisches Gedankenspiel, bei dem mehrere Generäle zur Zeit des byzantinischen Reichs eine gemeinsame Entscheidung treffen müssen.

Warum brauchen wir dieses Gedankenspiel?

Da die Blockchain von keiner zentralen Partei kontrolliert wird, muss die Mehrheit der Knoten zu einem Konsens gelangen. Sie entscheiden darüber, was auf der dezentralen Datenbank abgespeichert wird und was nicht.

Dazu müssen 2/3 oder mehr der Knoten zuverlässig und ehrlich handeln, um das vollständige Versagen des Netzwerkes zu vermeiden. Das hypothetische Gedankenspiel vergleicht die Netzwerkknoten in einer Metapher mit byzantinischen Generälen, die sich ähnlich zu den Knoten auf einer Blockchain verhalten.

Abbildung 1: Quelle: https://www.bitpanda.com/academy/de/lektionen/was-ist-double-spending-und-warum-ist-es-ein-problem/

Wie funktioniert dieses Gedankenspiel?

Das Gedankenspiel der byzantinischen Generäle beschreibt ein Kriegsszenario, bei dem eine Stadt erobert werden soll. In diesem leiten mehrere Generäle die byzantinische Armee. Jeder General für sich delegiert einen Teil dieser Armee. Zwischen den Generälen herrscht ein Kommunikationsproblem, da sich jeder General an einem anderen Standort aufhält und es natürlich damals noch keine Mobiltelefone oder andere Wege der zeitgleichen Kommunikation gab (siehe Abbildung 1).

Ziel dieser Überlegung ist, dass die Generäle die Stadt angreifen oder ihre Kameraden verraten und flüchten können. Dabei ist es nicht wichtig, welche Entscheidung sie treffen. Es muss nur Einigkeit über den letztlichen Beschluss herrschen.

Bei der Entscheidungsfindung gibt es gewisse Regeln, die beachtet werden müssen:

  1. Es gibt zwei Optionen, zwischen denen sich jeder General entscheiden muss: Angriff oder Rückzug (Ja oder Nein).
  2. Einmal getroffene Entscheidungen können nicht widerrufen werden.
  3. Es muss ein globaler Konsens über die Entscheidung getroffen werden (Ein gemeinsamer Beschluss muss vorliegen).

Wie bereits gesagt, gab es zu den Zeiten des byzantinischen Reiches keine Telefone. Stattdessen kommunizierten die Generäle untereinander mit einem Kurier. Dadurch entstehen Angriffspunkte, um die Nachricht zu verfälschen, indem die Botschaft zerstört wird, verzögert ankommt oder auf andere Weise verloren geht.

Eine zweite Gefahr geht von den Generälen selbst aus. Diese könnten Verräter sein und falsche Nachrichten verschicken oder böswillig handeln, um die anderen Generäle zu verwirren.

Zu welchen Gefahren führt das “Problem der byzantinischen Generäle” bei der Blockchain?

Eine Blockchain kann beispielsweise durch eine sogenannte 51%-Attacke angegriffen werden.

Bei einem 51 % Angriff handelt wissentlich die Mehrheit des Netzwerkes böswillig, um das System zu stören z.B. durch das doppelte Ausgeben von Coins, das durch eine 51%-Mehrheit der Rechenpower möglich würde. Damit solche “doppleten Ausgaben” nicht passieren, existiert bei Bitcoin ein Sicherheitsfeature, das als Proof-of-Work (Kurz PoW) bezeichnet wird. Diese Implementierung gibt dem Netzwerk vor “Wie die Regeln befolgt werden müssen um zu einem Konsens zu gelangen”. Satoshi selbst erklärte bereits 2008 in einem Forumsbeitrag anhand moderner byzantinischer Generäle, wie er dieses Problem lösen kann:

Die „Proof-of-Work-Chain“ ist die Lösung für das Problem der byzantinischen Generäle. Ich versuche, es für diesen Kontext etwas umzuformulieren.

Eine bestimmte Anzahl an byzantinischen Generälen hat pro Person einen Computer und will das Wi-Fi des Königs angreifen, indem es sein Passwort, von dem sie wissen, dass es eine bestimmte Anzahl an Zeichen lang ist, bruteforced [= durch vielfaches Ausprobieren zu erraten].
Wenn sie einmal ihr Netzwerk dazu bringen, ein Paket mit Passwörtern zu produzieren, haben sie nur eine begrenzte Zeit, um das Passwort zu knacken und alle Logfiles zu löschen, da sie andernfalls entdeckt werden und Ärger bekommen würden. Sie haben nur genügend CPU-Power, um das Passwort schnell genug zu knacken, wenn eine Mehrheit von ihnen zur selben Zeit angreift.

Sie interessieren sich nicht besonders dafür, wann der Angriff stattfindet, sondern nur dafür, dass sie alle übereinstimmen. Es wurde entschieden, dass jeder, der will, eine Zeit ankündigen kann und die Zeit, die zuerst gehört wurde, wird zur offiziellen Angriffszeit. Das Problem ist nun, dass das Netzwerk Informationen nicht sofort übermittelt, und wenn zwei Generäle verschiedene Zeitpunkte zu fast der selben Zeit ankündigen, die einen diese und die anderen jene zuerst hören werden. Um dieses Problem zu lösen benutzen sie eine Proof-of-Work-Chain.
Sobald jeder General die Angriffszeit erhält, die er zuerst gehört hat, lässt er seinen Computer ein extrem schweres Proof-of-Work Problem lösen, das den Angriffszeitpunkt in einem Hash beinhaltet.
Das Proof-of-Work ist so schwierig, dass es voraussichtlich 10 Minuten dauert, es zu lösen, wenn alle gemeinsam daran arbeiten. Sobald einer der Generäle eine Lösung findet, strahlt er sie im Netzwerk aus, und jeder ändert das Proof-of-Work, so dass es den Hash des gelösten Proof-of-Work enthält. Wenn jemand zuvor mit einem anderen Angriffszeitpunkt gearbeitet hat, ändert er diesen, da die Proof-of-Work-Kette nun länger ist.

Nach zwei Stunden sollte eine Angriffszeit durch eine Kette von 12 Proof-of-Works gehasht sein. Indem er die Schwierigkeit der Proof-of-Work-Chain verifiziert, kann jeder General sehen, wie viel parallele CPU-Power je Stunde für sie verwendet wurde und ob dafür die Mehrheit der Computer verwendet wurde. Sie müssen es alle gesehen haben, da der Proof-of-Work der Beweis ist, dass sie daran gearbeitet haben. Wenn die CPU-Power, die für die Proof-of-Work-Kette verwendet wurde, ausreichend ist, um das Passwort zu knacken, können sie zur vereinbarten Zeit sicher angreifen.

Die Proof-of-Work-Kette ist der Weg, wie all die Probleme mit der Synchronisierung von distributiven Datenbanken und globalen Sichtproblemen, über die du gesprochen hast, gelöst werden.

Satoshi Nakamoto

_______________________________________________________________________

Autor