Blockchain – Teil 1: Einführung

In dieser Artikelserie wird das Thema Blockchain von der technischen Seite betrachtet und außerdem Anregungen und Beispiele zum Thema Programmieren mit der Blockchain geboten. Vielleicht nicht für die absoluten Anfänger geeignet, aber wer sich für eine Sache wirklich interessiert oder etwas wirklich will, kann es auch schaffen.

Was ist die Blockchain?

Eine Blockchain wurde als erstes für die Umsetzung einer digitalen Währung, einer sogenannten Kryptowährung, und zwar mit dem Bitcoin umgesetzt. Aktuell arbeiten allerdings immer mehr Unternehmen und Institutionen in anderen Anwendungsbereichen an eigenen Blockchain Umsetzungen. Als Referenz Implementation für die folgende Erklärung dient der Bitcoin, natürlich kann sich die Umsetzung bei anderen Applikationen in Details unterscheiden.

Die Blockchain ist eine geordnete zurückverfolgbare Liste von Transaktionsblöcken. Die Blockchain kann als Datei (eine so genannten Flat File) oder auch in einer einfachen Datenbank gespeichert werden. Im Falle von Bitcoin core wird dafür die LevelDB von Google genutzt.

Im Rahmen von Bitcoin wird auch von einem distributed ledger also einem verteilten Hauptbuch gesprochen. Zu jeder Adresse auf der Blockchain werden die Dateneingänge und Ausgänge gespeichert. Im Falle von Bitcoin also die Geldeingänge und Geldausgänge. Was bei der Sendeadresse im Ausgang steht, steht bei der empfangenden Adresse im Eingang.

Die einzelnen Blöcke sind back-linked, also immer mit dem vorherigen Block in der Blockchain verknüpft. Die Blockchain wird oftmals als vertikaler Stapel mit übereinander geschichteten Blöcken dargestellt und der erste Bock dient als Fundament für den gesamten Stapel.

Durch die Darstellung der Blockchain in Blöcken die aufeinander gestapelt sind, entsteht auch der Begriff der Höhe, zum Beispiel einer Transaktion. Hiermit ist der Abstand, zum Beispiel des Blockes einer Transaktion, zum ersten Block den es jemals gab, gemeint.

Jeder Block der Blockchain wird mit einem Hashwert im Header des Blockes identifiziert. Im Falle von Bitcoin wird dafür der SHA256 Algorithmus genutzt, natürlich könnte genauso gut ein anderer Hashalgorithmus genutzt werden. Außerdem gibt es in jedem Blockheader noch ein Feld „previous-block“, dass den Hashwert des vorherigen Blockes enthält, so entsteht die Verkettung, die zurück bis zum allerersten Block den es je gab, dem so genannten Genesis Block, reicht.

Das bedeutet jeder Block hat ganz genau einen Elter, kann aber temporär mehrere Kinder haben, in dem einfach mehrere Nachkommen eines Blockes, den gleichen Hashwert in dem „previous-block“ Feld stehen haben.

Mining

Im Falle von Bitcoin wird so genanntes Mining betrieben um Transaktionen zu überprüfen und zu bestätigen. Dieses dezentrale Clientnetzwerk, also die Miner, bieten den Sicherheitsmechanismus der Blockchain. Sie überprüfen neue Transaktionen auf der Blockchain und speichern diese auf dem Globalen Hauptbuch. In diesem dezentralen Konzept gibt es keine Server, es können jederzeit neue Miner sich dazuschalten oder aber auch offline genommen werden und der Inhalt der Chain wird davon nicht beeinflußt. Es gehen deshalb keine Daten verloren, weil die Miner (bzw alle Full Nodes) eine komplette Kopie der Blockchain gespeichert haben.

Ein neuer Block der alle neuen Transaktionen seit dem letzten Block enthält wird regelmäßig (bei Bitcoin im Durchschnitt alle 10 Minuten) „gemint“ und damit der Blockchain offiziell hinzugefügt. Allerdings müssen alle Miner ein sehr rechenaufwändiges mathematisches Problem (Proof-of-Work) lösen, dass man nur mit durchprobieren aller Möglichkeiten, lösen kann. Das verbraucht viel Rechenleistung, und die Schwierigkeit ist so angepasst, dass dies ca. alle 10 Minuten passiert. Der Miner der das Rätsel lösen konnte, bekommt 12,5 Bitcoins (Stand November 2017) für seinen hohen Rechenaufwand als Entschädigung und die anderen Miner überprüfen und bestätigen, dass der Gewinner das Rätsel wirklich gelöst hat. Dadurch wird der Block und dann auch die Transaktionen in dem Block auf der Blockchain gültig. Danach beginnt das Spiel von neuem.

Zum Thema Mining gibt es eigentlich noch viel mehr zu sagen und deshalb kann es gut sein, dass dazu auch noch ein Artikel in diese Serie erscheinen wird.

Mit Hilfe eines Blockchain Explorers, ein Beispiel im Bereich Bitcoin ist https://blockchain.info, kann man sich einzelne Blöcke und ihre Transaktionen anschauen.

Bitcoin Transaktion – Quelle: https://blockchain.info

Aber auch einzelne Adressen, an die Daten, zum Beispiel Bitcoins, verschickt werden können, kann man auf dieser Seite eingeben und sehen von welcher Adresse, wann, welche Daten gekommen sind. Man braucht dafür keine Authentifizierung jeder kann diese Daten von jedem zu jeder Zeit abrufen. Da die Adressen aber nicht direkt auf einzelne Personen schließen lassen, ist es noch solange Anonym, solange man seine Adresse nicht irgendwo veröffentlicht. Jedoch kann man beliebig viele neue Adressen generieren, so dass es unwahrscheinlich ist das jemand alle Adressen einer Person herausfinden kann.

Bitcoinadresse – Quelle: https://blockchain.info

Anwendungsbereiche der Blockchain

Da die Blockchain mit Bitcoin groß geworden ist, findet man auch im Kryptowährungsbereich viele andere Coins die ebenfalls mit einer Blockchain umgesetzt wurden, meist aber technische Details verändert haben und somit versuchen eine technisch bessere Umsetzung als der Bitcoin zu bieten. Ein paar Beispiele hierfür sind:

  • Ethereum
  • Litecoin
  • Dash
  • Bitcoincash
  • Monero

Wer glaubt die Blockchain wäre nicht für viele andere Bereiche auch interessant irrt sich. Beispielsweise das amerikanische Unternehmen Visa hat vor kurzem einen Zahlungsdienst mit dem Namen B2B Connect veröffentlicht. Der Dienst soll Direktzahlungen zwischen einzelnen Unternehmen effizienter, sicherer und transparenter umsetzen und basiert auch auf einer Blockchain.

Auch Regierungen beschäftigen sich mit der Blockchain, so hat die Europäische Kommission einen 131 seitigen Bericht vorgelegt in dem die Möglichkeiten zum Einsatz der Blockchain im Bereich Bildung behandelt werden.

Das Thema ist noch relativ jung und viele Unternehmen arbeiten und forschen an dem Thema, es gibt Ideen Dokumente wie Führerscheine und Personalausweise per Blockchain verfügbar zu machen. Andere Ideen sind Klausuren und Abschlussarbeiten an den Universitäten über eine Blockchain zur Verfügung zu stellen und es gibt noch sehr viel mehr Umsetzungen schon jetzt und es werden in Zukunft noch viel mehr werden.

Vor- und Nachteile einer Blockchain

Die folgende Liste beinhaltet die mir aktuell bekannten und wichtigsten Vor- und Nachteile.

VORTEILE

  • Dezentralität – Es gibt keine Server, sondern ein Peer-To-Peer Netzwerk, dadurch ist kein Vertrauen in eine zentrale Stelle, Unternehmen oder Personengruppe nötig
  • Unveränderlichkeit der Daten – Einmal in der Blockchain bestätigte Blöcke, können nachträglich nicht mehr verändert werden, da die nachfolgenden Blöcke auf den vorherigen aufbauen. Würde ein Miner versuchen Blöcke zu verändern, würde es allen anderen Minern auffallen und die ungültigen Daten würden nicht mit in den Chain aufgenommen werden.
  • Sicherer Datenaustausch ohne Mittelsmann möglich – Das kann zum Beispiel der Kauf von jedem beliebigen Produkt oder auch das Versenden von (digitalen) Geld sein, mit der Blockchain ist dafür keine Bank oder ein Zwischenhändler mehr nötig, man könnte somit direkt beim Hersteller kaufen. Bereits jetzt gibt es zahlreiche (online)Shops in denen man mit Bitcoins bezahlen kann. Auch der Transfer von Geld ins Ausland z.B. nach China kann zu jeder Zeit und mit sehr niedrigen Kosten realisiert werden, innerhalb von wenigen Minuten ist das Geld auf der Wallet (Konto) des Empfängers.
  • Hochverfügbarkeit – Je mehr Clients sich in das Netzwerk einloggen umso verfügbarer werden die Daten, ein einzelner Client würde ausreichen um alle Daten zur Verfügung zu stellen. Bei tausenden von Clients um den ganzen Globus verteilt, sprechen wir hier von echter Hochverfügbarkeit. Fallen (im Beispiel von Bitcoin) 100 Clients auf einmal aus, wird es keiner merken, die Blockchain ist weiter verfügbar.
  • Geschwindigkeit – Im Falle von Kryptowährungen kann man auch die Performance angeben, welche Bank bietet schon weltweite Überweisungen an, die innerhalb weniger Minuten auf dem Empfängerkonto sind für ein paar Cents pro Überweisung?

NACHTEILE

  • Rechenaufwand für die einzelnen Clients – Im Falle von Bitcoin ist aktuell ein sehr hoher Rechenaufwand und Stromverbrauch für das „Mining“ nötig. Allerdings hängt der nötige Aufwand auch von der einzelnen Applikation und Implementation einer Blockchain ab und es wird auch hier noch Verbesserungen geben
  • Geschwindigkeit – Die Geschwindigkeit einer Blockchain bzw. die Übernahme der Daten in die Blockchain kann nicht mit der Geschwindigkeit einer zentralisierten Datenbank mithalten.
  • Öffentlichkeit der Daten – Sobald man die Adresse einer Person zuordnen kann zum Beispiel weil die Person die Adresse zu Zahlungszwecken veröffentlicht, kann man auch die Transaktionen der Adresse einer Person zuordnen. Hiergegen gibt es bereits erste Umsetzungen die das Problem versuchen zu beseitigen. Man kann dies auch umgehen in dem man beispielsweise für jeden Zahlung eine eigene Adresse anlegt.

 

Aufbau eines Blocks

Ein Block ist ein Behälter der Transaktionen sammelt, die dann in das distributed ledger (verteilte Hauptbuch) also in die Blockchain übernommen werden.

Der Block hat einen Header der Metadaten enthält. Nach den Metaden folgt eine lange Liste von Transaktionen, diese machen den größten Teil des Blocks aus. Der Block Header ist im Falle von Bitcoin 80 Bytes klein, während die durchschnittliche Transaktion etwa 250bytes und der durchschnittliche Block etwa 500 Transaktionen enthält (Stand Juni 2017 Quelle: Andreas M. Antonopoulous, Mastering Bitcoin). Durch ein Update (mit dem Namen SegWit) der Blockchain sind jetzt allerdings auch größere Blöcke möglich, um die Skalierbarkeit besser zu gewährleisten.
Die folgende Tabelle beschreibt den Aufbau eines Blocks:

Größe Feldname Beschreibung
4 bytes Block Size Die Größe eines Blocks in bytes
80 bytes Block Header Mehrere Felder formen den Block Header (zum Beispiel der Hashwert des vorherigen Blocks)
1-9 bytes Transaction Counter Anzahl der folgenden Transaktionen
Variabel Transactions Die in diesem Block gespeicherten Transaktionen

Quelle: Eigene Darstellung in Anlehnung an die Daten von Andreas M. Antonopoulous, Mastering Bitcoin

Blockheader

Der Blockheader enthält drei Metadatensets. Als erstes gibt es ein Feld mit dem Hash des vorherigen Blocks, das den Block mit dem vorherigen verbindet. Das zweite Set von Daten beinhaltet den Schwierigkeitsgrad (difficulty), einen Zeitstempel und ein Feld für die Lösung des mathematischen Problems, mit dem Namen nonce. Das zweite Set von Daten ist für das mathematische Problem (Proof-Of-Work) gedacht. Das dritte Set von Daten ist der merkle tree root, eine Datenstruktur die genutzt wird um Hashwerte über alle Transaktionen in dem Block zu erstellen. Damit wird gewährleistet, dass die Transaktionen in dem Block nicht verändert werden können, ändert sich auch nur eine Zahl in einer Transaktion, wäre der merkletree Wert ein völlig anderer und es fällt sofort auf.

Größe Feldname Beschreibung
4bytes Version Versionsnummer um Software und Protokollupdates zu verfolgen
32 bytes Previous Block Hash Der Hashwert des vorherigen Blocks in der Blockchain
32 bytes Merkle Root Ein Hashwert vom Anfang des merkle trees erzeugt über die Transaktionen dieses Blocks.
4 bytes Timestamp Die ungefähre Erstellzeit des Blocks (Unixzeitformat)
4 bytes Difficulty Target Die Proof of Work Algorithmus Schwierigkeit für diesen Block
4 bytes Nonce Das Ergebnis des mathematischen Rätsels (Proof-Of-Work)

 

Block identifiers: Block Header Hash und Block Höhe

Ein Block wird hauptsächlich über einen Hashwert identifiziert. Dieser digitale Fingerabdruck wird erstellt in dem der Header des Blocks 2x mit dem SHA256 Algorithmus ausgeführt wird. Das Ergebnis daraus wird der Blockhash genannt, ein passenderer Name wäre Blockheaderhash. Alternativ kann man einen Block mit dem Wert der Blockhöhe identifizieren, der erste Block der jemals erstellt wurde, also der Genesis Block, hat eine Höhe von 0, für die nachfolgenden Blöcke wird diese Zahl einfach hochgezählt.

Netzwerk

Im Bitcoinwhitepaper werden die folgende Schritte für den Ablauf beschrieben.

  1. Neue Transaktionen werden an alle Knoten (also Clients/Peers) verteilt
  2. Jeder Knoten sammelt neue Transaktionen in einem neuen Block
  3. Jeder Knoten arbeitet an dem mathematischen Problem (Proof-of-Work) für diesen Block
  4. Wenn ein Knoten das Problem lösen konnte, verteilt er den Block inklusive der Lösung, an alle anderen Knoten
  5. Die anderen Knoten akzeptieren den neuen Block nur wenn alle Transaktionen in dem Block gültig und nicht bereits ausgegeben sind.
  6. Die anderen Knoten zeigen ihre Akzeptanz des neuen Blocks in dem sie anfangen an dem nächsten Block zu arbeiten. Hierzu nutzen sie den Hashwert des neuen Blocks in dem Feld für den Hashwert des vorherigen Blocks.

 

Dir ist dies alles viel zu oberflächlich und du möchtest gerne mehr und schneller lernen und hast außerdem gute Englischkenntnisse?

Na dann kommst du nicht an folgenden Fachbuch vorbei, ich behaupte es ist eine der besten, wenn nicht die beste, Quelle zu diesem Thema: Mastering Bitcoin

Hast du Fragen, Anregungen oder Artikelwünsche zu diesem Thema? Dann schreibe einfach ein Kommentar dazu.

Eine Antwort auf „Blockchain – Teil 1: Einführung“

  1. Das erste Mal, dass ich eine vernünftige Erklärung über Blockchains lese. Wahrscheinlich habe ich bisher nicht gesucht. Aber diese Erläuterung ist fast ausreichend.
    Was mir jetzt noch fehlt, ist die Beschreibung, wie die mathematischen Probleme aussehen. Außerdem würde ich gerne wissen, wie die Schwierigkeit bewertet wird. (nach Zeit)
    Vielen Dank für die Darstellung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.