diff --git a/assets/figures/chapter-3/3.2.technology.stack.png b/assets/figures/chapter-3/3.2.technology.stack.png new file mode 100644 index 0000000..cca9ec6 Binary files /dev/null and b/assets/figures/chapter-3/3.2.technology.stack.png differ diff --git a/assets/figures/chapter-3/simple_dapp_stack.png b/assets/figures/chapter-3/simple_dapp_stack.png deleted file mode 100644 index d53e7c0..0000000 Binary files a/assets/figures/chapter-3/simple_dapp_stack.png and /dev/null differ diff --git a/bibliography/references.bib b/bibliography/references.bib index 760470d..ce2931a 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 = {8}, - 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 = 8, + 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={9}, - journal={First Monday}, - volume={2}, - number={9}, -} - + title = {Formalizing and Securing Relationships on Public Networks}, + author = {Szabo, Nick}, + year = 1997, + month = 9, + 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/} } - @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/} } - @misc{4.3-orbitdb, - title = {OrbitDB}, - url = {https://orbitdb.org} + title = {OrbitDB}, + url = {https://orbitdb.org} } - @misc{4.3-orbitdb-guide, - title = {Getting Started with OrbitDB}, - url = {https://github.com/orbitdb/orbit-db/blob/main/GUIDE.md} -} \ No newline at end of file + title = {Getting Started with OrbitDB}, + url = {https://github.com/orbitdb/orbit-db/blob/main/GUIDE.md} +} 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..8202535 100644 --- a/chapters/3.application-design/3.2.technology-stack.tex +++ b/chapters/3.application-design/3.2.technology-stack.tex @@ -1,25 +1,20 @@ \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}: Πρόκειται για το επίπεδο που πραγματοποιεί την επεξεργασία (\textenglish{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: Create proper diagram \begin{figure}[H] \centering - \includegraphics[width=.75\textwidth]{assets/figures/chapter-3/simple_dapp_stack} + \includegraphics[width=.75\textwidth]{assets/figures/chapter-3/3.2.technology.stack} \caption{Τεχνολογική στοίβα} \end{figure} diff --git a/thesis.pdf b/thesis.pdf index fb2bb36..964c845 100644 Binary files a/thesis.pdf and b/thesis.pdf differ