After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 97 KiB |
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 122 KiB |
After Width: | Height: | Size: 689 KiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 57 KiB |
After Width: | Height: | Size: 2.4 MiB |
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 112 KiB |
@ -1,8 +1,8 @@ |
|||||
\section{Τεχνολογίες υλοποίησης} |
\section{Τεχνολογίες υλοποίησης} \label{subsection:4-3-implementation-technology-stack} |
||||
|
|
||||
Η παρούσα ενότητα απαρτίζεται από υποενότητες, στις οποίες διατυπώνονται τις βασικές τεχνολογίες που χρησιμοποιήθηκαν για την υλοποίηση της εφαρμογής. |
Η παρούσα ενότητα απαρτίζεται από υποενότητες, στις οποίες διατυπώνονται οι \textbf{σημαντικότερες} τεχνολογίες που χρησιμοποιήθηκαν για την υλοποίηση της εφαρμογής. Όλες οι τεχνολογίες αποτελούν δωρεάν λογισμικό ανοιχτού κώδικα. |
||||
|
|
||||
\input{chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.1.ui-technologies.tex} |
\input{chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.1.development-technologies} |
||||
\input{chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.2.ethereum-technologies.tex} |
\input{chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.2.ui-technologies} |
||||
\input{chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.3.ipfs-technologies.tex} |
\input{chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.3.ethereum-technologies} |
||||
\input{chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.4.development-technologies.tex} |
\input{chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.4.ipfs-technologies} |
||||
|
@ -0,0 +1,9 @@ |
|||||
|
\subsection{Τεχνολογίες σχετικές με το development} |
||||
|
|
||||
|
Σε αυτήν την υποενότητα περιγράφονται ορισμένα θεμελιώδη εργαλεία και frameworks που συνετέλεσαν στην ανάπτυξη της εφαρμογής. |
||||
|
|
||||
|
%TODO: Add janus and build steps diagram |
||||
|
|
||||
|
\input{chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.1.development-technologies/4.3.1.1.node.js} |
||||
|
\input{chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.1.development-technologies/4.3.1.2.docker} |
||||
|
\input{chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.1.development-technologies/4.3.1.3.jenkins} |
@ -0,0 +1,9 @@ |
|||||
|
\subsubsection{Node.js} \label{subsection:4-3-1-1-node.js} |
||||
|
|
||||
|
\logo{chapter-4/4.3.node.js-logo}{Node.js logo} |
||||
|
|
||||
|
Το Node.js\footnote{\url{https://nodejs.org/}} είναι ένα περιβάλλον χρόνου εκτέλεσης Javascript πολλαπλών πλατφορμών, το οποίο εκτελείται στη μηχανή V8\footnote{\url{https://v8.dev/}} και παρέχει τη δυνατότητα εκτέλεσης κώδικα Javascript εκτός περιηγητών ιστού. Επιτρέπει στους προγραμματιστές να χρησιμοποιούν Javascript για τη σύνταξη εργαλείων γραμμής εντολών και τη δημιουργία κλιμακωτών διαδικτυακών εφαρμογών (κυρίως για εξυπηρετητές). Έχει αρχιτεκτονική βασισμένη σε συμβάντα (event-driven architecture), με δυνατότητα ασύγχρονης εισόδου/εξόδου (asynchronous I/O).\cite{4.3-node.js} |
||||
|
|
||||
|
Ένα από τα σημαντικότερα χαρακτηριστικά του Node.js είναι ο ενσωματωμένος διαχειριστής πακέτων του, ο οποίος ονομάζεται npm. Με τον npm γίνεται εφικτή η εγκατάσταση πακέτων (βιβλιοθηκών) από το μητρώο npm (npm registry\footnote{\url{https://www.npmjs.com/}}), καθώς και η οργάνωση και η διαχείρισή τους στα πλαίσια της ανάπτυξης μίας εφαρμογής που εξαρτάται από αυτά. |
||||
|
|
||||
|
Το Node.js έχει το αποθετήριό του στο GitHub (\url{https://github.com/nodejs/node}). |
@ -0,0 +1,15 @@ |
|||||
|
\subsubsection{Docker} \label{subsection:4-3-1-2-docker} |
||||
|
|
||||
|
\logo{chapter-4/4.3.docker-logo}{Docker logo} |
||||
|
|
||||
|
Το Docker αποτελεί μία πλατφόρμα η οποία παρέχει λογισμικό εικονοποίησης (virtualization) στο επίπεδο του λειτουργικού συστήματος καθώς και ολοκληρωμένα συστήματα διαμοιρασμού και εκτέλεσης των παραγόμενων εικόνων. |
||||
|
|
||||
|
Δίνει την δυνατότητα σύνθεσης εικονικών περιβαλλόντων λειτουργικού συστήματος τα οποία ονομάζονται εικόνες (images). Μέσα στις εικόνες είναι δυνατή η εκτέλεση προγραμμάτων σε ασφαλή, απομονωμένα και προβλέψιμα περιβάλλοντα τα οποία εγγυούνται τις ίδιες συνθήκες εκτέλεσης παντού. Έτσι, οι προγραμματιστές δεν χρειάζεται να ανησυχούν για το περιβάλλον εκτέλεσης του κώδικα και την ρύθμιση των παραμέτρων σε κάθε ξεχωριστή εγκατάσταση. |
||||
|
|
||||
|
Ταυτόχρονα, η πλατφόρμα του Docker παρέχει συστήματα και τυποποιημένες μεθόδους για το πακετάρισμα των εικόνων, την μεταφόρτωση και την εκτέλεσή τους σε απομακρυσμένα συστήματα. Με αυτό τον τρόπο αποτελεί πολύτιμο εργαλείο το οποίο έχει γίνει το στάνταρ στη βιομηχανία λογισμικού για τον διαμοιρασμό και την εγκατάσταση ολοκληρωμένων εφαρμογών σε περιβάλλοντα δοκιμής (staging environments) και παραγωγής (production environment). |
||||
|
|
||||
|
Τέλος, η δυνατότητα τοπικής εκτέλεσης των εικόνων στο σύστημα ανάπτυξης του κώδικα δίνει την ευκαιρία ελέγχου (testing) και αποσφαλμάτωσης (debug) τοπικά σε ένα περιβάλλον ίδιο με αυτό της εκτέλεσης. Αυτό είναι εξαιρετικά σημαντικό επειδή αποκλείει τυχών μεταβολές στην πορεία εκτέλεσης του προγράμματος που μπορεί να έρχονταν από την εκτέλεση σε ένα διαφορετικό περιβάλλον. |
||||
|
|
||||
|
% example citations |
||||
|
% Merkel, Dirk. “Docker: Lightweight Linux Containers for Consistent Development and Deployment.” Linux Journal, vol. 2014, no. 239, 2014, p. 2. |
||||
|
% Anderson, Charles. “Docker [Software Engineering].” IEEE Software, vol. 32, no. 3, 2015. |
@ -0,0 +1,14 @@ |
|||||
|
\subsubsection{Jenkins} \label{subsection:4-3-1-3-jenkins} |
||||
|
|
||||
|
\logo{chapter-4/4.3.jenkins-logo}{Jenkins logo} |
||||
|
|
||||
|
Το Jenkins είναι ένας πλήρως παραμετροποιήσιμος και επεκτάσιμος διακομιστής αυτοματοποίησης (automation server). Ο διακομιστής μπορεί να αυτοματοποιήσει τις διαδικασίες ελέγχου, ολοκλήρωσης, παράδοσης και εγκατάστασης του κώδικα, υλοποιώντας έτσι βασικές διαδικασίες που ορίζει το DevOps, συνεχή έλεγχο (continuous testing), συνεχή ολοκλήρωση (continuous integration), συνεχή παράδοση (continuous delivery) και συνεχή εγκατάσταση (continuous deployment). Επίσης, το Jenkins μπορεί να παραμετροποιηθεί μέσω των ρυθμίσεων που προσφέρει και των επεκτάσεων (plugins) που υπάρχουν ώστε να παρέχει τις δυνατότητες αυτές για οποιαδήποτε πλατφόρμα, γλώσσα και περιβάλλον ανάπτυξης. |
||||
|
|
||||
|
Στο Jenkins είναι δυνατός ο ορισμός με χρήση κώδικα (σε Groovy και στο DSL που παρέχεται από το Jenkins) πολλαπλών γραμμών εργασιών (pipeline). Οι γραμμές εργασιών συντίθενται από πολλαπλά βήματα τα οποία επιτελούν ξεχωριστούς στόχους προς το τελικό αποτέλεσμα της γραμμής. Τα βήματα μπορούν να τρέχουν σειριακά ή παράλληλα. Ενώ δίνεται η δυνατότητα εκτέλεσης σε πολλαπλά, διανεμημένα συστήματα καθώς και άλλες προχωρημένες λειτουργικότητες. |
||||
|
|
||||
|
Το Jenkins συνδυάζεται αποτελεσματικά με την πλατφόρμα του Docker που περιγράφηκε προηγουμένως. Μέσω του συνδυασμού δίνεται η ευκαιρία της αυτοματοποίησης του μεγαλύτερου μέρους του DevOps σε ένα απολύτως προβλέψιμο περιβάλλον το οποίο παραμένει σταθερό από την ανάπτυξη του κώδικα μέχρι την τελική εγκατάσταση. Με αυτή την μέθοδο βελτιώνεται σημαντικά η αποτελεσματικότητα των ομάδων ανάπτυξης κώδικα. |
||||
|
|
||||
|
% example citations |
||||
|
% Shahin, Mojtaba, et al. “Continuous Integration, Delivery and Deployment: A Systematic Review on Approaches, Tools, Challenges and Practices.” IEEE Access, vol. 5, 2017, pp. 3909–3943. |
||||
|
% Meyer, Mathias. “Continuous Integration and Its Tools.” IEEE Software, vol. 31, no. 3, 2014, pp. 14–16. |
||||
|
% Virmani, Manish. “Understanding DevOps & Bridging the Gap from Continuous Integration to Continuous Delivery.” Fifth International Conference on the Innovative Computing Technology (INTECH 2015), 2015, pp. 78–82. |
@ -1,5 +0,0 @@ |
|||||
\subsection{Τεχνολογίες σχετικές με το UI} |
|
||||
|
|
||||
Στην παρούσα υποενότητα θα περιγραφούν όσες τεχνολογίες σχετίζονται με τη διεπαφή του χρήστη (UI), δηλαδή με το Presentation tier. |
|
||||
|
|
||||
% TODO: add technologies like redux, sagas |
|
@ -1,5 +0,0 @@ |
|||||
\subsection{Τεχνολογίες σχετικές με το Ethereum} |
|
||||
|
|
||||
Στην παρούσα υποενότητα θα περιγραφούν εκείνες οι τεχνολογίες που σχετίζονται με το Ethereum, δηλαδή με το Application tier. |
|
||||
|
|
||||
% TODO: add ganache, truffle |
|
@ -0,0 +1,9 @@ |
|||||
|
\subsection{Τεχνολογίες σχετικές με το UI} |
||||
|
|
||||
|
Στην παρούσα υποενότητα περιγράφονται όσες τεχνολογίες σχετίζονται με τη διεπαφή του χρήστη (UI), δηλαδή με το Presentation tier. |
||||
|
|
||||
|
% TODO: add technologies like redux, sagas |
||||
|
|
||||
|
\input{chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.2.ui-technologies/4.3.2.1.react} |
||||
|
\input{chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.2.ui-technologies/4.3.2.2.redux} |
||||
|
\input{chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.2.ui-technologies/4.3.2.3.redux-saga} |
@ -0,0 +1,11 @@ |
|||||
|
\subsubsection{React} \label{subsection:4-3-2-1-react} |
||||
|
|
||||
|
\logo{chapter-4/4.3.react-logo}{React logo} |
||||
|
|
||||
|
Η React\footnote{\url{https://reactjs.org/}} αποτελεί βιβλιοθήκη Javascript, η οποία χρησιμοποιείται για την κατασκευή διεπαφών χρήστη. Είναι δηλωτική (declarative) και βασίζεται σε components, τα οποία διαχειρίζονται την κατάστασή τους (state) και συντίθενται για να δημιουργήσουν πολύπλοκα διαδραστικά UIs. |
||||
|
|
||||
|
%TODO: When https://2021.stateofjs.com/en-US/ is available, add to the paragraph above that is the most popular js front-end framework (by usage), according to https://2020.stateofjs.com/en-US/technologies/front-end-frameworks/ and also add this beautiful chart. |
||||
|
|
||||
|
Ένα σημαντικό εργαλείο για την ταχεία ανάπτυξη web εφαρμογών σε React είναι το Create React App\footnote{\url{https://create-react-app.dev/}}. Με τη χρήση μίας και μόνο εντολής (\texttt{npx create-react-app my-app}), εγκαθίσταται αυτόματα ένας development server σε περιβάλλον Node.js (ως μία μοναδική βιβλιοθήκη). Αυτός εμπεριέχει μία πληθώρα από build tools (π.χ. Webpack, Babel, ESLint), τα οποία προσφέρουν ισχυρές δυνατότητες, όπως άμεσα reloads και παραγωγή βελτιστοποιημένων bundles. Έτσι, η διαδικασία της υλοποίησης αποκτά ποικίλες διευκολύνσεις, χωρίς να απαιτεί την εκμάθηση, την χειροκίνητη εγκατάσταση και την προηγμένη διαμόρφωση των τεχνολογιών στο εσωτερικό. |
||||
|
|
||||
|
Η React έχει το αποθετήριό της στο GitHub (\url{https://github.com/facebook/react/}) και διατίθεται μέσω του μητρώου npm (\url{https://www.npmjs.com/package/react}). |
@ -0,0 +1,27 @@ |
|||||
|
\subsubsection{Redux} \label{subsection:4-3-2-1-redux} |
||||
|
|
||||
|
\logo{chapter-4/4.3.redux-logo}{Redux logo} |
||||
|
|
||||
|
Το Redux\footnote{\url{https://redux.js.org/}} αποτελεί μία βιβλιοθήκη Javascript, η χρήση της οποίας προσφέρει στην εφαρμογή ένα πλήρως διαχειρίσιμο global state. |
||||
|
|
||||
|
%TODO: When https://2021.stateofjs.com/en-US/ is available, add to the paragraph above that is the most popular data layer technology (by usage), according to https://2020.stateofjs.com/en-US/technologies/datalayer/ and also add this beautiful chart. |
||||
|
|
||||
|
|
||||
|
Τα δομικά στοιχεία του Redux είναι τα εξής: |
||||
|
\begin{itemize} |
||||
|
\item \textbf{Actions}: Αντικείμενα τα οποία περιέχουν νέα πληροφορία για την τροποποίηση του state της εφαρμογής. |
||||
|
\item \textbf{Reducers}: Συναρτήσεις οι οποίες λαμβάνοντας ένα action και διαβάζοντας το τρέχον state, εφαρμόζουν κάποια λογική για την παραγωγή ενός νέου state. |
||||
|
\item \textbf{Store}: Το αντικείμενο στο οποίο βρίσκεται αποθηκευμένο το state της εφαρμογής. Η βασική ιδιότητα του state είναι ότι παραμένει αμετάβλητο και, για την ανανέωσή του, παράγεται πάντα ένα νέο state object μέσω των reducer. |
||||
|
\item \textbf{Middleware}: Προαιρετικά κομμάτια κώδικα που λαμβάνουν actions πριν εκείνα φτάσουν στους reducers και εκτελούν κάποιο side effect. Συνήθως χρησιμοποιούνται για ενέργειες όπως logging και error reporting ή για να ενώσουν το Redux με εξωτερικά APIs. |
||||
|
\end{itemize} |
||||
|
|
||||
|
Αν και το ίδιο το Redux είναι μικροσκοπικό σε μέγεθος, ο τρόπος υλοποίησής του έχει επιτρέψει τη δημιουργία ενός τεράστιου οικοσυστήματος εργαλείων και επεκτάσεων, τα οποία συνδέονται μαζί του ή βασίζονται σε αυτό. Για παράδειγμα, μία από τις κύριες χρήσεις του είναι η κατασκευή διεπαφών χρήστη σε συνδύασμό με άλλες βιβλιοθήκες, όπως με την React. Σε αυτήν την περίπτωση, συνδέεται μαζί της με το npm πακέτο \texttt{react-redux} και η λειτουργία του υπό ανάπτυξη UI προκύπτει ως εξής: |
||||
|
|
||||
|
%TODO: Add proper diagram |
||||
|
\begin{figure}[H] |
||||
|
\centering |
||||
|
\includegraphics[width=.75\textwidth]{assets/figures/chapter-4/4.3.react-redux} |
||||
|
\caption{Λειτουργία του Redux σε συνδυασμό με React} |
||||
|
\end{figure} |
||||
|
|
||||
|
Το Redux έχει το αποθετήριό του στο GitHub (\url{https://github.com/reduxjs/redux}) και διατίθεται μέσω του μητρώου npm (\url{https://www.npmjs.com/package/redux}). |
@ -0,0 +1,7 @@ |
|||||
|
\subsubsection{Redux-Saga} \label{subsection:4-3-2-3-redux-saga} |
||||
|
|
||||
|
\logo{chapter-4/4.3.redux-saga-logo}{Redux-Saga logo} |
||||
|
|
||||
|
Το Redux-Saga\footnote{\url{https://redux.js.org/}} αποτελεί μία βιβλιοθήκη Javascript του οικοσυστήματος του Redux. Πρόκειται για ένα Redux middleware, το οποίο χρησιμοποιεί ESG generator functions\footnote{\url{https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function*}} για την εκτέλεση και διαχείριση ποικίλων ασύγχρονων side effect. Αυτές οι συναρτήσεις (sagas) παρέχουν μία πληθώρα επιλογών για την παράλληλη εκτέλεση κώδικα που μπορεί να σχετίζεται με εξωτερικά APIs, όπως με ένα blockchain ή μία βάση δεδομένων. Με αυτόν τον τρόπο, τα τελευταία μπορούν να συμπεριληφθούν στο κεντρικό Redux store και τη διαχείριση του συνολικού state της εφαρμογής. |
||||
|
|
||||
|
Το Redux-Saga έχει το αποθετήριό του στο GitHub (\url{https://github.com/redux-saga/redux-saga}) και διατίθεται μέσω του μητρώου npm (\url{https://www.npmjs.com/package/redux-saga}). |
@ -0,0 +1,6 @@ |
|||||
|
\subsection{Τεχνολογίες σχετικές με το Ethereum} \label{subsection:4-3-3-ethereum-technologies} |
||||
|
|
||||
|
Στην παρούσα υποενότητα περιγράφονται εκείνες οι τεχνολογίες που σχετίζονται με το Ethereum, δηλαδή με το Application tier της τεχνολογικής στοίβας. |
||||
|
|
||||
|
\input{chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.3.ethereum-technologies/4.3.3.1.truffle} |
||||
|
\input{chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.3.ethereum-technologies/4.3.3.2.ganache} |
@ -0,0 +1,11 @@ |
|||||
|
\subsubsection{Truffle} \label{subsection:4-3-3-1-truffle} |
||||
|
|
||||
|
\logo{chapter-4/4.3.truffle-logo}{Truffle logo} |
||||
|
|
||||
|
Το Truffle\footnote{\url{https://trufflesuite.com/truffle/}} είναι ένα από τα δημοφιλέστερα Ethereum development frameworks και αποτελεί τμήμα της σουίτας Truffle. |
||||
|
|
||||
|
Μέσω του Truffle πραγματοποιείται η διαχείριση των έξυπνων συμβολαίων. Αυτή περιλαμβάνει τη δοκιμή, τη σύνδεση και τη μεταγλώττισή τους, καθώς και την ανάπτυξη τους στο blockchain. |
||||
|
|
||||
|
Επίσης, το Truffle περιέχει πρόσθετα σχετικά εργαλεία, όπως διαδραστική κονσόλα για άμεση αλληλεπίδραση με τα contracts και εκτελεστής εξωτερικών σεναρίων (external script runner). |
||||
|
|
||||
|
Έχει το αποθετήριό του στο GitHub (\url{https://github.com/trufflesuite/truffle}) και διατίθεται μέσω του μητρώου npm (\url{https://www.npmjs.com/package/truffle}). |
@ -0,0 +1,21 @@ |
|||||
|
\subsubsection{Ganache} \label{subsection:4-3-3-2-ganache} |
||||
|
|
||||
|
\logo{chapter-4/4.3.ganache-logo}{Ganache logo} |
||||
|
|
||||
|
Το Ganache\footnote{\url{https://trufflesuite.com/ganache/}} είναι ένα λογισμικό που παρέχει ένα βοηθητικό προσωπικό Ethereum blockchain για ταχεία ανάπτυξη αποκεντρωμένων εφαρμογών και αποτελεί επίσης τμήμα της σουίτας Truffle. Διατίθεται τόσο ως desktop εφαρμογή με UI, όσο και ως CLI (command-line interface). |
||||
|
|
||||
|
To Ganache παρέχει ισχυρά εργαλεία για την ανάπτυξη έξυπνων συμβολαίων, όπως: |
||||
|
\begin{itemize} |
||||
|
\item Block explorer, μέσω του οποίου μπορούν να εξεταστούν λεπτομερώς όλα τα blocks και οι συναλλαγές που έλαβαν χώρα. |
||||
|
\item Εξρεύνηση των εσωτερικών των contracts και των πυροδοτημένων event τους. |
||||
|
\item Ενδελεχές αρχείο καταγραφής της εξόδου του blockchain, το οποίο περιλαμβάνει σημαντικές πληροφορίες για τον εντοπισμό σφαλμάτων. |
||||
|
\item Δυνατότητα διαμόρφωσης του χρόνου εξόρυξης των block, έτσι ώστε να αρμόζει με τις εκάστοτε ανάγκες (αυτόματη εξόρυξη ή εξόρυξη σε προσαρμοσμένο χρονικό διάστημα). |
||||
|
\end{itemize} |
||||
|
|
||||
|
\begin{figure}[H] |
||||
|
\centering |
||||
|
\includegraphics[width=.95\textwidth]{assets/figures/chapter-4/4.3.ganache-gui} |
||||
|
\caption{Ganache (desktop εφαρμογή)} |
||||
|
\end{figure} |
||||
|
|
||||
|
Το Ganache έχει το αποθετήριό του στο GitHub (\url{https://github.com/trufflesuite/ganache}) και διατίθεται μέσω του μητρώου npm (\url{https://www.npmjs.com/package/ganache}). |
@ -1,5 +0,0 @@ |
|||||
\subsection{Τεχνολογίες σχετικές με το IPFS} |
|
||||
|
|
||||
Στην παρούσα υποενότητα θα περιγραφούν όσες τεχνολογίες σχετίζονται με το IPFS, δηλαδή με το Data tier. |
|
||||
|
|
||||
\input{chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.3.ipfs-technologies/4.3.3.1.orbit-db.tex} |
|
@ -1,5 +0,0 @@ |
|||||
\subsection{Τεχνολογίες σχετικές με το development} |
|
||||
|
|
||||
Σε αυτήν την υποενότητα θα περιγραφούν εργαλεία και frameworks που συνετέλεσαν στην ανάπτυξη της εφαρμογής. |
|
||||
|
|
||||
% TODO: add nodejs, docker, jenkins, janus and build steps diagram |
|
@ -0,0 +1,7 @@ |
|||||
|
\subsection{Τεχνολογίες σχετικές με το IPFS} |
||||
|
|
||||
|
Σε αυτήν την υποενότητα περιγράφονται όσες τεχνολογίες σχετίζονται με το IPFS (βλ. ενότητα \ref{section:2-7-ipfs}), δηλαδή με το Data tier της τεχνολογικής στοίβας της εφαρμογής. |
||||
|
|
||||
|
\input{chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.4.ipfs-technologies/4.3.4.1.js-ipfs} |
||||
|
\input{chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.4.ipfs-technologies/4.3.4.2.orbit-db} |
||||
|
\input{chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.4.ipfs-technologies/4.3.4.3.libp2p} |
@ -0,0 +1,7 @@ |
|||||
|
\subsubsection{js-ipfs} \label{subsection:4-3-4-1-js-ipfs} |
||||
|
|
||||
|
\logo{chapter-4/4.3.js-ipfs-logo}{js-ipfs logo} |
||||
|
|
||||
|
H υλοποίηση του IPFS που χρησιμοποείται στην εφαρμογή Concordia είναι αυτή σε Javascript και ονομάζεται js-ipfs. Μέσω αυτής της βιβλιοθήκης, παρέχεται η δυνατότητα δημιουργίας ενός IPFS κόμβου, τόσο σε έναν Node.js server, όσο και σε ένα περιβάλλον browser. |
||||
|
|
||||
|
Το js-ipfs έχει το αποθετήριό του στο GitHub (\url{https://github.com/ipfs/js-ipfs}) και διατίθεται μέσω του μητρώου npm (\url{https://www.npmjs.com/package/ipfs}). |
@ -0,0 +1,9 @@ |
|||||
|
\subsubsection{Libp2p} \label{subsection:4-3-4-3-libp2p} |
||||
|
|
||||
|
\logo{chapter-4/4.3.libp2p-logo}{Libp2p logo} |
||||
|
|
||||
|
Η libp2p είναι ένα αρθρωτό σύστημα πρωτοκόλλων, προδιαγραφών και βιβλιοθηκών που επιτρέπουν την ανάπτυξη p2p εφαρμογών. Αποτελεί το υποκείμενο επίπεδο δικτύου του IPFS.\ref{2.7-ipfs-docs} |
||||
|
|
||||
|
Ένα από τα υλοποιημένα πρωτόκολλα μεταφοράς δεδομένων της libp2p είναι το libp2p-webrtc-star\footnote{\url{https://github.com/libp2p/js-libp2p-webrtc-star}}. Αποτελεί το πρωτόκολλο μεταφοράς δεδομένων της εφαρμογής, καθώς υποστηρίζεται τόσο από Node.js servers, όσο και από browsers. Περιλαμβάνει, επίσης, έναν signalling server, που επιτρέπει τη γρήγορη διασύνδεση των peers. |
||||
|
|
||||
|
Το libp2p-webrtc-star έχει το αποθετήριό του στο GitHub (\url{https://github.com/libp2p/js-libp2p-webrtc-star}) και διατίθεται μέσω του μητρώου npm (\url{https://www.npmjs.com/package/libp2p-webrtc-star}). |