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:
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:
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:
- 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 – Blockchain-Anwendungen mit Hyperledger Fabric entwickeln
- Blockchain mit SAP – SAP HANA Integration
- 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 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.