BigchainDB – Das leichtgewichtige Blockchain-Framework [blockcentric #3]

Keine Kommentare

Mit BigchainDB sehen wir eines der ersten vollumfänglichen, aber einfachen Blockchain-Frameworks. Das Projekt macht es sich zur Aufgabe, Blockchain für eine große Anzahl von Entwicklern und Use Cases nutzbar zu machen, ohne besonderes Wissen in Kryptographie und verteilten Systemen zu verlangen.

Laut Benchmarks (deren Skripte ebenfalls dem Repository beigelegt sind) ist ein einfaches BigchainDB-Netzwerk dazu in der Lage, 800 Transaktionen pro Sekunde anzunehmen und zu validieren (vgl. 3-10 tx/s bei Bitcoin). Dieser hohe Datendurchsatz ist den gewählten Big-Data-Technologien zur Datenpersistenz zu verdanken. Datenbanksysteme aus diesem Umfeld nutzen bewährte Mechanismen, die auf Paxos-Algorithmen basieren und damit zu einem Konsens über den Stand der Daten gelangen.

Als zugrundeliegende Datenbank für eine BigchainDB kann MongoDB oder RethinkDB gewählt werden. Bei beiden Optionen handelt es sich um dokumentenorientierte NoSQL-Datenbanken, die durch Replikation und Sharding horizontal skalierbar sind. Ebenfalls sind sie schemafrei, sodass Daten darin gespeichert werden können, ohne dass global ein einheitliches Schema definiert werden muss.

Der Durchsatz beider Systeme alleine kann generell mit über 80.000 Schreiboperationen pro Sekunde benannt werden.

Transaktionen in der BigchainDB

Das Framework macht sich also den Konsens des genutzten Datenbank-Clusters zu nutzen. Damit Transaktionen validiert werden können, gibt es außerdem noch die Möglichkeit, eigene Validierungs-Mechanismen zu implementieren.

Zwei Arten von Transaktionen sind in der BigchainDB verfügbar. CREATE-Transaktionen erstellen ein Asset, also eine Sammlung von Daten, und verbinden dieses mit mindestens einem Besitzer (seinem Public Key). Zusätzlich sind alle Assets “divisible” und können somit in unterschiedlich große Anteile für unterschiedliche Besitzer zerlegt werden.

Mit TRANSFER-Transaktionen können komplexe Instruktionen angelegt werden, die vorhandene Assets (und ihre Anteile) an Bedingungen weiterer Transaktionen knüpfen. Damit können, einfach ausgedrückt, Assets und Anteile zwischen Teilnehmern im Netzwerk verschoben werden.

Wie in einer Blockchain üblich, gibt es keine Möglichkeit, ein Asset zu löschen oder seine Eigenschaften zu modifizieren.

Damit eine Transaktion gültig im Netzwerk verarbeitet werden kann, müssen mehrere Bedingungen erfüllt werden.

Nach Erhalten der Transaktion wird diese von den Knoten auf die korrekte Struktur geprüft. CREATE-Transaktionen müssen beispielsweise ihre Asset-Daten beinhalten, während TRANSFER-Transaktionen die ID eines angelegten Assets referenzieren. Ebenfalls unterscheiden sich beide Arten in der Art und Weise, wie sie mit Inputs und Outputs umgehen müssen. Selbstverständlich muss jede Transaktion signiert und gehasht sein, bevor sie an das Netzwerk übermittelt wird.

Wenn die Struktur einer Transaktion gültig ist, wird die Gültigkeit der enthaltenen Daten geprüft. Kurz und knapp ausgedrückt, wird in diesem Schritt das sogenannte “double spending” verhindert. Damit wird ausgeschlossen, dass die Transaktion mehrmals das gleiche Asset transferiert oder Assets ausgibt, die schon andere Transaktionen ausgegeben haben.

Zusätzlich lassen sich noch eigene Validierungs-Mechanismen implementieren, die Asset-Erzeugung und Transferierungen beispielsweise auf korrekte Fachlichkeit prüfen könnten. Zum Beispiel, ob realistische Maße für ein Autoteil vergeben wurden oder der Farbcode einer Autolackierung existent ist.

Für ein tieferes Verständnis der Idee sowie den technischen und architektonischen Details des Projektes, ist es empfehlenswert, das bis zum Juni 2016 gepflegte BigchainDB Whitepaper zu lesen.

Szenarien und Betrieb einer BigchainDB

Da der Konsens in einer BigchainDB nicht über öffentliche Mechanismen wie Proof of Work, Proof of Stake o.ä. umgesetzt wird, ist die Technologie vielmehr für private Blockchains geeignet. Das bedeutet, dass sich einige Parteien zu einem Konsortium vereinigen, um gemeinsam ihre Transaktionen untereinander abzuwickeln, ohne einen Mittelsmann zu benötigen. Dazu steuert jeder Teilnehmer dieser Vereinigung etwas Infrastruktur bei, auf der mindestens ein Knoten der Blockchain-Lösung betrieben wird. Somit muss jede Transaktion, die im Netzwerk geschieht, von einer technischen sowie organisatorischen Partei des Konsortiums validiert und bestätigt werden. Dieser Ansatz ist sehr leichtgewichtig und erfordert nicht, dass die Teilnehmer für ihre Validierung belohnt werden. Die Belohnung für die Teilnehmer besteht schließlich darin, als Zusammenschluss ein vertrauensvolles Netzwerk ohne fragwürdige und kostspielige Mittelsmänner aufzubauen.

Durch diese Gegebenheiten fällt der Betrieb einer privaten Blockchain auf Basis von BigchainDB relativ einfach. Jeder Teilnehmer des Konsortiums muss sich darum kümmern, ein in seiner Infrastruktur verteiltes Datenbank- und BigchainDB-Cluster aufzusetzen und lauffähig zu halten. Dazu kommt natürlich das Halten eines privaten Schlüssels zum Signieren seiner Nachrichten an das Netzwerk. Jede Organisation, die am Netzwerk teilnimmt, kann durch die Zertifikatsverwaltung identifiziert und verifiziert werden.

Ein Beispiel wäre ein Zusammenschluss von einigen Banken, die Zahlungsverkehr und Informationsaustausch untereinander betreiben. Normalerweise vertrauen sich diese Teilnehmer nicht vollständig und müssen dritte Instanzen zur Verifizierung der Transaktionen mit einbeziehen. Wenn dieses Netzwerk aus Banken aber ein Konsortium bilden würde, das automatisiert und durch Kryptographie gesichert gegenseitig jede Transaktion absegnet, wäre eine dritte Instanz überflüssig und könnte somit ausgeschlossen werden.

Mit einer BigchainDB-Lösung im Einsatz würde jede Bank in ihrer Infrastruktur ein eigenes, mit dem Netzwerk verknüpftes Cluster betreiben.

Die BigchainDB eignet sich also vor allem für private Blockchain-Netzwerke, die eine hohe Aktivität und Datenmenge aufweisen. Auch für Archivierungslösungen, in denen über viele Jahre viele Datensätze vertrauenswürdig aufbewahrt werden müssen, eignet sich dieser Stack. Hiermit können zum Beispiel Instanzen obsolet gemacht werden, die für die gesetzeskonforme Datenarchivierung hohe Dienstleistungs-, Hardware- und Lizenzgebühren aufrufen.

Auch das Tracken von Schritten in einer Supply Chain kann das Transaktionsmodell der BigChain hervorragend abdecken.

Startschuss auf der lokalen Maschine oder in IPDB

Als Managed-BigchainDB-Blockchain-Netzwerk wird inzwischen auch die Interplanetary Database (IPDB) angeboten, mit der man als registrierte Organisation interagieren kann.

Lokal kann BigchainDB entweder direkt auf dem Host installiert oder mit Docker betrieben werden. Zum Starten und Ausprobieren eignet sich die Docker-Variante gut.

Um Client-Anwendungen gegen das gestartete Netzwerk zu entwickeln, stehen einige offizielle sowie Community-gewartete Treiber zur Verfügung. Aus dem großen Angebot von Python, JavaScript, Java, Ruby, Haskell und Go findet wohl jeder Entwickler die passende Bibliothek.

Wir wünschen viel Spaß beim Ausprobieren und Erfahrungen sammeln.


In unserer Kolumne “blockcentric” bloggen wir, zusätzlich zu den bewährten Themen des codecentric-Blogs, über die Blockchain. Dabei möchten wir das Thema uneingeschränkt sowie breit gefächert betrachten: Technologie, Projekte, Organisation und Geschäft. Die Artikel können Ergebnisse unserer 20%-Zeit-Projekte sowie Neuigkeiten aus dem Themenbereich sein und zielen darauf ab, Ihnen die Blockchain näher zu bringen.

Blockcentric Logo

Auch auf unserer Blockchain Landing Page können Sie sich über unsere Aktivitäten und Angebote in dem Bereich informieren.

Wir freuen uns auf Ihr Feedback zur Kolumne und spannende Diskussionen über Ihre Use Cases.

Bisher veröffentlichte blockcentric-Posts

Jonas Verhoelen

Jonas ist seit Abschluss seines Software Engineering Studiums als IT Consultant und Entwickler bei der codecentric tätig. Er interessiert sich vor allem für die Umsetzung von Microservice Landschaften mit verschiedensten Technologien.
Außerdem beschäftigt er sich mit der Blockchain Technologie und Smart Contracts sowie möglichen Anwendungsfällen.

Share on FacebookGoogle+Share on LinkedInTweet about this on TwitterShare on RedditDigg thisShare on StumbleUpon

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.