diff --git a/assets/figures/chapter-3/user_categories.png b/assets/figures/chapter-3/user_categories.png deleted file mode 100644 index 32b6cff..0000000 Binary files a/assets/figures/chapter-3/user_categories.png and /dev/null differ diff --git a/bibliography/references.bib b/bibliography/references.bib index a851e4b..52cb42f 100644 --- a/bibliography/references.bib +++ b/bibliography/references.bib @@ -1,134 +1,115 @@ % See also: https://www.overleaf.com/learn/latex/bibliography_management_with_bibtex - @misc{1.2-ethereum-learn, - title = {Μάθετε για το Ethereum}, - urldate = {2021-03-16}, - url = {https://ethereum.org/el/learn/} + title = {Μάθετε για το Ethereum}, + url = {https://ethereum.org/el/learn/}, + urldate = {2021-03-16} } - @online{1.2-the-meaning-of-decentralization, - author = {Vitalik Buterin}, - title = {The Meaning of Decentralization}, - date = {2017-02-06}, - url = {https://medium.com/@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274} + title = {The Meaning of Decentralization}, + author = {Vitalik Buterin}, + url = {https://medium.com/@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274}, + date = {2017-02-06} } - @book{1.2-virtual-migration, - author = {Aneesh, A.}, - title = {Virtual Migration}, - date = {2006}, - OPTpublisher = {Duke University Press} + title = {Virtual Migration}, + author = {Aneesh, A.}, + date = 2006, + optpublisher = {Duke University Press} } - @article{2.2-ecdsa, - author = {Johnson, Don and Menezes, Alfred and Vanstone, Scott}, - title = {The Elliptic Curve Digital Signature Algorithm (ECDSA)}, - year = {2001}, - month = {Aug.}, - url = {https://doi.org/10.1007/s102070100002}, - journal = {International Journal of Information Security}, - doi = {10.1007/s102070100002} -} - + title = {The Elliptic Curve Digital Signature Algorithm (ECDSA)}, + author = {Johnson, Don and Menezes, Alfred and Vanstone, Scott}, + year = 2001, + month = {Aug.}, + journal = {International Journal of Information Security}, + doi = {10.1007/s102070100002}, + url = {https://doi.org/10.1007/s102070100002} +} @online{2.3-merkle-tree, - author = {Wikipedia}, - title = {Merkle tree}, - url = {https://en.wikipedia.org/wiki/Merkle_tree} + title = {Merkle tree}, + author = {Wikipedia}, + url = {https://en.wikipedia.org/wiki/Merkle_tree} } - @online{2.3-merkle-proofs-explained, - author = {Belavadi Prahalad}, - title = {Merkle proofs Explained.}, - date = {2018-01-07}, - url = {https://medium.com/crypto-0-nite/merkle-proofs-explained-6dd429623dc5} + title = {Merkle proofs Explained.}, + author = {Belavadi Prahalad}, + url = {https://medium.com/crypto-0-nite/merkle-proofs-explained-6dd429623dc5}, + date = {2018-01-07} } - @inproceedings{2.4-p2p-networking, - author={Schollmeier, R.}, - booktitle={Proceedings First International Conference on Peer-to-Peer Computing}, - title={A Definition of Peer-to-Peer Networking for the Classification of Peer-to-Peer Architectures and Applications}, - year={2001}, - pages={101-102}, - doi={10.1109/P2P.2001.990434} -} - + title = {A Definition of Peer-to-Peer Networking for the Classification of Peer-to-Peer Architectures and Applications}, + author = {Schollmeier, R.}, + year = 2001, + booktitle = {Proceedings First International Conference on Peer-to-Peer Computing}, + pages = {101--102}, + doi = {10.1109/P2P.2001.990434} +} @article{2.5-bitcoin, - author = {Nakamoto, Satoshi}, - date = {2008-10-31}, - title = {Bitcoin: A Peer-to-Peer Electronic Cash System}, - journal = {Cryptography Mailing list at https://metzdowd.com} + title = {Bitcoin: A Peer-to-Peer Electronic Cash System}, + author = {Nakamoto, Satoshi}, + journal = {Cryptography Mailing list at https://metzdowd.com}, + date = {2008-10-31} } - @misc{2.5-blockchain, - author = {Wikipedia}, - title = {Blockchain}, - url = {https://en.wikipedia.org/wiki/Blockchain} + title = {Blockchain}, + author = {Wikipedia}, + url = {https://en.wikipedia.org/wiki/Blockchain} } - @online{2.6-ethereum-whitepaper, - author = {Vitalik Buterin}, - title = {Ethereum Whitepaper}, - date = {2013}, - urldate = {2021-06-28}, - url = {https://ethereum.org/en/whitepaper} + title = {Ethereum Whitepaper}, + author = {Vitalik Buterin}, + url = {https://ethereum.org/en/whitepaper}, + urldate = {2021-06-28}, + date = 2013 } - @online{2.6-ethereum-documentation, - author = {Ethereum community}, - title = {Ethereum documentation}, - urldate = {2021-09-05}, - url = {https://ethereum.org/en/developers/docs/} + title = {Ethereum documentation}, + author = {Ethereum community}, + url = {https://ethereum.org/en/developers/docs/}, + urldate = {2021-09-05} } - @article{2.6-ethereum-smart-contracts, - author={Szabo, Nick}, - title={Formalizing and Securing Relationships on Public Networks}, - url={https://journals.uic.edu/ojs/index.php/fm/article/view/548}, - doi={10.5210/fm.v2i9.548}, - year={1997}, - month={Sep.}, - journal={First Monday}, - volume={2}, - number={9}, -} - + title = {Formalizing and Securing Relationships on Public Networks}, + author = {Szabo, Nick}, + year = 1997, + month = {Sep.}, + journal = {First Monday}, + volume = 2, + number = 9, + doi = {10.5210/fm.v2i9.548}, + url = {https://journals.uic.edu/ojs/index.php/fm/article/view/548} +} @book{2.6-ethereum-mastering, - author = {Andreas M Antonopoulos, Gavin Wood}, - title = {Mastering Ethereum: Building Smart Contracts and DApps}, - date = {2018}, - publisher = {O'Reilly Media}, - isbn = {1491971940 }, - OPTurl = {https://cypherpunks-core.github.io/ethereumbook/}, -} - + title = {Mastering Ethereum: Building Smart Contracts and DApps}, + author = {Andreas M Antonopoulos, Gavin Wood}, + publisher = {O'Reilly Media}, + isbn = {1491971940}, + date = 2018, + opturl = {https://cypherpunks-core.github.io/ethereumbook/} +} @misc{2.7-ipfs, - title = {IPFS}, - url = {https://ipfs.io/} + title = {IPFS}, + url = {https://ipfs.io/} } - @misc{2.7-ipfs-docs, - title = {IPFS documentation}, - url = {https://docs.ipfs.io/} + title = {IPFS documentation}, + url = {https://docs.ipfs.io/} } - @misc{2.7-merkle-dags-proto-school, - author = {ProtoSchool}, - title = {Merkle DAGs: Structuring Data for the Distributed Web}, - url = {https://proto.school/merkle-dags/} + title = {Merkle DAGs: Structuring Data for the Distributed Web}, + author = {ProtoSchool}, + url = {https://proto.school/merkle-dags/} } - @misc{2.8-orbitdb, - title = {OrbitDB}, - url = {https://orbitdb.org} + title = {OrbitDB}, + url = {https://orbitdb.org} } - @misc{2.8-orbitdb-guide, - title = {Getting Started with OrbitDB}, - url = {https://github.com/orbitdb/orbit-db/blob/main/GUIDE.md} + 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/} + title = {Understanding the GitHub flow}, + author = {GitHub Guides}, + url = {https://guides.github.com/introduction/flow/} } diff --git a/chapters/2.theoretical-background/2.7.ipfs.tex b/chapters/2.theoretical-background/2.7.ipfs.tex index 37edab2..fcf4a02 100644 --- a/chapters/2.theoretical-background/2.7.ipfs.tex +++ b/chapters/2.theoretical-background/2.7.ipfs.tex @@ -1,4 +1,4 @@ -\section{IPFS} +\section{IPFS} \label{section:2-7-ipfs} \begin{figure}[H] \centering diff --git a/chapters/3.application-design/3.1.idea-conception.tex b/chapters/3.application-design/3.1.idea-conception.tex index 0bde6a2..f8f08d3 100644 --- a/chapters/3.application-design/3.1.idea-conception.tex +++ b/chapters/3.application-design/3.1.idea-conception.tex @@ -7,3 +7,5 @@ Η δεύτερη διάσταση εστιάζει στον χώρο της ψηφιακής δημοκρατίας (digital democracy). Συγκεκριμένα, παρατηρείται έλλειψη εργαλείων, ικανών να παρέχουν τη δυνατότητα διενέργειας αυθεντικών δημοκρατικών διαδικασιών. Ψηφοφορίες και αυτοδιαχείριση εντός συστημάτων κεντροποιημένης λογικής αδυνατούν, για αρχιτεκτονικούς λόγους, να εξασφαλίσουν τις απαραίτητες θεμελιώδεις ιδιότητες τέτοιων διαδικασιών, δηλαδή της ανωνυμίας και της επαληθευσιμότητας. Βάσει των παραπάνω, γεννήθηκε η ιδέα δημιουργίας μίας εφαρμογής, η οποία, μέσω ενός προτεινόμενου συνδυασμού αποκεντρωτικών τεχνολογιών, να ορίσει έναν ψηφιακό χώρο που θα έρθει αντιμέτωπος με τα παραπάνω. Έτσι, κεντρικός στόχος της πιλοτικής εφαρμογής Concordia, είναι να αποτελέσει μία αυτόνομη κοινωνική πλατφόρμα, που θα κατοχυρώνει στους χρήστες της ελευθερία του λόγου και πλήρη κυριότητα επί των δεδομένων τους. Επιπλέον, θα παρέχει τη δυνατότητα διενέργειας αυθεντικών, ανώνυμων ψηφοφοριών, κάτι που θα την καθιστά ένα αξιόπιστο δημοκρατικό βήμα για τη λήψη αποφάσεων εντός αυτοδιαχειριζόμενων κοινοτήτων της. + +\newpage \ No newline at end of file diff --git a/chapters/3.application-design/3.2.technology-stack.tex b/chapters/3.application-design/3.2.technology-stack.tex index ae9a426..fdf2557 100644 --- a/chapters/3.application-design/3.2.technology-stack.tex +++ b/chapters/3.application-design/3.2.technology-stack.tex @@ -1,23 +1,18 @@ \section{Τεχνολογική στοίβα} \label{section:3-2-technology-stack} -% TODO: Add React/ Redux +Ξεκινώντας τη σχεδίαση της πλατφόρμας, πραγματοποιήθηκε έρευνα για την επιλογή της τεχνολογικής της στοίβας (technology stack). Αυτή αποφασίστηκε να ακολουθήσει μία προσαρμοσμένη για τα δεδομένα μορφή τριμερούς διάταξης\footnote{Η τριμερής διάταξη (three-tier architecture) διαχωρίζει μία εφαρμογή σε τρία ανεξάρτητα λειτουργικά επίπεδα και αποτελεί την κυρίαρχη επιλογή για διατάξεις παραδοσιακών εφαρμογών πελάτη-εξυπηρετητή.} και να χωριστεί σε τρία λογικά επίπεδα (tiers): -\subsection{Ethereum} +\begin{enumerate} + \item \textbf{Presentation tier}: Αποτελεί τη διεπαφή του χρήστη (user interface ή UI), μέσω της οποίας ο τελευταίος αλληλεπιδρά με την εφαρμογή. Για την εκπλήρωση των προδιαγραφών, το μοναδικό απαραίτητο χαρακτηριστικό αυτού του τμήματος είναι να μπορεί να εκτελείται αυτούσιο από τη συσκευή του τελικού χρήστη, δηλαδή να μην απαιτείται η ύπαρξη κάποιου εξυπηρετητή για τη λειτουργία του. Λαμβάνοντας, επιπροσθέτως, υπόψιν τις ανάγκες και τους περιορισμούς των λογισμικών των άλλων δύο επιπέδων, το παρόν κομμάτι αποφασίστηκε να σχεδιαστεί ως μία client-side web application σε HTML/CSS/JS. -Ξεκινώντας την σχεδίαση της πλατφόρμας πραγματοποιήσαμε έρευνα ώστε να ανακαλύψουμε τις πιθανές επιλογές για το κομμάτι της διανεμημένης επεξεργασίας (\textenglish{distributed computing}). Αναλογιστήκαμε τα προτερήματα και μειονεκτήματα διάφορων επιλογών, συμπεριλαμβανομένων των ... + \item \textbf{Application tier}: Πρόκειται για το επίπεδο που πραγματοποιεί την επεξεργασία (processing) της εφαρμογης. Εδώ επιλέχθηκαν το blockchain και τα smart contracts, καθώς τα θετικά τους χαρακτηριστικά, όπως αυτά περιγράφηκαν στο κεφάλαιο \ref{chapter:2-theoretical-background}, ταίριαξαν απόλυτα με τις ιδιαίτερες απαιτήσεις της εφαρμογής. Συγκεκριμένα, επιλέχθηκε η πλατφόρμα του Ethereum, καθώς αποτελεί τον πρωτοπόρο στο χώρο, με λειτουργικές εφαρμογές και την ισχυρότερη κοινότητα. -Επιλέξαμε να προχωρήσουμε με το Ethereum και όχι κάποια άλλη πλατφόρμα επειδή ... + \item \textbf{Data tier}: Το τμήμα αυτό είναι υπεύθυνο για την αποθήκευση των δεδομένων (storage). Για την επίτευξη πλήρους αρχιτεκτονικής αποκέντρωσης των δεδομένων επιλέχθηκε το IPFS (ενότητα \ref{section:2-7-ipfs}), το οποίο διανέμει το περιεχόμενο της εφαρμογής στους peers που συμμετέχουν σε αυτήν. +\end{enumerate} +Τελικά, με τη διασύνδεση των προαναφερθέντων τεχνολογιών, προκύπτει σχηματικά η ακόλουθη διάταξη: -\subsection{IPFS, OrbitDB} - -Όπως η επιλογή του Blockchain, που περιγράφηκε στο προηγούμενο κεφάλαιο (\textenglish{insert reference}), ομοίως και η επιλογή του λογισμικού που θα χρησιμοποιηθεί για την κατανεμημένη αποθήκευση δεδομένων ξεκίνησε με μία έρευνα των επιλογών που υπάρχουν. Αναλογιστήκαμε τα προτερήματα και μειονεκτήματα διάφορων επιλογών, συμπεριλαμβανομένων των ... - -Επιλέξαμε να προχωρήσουμε με το IPFS και την OrbitDB έναντι άλλων λύσεων επειδή ... - -Η OrbitDB είναι ... και χρησιμοποιεί το IPFS για να καταφέρει τα εξής χαρακτηριστικά ... -Περιορισμοί πάλι κλπ .... - +% TODO: change this \begin{figure}[H] \centering \includegraphics[width=.75\textwidth]{assets/figures/chapter-3/simple_dapp_stack} 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..b2b2633 100644 --- a/chapters/4.application-implementation/4.3.implementation-technology-stack.tex +++ b/chapters/4.application-implementation/4.3.implementation-technology-stack.tex @@ -1,5 +1,5 @@ \section{Τεχνολογίες υλοποίησης} TODO: add ganache, truffle -TODO: add additional technologies like redux, sagas, express, nodejs, docker +TODO: add additional technologies like react, redux, sagas, express, nodejs, docker TODO: add jenkins, janus and build steps diagram diff --git a/thesis.pdf b/thesis.pdf index 4c4db27..9537145 100644 Binary files a/thesis.pdf and b/thesis.pdf differ