نشر قماش Hyperledger 1.4 على AWS

Hyperledger Fabric هي منصة بلوكشين مفتوحة المصدر من مؤسسة Linux. باستخدامه ، يمكنك إنشاء تطبيقات blockchain والتحكم في الوصول والأذونات للبيانات في blockchain. يجب استخدام Hyperledger Fabric إذا كنت ترغب في إنشاء شبكة blockchain خاصة أو وضع قيود على المعاملات التي يمكن أن يراها كل جانب.

في وثائق Hyperledger Fabric ، يتم إنشاء شبكة blockchain على جهاز واحد باستخدام Docker بشكل جيد ، حيث يكون كل عضو في الشبكة عبارة عن حاوية منفصلة. لكن عملية إنشاء شبكة على عدة أجهزة فعلية أو افتراضية غير موصوفة. سيتم مناقشة هذا في هذه المقالة.

تطبيق blockchain الخاص بنا هو خدمة لتخزين بعض البيانات الطبية لأطفال المدارس ومرحلة ما قبل المدرسة. يجب أن تكون البيانات دون تغيير. سيتم تقديمها في شكل معلومات حول التطعيم واتفاق المريض مع طبيب معين. ستشمل الشبكة أعضاء من الآباء (منظمة تمثل مصالح الوالدين) ، والمستشفى (مستشفى يمكن لأولياء الأمور مع أطباء الأطفال إبرام اتفاقية لرعاية أطفالهم / أطفالهم) ورياض الأطفال (روضة أطفال يمكنها طلب التقارير الصحية والتطعيمات من أجل أو طفل آخر في المستشفى).

تمكن الأمازون blockchain


تمتلك AWS خدمة Amazon Managed Blockchain. يسمح لك بنشر شبكات blockchain باستخدام واجهات مستخدم وحدة تحكم AWS. ولكن ، بعد أن اكتسبت بعض الخبرة في العمل مع Amazon Managed Blockchain ، كان علينا التخلي عن فكرة استخدام الخدمة في المشاريع التجارية. كان هنالك عدة أسباب لهذا. أهمها:

  1. كان إصدار Hyperledger Fabric 1.2 متاحًا فقط في Amazon Managed Blockchain ، وفي وقت كتابة هذه السطور ، تم استخدام الإصدار 1.4 لإنشاء شبكات blockchain للمؤسسات. كما أنه لا يسمح باستخدام الإصدارات الحديثة من أدوات Node.js SDK ؛
  2. لا يدعم Amazon Managed Blockchain قاعدة بيانات CouchDB ، مما يجعل من الصعب إنشاء تطبيقات لفهرسة البيانات المخزنة.

لذلك ، نرى أنه من الأفضل استخدام خوادم افتراضية أو مادية لبناء شبكات باستخدام إطار عمل Hyperledger Fabric.

حول قنوات التطبيق


نسيج هايبر ليدجر بمفهوم "القناة". القناة هي شبكة فرعية لإجراء المعاملات الحساسة. سيكون هناك قناتان في طلبنا.

  • "مستشفى الآباء". وهي مخصصة للمعاملات بين أعضاء الآباء ومنظمات المستشفيات: إنشاء وتعديل السجلات الطبية ، وإنشاء اتفاقية مع طبيب الأطفال ، وتوقيع اتفاقية طبيب الأطفال.
  • "مستشفى الآباء والأمهات". داخل هذه القناة ، سيتفاعل أعضاء الآباء والمستشفى مع أعضاء رياض الأطفال. أيضا ، سيتم إنشاء التقارير على أساس البيانات من السجلات الطبية.

بيئة العمل


سننشر شبكة blockchain الخاصة بنا باستخدام Docker Swarm - هذا هو نظام Docker الأصلي لنشر مجموعة مضيف. إذا لم تعمل أبدًا مع Docker (وخاصة مع Docker Swarm) ، فقم أولاً بالاطلاع على هذا المنتج وكيفية تنظيم الحاويات باستخدام Docker Swarm. و ثائق توضح أساسيات العمل مع هذه الأدوات بشكل جيد.

ستقع شبكتنا بالكامل على خوادم AWS EC2. سيتم تخزين المعلومات داخل شبكة blockchain في CouchDB. يدعم Hyperledger Fabric أيضًا قاعدة بيانات LevelDB ، لكن CouchDB ، على عكس الأخير ، يجعل من الممكن البحث بأي معيار في مجموعة مستندات. سنستخدم أيضًا المرجع المصدق للنسيج - وهو مكون معياري لإدارة معرفات الشبكة لجميع المؤسسات ومستخدميها. يوفر تسجيل المشاركين في الشبكة وإصدار الشهادات.

سيكون لدينا أربعة خوادم EC2:

  1. Orderer، MySQL DB (لتخزين معلومات التطبيق التي لا تنطبق على السجلات الطبية)
  2. تنظيم الآباء (Peer0 ، Peer1) ، CouchDB ، Fabric-CA ، CLI
  3. تنظيم المستشفى (Peer0 ، Peer1) ، CouchDB ، Fabric-CA
  4. منظمة رياض الأطفال (Peer0 ، Peer1) ، CouchDB ، Fabric-CA

إنشاء خوادم EC2 على AWS


نحن بحاجة إلى خدمات t2.medium للعمل. يحتوي هذا النوع من خادم EC2 على قوة حوسبة كافية لتثبيت جميع البرامج اللازمة والعمل مع أداة Hyperledger Fabric. في مجموعة تكوين الأمان ، قم بتعيين كل حركة المرور ، والمصدر - 0.0.0.0/0 ، :: / 0.


رسم بياني 1. تكوين مجموعة الأمان في لوحة AWS.

لدينا أربعة خوادم EC2:

  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

سيكون لديك بطبيعة الحال مساراتك الخاصة لخوادم EC2.


الصورة 2. أعدت لتشغيل خوادم EC2.

تثبيت برنامج أساسي على خوادم EC2


الآن على كل خادم EC2 نحتاج إلى تثبيت Docker و Git. للراحة ، افتح أربع علامات تبويب في الوحدة الطرفية. دعنا نذهب إلى كل خدمة EC2 عبر SSH:

Terminal 1:

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

مخرج 2:

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

محطة 3:

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

الصالة 4:

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

في كل محطة طرفية ، قم بتنفيذ الأوامر التالية:

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

الآن لدينا Docker و Git مثبتين.

شبكة الاتصال


نحن بحاجة إلى استنساخ عناصر شبكتنا من المستودع. للقيام بذلك ، قم بتنفيذ الأمر في كل محطة طرفية:

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

نحتاج أيضًا إلى استنساخ العقود الذكية من المستودع الذي سينظم العلاقات بين المشاركين في الشبكة. العقود الذكية مكتوبة بلغة الجولانج.

نقوم بتنفيذ هذه الخطوات على كل خادم من الخوادم الأربعة:

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

في الوحدة الطرفية الأولى ، نحتاج إلى إنشاء ملفات وشهادات تكوين القنوات لربط المؤسسات بالشبكة:

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

الآن قم بنسخ أدوات القناة ومجلدات تكوين التشفير إلى المضيفين الثلاثة الآخرين في المجلد poc-network في الدليل الرئيسي للشبكة. يرجى ملاحظة: عند نسخ المؤسسات إلى خادم EC2 ، تحتاج إلى إزالة شهادات الطرف الثالث من مجلد crypto-config / peerOrganizations التي تتعلق بعمل المنظمات الأخرى. على سبيل المثال ، عند النسخ إلى مضيف الآباء ، نحتاج إلى مغادرة مجلد الوالدين. poc-network.com في هذا المجلد ، ولكن نحذف hospital.poc-network.com و kindergarten.poc-network.com.

إنشاء رصيف سرب دوكر


لكي تتمكن الحاويات التي تنتمي إلى مؤسسات مختلفة والموجودة على خوادم EC2 مختلفة من الوصول إلى بعضها البعض ، نحتاج إلى دمجها في حزمة. دعونا نلقي نظرة على شبكة ملفاتنا / poc-network / docker-compose-general.yaml. يحتوي على تكوين الخدمات ، ويشير إلى المضيفين خدمة معينة (مفتاح node.hostname) سيتم نشره ، يشار إلى الأسماء المستعارة (مفتاح aliases).

نحن بحاجة إلى تهيئة سرب في المحطة الأولى:

docker swarm init
docker swarm join-token manager

سيظهر رمز مميز لإرفاق خادم EC2 آخر إلى المكدس. شيء من هذا القبيل: docker swarm join --token SWMTKN-1-42ml0ohnnbidg8kflgp8xp9dkkus6mn1lslqc15hrxj4tk9e3q-5h4vbzbfk8p90n83oe08gbltf 172.31.46.214:2377.

الآن يمكننا التنفيذ في المحطات المتبقية:

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

تظهر رسالة في وحدة التحكم:

This node joined a swarm as a manager.

بعد اتصال المضيفين الثلاثة بـ Swarm ، يمكننا رؤيتهم في نهاية المضيف الأول عن طريق تشغيل الأمر:

docker node ls


تين. 3. قائمة الخوادم في Docker Swarm.

في مجلد الشبكة / poc-network يوجد ملف .env.template تحتاج فيه إلى تحديد اسم مضيف لكل من المضيفين:

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

لإنشاء ملف .env ، تحتاج إلى تشغيل ملف ./3_env_gen.sh.

الآن قم بإنشاء شبكة باستخدام برنامج تشغيل overlay:

docker network create --driver overlay --attachable stage_byfn

شغّل Swarm لإنشاء حزمة استنادًا إلى ملف docker-compose-general.yaml:

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

باستخدام هذا الأمر ، نقوم أيضًا بتعيين متغيرات البيئة ، والتي تم وصفها في ملف .env وهي ضرورية لكي تعمل الشبكة بشكل صحيح.

يمكنك تنفيذ الأمر docker service lsفي الطرفية الأولى. سترى قائمة بجميع الخدمات التي يتم تشغيلها في جميع حالات EC2.


الشكل 4. قائمة بجميع الخدمات التي كانت تعمل على جميع خوادم EC2.

إذا رأيت نفس الشيء في جهازك كما في لقطة الشاشة ، فكل شيء على ما يرام. الآن قم بتشغيل شبكتنا. في الوحدة الطرفية الثانية ، يجب عليك إدخال حاوية CLI (بعد كل شيء ، يتم نشر هذه الحاوية على المضيف الثاني):

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

يمكن رؤية اسم الحاوية من خلال تنفيذ الأمر في المحطة docker ps.

في الحاوية ، ننفذ جميع أوامرنا من ملف 4_create_channels.sh ، وننسخها واحدًا تلو الآخر إلى المحطة. في مجلد المحذوفات ، لدينا ثنائيات لإنشاء الشبكة:

  • إنشاء قناة نظير - إنشاء قنوات ؛
  • الانضمام إلى قناة النظير - الانضمام إلى قناة نظير ؛
  • تحديث قناة النظير - تكوينات التحديث ؛
  • تثبيت السلاسل النظيرة - تثبيت الكود ؛
  • نظير سلسلة نظير نظير - نشر رمز السلسلة المحدد على الشبكة.

الآن يمكنك ترك الحاوية عن طريق تشغيل الأمر exit.

الوالدين تطبيق العودة


قم بتثبيت التطبيق على المضيف الثاني:

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

نحتاج أيضًا إلى تثبيت NodeJS و gcc-c ++ (برنامج التحويل البرمجي):

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

يمكننا أيضًا إدخال قاعدة البيانات الخاصة بنا من خلال المشرف مع بيانات التفويض التالية:

<HOST_1>:3306(أين <HOST_1>هو عنوان خادم EC2 الأول الذي يتم تخزين قاعدة البيانات عليه) من
dev
devpass
poc_database

الضروري أيضًا ربط تطبيق API بقاعدة البيانات:

vim ~/back/config/config.json

قم بتعيين القيمة الصحيحة للمفتاح host. أعد تطبيقنا الخلفي الهجرات والبذور. تحتاج إلى تشغيلها:

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

يجب أن تظهر الجداول في قاعدة البيانات. وفي جدول المنظمات سنرى ثلاثة صفوف مع منظماتنا - الآباء ، والمستشفى ، ورياض الأطفال.

عند إنشاء الشهادات في البداية ، تلقينا ملفات للاتصال بالشبكة لكل مؤسسة على المضيف الأول. انسخ ملف connection-parents.json من المضيف الأول إلى الثاني. للقيام بذلك ، افتح محطة طرفية أخرى من المجلد حيث يوجد لنا keyوننفذ الأوامر:

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

الإصلاح exports.hostNameفي constants.js (قيمة المضيف الحالي):

vim ~/back/constants.js

قم بتشغيل تطبيقنا في المحطة الثانية:

npm start

في ملف userGenerator.sh ، عيّن HOST_2القيمة الصحيحة للمتغير :

vim ~/back/generators/userGenerator.sh

بعد ذلك ، تحتاج إلى تشغيل البرنامج النصي الذي سينشئ مستخدمي مؤسسة الآباء:

./back/generators/userGenerator.sh parents

قم بتشغيل البرنامج النصي لإنشاء السجلات الطبية:

node ~/back/generators/setCards.js

سيتم إنشاء بطاقتين في سلسلة الكتل ، والتي سيتم كتابتها أيضًا في قاعدة بيانات SQL في جدول البطاقات.

تطبيق العودة إلى المستشفى


قياساً على التطبيق السابق ، نحتاج إلى وضع الملف للاتصال بالشبكة على المضيف الثالث. للقيام بذلك ، في المحطة الخامسة ، نفذ:

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

سوف نستنسخ طلبنا للمضيف الثالث:

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

تثبيت NodeJS و gcc-c ++ (برنامج التحويل البرمجي):

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

الإصلاح exports.hostNameفي constants.js (قيمة المضيف الحالي):

vim ~/back/constants.js

قم بتشغيل تطبيقنا في المحطة الثالثة:

npm start

في ملف userGenerator.sh ، عيّن HOST_3القيمة الصحيحة للمتغير :

vim ~/back/generators/userGenerator.sh

بعد ذلك ، نحتاج إلى تشغيل برنامج نصي يعمل على إنشاء مستخدمي مؤسسة المستشفى:

./back/generators/userGenerator.sh hospital

لدينا الآن مستخدم ثانٍ في جدول المستخدمين في قاعدة البيانات.

تطبيق العودة رياض الأطفال


قياساً على التطبيق السابق ، نحتاج إلى وضع الملف للاتصال بالشبكة على المضيف الثالث. للقيام بذلك ، في المحطة الخامسة ، نفذ:

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

سوف نستنسخ طلبنا للمضيف الثالث:

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

تثبيت NodeJS و Gcc-c ++ (برنامج التحويل البرمجي):

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

الإصلاح exports.hostNameفي constants.js (قيمة المضيف الحالي):

vim ~/back/constants.js

قم بتشغيل تطبيقنا في المحطة الثالثة:

npm start

في ملف userGenerator.sh ، عيّن HOST_4القيمة الصحيحة للمتغير :

vim ~/back/generators/userGenerator.sh

بعد ذلك ، نحتاج إلى تشغيل برنامج نصي يعمل على إنشاء مستخدمي مؤسسة المستشفى:

./back/generators/userGenerator.sh kindergarten

لدينا الآن مستخدم ثالث في جدول المستخدمين في قاعدة البيانات.

قم بتثبيت wkhtmltopdf على خوادم EC2 الثانية والثالثة والرابعة


يستخدم التطبيق الخلفي مكتبة wkhtmltopdf لإنشاء تقرير PDF عن الحالة الصحية للطفل.

نحن بحاجة إلى تثبيت libpng - المكتبة الرسمية للعمل مع الرسومات النقطية بتنسيق PNG. المكتبة مستقلة عن المنصة وتتكون من وظائف مكتوبة بلغة سي.

سيقوم الفريق الأول بتثبيت wkhtmltox - مكتبة LGPLv3 مفتوحة المصدر لتقديم HTML إلى PDF وتنسيقات صور مختلفة باستخدام محرك عرض QtWebKit:

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

ستقوم الكتلة الثانية من الأوامر بتنزيل مكتبة libpng15 ونشرها:

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

مطلوب الكتلة الثالثة من الأوامر لتثبيت المترجم:

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

لا تزال بحاجة إلى تثبيت LibTIFF:

sudo yum install -y libtiff

يمكننا اختبار:

wkhtmltopdf https://majestic.cloud majestic.pdf

يمكنك الآن إنشاء مستندات PDF وعرضها.

القليل عن Node SDK


يتم تقديم أدوات NodeJS للعمل مع شبكة النسيج Hyperledger في شكل حزم "fabric-ca-client -v 1.4.0" و "شبكة النسيج" v 1.4.0 ". توجد جميع خدمات تطبيق الواجهة الخلفية التي تتفاعل مع الشبكة باستخدام Node SDK في مجلد الخدمات ، في جذر المشروع.

يمكنك أن تقرأ عن هذه الأدوات وطرقها في الوثائق الرسمية .

عمليات الأعمال التطبيقية


سنتحدث الآن عن كيفية تفاعل أعضاء الشبكة مع بعضهم البعض في هذا التطبيق. يتم وصف جميع العمليات في مخطط UML. دعونا نفكر في كل واحد منهم بمزيد من التفصيل.


الشكل 5. وصف رسومي للعمليات التجارية في التطبيق.

لذلك ، هناك العديد من المنظمات على الشبكة: الآباء والمستشفى ورياض الأطفال.

يقوم أحد أعضاء الآباء بإنشاء سجلات صحية إلكترونية لطفلين من أطفالهما. سيتم تخزين هذه البيانات (واستكمالها) في شبكة blockchain. بعد ذلك ، يرسل الوالد طلبًا لاتفاق مع طبيب الأطفال ، الذي سيراقب أطفاله حتى بلوغهم سن الرشد (في الرسم البياني - طلب اتفاق مع طبيب ).

عضو منظمة المستشفى يوقع اتفاقية (في الرسم البياني - الطبيب يوقع اتفاقية ).

بعد ذلك ، يرسل الوالدان طلبًا إلى روضة الأطفال مع طلب تسجيل طفله (في الرسم البياني - طلب روضة أطفال لاستقبال طفل ).


الشكل 6. صفحة تحتوي على قائمة بالمؤسسات التعليمية المتاحة في حساب الوالدين.

يرى رياض الأطفال الطلب في قائمة الطلبات الجديدة:


الشكل 7. صفحة تحتوي على قائمة بطلبات القبول للحساب الشخصي للمؤسسة التعليمية.

يجب على روضة الأطفال قبل اتخاذ قرار بشأن قبول الطفل التأكد من صحته المرضية. للقيام بذلك ، ترسل روضة الأطفال طلبًا إلى العيادة التي يُلاحظ فيها هذا الطفل (في الرسم البياني - طلب تقرير صحة الطفل ). يتم تنفيذ طلب طبيب الأطفال تلقائيًا بعد نقل طلب الدخول إلى الحديقة إلى علامة التبويب "مقبول".


الشكل 8. صفحة تحتوي على قائمة بالطلبات المعتمدة للقبول في الحساب الشخصي للمؤسسة التعليمية.

يرى طبيب الأطفال الطلب وينشئ تقريرًا يحتوي على بيانات حول صحة الطفل (في الرسم البياني - إنشاء تقرير صحة الطفل ).


الشكل 9. صفحة تحتوي على قائمة بالطلبات لإنشاء تقرير عن حالة صحة الطفل في الحساب الشخصي للمستشفى.

يرى الوالد أن طبيب الأطفال قد أنتج تقريرًا:


الشكل 10. صفحة في الحساب الشخصي للوالد ، تعرض حالة التقارير المتعلقة بالحالة الصحية للطفل.

... ويتخذ قرارًا بشأن منح إمكانية الوصول إلى المؤسسة التعليمية لمرحلة ما قبل المدرسة لعرض التقرير وتنزيله (في الرسم البياني - منح الإذن لعرض التقرير ).


الشكل 11. نافذة منبثقة لاختيار مؤسسة تعليمية يمكنها عرض التقرير الطبي الناتج.

ينقر الوالدان على "تأكيد":


الشكل 12. إخطار بأن المؤسسة التعليمية المختارة قد حصلت على إذن لعرض التقرير الطبي.

في قائمة التقارير في تطبيق المؤسسة التعليمية ، تظهر المعلومات أنه تم إنشاء التقرير ومتاح للعرض والتنزيل بتنسيق PDF.


الشكل 13. رابط لتحميل التقرير بصيغة PDF تمشيا مع الطلب المعتمد.

فيما يلي تقرير ستراه في علامة تبويب جديدة على جهاز الكمبيوتر الخاص بك:


الشكل 14. تقرير صحي صادر عن موظف في المستشفى.

إنشاء السجلات والاتفاقيات الطبية مع طبيب الأطفال وتوقيع اتفاقية


نظرًا لأن التطبيق مصمم أكثر لإثبات نشر الشبكة على خوادم EC2 منفصلة ، فسوف نقوم بتنفيذ بعض الأوامر من البرامج النصية المعدة.

خادم EC2 الأول:

node ~/back/generators/setCards.js

لقد اتصلنا سابقًا بقاعدة البيانات. بعد تنفيذ الأمر ، سترى إدخالين في جدول البطاقات. أيضا ، تم تسجيل معلومات حول البيانات الطبية لهذين الطفلين على blockchain.

من خادم EC2 هذا نحتاج إلى إبرام اتفاقية مع طبيب أطفال يراقب الأطفال:

node ~/back/generators/createAgreement.js

يجب الآن توقيع هذه الاتفاقية من قبل المستخدم الذي أنشأناه لمستشفى المؤسسة. نقوم بتنفيذ الأمر من المضيف الثاني:

node ~/back/generators/signAgreement.js

تم توقيع اتفاقيتنا من قبل الطبيب ويمكننا الاستمرار في العمل على طلبنا. بعد ذلك ، نحتاج إلى تثبيت تطبيق الواجهة الأمامية على خوادم EC2 الثانية والثالثة والرابعة.

ملاحظة: يمكنك العثور على جميع الأوامر لتوليد المستخدمين والبطاقات والاتفاقيات وتوقيع الاتفاقيات في المجلد ~ / back / مولدات.

تطبيق الواجهة الأمامية للوالدين


تشغيل على المضيف الثاني (حيث توجد منظمة الآباء):

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

نقوم بإنشاء ملف .env وتحديد اسم المضيف الذي سيتم وضع تطبيق الواجهة الأمامية عليه:

vim ~ /front/.env:


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

من الضروري تحديد التبعيات:

cd front
npm install

يجب عليك أيضًا إنشاء التطبيق وتشغيله على المنفذ 8080:

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

سيكون تطبيقنا متاحًا على: http://<HOST_2>:8080أين <HOST_2>هو عنوان خادم EC2 الثاني الذي يوجد تطبيقنا عليه.

تسجيل الدخول: parentsكلمة المرور: password.

هذا ما ستبدو عليه الواجهة الأمامية. هنا سترى معلومات حول البطاقات الطبية التي أنشأناها من المحطة:


الشكل 15. معلومات حول السجلات الطبية للأطفال في الحساب الشخصي للوالد.

تطبيق الواجهة الأمامية للمستشفى


قم بتشغيل المضيف الثاني (حيث توجد منظمة المستشفى):

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

نقوم بإنشاء ملف .env وتحديد اسم المضيف الذي سيتم وضع تطبيق الواجهة الأمامية عليه:

vim ~ /front/.env:


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

من الضروري تحديد التبعيات:

cd front
npm install

يجب عليك أيضًا إنشاء التطبيق وتشغيله على المنفذ 8080:

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

سيكون تطبيقنا متاحًا على: http://<HOST_3>:8080أين <HOST_3>هو عنوان خادم EC2 الثالث.

تسجيل الدخول: hospitalكلمة المرور: password.

تطبيق الواجهة الأمامية لرياض الأطفال


قم بتشغيل المضيف الثاني (حيث توجد منظمة رياض الأطفال):

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

نقوم بإنشاء ملف .env وتحديد اسم المضيف الذي سيتم وضع تطبيق الواجهة الأمامية عليه:

vim ~ /front/.env:


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

من الضروري تحديد التبعيات:

cd front
npm install

يجب عليك أيضًا إنشاء التطبيق وتشغيله على المنفذ 8080:

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

سيكون طلبنا متاحًا على: http://<HOST_4>:8080أين <HOST_4>هو عنوان خادم EC2 الرابع.

تسجيل الدخول: kindergartenكلمة المرور: password.

استنتاج


لقد درسنا كيفية نشر شبكة من تطبيقات blockchain على عدة خوادم افتراضية أو مادية. تم تصميم المقالة لتجعلك على دراية بأساسيات تقنية blockchain ، ومعرفة ما هي العقود الذكية ، وعلى الأقل سطحيًا على دراية بإطار النسيج Hyperledger وتطبيقه القياسي لعينات النسيج.

All Articles