Hyperledger Fabric und Modularisierung

Da Hyperledger Fabric losgelöst von einem konkreten Anwendungszweck entwickelt worden ist, sind zentrale Bestandteile bewusst modular und austauschbar angelegt worden.

Das beginnt bei der Authentifizierung der teilnehmenden Knoten – diese können über selbst ausgestellte X.509 Zertifikate authentifiziert werden, oder über ein LDAP-Verzeichnis, oder über eine andere Authentifizierungsmethode.

Ein Certification Authority Node kann an verschiedene bereits bestehende Systeme angebunden werden und leitet seine Informationen in die Blockchain.

Die Architektur der Peers, der normalen Blockchain-Knoten besteht wiederum aus einer Transaktionshistorie, sowie einer Datenbank mit dem augenblicklichen „World State“, dem aktuellen Datenstand der Blockchain.

Neuen Peer-Knoten wird beim Eintritt in einen Kanal die komplette Transaktionshistorie zugestellt, aus welcher diese ihren „World State“ rekonstruieren und anschliessend mit den anderen Peers abgleichen.

Die eingesetzte Datenbank-Komponente zum Vorhalten des „World State“ ist auch modular gehalten – standardmäßig findet LevelDB Anwendung, alternativ kann auch CouchDB eingesetzt werden.

 

Aufbau und Konfiguration einer Fabric Blockchain

Die Konfiguration einer Fabric Blockchain besteht aus mehreren Bestandteilen, die alle in ein Business Network Archive (kurz BNA-Datei) kompiliert werden können für das Deployment.

Die BNA-Datei enthält dabei folgende Informationen:

  • eine Datei mit Zugriffsrechten, geschrieben in ACL, der „Access Control Language“
    Diese beschreibt Regeln für den Zugriff der Teilnehmer auf einzelne Objekte in der konkreten Blockchain sowie des Netzwerks allgemein.
  • eine Model-Datei, die Namensräume definiert und die einzelnen Objekte und Assets in der Blockchain beschreibt und in der „Model Language“ verfasst ist. In dieser zentralen CTO-Datei wird definiert, wie die atomaren Objekte der Blockchain strukturiert sind und welche Attribute sie besitzen.
  • eine Javascript-Datei mit Transaktionslogik, die die verfügbaren Methoden der Blockchain programmiert. Hier wird definiert und kontrolliert, was Teilnehmer machen können. Dies könnte man auch den Chaincode oder die „smart contracts“ nennen.
  • eine Readme Datei mit informellen Character
  • eine Package.JSON Datei für die Kompilierung durch Node.JS

 

 

Was zeichnet Fabric als Blockchain aus?

Hyperledger Fabric ist eine Blockchain. Blockchains wiederum sind bekannt geworden als das infrastrukturelle Rückgrat von Kryptowährungen; als verteilte Buchhaltungssysteme, die das Handeln von Währungen oder Objekten erst möglich gemacht haben.

Fabric als Blockchain ist für den Einsatz im Business-Bereich gedacht. Einige der aus den Kryptowährungen bekannten Verfahren finden keine Anwendung. Andererseits sind neue Möglichkeiten hinzugefügt worden.

  • Es gibt kein Mining, weil es keine Kryptowährung gibt, die gezahlt werden müsste, um etwa wie bei Ethereum die Transaktionen abzuwickeln. Natürlich könnte man aber eine Kryptowährung mit Hilfe von Hyperledger Fabric als Ledger realisieren.
  • Es gibt kein verteiltes Konsensverfahren. Da in Business-Umfeldern das Netzwerk der Teilnehmer deutlich kleiner ist als bei einer öffentlichen Kryptowährung, gibt es somit auch keinen Bedarf an  Konsensverfahren wie etwa das Proof of Work von Bitcoin.
  • Fabrics ist als privates Netzwerk gedacht, in dem es eine zentrale Authentifizierungsstelle gibt. Neue Teilnehmer an einer Blockchain müssen von allen anderen Teilnehmern akzeptiert werden, um Zugang zu den Daten zu bekommen.
  • Fabrics unterstützt Kanäle („Channels“). Jeder Channel ist quasi eine eigene abgeschlossene Blockchain, und nur die Teilnehmer des jeweiligen Channels können sich sehen und Daten untereinander austauschen.
  • Fabric unterstützt sogenannte „smart contracts“, d.h. die Blockchain kann programmiert werden. Bei Hyperledger Fabric heisst das „Chaincode“, und der kann in verschiedenen Programmiersprachen verfasst werden, die als SDK verfügbar sind (Go, Java, Javascript, und bald Python). Dazu später mehr in einem eigenen Beitrag.
  • Ein Fabric Netzwerk besteht aus Knoten („Nodes“). Es gibt drei grundlegende Arten von Knoten:
    • Peers (normale Teilnehmer, die alle eine Kopie des Ledgers haben)
    • Orderer (sorgen für die Verbreitung der Transaktionen zu den Peers), sowie
    • Certification Authorities für die Authentifizierung der Peers und Ihre Transaktionen.
  • Das Fabric Projekt nutzt Docker als Virtualisierungslösung, so dass mehrere Nodes auf einer Maschine simuliert werden können. Docker erlaubt es ebenso, modulare und plattformübergreifende Container bereitzustellen.