Browse Source

feat: init section 3.2

develop
Ezerous 3 years ago
parent
commit
62bb0fef41
  1. BIN
      assets/figures/chapter-3/user_categories.png
  2. 117
      bibliography/references.bib
  3. 2
      chapters/2.theoretical-background/2.7.ipfs.tex
  4. 2
      chapters/3.application-design/3.1.idea-conception.tex
  5. 21
      chapters/3.application-design/3.2.technology-stack.tex
  6. 2
      chapters/4.application-implementation/4.3.implementation-technology-stack.tex
  7. BIN
      thesis.pdf

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

117
bibliography/references.bib

@ -1,134 +1,115 @@
% 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},
year = 2001,
month = {Aug.}, month = {Aug.},
url = {https://doi.org/10.1007/s102070100002},
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,
author={Schollmeier, R.}, title = {A Definition of Peer-to-Peer Networking for the Classification of Peer-to-Peer Architectures and Applications},
booktitle={Proceedings First International Conference on Peer-to-Peer Computing}, author = {Schollmeier, R.},
title={A Definition of Peer-to-Peer Networking for the Classification of Peer-to-Peer Architectures and Applications}, year = 2001,
year={2001}, booktitle = {Proceedings First International Conference on Peer-to-Peer Computing},
pages={101-102}, 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}, author = {Szabo, Nick},
url={https://journals.uic.edu/ojs/index.php/fm/article/view/548}, year = 1997,
doi={10.5210/fm.v2i9.548}, month = {Sep.},
year={1997}, journal = {First Monday},
month={Sep.}, volume = 2,
journal={First Monday}, number = 9,
volume={2}, doi = {10.5210/fm.v2i9.548},
number={9}, 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/}
} }
@misc{2.8-orbitdb, @misc{2.8-orbitdb,
title = {OrbitDB}, title = {OrbitDB},
url = {https://orbitdb.org} url = {https://orbitdb.org}
} }
@misc{2.8-orbitdb-guide, @misc{2.8-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}
} }
@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/}
} }

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

@ -1,4 +1,4 @@
\section{IPFS} \section{IPFS} \label{section:2-7-ipfs}
\begin{figure}[H] \begin{figure}[H]
\centering \centering

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

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

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

@ -1,23 +1,18 @@
\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}: Πρόκειται για το επίπεδο που πραγματοποιεί την επεξεργασία (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: change this
Όπως η επιλογή του 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/simple_dapp_stack}

2
chapters/4.application-implementation/4.3.implementation-technology-stack.tex

@ -1,5 +1,5 @@
\section{Τεχνολογίες υλοποίησης} \section{Τεχνολογίες υλοποίησης}
TODO: add ganache, truffle 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 TODO: add jenkins, janus and build steps diagram

BIN
thesis.pdf

Binary file not shown.
Loading…
Cancel
Save