Browse Source

Merge branch 'feature/3-2-technology-stack' into develop

develop
Ezerous 3 years ago
parent
commit
0e924268ff
  1. BIN
      assets/figures/chapter-3/3.2.technology.stack.png
  2. BIN
      assets/figures/chapter-3/simple_dapp_stack.png
  3. 105
      bibliography/references.bib
  4. 2
      chapters/3.application-design/3.1.idea-conception.tex
  5. 23
      chapters/3.application-design/3.2.technology-stack.tex
  6. BIN
      thesis.pdf

BIN
assets/figures/chapter-3/3.2.technology.stack.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

BIN
assets/figures/chapter-3/simple_dapp_stack.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

105
bibliography/references.bib

@ -1,133 +1,114 @@
% See also: https://www.overleaf.com/learn/latex/bibliography_management_with_bibtex % See also: https://www.overleaf.com/learn/latex/bibliography_management_with_bibtex
@misc{1.2-ethereum-learn, @misc{1.2-ethereum-learn,
title = {Μάθετε για το Ethereum}, title = {Μάθετε για το Ethereum},
urldate = {2021-03-16}, url = {https://ethereum.org/el/learn/},
url = {https://ethereum.org/el/learn/} urldate = {2021-03-16}
} }
@online{1.2-the-meaning-of-decentralization, @online{1.2-the-meaning-of-decentralization,
author = {Vitalik Buterin},
title = {The Meaning of Decentralization}, title = {The Meaning of Decentralization},
date = {2017-02-06}, author = {Vitalik Buterin},
url = {https://medium.com/@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274} url = {https://medium.com/@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274},
date = {2017-02-06}
} }
@book{1.2-virtual-migration, @book{1.2-virtual-migration,
author = {Aneesh, A.},
title = {Virtual Migration}, title = {Virtual Migration},
date = {2006}, author = {Aneesh, A.},
OPTpublisher = {Duke University Press} date = 2006,
optpublisher = {Duke University Press}
} }
@article{2.2-ecdsa, @article{2.2-ecdsa,
author = {Johnson, Don and Menezes, Alfred and Vanstone, Scott},
title = {The Elliptic Curve Digital Signature Algorithm (ECDSA)}, title = {The Elliptic Curve Digital Signature Algorithm (ECDSA)},
year = {2001}, author = {Johnson, Don and Menezes, Alfred and Vanstone, Scott},
month = {8}, year = 2001,
url = {https://doi.org/10.1007/s102070100002}, month = 8,
journal = {International Journal of Information Security}, journal = {International Journal of Information Security},
doi = {10.1007/s102070100002} doi = {10.1007/s102070100002},
url = {https://doi.org/10.1007/s102070100002}
} }
@online{2.3-merkle-tree, @online{2.3-merkle-tree,
author = {Wikipedia},
title = {Merkle tree}, title = {Merkle tree},
author = {Wikipedia},
url = {https://en.wikipedia.org/wiki/Merkle_tree} url = {https://en.wikipedia.org/wiki/Merkle_tree}
} }
@online{2.3-merkle-proofs-explained, @online{2.3-merkle-proofs-explained,
author = {Belavadi Prahalad},
title = {Merkle proofs Explained.}, title = {Merkle proofs Explained.},
date = {2018-01-07}, author = {Belavadi Prahalad},
url = {https://medium.com/crypto-0-nite/merkle-proofs-explained-6dd429623dc5} url = {https://medium.com/crypto-0-nite/merkle-proofs-explained-6dd429623dc5},
date = {2018-01-07}
} }
@inproceedings{2.4-p2p-networking, @inproceedings{2.4-p2p-networking,
title = {A Definition of Peer-to-Peer Networking for the Classification of Peer-to-Peer Architectures and Applications},
author = {Schollmeier, R.}, author = {Schollmeier, R.},
year = 2001,
booktitle = {Proceedings First International Conference on Peer-to-Peer Computing}, 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}, pages = {101--102},
year={2001},
pages={101-102},
doi = {10.1109/P2P.2001.990434} doi = {10.1109/P2P.2001.990434}
} }
@article{2.5-bitcoin, @article{2.5-bitcoin,
author = {Nakamoto, Satoshi},
date = {2008-10-31},
title = {Bitcoin: A Peer-to-Peer Electronic Cash System}, title = {Bitcoin: A Peer-to-Peer Electronic Cash System},
journal = {Cryptography Mailing list at https://metzdowd.com} author = {Nakamoto, Satoshi},
journal = {Cryptography Mailing list at https://metzdowd.com},
date = {2008-10-31}
} }
@misc{2.5-blockchain, @misc{2.5-blockchain,
author = {Wikipedia},
title = {Blockchain}, title = {Blockchain},
author = {Wikipedia},
url = {https://en.wikipedia.org/wiki/Blockchain} url = {https://en.wikipedia.org/wiki/Blockchain}
} }
@online{2.6-ethereum-whitepaper, @online{2.6-ethereum-whitepaper,
author = {Vitalik Buterin},
title = {Ethereum Whitepaper}, title = {Ethereum Whitepaper},
date = {2013}, author = {Vitalik Buterin},
url = {https://ethereum.org/en/whitepaper},
urldate = {2021-06-28}, urldate = {2021-06-28},
url = {https://ethereum.org/en/whitepaper} date = 2013
} }
@online{2.6-ethereum-documentation, @online{2.6-ethereum-documentation,
author = {Ethereum community},
title = {Ethereum documentation}, title = {Ethereum documentation},
urldate = {2021-09-05}, author = {Ethereum community},
url = {https://ethereum.org/en/developers/docs/} url = {https://ethereum.org/en/developers/docs/},
urldate = {2021-09-05}
} }
@article{2.6-ethereum-smart-contracts, @article{2.6-ethereum-smart-contracts,
author={Szabo, Nick},
title = {Formalizing and Securing Relationships on Public Networks}, title = {Formalizing and Securing Relationships on Public Networks},
url={https://journals.uic.edu/ojs/index.php/fm/article/view/548}, author = {Szabo, Nick},
doi={10.5210/fm.v2i9.548}, year = 1997,
year={1997}, month = 9,
month={9},
journal = {First Monday}, journal = {First Monday},
volume={2}, volume = 2,
number={9}, 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, @book{2.6-ethereum-mastering,
author = {Andreas M Antonopoulos, Gavin Wood},
title = {Mastering Ethereum: Building Smart Contracts and DApps}, title = {Mastering Ethereum: Building Smart Contracts and DApps},
date = {2018}, author = {Andreas M Antonopoulos, Gavin Wood},
publisher = {O'Reilly Media}, publisher = {O'Reilly Media},
isbn = {1491971940 }, isbn = 1491971940,
OPTurl = {https://cypherpunks-core.github.io/ethereumbook/}, date = 2018,
opturl = {https://cypherpunks-core.github.io/ethereumbook/}
} }
@misc{2.7-ipfs, @misc{2.7-ipfs,
title = {IPFS}, title = {IPFS},
url = {https://ipfs.io/} url = {https://ipfs.io/}
} }
@misc{2.7-ipfs-docs, @misc{2.7-ipfs-docs,
title = {IPFS documentation}, title = {IPFS documentation},
url = {https://docs.ipfs.io/} url = {https://docs.ipfs.io/}
} }
@misc{2.7-merkle-dags-proto-school, @misc{2.7-merkle-dags-proto-school,
author = {ProtoSchool},
title = {Merkle DAGs: Structuring Data for the Distributed Web}, title = {Merkle DAGs: Structuring Data for the Distributed Web},
author = {ProtoSchool},
url = {https://proto.school/merkle-dags/} url = {https://proto.school/merkle-dags/}
} }
@online{4.2-github-flow, @online{4.2-github-flow,
author = {GitHub Guides},
title = {Understanding the GitHub flow}, title = {Understanding the GitHub flow},
author = {GitHub Guides},
url = {https://guides.github.com/introduction/flow/} url = {https://guides.github.com/introduction/flow/}
} }
@misc{4.3-orbitdb, @misc{4.3-orbitdb,
title = {OrbitDB}, title = {OrbitDB},
url = {https://orbitdb.org} url = {https://orbitdb.org}
} }
@misc{4.3-orbitdb-guide, @misc{4.3-orbitdb-guide,
title = {Getting Started with OrbitDB}, title = {Getting Started with OrbitDB},
url = {https://github.com/orbitdb/orbit-db/blob/main/GUIDE.md} url = {https://github.com/orbitdb/orbit-db/blob/main/GUIDE.md}

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

@ -7,3 +7,5 @@
Η δεύτερη διάσταση εστιάζει στον χώρο της ψηφιακής δημοκρατίας (digital democracy). Συγκεκριμένα, παρατηρείται έλλειψη εργαλείων, ικανών να παρέχουν τη δυνατότητα διενέργειας αυθεντικών δημοκρατικών διαδικασιών. Ψηφοφορίες και αυτοδιαχείριση εντός συστημάτων κεντροποιημένης λογικής αδυνατούν, για αρχιτεκτονικούς λόγους, να εξασφαλίσουν τις απαραίτητες θεμελιώδεις ιδιότητες τέτοιων διαδικασιών, δηλαδή της ανωνυμίας και της επαληθευσιμότητας. Η δεύτερη διάσταση εστιάζει στον χώρο της ψηφιακής δημοκρατίας (digital democracy). Συγκεκριμένα, παρατηρείται έλλειψη εργαλείων, ικανών να παρέχουν τη δυνατότητα διενέργειας αυθεντικών δημοκρατικών διαδικασιών. Ψηφοφορίες και αυτοδιαχείριση εντός συστημάτων κεντροποιημένης λογικής αδυνατούν, για αρχιτεκτονικούς λόγους, να εξασφαλίσουν τις απαραίτητες θεμελιώδεις ιδιότητες τέτοιων διαδικασιών, δηλαδή της ανωνυμίας και της επαληθευσιμότητας.
Βάσει των παραπάνω, γεννήθηκε η ιδέα δημιουργίας μίας εφαρμογής, η οποία, μέσω ενός προτεινόμενου συνδυασμού αποκεντρωτικών τεχνολογιών, να ορίσει έναν ψηφιακό χώρο που θα έρθει αντιμέτωπος με τα παραπάνω. Έτσι, κεντρικός στόχος της πιλοτικής εφαρμογής Concordia, είναι να αποτελέσει μία αυτόνομη κοινωνική πλατφόρμα, που θα κατοχυρώνει στους χρήστες της ελευθερία του λόγου και πλήρη κυριότητα επί των δεδομένων τους. Επιπλέον, θα παρέχει τη δυνατότητα διενέργειας αυθεντικών, ανώνυμων ψηφοφοριών, κάτι που θα την καθιστά ένα αξιόπιστο δημοκρατικό βήμα για τη λήψη αποφάσεων εντός αυτοδιαχειριζόμενων κοινοτήτων της. Βάσει των παραπάνω, γεννήθηκε η ιδέα δημιουργίας μίας εφαρμογής, η οποία, μέσω ενός προτεινόμενου συνδυασμού αποκεντρωτικών τεχνολογιών, να ορίσει έναν ψηφιακό χώρο που θα έρθει αντιμέτωπος με τα παραπάνω. Έτσι, κεντρικός στόχος της πιλοτικής εφαρμογής Concordia, είναι να αποτελέσει μία αυτόνομη κοινωνική πλατφόρμα, που θα κατοχυρώνει στους χρήστες της ελευθερία του λόγου και πλήρη κυριότητα επί των δεδομένων τους. Επιπλέον, θα παρέχει τη δυνατότητα διενέργειας αυθεντικών, ανώνυμων ψηφοφοριών, κάτι που θα την καθιστά ένα αξιόπιστο δημοκρατικό βήμα για τη λήψη αποφάσεων εντός αυτοδιαχειριζόμενων κοινοτήτων της.
\newpage

23
chapters/3.application-design/3.2.technology-stack.tex

@ -1,25 +1,20 @@
\section{Τεχνολογική στοίβα} \label{section:3-2-technology-stack} \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} % TODO: Create proper diagram
Όπως η επιλογή του Blockchain, που περιγράφηκε στο προηγούμενο κεφάλαιο (\textenglish{insert reference}), ομοίως και η επιλογή του λογισμικού που θα χρησιμοποιηθεί για την κατανεμημένη αποθήκευση δεδομένων ξεκίνησε με μία έρευνα των επιλογών που υπάρχουν. Αναλογιστήκαμε τα προτερήματα και μειονεκτήματα διάφορων επιλογών, συμπεριλαμβανομένων των ...
Επιλέξαμε να προχωρήσουμε με το IPFS και την OrbitDB έναντι άλλων λύσεων επειδή ...
Η OrbitDB είναι ... και χρησιμοποιεί το IPFS για να καταφέρει τα εξής χαρακτηριστικά ...
Περιορισμοί πάλι κλπ ....
\begin{figure}[H] \begin{figure}[H]
\centering \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{Τεχνολογική στοίβα} \caption{Τεχνολογική στοίβα}
\end{figure} \end{figure}

BIN
thesis.pdf

Binary file not shown.
Loading…
Cancel
Save