Wie funktioniert eigentlich die Blockchain? Teil 1: Die manipulationssichere verteilte Datenbank


11.04.2018 von

https://www.iteratec.de/fileadmin/Bilder/News/iteratec_logo.png https://www.iteratec.de/fileadmin/Bilder/News/iteratec_logo.png iteratec GmbH

In dieser Blogserie gehen wir näher auf Blockchain ein und widmen uns dabei verschiedenen Fragestellungen:

Ich werde in letzter Zeit oft gefragt, was die Blockchain eigentlich ist und wie sie funktioniert. Die passende Antwort ist je nach technischem Hintergrund der fragenden Person unterschiedlich. Um möglichst vielen Lesern gerecht zu werden, versuche ich die Frage nicht zu oberflächlich und trotzdem allgemein verständlich zu beantworten. Erstens gibt es nicht "die Blockchain". Es gibt eine Vielzahl an Technologien, die mit Hilfe von kryptografischen Verfahren manipulationssichere verteilte Systeme mit fälschungssicherer Datenhaltung ermöglichen. Man nennt sie Distributed Ledger Technology (DLT) und Blockchain ist nur eine Variante, wie man diese umsetzen kann. Alleine unter den Blockchain-basierten Technologien wie Bitcoin, Ethereum, NEO, NEM, Hyperledger Fabric oder Sawtooth, um nur ein paar Beispiele zu nennen, gibt es Unterschiede, die ihre Einsatzmöglichkeiten maßgeblich beeinflussen.

Blockchains sind als P2P-Netzwerk dezentral

Bevor wir uns die Datenstruktur der Blockchain - wie der Name schon sagt, eine Kette von Blöcken - anschauen, ist es wichtig zu verstehen, dass es sich bei der Blockchain um ein Peer-to-Peer (P2P)-Netzwerk handelt. In P2P-Netzwerken gibt es keine zentrale Komponente, sondern nur gleichberechtigte Nodes, die lokale Kopien der Daten halten und verarbeiten. Sie bilden gemeinsam das Backend von Blockchain-Anwendungen. Das Frontend sind klassische Softwareprogramme, z. B. Webseiten oder mobile Apps mit einer Benutzeroberfläche, die über spezielle APIs mit dem P2P-Netzwerk kommunizieren. Jedes Frontend-Gerät ist entweder selbst eine Node oder ist mit einer Node verbunden und nutzt diese als Eintrittspunkt ins Netzwerk (s. Abbildung 1). Wenn das Frontend Daten aus der Blockchain abrufen will, fragt es die verbundene Node und diese gibt die Antwort anhand ihrer lokalen Datenkopie zurück. Möchte das Frontend Daten modifizieren, schickt es eine sog. Transaktion an die verbundene Node. Die Transaktion wird im Netzwerk verteilt und simultan auf allen Nodes ausgeführt.

Die Frontends senden laufend Transaktionen ins Netzwerk, welche die einzelnen Nodes in unterschiedlicher Reihenfolge erhalten und ausführen. Um trotzdem den gleichen Zustand auf jeder Node zu erreichen, müssen sich die Nodes auf die Reihenfolge und somit das Ergebnis der Transaktionen einigen. Dieses Verfahren nennt man Consensus. Es gibt verschiedene Consensus-Mechanismen. Der wohl bekannteste von ihnen ist das sog. Proof of Work (PoW). Die Nodes versuchen unabhängig voneinander eine Zahl (sog. Nonce) zu erraten, die zur Lösung einer Berechnungsaufgabe benötigt wird. Den Nodes bleibt nichts anderes übrig, als es mit verschiedenen Zahlen zu versuchen und zu hoffen, dass eine von ihnen der Schlüssel zur Lösung der Berechnungsaufgabe ist. Das Durchprobieren vieler verschiedener Zahlen erfordert allerdings sehr viel Rechenarbeit. Die Node, die es als Erste schafft, darf die von ihr ausgewählten Transaktionen in der von ihr gewählten Reihenfolge in einem sog. Block an die anderen Nodes im Netzwerk verteilen. Danach beginnt das PoW-Verfahren wieder von vorne, um weitere auf Verarbeitung wartende Transaktionen in eine für alle Nodes gültige Reihenfolge zu setzen.

Unveränderbare Verkettung von Blöcken

Jeder Block enthält einen eindeutigen Fingerabdruck des vorherigen Blocks (sog. Parent Hash). Durch diesen Fingerabdruck sind die Blöcke an ihre Vorgänger gekettet (s. Abbildung 2). Schon die kleinste Änderung an einem Block, z. B. Manipulation einer enthaltenen Transaktion, würde den Fingerabdruck verändern und die Kette durchtrennen. Damit die Kette wiederhergestellt werden kann, ist eine Neuerstellung aller nachfolgenden Blöcke erforderlich. Dies bedarf jedoch bei jedem Block eines erneuten PoW, was mit sehr viel Rechenarbeit verbunden ist. Während der Betrüger damit beschäftigt ist, arbeiten die anderen Nodes an neuen Blöcken und verlängern so die Kette immer weiter. Die Nodes sind so programmiert, dass sie die Kette für gültig halten, in deren Blöcke die meiste Rechenarbeit investiert wurde. Um Erfolg zu haben, müsste ein Betrüger also die Kette ab dem manipulierten Block so lange um neue Blöcke erweitern, bis er dabei mehr Rechenarbeit investiert hat als alle anderen Nodes zur Erweiterung der nicht manipulierten Kette in Summe. Dies ist natürlich nur möglich, wenn der Betrüger mehr Rechenkraft besitzt als der Rest des Netzwerks zusammen. Diese Eigenschaft macht die Blockchain unter der Annahme, dass die Mehrheit der Nodes ehrlich agiert, manipulationssicher. Damit das so bleibt, werden die Nodes für ihre ehrliche Arbeit belohnt. Sie dürfen in ihren Block eine weitere Transaktion mit einer Gutschrift auf ihr eigenes Konto inkludieren. Wenn der Block beim PoW ausgewählt wird, enthält er bereits die Gutschrift für diese Node. Die Gutschrift wird als Bestandteil des Blocks nach dessen Verteilung und Prüfung schließlich von allen anderen Nodes anerkannt. 

Würde kein Consensus zustande kommen, d. h. einige der Nodes einen anderen Block als das neue Ende der Kette akzeptieren als die restlichen Nodes des Netzwerks, würde es zur Aufspaltung der Kette, einem sog. Fork kommen. Dabei entstehen zwei Ketten mit einer gemeinsamen Vergangenheit aber getrennten Zukunft, denn sie können nach dem Fork nicht mehr zusammengeführt werden. Die Transaktionen vor der Aufspaltung gelten in beiden Ketten, die Transaktionen nach der Aufspaltung nur jeweils in einer der beiden Ketten. Somit sind diese Ketten wie Paralleluniversen mit einer eigenen Version der Realität, die sich mit jedem neuen Block immer weiter auseinanderentwickeln.

Kategorisierung und Eigenschaften von Blockchains

Wir können Blockchain Netzwerke nach zwei Kriterien unterteilen: Wer darf Nodes betreiben und wer darf sich mit den Nodes verbinden? Wenn jeder eine Node betreiben darf, dann reden wir von einer Permissionless Blockchain. Wenn nur eine Gruppe von Berechtigten Nodes betreiben darf, dann ist es eine Permissioned Blockchain. Wenn sich jeder mit einer Node verbinden und mit dem Netzwerk interagieren darf, dann nennt man das eine Public Blockchain. Wenn dies nur einer Gruppe von Berechtigen erlaubt ist, handelt es sich um eine Private Blockchain.

Eigenschaften, die alle Blockchains teilen, sind beispielsweise, dass alle Transaktionen verarbeitet werden. Das bedeutet allerdings nur, dass keine verloren geht und nicht, dass alle auch akzeptiert und ausgeführt werden. Eine andere Eigenschaft ist, dass das Netzwerk auch dann weiter funktioniert, wenn alle Nodes bis auf eine ausfallen. Sobald die ausgefallenen Nodes wieder online sind, synchronisieren sie sich mit den anderen und setzen ihre Arbeit fort. Eine Blockchain ist für alle, die darauf Zugriff haben, transparent, d. h. jeder sieht alle Transaktionen, die in den Blöcken stehen. Vertrauliche Informationen sollte man daher verschlüsseln, bevor sie in die Blockchain geschrieben werden. Die meisten Blockchains sind nicht anonym, sondern nur pseudonym. Das bedeutet, dass jeder Teilnehmer seine Transaktionen mit einem Identifikator, der sog. Adresse, durchführt, aus der man nicht auf seine wahre Identität schließen kann. Da jedoch alle Transaktionen aller Adressen transparent sind, kann man leicht verfolgen, welche Adressen untereinander interagieren. Die Transaktionen sind durch die digitale Signatur eines oder mehrerer Teilnehmer authentifiziert. Dadurch können keine gefälschten Transaktionen im Namen anderer durchgeführt werden, es sei denn, man gelangt in den Besitz ihrer Private Keys. Transaktionen sind atomar. Sie werden entweder vollständig oder gar nicht ausgeführt. So kann nie ein inkonsistenter Zustand entstehen. Die Transaktionen stehen auch in einer eindeutigen, unveränderbaren Reihenfolge in der Blockchain. Dadurch lässt sich zum Beispiel nachweisen, dass bestimmte Ereignisse noch vor anderen Transaktionen eingetreten sind, falls man sie (oder einen Fingerabdruck von ihnen) an der richtigen Stelle der Blockchain gespeichert hat.

Im ersten Teil der Blogserie haben wir uns mit der P2P-Netzwerkinfrastruktur und der Datenstruktur der Blockchain beschäftigt. Im zweiten Teil werden wir uns die Geschäftslogik in der Blockchain, die sog. Smart Contracts, näher anschauen. 

Diesen Artikel bewerten
 
 
 
 
 
 
 
5 Bewertungen (100 %)
Bewerten
 
 
 
 
 
 
1
5
5