Blockchain

Was ist eine Blockchain?

(Teile übernommen und übersetzt von marmelab.com)

Was sie macht
Eine Blockchain erlaubt es Daten in einem Rechnernetz bestehend aus nichtvertrauenswürdigen Peers mit mehreren Benutzern zu teilen und zu bearbeiten. Das funktioniert mit allen Daten, ist aber vor allem dann interessant, wenn es um Informationen geht deren Austausch klassischerweise eine vertrauenswürdige Drittperson/Zwischenstelle voraussetzt. Beispiele wären Geld (Bank), Verträge und Eigentum (Anwalt), ... Im Wesentlichen ermöglicht es die Blockchain auf vertrauenswürdige Drittperson/Zwischenstellen zu verzichten.

What it does
A blockchain allows to securely share and/or process data between multiple parties over a network on non-trusted peers. Data can be anything, but most interesting uses concern information that currently require a trusted third-party to exchange. Examples include money (requires a bank), a proof or property (requires a lawyer), a loan certificate, etc. In essence, the blockchain removes the need for a trusted third party.

Wie sie funktioniert
Technisch gesehen ist die Blockchain eine Innovation mit drei zugrunde liegenden Konzepten: Peer-to-Peer-Rechnernetzen, Asymmetrischer Verschlüsselung und verteiltem Konsens basierend auf einer nur durch Zufall lösbaren mathematischen Aufgabe. Keines dieser Konzepte ist neu, aber ihre Kombination.

How it works
From a technical point of view, the blockchain is an innovation relying on three concepts: peer-to-peer networks, public-key cryptography, and distributed consensus based on the resolution of a random mathematical challenge. None of there concepts are new. It’s their combination that allows a breakthrough in computing. [..]

Womit man es vergleichen könnte
Man könnte die Blockchain als Datenbank sehen, die auf allen Knoten repliziert und lose synchronisiert wird.

What it compares to
See the blockchain as a database replicated as many times as there are nodes and (loosely) synchronized, [..]

...nun etwas technischer

(Bilder und Inhalte aus bitsonblock.net)

Datenstruktur: Wie ist eine Blockchain aufgebaut?

Eine Blockchain ist eine Datei
In einer Blockchain können beliebige Daten abgespeichert werden. Meistens wird sie wie eine Datenbank verwendet. In der internen Struktur unterscheidet sie sich aber von dieser.

Analogie: Blöcke in der Blockchain = Seiten in einem Buch
Jede Seite in einem Buch enthält:

  • Text, z.B. eine Geschichte
  • Information über sich selbst. Oben an der Seite findet man meistens den Namen des Buches und ev. des aktuellen Kapitels. Unten an der Seite steht die Seitenzahl. Diese Informationen werden als Meta-Daten bezeichnet.

Ein einzelner Block einer Blockchain besteht aus:

  • Inhalt des Blocks, bei Bitcoin z.B. die Bitcoin-Transaktionen und der Miner-Reward.
  • ein «Header» welcher Meta-Daten des Blocks enthält. In Bitcoin sind das technische Daten zum Block, eine Verknüpfung zum vorhergehenden Block und den Hash des eigenen Inhaltes.
Blöcke in der Kette sind miteinander verknüpft, wie Seiten in einem Buch

Reihenfolge der Blöcke in einer Blockchain

Seite um Seite
Bei Büchern können die Seiten durch ihre Seitenzahlen einfach aufsteigend geordnet werden.

Block um Block
Bei Blockchains enthält jeder Block eine Verknüpfung zum vorhergehenden Block. Diese Verknüpfung basiert nicht auf der Blocknummer, sondern auf dem durch den Inhalt des vorhergehenden Blocks gegebenen Hash.

Die Verknüpfung zu den vorhergehenden Blöcken erzeugt eine Kette von Blöcken – eine «Blockchain»

Interne Konsistenz
Dadurch dass zur Verknüpfung der Blöcke Hashwerte und nicht Nummern oder Zeitstempel verwendet werden, können die Daten sehr einfach überprüft werden. Der Benutzer berechnet dazu selbst die Hash-Werte der Blöcke. Sind diese mit den Daten konsistent und können so die Verknüpfungen der Blöcke nachvollzogen werden, dann kann man sicher sein, dass die Blockchain konsistent ist. Möchte jemand Daten einer Blockchain ändern, so müsste er alle Hash-Werte des geänderten und allen neueren Blöcken neu berechnen.

Einblick in einen einzelnen Block: Der Fingerabdruck (Hash) ist eindeutig

Falls die Berechnung der Hash-Werte kompliziert ist und lange dauert, so ist es auch schwierig und zeitaufwändig eine Blockchain neu zu erstellen.

Die Logik bei Bitcoin ist:

  • Wir machen es sehr aufwändig, einen Hash zu berechnen, welcher die Regeln der Bitcoin-Blockchain erfüllt
  • Darum, wenn jemand Teile der Kette neu erzeugen will, müsste er mit dem «ehrlichen» Rest des Rechnernetzes konkurrieren und diesen gar überholen.

Deshalb sagt man die Bitcoin-Blockchain sei unveränderbar. (Grundsätzlich muss aber eine Blockchain nicht unveränderbar sein!)

Verteilung der Daten: wie werden neue Daten verteilt?

Eine Blockchain muss nicht zwingenderweise in einem Peer-to-Peer-Rechnernetz leben. Allerdings ist dies bei Diensten wie z.B. Bitcoin genau der springende Clou: man kann mit einem P2P-Netz die zentrale Behörde (z.B. Bank) umgehen. In einem P2P-Netz hat jeder Teilnehmer alle Daten (oder fast alle). Die Daten werden also x-mal repliziert. Das macht ein P2P-Netz weniger effizient als ein Client/Server-Netz, aber auch unabhängiger. So können Teilausfälle des Netzes oder einzelner Teilnehmer ohne Probleme verkraftet werden.

Client/Server- vs. Peer-to-Peer-Architektur

Probleme mit Peer-to-Peer
Sogar wenn man allen Teilnehmern in einem P2P-Netz vertraut, kann es zu Meinungsverschiedenheiten und Inkonsistenzen kommen. Wenn jeder Teilnehmer in seinem Tempo arbeitet, kommt es unweigerlich zu leicht unterschiedlichen Zuständen dieser. Was ist jetzt der «wahre» oder «vertrauenswürdige» Zustand?

Noch schlimmer, wie soll das in einem nicht-vertrauenswürdigen Rechnernetz, wo keiner der Teilnehmer als vertrauenswürdig eingestuft werden kann, funktionieren.

Konsens: wie werden Konflikte gelöst?

Welcher Block soll gelten?
Den ersten sichtbaren Block als legitim bertrachten
«Longest chain rule»: Wenn es mehrere Blöcke gibt, dann gilt die längste Kette!

Verteidigung: wie macht man es den Angreifern schwer?

Was könnte ein Angreifer tun und was nicht?
Ein unehrlicher Miner könnte

  • gültige Transaktionen nicht weiterleiten
  • Versuchen Blöcke zu erzeugen die spezifische Transaktionen beinhalten oder nicht
  • Versuchen eine längere Kette zu erzeugen welche dann dazu führen würde das vorher akzeptierte Blöcke nicht mehr Teil der Kette wären

Er kann nicht

  • Bitcoins einfach so erstellen
  • Bitcoins aus einem Account stehlen
  • Überweisungen im Namen anderer ausführen

Eine mögliche Attacke ist die sogenannte «double spend»-Attacke.

Die «double spend»-Attacke

Diese Attacke ist aber nur mit Riesenaufwand möglich, weil das Hinzufügen von Blöcken ein sehr rechnenintensiver Vorgang ist. Der Angreifer müsste schneller sein als alle «ehrlichen» Teilnehmer des Rechnernetzes, damit seine Kette als die längste akzeptiert würde. Die Berechnung neuer Blöcke selbst, ist ein Ratespiel: Es wir eine Zufallszahl geraten und diese wird zusammen mit den Daten des Blocks gehasht. Der Hash muss nun um akzeptiert zu werden mit einer bestimmten Anzahl Nullen beginnen. Dem sagt man «Proof of Work».

\[ \begin{array}{c} \text{hash(Zufallszahl 1} + \text{Hash vorhergehender Block} + \text{Daten)} = 73251509345956682380 \\ \text{hash(Zufallszahl 2} + \text{Hash vorhergehender Block} + \text{Daten)} = 10507557775058611091 \\ \text{hash(Zufallszahl 3} + \text{Hash vorhergehender Block} + \text{Daten)} = 34623021683099175057 \\ \text{...}\\ \text{hash(Zufallszahl X} + \text{Hash vorhergehender Block} + \text{Daten)} = 00000145210877866656 \end{array}\]

Die Anzahl Nullen, also die Schwierigkeit wird ständig angepasst:

Immer nach 2048 Blöcken (ca. zweiwöchentlich) wird die mathematische Schwierigkeit angepasst, und zwar basierend auf der Geschwindigkeit wie Blöcke erzeugt werden.

Demo einer Blockchain

https://anders.com/blockchain/

Bitcoin

Die wohl berühmteste Anwendung einer Blockchain stellt die Kryptowährung Bitcoin dar. Sie verwendet eine Blockchain um die Transaktionen zwischen den Teilnehmern abzuspeichern und zu sichern.

Bitcoin-Transaktion

https://www.youtube.com/watch?v=Lx9zgZCMqXE (How Bitcoin Works Under the Hood)

Neben Bitcoin gibt es viele weitere Möglichkeiten Blockchains zu nutzen. Aufgeführt sind einige Anwendungen die Blockchains einsetzen um die sonst nötige Vermittlungsstelle zu ersetzen. Was machen diese?