c't 23/2017
S. 102
Know-how
Blockchain
Aufmacherbild

Das macht Blockchain

Die Technik hinter Bitcoin & Co.

„Blockchain“ gehört schon seit einiger Zeit zu den angesagtesten Buzzwords in der IT. Wir klären, ob dahinter nur Marketing-Gewäsch steckt oder ob Blockchains tatsächlich in der Lage sein könnten, ganze Industriezweige zu revolutionieren.

Die Großen aus der IT-Branche sind dabei: Amazon bietet eine „Blockchain as a Service“, Microsoft hat ein Framework zum Implementieren von Blockchains vorgestellt, von IBM gibt es eine „Blockchain Platform“. Auch aus der Industrie kommen praktisch täglich Ankündigungen von Unternehmen zu dem Thema: Maersk erforscht, wie sich Blockchains in der Schiffslogistik einsetzen lassen, Daimler kooperiert mit der Landesbank Baden-Württemberg, um den Handel mit Anleihen per Blockchain zu automatisieren, der schwedische Staat hat in seiner Verwaltung bereits erste Blockchain-Projekte in Betrieb. Vor allem die Finanzindustrie setzt große Hoffnungen auf die Blockchain-Technik, die im Englischen auch unter dem Namen „Distributed Ledger“, also etwa „verteiltes Kontobuch“ bekannt ist.

Dieser Artikel erklärt, wie eine Blockchain überhaupt funktioniert und wo noch ungelöste Probleme bei ihrem Einsatz lauern. Ein wichtiges Merkmal von Blockchains ist, dass sie sogenannte Smart Contracts ermöglichen, also Verträge, die in Code gegossen sind und sich quasi von selbst erfüllen. Wie das funktioniert, steht im Folgeartikel ab Seite 108.

Video: Nachgehakt

Was ist die Blockchain?

Technisch ist eine Blockchain zunächst einmal nicht viel mehr als eine verteilte Datenbank, die aus einer Kette von Datenblöcken besteht. „Verteilt“ bedeutet in diesem Zusammenhang, dass die Teilnehmer die Daten in einem Peer-to-peer-Netzwerk (P2P) miteinander austauschen, wobei auf jedem Knoten der komplette Datenbestand vorhanden ist.

Es existieren sowohl öffentliche als auch private Blockchains. Die bekannteste unter den öffentlichen ist die der Krypto-Währung Bitcoin. Auch Ethereum ist eine öffentliche Blockchain, die sich vor allem dadurch einen Namen gemacht hat, dass man dort anders als bei Bitcoin auch Smart Contracts hinterlegen kann. Im Prinzip kann bei öffentlichen Blockchains jeder mitmachen, alle Daten lesen und auch neue Einträge beisteuern. Im geschäftlichen Umfeld sind dagegen eher private Blockchains üblich. Sie existieren nur im Netzwerk und auf Rechnern der beteiligten Organisationen.

Eine der hervorstechendsten Eigenschaften der Blockchain ist ihre Robustheit gegen nachträgliche Änderungen einmal gespeicherter Daten. Deshalb kommt sie als Speichermedium überall da in Frage, wo Daten fortlaufend anfallen und manipulationssicher aufbewahrt werden müssen. Bei den Daten kann es sich um die Ein- und Auszahlungen eines Kontos genauso handeln wie etwa um die Einträge in eine digitale Krankenakte. Die Nutzdaten in der Bitcoin-Blockchain bilden die Transaktionen, also die Überweisungen von Währungsbeträgen zwischen den Teilnehmern.

Das kleinste Element einer Blockchain ist immer ein Block. Er besteht neben einem Index und einem Zeitstempel aus mindestens drei Komponenten: den eigentlichen Daten, dem Hash des Vorgängerblocks und einem sogenannten Proof of Work.

Das Blockchain-Prinzip

Dadurch, dass jeder Block einen Hash seines Vorgängers enthält, sind die Blöcke untereinander verknüpft und schützen einander vor Manipulationen oder zufälligen Änderungen etwa durch Speicher- oder Übertragungsfehler: Würden sich die in einem Block gespeicherten Daten nachträglich ändern, wäre sein Hash ein anderer, was im nächsten Block sofort auffallen würde. Aber nicht nur das: Der Vorgänger-Hash ist ja Teil des Blocks und fließt deshalb in die Berechnung des eigenen Hash-Wertes ein, der wiederum im nächsten Block gespeichert ist. Wollte man also die Daten in einem bereits bestehenden Block ändern, müsste man die gesamte Kette ab diesem Punkt neu berechnen. Das ist zwar theoretisch möglich, aber umso aufwendiger und damit für potenzielle Betrüger unattraktiver, je weiter die zu manipulierenden Daten in der Historie der Blockchain zurückliegen.

Um derartige Manipulationen noch schwieriger und ab einem bestimmten Punkt schlicht unmöglich zu machen, kommt bei den meisten Blockchain-Implementierungen der Proof of Work ins Spiel: Hierbei handelt es sich um eine Zahl, die schwer zu berechnen, aber leicht nachzuprüfen ist. Realisiert wird das, indem man von dem Hash eines gültigen Blocks fordert, dass er einer bestimmten Regel gehorcht, beispielsweise nicht größer als eine festgelegte Obergrenze ist. Um einen neuen Block zu berechnen, muss ein Programm die Zahl, die den Proof of Work darstellt, so lange ändern und immer wieder einen neuen Hash berechnen, bis die Bedingung erfüllt ist. Solange der verwendete Hash-Algorithmus nicht kompromittiert ist, gibt es keinen anderen Weg, zu einem gültigen Block zu kommen, als das Durchprobieren immer wieder neuer Werte für diese Zahl. Im Bitcoin-Jargon wird die Zahl übrigens Nonce genannt – auch wenn diese Bezeichnung, die sich von „Number used once“ ableitet, in der Kryptografie eigentlich für eine Zufallszahl steht, die in bestimmten Protokollen als eine Art Einmalkennwort verwendet wird.

Wer nur ein Krypto-Guthaben verwalten und Überweisungen tätigen will, benötigt keinen kompletten Blockchain-Client. Eine sogenannte Wallet-Anwendung wie das hier gezeigte Exodus genügt.

Durch Anpassen der Regel für gültige Blöcke kann man steuern, wie aufwendig die Hash-Berechnung werden soll. In der Bitcoin-Blockchain wird beispielsweise die Obergrenze für die Gültigkeit eines Hashes regelmäßig so angepasst, dass die Mitgliedergemeinschaft im Schnitt alle zehn Minuten einen neuen gültigen Block findet. Die Ethereum-Blockchain soll pro Minute um vier Blöcke wachsen. Der dort verwendete Hash-Algorithmus benötigt nicht nur Rechenleistung, sondern auch einige Gigabyte Speicher. Dadurch soll verhindert werden, dass sich gültige Blöcke mit Spezialhardware wie ASICs berechnen lassen – eine größere Investition in solche Hardware könnte die Mehrheit der Rechenleistung des gesamten Verbundes unter die Kontrolle einiger weniger Teilnehmer bringen und so die Stabilität der Blockchain gefährden.

Ob eine Blockchain intakt ist, kann jeder Teilnehmer mit überschaubarem Aufwand nachprüfen: Er muss dazu nur den Hash jedes Blocks neu berechnen, mit dem Vorgänger-Hash im nächsten Block vergleichen und prüfen, ob die Nonce die Gültigkeitsbedingung erfüllt.

Videos