mini|350x350px|Die bestimmende Blockchain (schwarz) besteht aus der längsten Folge von Blöcken ausgehend vom Ursprung (grün) zum aktuellen Block. Alternative Ketten verwaisen (lila), sobald sie kürzer als eine andere Kette sind. mini|267x267px|Schema eines Blockes in der Blockchain mini|Video: Wie funktioniert eine Blockchain? mini|Video: Funktionsweise einer Blockchain am Beispiel einer Geldüberweisung veranschaulicht.
Eine Blockchain (auch Block Chain, für Blockkette) ist eine kontinuierlich erweiterbare Liste von Datensätzen in einzelnen Blöcken. Neue Blöcke werden nach einem Konsensverfahren erstellt und mittels kryptographischer Verfahren an eine bestehende Kette angehängt. Jeder Block enthält dabei typischerweise einen kryptographisch sicheren Hash (Streuwert) des vorhergehenden Blocks, einen Zeitstempel und Transaktionsdaten.
Eine Blockchain ist ein Beispiel einer dezentral geführten Technologie Bundesverband Informationswirtschaft, Telekommunikation und neue Medien, 2016; abgerufen am 19. Dezember 2017 – Distributed-Ledger-Technologie (DLT) – und ähnelt in der Funktionsweise einer Verkettung digitaler Datenblöcke. Die Blockchain wird auch als „Internet der Werte“ (Internet of values) bezeichnet und legt die technische Basis für Kryptowerte wie Bitcoin.
Eine Blockchain kann genutzt werden, wenn Einigkeit auf den aktuellen und fehlerfreien Zustand in einem dezentralen Netzwerk mit vielen Teilnehmern hergestellt werden muss (siehe auch: Byzantinischer Fehler). Was dokumentiert wird, ist für den Begriff der Blockchain unerheblich. Entscheidend ist, dass spätere Transaktionen auf früheren Transaktionen aufbauen und diese als richtig bestätigen, indem sie die Kenntnis der früheren Transaktionen beweisen. Damit wird es unmöglich gemacht, Existenz oder Inhalt der früheren Transaktionen zu manipulieren oder zu tilgen, ohne gleichzeitig alle späteren Transaktionen ebenfalls ändern zu müssen. Die anderen Teilnehmer des dezentralen Netzwerks erkennen dann eine Manipulation der Blockchain an der Inkonsistenz der Blöcke.
Geschichte Erste Grundlagen zur kryptografisch abgesicherten Verkettung einzelner Blöcke wurden 1991 von Stuart Haber und W. Scott Stornetta, 1996 von Ross J. Anderson und 1998 von Bruce Schneier und John Kelsey beschrieben. 1998 arbeitete auch Nick Szabo an einem Mechanismus für eine dezentralisierte digitale Währung, die er „Bit Gold“ nannte. Im Jahr 2000 entwickelte Stefan Konst eine allgemeine Theorie zu kryptografisch abgesicherten Verkettungen und leitete daraus verschiedene Lösungen zur Umsetzung ab.
Das Konzept der Blockchain als verteiltes Datenbankmanagementsystem wurde erstmals 2008 von einer Person oder Personengruppe unter dem Pseudonym Satoshi Nakamoto im White Paper zu Bitcoin beschrieben. Im Jahr darauf veröffentlichte „Satoshi Nakamoto“ die erste Implementierung der Bitcoin-Software und startete dadurch die erste öffentlich verteilte Blockchain.
Eigenschaften Verkettungsprinzip Eine Blockchain ist eine verkettete Folge von Datenblöcken, die über die Zeit weiter fortgeschrieben wird. Dezentrale Speicherung Eine Blockchain wird nicht zentral gespeichert, sondern als verteilte Datenbank geführt. Alle Beteiligten speichern eine eigene Kopie und schreiben diese fort. Konsensmechanismus Es muss sichergestellt werden, dass eine bei allen Beteiligten identische Kette entsteht. Hierfür müssen zuerst Vorschläge für neue Blöcke erarbeitet werden. Dies geschieht durch Validatoren (die bei Bitcoin „Miner“ genannt werden). Dann müssen sich die Beteiligten einigen, welcher vorgeschlagene Block tatsächlich in die Kette eingefügt wird. Dies erfolgt durch ein sogenanntes Konsensprotokoll, ein algorithmisches Verfahren zur Abstimmung. Manipulationssicherheit Durch kryptographische Verfahren wird sichergestellt, dass die Blockchain nicht nachträglich geändert werden kann. Die Kette der Blöcke ist somit unveränderbar, fälschungs- und manipulationssicher. Transparenz/Vertraulichkeit Die auf der Blockchain gespeicherten Daten sind von allen Beteiligten einsehbar. Sie sind deshalb aber nicht unbedingt auch für alle sinnvoll lesbar, denn Inhalte können verschlüsselt abgespeichert werden. Blockchains erlauben so eine flexible Ausgestaltung des Vertraulichkeitsgrads. Nichtabstreitbarkeit Die Nichtabstreitbarkeit ist keine direkte Eigenschaft der Blockchain, sondern ergibt sich durch den Einsatz von digitalen Signaturen. Damit sind Informationen in der Blockchain speicherbar, die fälschungssicher nachweisen, dass Teilnehmer unabstreitbar bestimmte Daten hinterlegt haben, etwa Transaktionen angestoßen haben.
Konsensverfahren Neue Blöcke werden über ein Konsensverfahren geschaffen und anschließend an die Blockchain angehängt. Das populärste Konsensverfahren ist hierbei die Proof-of-Work-Methode; es bestehen jedoch zahlreiche andere Formen, Konsens herzustellen (Proof of Stake, Proof of Space, Proof of Burn, Proof of Activity, Proof of History). Durch die aufeinander aufbauende Speicherung von Daten in einer Blockchain können diese nicht nachträglich geändert werden, ohne die Integrität des Gesamtsystems zu beschädigen. Hierdurch wird die Manipulation von Daten erheblich erschwert. Der dezentrale Konsensmechanismus ersetzt die Notwendigkeit einer vertrauenswürdigen dritten Instanz zur Integritätsbestätigung von Transaktionen. In: Jens Fromm, Mike Weber (Hrsg.): ÖFIT-Trendschau: Öffentliche Informationstechnologie in der digitalisierten Gesellschaft. Kompetenzzentrum Öffentliche IT, Berlin 2016, ISBN 978-3-9816025-2-4.
Proof of Work (PoW)
Der Proof-of-Work stellt einen Arbeitsnachweis, z. B. die Lösung einer mathematischen Aufgabe, dar. Das Ergebnis kann hingegen ohne großen Aufwand nachgeprüft werden. Mit diesem Verfahren wird das übermäßige Erzeugen von neuen Blöcken eingeschränkt, indem Rechenarbeit erbracht werden muss.
Proof of Stake (PoS)
Der Proof of Stake stellt einen Nachweis des Anteils am Netzwerk dar. Der Anteil bzw. der „Stake“ jedes Teilnehmers wird aus Teilnahmedauer und/oder Vermögen ermittelt und fließt in eine gewichtete Zufallsauswahl ein. Ein deterministischer Algorithmus wählt aus dieser Zahl den Knoten aus, der einen neuen Block hinzufügt.
Skalierbarkeit Insbesondere bei der Anwendung als Kryptowährung gibt es in der Praxis Einschränkungen im Zeitverhalten sowie im Kommunikations- und Speicherbedarf. Wer die Glaubwürdigkeit einer Transaktion oder eines Kontostands selbst überprüfen möchte, muss die aktuelle Blockchain bis zurück zum Genesis-Block kennen. Dazu muss jeder Teilnehmer eine vollständige Kopie der bisherigen Blockchain speichern. Der immense Speicherbedarf könnte dann mit Archiv-Servern realisiert werden, die als einzige die gesamte Blockchain speichern. Darauf aufbauend arbeiten voll validierende Server, indem sie initial die Blockchain aus den Archivservern laden, aber im Betrieb nur mit einem Teil davon arbeiten. Sie übernehmen die eigentliche Last der anfallenden Buchungen. Teilnehmer könnten dann Software zur vereinfachten Überprüfung von Zahlungen betreiben und von den Servern nur Teilinformationen empfangen.
Die limitierte Rate zur Erzeugung neuer Blöcke und der Indeterminismus des Konsensverfahrens können zu unvorhersehbar langen Bestätigungszeiten führen. Im Proof-of-Work-Verfahren führen Schwankungen der tatsächlich betriebenen Rechenleistung und die dem Prinzip immanente Streuung zu Wartezeiten der Transaktions-Bestätigungen einem Vielfachen des Erwartungswertes. Durch das Anpassen des Schwierigkeitsgrads in hoher Frequenz können diese Schwankungen gering gehalten werden.
Teilbare Blöcke mini|333x333px|Kette aus Block-Headern. Von einem Hashbaum ist der Teilbaum einer Transaktion abgebildet. Wenn in jedem Block der Hashwert über den vollständigen Vorgänger gespeichert wird, benötigt man jeweils auch den vollständigen Block, um die Lückenlosigkeit der Kette zu überprüfen. Man benötigt also die gesamte Blockchain, auch wenn man nicht an jeder einzelnen Transaktion interessiert ist. Um das zu verhindern, werden Hash-Bäume eingesetzt. Anstatt einen Hashwert über den gesamten Block zu bestimmen, kann man auch Hashwerte einzelner Transaktionen errechnen und diese als Hash-Baum organisieren. An der Wurzel des Baumes erhält man damit wieder einen Hashwert, der alle Transaktionen zusammenfassend absichert. Damit kann ein Block-Header erstellt werden, der nur noch den Hashwert des Vorgängers, den Nonce und den Wurzel-Hashwert des eigenen Baums enthält.
Der einzelne Block wird dadurch zwar größer, aber die Lückenlosigkeit der Kette lässt sich jetzt allein anhand der vergleichsweise kleinen Block-Header überprüfen. Diese Header lassen sich also bequem speichern und sind in ihrem Speicherbedarf nicht von der Anzahl der durchgeführten Transaktionen abhängig.
Die Blockchain ist damit eine Reihe von Hashbäumen, bei denen zunächst nur die Wurzel und deren Verkettung von Interesse sind. Möchte eine SPV-Anwendung eine einzelne Transaktion überprüfen, so benötigt sie nur den dafür relevanten Teilbaum, um den Hashwert der Transaktion anhand der Werte dieses Teilbaums bis zur Wurzel überprüfen zu können. Dem voll validierenden Server oder den Archiv-Servern, von dem der Teilbaum bezogen wird, muss nicht vertraut werden. Der Teilbaum stellt mit seinen Hashwerten die überprüfbare Verbindung zwischen der einzelnen Transaktion und dem Block-Header des Blocks, in dem sie gebucht wurde, dar. Dieses Verfahren erlaubt es mit sehr geringem Aufwand, die Gültigkeit einer Buchung zu kontrollieren, ohne die restliche Buchhaltung zu kennen.
Die relativ kleinen Block-Header sind mit ein Grund dafür, dass spezialisierte Hardware extrem effizient für das Mining im Proof of Work eingesetzt werden kann. Es wird für jeden neuen Nonce nur der Hashwert des kleinen Block-Header und nicht des gesamten Blocks berechnet. Der Speicherbedarf ist also sehr gering. Genau das versuchen neuere Hashfunktionen wie scrypt zu vermeiden, indem sie den Speicherbedarf künstlich erhöhen und damit den Einfluss spezieller Hardware beispielsweise auf die Währung reduzieren.
Anwendungsbeispiele
Bitcoin
mini|400px|Vereinfachte Bitcoin-Blockchain Bei Bitcoin besteht eine Blockchain aus einer Reihe von Datenblöcken, in denen jeweils eine oder mehrere Transaktionen zusammengefasst und mit einer Prüfsumme versehen sind, d. h., sie werden jeweils paarweise zu einem Hash-Baum zusammengefasst. Die Wurzel des Baumes (auch Merkle-Root, bzw. Top-Hash genannt) wird dann im zugehörigen Header gespeichert. Der gesamte Header wird dann ebenfalls gehasht; dieser Wert wird im nachfolgenden Header abgespeichert. So wird sichergestellt, dass keine Transaktion verändert werden kann, ohne den zugehörigen Header und alle nachfolgenden Blöcke ebenfalls zu ändern.