Dieser Blogpost ist ein Artikel in einer Serie von Artikeln zu dem im Dezember 2019 erschienenen Buch „Blockchain mit SAP“ (Rheinwerk Verlag, Bonn, ISBN 978-3-8362-6914-8).
Dieser Blogpost basiert auf dem sechsten Kapitel dieses Buches, in dem die Konfiguration von Blockchain-Anwendungen mit Hyperledger Fabric beschrieben wird.
Im Rahmen unseres Buches entwickeln wir für Hyperledger Fabric und MultiChain vergleichbare Beispiele. Beginnen wir mit Hyperledger Fabric.
Hyperledger Fabric
Hyperledger Fabric ist eine Enterprise Blockchain für Anwendungen in der Industrie. Hyperledger Fabric ist nur EIN Projekt unter vielen Projekten der Hyperledger Foundation, wenn auch wohl mit Abstand das erfolgreichste. Es hat einen modularen Aufbau, so dass viele Schlüsselkomponenten der Blockchain angepasst werden können. Fabric erlaubt den Aufbau sogenannter privater Blockchain-Netzwerke, zu denen die Teilnehmer zugelassen werden müssen (Permissive Blockchain). Dabei werden Schlüssel ausgetauscht, um eine verschlüsselte Kommunikation im Netzwerk zu realisieren.
Fabric hat im Vergleich zu anderen Blockchains mehrere Knotentypen:
- Peer
- Orderer
- und Certificate-Authority-Knoten.
Peer-Knoten sind weitestgehend mit den Blockchain-Knoten in einem Bitcoin-Netzwerk vergleichbar und speichern die Transaktionsdaten in Blöcken. Des Weiteren speichern Peer-Knoten auch Smart Contracts und führen diese bei Bedarf aus.
Orderer sind eine spezielle Art von Knoten, die für den Konsens im Netzwerk zuständig sind. Im Gegensatz zu Bitcoin gibt es bei Hyperledger Fabric keinen Konsensalgorithmus wie Proof of Work, sondern den Orderer-Knoten, der den Konsens in Bezug auf die Transaktionsdaten herstellt.
Certificate-Authority-Knoten sind Knotentypen, die die Authentifizierung von Teilnehmern mit Hilfe von bereits existierenden Systemen wie LDAP oder Kerberos vornehmen.
Eine weitere Besonderheit von Hyperledger Fabric sind die Channels – verschlüsselte Kommunikationskanäle, die zwischen den Teilnehmern eingerichtet werden müssen und effektiv einer eigenen Blockchain entsprechen. In den meisten Fällen wird in einer Hyperledger-Fabric-Blockchain ein gemeinsamer Kommunikationskanal zwischen allen Teilnehmern eingerichtet. Allerdings muss es nicht dabei bleiben – es können beliebig viele weitere Channels zwischen einzelnen Teilnehmern eingerichtet und somit Untergruppen gebildet werden.
Ein erstes einfaches Beispiel
Als erstes werden wir ein simples Telefonbuch in Hyperledger Fabric realisieren. Die beim Aufbau einer Blockchain-Anwendung zu durchlaufenden Schritte sind immer dieselben, egal wie komplex diese am Ende wird:
- Aufbau der Blockchain-Knoten (Netzwerk-Infrastruktur)
- Entwickeln des Chaincodes
- Entwurf des Datenmodells
- Programmierung
- Testing
- Installation
- Aufbau weiterer Dienste (wie z.B. eines Node.js-Webservers)
Schlussendlich kommt es dann zu einer Verknüpfung der verschiedenen Dienste zu einer Anwendung in der SAP Cloud Platform.
Aufbau der Blockchain-Knoten
Das erste Netzwerk ist extrem simpel, es wird nur einen Knoten geben. Die SAP Cloud Platform bietet dazu die Option des Dev-Nodes an, auf dem Chaincode entwickelt, installiert und getestet werden kann.
Entwicklung des Chaincodes
Bei Hyperledger Fabric heißen Smart Contracts anders, nämlich Chaincode. Ohne Chaincode gibt es keine Blockchain unter Hyperledger Fabric – es wird zwingend ein Datenmodell der Transaktionen benötigt, die in der Blockchain erfasst werden sollen. Im Gegensatz zu Bitcoin gibt es bei Fabric nämlich kein festes Datenschema. Dieses muss selbst entwickelt werden. Für die Programmierung von Chaincode wird die Sprache Go genutzt. Fertiger Chaincode für die Blockchain muss in Form eines strukturierten ZIP-Archivs bereitgestellt werden, das zur Installation in den Blockchain-Knoten hochgeladen wird.
Schreiben in die Blockchain
Beim Schreiben in die Blockchain werden Schlüssel-Wert-Paare verwendet. Der entsprechende Befehl lautet:
PutState(Schlüssel, Wert)
Dies schreibt den Wert unter Angabe des Schlüssels in die Blockchain.
Lesen aus der Blockchain
Das Auslesen eines Werts aus der Blockchain geht wiederum über den Schlüsselnamen. Der Wert des Schlüssels wird mittels GetState ausgelesen:
GetState(Schlüssel, Wert)
Ist dies erfolgreich, wird der zuvor gespeicherte Wert aus der Blockchain zurückgeliefert, ansonsten wird eine Fehlermeldung ausgegeben (etwa bei nicht vorhandenem Schlüssel).
History
Ein weiteres Kernfeature der Blockchain ist die History-Funktion, die eine Liste der Wertänderungen für einen gegebenen Schlüssel zurückgibt. Mit
GetHistoryForKey(Schlüssel)
wird, bei validen Schlüsselnamen, eine chronologische Auflistung aller Wertänderungen für den angegebenen Schlüssel zurückgegeben.
Diese kurze Übersicht der Befehle reicht auch schon, um alle benötigten Funktionen zum Speichern von Daten in einer Blockchain realisieren zu können.
Die fertige Anwendung
Die fertige Anwendung basiert auf einem SAPUI5-Frontend, welches über REST-API-Aufrufe direkt mit der Blockchain interagiert. Mittels der Buttons können die Funktionen zur Anlage und zur Aktualisierung der Einträge aufgerufen werden.
Als kleinen Höhepunkt bietet unsere Applikation eine chronologische Historie der Wertänderungen aus der Blockchain. Hier eine beispielhafte Datenhistorie für einen markierten Eintrag – die Zeitstempel in der linken Spalte erlauben die chronologische Rekonstruktion der Änderungen:
Weitere Artikel dieser Serie finden sie hier:
- Was ist eine Blockchain und wie funktioniert sie?
- Blockchain-as-a-Service-Angebote der SAP Cloud Platform
- Cloud Computing von SAP: Die SAP Cloud Platform
- Blockchain mit SAP – Geschäftliche Anwendungsszenarien für Blockchains
- Blockchain mit SAP – Erste Schritte zur eigenen Blockchain
- Blockchain mit SAP – Blockchain-Anwendungen mit Hyperledger Fabric entwickeln
- Blockchain mit SAP – SAP HANA Integration
- Blockchain mit SAP – MultiChain Anwendungen
- Blockchain with SAP: MultiChain Applications
- Blockchain mit SAP – Hybride Netzwerkarchitektur und Camelot Hypertrust Plattform
- Blockchain mit SAP – Zusammenfassung und Ausblick
Wollen Sie mehr über die Möglichkeiten von Hyperledger Fabric für Ihr Unternehmen erfahren? In unserem Buch „Blockchain mit SAP“ erläutern wir Ihnen ausführlich die Vorteile der Hyperledger-Fabric-Blockchain und wie Sie diese in der SAP Cloud Platform aufsetzen können. Eine ausführliche Leseprobe zum Buch stellt der Verlag online bereit.