From 5a92221cad108b814378165a43ff1ac9ec20ae7b Mon Sep 17 00:00:00 2001 From: Ezerous <ezerous@gmail.com> Date: Tue, 11 Jan 2022 16:15:12 +0200 Subject: [PATCH] refactor: debloat section 4.3 --- .../4.2.2.ui-technologies.tex | 2 - .../4.3.implementation-architecture.tex | 274 +----------------- .../4.3.1.software-units.tex | 9 + .../4.3.1.concordia-contracts-unit.tex | 5 + .../4.3.1.concordia-shared-unit.tex | 6 + .../4.3.1.eth-breeze-unit.tex | 7 + .../4.3.1.eth-drizzle-unit.tex | 7 + .../4.3.1.eth-identity-provider-unit.tex | 5 + .../4.3.2.concordia-application-service.tex | 43 +++ .../4.3.3.concordia-contracts-migrator.tex | 16 + .../4.3.4.concordia-pinner-service.tex | 22 ++ ...5.concordia-contracts-provider-service.tex | 18 ++ .../4.3.6.ganache-service.tex | 9 + .../4.3.7.rendezvous-server-service.tex | 9 + .../4.3.8.service-communication.tex | 26 ++ .../4.3.9.data-flow.tex | 28 ++ thesis.pdf | Bin 9132276 -> 9132398 bytes 17 files changed, 221 insertions(+), 265 deletions(-) create mode 100644 chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units.tex create mode 100644 chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.concordia-contracts-unit.tex create mode 100644 chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.concordia-shared-unit.tex create mode 100644 chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-breeze-unit.tex create mode 100644 chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-drizzle-unit.tex create mode 100644 chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-identity-provider-unit.tex create mode 100644 chapters/4.application-implementation/4.3.implementation-architecture/4.3.2.concordia-application-service.tex create mode 100644 chapters/4.application-implementation/4.3.implementation-architecture/4.3.3.concordia-contracts-migrator.tex create mode 100644 chapters/4.application-implementation/4.3.implementation-architecture/4.3.4.concordia-pinner-service.tex create mode 100644 chapters/4.application-implementation/4.3.implementation-architecture/4.3.5.concordia-contracts-provider-service.tex create mode 100644 chapters/4.application-implementation/4.3.implementation-architecture/4.3.6.ganache-service.tex create mode 100644 chapters/4.application-implementation/4.3.implementation-architecture/4.3.7.rendezvous-server-service.tex create mode 100644 chapters/4.application-implementation/4.3.implementation-architecture/4.3.8.service-communication.tex create mode 100644 chapters/4.application-implementation/4.3.implementation-architecture/4.3.9.data-flow.tex diff --git a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.2.ui-technologies.tex b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.2.ui-technologies.tex index 4bbea95..c5f6070 100644 --- a/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.2.ui-technologies.tex +++ b/chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.2.ui-technologies.tex @@ -2,8 +2,6 @@ Στην παρούσα υποενότητα περιγράφονται όσες τεχνολογίες σχετίζονται με τη διεπαφή του χρήστη (UI), δηλαδή με το Presentation tier. -% TODO: add technologies like redux, sagas - \input{chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.2.ui-technologies/4.2.2.1.react} \input{chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.2.ui-technologies/4.2.2.2.redux} \input{chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.2.ui-technologies/4.2.2.3.redux-saga} \ No newline at end of file diff --git a/chapters/4.application-implementation/4.3.implementation-architecture.tex b/chapters/4.application-implementation/4.3.implementation-architecture.tex index 854eff3..34fef3a 100644 --- a/chapters/4.application-implementation/4.3.implementation-architecture.tex +++ b/chapters/4.application-implementation/4.3.implementation-architecture.tex @@ -1,7 +1,7 @@ \section{Αρχιτεκτονική υλοποίησης} \label{section:4-3-implementation-architecture} -Το σύστημα υλοποιήθηκε χρησιμοποιώντας το μοντέλο αρχιτεκτονικής των μικροϋπηρεσιών. Το μοντέλο των μικροϋπηρεσιών βασίζεται στην αποδόμηση του συστήματος σε μικρές μονάδες, οι οποίες συνεργάζονται ώστε να προσφέρουν ένα ενιαίο αποτέλεσμα. Η προσέγγιση αυτή έχει πολλά πλεονεκτήματα σε σύγκριση με την ανάπτυξη μονολιθικών εφαρμογών % todo: add reference -. Ο βασικός λόγος για τον οποίο επιλέχθηκε η αρχιτεκτονική μικροϋπηρεσιών είναι η ευκολία που προσφέρει στη γρήγορη ανάπτυξη καινούριων χαρακτηριστικών, ταυτόχρονα από διαφορετικά μέλη μίας ομάδας, ασύγχρονα και χωρίς την ανάγκη συνεχής επικοινωνίας και συνεννόησης μεταξύ τους. Αυτό συμβαίνει επειδή κάθε μέρος του συστήματος (υπηρεσία) είναι αυτόνομο και η ανάπτυξή του είναι διαχωρισμένη από το υπόλοιπο σύστημα με το οποίο είναι αδύναμα συνδεδεμένο (loosely coupled). +Το σύστημα υλοποιήθηκε χρησιμοποιώντας το μοντέλο αρχιτεκτονικής των μικροϋπηρεσιών. Το μοντέλο των μικροϋπηρεσιών βασίζεται στην αποδόμηση του συστήματος σε μικρές μονάδες, οι οποίες συνεργάζονται ώστε να προσφέρουν ένα ενιαίο αποτέλεσμα. Η προσέγγιση αυτή έχει πολλά πλεονεκτήματα σε σύγκριση με την ανάπτυξη μονολιθικών εφαρμογών. % todo: add reference +Ο βασικός λόγος για τον οποίο επιλέχθηκε η αρχιτεκτονική μικροϋπηρεσιών είναι η ευκολία που προσφέρει στη γρήγορη ανάπτυξη καινούριων χαρακτηριστικών, ταυτόχρονα από διαφορετικά μέλη μίας ομάδας, ασύγχρονα και χωρίς την ανάγκη συνεχούς επικοινωνίας και συνεννόησης μεταξύ τους. Αυτό συμβαίνει επειδή κάθε μέρος του συστήματος (υπηρεσία) είναι αυτόνομο και η ανάπτυξή του είναι διαχωρισμένη από το υπόλοιπο σύστημα με το οποίο είναι αδύναμα συνδεδεμένο (loosely coupled). Το σύστημα συντίθεται από διάφορες μικροϋπηρεσίες, κάποιες από τις οποίες αναπτύχθηκαν στα πλαίσια αυτής της εργασίας ενώ άλλες αποτελούν δωρεάν λογισμικό ανοιχτού κώδικα. Οι μικροϋπηρεσίες αυτές συνοψίζονται στον παρακάτω πίνακα (πίνακας \ref{table:4-3-microservice-summary}). @@ -53,264 +53,12 @@ \label{figure:4-3-architecture-overview} \end{figure} -% ===== ===== -% Common software units -% ===== ===== -\subsection{Αρθρώματα} \label{subsection:4-3-software-units} - -Στο κεφάλαιο αυτό θα περιγραφούν με μεγαλύτερη λεπτομέρεια τα αρθρώματα που αναπτύχθηκαν. - -\vspace{0.5cm} -\textbf{Άρθρωμα concordia-shared} - -Το άρθρωμα concordia-shared αποτελεί μία βιβλιοθήκη χρήσιμων εργαλείων και σταθερών. Εδώ περιέχεται όλο το λογισμικό το οποίο πρέπει ή είναι επιθυμητό να συμπεριφέρεται με τον ίδιο τρόπο συνολικά στο σύστημα, όπως για παράδειγμα μέθοδοι παραμετροποίησης των υπηρεσιών και μέθοδοι καταγραφής (logging). Το άρθρωμα αυτό χρησιμοποιείται από το άρθρωμα concordia-contracts καθώς και από τις υπηρεσίες Concordia Application, Concordia Pinner και Concordia Contracts Provider. - -% make more sense -Το άρθρωμα αυτό γίνεται διαθέσιμο για χρήση με τη μορφή τοπικής βιβλιοθήκης με τη χρήση της βιβλιοθήκης διαχείρισης μοναδικού αποθετηρίου κώδικα (monorepo) lerna. - -\vspace{0.5cm} -\textbf{Άρθρωμα concordia-contracts} - -Το άρθρωμα αυτό επιτελεί δύο ενέργειες. Αρχικά, είναι το άρθρωμα στο οποίο αναπτύσσονται τα contracts που χρησιμοποιούνται από την εφαρμογή. Το άρθρωμα αυτό αναλαμβάνει τη μεταγλώττιση των contracts από κώδικα γλώσσας Solidity, στην κατάλληλη τελική μορφή JSON. Παρέχονται επίσης σενάρια ενεργειών (scripts) ώστε τα contracts να μεταφορτωθούν σε blockchain καθώς και στην υπηρεσία Concordia Contracts Provider. Αποτελεί επίσης βιβλιοθήκη η οποία μετά τη μεταγλώττιση και μεταφόρτωση των contracts σε blockchain παρέχει τα contract artifacts. Χρησιμοποιείται από τις υπηρεσίες Concordia Application και Concordia Pinner. - -Το άρθρωμα αυτό γίνεται διαθέσιμο για χρήση με τη μορφή τοπικής βιβλιοθήκης με τη χρήση της βιβλιοθήκης διαχείρισης monorepo lerna. - -\vspace{0.5cm} -\textbf{Άρθρωμα eth-identity-provider} - -Η λειτουργία της βάση OrbitDB απαιτεί τη δημιουργία ενός μοναδικού αναγνωριστικού χρήστη (identity). Για την εύκολη εξαγωγή ενός αναγνωριστικού χρήστη το οποίο να είναι μεν μοναδικό αλλά να είναι δυνατός ο επανυπολογισμός, χρησιμοποιήθηκε ο συνδυασμός της διεύθυνσης του χρήστη στο δίκτυο Ethereum με τη διεύθυνση του βασικού contract που χρησιμοποιεί η εφαρμογή. Ο υπολογισμός του συνδυασμού αυτού υλοποιείται από αυτό το άρθρωμα. - -Το άρθρωμα αυτό γίνεται διαθέσιμο για χρήση με τη μορφή βιβλιοθήκης μέσω του αποθετηρίου λογισμικού npm. - -\vspace{0.5cm} -\textbf{Άρθρωμα drizzle} - -Το άρθρωμα drizzle που χρησιμοποιείται στην υπηρεσία Concordia Application είναι μία τροποποιημένη έκδοση της Javascript βιβλιοθήκης Drizzle που προσφέρεται από τη σουίτα εργαλείων Truffle. Η τροποποιημένη βιβλιοθήκη αναπτύχθηκε στα πλαίσια της διπλωματικής με στόχο τη διευκόλυνση της χρήσης του Drizle και την επιδιόρθωση προβληματικών σημείων της πρωτότυπης βιβλιοθήκης. - -Το άρθρωμα drizzle υλοποιεί τις προγραμματιστικές διεπαφές μέσω των οποίων πραγματοποιείται η επικοινωνία της εφαρμογής με το blockchain. Για την επίτευξη της επικοινωνίας αυτής, η βιβλιοθήκη χρησιμοποιεί τη συλλογή βιβλιοθηκών web3.js η οποία αποτελεί τον πιο διαδεδομένο τρόπο διεπαφής με το blockchain σε αποκεντρωτικές εφαρμογές. - -Το άρθρωμα αυτό γίνεται διαθέσιμο για χρήση με τη μορφή βιβλιοθήκης μέσω του αποθετηρίου λογισμικού npm. - -\vspace{0.5cm} -\textbf{Άρθρωμα breeze} - -Το άρθρωμα αυτό αποτελεί μία βιβλιοθήκη περίβλημα (wrapper) της βιβλιοθήκης OrbitDB. Η OrbitDB είναι μία βιβλιοθήκη η οποία προσφέρει τις απαραίτητες προγραμματιστικές διεπαφές για τη χρήση της βάσης δεδομένων με το ίδιο όνομα. Μέσα από τη χρήση των βιβλιοθηκών που προσφέρονται από το IPFS για την αποθήκευση δεδομένων, η OrbitDB καταφέρνει να υλοποιήσει μία αποκεντρωμένη βάση δεδομένων. - -Το άρθρωμα breeze κάνει χρήση της βιβλιοθήκης OrbitDB, προσφέρει ωστόσο συγκεκριμένες προγραμματιστικές διεπαφές που διευκολύνουν τόσο την παραμετροποίηση της βάσης όσο και τη χρήση της, ενώ όπως και στο άρθρωμα drizzle το άρθρωμα breeze αναλαμβάνει να διορθώσει ορισμένα προβλήματα της πρωτότυπης βιβλιοθήκης. - -Το άρθρωμα αυτό γίνεται διαθέσιμο για χρήση με τη μορφή βιβλιοθήκης μέσω του αποθετηρίου λογισμικού npm. - -% ===== ===== -% concordia-app microservice -% ===== ===== -\subsection{Concordia Application} \label{subsection:4-3-concordia-application-service} - -\vspace{0.5cm} -\textbf{Περιγραφή - Στόχοι υπηρεσίας} - -Η εφαρμογή Concordia (Concordia Application) εκθέτει τις γραφικές διεπαφές μέσω των οποίων αλληλεπιδρούν οι χρήστες με το σύστημα. Αποτελεί τον δίαυλο επικοινωνίας του τελικού χρήστη με το blockchain και με τη βάση OrbitDB. Η αρχιτεκτονική της υπηρεσίας φαίνεται στο σχήμα \ref{figure:4-3-concordia-application-architecture}. Μέσω της εφαρμογής Concordia οι χρήστες μπορούν να: - -\begin{itemize} - \item περιηγηθούν και διαβάσουν το περιεχόμενο της πλατφόρμας - - \item δημιουργήσουν λογαριασμό χρήστη - - \item δημοσιεύσουν και τροποποιήσουν προσωπικές τους πληροφορίες όπως η τοποθεσία και η εικόνα προφίλ - - \item δημιουργήσουν θέματα (topics) - - \item δημιουργήσουν ψηφοφορίες (polls), καθώς και να ψηφίσουν σε αυτές - - \item δημιουργήσουν και τροποποιήσουν μηνύματα (posts) - - \item υπερψηφίσουν (up-vote) ή καταψηφίσουν (down-vote) μηνύματα άλλων χρηστών -\end{itemize} - -Η υπηρεσία αποτελείται από κώδικα γραμμένο σε Javascript ο οποίος γίνεται διαθέσιμος στους τελικούς χρήστες με τη μορφή εφαρμογής διαδικτύου (web application) μέσω ενός διακομιστή (server). Παρόλο που η υπηρεσία προσφέρει τη γραφική διεπαφή χρήστη μόνο στην αγγλική γλώσσα, έχει παραμετροποιηθεί ώστε να είναι δυνατή η εύκολη μεταγλώττιση της χωρίς την ανάγκη πραγματοποίησης μεγάλων αλλαγών στον κώδικα. - -Χρησιμοποιείται η βιβλιοθήκη React για την οργάνωση και ανάπτυξη των συνθετικών τμημάτων (components) του γραφικού περιβάλλοντος. Για το γραφικό περιβάλλον γίνεται χρήση του framework της Semantic UI. Χρησιμοποιείται η βιβλιοθήκη Redux για τη διαχείριση κατάστασης της εφαρμογής (state management), % todo: find a better greek translation -καθώς και η βιβλιοθήκη Redux-Saga για τη διαχείριση ασύγχρονων παράπλευρων ενεργειών (side-effects) σε ένα σύστημα βασισμένο σε συμβάντα (event-based). Άλλες βιβλιοθήκες χρησιμοποιούνται για διάφορα μέρη της υπηρεσίας, ενώ χρησιμοποιούνται επίσης τα αρθρώματα που περιγράφηκαν προηγουμένως για την επίτευξη διαφορετικών στόχων. Ο πλήρης κατάλογος των βιβλιοθηκών και αρθρωμάτων μπορεί να βρεθεί στον κώδικα της υπηρεσίας στο παράρτημα. % todo: add reference to the appendix containing the code or a link to it in the repo - -\begin{figure}[H] - \centering - \includegraphics[width=.7\textwidth]{assets/figures/chapter-4/4.3.architecture-4.3.2.concordia-application-architecture.png} - \caption{Αρχιτεκτονική υπηρεσίας Concordia Application} - \label{figure:4-3-concordia-application-architecture} -\end{figure} - -Για τη λειτουργία της υπηρεσία Concordia Application είναι απαραίτητα τα αντικείμενα (artifacts) που προκύπτουν από τη μεταγλώττιση των contracts και τη μεταφόρτωση/δημοσίευσή τους στο blockchain. Για την εισαγωγή των artifacts στην υπηρεσία έχουν αναπτυχθεί δύο μέθοδοι. - -Η πρώτη μέθοδος είναι η μεταγλώττιση και μεταφόρτωση των contracts πριν την παραγωγή του πακέτου λογισμικού της υπηρεσίας για τελική χρήση (production build). Με αυτό τον τρόπο η υπηρεσία θα έχει πρόσβαση στα artifacts μέσω της βιβλιοθήκης που παράγεται από το άρθρωμα concordia-contracts. Αυτή η μέθοδος έχει το μειονέκτημα ότι το τελικό πακέτο λογισμικού (production build) ``δένεται'' με όποια συγκεκριμένη έκδοση των contracts είναι διαθέσιμη κατά τη δημιουργία του πακέτου. Αυτό σημαίνει ότι σε ενδεχόμενη ενημέρωση των contracts πρέπει αναγκαστικά να δημιουργηθεί και νέα έκδοση του πακέτου λογισμικού της υπηρεσίας Concordia Application. - -Για την αποφυγή του παραπάνω προβλήματος αναπτύχθηκε η δεύτερη μέθοδος προσκόμισης των contract artifacts, η οποία είναι η λήψη τους (download) από μία άλλη τοποθεσία στο διαδίκτυο. Σε αυτή τη μέθοδο, η εφαρμογή κατά την εκκίνησή της πραγματοποιεί ένα HTTP αίτημα (HTTP request) σε διεύθυνση η οποία δίνεται ως μεταβλητή περιβάλλοντος (environment variable). Η απάντηση του αιτήματος αναμένεται να περιέχει τα artifacts ώστε η εφαρμογή να τα χρησιμοποιήσει. - -\vspace{0.5cm} -\textbf{Διανομή} - -Η υπηρεσία Concordia Application πακετάρεται μαζί με τον διακομιστή nginx και γίνεται διαθέσιμη για χρήση ως εικόνα docker (docker image) μέσω του αποθετηρίου εικόνων dockerhub. Κατά την εκτέλεση της εικόνας οι χρήστες μπορούν μέσω μεταβλητών περιβάλλοντος να ορίσουν παραμέτρους της εκτέλεσης όπως η διεύθυνση του εξυπηρετητή (host location) της εφαρμογής και οι τοποθεσίες των υπηρεσιών Rendezvous Server και Contracts Provider. - -% ===== ===== -% concordia-contracts-migrator microservice -% ===== ===== -\subsection{Concordia Contracts Migrator} \label{subsection:4-3-concordia-contracts-migrator} - -\vspace{0.5cm} -\textbf{Περιγραφή - Στόχοι υπηρεσίας} - -Η υπηρεσία αυτή αποτελείται από ένα εκτελέσιμο πρόγραμμα γραμμής εντολών βασισμένο στο άρθρωμα concordia-contracts που αναλύθηκε σε προηγούμενη υποενότητα (\ref{subsection:4-3-software-units}). Το πρόγραμμα, κατά την εκτέλεσή του, μεταγλωττίζει τα contracts και έπειτα τα μεταφορτώνει στο blockchain το οποίο είναι ορισμένο με χρήση μεταβλητών περιβάλλοντος. Τέλος, αν οι κατάλληλες μεταβλητές περιβάλλοντος είναι ορισμένες, το πρόγραμμα μεταφορτώνει τα τελικά artifacts σε αποθετήριο Concordia Contracts Provider. Η αρχιτεκτονική της υπηρεσίας φαίνεται στο παρακάτω σχήμα (σχήμα \ref{figure:4-3-concordia-contracts-migrator-architecture}). - -\begin{figure}[H] - \centering - \includegraphics[width=.6\textwidth]{assets/figures/chapter-4/4.3.architecture-4.3.3.concordia-contracts-migrator-architecture.png} - \caption{Αρχιτεκτονική υπηρεσίας Concordia Contracts Migrator} - \label{figure:4-3-concordia-contracts-migrator-architecture} -\end{figure} - -\vspace{0.5cm} -\textbf{Διανομή} - -Η υπηρεσία αυτή γίνεται διαθέσιμη για χρήση ως docker image μέσω του αποθετηρίου εικόνων dockerhub. Οι χρήστες μπορούν χρησιμοποιώντας μεταβλητές περιβάλλοντος να αλλάξουν τη διεύθυνση του blockchain και την τοποθεσία της υπηρεσίας Contracts Provider στην οποία το πρόγραμμα θα μεταφορτώσει τα contracts και τα artifacts. - -% ===== ===== -% concordia-pinner microservice -% ===== ===== -\subsection{Concordia Pinner} \label{subsection:4-3-concordia-pinner-service} - -\vspace{0.5cm} -\textbf{Περιγραφή - Στόχοι υπηρεσίας} - -Η υπηρεσία καρφιτσώματος περιεχομένου (Concordia Pinner) αποτελεί μία εφαρμογή τερματικού (temrinal application/cmd application) η οποία στοχεύει στο καρφίτσωμα (pinning) του περιεχομένου που αποθηκεύεται στο IPFS μέσω της βάσης OrbitDB. Η υπηρεσία είναι γραμμένη στη γλώσσα προγραμματισμού Javascript. Η αρχιτεκτονική της υπηρεσίας φαίνεται το σχήμα \ref{figure:4-3-concordia-pinner-architecture}. - -\begin{figure}[H] - \centering - \includegraphics[width=.6\textwidth]{assets/figures/chapter-4/4.3.architecture-4.3.4.concordia-pinner-architecture.png} - \caption{Αρχιτεκτονική υπηρεσίας Concordia Pinner} - \label{figure:4-3-concordia-pinner-architecture} -\end{figure} - -Η υπηρεσία αυτή υλοποιήθηκε για να εγγυηθεί η διαθεσιμότητα του περιεχομένου του συστήματος που αποθηκεύεται στο IPFS (τίτλοι θεμάτων, περιεχόμενο μηνυμάτων και άλλα). Λόγω του τρόπου λειτουργίας % todo: insert reference -του IPFS, το περιεχόμενο που αναρτούν οι χρήστες πρέπει να καρφιτσώνεται από άλλους χρήστες ή αυτόνομες εφαρμογές, όπως η υπηρεσία Concordia Pinner, ώστε να είναι διαθέσιμο. Αν το περιεχόμενο δεν καρφιτσωθεί, τότε θα είναι διαθέσιμο στους υπόλοιπους χρήστες μόνο από %todo: fix gender stuff -τον/τη δημιουργό, έτσι αν αυτός/αυτή δεν είναι ενεργός/ενεργή στο δίκτυο, το περιεχόμενο θα είναι αδύνατο να βρεθεί. - -Η υπηρεσία συνδέεται στο blockchain από όπου παρακολουθεί την κατάσταση του συστήματος και ``ακούει'' για νέους χρήστες, θέματα και μηνύματα. Η υπηρεσία συνδέεται επίσης στο IPFS, έτσι όταν δημιουργηθεί νέο περιεχόμενο στο σύστημα το καρφιτσώνει αυτόματα. Με αυτό τον τρόπο, διατηρώντας την υπηρεσία πάντα διαθέσιμη, για παράδειγμα εκτελώντας τη σε περιβάλλον διακομιστή (server), διαβεβαιώνεται η διαθεσιμότητα του περιεχομένου. - -\vspace{0.5cm} -\textbf{Διανομή} - -Η υπηρεσία αυτή γίνεται διαθέσιμη για χρήση ως docker image μέσω του αποθετηρίου εικόνων dockerhub. Κατά την εκτέλεση της εικόνας οι χρήστες μπορούν μέσω μεταβλητών περιβάλλοντος να ορίσουν παραμέτρους της υπηρεσίας όπως τη διεύθυνση του εξυπηρετητή (host location), τη διεύθυνση του blockchain, τις διαδρομές αποθήκευσης των δεδομένων στο σύστημα και τις τοποθεσίες των υπηρεσιών Rendezvous Server και Contracts Provider. - -% ===== ===== -% concordia-contracts-provider microservice -% ===== ===== -\subsection{Concordia Contracts Provider} \label{subsection:4-3-concordia-contracts-provider-service} - -\vspace{0.5cm} -\textbf{Περιγραφή - Στόχοι υπηρεσίας} - -Η υπηρεσία Contracts Provider αποτελεί μία βοηθητική υπηρεσία η οποία υλοποιεί ένα απλό αποθετήριο για τα contract artifacts. Είναι γραμμένη σε Javascript και διαθέτει δύο HTTP \textenglish{endpoints}, ένα για τη μεταφόρτωση (upload) των artifacts προς την υπηρεσία και ένα για τη λήψη (download) από την υπηρεσία. Η υπηρεσία υποστηρίζει επίσης την επισύναψη ετικετών στα artifacts, όπως η έκδοση (version) ή το κλαδί ανάπτυξης (branch, για παράδειγμα \textenglish{master/develop}). Η αρχιτεκτονική της υπηρεσίας φαίνεται το σχήμα \ref{figure:4-3-concordia-contracts-provider-architecture}. - -\begin{figure}[H] - \centering - \includegraphics[width=.6\textwidth]{assets/figures/chapter-4/4.3.architecture-4.3.5.concordia-contracts-provider-architecture.png} - \caption{Αρχιτεκτονική υπηρεσίας Concordia Contracts Provider} - \label{figure:4-3-concordia-contracts-provider-architecture} -\end{figure} - -Η υπηρεσία χρησιμοποιείται σε μία προσπάθεια αποσύνδεσης της βασικής εφαρμογής που υλοποιεί η υπηρεσία Concordia Application από μία συγκεκριμένη έκδοση των contracts. Οι λόγοι που αυτό είναι επιθυμητό αναπτύχθηκαν στην περιγραφή της υπηρεσίας Concordia \textenglish{Application} (υποενότητα \ref{subsection:4-3-concordia-application-service}). Ωστόσο, η υπηρεσία Contracts Provider αποτελεί σημείο κεντροποίησης του συστήματος, για το λόγο αυτό θεωρείται προσωρινή λύση η οποία θα μπορούσε να αντικατασταθεί από αποκεντρωτικές λύσεις όπως η μεταφόρτωση των artifacts στο IPFS και ο διαμοιρασμός τους από εκεί. - -\vspace{0.5cm} -\textbf{Διανομή} - -Η υπηρεσία αυτή γίνεται διαθέσιμη για χρήση ως docker image μέσω του αποθετηρίου εικόνων dockerhub. Οι χρήστες μπορούν χρησιμοποιώντας μεταβλητές περιβάλλοντος να αλλάξουν παραμέτρους της εκτέλεσης όπως η διαδρομή αποθήκευσης των μεταφορτωμένων contract artifacts. - -% ===== ===== -% rendezvous-ganache microservice -% ===== ===== -\subsection{Ganache} \label{subsection:4-3-ganache-service} - -\vspace{0.5cm} -\textbf{Περιγραφή - Στόχοι υπηρεσίας} - -Η υπηρεσία Ganache αποτελεί μία εφαρμογή τερματικού η οποία είναι μέρος της δωρεάν σουίτας ανοιχτού λογισμικού Truffle. Η εφαρμογή δημιουργεί ένα τοπικό, ιδιωτικό blockchain το οποίο ακολουθεί το πρότυπο του Ethereum. Επίσης, η εφαρμογή δρα ως miner στο δίκτυο, διεκπεραιώνοντας όλες τις συναλλαγές. - -\vspace{0.5cm} -\textbf{Διανομή} - -Για τη χρήση της υπηρεσίας αυτής αναπτύχθηκε μία νέα εικόνα docker που βασίζεται στην επίσημη εικόνα που διατίθεται από τη σουίτα και προσθέτει μερικές χρήσιμες λειτουργικότητες όπως η δυνατότητα αποκάλυψης των κλειδιών που δημιουργούνται κατά την εκτέλεση. Η υπηρεσία γίνεται διαθέσιμη για χρήση ως docker image μέσω του αποθετηρίου εικόνων dockerhub. Η εικόνα παρέχει τη δυνατότητα τροποποίησης των παραμέτρων εκτέλεσης με χρήση μεταβλητών περιβάλλοντος. Με αυτό τον τρόπο οι χρήστες μπορούν να αλλάξουν τον αριθμό των λογαριασμών που θα δημιουργηθούν, το ποσό του Ether που θα λάβει κάθε λογαριασμός καθώς και άλλες μεταβλητές. - -% ===== ===== -% rendezvous-server microservice -% ===== ===== -\subsection{Rendezvous Server} \label{subsection:4-3-rendezvous-server-service} - -\vspace{0.5cm} -\textbf{Περιγραφή - Στόχοι υπηρεσίας} - -Η υπηρεσία Rendezvous Server αποτελεί δωρεάν λογισμικό ανοιχτού κώδικα το οποίο χρησιμοποιήθηκε (αλλά δεν αναπτύχθηκε) στα πλαίσια της διπλωματικής και υλοποιεί το πρωτόκολλο rendezvous για την εύρεση ομότιμων χρηστών (peers). Η υπηρεσία είναι απαραίτητη για τη λειτουργία του IPFS, ώστε οι ομότιμοι χρήστες (peers) να μπορούν να ανακαλύψουν τις διευθύνσεις των υπόλοιπων χρηστών του δικτύου. - -\vspace{0.5cm} -\textbf{Διανομή} - -Η υπηρεσία αυτή είναι διαθέσιμη για χρήση από τους δημιουργούς της τόσο ως εφαρμογή μέσω του αποθετηρίου λογισμικού npm αλλά και ως docker image μέσω του αποθετηρίου εικόνων dockerhub. - -% ===== ===== -% microservice communication -% ===== ===== -\subsection{Διασύνδεση υπηρεσιών} \label{subsection:4-3-service-communication} - -Στο μοντέλο των μικροϋπηρεσιών, βασικό χαρακτηριστικό είναι η επικοινωνία των ξεχωριστών υπηρεσιών και η ανταλλαγή μηνυμάτων για την επίτευξη των λειτουργικοτήτων του συστήματος. Σε αυτήν την υποενότητα θα αναλυθεί ο τρόπος με τον οποίο οι μικροϋπηρεσίες επικοινωνούν μεταξύ τους καθώς και η φύση και το περιεχόμενο των μηνυμάτων που ανταλλάσουν. - -Στο παρακάτω σχήμα (σχήμα \ref{figure:4-3-communications-graph}) φαίνεται ο γράφος που οπτικοποιεί τα κανάλια επικοινωνίας μεταξύ των μικροϋπηρεσιών, καθώς και τα κανάλια επικοινωνίας των μικροϋπηρεσιών με το blockchain. - -\begin{figure}[H] - \centering - \includegraphics[width=.9\textwidth]{assets/figures/chapter-4/4.3.communications-diagram.png} - \caption{Γράφος οπτικοποίησης των καναλιών επικοινωνίας των μικροϋπηρεσιών} - \label{figure:4-3-communications-graph} -\end{figure} - -Εδώ αναλύεται η επικοινωνία κάθε μικροϋπηρεσίας: - -\begin{itemize} - \item \textbf{Contracts Migrator}: η υπηρεσία εκτελεί αίτημα HTTP κατά την μεταφόρτωση των \textenglish{contracts} στο Ethereum blockchain, επίσης εκτελεί αίτημα HTTP για την μεταφόρτωση των contract artifacts στην υπηρεσία Contracts Provider - - \item \textbf{Concordia Application}: η υπηρεσία εκτελεί αίτημα HTTP για την λήψη των contract \textenglish{artifacts} από την υπηρεσία Contracts Provider, εκτελεί αιτήματα HTTP για την διενέργεια συναλλαγών στο Ethereum blockchain και τέλος δημιουργεί κανάλι UDP επικοινωνίας με την υπηρεσία Rendezvous Server για την ανακάλυψη ομότιμων χρηστών (peers) στο δίκτυο IPFS - - \item \textbf{Pinner}: η υπηρεσία εκτελεί αίτημα HTTP για την λήψη των contract artifacts από την υπηρεσία Contracts Provider, εκτελεί αιτήματα HTTP για την ανανέωση και παρατήρηση της κατάστασης του contract στο Ethereum blockchain και τέλος δημιουργεί κανάλι UDP επικοινωνίας με την υπηρεσία Rendezvous Server για την ανακάλυψη peers στο δίκτυο IPFS - - \item \textbf{Rendezvous Server}: η υπηρεσία διατηρεί ανοιχτά κανάλια UDP επικοινωνίας με τους ομότιμους χρήστες μέσω των οποίων ενημερώνει την λίστα των διαθέσιμων, ενεργών χρηστών - - \item \textbf{Contracts Provider}: η υπηρεσία δεν υποκινεί καμία επικοινωνία παρά μόνο απαντά σε αιτήματα επικοινωνία από άλλες υπηρεσίες -\end{itemize} - -% ===== ===== -% data flow -% ===== ===== -\subsection{Ροή πληροφορίας} \label{subsection:4-3-data-flow} - -Στην παρούσα υποενότητα θα αναλυθεί η ροή της πληροφορίας στο σύστημα. Λόγω των πολλαπλών υπηρεσιών, της κατάτμησης την πληροφορίας και των διαφορετικών σημείων αποθήκευσης της, η ροή της πληροφορίας στο σύστημα ακολουθεί ένα σχετικά περίπλοκο μονοπάτι (σε σχέση με κλασσικές, μονολιθικές, κεντροποιημένες εφαρμογές). - -Αρχικά θα γίνει αναφορά στη διαδικασία αποθήκευσης των νέων πληροφοριών. Η μοναδική πηγή παραγωγής δεδομένων στο σύστημα είναι οι χρήστες και κατ' επέκταση η υπηρεσία Concordia Application, εφόσον είναι η μοναδική υπηρεσία με την οποία αυτοί αλληλεπιδρούν. Τα δεδομένα που δημιουργούν οι χρήστες (πληροφορίες χρηστών, τίτλοι θεμάτων και περιεχόμενο μηνυμάτων) κατατμήζονται πριν αποθηκευτούν. Η πληροφορία που εισάγεται στο σύστημα κατατμήζεται σε δύο μέρη. Στο blockchain αποθηκεύεται ένας δείκτης προς τα δεδομένα, ενώ τα πραγματικά δεδομένα αποθηκεύονται στη βάση OrbitDB. Ο δείκτης εκτός από την άμεση χρησιμότητα στην εύρεση των δεδομένων, παρέχει και την έμμεση λειτουργικότητα της δημιουργίας απαραίτητων μεταδομένων όπως ο αριθμός των θεμάτων στο σύστημα ή των μηνυμάτων σε ένα θέμα. - -Από την πλευρά της εύρεση των πληροφοριών στο σύστημα, η ροή είναι ως εξής. Αρχικά, είναι απαραίτητη η αναζήτηση στο blockchain για την εύρεση του δείκτη προς τα δεδομένα. Έπειτα, τα δεδομένα μπορούν να ανακτηθούν μέσω του IPFS από τον εκάστοτε χρήστη ή από κάποιον Pinner. - -Τέλος, παρακάτω δίνεται ένα παράδειγμα εισαγωγής πληροφορίας στο σύστημα και έπειτα ανάκτησης της ίδιας πληροφορίας. - -Έστω, χρήστης που δημιουργεί νέο θέμα. Τα δεδομένα που παράγονται είναι ο τίτλος του θέματος και το περιεχόμενο του πρώτου μηνύματος. Μεταδεδομένα της δημιουργίας είναι η διεύθυνση του/της δημιουργού του θέματος. Για την αποθήκευση του θέματος στο σύστημα δημιουργείται πρώτα συναλλαγή στο blockchain ώστε να δημιουργηθεί μία νέα εγγραφή στον πίνακα των θεμάτων. Η εγγραφή αυτή δεν περιέχει τίποτα παρά μόνο τη διεύθυνση του/της δημιουργού χρήστη. Αν η συναλλαγή είναι επιτυχής, θα επιστραφεί ο αύξων αριθμός του νέου θέματος. Έπειτα, στην προσωπική βάση OrbitDB του/της χρήστη και στον πίνακα των θεμάτων θα προστεθεί εγγραφή με αναγνωριστικό τον αύξων αριθμό του θέματος όπου θα αποθηκευτούν τα δεδομένα του τίτλου και πρώτου μηνύματος. Στο σχήμα \ref{figure:4-3-data-flow-insert} παρουσιάζεται γραφικά η διαδικασία. - -% todo: UML diagrams might be wrong, should the ethereum and orbitDb blocks be continuous? -\begin{figure}[H] - \centering - \includegraphics[width=.7\textwidth]{assets/figures/chapter-4/4.3.architecture-4.3.9.data-flow-insert.png} - \caption{Διάγραμμα ακολουθίας δημιουργίας θέματος} - \label{figure:4-3-data-flow-insert} -\end{figure} - -Έστω, χρήστης που επιθυμεί να διαβάσει το προηγούμενο μήνυμα. Αρχικά, πρέπει να διαβαστεί ο πίνακας θεμάτων από το blockchain. Η πληροφορία αυτή εμπλουτίζεται από τα δεδομένα του κάθε θέματος, τα οποία ανακτώνται από τις προσωπικές βάσεις Orbit κάθε χρήστη. Έπειτα, εφόσον το θέμα βρεθεί και ο αύξων αριθμός του είναι γνωστός, πρέπει να διαβαστούν από το blockchain τα μεταδομένα των μηνυμάτων του θέματος και συγκεκριμένα η διευθύνσεις των δημιουργών τους. Τέλος, μέσω του IPFS πρέπει να γίνει αντιγραφή των προσωπικών βάσεων των δημιουργών του κάθε μηνύματος και να αναζητηθούν σε αυτές τα εκάστοτε μηνύματα. Στο σχήμα \ref{figure:4-3-data-flow-read} φαίνεται το διάγραμμα ροής της πληροφορίας κατά την ανάκτηση πληροφοριών από το σύστημα. - -\begin{figure}[H] - \centering - \includegraphics[width=.7\textwidth]{assets/figures/chapter-4/4.3.architecture-4.3.9.data-flow-read.png} - \caption{Διάγραμμα ακολουθίας εύρεσης και ανάκτησης θέματος} - \label{figure:4-3-data-flow-read} -\end{figure} +\input{chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units} +\input{chapters/4.application-implementation/4.3.implementation-architecture/4.3.2.concordia-application-service} +\input{chapters/4.application-implementation/4.3.implementation-architecture/4.3.3.concordia-contracts-migrator} +\input{chapters/4.application-implementation/4.3.implementation-architecture/4.3.4.concordia-pinner-service} +\input{chapters/4.application-implementation/4.3.implementation-architecture/4.3.5.concordia-contracts-provider-service} +\input{chapters/4.application-implementation/4.3.implementation-architecture/4.3.6.ganache-service} +\input{chapters/4.application-implementation/4.3.implementation-architecture/4.3.7.rendezvous-server-service} +\input{chapters/4.application-implementation/4.3.implementation-architecture/4.3.8.service-communication} +\input{chapters/4.application-implementation/4.3.implementation-architecture/4.3.9.data-flow} \ No newline at end of file diff --git a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units.tex b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units.tex new file mode 100644 index 0000000..7ca553b --- /dev/null +++ b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units.tex @@ -0,0 +1,9 @@ +\subsection{Αρθρώματα} \label{subsection:4-3-1-software-units} + +Σε αυτό το κεφάλαιο θα περιγραφούν με μεγαλύτερη λεπτομέρεια τα αρθρώματα που αναπτύχθηκαν. + +\input{chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.concordia-shared-unit} +\input{chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.concordia-contracts-unit} +\input{chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-identity-provider-unit} +\input{chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-drizzle-unit} +\input{chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-breeze-unit} \ No newline at end of file diff --git a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.concordia-contracts-unit.tex b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.concordia-contracts-unit.tex new file mode 100644 index 0000000..b1b8266 --- /dev/null +++ b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.concordia-contracts-unit.tex @@ -0,0 +1,5 @@ +\subsubsection{Άρθρωμα concordia-contracts} \label{subsubsection:4-3-1-concordia-contracts-unit} + +Το άρθρωμα αυτό επιτελεί δύο ενέργειες. Αρχικά, είναι το άρθρωμα στο οποίο αναπτύσσονται τα contracts που χρησιμοποιούνται από την εφαρμογή. Το άρθρωμα αυτό αναλαμβάνει τη μεταγλώττιση των contracts από κώδικα γλώσσας Solidity, στην κατάλληλη τελική μορφή JSON. Παρέχονται επίσης σενάρια ενεργειών (scripts) ώστε τα contracts να μεταφορτωθούν σε blockchain καθώς και στην υπηρεσία Concordia Contracts Provider. Αποτελεί επίσης βιβλιοθήκη η οποία μετά τη μεταγλώττιση και μεταφόρτωση των contracts σε blockchain παρέχει τα contract artifacts. Χρησιμοποιείται από τις υπηρεσίες Concordia Application και Concordia Pinner. + +Το άρθρωμα αυτό γίνεται διαθέσιμο για χρήση με τη μορφή τοπικής βιβλιοθήκης με τη χρήση της βιβλιοθήκης διαχείρισης monorepo lerna. \ No newline at end of file diff --git a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.concordia-shared-unit.tex b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.concordia-shared-unit.tex new file mode 100644 index 0000000..33bed8e --- /dev/null +++ b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.concordia-shared-unit.tex @@ -0,0 +1,6 @@ +\subsubsection{Άρθρωμα concordia-shared} \label{subsubsection:4-3-1-concordia-shared-unit} + +Το άρθρωμα concordia-shared αποτελεί μία βιβλιοθήκη χρήσιμων εργαλείων και σταθερών. Εδώ περιέχεται όλο το λογισμικό το οποίο πρέπει ή είναι επιθυμητό να συμπεριφέρεται με τον ίδιο τρόπο συνολικά στο σύστημα, όπως για παράδειγμα μέθοδοι παραμετροποίησης των υπηρεσιών και μέθοδοι καταγραφής (logging). Το άρθρωμα αυτό χρησιμοποιείται από το άρθρωμα concordia-contracts καθώς και από τις υπηρεσίες Concordia Application, Concordia Pinner και Concordia Contracts Provider. + +% make more sense +Το άρθρωμα αυτό γίνεται διαθέσιμο για χρήση με τη μορφή τοπικής βιβλιοθήκης με τη χρήση της βιβλιοθήκης διαχείρισης μοναδικού αποθετηρίου κώδικα (monorepo) lerna. \ No newline at end of file diff --git a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-breeze-unit.tex b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-breeze-unit.tex new file mode 100644 index 0000000..aefdf84 --- /dev/null +++ b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-breeze-unit.tex @@ -0,0 +1,7 @@ +\subsubsection{Άρθρωμα breeze} \label{subsubsection:4-3-1-eth-breeze-unit} + +Το άρθρωμα αυτό αποτελεί μία βιβλιοθήκη περίβλημα (wrapper) της βιβλιοθήκης OrbitDB. Η OrbitDB είναι μία βιβλιοθήκη η οποία προσφέρει τις απαραίτητες προγραμματιστικές διεπαφές για τη χρήση της βάσης δεδομένων με το ίδιο όνομα. Μέσα από τη χρήση των βιβλιοθηκών που προσφέρονται από το IPFS για την αποθήκευση δεδομένων, η OrbitDB καταφέρνει να υλοποιήσει μία αποκεντρωμένη βάση δεδομένων. + +Το άρθρωμα breeze κάνει χρήση της βιβλιοθήκης OrbitDB, προσφέρει ωστόσο συγκεκριμένες προγραμματιστικές διεπαφές που διευκολύνουν τόσο την παραμετροποίηση της βάσης όσο και τη χρήση της, ενώ όπως και στο άρθρωμα drizzle το άρθρωμα breeze αναλαμβάνει να διορθώσει ορισμένα προβλήματα της πρωτότυπης βιβλιοθήκης. + +Το άρθρωμα αυτό γίνεται διαθέσιμο για χρήση με τη μορφή βιβλιοθήκης μέσω του αποθετηρίου λογισμικού npm. \ No newline at end of file diff --git a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-drizzle-unit.tex b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-drizzle-unit.tex new file mode 100644 index 0000000..a8b55e6 --- /dev/null +++ b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-drizzle-unit.tex @@ -0,0 +1,7 @@ +\subsubsection{Άρθρωμα drizzle} \label{subsubsection:4-3-1-eth-drizzle-unit} + +Το άρθρωμα drizzle που χρησιμοποιείται στην υπηρεσία Concordia Application είναι μία τροποποιημένη έκδοση της Javascript βιβλιοθήκης Drizzle που προσφέρεται από τη σουίτα εργαλείων Truffle. Η τροποποιημένη βιβλιοθήκη αναπτύχθηκε στα πλαίσια της διπλωματικής με στόχο τη διευκόλυνση της χρήσης του Drizle και την επιδιόρθωση προβληματικών σημείων της πρωτότυπης βιβλιοθήκης. + +Το άρθρωμα drizzle υλοποιεί τις προγραμματιστικές διεπαφές μέσω των οποίων πραγματοποιείται η επικοινωνία της εφαρμογής με το blockchain. Για την επίτευξη της επικοινωνίας αυτής, η βιβλιοθήκη χρησιμοποιεί τη συλλογή βιβλιοθηκών web3.js η οποία αποτελεί τον πιο διαδεδομένο τρόπο διεπαφής με το blockchain σε αποκεντρωτικές εφαρμογές. + +Το άρθρωμα αυτό γίνεται διαθέσιμο για χρήση με τη μορφή βιβλιοθήκης μέσω του αποθετηρίου λογισμικού npm. \ No newline at end of file diff --git a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-identity-provider-unit.tex b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-identity-provider-unit.tex new file mode 100644 index 0000000..693f9a5 --- /dev/null +++ b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-identity-provider-unit.tex @@ -0,0 +1,5 @@ +\subsubsection{Άρθρωμα eth-identity-provider} \label{subsubsection:4-3-1-eth-identity-provider-unit} + +Η λειτουργία της βάση OrbitDB απαιτεί τη δημιουργία ενός μοναδικού αναγνωριστικού χρήστη (identity). Για την εύκολη εξαγωγή ενός αναγνωριστικού χρήστη το οποίο να είναι μεν μοναδικό αλλά να είναι δυνατός ο επανυπολογισμός, χρησιμοποιήθηκε ο συνδυασμός της διεύθυνσης του χρήστη στο δίκτυο Ethereum με τη διεύθυνση του βασικού contract που χρησιμοποιεί η εφαρμογή. Ο υπολογισμός του συνδυασμού αυτού υλοποιείται από αυτό το άρθρωμα. + +Το άρθρωμα αυτό γίνεται διαθέσιμο για χρήση με τη μορφή βιβλιοθήκης μέσω του αποθετηρίου λογισμικού npm. \ No newline at end of file diff --git a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.2.concordia-application-service.tex b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.2.concordia-application-service.tex new file mode 100644 index 0000000..aaa1630 --- /dev/null +++ b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.2.concordia-application-service.tex @@ -0,0 +1,43 @@ +\subsection{Concordia Application} \label{subsection:4-3-2-concordia-application-service} + +\subsubsection{Περιγραφή - Στόχοι υπηρεσίας} + +Η εφαρμογή Concordia (Concordia Application) εκθέτει τις γραφικές διεπαφές μέσω των οποίων αλληλεπιδρούν οι χρήστες με το σύστημα. Αποτελεί τον δίαυλο επικοινωνίας του τελικού χρήστη με το blockchain και με τη βάση OrbitDB. Η αρχιτεκτονική της υπηρεσίας φαίνεται στο σχήμα \ref{figure:4-3-concordia-application-architecture}. Μέσω της εφαρμογής Concordia οι χρήστες μπορούν να: + +\begin{itemize} + \item περιηγηθούν και διαβάσουν το περιεχόμενο της πλατφόρμας + + \item δημιουργήσουν λογαριασμό χρήστη + + \item δημοσιεύσουν και τροποποιήσουν προσωπικές τους πληροφορίες όπως η τοποθεσία και η εικόνα προφίλ + + \item δημιουργήσουν θέματα (topics) + + \item δημιουργήσουν ψηφοφορίες (polls), καθώς και να ψηφίσουν σε αυτές + + \item δημιουργήσουν και τροποποιήσουν μηνύματα (posts) + + \item υπερψηφίσουν (up-vote) ή καταψηφίσουν (down-vote) μηνύματα άλλων χρηστών +\end{itemize} + +Η υπηρεσία αποτελείται από κώδικα γραμμένο σε Javascript ο οποίος γίνεται διαθέσιμος στους τελικούς χρήστες με τη μορφή εφαρμογής διαδικτύου (web application) μέσω ενός διακομιστή (server). Παρόλο που η υπηρεσία προσφέρει τη γραφική διεπαφή χρήστη μόνο στην αγγλική γλώσσα, έχει παραμετροποιηθεί ώστε να είναι δυνατή η εύκολη μεταγλώττιση της χωρίς την ανάγκη πραγματοποίησης μεγάλων αλλαγών στον κώδικα. + +Χρησιμοποιείται η βιβλιοθήκη React για την οργάνωση και ανάπτυξη των συνθετικών τμημάτων (components) του γραφικού περιβάλλοντος. Για το γραφικό περιβάλλον γίνεται χρήση του framework της Semantic UI. Χρησιμοποιείται η βιβλιοθήκη Redux για τη διαχείριση κατάστασης της εφαρμογής (state management), % todo: find a better greek translation +καθώς και η βιβλιοθήκη Redux-Saga για τη διαχείριση ασύγχρονων παράπλευρων ενεργειών (side-effects) σε ένα σύστημα βασισμένο σε συμβάντα (event-based). Άλλες βιβλιοθήκες χρησιμοποιούνται για διάφορα μέρη της υπηρεσίας, ενώ χρησιμοποιούνται επίσης τα αρθρώματα που περιγράφηκαν προηγουμένως για την επίτευξη διαφορετικών στόχων. Ο πλήρης κατάλογος των βιβλιοθηκών και αρθρωμάτων μπορεί να βρεθεί στον κώδικα της υπηρεσίας στο παράρτημα. % todo: add reference to the appendix containing the code or a link to it in the repo + +\begin{figure}[H] + \centering + \includegraphics[width=.7\textwidth]{assets/figures/chapter-4/4.3.architecture-4.3.2.concordia-application-architecture.png} + \caption{Αρχιτεκτονική υπηρεσίας Concordia Application} + \label{figure:4-3-concordia-application-architecture} +\end{figure} + +Για τη λειτουργία της υπηρεσία Concordia Application είναι απαραίτητα τα αντικείμενα (artifacts) που προκύπτουν από τη μεταγλώττιση των contracts και τη μεταφόρτωση/δημοσίευσή τους στο blockchain. Για την εισαγωγή των artifacts στην υπηρεσία έχουν αναπτυχθεί δύο μέθοδοι. + +Η πρώτη μέθοδος είναι η μεταγλώττιση και μεταφόρτωση των contracts πριν την παραγωγή του πακέτου λογισμικού της υπηρεσίας για τελική χρήση (production build). Με αυτό τον τρόπο η υπηρεσία θα έχει πρόσβαση στα artifacts μέσω της βιβλιοθήκης που παράγεται από το άρθρωμα concordia-contracts. Αυτή η μέθοδος έχει το μειονέκτημα ότι το τελικό πακέτο λογισμικού (production build) ``δένεται'' με όποια συγκεκριμένη έκδοση των contracts είναι διαθέσιμη κατά τη δημιουργία του πακέτου. Αυτό σημαίνει ότι σε ενδεχόμενη ενημέρωση των contracts πρέπει αναγκαστικά να δημιουργηθεί και νέα έκδοση του πακέτου λογισμικού της υπηρεσίας Concordia Application. + +Για την αποφυγή του παραπάνω προβλήματος αναπτύχθηκε η δεύτερη μέθοδος προσκόμισης των contract artifacts, η οποία είναι η λήψη τους (download) από μία άλλη τοποθεσία στο διαδίκτυο. Σε αυτή τη μέθοδο, η εφαρμογή κατά την εκκίνησή της πραγματοποιεί ένα HTTP αίτημα (HTTP request) σε διεύθυνση η οποία δίνεται ως μεταβλητή περιβάλλοντος (environment variable). Η απάντηση του αιτήματος αναμένεται να περιέχει τα artifacts ώστε η εφαρμογή να τα χρησιμοποιήσει. + +\subsubsection{Διανομή} + +Η υπηρεσία Concordia Application πακετάρεται μαζί με τον διακομιστή nginx και γίνεται διαθέσιμη για χρήση ως εικόνα docker (docker image) μέσω του αποθετηρίου εικόνων dockerhub. Κατά την εκτέλεση της εικόνας οι χρήστες μπορούν μέσω μεταβλητών περιβάλλοντος να ορίσουν παραμέτρους της εκτέλεσης όπως η διεύθυνση του εξυπηρετητή (host location) της εφαρμογής και οι τοποθεσίες των υπηρεσιών Rendezvous Server και Contracts Provider. \ No newline at end of file diff --git a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.3.concordia-contracts-migrator.tex b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.3.concordia-contracts-migrator.tex new file mode 100644 index 0000000..0025d84 --- /dev/null +++ b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.3.concordia-contracts-migrator.tex @@ -0,0 +1,16 @@ +\subsection{Concordia Contracts Migrator} \label{subsection:4-3-3-concordia-contracts-migrator} + +\subsubsection{Περιγραφή - Στόχοι υπηρεσίας} + +Η υπηρεσία αυτή αποτελείται από ένα εκτελέσιμο πρόγραμμα γραμμής εντολών βασισμένο στο άρθρωμα concordia-contracts που αναλύθηκε σε προηγούμενη υποενότητα (\ref{subsection:4-3-1-software-units}). Το πρόγραμμα, κατά την εκτέλεσή του, μεταγλωττίζει τα contracts και έπειτα τα μεταφορτώνει στο blockchain το οποίο είναι ορισμένο με χρήση μεταβλητών περιβάλλοντος. Τέλος, αν οι κατάλληλες μεταβλητές περιβάλλοντος είναι ορισμένες, το πρόγραμμα μεταφορτώνει τα τελικά artifacts σε αποθετήριο Concordia Contracts Provider. Η αρχιτεκτονική της υπηρεσίας φαίνεται στο παρακάτω σχήμα (σχήμα \ref{figure:4-3-concordia-contracts-migrator-architecture}). + +\begin{figure}[H] + \centering + \includegraphics[width=.6\textwidth]{assets/figures/chapter-4/4.3.architecture-4.3.3.concordia-contracts-migrator-architecture.png} + \caption{Αρχιτεκτονική υπηρεσίας Concordia Contracts Migrator} + \label{figure:4-3-concordia-contracts-migrator-architecture} +\end{figure} + +\subsubsection{Διανομή} + +Η υπηρεσία αυτή γίνεται διαθέσιμη για χρήση ως docker image μέσω του αποθετηρίου εικόνων dockerhub. Οι χρήστες μπορούν χρησιμοποιώντας μεταβλητές περιβάλλοντος να αλλάξουν τη διεύθυνση του blockchain και την τοποθεσία της υπηρεσίας Contracts Provider στην οποία το πρόγραμμα θα μεταφορτώσει τα contracts και τα artifacts. \ No newline at end of file diff --git a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.4.concordia-pinner-service.tex b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.4.concordia-pinner-service.tex new file mode 100644 index 0000000..6c9386c --- /dev/null +++ b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.4.concordia-pinner-service.tex @@ -0,0 +1,22 @@ +\subsection{Concordia Pinner} \label{subsection:4-3-4-concordia-pinner-service} + +\subsubsection{Περιγραφή - Στόχοι υπηρεσίας} + +Η υπηρεσία καρφιτσώματος περιεχομένου (Concordia Pinner) αποτελεί μία εφαρμογή τερματικού (temrinal application/cmd application) η οποία στοχεύει στο καρφίτσωμα (pinning) του περιεχομένου που αποθηκεύεται στο IPFS μέσω της βάσης OrbitDB. Η υπηρεσία είναι γραμμένη στη γλώσσα προγραμματισμού Javascript. Η αρχιτεκτονική της υπηρεσίας φαίνεται το σχήμα \ref{figure:4-3-concordia-pinner-architecture}. + +\begin{figure}[H] + \centering + \includegraphics[width=.6\textwidth]{assets/figures/chapter-4/4.3.architecture-4.3.4.concordia-pinner-architecture.png} + \caption{Αρχιτεκτονική υπηρεσίας Concordia Pinner} + \label{figure:4-3-concordia-pinner-architecture} +\end{figure} + +Η υπηρεσία αυτή υλοποιήθηκε για να εγγυηθεί η διαθεσιμότητα του περιεχομένου του συστήματος που αποθηκεύεται στο IPFS (τίτλοι θεμάτων, περιεχόμενο μηνυμάτων και άλλα). Λόγω του τρόπου λειτουργίας % todo: insert reference +του IPFS, το περιεχόμενο που αναρτούν οι χρήστες πρέπει να καρφιτσώνεται από άλλους χρήστες ή αυτόνομες εφαρμογές, όπως η υπηρεσία Concordia Pinner, ώστε να είναι διαθέσιμο. Αν το περιεχόμενο δεν καρφιτσωθεί, τότε θα είναι διαθέσιμο στους υπόλοιπους χρήστες μόνο από %todo: fix gender stuff +τον/τη δημιουργό, έτσι αν αυτός/αυτή δεν είναι ενεργός/ενεργή στο δίκτυο, το περιεχόμενο θα είναι αδύνατο να βρεθεί. + +Η υπηρεσία συνδέεται στο blockchain από όπου παρακολουθεί την κατάσταση του συστήματος και ``ακούει'' για νέους χρήστες, θέματα και μηνύματα. Η υπηρεσία συνδέεται επίσης στο IPFS, έτσι όταν δημιουργηθεί νέο περιεχόμενο στο σύστημα το καρφιτσώνει αυτόματα. Με αυτό τον τρόπο, διατηρώντας την υπηρεσία πάντα διαθέσιμη, για παράδειγμα εκτελώντας τη σε περιβάλλον διακομιστή (server), διαβεβαιώνεται η διαθεσιμότητα του περιεχομένου. + +\subsubsection{Διανομή} + +Η υπηρεσία αυτή γίνεται διαθέσιμη για χρήση ως docker image μέσω του αποθετηρίου εικόνων dockerhub. Κατά την εκτέλεση της εικόνας οι χρήστες μπορούν μέσω μεταβλητών περιβάλλοντος να ορίσουν παραμέτρους της υπηρεσίας όπως τη διεύθυνση του εξυπηρετητή (host location), τη διεύθυνση του blockchain, τις διαδρομές αποθήκευσης των δεδομένων στο σύστημα και τις τοποθεσίες των υπηρεσιών Rendezvous Server και Contracts Provider. \ No newline at end of file diff --git a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.5.concordia-contracts-provider-service.tex b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.5.concordia-contracts-provider-service.tex new file mode 100644 index 0000000..f99d1b9 --- /dev/null +++ b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.5.concordia-contracts-provider-service.tex @@ -0,0 +1,18 @@ +\subsection{Concordia Contracts Provider} \label{subsection:4-3-5-concordia-contracts-provider-service} + +\subsubsection{Περιγραφή - Στόχοι υπηρεσίας} + +Η υπηρεσία Contracts Provider αποτελεί μία βοηθητική υπηρεσία η οποία υλοποιεί ένα απλό αποθετήριο για τα contract artifacts. Είναι γραμμένη σε Javascript και διαθέτει δύο HTTP \textenglish{endpoints}, ένα για τη μεταφόρτωση (upload) των artifacts προς την υπηρεσία και ένα για τη λήψη (download) από την υπηρεσία. Η υπηρεσία υποστηρίζει επίσης την επισύναψη ετικετών στα artifacts, όπως η έκδοση (version) ή το κλαδί ανάπτυξης (branch, για παράδειγμα \textenglish{master/develop}). Η αρχιτεκτονική της υπηρεσίας φαίνεται το σχήμα \ref{figure:4-3-concordia-contracts-provider-architecture}. + +\begin{figure}[H] + \centering + \includegraphics[width=.6\textwidth]{assets/figures/chapter-4/4.3.architecture-4.3.5.concordia-contracts-provider-architecture} + \caption{Αρχιτεκτονική υπηρεσίας Concordia Contracts Provider} + \label{figure:4-3-concordia-contracts-provider-architecture} +\end{figure} + +Η υπηρεσία χρησιμοποιείται σε μία προσπάθεια αποσύνδεσης της βασικής εφαρμογής που υλοποιεί η υπηρεσία Concordia Application από μία συγκεκριμένη έκδοση των contracts. Οι λόγοι που αυτό είναι επιθυμητό αναπτύχθηκαν στην περιγραφή της υπηρεσίας Concordia \textenglish{Application} (υποενότητα \ref{subsection:4-3-2-concordia-application-service}). Ωστόσο, η υπηρεσία Contracts Provider αποτελεί σημείο κεντροποίησης του συστήματος, για το λόγο αυτό θεωρείται προσωρινή λύση η οποία θα μπορούσε να αντικατασταθεί από αποκεντρωτικές λύσεις όπως η μεταφόρτωση των artifacts στο IPFS και ο διαμοιρασμός τους από εκεί. + +\subsubsection{Διανομή} + +Η υπηρεσία αυτή γίνεται διαθέσιμη για χρήση ως docker image μέσω του αποθετηρίου εικόνων dockerhub. Οι χρήστες μπορούν χρησιμοποιώντας μεταβλητές περιβάλλοντος να αλλάξουν παραμέτρους της εκτέλεσης όπως η διαδρομή αποθήκευσης των μεταφορτωμένων contract artifacts. \ No newline at end of file diff --git a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.6.ganache-service.tex b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.6.ganache-service.tex new file mode 100644 index 0000000..9f28f48 --- /dev/null +++ b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.6.ganache-service.tex @@ -0,0 +1,9 @@ +\subsection{Ganache} \label{subsection:4-3-6-ganache-service} + +\subsubsection{Περιγραφή - Στόχοι υπηρεσίας} + +Η υπηρεσία Ganache αποτελεί μία εφαρμογή τερματικού η οποία είναι μέρος της δωρεάν σουίτας ανοιχτού λογισμικού Truffle. Η εφαρμογή δημιουργεί ένα τοπικό, ιδιωτικό blockchain το οποίο ακολουθεί το πρότυπο του Ethereum. Επίσης, η εφαρμογή δρα ως miner στο δίκτυο, διεκπεραιώνοντας όλες τις συναλλαγές. + +\subsubsection{Διανομή} + +Για τη χρήση της υπηρεσίας αυτής αναπτύχθηκε μία νέα εικόνα docker που βασίζεται στην επίσημη εικόνα που διατίθεται από τη σουίτα και προσθέτει μερικές χρήσιμες λειτουργικότητες όπως η δυνατότητα αποκάλυψης των κλειδιών που δημιουργούνται κατά την εκτέλεση. Η υπηρεσία γίνεται διαθέσιμη για χρήση ως docker image μέσω του αποθετηρίου εικόνων dockerhub. Η εικόνα παρέχει τη δυνατότητα τροποποίησης των παραμέτρων εκτέλεσης με χρήση μεταβλητών περιβάλλοντος. Με αυτό τον τρόπο οι χρήστες μπορούν να αλλάξουν τον αριθμό των λογαριασμών που θα δημιουργηθούν, το ποσό του Ether που θα λάβει κάθε λογαριασμός καθώς και άλλες μεταβλητές. \ No newline at end of file diff --git a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.7.rendezvous-server-service.tex b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.7.rendezvous-server-service.tex new file mode 100644 index 0000000..5d6c638 --- /dev/null +++ b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.7.rendezvous-server-service.tex @@ -0,0 +1,9 @@ +\subsection{Rendezvous Server} \label{subsection:4-3-7-rendezvous-server-service} + +\subsubsection{Περιγραφή - Στόχοι υπηρεσίας} + +Η υπηρεσία Rendezvous Server αποτελεί δωρεάν λογισμικό ανοιχτού κώδικα το οποίο χρησιμοποιήθηκε (αλλά δεν αναπτύχθηκε) στα πλαίσια της διπλωματικής και υλοποιεί το πρωτόκολλο rendezvous για την εύρεση ομότιμων χρηστών (peers). Η υπηρεσία είναι απαραίτητη για τη λειτουργία του IPFS, ώστε οι ομότιμοι χρήστες (peers) να μπορούν να ανακαλύψουν τις διευθύνσεις των υπόλοιπων χρηστών του δικτύου. + +\subsubsection{Διανομή} + +Η υπηρεσία αυτή είναι διαθέσιμη για χρήση από τους δημιουργούς της τόσο ως εφαρμογή μέσω του αποθετηρίου λογισμικού npm αλλά και ως docker image μέσω του αποθετηρίου εικόνων dockerhub. \ No newline at end of file diff --git a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.8.service-communication.tex b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.8.service-communication.tex new file mode 100644 index 0000000..41f99c7 --- /dev/null +++ b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.8.service-communication.tex @@ -0,0 +1,26 @@ +\subsection{Διασύνδεση υπηρεσιών} \label{subsection:4-3-8-service-communication} + +Στο μοντέλο των μικροϋπηρεσιών, βασικό χαρακτηριστικό είναι η επικοινωνία των ξεχωριστών υπηρεσιών και η ανταλλαγή μηνυμάτων για την επίτευξη των λειτουργικοτήτων του συστήματος. Σε αυτήν την υποενότητα θα αναλυθεί ο τρόπος με τον οποίο οι μικροϋπηρεσίες επικοινωνούν μεταξύ τους καθώς και η φύση και το περιεχόμενο των μηνυμάτων που ανταλλάσουν. + +Στο παρακάτω σχήμα (σχήμα \ref{figure:4-3-communications-graph}) φαίνεται ο γράφος που οπτικοποιεί τα κανάλια επικοινωνίας μεταξύ των μικροϋπηρεσιών, καθώς και τα κανάλια επικοινωνίας των μικροϋπηρεσιών με το blockchain. + +\begin{figure}[H] + \centering + \includegraphics[width=.9\textwidth]{assets/figures/chapter-4/4.3.communications-diagram.png} + \caption{Γράφος οπτικοποίησης των καναλιών επικοινωνίας των μικροϋπηρεσιών} + \label{figure:4-3-communications-graph} +\end{figure} + +Εδώ αναλύεται η επικοινωνία κάθε μικροϋπηρεσίας: + +\begin{itemize} + \item \textbf{Contracts Migrator}: η υπηρεσία εκτελεί αίτημα HTTP κατά την μεταφόρτωση των \textenglish{contracts} στο Ethereum blockchain, επίσης εκτελεί αίτημα HTTP για την μεταφόρτωση των contract artifacts στην υπηρεσία Contracts Provider + + \item \textbf{Concordia Application}: η υπηρεσία εκτελεί αίτημα HTTP για την λήψη των contract \textenglish{artifacts} από την υπηρεσία Contracts Provider, εκτελεί αιτήματα HTTP για την διενέργεια συναλλαγών στο Ethereum blockchain και τέλος δημιουργεί κανάλι UDP επικοινωνίας με την υπηρεσία Rendezvous Server για την ανακάλυψη ομότιμων χρηστών (peers) στο δίκτυο IPFS + + \item \textbf{Pinner}: η υπηρεσία εκτελεί αίτημα HTTP για την λήψη των contract artifacts από την υπηρεσία Contracts Provider, εκτελεί αιτήματα HTTP για την ανανέωση και παρατήρηση της κατάστασης του contract στο Ethereum blockchain και τέλος δημιουργεί κανάλι UDP επικοινωνίας με την υπηρεσία Rendezvous Server για την ανακάλυψη peers στο δίκτυο IPFS + + \item \textbf{Rendezvous Server}: η υπηρεσία διατηρεί ανοιχτά κανάλια UDP επικοινωνίας με τους ομότιμους χρήστες μέσω των οποίων ενημερώνει την λίστα των διαθέσιμων, ενεργών χρηστών + + \item \textbf{Contracts Provider}: η υπηρεσία δεν υποκινεί καμία επικοινωνία παρά μόνο απαντά σε αιτήματα επικοινωνία από άλλες υπηρεσίες +\end{itemize} \ No newline at end of file diff --git a/chapters/4.application-implementation/4.3.implementation-architecture/4.3.9.data-flow.tex b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.9.data-flow.tex new file mode 100644 index 0000000..dc7b133 --- /dev/null +++ b/chapters/4.application-implementation/4.3.implementation-architecture/4.3.9.data-flow.tex @@ -0,0 +1,28 @@ +\subsection{Ροή πληροφορίας} \label{subsection:4-3-9-data-flow} + +Στην παρούσα υποενότητα θα αναλυθεί η ροή της πληροφορίας στο σύστημα. Λόγω των πολλαπλών υπηρεσιών, της κατάτμησης την πληροφορίας και των διαφορετικών σημείων αποθήκευσης της, η ροή της πληροφορίας στο σύστημα ακολουθεί ένα σχετικά περίπλοκο μονοπάτι (σε σχέση με κλασσικές, μονολιθικές, κεντροποιημένες εφαρμογές). + +Αρχικά θα γίνει αναφορά στη διαδικασία αποθήκευσης των νέων πληροφοριών. Η μοναδική πηγή παραγωγής δεδομένων στο σύστημα είναι οι χρήστες και κατ' επέκταση η υπηρεσία Concordia Application, εφόσον είναι η μοναδική υπηρεσία με την οποία αυτοί αλληλεπιδρούν. Τα δεδομένα που δημιουργούν οι χρήστες (πληροφορίες χρηστών, τίτλοι θεμάτων και περιεχόμενο μηνυμάτων) κατατέμνονται πριν αποθηκευτούν. Η πληροφορία που εισάγεται στο σύστημα διαχωρίζεται σε δύο μέρη. Στο blockchain αποθηκεύεται ένας δείκτης προς τα δεδομένα, ενώ τα πραγματικά δεδομένα αποθηκεύονται στη βάση OrbitDB. Ο δείκτης εκτός από την άμεση χρησιμότητα στην εύρεση των δεδομένων, παρέχει και την έμμεση λειτουργικότητα της δημιουργίας απαραίτητων μεταδομένων όπως ο αριθμός των θεμάτων στο σύστημα ή των μηνυμάτων σε ένα θέμα. + +Από την πλευρά της εύρεση των πληροφοριών στο σύστημα, η ροή είναι ως εξής. Αρχικά, είναι απαραίτητη η αναζήτηση στο blockchain για την εύρεση του δείκτη προς τα δεδομένα. Έπειτα, τα δεδομένα μπορούν να ανακτηθούν μέσω του IPFS από τον εκάστοτε χρήστη ή από κάποιον Pinner. + +Τέλος, παρακάτω δίνεται ένα παράδειγμα εισαγωγής πληροφορίας στο σύστημα και έπειτα ανάκτησης της ίδιας πληροφορίας. + +Έστω, χρήστης που δημιουργεί νέο θέμα. Τα δεδομένα που παράγονται είναι ο τίτλος του θέματος και το περιεχόμενο του πρώτου μηνύματος. Μεταδεδομένα της δημιουργίας είναι η διεύθυνση του/της δημιουργού του θέματος. Για την αποθήκευση του θέματος στο σύστημα δημιουργείται πρώτα συναλλαγή στο blockchain ώστε να δημιουργηθεί μία νέα εγγραφή στον πίνακα των θεμάτων. Η εγγραφή αυτή δεν περιέχει τίποτα παρά μόνο τη διεύθυνση του/της δημιουργού χρήστη. Αν η συναλλαγή είναι επιτυχής, θα επιστραφεί ο αύξων αριθμός του νέου θέματος. Έπειτα, στην προσωπική βάση OrbitDB του/της χρήστη και στον πίνακα των θεμάτων θα προστεθεί εγγραφή με αναγνωριστικό τον αύξων αριθμό του θέματος όπου θα αποθηκευτούν τα δεδομένα του τίτλου και πρώτου μηνύματος. Στο σχήμα \ref{figure:4-3-data-flow-insert} παρουσιάζεται γραφικά η διαδικασία. + +% todo: UML diagrams might be wrong, should the ethereum and orbitDb blocks be continuous? +\begin{figure}[H] + \centering + \includegraphics[width=.7\textwidth]{assets/figures/chapter-4/4.3.architecture-4.3.9.data-flow-insert.png} + \caption{Διάγραμμα ακολουθίας δημιουργίας θέματος} + \label{figure:4-3-data-flow-insert} +\end{figure} + +Έστω, χρήστης που επιθυμεί να διαβάσει το προηγούμενο μήνυμα. Αρχικά, πρέπει να διαβαστεί ο πίνακας θεμάτων από το blockchain. Η πληροφορία αυτή εμπλουτίζεται από τα δεδομένα του κάθε θέματος, τα οποία ανακτώνται από τις προσωπικές βάσεις Orbit κάθε χρήστη. Έπειτα, εφόσον το θέμα βρεθεί και ο αύξων αριθμός του είναι γνωστός, πρέπει να διαβαστούν από το blockchain τα μεταδομένα των μηνυμάτων του θέματος και συγκεκριμένα η διευθύνσεις των δημιουργών τους. Τέλος, μέσω του IPFS πρέπει να γίνει αντιγραφή των προσωπικών βάσεων των δημιουργών του κάθε μηνύματος και να αναζητηθούν σε αυτές τα εκάστοτε μηνύματα. Στο σχήμα \ref{figure:4-3-data-flow-read} φαίνεται το διάγραμμα ροής της πληροφορίας κατά την ανάκτηση πληροφοριών από το σύστημα. + +\begin{figure}[H] + \centering + \includegraphics[width=.7\textwidth]{assets/figures/chapter-4/4.3.architecture-4.3.9.data-flow-read.png} + \caption{Διάγραμμα ακολουθίας εύρεσης και ανάκτησης θέματος} + \label{figure:4-3-data-flow-read} +\end{figure} \ No newline at end of file diff --git a/thesis.pdf b/thesis.pdf index e293b20702aba1346c1f9564896deb8848662feb..adcd9ba843a16c0ece1caba0a65845b9abdb2366 100644 GIT binary patch delta 61613 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 delta 61466 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�SI=Bmg7`Bn0#mNEk>2NEAp6NE}E4ND@d2NE%26 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 HOC$V0<+#Qg