Browse Source

Merge branch 'develop' into refactor/apostolof-improvements

# Conflicts:
#	thesis.pdf
develop
Apostolos Fanakis 3 years ago
parent
commit
d419f1540e
Signed by: Apostolof GPG Key ID: 8600B4C4163B3269
  1. BIN
      assets/figures/chapter-2/2.1.hash-functions-1.png
  2. BIN
      assets/figures/chapter-2/2.1.hash-functions-2.png
  3. BIN
      assets/figures/chapter-2/2.4.p2p-networks.png
  4. 5
      bibliography/references.bib
  5. 4
      chapters/2.theoretical-background/2.1.hash-functions.tex
  6. 2
      chapters/2.theoretical-background/2.3.merkle-trees.tex
  7. 8
      chapters/2.theoretical-background/2.4.p2p-networks.tex
  8. 2
      chapters/2.theoretical-background/2.5.blockchain.tex
  9. 3
      chapters/2.theoretical-background/2.7.ipfs.tex
  10. 6
      chapters/3.application-design/3.1.idea-conception.tex
  11. 6
      chapters/3.application-design/3.4.user-categories.tex
  12. 2
      chapters/3.application-design/3.7.architecture-design.tex
  13. 6
      chapters/3.application-design/3.8.implementation-methodology-specification.tex
  14. BIN
      thesis.pdf

BIN
assets/figures/chapter-2/2.1.hash-functions-1.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 138 KiB

BIN
assets/figures/chapter-2/2.1.hash-functions-2.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 410 KiB

After

Width:  |  Height:  |  Size: 411 KiB

BIN
assets/figures/chapter-2/2.4.p2p-networks.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

5
bibliography/references.bib

@ -95,11 +95,6 @@
title = {IPFS documentation},
url = {https://docs.ipfs.io/}
}
@misc{2.7-merkle-dags-proto-school,
title = {Merkle DAGs: Structuring Data for the Distributed Web},
author = {ProtoSchool},
url = {https://proto.school/merkle-dags/}
}
@online{4.1-github-flow,
title = {Understanding the GitHub flow},
author = {GitHub Guides},

4
chapters/2.theoretical-background/2.1.hash-functions.tex

@ -4,7 +4,7 @@
\begin{figure}[H]
\centering
\includegraphics[width=.95\textwidth]{assets/figures/chapter-2/2.1.hash-functions-1.png}
\includegraphics[width=.9\textwidth]{assets/figures/chapter-2/2.1.hash-functions-1.png}
\caption{Λειτουργία συνάρτησης κατακερματισμού}
\end{figure}
@ -19,7 +19,7 @@
\begin{figure}[H]
\centering
\includegraphics[width=.95\textwidth]{assets/figures/chapter-2/2.1.hash-functions-2.png}
\includegraphics[width=.9\textwidth]{assets/figures/chapter-2/2.1.hash-functions-2.png}
\caption{Παράδειγμα λειτουργίας συνάρτησης κατακερματισμού}
\end{figure}

2
chapters/2.theoretical-background/2.3.merkle-trees.tex

@ -6,7 +6,7 @@
\begin{figure}[H]
\centering
\includegraphics[width=.95\textwidth]{assets/figures/chapter-2/2.3.merkle-tree.png}
\includegraphics[width=.85\textwidth]{assets/figures/chapter-2/2.3.merkle-tree.png}
\caption{Παράδειγμα δυαδικού δένδρου Merkle}
\end{figure}

8
chapters/2.theoretical-background/2.4.p2p-networks.tex

@ -1,6 +1,12 @@
\section{Δίκτυα Ομότιμων Κόμβων} \label{section:2-4-p2p-networks}
Τα δίκτυα ομότιμων κόμβων ή Peer-to-Peer (P2P) networks αποτελούν μία κατανεμημένη αρχιτεκτονική δικτύων, οι συμμετέχοντες (κόμβοι) της οποίας μοιράζονται ένα τμήμα των πόρων τους, με στόχο την παροχή κάποιας υπηρεσίας (π.χ. τον διαμοιρασμό περιεχομένου). Εν αντιθέσει με συγκεντρωτικά δίκτυα τύπου client/server, οι κόμβοι (nodes) έχουν απευθείας πρόσβαση στους πόρους, χωρίς τη διαμεσολάβηση ενδιάμεσων οντοτήτων. Οι συμμετέχοντες ενός τέτοιου δικτύου είναι, δηλαδή, ταυτόχρονα, τόσο πάροχοι, όσο και αιτούντες των πόρων και της παρεχόμενης υπηρεσίας.\cite{2.4-p2p-networking}
Τα δίκτυα ομότιμων κόμβων ή Peer-to-Peer (P2P) networks αποτελούν μία κατανεμημένη αρχιτεκτονική δικτύων, οι συμμετέχοντες (κόμβοι) της οποίας μοιράζονται ένα τμήμα των πόρων τους, με στόχο την παροχή κάποιας υπηρεσίας (π.χ. τον διαμοιρασμό περιεχομένου). Εν αντιθέσει με συγκεντρωτικά δίκτυα τύπου client-server, οι κόμβοι (nodes) έχουν απευθείας πρόσβαση στους πόρους, χωρίς τη διαμεσολάβηση ενδιάμεσων οντοτήτων. Οι συμμετέχοντες ενός τέτοιου δικτύου είναι, δηλαδή, ταυτόχρονα, τόσο πάροχοι, όσο και αιτούντες των πόρων και της παρεχόμενης υπηρεσίας.\cite{2.4-p2p-networking}
\begin{figure}[H]
\centering
\includegraphics[width=.95\textwidth]{assets/figures/chapter-2/2.4.p2p-networks}
\caption{Αρχιτεκτονικές δικτύων client-server και P2P}
\end{figure}
Τα P2P networks μπορούν να χωριστούν σε δύο κατηγορίες:

2
chapters/2.theoretical-background/2.5.blockchain.tex

@ -1,6 +1,6 @@
\section{Blockchain} \label{section:2-5-blockchain}
Το blockchain αποτελεί μία διανεμημένη δημόσια σειρά δεδομένων, που διατηρεί έναν αμετάβλητο ως προς το ιστορικό του κατάλογο (immutable ledger) ψηφιακών συναλλαγών (digital transactions) ενός αγαθού (asset), π.χ. ενός νομίσματος (currency ή token). Περιγράφηκε για πρώτη φορά το 2008 από ένα άτομο (ή μία ομάδα ανθρώπων) γνωστό ως Satoshi Nakamoto, αποτελώντας τη βάση του κρυπτονομίσματος (cryptocurrency) Bitcoin.\cite{2.5-bitcoin}
Το blockchain αποτελεί μία διανεμημένη δημόσια σειρά δεδομένων, που διατηρεί έναν αμετάβλητο ως προς το ιστορικό του κατάλογο (immutable ledger) ψηφιακών συναλλαγών (digital transactions) ενός αγαθού (asset), π.χ. ενός νομίσματος (currency ή token). Περιγράφηκε για πρώτη φορά το 2008 από ένα άτομο (ή μία ομάδα ανθρώπων) με το ψευδώνυμο Satoshi Nakamoto, αποτελώντας τη βάση του κρυπτονομίσματος (cryptocurrency) Bitcoin.\cite{2.5-bitcoin}
Δομικό στοιχείο του blockchain είναι το μπλοκ (block), το οποίο περιέχει μία ομάδα έγκυρων συναλλαγών που έχουν κατακερματιστεί και κωδικοποιηθεί σε ένα δένδρο Merkle, το hash του προηγούμενου μπλοκ και μερικά ακόμα μεταδεδομένα (π.χ. nonce, timestamp). Έτσι, κάθε νέο μπλοκ "δείχνει" στο προηγούμενό του μέσω του hash, επιβεβαιώνοντας την ακεραιότητά του, με τα διαδεχόμενα μπλοκ να σχηματίζουν τελικά μία αλυσίδα, μέχρι το αρχικό μπλοκ, το οποίο είναι γνωστό ως το μπλοκ γένεσης (genesis block).\cite{2.5-blockchain}

3
chapters/2.theoretical-background/2.7.ipfs.tex

@ -13,8 +13,9 @@
\begin{enumitemcenteredfigure}
\includegraphics[width=.95\textwidth]{assets/figures/chapter-2/2.7.merkle-dag.png}
\caption{Merkle DAG\cite{2.7-merkle-dags-proto-school}}
\caption[Παράδειγμα Merkle DAG]{Παράδειγμα Merkle DAG\footnotemark}
\end{enumitemcenteredfigure}
\footnotetext{\url{https://proto.school/merkle-dags/}}
Στο παραπάνω Merkle DAG τα baf...i αποτελούν τα CID των αρχείων και των φακέλων. Το δένδρο δημιουργείται από κάτω προς τα πάνω, υπολογίζοντας κάθε φορά τα κατάλληλα hashes/CIDs. Σε περίπτωση που το περιεχόμενο ενός κόμβου αλλάξει, τότε αλλάζει τόσο το CID του, όσο και τα CIDs όλων των προγόνων του.
\item \textbf{Ανακάλυψη περιεχομένου μέσω κατανεμημένων πινάκων κατακερματισμού (\textenglish{Distributed Hash Tables ή DHTs})}. Ο DHT είναι ένα κατανεμημένο σύστημα για την αντιστοίχιση κλειδιών σε τιμές. Στο IPFS αποτελεί το θεμελιώδες συστατικό του συστήματος δρομολόγησης περιεχομένου και λειτουργεί ως διασταύρωση μεταξύ καταλόγου και συστήματος πλοήγησης. Πρακτικά πρόκειται για ένα πίνακα που αποθηκεύει ποιος έχει ποια δεδομένα και, μέσω του οποίου, ο χρήστης βρίσκει τον peer που έχει αποθηκευμένο το επιθυμητό περιεχόμενο.

6
chapters/3.application-design/3.1.idea-conception.tex

@ -1,11 +1,9 @@
\section{Σύλληψη της ιδέας} \label{section:3-1-idea-conception}
Η σύλληψη της ιδέας για τη δημιουργία της εφαρμογής της παρούσας διπλωματικής εργασίας είχε ως εφαλτήριο την αναγνώριση ενός διδιάστατου προβλήματος.
Η σύλληψη της ιδέας για τη δημιουργία της εφαρμογής της παρούσας διπλωματικής εργασίας έχει ως εφαλτήριο την αναγνώριση ενός διδιάστατου προβλήματος.
Η πρώτη διάσταση εστιάζει στον χώρο των μέσων κοινωνικής δικτύωσης. Εκεί παρατηρείται αδιαμφισβήτητη επικράτηση πλατφορμών επικοινωνίας συγκεντρωτικής μορφής (π.χ. Facebook, Twitter, Instagram), ενώ προσπάθειες δημιουργίας αντίστοιχων αποκεντρωτικών εφαρμογών βρίσκονται σε πρώιμα στάδια, τόσο ανάπτυξης, όσο και υιοθέτησης από το ευρύ κοινό. Όπως αναλύθηκε και στην ενότητα \ref{section:1-3-problem-definition}, η τρέχουσα αυτή κατάσταση θέτει αξιοσημείωτα προβλήματα τεχνικής φύσεως (έλλειψη ασφάλειας και διαθεσιμότητας) και, κυρίως, πολιτικής (έλλειψη εμπιστοσύνης, εγγύησης της αυθεντικότητας των δεδομένων και της ελευθερίας του λόγου).
Η δεύτερη διάσταση εστιάζει στον χώρο της ψηφιακής δημοκρατίας (digital democracy). Συγκεκριμένα, παρατηρείται έλλειψη εργαλείων, ικανών να παρέχουν τη δυνατότητα διενέργειας αυθεντικών δημοκρατικών διαδικασιών. Ψηφοφορίες και αυτοδιαχείριση εντός συστημάτων κεντροποιημένης λογικής αδυνατούν, για αρχιτεκτονικούς λόγους, να εξασφαλίσουν τις απαραίτητες θεμελιώδεις ιδιότητες τέτοιων διαδικασιών, δηλαδή της ανωνυμίας και της επαληθευσιμότητας.
Βάσει των παραπάνω, γεννήθηκε η ιδέα δημιουργίας μίας εφαρμογής, η οποία, μέσω ενός προτεινόμενου συνδυασμού αποκεντρωτικών τεχνολογιών, να ορίσει έναν ψηφιακό χώρο που θα έρθει αντιμέτωπος με τα παραπάνω. Έτσι, κεντρικός στόχος της πιλοτικής εφαρμογής Concordia, είναι να αποτελέσει μία αυτόνομη κοινωνική πλατφόρμα, που θα κατοχυρώνει στους χρήστες της ελευθερία του λόγου και πλήρη κυριότητα επί των δεδομένων τους. Επιπλέον, θα παρέχει τη δυνατότητα διενέργειας αυθεντικών, ανώνυμων ψηφοφοριών, κάτι που θα την καθιστά ένα αξιόπιστο δημοκρατικό βήμα για τη λήψη αποφάσεων εντός των αυτοδιαχειριζόμενων κοινοτήτων της.
\newpage
Αυτές οι παρατηρήσεις αποτέλεσαν την έμπνευση για τη δημιουργία μίας εφαρμογής, η οποία, μέσω ενός προτεινόμενου συνδυασμού αποκεντρωτικών τεχνολογιών, να ορίσει έναν ψηφιακό χώρο που θα έρθει αντιμέτωπος με το παραπάνω πρόβλημα. Έτσι, κεντρικός στόχος της πιλοτικής εφαρμογής Concordia, είναι να αποτελέσει μία αυτόνομη κοινωνική πλατφόρμα, που θα κατοχυρώνει στους χρήστες της ελευθερία του λόγου και πλήρη κυριότητα επί των δεδομένων τους. Επιπλέον, θα παρέχει τη δυνατότητα διενέργειας αυθεντικών, ανώνυμων ψηφοφοριών, κάτι που θα την καθιστά ένα αξιόπιστο δημοκρατικό βήμα για τη λήψη αποφάσεων εντός των αυτοδιαχειριζόμενων κοινοτήτων της.

6
chapters/3.application-design/3.4.user-categories.tex

@ -28,11 +28,11 @@
\begin{center}
\begin{tabularx}{\textwidth}{p{2.3cm} X X X X X X X X X}
\toprule
\multirow{7}{2.3cm}{Κατηγορία χρήστη} &\multicolumn{9}{c}{Δικαιώματα} \\ [0.5ex]
\multirow{7}{2.3cm}{\textbf{Κατηγορία χρήστη}} &\multicolumn{9}{c}{\textbf{Δικαιώματα}} \\ [0.5ex]
& \spheading{70}{6em}{Προβολή θεμάτων} & \spheading{70}{8em}{Προβολή μηνυμάτων} & \spheading{70}{8em}{Προβολή ψηφοφοριών} & \spheading{70}{8em}{Προβολή ψήφων μηνυμάτων} & \spheading{70}{8em}{Δημιουργία θεμάτων} & \spheading{70}{8em}{Δημιουργία μηνυμάτων} & \spheading{70}{8em}{Δημιουργία ψηφοφοριών} & \spheading{70}{8em}{Ψήφιση σε ψηφοφορίες} & \spheading{70}{8em}{Ψήφιση μηνυμάτων} \\ [0.5ex]
\midrule
Επισκέπτες & \textcolor{OliveGreen}{\faIcon{check}} & \textcolor{OliveGreen}{\faIcon{check}} & \textcolor{OliveGreen}{\faIcon{check}} & \textcolor{OliveGreen}{\faIcon{check}} & \textcolor{red}{\faIcon{times}} & \textcolor{red}{\faIcon{times}} & \textcolor{red}{\faIcon{times}} & \textcolor{red}{\faIcon{times}} & \textcolor{red}{\faIcon{times}} \\ [0.5ex]
Εγγεγραμμένα μέλη & \textcolor{OliveGreen}{\faIcon{check}} & \textcolor{OliveGreen}{\faIcon{check}} & \textcolor{OliveGreen}{\faIcon{check}} & \textcolor{OliveGreen}{\faIcon{check}} & \textcolor{OliveGreen}{\faIcon{check}} & \textcolor{OliveGreen}{\faIcon{check}} & \textcolor{OliveGreen}{\faIcon{check}}\tnote{*} & \textcolor{OliveGreen}{\faIcon{check}}\tnote{*} & \textcolor{OliveGreen}{\faIcon{check}} \\ [0.5ex]
Επισκέπτες & \ \textcolor{OliveGreen}{\faIcon{check}} & \ \textcolor{OliveGreen}{\faIcon{check}} & \ \textcolor{OliveGreen}{\faIcon{check}} & \ \textcolor{OliveGreen}{\faIcon{check}} & \ \textcolor{red}{\faIcon{times}} & \ \textcolor{red}{\faIcon{times}} & \ \textcolor{red}{\faIcon{times}} & \ \textcolor{red}{\faIcon{times}} & \ \textcolor{red}{\faIcon{times}} \\ [0.5ex]
Εγγεγραμμένα μέλη & \ \textcolor{OliveGreen}{\faIcon{check}} & \ \textcolor{OliveGreen}{\faIcon{check}} & \ \textcolor{OliveGreen}{\faIcon{check}} & \ \textcolor{OliveGreen}{\faIcon{check}} & \ \textcolor{OliveGreen}{\faIcon{check}} & \ \textcolor{OliveGreen}{\faIcon{check}} & \ \textcolor{OliveGreen}{\faIcon{check}}\tnote{*} & \ \textcolor{OliveGreen}{\faIcon{check}}\tnote{*} & \ \textcolor{OliveGreen}{\faIcon{check}} \\ [0.5ex]
\bottomrule
\end{tabularx}
\begin{tablenotes}

2
chapters/3.application-design/3.7.architecture-design.tex

@ -6,7 +6,7 @@
\begin{figure}[H]
\centering
\includegraphics[width=.75\textwidth]{assets/figures/chapter-3/3.7.architecture-design}
\includegraphics[width=\textwidth]{assets/figures/chapter-3/3.7.architecture-design}
\caption{Αρχιτεκτονική του συστήματος (στάδιο σχεδίασης)}
\end{figure}

6
chapters/3.application-design/3.8.implementation-methodology-specification.tex

@ -1,4 +1,8 @@
\section{Προδιαγραφή μεθόδου υλοποίησης και χρονοπρογραμματισμός} \label{section:3-8-implementation-methodology-specification}
\section[Προδιαγραφή μεθόδου υλοποίησης και χρονοπρογραμματισμός]{Προδιαγραφή μεθόδου υλοποίησης και χρονοπρογραμματισμός%
\sectionmark{Προδ. μεθόδου υλοποίησης \& χρονοπρογραμματισμός}}
\sectionmark{Προδ. μεθόδου υλοποίησης \& χρονοπρογραμματισμός}
\label{section:3-8-implementation-methodology-specification}
Κατά τον χρονοπρογραμματισμό ακολουθήθηκαν οι τακτικές που ορίζει το Scrum. Το συνολικό προγραμματιστικό έργο χωρίστηκε σε επιμέρους, διακριτούς στόχους και κάθε στόχος αντιστοιχήθηκε σε ένα Sprint. Τα Sprints αποτελούνται από επιμέρους διαχωρισμό της εργασίας σε epic tasks. Σε αυτό το στάδιο χρονοπρογραμματισμού δεν έγινε αναλυτικότερη περιγραφή των επιμέρους tasks, κάθε epic χωρίστηκε σε tasks κατά το αρχικό στάδιο της υλοποίησης του.

BIN
thesis.pdf

Binary file not shown.
Loading…
Cancel
Save