diff --git a/assets/figures/orbitdb-logo.png b/assets/figures/chapter-4/4.3.orbitdb-logo.png similarity index 100% rename from assets/figures/orbitdb-logo.png rename to assets/figures/chapter-4/4.3.orbitdb-logo.png diff --git a/bibliography/references.bib b/bibliography/references.bib index c7ee9ea..760470d 100644 --- a/bibliography/references.bib +++ b/bibliography/references.bib @@ -117,18 +117,18 @@ url = {https://proto.school/merkle-dags/} } -@misc{2.8-orbitdb, +@online{4.2-github-flow, + author = {GitHub Guides}, + title = {Understanding the GitHub flow}, + url = {https://guides.github.com/introduction/flow/} +} + +@misc{4.3-orbitdb, title = {OrbitDB}, url = {https://orbitdb.org} } -@misc{2.8-orbitdb-guide, +@misc{4.3-orbitdb-guide, title = {Getting Started with OrbitDB}, url = {https://github.com/orbitdb/orbit-db/blob/main/GUIDE.md} -} - -@online{4.2-github-flow, - author = {GitHub Guides}, - title = {Understanding the GitHub flow}, - url = {https://guides.github.com/introduction/flow/} -} +} \ No newline at end of file diff --git a/chapters/2.theoretical-background/2.0.theoretical-background.tex b/chapters/2.theoretical-background/2.0.theoretical-background.tex index 8db6c15..a621d5b 100644 --- a/chapters/2.theoretical-background/2.0.theoretical-background.tex +++ b/chapters/2.theoretical-background/2.0.theoretical-background.tex @@ -6,5 +6,4 @@ \input{chapters/2.theoretical-background/2.4.p2p-networks} \input{chapters/2.theoretical-background/2.5.blockchain} \input{chapters/2.theoretical-background/2.6.ethereum} -\input{chapters/2.theoretical-background/2.7.ipfs} -\input{chapters/2.theoretical-background/2.8.orbit-db} \ No newline at end of file +\input{chapters/2.theoretical-background/2.7.ipfs} \ No newline at end of file diff --git a/chapters/4.application-implementation/4.3.implementation-technology-stack.tex b/chapters/4.application-implementation/4.3.implementation-technology-stack.tex index 01795a5..64b565b 100644 --- a/chapters/4.application-implementation/4.3.implementation-technology-stack.tex +++ b/chapters/4.application-implementation/4.3.implementation-technology-stack.tex @@ -3,3 +3,5 @@ TODO: add ganache, truffle TODO: add additional technologies like redux, sagas, express, nodejs, docker TODO: add jenkins, janus and build steps diagram + +\input{chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.1.orbit-db.tex} diff --git a/chapters/2.theoretical-background/2.8.orbit-db.tex b/chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.1.orbit-db.tex similarity index 89% rename from chapters/2.theoretical-background/2.8.orbit-db.tex rename to chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.1.orbit-db.tex index 99c115f..4882055 100644 --- a/chapters/2.theoretical-background/2.8.orbit-db.tex +++ b/chapters/4.application-implementation/4.3.implementation-technology-stack/4.3.1.orbit-db.tex @@ -1,12 +1,12 @@ -\section{OrbitDB} \label{section:2-8-orbit-db} +\subsection{OrbitDB} \label{subsection:4-3-1-orbit-db} \begin{figure}[H] \centering - \includegraphics[width=2cm]{assets/figures/orbitdb-logo.png} + \includegraphics[width=2cm]{assets/figures/chapter-4/4.3.orbitdb-logo.png} \caption{OrbitDB logo} \end{figure} -Η OrbitDB είναι μία P2P βάση δεδομένων ανοιχτού κώδικα. Χρησιμοποιεί το IPFS για την αποθήκευση των δεδομένων και το IPFS Pubsub για τον αυτόματο συγχρονισμό των βάσεων δεδομένων μεταξύ των peers. Είναι τελικά συνεπής (eventually consistent) και χρησιμοποιεί CRDTs (Conflict-Free Replicated Data Types) για συγχωνεύσεις βάσεων δεδομένων χωρίς συγκρούσεις, πράγμα που την καθιστά εξαιρετική επιλογή για DApps και offline-first web applications.\cite{2.8-orbitdb} +Η OrbitDB είναι μία P2P βάση δεδομένων ανοιχτού κώδικα. Χρησιμοποιεί το IPFS για την αποθήκευση των δεδομένων και το IPFS Pubsub για τον αυτόματο συγχρονισμό των βάσεων δεδομένων μεταξύ των peers. Είναι τελικά συνεπής (eventually consistent) και χρησιμοποιεί CRDTs (Conflict-Free Replicated Data Types) για συγχωνεύσεις βάσεων δεδομένων χωρίς συγκρούσεις, πράγμα που την καθιστά εξαιρετική επιλογή για DApps και offline-first web applications.\cite{4.3-orbitdb} Κάποια Βασικά χαρακτηριστικά της είναι τα εξής: \begin{itemize} @@ -22,7 +22,7 @@ Όλα τα stores υλοποιούνται πάνω στο \texttt{ipfs-log}, μία αμετάβλητη, operation-based CRDT για κατανεμημένα συστήματα, ενώ υπάρχει και η δυνατότητα δημιουργίας προσαρμοσμένων stores ανάλογα με την περίπτωση. - \item \textbf{Address}: Κάθε βάση δεδομένων λαμβάνει κατά τη δημιουργία της μία διεύθυνση της μορφής \texttt{/orbitdb/CID/DATABASE\_NAME}, όπου \texttt{CID} είναι το IPFS multihash του μανιφέστου της και \texttt{DATABASE\_NAME} το όνομα της βάσης.\cite{2.8-orbitdb-guide} Το μανιφέστο είναι ένα IPFS object που περιέχει πληροφορίες της βάσης όπως το όνομα, τον τύπο και έναν δείκτη στον ελεγκτή πρόσβασης (access controller). + \item \textbf{Address}: Κάθε βάση δεδομένων λαμβάνει κατά τη δημιουργία της μία διεύθυνση της μορφής \texttt{/orbitdb/CID/DATABASE\_NAME}, όπου \texttt{CID} είναι το IPFS multihash του μανιφέστου της και \texttt{DATABASE\_NAME} το όνομα της βάσης.\cite{4.3-orbitdb-guide}Το μανιφέστο είναι ένα IPFS object που περιέχει πληροφορίες της βάσης όπως το όνομα, τον τύπο και έναν δείκτη στον ελεγκτή πρόσβασης (access controller). \item \textbf{Identity}: Κάθε φορά που προστίθεται μία εγγραφή στη βάση υπογράφεται από τον δημιουργό της, ο οποίος προσδιορίζεται από μία ταυτότητα (identity). Το Identity object, πέρα από τον προεπιλεγμένο τρόπο λειτουργίας, μπορεί να προσαρμοστεί έτσι ώστε να συνδέεται με κάποιο εξωτερικό αναγνωριστικό. Η μορφή του έχει ως εξής\footnote{Βλ. και \url{https://github.com/orbitdb/orbit-db-identity-provider}}: diff --git a/thesis.pdf b/thesis.pdf index 09e51ee..28d7ffb 100644 Binary files a/thesis.pdf and b/thesis.pdf differ