Was ist eine Byzantine Fault Tolerance (BFT) ? – Blockchain Algorithmus

Byzantinische Fehlertoleranz (Byzantine Fault Tolerance, BFT) meint die Zuverlässigkeit eines fehlertoleranten Computersystems, insbesondere verteilter Systeme, bei denen Komponenten ausfallen können und unvollständige Informationen darüber vorliegen, ob ein solcher Ausfall passiert. Hypothetisch gesehen können Nachrichten in einem solchen System Verlust, Beschädigung, hohe Latenz und Wiederholung unterliegen.

Byzantine Fault Tolerance, BFT
Byzantine Fault Tolerance, BFT @lisk.io

Grundlagen des Byzantine Fault Tolerance

Ein Blockchainsystem ist im Vergleich zu einem traditionellen zentralisierten Buchhaltungssystem vorteilhaft, da es offen, unveränderlich und mit einem Mechanismus zur Vermeidung mehrerer Probleme ausgestattet ist. Wie bei allen dezentralen Systemen sind Blockchain-Systeme jedoch mit hohen Netzwerklatenzen, Übertragungsfehlern, Softwarefehlern, Sicherheitsverletzungen und Hackerangriffen konfrontiert. Darüber hinaus deutet der dezentrale Charakter darauf hin, dass niemandem im System vertraut werden kann.

Dafür benötigt ein Blockchainsystem einen Konsensmechanismus, um sicherzustellen, dass jeder Knoten eine Kopie einer anerkannten Version der Blockchain hat. Traditionelle Fehlertoleranzmechanismen, die spezifische Probleme betreffen, sind möglicherweise nicht in vollem Umfang in der Lage, die Probleme dezentraler Blockiersysteme zu lösen. Eine universelle Lösung für die Fehlertoleranz ist erforderlich. Der Bitcoin Proof of Work Mechanismus löst dieses Problem hervorragend und der byzantinische Fehlertoleranzmechanismus ist eine universelle Lösung für dezentrale Systeme. Aber der Mechanismus hat einen klaren Preis, d.h. erhebliche Strom- und Materialkosten.

Blockchain: Proof-of-Stake und Proof-of-Work
Blockchain: Proof-of-Stake und Proof-of-Work

Byzantine Fault und das Problem der Generäle

Um das interaktive Problem der Konsistenz verständlicher zu machen, hilft folgene Allegorie: eine Gruppe von Armeegenerälen formuliert einen Plan zum Angriff auf eine Stadt. In der einfachsten Form müssen die Generäle nur entscheiden, ob sie angreifen oder sich zurückziehen. Einige Generäle ziehen es vor, anzugreifen, während andere es vorziehen, sich zurückzuziehen. Das Wichtigste ist, dass sich alle Generäle auf eine gemeinsame Entscheidung einigen, denn ein halbherziger Angriff einiger weniger Generäle wäre kaum erfolgreich.

Das Problem wird durch die Anwesenheit heimtückischer Generäle erschwert, die nicht nur für eine suboptimale Strategie, sondern auch selektiv stimmen. Wenn beispielsweise neun Generäle abstimmen, von denen vier für einen Angriff und vier andere für einen Rückzug sind, kann der neunte eine Rückzugsabstimmung an diese Generäle senden, um einen Rückzug zu befürworten, und der Rest eine Angriffsstimme. Diejenigen, die eine Rückzugsabstimmung vom neunten General erhalten haben, werden sich zurückziehen, während der Rest angreift.

Durch die Byzantinische Fehlertoleranz kann erreicht werden, dass die loyalen (Nicht-Fehler-) Generäle eine Mehrheit für ihre Strategie haben. Für fehlende Nachrichten kann ein voreingestellter Wert angegeben werden. Die typische Abbildung dieser Geschichte auf Computersysteme ist, dass die Computer die Generäle sind und ihre Verbindungen zum digitalen Kommunikationssystem die Boten. Obwohl das Problem in der Analogie als Entscheidungs- und Sicherheitsproblem formuliert ist, kann es in der Elektronik nicht einfach durch kryptographische digitale Signaturen gelöst werden, da sich Fehler wie z.B. falsche Spannungen durch den Verschlüsselungsprozess ausbreiten können.

Byzantine Fault und wie hängt das alles mit Blockketten zusammen?

Die Byzantinische Fehlertoleranz ist das Merkmal, das die Klasse der Fehler toleriert, die zum Problem der byzantinischen Generäle gehören. Byzantinisches Versagen ist die schwierigste Klasse von Versagensarten. Es impliziert keine Einschränkungen und macht keine Annahmen über die Art des Verhaltens, das ein Knoten haben kann (z.B. kann ein Knoten jede Art von Zufallsdaten erzeugen, während er vorgibt, ein ehrlicher Akteur zu sein). Die byzantinische Fehlertoleranz wurde in Flugzeugtriebwerken, Kernkraftwerken und praktisch jedem System gefordert, dessen Aktionen von den Ergebnissen einer großen Anzahl von Sensoren abhängen.

In Abwesenheit von BFT ist ein Peer in der Lage, falsche Transaktionen zu senden und zu buchen, was die Zuverlässigkeit der Blockchain effektiv zerstört. Hinzu kommt, dass es keine zentrale Behörde gibt, die den Schaden übernimmt und behebt. Der große Durchbruch in Bitcoins Erfindung war die Verwendung von Proof-of-Work als probabilistische Lösung für das byzantinische allgemeine Problem.

Der Algorithmus

Die Integrität und Authentizität der Informationsübertragung wird durch Kryptographie gewährleistet:

  • Absender müssen dem Hash-Wert der gesendeten Nachricht Signaturen hinzufügen
  • Der Algorithmus gewährleistet Sicherheit und Benutzerfreundlichkeit
  • Bei defekten Knoten im Konsens sind die Funktionalität und Stabilität des Systems gewährleistet

Alle Konsensusknoten müssen eine Protokolldatei führen, um den aktuellen Status des Konsenses aufzuzeichnen. Die Aufzeichnung, die für einen End-to-End-Konsens verwendet wird, wird als Sichtweise bezeichnet. Wenn es nicht möglich ist, in der aktuellen Ansicht einen Konsens zu erzielen, muss diese Ansicht geändert werden.