blockchain-recodelaw

Unblocking Blockchain Vol. 1 – Was ist eine Blockchain und wie funktioniert sie?

Neben Artificial Intelligence und Internet of Things ist die Blockchain-Technologie eines der am meisten diskutierten Technologiethemen der heutigen Zeit. Das Blockchain-Protokoll wurde ursprünglich von dem Pseudonym Satoshi Nakamoto im Jahr 2009 entwickelt. In den vergangenen Jahren befasste sich der Diskurs in Politik, Wissenschaft und Gesellschaft vornehmlich mit den auf der Blockchain-Technologie basierenden Kryptowährungen, wie Bitcoin, und deren kuriosem Kursverhalten. Mit der Zeit wurde aber deutlich, dass die Blockchain-Technologie deutlich mehr Anwendungsmöglichkeiten hat, als nur Grundlage von Kryptowährungen zu sein. Der Fokus des Diskurses verschob sich folglich in der jüngeren Vergangenheit weg von der Blockchain-Technologie als reine Basis für Kryptowährungen hin zu den vielfältigen, potentiellen Einsatzmöglichkeiten in allen Wirtschaftszweigen.

Dieser Artikel stellt den Grundstein für weitere Artikel zum Thema Blockchain dar und erläutert, was eine Blockchain ist und wie die Ursprungs-Blockchain – die Bitcoin-Blockchain – funktioniert. In folgenden Beiträgen werden wir darauf aufbauend die Funktionsweise weiterer Blockchain-Protokolle, allen voran die Ethereum-Blockchain, sowie die weitreichenden Einsatzmöglichkeiten der Blockchain-Technologie beleuchten.

Definition

Die Blockchain-Technologie feiert in diesem Jahr bereits ihren 10. Geburtstag und dennoch existiert bisher keine einheitliche Definition des Begriffs „Blockchain“. Vielmehr kursieren im Internet und in den Fachmedien verschiedenste Definitionen.

So wird eine Blockchain beispielsweise ganz kurz und bündig als „eine dezentrale Datenbankstruktur bzw. ein digitales Register, welches Transaktionen transparent aufzeichnet“, bezeichnet.

Etwas ausführlicher definiert die Bundesanstalt für Finanzaufsicht (BaFin) den Begriff Blockchain. Laut der BaFin handelt es sich bei Blockchains um „fälschungssichere, verteilte Datenstrukturen, in denen Transaktionen in der Zeitfolge protokolliert, nachvollziehbar, unveränderlich und ohne zentrale Instanz abgebildet sind.“

Deutlich ausführlicher definiert der Blockchain-Experten Dr. Julian Hosp eine Blockchain untechnisch so: „Eine Blockchain ist eine digitale Datei, in der dieselbe Information von allen Mitgliedern einer Gesellschaft abgespeichert wird und Updates in regelmäßigen Zeitblöcken an die bereits bestehende Information gehängt werden, sodass jeder Teilnehmer die gesamte Information besitzt und sich nicht auf andere verlassen muss.“

Neben diesen Definitionen existieren noch unzählige weitere. Allen Definitionen ist aber eins gemein: Sie helfen nicht oder nur bedingt, wenn man verstehen will, was eine Blockchain eigentlich ist oder wie die Blockchain-Technologie funktioniert. Nichts desto trotz können die Definitionen hilfreich sein. Aus fast allen, insbesondere den detaillierteren, lassen sich nämlich vier Charakteristika einer Blockchain ableiten, anhand derer die Funktionsweise einer Blockchain erklärt werden kann.

Charakteristika einer Blockchain

Die Charakteristika einer Blockchain sind  Dezentralität, Unveränderbarkeit, Transparenz und Privatsphäre. Anhand dieser werden wir im Folgenden die Funktionsweise einer Blockchain erläutern.

Dezentralität

Ein wesentliches Element einer Blockchain ist die dezentrale Speicherung von Informationen. Die Informationen werden nicht auf dem Server einer zentralen Institution (z.B. Regierung, Bank, Google, Facebook), sondern auf den Servern von einer Vielzahl von Nutzern gespeichert. Diejenigen Nutzer, die eine Kopie, der auf der Blockchain gespeicherten Informationen, auf ihrem Server speichern und verwalten, werden als „Nodes“ bezeichnet. Die Nodes sind über das Internet miteinander verbunden und bilden so ein dezentral organisiertes Netzwerk; sprich eine dezentrale Datenbank (Engl.: Distributed Ledger). Dabei müssen aber nicht alle Netzwerkteilnehmer die gesamten Informationen der Blockchain als Kopie speichern. Vielmehr unterscheidet man zwischen „Full Nodes“ und „Lightweight Nodes“. Erstere speichern eine Kopie der kompletten Blockchain, letztere nur einzelne Teile. Ebenso wie die Speicherung nicht auf dem Server einer zentralen Instanz erfolgt, ist auch für die Validierung der eingespeisten Informationen keine zentrale Institution erforderlich. Die Validierung von neu eingespeisten Informationen erfolgt nämlich auch dezentral auf Grundlage eines automatisch ausgeführten Genehmigungsverfahrens (Konsensverfahren; dazu ausführlich unter 2.).

Dadurch, dass die Informationen, die auf einer Blockchain gespeichert sind, nicht auf dem Server einer zentralen Institution, sondern auf den Servern der Netzwerkteilnehmer gespeichert und aktualisiert werden, besteht keine zentrale Schwachstelle mehr, die ein Angreifer für eine missbräuchliche Informationsveränderung nutzen könnte.

Unveränderbarkeit

Ein weiteres Kennzeichen der Blockchain ist die Unveränderbarkeit der auf ihr gespeicherten Informationen. Diese resultiert aus der Art und Weise, wie Transaktionen auf der Blockchain gespeichert werden. Die Speicherung von Transaktionen oder anderen Informationen erfolgt in Blöcken (engl. „Block“), die miteinander zu einer Kette (engl. „Chain“) verbunden werden. Daher der Name Blockchain (bzw. „Blockkette“).

Allgemeiner Ablauf der Informationsspeicherung

Ganz vereinfacht dargestellt läuft die Speicherung einer Transaktion oder einer Datenaktualisierung wie folgt ab:

Wenn ein Update in eine Blockchain eingespeist wird, wird dieses Update automatisch an alle oder nur an ausgewählte Nodes übermittelt, die das Update in ihren aktuellen Block aufnehmen.
Gleichzeitig werden diese Nodes aufgefordert, das Update im Rahmen eines automatisierten Prozesses – dem Konsensverfahren –  zu genehmigen. Durch die Genehmigung wird der Block an die bestehende Blockchain angehängt, wodurch die Verkettung entsteht.
Wie genau ein Konsensverfahren und damit die Verkettung abläuft hängt von der jeweiligen Blockchain ab. Es gibt eine Vielzahl an unterschiedlich ausgestalteten Konsensverfahren. Das sogenannte Proof-of-Work-Verfahren (PoW), ist  wohl das bekannteste und dasjenige, welches am häufigsten verwendet wird. Auch die beiden größten Blockchain-Projekte Bitcoin und Ethereum verwenden derzeit noch PoW. Andere Konsensverfahren sind zum Beispiel Proof-of-Stake (PoS), Proof-of-Activity (PoA) oder Proof-of Elapsed-Time (PoET), auf die an dieser Stelle aber nicht näher eingegangen werden soll. Nachfolgend werden wir anhand der Bitcoin-Blockchain detailliert erklären, wie die Erstellung neuer Blöcke bzw. die Speicherung von neuen Informationen auf  einer PoW-Blockchain funktioniert.

Detaillierter Ablauf der Informationsspeicherung bei einer Proof-of-Work-Blockchain – der Bitcoin-Blockchain

Die Speicherung von Transaktionen auf der Bitcoin-Blockchain erfolgt grundsätzlich in folgenden sechs Schritten:

  1. Neue Transaktionen werden an alle Nodes gesendet
  2. Jeder Node sammelt die Transaktionen in einem Block
  3. Jeder Node versucht eine mathematische Aufgabe zu lösen
  4. Der Node, welche die Lösung als erstes findet, sendet seinen Block an alle anderen Nodes
  5. Die anderen Nodes akzeptieren den neuen Block nur, wenn alle darin enthaltenen Transaktionen gültig sind
  6. Die Akzeptanz der anderen Nodes wird dadurch ausgedrückt, dass sie den Hash des akzeptierten Blockes bei der Erstellung des nächsten Blockes als den vorherigen Hash verwenden
Sammlung von übermittelten Daten durch Nodes – Schritt 1) und 2)

Die Nodes nehmen die übermittelten Transaktionen jeweils in einem Block auf. Ein Block in der Bitcoin-Blockchain ist wie folgt strukturiert:

Feld: Beschreibung:
Fixer Wert 0xD9B4BEF9 (dient der Identifizierung als Bitcoin Block)
Blockgröße Zahl der Bytes bis zum Ende des Blocks
Block-Header Besteht aus sechs Teilen:
– Version
– Block-Hash des vorherigen Blocks
– Merkle Root
– Zeitstempel
– Schwierigkeitsgrad
– Nonce
Transaktionszähler Anzahl der Transaktionen
Transaktionen Liste der Transaktionen

Abbildung 1: Blockstruktur eines Bitcoin Blockes

Im Folgenden konzentrieren wir uns nur auf den Block-Header, da dieser entscheidend für das Hinzufügen neuer Blöcke zur Blockchain ist.

Um den Block-Header zu erstellen, trägt ein Node die aktuelle Versionsnummer der Blockchain in das Feld „Version“ ein, nimmt den Block-Hash des vorangegangenen Blocks und den Zeitpunkt der Blockerstellung (timestamp) auf. Darüber hinaus erzeugt der Node einen Merkle Root. Ein Merkle Root ist eine doppelte Verschlüsselung der von der Node in dem Block gesammelten Transaktionen. Ein Merkle Root entsteht wie folgt: Bereits bei der Aufnahme der Transaktionen in den Block erfolgt die erste kryptografische Verschlüsselung der eingespeisten Transaktionen mithilfe des Hashing-Algorithmus SHA256. Nachdem der Node alle Transaktionen gesammelt und verschlüsselt hat, werden die einzelnen für jede Transaktion erzeugten Hashes noch einmal zu einem einzigen Hash verschlüsselt. Dieser Hash wird als Merkle Root (dt. Hash Baum) bezeichnet. Ein Hash ist eine Buchstaben-Zahlen-Kombination mit einer bestimmten Länge. Nur eine kleine Änderung der Originalinformation führt zu einem komplett anderen Hash. Die Verschlüsselung mit einem Hash gilt deshalb als sicher, da der Hash keine Rückschlüsse auf die Originalinformation zulässt und die Wahrscheinlichkeit, dass zwei Informationen in denselben Hash verschlüsselt werden, höchst unwahrscheinlich ist. Nachfolgend ein kurzes Beispiel zur Verdeutlichung:

„recode.law“wird durch den Hash-Algorithmus in folgenden Hash transformiert: a4439fa70333835d3b06ede5ea9b6cce8320d4d8f7e47aee327b3f3da116a8bf

Ersetzt man nur die Großbuchstaben durch Kleinbuchstaben entsteht ein gänzlich neuer Hash. Die veränderte Information „recode.law“ wird zu dem Hash:

e4524cdf6369cdaf00af3a3d63b48b6b17611982e45a06da8c0593ebded5685c

Darüber hinaus enthält ein jeder Block einen Schwierigkeitsgrad und eine Nonce (number that is only used once).

Beide Punkte stehen in unmittelbarem Zusammenhang mit dem mathematischen Problem, welches zur Erstellung eines neuen Blockes gelöst werden muss.

Lösung des mathematischen Rätsels zur Blockerstellung – Schritt 3)

Ein Block wird durch die Lösung eines mathematischen Rätsels durch einen Node erstellt. Deshalb versucht jeder Node, das mathematische Rätsel zu lösen. Die mathematische Aufgabe besteht darin, eine Nonce zu finden, so dass der Block-Header durch den Hash-Algorithmus in einen Hash transformiert wird, der einen kleineren Wert ergibt, als der festgelegte Schwierigkeitsgrad des Blocks (siehe hierzu Abbildung 2). Der Schwierigkeitsgrad ist nichts anderes als ein Wert, ausgedrückt durch eine bestimmte Anzahl von Nullen, die den Beginn des Block-Hashes darstellen müssen. Ein sehr einfacher Schwierigkeitsgrad wäre beispielsweise 1000. Jeder Block-Hash, der mit einer 0 beginnt, wäre kleiner als der Schwierigkeitsgrad 1000 und würde das mathematische Problem lösen (0<1). Würde der Schwierigkeitsgrad hingegen 0100 betragen, müsste ein Hash mit 00 beginnen, um kleiner zu sein (00<01). Der Schwierigkeitsgrad legt also fest, wie viele Nullen am Anfang eines Block-Hashes stehen müssen. Je mehr Nullen am Anfang des Block-Hashes stehen müssen, desto aufwendiger ist die Berechnung.

Zur Verdeutlichung folgendes Beispiel:

Nehmen wir an, dass der aktuelle Block-Header mit dem Schwierigkeitsgrad 1000 und der Nonce 0 folgenden Hash ergibt: 449a54e9125da81ab8101c0798cd7db4d744d3df5ed8a99e. Um das mathematische Problem zu lösen, müsste der Hash mit einer 0 beginnen (0<1). Da der Hash hier mit 4 beginnt, ist dies offensichtlich nicht der Fall. Das mathematische Problem wurde mit der Generierung dieses Hashes unter Verwendung der Nonce 0 nicht gelöst. Ein Node erhöht die Nonce im Block-Header so lange um den Wert Eins, bis der dadurch generierte Hash mit einer 0 beginnt. Der oben genannte Block-Header unter Verwendung der Nonce 1 ergibt folgenden Hash: b7d9e2994e1f317cc724dcf7dc7f16907cd5b1c32f6ae77131. Das mathematische Problem wurde folglich noch immer nicht gelöst. Erst bei Verwendung der Nonce 372524923 entsteht in unserem Besipiel der Hash 0d320c84bac827b7d54ec6536bbde792a3d477b11a89ef39, der das mathematische Problem lösen würde.

Übermittlung des verschlüsselten Blocks, Genehmigung und Aktualisierung bei den übrigen Netzwerkteilnehmern – Schritt 4) bis 6)

Derjenige, der diese Lösung als Erster findet, sendet seinen Block an alle anderen Nodes. Diese überprüfen den Block und verwenden bei Akzeptanz den generierten Block-Hash bei der Erstellung des nächsten Blocks. Das bedeutet, sie speichern die um den neuen Block erweiterte Blockchain auf ihrem Server und nehmen den gerade generierten Block-Hash in den Block-Header des nächsten Blocks auf.

Schlussfolgerung der Unveränderbarkeit

Es wird vielfach angenommen, dass die Unveränderbarkeit bereits aus der Verkettung der Blöcke resultiert. Dies ist allerdings nur bedingt richtig. Richtig ist, dass jeder neue Block die verschlüsselten und bestätigten Informationen des vorherigen Blocks enthält. Jeder nachfolgende Block bestätigt somit die Informationen des vorangegangenen Blocks und damit die gesamte Blockchain. Daraus folgt aber noch nicht unmittelbar die Unveränderbarkeit. An sich ist es nämlich sehr wohl möglich, eine Information in einer bereits verketteten Blockchain zu ändern. Dies ist aber wegen der dafür notwendigen Rechenleistung (=Energie) vollkommen unwirtschaftlich. Wie lange die Erstellung eines neuen Blocks dauert, hängt vom vorgegebenen Schwierigkeitsgrad ab, da dieser bestimmt wie viel Rechenleistung nötig ist, um das mathematische Rätsel zu lösen. Der Schwierigkeitsgrad wird bei der Bitcoin-Blockchain alle 2016 Blöcke so angepasst, dass es ungefähr zehn Minuten dauert einen neuen Block herzustellen (=das Rätsel zu lösen). Steigt die Rechenleistung im Netzwerk, wird der Schwierigkeitsgrad erhöht. Sinkt die Rechenleistung, wird er reduziert. Je nachdem wie hoch der Schwierigkeitsgrad angesetzt ist, müssen Billionen von Noncen durchprobiert werden, bis eine gültige Lösung gefunden wird. Dies führt zu einem enormen Energiebedarf. Um auf der Blockchain gespeicherte Informationen nachträglich zu ändern, müsste man die zur ursprünglichen Herstellung der Blöcke aufgebrachte Energie erneut aufwenden. Möchte man bspw. eine Information in Block 80 ändern während aktuell Block 200 generiert wird, so müsste man nicht nur Block 80 ändern, sondern auch alle nachfolgenden Blöcke. Die hierzu benötigte Energie ist ab einer gewissen Länge der Blockchain so teuer, dass eine einzelne nachträgliche Veränderung wirtschaftlich in der Regel keinen Sinn macht. Eine Ausnahme stellt die sog. 51%-Attacke dar, die das gesamte Bitcoin-Netzwerk kompromittieren würde, an dieser Stelle aber nicht näher erläutert werden soll. Bei der Bitcoin-Blockchain gilt eine Transaktion nach einer Stunde als sicher bzw. unveränderbar, da es ungefähr 10 min dauert einen neuen Block zu erstellen und somit nach einer Stunde bereits sechs neue Blöcke die Transaktion bestätigen.

Privatsphäre und Transparenz

Die Charakteristika der Transparenz bei gleichzeitig gewährleisteter Privatsphäre sind uneingeschränkt nur bei einer öffentlichen Blockchain vorhanden. Daher werden wir die Charakteristika zunächst anhand einer öffentlichen Blockchain erläutern. Seit dem Launch der ersten öffentlichen Blockchain – der Bitcoin-Blockchain – wurden viele weitere Blockchain-Konzepte erarbeitet. So etwa private und Konsortium-Blockchains sowie viele andere. Um die Komplexität des Themas nicht unnötig an dieser Stelle zu erhöhen, werden wir im Anschluss an die Ausführungen zur öffentlichen Blockchain lediglich die Unterschiede zu einer privaten Blockchain aufzeigen und weitere Blockchain-Modelle außen vor lassen.

Ein öffentliches Blockchain-Netzwerk ist vollständig offen. Das bedeutet, dass sich prinzipiell jede Person mit einem Computer an ein bestehendes Blockchain-Netzwerk anschließen und daran teilnehmen kann. Den Teilnehmern der Blockchain sind im Grundsatz die gleichen Rechte zugewiesen. Das bedeutet, dass jeder Teilnehmer den Inhalt der Blockchain einsehen, Informationsveränderungen ausführen und sich an der Sicherung der Informationen durch Teilnahme am Konsensverfahren beteiligen kann. Daher kann jeder Teilnehmer sämtliche Transaktionen, Datenveränderungen, Identitäten oder Rechte von anderen Teilnehmern überprüfen. Eine öffentliche Blockchain ist folglich für alle Netzwerkteilnehmer komplett transparent.

Trotz der Transparenz wird die Privatsphäre der Teilnehmer durch den Einsatz von Kryptographie gewährleistet. Die Zuordnung der auf der Blockchain gespeicherten Informationen zu Netzwerkteilnehmern erfolgt über einen individuellen, kryptographischen öffentlichen Schlüssel („public key“), der wie eine Art Kontonummer fungiert. Einsehbar sind daher alle Transaktionen, die dem jeweiligen Schlüssel auf der Blockchain zugeordnet wurden. Rückschlüsse auf die Identität, der sich hinter dem Schlüssel befindlichen Person, sind dadurch aber nicht oder nur bedingt möglich. Aus der Überprüfbarkeit und Öffentlichkeit des public key einer Person folgt überdies wegen einer asymmetrischen Verschlüsselungstechnologie kein Sicherheitsrisiko für den einzelnen Teilnehmer. Um Aktionen auf der Blockchain auszuführen – etwa die Transaktion einer Werteinheit oder die Veränderung eines Datenbestandes – benötigt der Teilnehmer seinen privaten kryptographischen Schlüssel („private key“), der den Zugang zu den Daten gewährt. Den privaten Schlüssel kann man sich also wie die PIN oder das Passwort zum sich hinter dem öffentlichen Schlüssel befindlichen Konto vorstellen.

Anders als bei der öffentlichen Blockchain, bei der eine Vielzahl von Netzwerkteilnehmern für die Instandhaltung der Blockchain verantwortlich ist und jeder dem Netzwerk beitreten kann, gibt es bei einer privaten Blockchain oft nur einige wenige Verantwortliche, die darüber bestimmen, wer dem Netzwerk beitreten darf, wer welche Aktionen ausführen darf und wer welche Zugriffsrechte erhält. Das bedeutet, dass den Netzwerkteilnehmern unterschiedliche Rechte zugewiesen werden. Wem welche Rechte zugewiesen werden, hängt von der Ausgestaltung durch die zentrale Instanz oder der begrenzten Anzahl an Teilnehmern im Einzelfall ab. Damit hängt es zwar von der individuellen Ausgestaltung ab, aber grundsätzlich ist das Ausmaß an Transparenz geringer als bei einer öffentlichen Blockchain. Deshalb eignen sich private Blockchains besonders für die Implementierung in Unternehmen.

Fazit und Ausblick

 Zusammenfassend lässt sich eine Blockchain in Anschluss an Hosp so definieren:

„Eine Blockchain ist eine dezentrale und meist öffentliche Datenbank, in der Vorgänge durch kryptografische Hashes als Merkle Tree (Hash-Baum) über viele Computer hinweg aufgezeichnet werden, sodass die Datensätze nicht rückwirkend geändert werden können, ohne nicht dieselbe Energie noch einmal hineinzustecken, welche für das Kreieren der Hashes benötigt worden war.“

In diesem Artikel haben wir die Funktionsweise der Blockchain-Technologie anhand der Bitcoin-Blockchain als Ursprungs-Blockchain erläutert. Wie bereits angeklungen, wurden seit der Einführung der Bitcoin-Blockchain eine Vielzahl weiterer Blockchain-Projekte umgesetzt. Dabei haben sich die Entwickler vielfach an der Funktionsweise der Bitcoin-Blockchain orientiert. Dennoch unterscheiden sie sich insbesondere in Hinblick auf die verwendeten Konsensverfahren. Ein Blockchain-Projekt, welches
vor allem für Legal Tech von großer Bedeutung ist, ist die Ethereum-Blockchain und die auf ihr ausführbaren Smart Contracts. In folgenden Artikeln werden wir die Funktionsweise von Smart Contracts erläutern und Unterschiede zwischen den beiden Konsensverfahren PoW und PoS sowie die weitreichenden Einsatzmöglichkeiten der Blockchain-Technologie näher beleuchten.

Last Updated on 10. März 2021

Ähnliche Beiträge: