Ezerous
3 years ago
6 changed files with 92 additions and 114 deletions
After Width: | Height: | Size: 161 KiB |
Before Width: | Height: | Size: 23 KiB |
@ -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}, |
author = {Vitalik Buterin}, |
||||
date = {2017-02-06}, |
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}, |
author = {Aneesh, A.}, |
||||
date = {2006}, |
date = 2006, |
||||
OPTpublisher = {Duke University Press} |
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)}, |
author = {Johnson, Don and Menezes, Alfred and Vanstone, Scott}, |
||||
year = {2001}, |
year = 2001, |
||||
month = {8}, |
month = 8, |
||||
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.}, |
author = {Belavadi Prahalad}, |
||||
date = {2018-01-07}, |
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}, |
title = {Bitcoin: A Peer-to-Peer Electronic Cash System}, |
||||
date = {2008-10-31}, |
author = {Nakamoto, Satoshi}, |
||||
title = {Bitcoin: A Peer-to-Peer Electronic Cash System}, |
journal = {Cryptography Mailing list at https://metzdowd.com}, |
||||
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}, |
author = {Vitalik Buterin}, |
||||
date = {2013}, |
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}, |
author = {Ethereum community}, |
||||
urldate = {2021-09-05}, |
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 = 9, |
||||
year={1997}, |
journal = {First Monday}, |
||||
month={9}, |
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}, |
author = {Andreas M Antonopoulos, Gavin Wood}, |
||||
date = {2018}, |
publisher = {O'Reilly Media}, |
||||
publisher = {O'Reilly Media}, |
isbn = 1491971940, |
||||
isbn = {1491971940 }, |
date = 2018, |
||||
OPTurl = {https://cypherpunks-core.github.io/ethereumbook/}, |
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} |
||||
} |
} |
@ -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} |
||||
|
Binary file not shown.
Loading…
Reference in new issue