Hyperledger Blockchain ist eine von drei Protokollen, die in Azure für den Aufbau eines Blockchain Netzwerkes genutzt werden können. In diesem Beitrag wird die Verwendung des Hyperledger Fabric Protokolls beschrieben. Dazu wird eine Hyperledger Blockchain erzeugt und die wichtigsten Konfigurationsmerkmale beschrieben.

Hyperledger Blockchain in Azure – How to start

Die Grundlagen zur Blockchain Technologie und zu Hyperledger habe ich in diesem Blog https://blog.dataone.de/2018/02/digitalisierung-digitale-transformation-und-disruption/ beschrieben. Ich halte Hyperledger für zukunftsfähig, weil dieses Protokoll die Implementierung von Smart Contracts ermöglicht. Deren prototypische Umsetzung werden ich in einem weiteren Blog beschreiben und zeigen, wie man mit dem Hyperledger Composer schnelle Prototypen entwickeln kann.

In der Blockchain Technologie gibt es zwei prinzipiell getrennte Rollen, die des Administrators und die des Entwicklers von Smart Contracts oder Anwendungen, die „auf“ der Blockchain laufen. In diesem Blog wende ich mich zunächst an die Leser, die die Rolle des Administrators einnehmen. Aber auch für Entwickler ist der Beitrag interessant, weil diese immer auch wissen müssen, auf welcher Technologie sie „operieren“.

Blockchain mit Hyperledger Fabric

Aus technologischer Sicht besteht eine Blockchain aus einer Komposition von Datenbanken in einem verteilten System, Kryptotechnologien und Protokollen. Das Thema für diesen Blog ist der Einsatz Hyperledger Fabric, eines von drei Protokollen, die Microsoft in Azure zur Verfügung stellt. Ein Hyperledger Netzwerk besteht aus drei Knotentypen, deren Zusammenspiel es ermöglicht, Smart Contract umzusetzen. In diesem Zusammenhang möchte ich nochmal deutlich machen, dass an einem Smart Contract immer bekannte Personen oder Institutionen beteiligt sind. Das Hyperledger Fabric Protokoll nennt diese Komponente der Blockchain Peers. Peers möchten die Vorteile der Blockchain nutzen, um Transaktionen erfolgreich und vertrauenswürdig abwickeln zu können. Dabei verpflichten sich die Peers, die „Regeln“ des Smart Contracts einzuhalten bzw. der Contract sorgt programmatisch für deren Umsetzung.

Hyperledger Netzwerkknoten

Eine Azure Implementierung des Hyperledger Fabric Protokolls besteht aus drei Knotentypen:

  • Member Nodes
  • Order Nodes
  • Peer Nodes

Auf den Member Nodes läuft die Verwaltung der an einem Smart Contract beteiligten Members. Die Implementierung dieses Knotentyps erleichtert dem Administrator die Verwaltung der Members. Er muss sich nicht um die notwendigen Zertifikate und die Validierungen der Identität des Members kümmern. Ein guter Beitrag hierzu kann hier nachgelesen werden.

Auf den Order Nodes läuft der Kommunikationsservice, Ordering Service genannt. Dieser stellt sicher, dass Transaktionen gesichert und manipulationsfrei durchgeführt werden können. Über sogenannte Chanels kommunizieren die Members und die Peer Nodes miteinander. Dabei werden Transaktionen angestoßen und bestätigt. Mehr Details hierzu finden man hier.

Auf den Peer Nodes werden die Transaktionen bestätigt. Hier liegt dann auch die verteilte Datenbank, die Blockchain, in diesem Zusammenhang Ledger genannt. Die Peers erhalten Blöcke mit Transaktionen vom Ordering Service und verwalten den Status des Ledgers.

Hyperledger Netzwerk anlegen und konfigurieren

Das hier beschriebene Netzwerk besteht in der Minimalkonfiguration aus folgenden Komponenten:

  • vier virtuelle Maschinen, VM
  • ein virtuelles Netzwerk, VN, mit einem Loadbalancer
  • eine öffentliche IP Adresse
  • und eine Security Gruppe

Um das hier beschriebene Netzwerk aufzubauen, benötigt man eine Azure Subskription, die es erlaubt, virtuelle Maschinen zu erstellen. Zusätzlich muss die Möglichkeit gegeben sein, einen Standard Storage Account zu erzeugen.

Und so gehen Sie vor:

  • Azure Portal öffnen und dann mit ‘+’ eine neue Ressource erzeugen
  • Geben Sie in das Dialogfeld Hyperledger Fabric Consortium ein und klicken Sie anschließend auf den Button Create.
  • Jetzt müssen die unten gezeigten Konfigurationsmasken ausgefüllt werden. Übernehmen Sie zunächst alle Standardeinstellungen.
Hyperledger Blockchain - Konfiguration in 4 Schritten
Hyperledger Konfiguration in 4 Schritten

Nachdem alle Konfigurationsparameter ausgefüllt sind, wird eine Validierung durchgeführt. Wenn diese erfolgreich ist, generiert das Portal eine Zusammenfassung, die nochmal alle Konfigurationsparameter aufführt.

Konfigurationsübersicht Hyperledger Blockchain
Konfigurationsübersicht Hyperledger Blockchain

Der Administrator kann nun ein Template für das automatische Deployment herunterladen und dabei zwischen verschiedenen Techniken wählen. In der folgenden Grafik habe ich mich für das PowerShell Script entschieden.

Beispiel eines Deploymentscript mit Powershell

Blockchain Deployment Script

Komponenten der Konfiguration

Beim Erzeugen der Hyperledger Blockchain wurde eine neue Resource Group angelegt. In meinem Beispiel ist das die Gruppe DoBlockchain. Wechseln Sie zu dieser Gruppe in die Übersichtsansicht und gruppieren Sie nach Group by typ. In der folgenden Grafik können Sie die oben bereits aufgeführten Komponenten erkennen. Sie sehen hier ein Virtuelles Netzwerk, VM, mit einem Load Balancer, vier Netzwerkinterfaces, einer Security Gruppe und 4 virtuellen Maschinen sowie eine öffentlichen IP Adresse.

Komponenten des Hyperledger Netzwerks
Komponenten des Hyperledger Netzwerks

Die Virtuellen Maschinen implementieren den Memberknoten, einen Orderer Knoten und zwei Peer Knoten. Diese minimale Konfiguration kann natürlich bei Bedarf erweitert werden. Die Maschine mit der Endung ca0 implementiert den Certificate Authority Service mit dessen Hilfe ECDSA  Zertifikate erstellt werden können. Generell kann man die Funktionalität der VMs an den Endungen erkennen. Auf den VMs ist jeweils eine Ubuntu Distribution installiert.

Deployments des Netzwerkes

In diesem Kapitel werde ich auf einige relevante Settings der installierten Komponenten eingehen. Dazu öffnet man in der Übersicht zur Gruppe die Deployments. Hier werden die Templates zu den Komponenten und das Netzwerk selbst angezeigt.

Deployments der Blockchain
Deployments

Beim Klick auf die Blockchain erhalten Sie eine Übersicht zum Deployment. Sie können über die aufgeführten Links weitere Settings anzeigen.

  • Inputs
  • Outputs
  • Template

Im Inputs Link werden die Settings der Blockchain nochmal aufgelistet. Für die Entwicklung von Smart Contracts ist das Ergebnis des Outputs wichtig. Dieser zeigt drei Items an:

  • API-Endpoint
  • das PREFIX
  • ein ssh Command String.
Settings zur Unterstützung der Entwicklung von Smart Contracts
Anwendungsrelevante Settings

Die Adresse des API-ENDPOINT kann benutzt werden, nachdem eine Anwendung auf der Blockchain installiert wurde. Es handelt sich also um die API Schnittstelle für Webanwendungen, die den Benutzers den Zugriff, lesend und schreibend, auf die Blockchain und damit auf die Smart Contracts ermöglichen.

Das Prefix ist ein eindeutiger String, der zur Adressierung der Blockchain verwendet wird. Dieser String wird in der URL der Blockchain als Sub Level genutzt.

Mit dem gezeigten ssh Kommando kann man in der Powershell eine Verbindung zur ersten VM aufbauen. Auf dieser VM läuft der Member Service. Hier ist der Member Knoten von Hyperledger Fabric implementiert. Mit dem gleichen Kommando können alle anderen Knoten adressiert werden. Dazu muss lediglich der Port um den Wert Eins erhöht werden. Mit 3001 würde man also den zweiten Knoten im Netz adressieren. In unserem Beispiel wäre das dann der Order Knoten.

SSH Login auf die Zentralverwaltung der Blockchain

SSH Login auf den ersten Knoten des Hyperledger Netzwerks

Fazit

Sie haben gesehen, dass man eine Hyperledger Blockchain in Minuten erzeugen kann. Mit Hilfe von ssh können Administratoren auf die Knoten des Netzwerkes zugreifen und diese verwalten. In der Dokumentation von Microsoft heißt es optimistisch, dass man sich nun auf die Entwicklung konzentrieren kann. Mit Hilfe der Azure Blockchain Workbench ist zwar eine komfortable Entwicklung mit Visual Studio möglich, allerdings wird aktuell nur Ethereum unterstützt.

 

 

Weiteres