Optimierung von Smart Contracts Leistungsmessung in der Blockchain mit Hyperledger Caliper

Autor / Redakteur: Thomas Joos / Peter Schmitz

Bei der Entwicklung von Blockchain-Anwendungen spielen Leistung und Stabilität eine große Rolle. Hyperledger Caliper hilft dabei bereits bei der Entwicklung von Smart Contracts und Blockchain-Anwendungen die Leistung zu überwachen.

Mit Hyperledger Caliper können Entwickler von Blockchain-Lösungen Leistungsmessungen für ihre Blockchain durchführen.
Mit Hyperledger Caliper können Entwickler von Blockchain-Lösungen Leistungsmessungen für ihre Blockchain durchführen.
(© Kalyakan - stock.adobe.com)

Die Leistung spielt bei allen Unternehmensanwendungen eine wichtige Rolle. Auch Anwendungen in Blockchain-Umgebungen, zum Beispiel Smart Apps müssen so entwickelt werden, dass sich schnell, stabil und ständig genutzt werden können. Hyperledger Caliper kann die Leistung von Blockchains messen und über die Ergebnisse des Tools eine Referenz für die Planung der Infrastruktur geben.

Caliper bereits in die Entwicklung einbinden

Mit Hyperledger Caliper steht im Hyperledger-Kosmos ein Open Source-Tool zur Verfügung, mit dem Leistung von Blockchain-Apps bereits bei der Entwicklung, aber auch im laufenden Betrieb überwacht werden kann. Caliper ist kein einfaches Entwicklungstool, sondern begleitet den kompletten Lebenszyklus von Blockchains und den darin betriebenen Apps.

Caliper erstellt Berichte und unterstützt Administratoren dadurch bei der Einrichtung und Betrieb. Auch Entwickler können im laufenden Betrieb dadurch profitieren, zum Beispiel wenn neue Versionen eines Smart Contracts implementiert werden. Neben Berichten bringt Caliper auch Ressourcenmonitore mit, die bei der Leistungsmessung unterstützen. Die Ausnutzung der optimalen Leistung spart natürlich auch Ressourcen ein, da Smart Contracts auch mit weniger Leistung betrieben werden können, wenn sie richtig optimiert sind. Dadurch kann bereits frühzeitig sichergestellt werden, dass Smart Contracts optimal und schnell laufen.

Leistungsmessung mit Caliper

Neue IT-Projekte scheitern meistens dann, wenn Anwender die neuen Produkte nicht akzeptieren, weil Stabilität und Leistung nicht optimal sind. Unternehmen, die mit Hyperledger Fabric eine eigene Blockchain aufbauen, oder Entwickler, die dApps und Smart Contracts entwickeln, sollten sich die Möglichkeiten von Hyperledger Caliper genauer ansehen. Mit Caliper können auf Basis von Metriken auch verschiedene Plattformen und Smart Contracts miteinander verglichen werden.

Hier spielt die Verarbeitung der Transaktionen pro Sekunde (TPS) eine Rolle. Diese können mit Caliper über einen Leistungsmonitor überwacht werden. Parallel dazu spielt auch die Latenz in der Blockchain eine Rolle. Auch hier ist Caliper das Tool der Wahl, da auch hier verschiedene Zeiträume und Daten messbar sind, auch für mehrere Blockchains. Dadurch können für verschiedene Blockchains die gleichen Benchmarks genutzt werden. Die Tests werden auch für unterschiedliche Szenarien immer mit den gleichen Bedingungen ausgeführt.

Hyperleder Caliper kann mehrere Blockchains gleichzeitig messen und unterstützt vor allem die Anbindung an Blockchains, die mit Hyperledger Fabric erstellt werden. Aber auch Hyperledger Besu ist mit Caliper zusammen ideal nutzbar. Parallel dazu unterstützt Caliper auch Ethereum und FISCO BCOS.

Modifizierte Ethereum-Clients wie Hyperledger Besu und PegaSys Plus nutzen Technologien aus Ethereum, um die Anforderungen von Unternehmen an die Blockchain zu erfüllen. Dazu gehören unter anderem Datenschutz, Leistung und Skalierbarkeit. Auch Berechtigungen, inklusive einem Rollenmodell und Governance-Vorgaben spielen hier eine wichtige Rolle und können berücksichtigt werden.

Einheitliche Metriken in Caliper

Die Metriken, die Caliper nutzt, sind über den Open Source-Ansatz nachvollziehbar. Dazu kommt die Dokumentation der Metriken. Festgelegt werden die Metriken durch die Hyperledger Performance & Scalability Working Group (PWSG), welche die Metriken auch ständig weiterentwickelt. Die PWSG legt gemeinsame Definitionen für die Metriken fest, mit denen wiederum verschiedene Blockchains gemessen werden können. In einer Caliper-Umgebung können auch mehrere Blockchains angebunden werden, die mit einheitlichen Metriken gemessen werden. Das ermöglicht Vergleiche der Leistung zwischen den Blockchains. Die Metriken können im Whitepaper „Hyperledger Blockchain Performance Metrics“ nachgelesen werden.

Mit Caliper können Anwendungsfälle definiert werden, nach deren Kriterien das Tool über Leistungsindikatoren die Smart Contracts und die anderen Anwendungen in einer Blockchain messen kann. Neben den Transaktionen pro Sekunde (TPS) und der Latenz wird hier auch der Ressourcenverbrauch berücksichtigt. Das hilft bei der Planung der Infrastruktur, der Skalierung und natürlich auch beim optimalen Ausnutzen der vorhandenen Hardware.

Die verschiedenen Hyperledger-Tools arbeiten in den meisten Fällen eng zusammen. So ist es auch bei Fabric, Besu, Sawtooth, Composer, Burrow und Iroha. Auch für diese Hyperledger-Produkte gibt es Adapter, um Caliper zur Messung zu nutzen. Die Entwickler von Caliper legen aber auch Wert darauf, dass auch andere Produkte angebunden werden können. Ein Adapter für Ethereum steht ebenfalls zur Verfügung.

So funktioniert Hyperledger Caliper

Hyperledger besteht im Grunde genommen aus drei verschiedenen Teilen. Die eigentliche Messung wird durch den Caliper-Core vorgenommen und die darin integrierten Module. Dazu kommen die bereits erwähnten Adapter, mit denen die Blockchain-Infrastrukturen an Caliper angebunden werden können. Die dritte Komponente ist das CLI-Paket, mit dem die Umgebung verwaltet wird.

Um eine Umgebung zu messen, müssen zunächst Konfigurationsdateien für die Umgebung erstellt werden. Die Konfigurationsdatei enthält auch Befehle für Abläufe in der Blockchain, die zur Messung genutzt werden. Die Datei kann als YAML-Datei erstellt werden und definiert über verschiedene Parameter die Aufgabe, die Caliper durchführen soll. Die Konfigurationsdatei wird mit der CLI von Caliper in das System geladen. Im Rahmen dieser Integration erstellt Caliper einen Admin-Client und eine Client-Factory.

Auch eine Blockchain-Konfigurarationsdatei ist sinnvoll, mit der die Blockchain, die Smart Contracts und weitere Daten definiert werden. Wird Caliper in einer Container-Umgebung betrieben, kann hier auch ein Docker-File genutzt werden, um die Tests zu konfigurieren, die Container zu erstellen und die Durchführung zu planen. Wie nahezu jedes Tool und Framework von Hyperledger, kann auch Caliper als Docker-Container betrieben werden. Das Image dazu steht im Docker-Hub zur Verfügung und kann mit dem folgenden Befehl heruntergeladen werden:

docker pull hyperledger/caliper

Caliper kann aber auch manuell installiert werden. Die Vorgehensweise dazu ist in der Caliper-Dokumentation beschrieben.

So kommuniziert Caliper mit der Infrastruktur

Die Kommunikation mit der Blockchain-Infrastruktur erfolgt über Adapter, die in Caliper integriert sind. Für die verschiedenen Infrastrukturen, die Caliper unterstützt sind auch Adapter hinterlegt, zum Beispiel für Hyperledger Fabric oder Sawtooth. Es besteht auch die Möglichkeit eigene Adapter zu erstellen. Mit Hilfe der Adapter können verschiedene Infrastrukturen angebunden werden.

Die Client-Factory ist dafür verantwortlich Clients für die Durchführung der Tests zu definieren. Dazu werden die Clients über einen Rate-Controller geleitet, der die Transaktionen pro Sekunden (TPS) steuert, mit denen die Leistungsmessung erfolgen kann. Hier können auch steigende TPS konfiguriert werden, oder feste Werte, mit denen die Messungen durchgeführt werden sollen.

Mit Caliper können Systeme auch maximal belastet werden, um festzustellen wie die Infrastruktur reagiert. Dadurch können auch die Leistungsgrenzen von Blockchain-Infrastrukturen erkannt werden, was bei der Skalierung eine wesentliche Rolle spielt.

Führt Caliper einen Test durch, speichert das Tool alle durchgeführten Transaktionen und erstellt Statistiken. Parallel dazu wird ein Ressourcenmonitor erstellt, mit dem der Verbrauch der Ressourcen gemessen werden kann. Am Ende der Leistungsmessung erstellt Caliper einen Bericht auf Basis dieser Daten. Die Daten der Messung zeigt Caliper auch in der Konsole an. Auch hier findet eine Visualisierung der Testergebnisse statt.

Hyperledger Cello und Caliper

Hyperledger Caliper arbeitet bei der Messung und im Betrieb auch mit Hyperledger Cello zusammen. Cello ist ein Werkzeug zur Verwaltung der Blockchains und des Geschäftsnetzwerks. Das Tool wird dazu genutzt, um Blockchain-Netzwerke zu provisionieren und zu verwalten. In Verbindung mit Caliper können hier auch die Leistung und Stabilität der Anwendungen berücksichtigt werden.

Cello ist vor allem dann sinnvoll, wenn sich ein Blockchain-Netzwerk über verschiedene Infrastrukturen verteilt, aber zentral verwaltet werden soll. Hier spielt die Leistungsmessung eine wichtige Rolle und kann die Grundlage dafür darstellen, um eine perfekt geplante Blockchain-Infrastruktur aufzubauen.

Unabhängig davon, ob die Blockchain-Lösung auf physischer Hardware aufbaut, in der Cloud betrieben wird, auf virtuellen Servern oder in Containern, kann Cello dabei helfen eine zentrale Verwaltung zu gewährleisten. Gleichzeitig kann Caliper die Leistung testen, um echte Vergleiche zu erstellen unter welchen Bedingungen die Blockchain am besten betrieben werden kann.

Hier arbeitet Cello auch mit Orchestrierungslösungen wie Kubernetes oder Docker Swarm zusammen. Das gilt natürlich auch für Caliper. Der Vorteil von Cello besteht außerdem darin, dass das Tool mehrere Netzwerke gleichzeitig verwalten kann. Der Status der angebundenen Systeme wird über ein Dashboard dargestellt. Die Caliper-Berichte können hier ebenfalls eingebunden werden, und ermöglichen dadurch einen umfassenden Überblick, bei gleichzeitiger Verwaltung und Optimierung auf Basis der Ergebnisse von Caliper.

(ID:47320790)

Über den Autor

 Thomas Joos

Thomas Joos

Freiberuflicher Autor und Journalist