Automatisierung der Blockchain praktisch erklärt

von Februar 27, 2018

So automatisieren Sie die Blockchain mithilfe der CA Automic One Automation Platform

Blockchain-Applikationen sind derzeit ein heißes Thema und immer mehr Unternehmen beschäftigen sich mit der Technologie, auch wenn sie noch in den Kinderschuhen steckt.

Vor allem stellen sie sich die Frage, welche Rolle diese neue Technologie für ihren Geschäftsbetrieb spielen könnte und welchen Nutzen sie für das Unternehmen birgt. In diesem Blog-Beitrag möchte ich Ihnen erläutern, wie Sie eine Blockchain-Applikation effektiv mit der CA Automic One Automation Platform verknüpfen und automatisieren können.

Kurze Einführung in Blockchains

Bildlich gesprochen handelt es sich bei einer Blockchain um eine Art Kontobuch („Ledger“). Die durchgeführten Transaktionen (Einnahmen und Ausgaben) werden in dem Kontobuch in Form von Datenblöcken dokumentiert. Bei jeder Transaktion wird ein neuer Datenblock hinzugefügt, der mit dem vorhergehenden Block verknüpft wird. So entsteht eine Kette aus Blöcken, daher „Blockchain“. Die in dem Kontobuch dokumentierten Transaktionen (Einnahmen und Ausgaben) bilden eine eindeutige Kette, was für eine hohe Transparenz des gesamten Prozesses sorgt. Dabei unterliegt das Kontobuch nicht der Kontrolle einer einzelnen Person, Gruppe oder Abteilung. Die Transparenz und Sicherheit der Transaktionen werden dadurch gewährleistet, dass jeder an der Blockchain Beteiligte über eine Kopie des Blockchain-Kontobuchs verfügt.

Mithilfe von Blockchain-Applikationen können Sie die Eigentumsverhältnisse und den Austausch von virtuellen Assets in einem geschäftlichen Netzwerk abbilden. Bei einem solchen Asset kann es sich beispielsweise um eine digitale Münze, eine Fahrzeugzulassung oder einen Besitz handeln. Im Gegensatz zu herkömmlichen Datenbankapplikationen gehören die Daten nicht einer bestimmten Person oder Gruppe und werden auch nicht nur von einer einzigen Applikation genutzt. Jeder der am Netzwerk Beteiligten verfügt über eine eigene Kopie der Daten und kann bei Bedarf Änderungen daran vornehmen. Diese Änderungen erfolgen in Form von Transaktionen, beispielsweise „Besitz erwerben“. Diese Transaktionen führen zur Ausgabe eines Kundencodes, der den Status des Assets entsprechend ändert (beispielsweise Änderung des Eigentümers). Dies wird häufig als „Smart Contract“ bezeichnet. Die Transaktionen werden an alle Netzwerkteilnehmer weitergegeben, erhalten aber erst dann ihre vollständige Gültigkeit, wenn sie von allen Beteiligten bestätigt wurden. Dafür gibt es verschiedene Methoden, der Ansatz ist jedoch grundsätzlich derselbe: Die verschiedenen Teilnehmer führen denselben Code aus und wenn alle zu demselben Ergebnis kommen, wird die Transaktion bestätigt. Mathematische Funktionen sorgen dafür, dass keine Änderungen an einer Transaktion mehr möglich sind, sobald sie in der Blockchain bestätigt wurde. Der Mittelerde-Hyperledger.

Um die Verknüpfung mit der CA Automic One Automation Platform zu veranschaulichen, haben wir mithilfe des Hyperledger Composer, der auf der Plattform Hyperledger Fabric ausgeführt wird, eine sehr vereinfachte Blockchain-Applikation erstellt. Mit Hyperledger Fabric, dessen Funktionen speziell auf Unternehmensapplikationen ausgelegt sind, können Sie Ihre eigenen Blockchain-Netzwerke erstellen und betreiben.

In den folgenden Abschnitten zeigen wir Ihnen:

  • Wie die Blockchain-Applikation modelliert wird und wie sie Transaktionen verarbeitet
  • Wie wir CA Automic One Automation Platform nutzen, um wichtige Transaktionen zu erfassen und automatisierte Workflows zu initiieren
  • Wie wir CA Automic One Automation Platform nutzen, um Transaktionen aus einem automatisierten Workflow in die Blockchain zu integrieren

Die vollständige Applikation sowie die Integrationslösung für die CA Automic One Automation Platform finden Sie auf dem Marktplatz von CA Automation.

Die Blockchain-Applikation

Unser Szenario basiert auf der fiktionalen Welt Mittelerde: Der Konflikt zwischen Gut und Böse ist beendet. Frodo hat den Ring zerstört, die Elben ziehen nach Westen und der Wiederaufbau von Bruchtal nimmt gerade seinen Anfang. Der Mietmarkt explodiert und unterschiedlichste Akteure kaufen und verkaufen Besitztümer in ganz Mittelerde. Um eine transparente Übersicht darüber zu erhalten, wer welche Grundstücke und Gebäude besitzt, haben sich sämtliche Völker geeinigt, eine entsprechende Blockchain-Applikation einzuführen.

blockchain 1

Abbildung 1 – Aufbau der Mittelerde-Applikation (property.cto)

Abbildung 1 zeigt den Aufbau des Netzwerks: Das Asset (asset) „Besitz“ (Property) wird durch eine ID (id), einen Namen (name) und den Ort (location) eindeutig definiert. Zudem ist hinterlegt, ob der Besitz zum Verkauf steht (isForSale) und falls ja, zu welchem Preis (price). Jeder Besitz enthält einen Verweis auf einen Benutzer (user), der als Eigentümer ausgewiesenen ist.

Bei einem Hyperledger-Netzwerk können nur registrierte Benutzer am Netzwerk teilnehmen. Diese werden als Teilnehmer (participants) modelliert. In dem Beispiel haben wir den Teilnehmer „User“ (Benutzer) definiert, der über eine einzigartige ID (id), einen Titel (title) und einen Namen (name) verfügt.

Sämtliche Änderungen an Assets und Teilnehmern erfolgen über Transaktionen. Für unser Beispiel haben wir eine Verkaufstransaktion (Sell) modelliert, die auf den Besitz verweist, der verkauft werden soll, sowie den Preis, den der derzeitige Eigentümer dafür verlangt. Zudem gibt es eine Kauftransaktion (Buy), die auf den Besitz verweist, der gekauft werden soll, in der der neue Eigentümer und der vorgeschlagene Preis enthalten sind. Und schließlich gibt es eine Setup-Transaktion, die Beispieldaten in das Netzwerk einspielt. Das Hyperledger Fabric kann automatisch eine REST API für Transaktionen erstellen, um die einfache Ausführung ausgehend von anderen Applikationen zu ermöglichen.

Wird ein Besitz zum Verkauf ausgeschrieben, gibt das Netzwerk ein entsprechendes Ereignis aus (propertyForSale), in dem zusammengefasst ist, was gekauft werden kann, zu welchem Preis es angeboten wird und wer es verkauft.

In den Sicherheitseinstellungen des Netzwerks (siehe permissions.acl im Quellcode) kann festgelegt werden, wer welche Transaktionen durchführen darf. So lässt sich dort beispielsweise definieren, dass nur die Eigentümer von Besitztümern berechtigt sind, ihren Besitz zum Verkauf zu stellen.

Alle Teilnehmer führen ihre eigene Instanz des Blockchain-Netzwerks aus und erstellen Transaktionen auf ihrer lokalen Kopie des Kontobuches. Diese Transaktionen werden über Code verarbeitet, wodurch die entsprechenden Änderungen im Kontobuch vorgenommen werden. Die Hyperledger-Plattform stellt sicher, dass Änderungen von allen Teilnehmern bestätigt und entsprechend synchronisiert werden.

Schauen wir uns dies anhand eines einfachen Beispiels genauer an:

Blockchain 2

Abbildung 2 – Stand des Netzwerks nach drei Transaktionen

Schritt 1: Die Setup-Transaktion wird ausgeführt. Dabei wird der Besitz „Barad Dur“ angelegt und der Benutzer „Aragorn“ als sein Eigentümer definiert. Der zweite Benutzer im Netzwerk ist „Saruman“.

Schritt 2: Durch die Ausführung einer Verkaufstransaktion (Sell) stellt Aragorn den Besitz Barad Dur zum Verkauf. Der folgende JavaScript-Code wird sowohl von Aragorn als auch von Saruman auf ihren jeweiligen Instanzen der Hyperledger-Applikation ausgeführt. Dabei wird zuerst der Preis für den Besitz Barad Dur aktualisiert und anschließend ein Ereignis ausgegeben, das die Verkaufsabsicht zusammenfasst. Führt die Ausführung des Codes bei Saruman und Aragorn zu denselben Änderungen am Kontobuch, werden die Änderungen für alle wirksam.

Blockchain 3

Abbildung 3 – Code für die Ausführung von Verkaufstransaktionen (Sell)

Schritt 3: Saruman entscheidet sich, Barad Dur zu kaufen, und erstellt eine Kauftransaktion (Buy). Wie in dem folgenden Code zu sehen, wird zuerst überprüft, ob der Besitz wirklich zum Verkauf steht und ob der vorgeschlagene Preis über dem geforderten Preis liegt. Anschließend wird der Besitz dem neuen Eigentümer zugewiesen, sichergestellt, dass er nicht mehr zum Verkauf steht, und der Preis aktualisiert.

Blockchain 4

Abbildung 4 – Code für die Ausführung von Kauftransaktionen (Buy)

Zusammenfassend lässt sich sagen, dass die Mittelerde-Applikation beispielhaft aufzeigt, wie einfache Eigentumsverhältnisse und Besitzübergänge in einer auf Hyperledger Fabric basierenden Blockchain-Applikation abgebildet werden können. Der auf dem Marktplatz von CA Automation bereitgestellte Quellcode veranschaulicht das Abfragekonzept, das eine einfache Abfrage des Stands des Kontobuches ermöglicht.

Verknüpfung mit CA Automic One Automation Platform

Bauen wir unser Mittelerde-Szenario weiter aus, indem wir eine neue Gruppe von Personen ins Spiel bringen, die sich „No Property for Evil“ nennt. Diese möchte sicherstellen, dass kein Besitz in die Hände der ehemaligen Verbündeten von Sauron gelangt. Im ersten Schritt forderte sie eine entsprechende Änderung am Blockchain-Code der Applikation, aber da Änderungen am Code von allen bestätigt werden müssen, wurde ihrer Forderung nicht stattgegeben.

Daher setzte sie auf eine neue Strategie und beauftragte einige Personen mit der Überwachung des Kontobuches. Ihre Aufgabe besteht darin, regelmäßig abzufragen, ob neue Besitztümer zum Verkauf stehen. Soll ein Besitz in einem ehemals von Sauron kontrollierten Gebiet verkauft werden, überprüfen sie über ihre SAP-Applikation ihre finanziellen Ressourcen und veranlassen wenn möglich den Kauf.

Durch die Nutzung der Ereignisengine von CA Automic One Automation Platform und der bestehenden SAP-Verknüpfung sind wir in der Lage, diesen manuellen Prozess vollständig zu automatisieren:

Schritt 1: Zuerst erstellen wir ein Ereignisdefinitions-Objekt in CA Automic One Automation Platform, das dem von der Mittelerde-Hyperledger-Applikation ausgegebenen Ereignis entspricht.

Blockchain 5

Abbildung 5 – Definition der erwarteten Ereignisse (VARA.LEDGER.1)

Schritt 2: Im zweiten Schritt erstellen wir einen API-Schlüssel, der für die Verarbeitung des Ereignisses genutzt wird. Dies empfehlen wir für jede Applikation, die Ereignisse verarbeitet, damit Berechtigungen später bei Bedarf einfach wieder entzogen werden können.

Blockchain 6

Abbildung 6 – curl-Befehl für die Erstellung eines neuen API-Schlüssels

Schritt 3: Für die tatsächliche Ereignisverarbeitung erstellen wir eine separate Erfassungsapplikation, die mit der Hyperledger-Applikation verknüpft ist und zur Erfassung von Ereignissen und deren Weiterleitung an die API für die Ereignisverarbeitung dient.

Blockchain 7

Abbildung 7 – Erfassung von Ereignissen (PropertiesCollector/bizNetEventsListener.js)

Abbildung 7 zeigt, wie Sie Ereignisse aus einem Hyperledger-Netzwerk erfassen können. Die Erfassungsapplikation ruft nun die in dem folgenden Screenshot dargestellte Methode auf. Für die Verarbeitung des Ereignisses wird zunächst die aus dem Hyperledger bezogene Ereignisstruktur auf die von uns in CA Automic One Automation Platform definierte Ereignisstruktur abgebildet.

Blockchain 8

Abbildung 8 – Senden von Ereignissen an One Automation (PropertiesCollector/eventEngine.js)

Schritt 4: Sobald die Verbindung steht, werden die eingehenden Ereignisse über ein Ereignisregel-Objekt überwacht, wie in Abbildung 9 dargestellt. Alle eingehenden Transaktionen werden damit beobachtet, aber die Regel greift nur dann, wenn ein Besitz in Mordor mit einem Preis von unter 1000000 zum Verkauf steht. In diesem Fall initiieren wir den Kauf-Workflow BUY.WORKFLOW und binden die Informationen aus dem Ereignis als PromptSet-Werte darin ein.

Blockchain 9

Abbildung 9 – Erfassung von Verkaufsereignissen

Schritt 5: Bei dem initiierten Prozess handelt es sich um einen Standard-Workflow der CA Automic One Automation Platform. Dieser wird verwendet, um den Kontostand automatisch zu prüfen. Ist das Ergebnis der Prüfung zufriedenstellend (OK), nutzen wir einen REST-Job zur Ausführung einer Kauftransaktion (Buy) im Netzwerk, wie in Abbildung 10 gezeigt.

Blockchain 10

Abbildung 10 – REST-Job zum Kauf eines Besitzes (Buy a property)

Sobald die Regel aktiviert ist, können die Mitglieder der Gruppe „No Property for Evil“ mithilfe der CA Automic One Automation Platform sicherstellen, dass Saurons Verbündete in Mittelerde nie wieder Fuß fassen.

Resümee

Die Umgebung für die Entwicklung von Blockchain-Applikationen ist relativ neu. Für Entwickler birgt diese Umgebung einige bedeutende Herausforderungen.  Nur mit der richtigen Kombination aus Betriebssystem, Docker, JavaScript-Frameworks, Automatisierung und Hyperledger Composer sind sie in der Lage, ein zufriedenstellendes Ergebnis zu erzielen. Abgesehen vom Setup gestaltet sich die Entwicklung einer tatsächlich funktionsfähigen Blockchain-Applikation relativ einfach. Aufgrund der Natur von Blockchain-Applikationen ist es jedoch deutlich schwieriger, Fehler auszumerzen, wenn der Code erst einmal veröffentlicht ist. Wir empfehlen Ihnen daher, bei realen Anwendungen besonderen Wert auf einen gut durchdachten Design- und Qualitätsprozess zu legen.

Fast alle in Geschäftsumgebungen eingesetzten Blockchain-Applikationen müssen mit Applikationen von Drittanbietern sowie Branchenapplikationen interagieren. Das Ereignissystem der Plattform Hyperledger Fabric ermöglicht eine sehr einfache Verknüpfung mit der Ereignisengine der CA Automic One Automation Platform in der Version 12.1. Mithilfe dieser Kombination können Sie die Entwicklung von praktischen Anwendungsfällen mit Blockchain-Netzwerken deutlich beschleunigen.

Probieren Sie es aus – wir freuen uns auf Ihre Rückmeldungen und Ideen!