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). In diesem Blogpost geht es um das achte Kapitel aus dem Buch, in dem zwei Beispielanwendungen für die MultiChain entwickelt werden.


Im letzten Blogpost hatten wir ein einfaches Pharma-Inventar auf Basis von MultiChain entwickelt. In diesem Blogpost soll es um ein komplexeres Beispiel zur Simulation eines dezentralen Energiemarktes gehen, analog zum selben Beispiel, welches bereits mit Hyperledger Fabric umgesetzt wurde.

Dieses Beispiel wird in MultiChain 1.0 entwickelt, und hat somit keine Unterstützung für Smart Contracts – die Business-Logik wird deswegen in eine Node.JS-basierte Middleware ausgelagert. Ein SAPUI5-basiertes Frontend wird als Benutzeroberfläche dargestellt. Damit entspricht die Architektur der Anwendung auch wieder dem bekannten Entwurfsmuster Model-View-Controller (MVC):

  • die Blockchain ist das Datenmodell,
  • die Node.JS-Middleware ist der Controller,
  • das SAPUI5-Interface ist der View.

Eine eigene Kryptowährung

MultiChain unterstützt die Schaffung eigener Kryptowährungen, was im Rahmen dieses Beispiels genutzt wird. Die Erzeugung einer eigenen Kryptowährung wird durch die initiale Überweisung an eine Empfängeradresse quasi aus dem Nichts geschaffen. Per folgenden RPC-Aufruf an die MultiChain werden zum Beispiel 1000 virtuelle SAPCoins an die Adresse 17UFFkEkTvw5nGKA9sPXRWV75G2jd3m7GLuU7r versendet:

{"method": "issue", "params":

["17UFFkEkTvw5nGKA9sPXRWV75G2jd3m7GLuU7r","SAPCoins",1000]}

 

Dass die Ausgabe erfolgreich war, kann man im Dashboard des Knotens nachlesen, da die angegebene Adresse die des Knotens ist:

(c) Rheinwerk Verlag

Der Knoten kann wiederum diese Coins weiter verteilen. Dazu bedarf es weiterer Teilnehmer, die durch Empfängeradressen gekennzeichnet sind.

Erzeugen neuer Empfängeradressen

Das Erzeugen neuer Teilnehmer ist gleich dem Erzeugen neuer Empfängeradressen. Entsprechende Aufrufe stellt die MultiChain-API per RPC bereit:

{"method":"getnewaddress", "params":[]}

 

Dies erzeugt eine neue Empfängeradresse, an die Coins weitergeleitet werden können. Davon benötigen wir vier Stück, um alle geplanten Teilnehmer simulieren zu können.

Rechtevergabe

Der nächste Schritt ist die Vergabe von Rechten für jede Adresse zum Empfang und Versand von Assets:

{"method":"grant",

"params":["14UsV3P5BHjbWP2aS6hRyrBRwc5VxLpsmeFCSd",

"connect,send,receive"]}

 

Obiger Aufruf vergibt die Rechte zum Konnektieren, Senden und Empfangen von Assets und somit unserer neu geschaffenen Kryptowährung. Das Dashboard des Knotens bestätigt die vergebenen Rechte:

(c) Rheinwerk Verlag

 

Versenden von Assets an eine Adresse

Der Aufruf zum Versand von Assets an eine Empfängeradresse lautet „send“ bzw. „sendtoaddress“. Folgender Aufruf versendet 50 Coins vom Konto des Ausführenden an die angegebene Adresse:

{"method":"sendasset", "params":[

"14UsV3P5BHjbWP2aS6hRyrBRwc5VxLpsmeFCSd", "SAPCoins", 50]}

 

Mit diesem Aufruf können Coins an die Teilnehmer verteilt werden, so dass jeder denselben Kontostand für den Handel auf dem dezentralen Energiemarkt hat.


Dezentralisierter Energiemarkt

Der dezentralisierte Energiemarkt simuliert wieder den Kauf und Verkauf von Stromangeboten. Da die Teilnehmer am Energiemarkt wieder nur simuliert werden und nicht wirklich existieren, wird eine Datei namens user.json angelegt, die die Informationen der Nutzer in Form einer Liste von JSON-Objekten enthält, die die Nutzer repräsentiert.

Ein Eintrag sieht wie folgt aus und enthält neben der userId zur Identifikation des Teilnehmers auch seine Adresse, sowie seine kryptographischen Schlüssel, die zum Versand von Assets, also Bezahlen benötigt werden:

[{

"userId": "fredrika93ozumv",

"userName": "Fredrika Riley",

"openingBalance": 50000,

"address": "1FdJ7JFdwcnstM8zwGgQkAx9SQVR6FJnNPqyxH",

"pubkey": "030011d430958661c39a4c95927f6a348b61c6a

f54a6285e7d68a6f9f21a412922",

"privkey": "VEY9nFQwGoXXJAk7CrH3B1fchdyKA9Fvo9bkDoLV

hNXVescwDoAza13z"

},

…

]

 

Diese Datei wird beim Start der Software eingelesen, und die Objekte werden von der Middleware zur Laufzeit aktualisiert, und bei Bedarf an das Frontend zur Darstellung weitergegeben.

Überprüfen von Kontoständen

Mittels des Befehls „getaddressbalances“ können die Kontostände der Teilnehmer in der Blockchain überprüft werden. Als Parameter wird eine Liste der Adressen mitgegeben, für die Auskunft erteilt werden soll:

{"method":"getaddressbalances", "params":[

"14UsV3P5BHjbWP2aS6hRyrBRwc5VxLpsmeFCSd"]}

 

Stream in der Blockchain

Die Angebote der Teilnehmer und die Assets werden in der Blockchain verwaltet. Dazu wird zu Beginn ein eigener Stream namens „EnergyMarket“ eingerichtet, um dort die Daten abzulegen. Die Existenz des Streams in der Blockchain ist der Hinweis, dass die Plattform bereits einmal gelaufen ist und richtig eingerichtet wurde. Fehlt der Stream, so muss dieser erst eingerichtet, und die Vergabe des initialen Guthabens sowie der Rechte an die Teilnehmer erfolgen.


Die Node.JS Middleware

Die Middleware hat in diesem Projekt mehr Bedeutung, da sie viele Aufgaben übernehmen muss, die normalerweise bei den Smart Contracts in der Blockchain angesiedelt wären. Sie prüft zum Beispiel, ob die Blockchain bereits richtig eingerichtet wurde und holt dies bei Bedarf nach. Auch verwaltet sie die Profile der Teilnehmer, vergibt ihnen das initiale Vermögen und erteilt ihnen Rechte zum Versand und Erhalt von Assets.Sie prüft Käufe und Verkäufe der Teilnehmer, und leitet diese dann an die Blockchain weiter, die die eigentlichen Transaktionen zum Versand und Erhalt der Coins erhält.

Der große Unterschied in diesem Beispiel ist, dass die Teilnehmer des Energiemarktes über eine tatsächliche Kryptowährung verfügen, die über die Blockchain verwaltet wird.

Die SAPUI5-Oberfläche

Die SAPUI5-Oberfläche unterscheidet sich nicht von der Version mit Hyperledger Fabric, und spricht zur Datenabfrage mit der Middleware, die wiederum die Blockchain abfragt. Erstellte Angebote der Teilnehmer werden in der Blockchain gespeichert, und ihr Status-Attribut zeigt an, ob das Produkt gekauft wurde oder nicht.

Weitere Artikel dieser Serie finden sie hier:

 

Wollen Sie mehr zur SAP Cloud Platform und der Funktionsweise der Blockchains erfahren? In unserem Buch „Blockchain mit SAP“ erläutern wir Ihnen ausführlich die Funktionsweise und demonstrieren Ihnen anhand zahlreicher Beispiele die Vorzüge dieser innovativen Technologie. Eine ausführliche Leseprobe zum Buch stellt der Verlag online bereit.
Wollen Sie mehr über die Möglichkeiten von MultiChain für Ihr Unternehmen erfahren? In unserem Buch „Blockchain mit SAP“ erläutern wir Ihnen ausführlich die Vorteile von MultiChain-basierten Blockchainlösungen. Eine ausführliche Leseprobe zum Buch stellt der Verlag online bereit.

 

S/HANA Studie Banner

SAP S/4: Studie zur Transformation

Die Studie „Erwartungen an S/4HANA in 2022" von techconsult und CamelotITLab zeigt Stolpersteine der Migration und wie sie vermieden werden können. Mit Daten von 200 Unternehmen aus Deutschland.

Hier geht es zum Download

Empfohlene Artikel

Logistics

Das 9. „R“ der Logistik – Effizienzfalle Ausschreibungsprozess

Mit zunehmendem Grad an vertikaler Integration werden die acht Rs der Logistik immer wichtiger. Neben den richtigen („R“ steht für …

weiterlesen
Supply Chain Management

Demand-Driven Supply Chain Management: Trends und Ausblick

Der Demand-Driven Radar 2021 von CAMELOT Management Consultants stellt die neuesten Erkenntnisse zur Einführung und zu den Trends im Bereich des …

weiterlesen
New Now in Organizations

Automatierungshindernisse im Einkauf überwinden

Dass der Einkauf seit den 90er Jahren zunehmend als strategische Einheit betrachtet wird, die über Kosteneinsparungen hinaus Mehrwert generieren kann, haben …

weiterlesen

Denken Sie Ihre Value Chain neu mit uns

Kontaktieren Sie uns