Stefan Tilkov innoQ

„Für öffentliche Blockchains gilt: Trotz der sehr bitteren Pille des Energieverbrauchs ist Proof-of-Work zum aktuellen Zeitpunkt die einzige ausgereifte, erprobte und im Echtbetrieb gehärtete Variante.“

Die Hypeenergie beim Thema Blockchain ist gewaltig. Es ist auf jeden Fall zu empfehlen, sich vor dem Einsatz dieses Technologieansatzes sehr genau zu überlegen, ob man eine Lösung auf der Suche nach einem Problem vor sich hat oder andersherum. Dabei können eine Reihe von Kriterien helfen, zu beurteilen, ob ein Distributed Ledger für einen vorliegenden Anwendungsfall tatsächlich angemessen ist. Eines der wichtigsten dieser Kriterien ist der Aspekt der Verteilung auf eine Vielzahl (oder zumindest eine Zahl > 1) von Rechnern (Knoten) und die Notwendigkeit, dass diese Knoten sich auf eine einzige konsistente Wahrheit einigen.

Dieses Problem ist nicht neu. Ein einziges Bit, das an mehr als einer Stelle gespeichert wird, kann bereits gewaltige Kopfschmerzen verursachen, wenn man sich sicher sein will, dass alle Beteiligten sich zu jedem Zeitpunkt darüber einig sind, ob es aktuell den Wert 1 oder 0 hat. Für eine redundante Speicherung von Daten gibt es eine Vielzahl von Gründen wie z. B. Ausfallsicherheit, Performanceoptimierung oder Offlineszenarien. Daher haben sich in der Informatik sowohl die Forschungsbereiche „verteilte Systeme“ als auch „Datenbanken“ schon seit vielen Jahrzehnten mit der Thematik auseinandergesetzt und Lösungsverfahren etabliert.

Klassische Konsensverfahren

Am bekanntesten sind wahrscheinlich Two-Phase-Commit, das von den relationalen Datenbanken mehr oder weniger gut unterstützt wird, und Paxos, das zu erklären der Eine oder Andere im Informatikstudium sicher als Aufgabe kennt. All diese Verfahren sorgen mit mehr oder weniger hoher Sicherheit dafür, dass sich die Beteiligten auf eine Wahrheit einigen. In den letzten Jahren haben vor allem NoSQL-Datenbanken am CP-Ende des CAP-Theorems und Werkzeuge zum Management verteilter Systeme das Thema Konsens wieder in das Bewusstsein von Architekten und Entwicklern gerückt. Dabei zeigen sich vor allem die Systeme als erfolgreich und zuverlässig, die eine gemeinsame Weltsicht auf Basis wohlverstandener Algorithmen wie Paxos mit seinen Varianten Raft (etcd) oder Zab (Zookeeper) herstellen.

Eine Blockchain bzw. ein Distributed Ledger ist jedoch mehr als eine Datenbank (bzw. sollte es sein, ansonsten sollten Sie sich fragen, ob Sie wirklich einen passenden Anwendungsfall haben). Der entscheidende Unterschied ist, dass man aus Sicht des Gesamtsystems den beteiligten Partnern – den Knoten oder Nodes – nicht vertrauen kann. Man muss davon ausgehen, dass jeder einzelne im Zweifelsfall das System so zu manipulieren versucht, dass er selbst einen Vorteil erhält. Eine solche Problemstellung bezeichnet man als byzantinisch, nach einem wissenschaftlichen Artikel, der sie anhand eines fiktiven Beispiels eines gemeinsamen Feldzugs byzantinischer Generäle erläutert, die sich weder darauf verlassen können, dass keiner den anderen verrät, noch den Nachrichten vertrauen können, die sie erhalten, weil diese mit bösartiger Absicht auf dem Weg von Feinden verfälscht worden sein könnten.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Entwickler Magazin Spezial Vol.18: Blockchain - "Blockchain"

Alle Infos zum Heft
579865618Konsensansätze für Blockchains
X
- Gib Deinen Standort ein -
- or -