Skip to content
iotfedsproject edited this page Feb 20, 2024 · 2 revisions

Blockchain as a Service (BaaS)

Εξ ’ορισμού το blockchain αποτελεί ένα αποκεντρωμένο σύστημα, με πολλαπλούς κόμβους που ο καθένας τρέχει ξεχωριστά και επικοινωνεί με τους υπόλοιπους. Στο Hyperledger Fabric αυτό επιτυγχάνεται με πολλαπλά Docker containers. Τα βασικά δομικά στοιχεία του δικτύου του HLF είναι οι peers (κάθε peer αποτελεί και έναν κόμβο του δικτύου), τα Certificate Authorities (CAs) και οι Orderer peers (ο Orderer είναι απαραίτητο δομικό στοιχείο του Fabric). Κάθε peer και CA τρέχει ξεχωριστά στο δικό του container, εξασφαλίζοντας έτσι ότι αν ένας κόμβος του δικτύου δεν είναι διαθέσιμος εξαιτίας κάποιας αστοχίας, οι υπόλοιποι κόμβοι θα συνεχίσουν να λειτουργούν κανονικά. Επιπρόσθετα, κάθε Smart Contract (SC), ή στη γλώσσα του Fabric chaincode, τρέχει σε δικό του container. Πέραν αυτού, κάθε chaincode εγκαθίσταται σε όλους τους κόμβους του δικτύου έτσι ώστε διαφορετικές κλήσεις σε smart contracts να απαντώνται από έναν τυχαίο κόμβο. Επομένως, κάθε chaincode μπορεί να τρέχει σε πολλαπλά containers, ένα container δηλαδή για κάθε κόμβο στον οποίο εκτελείται. Το δίκτυο με όλα τα components του, δηλαδή όλα τα Docker containers, τίθενται σε λειτουργία με τη βοήθεια του Docker Compose. Το Docker Compose είναι ένα εργαλείο που στόχο έχει τον ορισμό και την λειτουργία εφαρμογών που βασίζονται σε πολλαπλά containers. Με το Docker Compose είναι δυνατό να χρησιμοποιήσουμε ένα είδος αρχείου (.yaml) στο οποίο περιέχονται όλες τις απαραίτητες πληροφορίες για τη λειτουργία κ τον ορισμό των διαφόρων containers που θα αποτελέσουν το δίκτυο του blockchain και με μία εντολή να δημιουργηθεί όλο το δίκτυο. Στην μέχρι τώρα υλοποίηση μας για τη διαχείριση των ομοσπονδιών και χρηστών, έχουμε έναν αριθμό από containers, τα οποία αναφέρονται παρακάτω:

  • 2 containers για τα CAs.
  • 5 containers για τους τέσσερις κόμβους (peers) του δικτύου.
  • 4 containers για το SC που είναι υπεύθυνο για τη διαχείριση των χρηστών.
  • 4 containers για το SC που είναι υπεύθυνο για τη διαχείριση των ομοσπονδιών. Το σύστημα χρησιμοποιεί την έκδοση 2.3 του Hyperledger Fabric. Για την εγκατάστασή του πρέπει να ακολουθηθούν τα παρακάτω βήματα:
  1. Εγκατάσταση των προ απαιτούμενων του fabric ακολουθώντας πιστά τις οδηγίες στην βιβλιογραφία.
  2. Λήψη του αποθετηρίου του BaaS με την εντολή «git clone https://colab-repo.intracom-telecom.com/colab-projects/iotfeds/baas/baas.git».
  3. Εγκατάσταση των binaries και docker images όπως εξηγείται στην βιβλιογραφλια, κατά την ανάπτυξη του λογισμικού οι τελευταίες εκδόσεις ήτανε Fabric v2.3.3 και Fabric CA v1.5.2, οπότε η κατάλληλη εντολή είναι «curl -sSL https://bit.ly/2ysbOFE | bash -s -- 2.3.3 1.5.2».
  4. Στη συνέχεια κάποιος πρέπει να πλοηγηθεί στο ευρετήριο «test-network» από ό-που πρέπει διαδοχικά να σηκωθούνε τα containers των peers του δικτύου και έπει-τα αυτά που περιέχουν τα chaincodes. Για διευκόλυνση υλοποιήθηκε βοηθητικό script που εκτελεί με την σωστή σειρά τις απαραίτητες εντολές, συνεπώς για τα πα-ραπάνω αρκεί η εντολή «./net-up-and-contracts.sh».
  5. Το επόμενο βήμα είναι να σηκωθεί το API του BaaS το οποίο βρίσκεται στο ευρε-τήριο «/asset-transfer-basic/application-javascript». Αφού πλοηγηθεί εκεί κάποιος σε ξεχωριστό terminal πρέπει να ελέγξει αν υπάρχει αρχείο με το όνομα «package-lock.json» καθώς και ευρετήρια με ονόματα «node_modules» και «wallet». Σε περίπτωση που υπάρχει κάποιο από αυτά πρέπει να διαγραφεί.
  6. Για λόγους ασφαλείας, το αρχείο που περιέχει το private key με το οποίο υπογρά-φονται tokens για δικαίωμα ψήφου, δεν υπάρχει στο αποθετήριο και κάποιος πρέ-πει να το δημιουργήσει πριν σηκωθεί η εφαρμογή. Στο ίδιο ευρετήριο πρέπει να δημιουργηθεί αρχείο με όνομα «.env» που περιέχει την παράμετρο «TO-KEN_SECRET» η οποία θα πρέπει να έχει ως τιμή ένα ικανοποιητικά μεγάλο και τυχαίο hash, για παράδειγμα «TO-KEN_SECRET=8834SKV59noweRN08vGTYklm34ropzg5188»
  7. Ο αυτοματοποιημένος nodemailer, θα πρέπει να ρυθμιστεί ώστε να στέλνει σωστό σύνδεσμο στους χρήστες για να μπορούνε να ψηφίσουνε. Προκειμένου να γινειί αυτό κάποιος πρέπει να βρει το παρακάτω αρχείο: asset-transfer-basic/application-javascript/nodemailer/node_modules/nodemailer/sendmail.js και στην γραμμή 35 να αντικαταστήσει την λέξη localhost με την διεύθυνση IP του υ-πολογιστή του, π.χ «let url = "http://10.10.0.2:3000/";» αντί για «let url = "http://localhost:3000/";».
  8. Στο ευρετήριο «/asset-transfer-basic/application-javascript» πρέπει να τρέξουν η εντολή «npm install» και μετά την ολοκλήρωση της η εντολή «node index.js».
  9. Το τελευταίο βήμα είναι να σηκωθεί η εφαρμογή που περιέχει το voting GUI. Σε ξεχωριστό terminal πρέπει να γίνει πλοήγηση στο ευρετήριο «asset-transfer-basic/application-javascript/client» και να τρέξει η εντολή «npm start».
Clone this wiki locally