Stellen Sie Hyperledger Fabric 1.4 unter AWS bereit

Hyperledger Fabric ist eine Open Source-Blockchain-Plattform der Linux Foundation. Mit ihm können Sie Blockchain-Anwendungen erstellen und den Zugriff und die Berechtigungen für Daten in der Blockchain steuern. Hyperledger Fabric sollte verwendet werden, wenn Sie ein privates Blockchain-Netzwerk erstellen oder Einschränkungen für die Transaktionen festlegen möchten, die jede Seite sehen kann.

In der Dokumentation von Hyperledger Fabric ist die Erstellung eines Blockchain-Netzwerks auf einem Computer mit Docker gut geplant, wobei jedes Netzwerkmitglied ein separater Container ist. Der Vorgang zum Einrichten eines Netzwerks auf mehreren physischen oder virtuellen Maschinen wird jedoch nicht beschrieben. Dies wird in diesem Artikel erläutert.

Unsere Blockchain-Anwendung ist ein Dienst zum Speichern einiger medizinischer Daten von Schul- und Vorschulkindern. Die Daten müssen unverändert bleiben. Sie werden in Form von Informationen über die Impfung und die Vereinbarung des Patienten mit einem bestimmten Arzt präsentiert. Das Netzwerk wird Mitglieder der Eltern (eine Organisation, die die Interessen der Eltern vertritt), des Krankenhauses (ein Krankenhaus, mit dem Kinderärzte Eltern eine Vereinbarung zur Betreuung ihres Kindes / ihrer Kinder abschließen können) und des Kindergartens (ein Kindergarten, für den Gesundheitsberichte und Impfungen angefordert werden können) umfassen oder ein anderes Kind im Krankenhaus).

Amazon verwaltete Blockchain


AWS verfügt über einen Amazon Managed Blockchain-Dienst. Sie können Blockchain-Netzwerke über die Benutzeroberflächen der AWS-Konsole bereitstellen. Nachdem wir jedoch einige Erfahrungen mit Amazon Managed Blockchain gesammelt hatten, mussten wir die Idee aufgeben, den Service in kommerziellen Projekten zu verwenden. Dafür gab es mehrere Gründe. Die wichtigsten sind:

  1. In der von Amazon verwalteten Blockchain war nur die Version von Hyperledger Fabric 1.2 verfügbar. Zum Zeitpunkt dieses Schreibens wird Version 1.4 zum Erstellen von Blockchain-Netzwerken für Unternehmen verwendet. Es erlaubt auch nicht die Verwendung moderner Versionen der Node.js SDK-Tools.
  2. Amazon Managed Blockchain unterstützt die CouchDB-Datenbank nicht, sodass es schwierig ist, Anwendungen zu erstellen, die gespeicherte Daten indizieren.

Wir sind daher der Meinung, dass es besser ist, virtuelle oder physische Server zum Erstellen von Netzwerken mit dem Hyperledger Fabric-Framework zu verwenden.

Über App-Kanäle


Hyperledger Fabric hat das Konzept des "Kanals". Ein Kanal ist ein Subnetz zur Durchführung sensibler Transaktionen. Unsere Anwendung enthält zwei Kanäle.

  • "Elternkrankenhaus". Es ist für Transaktionen zwischen Mitgliedern von Eltern- und Krankenhausorganisationen vorgesehen: Erstellen und Ändern von Krankenakten, Erstellen einer Vereinbarung mit einem Kinderarzt und Unterzeichnen einer Kinderarztvereinbarung.
  • "Elternhospitalkindergarten." Innerhalb dieses Kanals werden Mitglieder von Eltern und Krankenhaus mit Mitgliedern des Kindergartens interagieren. Außerdem werden Berichte auf der Grundlage von Daten aus medizinischen Unterlagen erstellt.

Arbeitsumgebung


Wir werden unser Blockchain-Netzwerk mit Docker Swarm bereitstellen - dies ist das native Docker-System zum Bereitstellen eines Host-Clusters. Wenn Sie noch nie mit Docker (und insbesondere mit Docker Swarm) gearbeitet haben, lesen Sie zuerst dieses Produkt und erfahren Sie, wie Sie Container mit Docker Swarm orchestrieren. In der Dokumentation werden die Grundlagen der Arbeit mit diesen Tools gut beschrieben.

Unser gesamtes Netzwerk befindet sich auf AWS EC2-Servern. Informationen innerhalb des Blockchain-Netzwerks werden in CouchDB gespeichert. Hyperledger Fabric unterstützt auch die LevelDB-Datenbank, aber CouchDB ermöglicht im Gegensatz zu letzterer die Suche nach beliebigen Kriterien in einer Dokumentensammlung. Wir werden auch Fabric Certificate Authority verwenden - dies ist eine modulare Komponente zum Verwalten von Netzwerkkennungen aller Organisationen und ihrer Benutzer. Es ermöglicht die Registrierung von Netzwerkteilnehmern und die Ausstellung von Zertifikaten.

Wir werden vier EC2-Server haben:

  1. Besteller, MySQL DB (zum Speichern von Anwendungsinformationen, die nicht für Krankenakten gelten)
  2. Elternorganisation (Peer0, Peer1), CouchDB, Fabric-CA, CLI
  3. Krankenhausorganisation (Peer0, Peer1), CouchDB, Fabric-CA
  4. Kindergartenorganisation (Peer0, Peer1), CouchDB, Fabric-CA

Erstellen von EC2-Servern unter AWS


Wir brauchen t2.medium-Dienste, um zu funktionieren. Dieser EC2-Servertyp verfügt über ausreichende Rechenleistung, um die gesamte erforderliche Software zu installieren und mit dem Hyperledger Fabric-Tool zu arbeiten. Legen Sie in der Sicherheitsgruppe Konfigurieren den gesamten Datenverkehr und die Quelle auf 0.0.0.0/0, :: / 0 fest.


Abb. 1. Konfigurieren Sie die Sicherheitsgruppe im AWS-Bereich.

Wir haben vier EC2-Server:

  1. ec2-18-232-164-119.compute-1.amazonaws.com
  2. ec2-54-145-203-186.compute-1.amazonaws.com
  3. ec2-54-80-241-117.compute-1.amazonaws.com
  4. ec2-52-87-193-235.compute-1.amazonaws.com

Sie haben natürlich Ihre eigenen Pfade zu EC2-Servern.


Abb. 2. Vorbereitet für den Betrieb von EC2-Servern.

Installieren der erforderlichen Software auf EC2-Servern


Jetzt müssen wir auf jedem EC2-Server Docker und Git installieren. Öffnen Sie der Einfachheit halber vier Registerkarten im Terminal. Gehen wir zu jedem EC2-Dienst über SSH:

Terminal 1:

HOST1=ec2-18-232-164-119.compute-1.amazonaws.com
ssh ec2-user@$HOST1 -i ./key-poc.pem

Terminal 2:

HOST2=ec2-54-145-203-186.compute-1.amazonaws.com
ssh ec2-user@$HOST2 -i ./key-poc.pem

Terminal 3:

HOST3=ec2-54-80-241-117.compute-1.amazonaws.com
ssh ec2-user@$HOST3 -i ./key-poc.pem

Terminal 4:

HOST4=ec2-52-87-193-235.compute-1.amazonaws.com
ssh ec2-user@$HOST4 -i ./key-poc.pem

Führen Sie in jedem Terminal die folgenden Befehle aus:

sudo yum update -y
sudo yum install -y docker
sudo service docker start
sudo docker info
sudo yum install git
sudo usermod -a -G docker ec2-user
newgrp docker

Jetzt haben wir Docker und Git installiert.

Netzwerk


Wir müssen Elemente unseres Netzwerks aus dem Repository klonen. Führen Sie dazu den Befehl in jedem Terminal aus:

git clone https://github.com/nixsolutions/blockchain-poc-network.git network

Wir müssen auch intelligente Verträge aus dem Repository klonen, die die Beziehungen zwischen Netzwerkteilnehmern regeln. Intelligente Verträge werden in der Sprache Golang geschrieben.

Wir führen diese Schritte auf jedem der vier Server aus:

cd network && mkdir chaincode && cd chaincode
git clone https://github.com/nixsolutions/blockchain-poc-medical-contract.git medical-contract
git clone https://github.com/nixsolutions/blockchain-poc-kindergarten-contract.git kindergarten-contract

Im ersten Terminal müssen Kanalkonfigurationsdateien und Zertifikate generiert werden, um Organisationen mit dem Netzwerk zu verbinden:

cd network/poc-network
./1_generate_connection_files.sh
./2_generating_channel_configuration.sh

Kopieren Sie nun die Ordner für Kanalartefakte und Kryptokonfigurationen auf die anderen drei Hosts im Ordner poc-network des übergeordneten Netzwerkverzeichnisses. Hinweis: Wenn Sie Organisationen auf den EC2-Server kopieren, müssen Sie Zertifikate von Drittanbietern aus dem Ordner crypto-config / peerOrganizations entfernen, die sich auf die Arbeit anderer Organisationen beziehen. Wenn Sie beispielsweise auf den Eltern-Host kopieren, müssen Sie den Ordner parent.poc-network.com in diesem Ordner belassen, aber hospital.poc-network.com und kindergarten.poc-network.com löschen.

Erstellen eines Docker-Schwarmstapels


Damit Container, die zu verschiedenen Organisationen gehören und sich auf verschiedenen EC2-Servern befinden, aufeinander zugreifen können, müssen sie zu einem Stapel zusammengefasst werden. Schauen wir uns unser Dateinetzwerk / poc-network / docker-compose-general.yaml an. Es enthält die Konfiguration von Diensten, gibt an, auf welchen Hosts ein bestimmter Dienst (Schlüssel node.hostname) bereitgestellt wird , Aliase (Schlüssel aliases) werden angezeigt .

Wir müssen den Schwarm im ersten Terminal initialisieren:

docker swarm init
docker swarm join-token manager

Ein Token wird angezeigt, um einen anderen EC2-Server an den Stapel anzuschließen. So etwas wie : docker swarm join --token SWMTKN-1-42ml0ohnnbidg8kflgp8xp9dkkus6mn1lslqc15hrxj4tk9e3q-5h4vbzbfk8p90n83oe08gbltf 172.31.46.214:2377.

Jetzt können wir in den verbleibenden Terminals ausführen:

docker swarm join --token SWMTKN-1-2xzco7t7txohnzd09318eczpbgmm8woex80byxptpt1jl5i2ar-bsg37h40xze1gaabg80i96gw2 172.31.38.245:2377

In der Konsole wird eine Meldung angezeigt:

This node joined a swarm as a manager.

Nachdem alle drei Hosts mit Swarm verbunden sind, können wir sie im Terminal des ersten Hosts anzeigen, indem wir den folgenden Befehl ausführen:

docker node ls


Abb. 3. Liste der Server in Docker Swarm.

Im Ordner network / poc-network befindet sich eine .env.template-Datei, in der Sie für jeden Host einen Hostnamen angeben müssen:

ORDERER=ip-172-31-38-245
PARENTS=ip-172-31-43-64
HOSPITAL=ip-172-31-38-130
KINDERGARTEN=ip-172-31-40-157

Um eine .env-Datei zu generieren, müssen Sie die Datei ./3_env_gen.sh ausführen.

Erstellen Sie nun ein Netzwerk mit einem Treiber overlay:

docker network create --driver overlay --attachable stage_byfn

Führen Sie Swarm aus, um einen Stapel basierend auf der Datei docker-compose-general.yaml zu erstellen:

env $(cat .env | grep ^[A-Z] | xargs) docker stack deploy -c docker-compose-general.yaml stage 2>&1

Mit diesem Befehl legen wir auch Umgebungsvariablen fest, die in der ENV-Datei beschrieben sind und für die ordnungsgemäße Funktion des Netzwerks erforderlich sind.

Sie können den Befehl docker service lsim ersten Terminal ausführen . Sie sehen eine Liste aller Dienste, die auf allen unseren EC2-Instanzen ausgeführt werden.


Abb. 4. Liste aller Dienste, die auf allen EC2-Servern ausgeführt wurden.

Wenn Sie in Ihrem Terminal dasselbe sehen wie im Screenshot, ist alles in Ordnung. Führen Sie jetzt unser Netzwerk. Im zweiten Terminal müssen Sie den CLI-Container eingeben (schließlich wird dieser Container auf dem zweiten Host bereitgestellt):

docker exec -ti stage_cli.1.owni217t53m53efjtikb5oa2f /bin/bash

Der Containername kann durch Ausführen des Befehls im Terminal angezeigt werden docker ps.

Im Container führen wir alle unsere Befehle aus der Datei 4_create_channels.sh aus und kopieren sie einzeln auf das Terminal. Im Ordner bin haben wir die Binärdateien zum Erstellen des Netzwerks:

  • Peer-Kanal erstellen - Kanäle erstellen;
  • Peer-Channel-Join - Verbinden eines Peers mit einem Kanal;
  • Peer-Channel-Update - Update-Konfigurationen;
  • Peer Chaincode installieren - Installieren Sie den Codecode.
  • Peer-Kettencode instanziieren - Stellen Sie den angegebenen Kettencode im Netzwerk bereit.

Jetzt können Sie den Container verlassen, indem Sie den Befehl ausführen exit.

Eltern zurück Antrag


Installieren Sie die Anwendung auf dem zweiten Host:

cd ~
git clone https://github.com/nixsolutions/blockchain-poc-backend.git back

Wir müssen auch NodeJS und gcc-c ++ (Compiler) installieren:

curl -sL https://rpm.nodesource.com/setup_10.x | sudo bash -
sudo yum install nodejs
cd back
sudo yum install gcc-c++ -y
npm install

Wir können unsere Datenbank auch über den Administrator mit den folgenden Berechtigungsdaten eingeben:

<HOST_1>:3306(Wo <HOST_1>ist die Adresse des ersten EC2-Servers, auf dem die Datenbank gespeichert ist?)
dev
devpass
poc_database

Es ist auch erforderlich, unsere API-Anwendung mit der Datenbank zu verbinden:

vim ~/back/config/config.json

Weisen Sie dem Schlüssel den richtigen Wert zu host. Unsere Rückanwendung hat Migrationen und Samen vorbereitet. Sie müssen sie ausführen:

npx sequelize-cli db:migrate
npx sequelize-cli db:seed:all

Tabellen sollten in der Datenbank angezeigt werden. Und in der Organisationstabelle sehen wir drei Reihen mit unseren Organisationen - Eltern, Krankenhaus, Kindergarten.

Beim Generieren von Zertifikaten zu Beginn haben wir Dateien für die Verbindung zum Netzwerk für jede Organisation auf dem ersten Host erhalten. Kopieren Sie die Datei connection-parent.json vom ersten Host auf den zweiten. Öffnen Sie dazu ein anderes Terminal aus dem Ordner, in dem sich unser Terminal keybefindet, und führen Sie die folgenden Befehle aus:

HOST1=ec2-18-232-164-119.compute-1.amazonaws.com
HOST2=ec2-54-145-203-186.compute-1.amazonaws.com
scp -i ./key-poc.pem -r ec2-user@$HOST1:~/network/poc-network/connection-parents.json ~
scp -i ./key-poc.pem ~/connection-parents.json ec2-user@$HOST2:~/network/poc-network

Fix exports.hostNamein constants.js (Wert für den aktuellen Host):

vim ~/back/constants.js

Führen Sie unsere Anwendung im zweiten Terminal aus:

npm start

Weisen Sie in der Datei userGenerator.sh HOST_2der Variablen den richtigen Wert zu:

vim ~/back/generators/userGenerator.sh

Als Nächstes müssen Sie ein Skript ausführen, mit dem Benutzer der Elternorganisation erstellt werden:

./back/generators/userGenerator.sh parents

Führen Sie das Skript aus, um medizinische Aufzeichnungen zu generieren:

node ~/back/generators/setCards.js

In der Blockchain werden zwei Karten erstellt, die auch in die SQL-Datenbank in der Kartentabelle geschrieben werden.

Krankenhaus Rückenanwendung


In Analogie zur vorherigen Back-Anwendung müssen wir die Datei platzieren, um eine Verbindung zum Netzwerk auf dem dritten Host herzustellen. Führen Sie dazu im fünften Terminal Folgendes aus:

scp -i ./key-poc.pem -r ec2-user@$HOST1:~/network/poc-network/connection-hospital.json ~
scp -i ./key-poc.pem ~/connection-hospital.json ec2-user@$HOST3:~/network/poc-network

Wir werden unsere Anwendung auf den dritten Host klonen:

cd ~
git clone https://github.com/nixsolutions/blockchain-poc-backend.git back

Installieren Sie NodeJS und gcc-c ++ (Compiler):

curl -sL https://rpm.nodesource.com/setup_10.x | sudo bash -
sudo yum install nodejs
cd back
sudo yum install gcc-c++ -y
npm install

Fix exports.hostNamein constants.js (Wert für den aktuellen Host):

vim ~/back/constants.js

Führen Sie unsere Anwendung im dritten Terminal aus:

npm start

Weisen Sie in der Datei userGenerator.sh HOST_3der Variablen den richtigen Wert zu:

vim ~/back/generators/userGenerator.sh

Als Nächstes müssen wir ein Skript ausführen, mit dem Benutzer der Krankenhausorganisation erstellt werden:

./back/generators/userGenerator.sh hospital

Wir haben jetzt einen zweiten Benutzer in der Benutzertabelle in der Datenbank.

Kindergarten Rückenanwendung


In Analogie zur vorherigen Back-Anwendung müssen wir die Datei platzieren, um eine Verbindung zum Netzwerk auf dem dritten Host herzustellen. Führen Sie dazu im fünften Terminal Folgendes aus:

scp -i ./key-poc.pem -r ec2-user@$HOST1:~/network/poc-network/connection-kindergarten.json ~
scp -i ./key-poc.pem ~/connection-kindergarten.json ec2-user@$HOST4:~/network/poc-network

Wir werden unsere Anwendung auf den dritten Host klonen:

cd ~
git clone https://github.com/nixsolutions/blockchain-poc-backend.git back

Installieren Sie NodeJS und Gcc-c ++ (Compiler):

curl -sL https://rpm.nodesource.com/setup_10.x | sudo bash -
sudo yum install nodejs
cd back
sudo yum install gcc-c++ -y
npm install

Fix exports.hostNamein constants.js (Wert für den aktuellen Host):

vim ~/back/constants.js

Führen Sie unsere Anwendung im dritten Terminal aus:

npm start

Weisen Sie in der Datei userGenerator.sh HOST_4der Variablen den richtigen Wert zu:

vim ~/back/generators/userGenerator.sh

Als Nächstes müssen wir ein Skript ausführen, mit dem Benutzer der Krankenhausorganisation erstellt werden:

./back/generators/userGenerator.sh kindergarten

Wir haben jetzt einen dritten Benutzer in der Benutzertabelle in der Datenbank.

Installieren Sie wkhtmltopdf auf dem zweiten, dritten und vierten EC2-Server


Die Rückanwendung verwendet die Bibliothek wkhtmltopdf, um einen PDF-Bericht über den Gesundheitszustand des Kindes zu erstellen.

Wir müssen libpng installieren - die offizielle Bibliothek für die Arbeit mit Rastergrafiken im PNG-Format. Die Bibliothek ist plattformunabhängig und besteht aus Funktionen, die in C-Sprache geschrieben sind.

Das erste Team wird wkhtmltox installieren - die Open-Source-LGPLv3-Bibliothek zum Rendern von HTML in PDF und verschiedenen Bildformaten mithilfe der QtWebKit-Rendering-Engine:

wget https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox-0.12.5-1.centos7.x86_64.rpm
sudo yum install -y wkhtmltox-0.12.5-1.centos7.x86_64.rpm

Der zweite Befehlsblock lädt die libpng15-Bibliothek herunter und stellt sie bereit:

wget https://sourceforge.net/projects/libpng/files/libpng15/older-releases/1.5.15/libpng-1.5.15.tar.gz/download -O libpng-1.5.15.tar.gz
tar -zxvf libpng-1.5.15.tar.gz
cd libpng-1.5.15

Der dritte Befehlsblock wird benötigt, um den Compiler zu installieren:

sudo yum groupinstall -y "Development Tools"
./configure --prefix=/usr
sudo make install

Sie müssen LibTIFF noch installieren:

sudo yum install -y libtiff

Wir können testen:

wkhtmltopdf https://majestic.cloud majestic.pdf

Jetzt können Sie PDF-Dokumente erstellen und anzeigen.

Ein bisschen über Node SDK


NodeJS-Tools für die Arbeit mit dem Hyperledger Fabric-Netzwerk werden in Form der Pakete "Fabric-Ca-Client -v 1.4.0" und "Fabric-Netzwerk" v 1.4.0 "dargestellt. Alle Dienste der Backend-Anwendung, die über das Node SDK mit dem Netzwerk interagieren, befinden sich im Ordner Dienste im Stammverzeichnis des Projekts.

Informationen zu diesen Tools und ihren Methoden finden Sie in der offiziellen Dokumentation .

Anwendungsgeschäftsprozesse


Jetzt werden wir darüber sprechen, wie Netzwerkmitglieder in dieser Anwendung miteinander interagieren. Alle Prozesse werden in einem UML-Diagramm beschrieben. Lassen Sie uns jeden von ihnen genauer betrachten.


Abb.5. Eine grafische Beschreibung der Geschäftsprozesse in der Anwendung.

Es gibt also mehrere Organisationen im Netzwerk: Eltern, Krankenhaus und Kindergarten.

Ein Mitglied der Eltern erstellt für zwei ihrer Kinder elektronische Gesundheitsakten. Diese Daten werden im Blockchain-Netzwerk gespeichert (und ergänzt). Als nächstes sendet der Elternteil eine Anfrage für eine Vereinbarung mit dem Kinderarzt, der seine Kinder bis zum Erreichen des Erwachsenenalters beobachtet (im Diagramm - Antrag auf Vereinbarung mit einem Arzt ).

Ein Mitglied der Krankenhausorganisation unterzeichnet eine Vereinbarung (im Diagramm - Arzt unterzeichnet eine Vereinbarung ).

Als nächstes sendet der Elternteil eine Anfrage an den Kindergarten mit der Bitte, sein Kind einzuschreiben (in der Abbildung - Anfrage an den Kindergarten, ein Kind aufzunehmen ).


Abb. 6. Eine Seite mit einer Liste der verfügbaren Bildungseinrichtungen im Konto der Eltern.

Kindergarten sieht die Anfrage in der Liste der neuen Anfragen:


Abb. 7. Eine Seite mit einer Liste der Anträge auf Zulassung zum persönlichen Konto der Bildungseinrichtung.

Der Kindergarten muss vor der Entscheidung über die Aufnahme des Kindes sicherstellen, dass sein Gesundheitszustand zufriedenstellend ist. Zu diesem Zweck sendet der Kindergarten eine Anfrage an die Klinik, in der dieses Kind beobachtet wird (im Diagramm - Anfrage zum Kindergesundheitsbericht ). Die Anfrage an den Kinderarzt wird automatisch ausgeführt, nachdem die Anfrage für die Zulassung zum Garten auf die Registerkarte "Akzeptiert" verschoben wurde.


Abb. 8. Eine Seite mit einer Liste der genehmigten Anträge auf Zulassung zum persönlichen Konto der Bildungseinrichtung.

Der Kinderarzt sieht die Anfrage und generiert einen Bericht, der Daten zur Gesundheit des Kindes enthält (im Diagramm - Kindergesundheitsbericht erstellen ).


Abb. 9. Eine Seite mit einer Liste von Anträgen zur Erstellung eines Berichts über den Gesundheitszustand des Kindes im persönlichen Konto des Krankenhauses.

Der Elternteil sieht, dass der Kinderarzt einen Bericht erstellt hat:


Abb. 10. Eine Seite im persönlichen Konto des Elternteils, auf der der Status von Berichten über den Gesundheitszustand des Kindes angezeigt wird.

... und entscheidet über die Gewährung des Zugangs zur Vorschulerziehungseinrichtung zum Anzeigen und Herunterladen des Berichts (im Diagramm - Erlaubnis zum Anzeigen des Berichts erteilen ).


Abb. 11. Ein Popup-Fenster zur Auswahl einer Bildungseinrichtung, in der der generierte medizinische Bericht angezeigt werden kann.

Übergeordnete Klicks auf "Bestätigen":


Abb. 12. Benachrichtigung, dass die ausgewählte Bildungseinrichtung die Erlaubnis erhalten hat, den medizinischen Bericht einzusehen.

In der Liste der Berichte in der Anwendung der Bildungseinrichtung werden Informationen angezeigt, dass der Bericht erstellt wurde und im PDF-Format angezeigt und heruntergeladen werden kann.


Abb. 13. Link zum Herunterladen des Berichts im PDF-Format in der Zeile mit dem genehmigten Antrag.

Hier ist ein Bericht, den Sie in einem neuen Tab auf Ihrem Computer sehen:


Abb. 14. Ein von einem Krankenhausmitarbeiter erstellter Gesundheitsbericht.

Erstellen von Krankenakten und Vereinbarungen mit einem Kinderarzt, Unterzeichnen einer Vereinbarung


Da die Anwendung eher dazu gedacht ist, die Bereitstellung des Netzwerks auf separaten EC2-Servern zu demonstrieren, werden wir einige Befehle aus den vorbereiteten Skripten ausführen.

Erster EC2-Server:

node ~/back/generators/setCards.js

Wir haben uns zuvor mit der Datenbank verbunden. Nach dem Ausführen des Befehls werden zwei Einträge in der Kartentabelle angezeigt. Außerdem wurden Informationen über die medizinischen Daten dieser beiden Kinder in der Blockchain aufgezeichnet.

Von diesem EC2-Server aus müssen wir eine Vereinbarung mit einem Kinderarzt treffen, der die Kinder beobachtet:

node ~/back/generators/createAgreement.js

Diese Vereinbarung muss nun von dem Benutzer unterzeichnet werden, den wir für die Organisation Hospital erstellt haben. Wir führen den Befehl vom zweiten Host aus:

node ~/back/generators/signAgreement.js

Unsere Vereinbarung wird vom Arzt unterzeichnet und wir können weiter an unserer Bewerbung arbeiten. Als nächstes müssen wir die Frontend-Anwendung auf dem zweiten, dritten und vierten EC2-Server installieren.

PS: Sie finden alle Befehle zum Generieren von Benutzern, Karten, Vereinbarungen und Signieren von Vereinbarungen im Ordner ~ / back / generators.

Eltern-Frontend-Anwendung


Führen Sie auf dem zweiten Host aus (auf dem sich die Elternorganisation befindet):

cd ~
git clone https://github.com/nixsolutions/blockchain-poc-frontend.git front

Wir erstellen die .env-Datei und geben den Hostnamen an, auf dem sich unsere Frontend-Anwendung befindet:

vim ~ /front/.env:


VUE_APP_API_BASE_URL='http://ec2-107-22-75-46.compute-1.amazonaws.com:3006/'

Es ist notwendig, die Abhängigkeiten festzustellen:

cd front
npm install

Sie müssen die Anwendung auch erstellen und auf Port 8080 ausführen:

docker build . -t my-app
docker run -d -p 8080:80 my-app

Unsere Anwendung ist verfügbar unter: http://<HOST_2>:8080Wo <HOST_2>ist die Adresse des zweiten EC2-Servers, auf dem sich unsere Anwendung befindet?

Login: parentsPasswort : password.

So wird das Frontend aussehen. Hier sehen Sie Informationen zu den medizinischen Karten, die wir vom Terminal erstellt haben:


Abb. 15. Informationen zu den Krankenakten von Kindern im persönlichen Konto des Elternteils.

Krankenhaus-Frontend-Anwendung


Führen Sie den zweiten Host aus (auf dem sich die Krankenhausorganisation befindet):

cd ~
git clone https://github.com/nixsolutions/blockchain-poc-frontend.git front

Wir erstellen die .env-Datei und geben den Hostnamen an, auf dem sich unsere Frontend-Anwendung befindet:

vim ~ /front/.env:


VUE_APP_API_BASE_URL='http://ec2-3-91-238-161.compute-1.amazonaws.com:3006/'

Es ist notwendig, die Abhängigkeiten festzustellen:

cd front
npm install

Sie müssen die Anwendung auch erstellen und auf Port 8080 ausführen:

docker build . -t my-app
docker run -d -p 8080:80 my-app

Unsere Anwendung ist verfügbar unter: http://<HOST_3>:8080Wo <HOST_3>ist die Adresse des dritten EC2-Servers?

Login: hospitalPasswort : password.

Kindergarten-Frontend-Anwendung


Laufen Sie auf dem zweiten Host (wo sich die Kindergartenorganisation befindet):

cd ~
git clone https://github.com/nixsolutions/blockchain-poc-frontend.git front

Wir erstellen die .env-Datei und geben den Hostnamen an, auf dem sich unsere Frontend-Anwendung befindet:

vim ~ /front/.env:


VUE_APP_API_BASE_URL='http://ec2-107-22-12-137.compute-1.amazonaws.com:3006/'

Es ist notwendig, die Abhängigkeiten festzustellen:

cd front
npm install

Sie müssen die Anwendung auch erstellen und auf Port 8080 ausführen:

docker build . -t my-app
docker run -d -p 8080:80 my-app

Unsere Anwendung ist verfügbar unter: http://<HOST_4>:8080Wo <HOST_4>ist die Adresse des vierten EC2-Servers?

Login: kindergartenPasswort : password.

Fazit


Wir haben untersucht, wie ein Netzwerk von Blockchain-Anwendungen auf mehreren virtuellen oder physischen Servern bereitgestellt wird. Der Artikel soll sicherstellen, dass Sie mit den Grundlagen der Blockchain-Technologie vertraut sind, wissen, was intelligente Verträge sind, und zumindest oberflächlich mit dem Hyperledger Fabric-Framework und seiner Standardanwendung für Fabric-Beispiele vertraut sind.

All Articles