Ezerous
3 years ago
10 changed files with 104 additions and 167 deletions
After Width: | Height: | Size: 161 KiB |
After Width: | Height: | Size: 409 KiB |
Before Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 13 KiB |
@ -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} |
|||
} |
|||
title = {Getting Started with OrbitDB}, |
|||
url = {https://github.com/orbitdb/orbit-db/blob/main/GUIDE.md} |
|||
} |
|||
|
@ -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} |
|||
|
@ -1,62 +1,21 @@ |
|||
\section{Αρχιτεκτονική σχεδίαση} \label{section:3-7-architecture-design} |
|||
|
|||
Στο κεφάλαιο αυτό θα περιγραφεί η αρχιτεκτονική του συστήματος, όπως αυτό σχεδιάστηκε αρχικά. Η αρχιτεκτονική αυτή είναι πρώιμη και δεν αποτελεί την τελική υλοποίηση της πλατφόρμας στο σύνολό της. Μέρη της πρώιμης αρχιτεκτονικής είναι διαφορετικά από αυτά της τελικής η οποία περιγράφεται σε επόμενο κεφάλαιο. |
|||
Στο κεφάλαιο αυτό περιγράφεται η αρχιτεκτονική του συστήματος, όπως προέκυψε από την επιλεγμένη τεχνολογική στοίβα και τις προαναφερθείσες απαιτήσεις του. Θα πρέπει να σημειωθεί ότι η παρουσιαζόμενη αρχιτεκτονική είναι πρώιμη και δεν αποτελεί την τελική υλοποίηση της πλατφόρμας, η οποία περιγράφεται στο κεφάλαιο \ref{chapter:4-application-implementation}. |
|||
|
|||
% TODO: remove future tense used in this chapter |
|||
% TODO: add a brand new diagram! |
|||
|
|||
% Temporary Paste: Λογικά μέρη |
|||
|
|||
Η πλατφόρμα χωρίζεται σε δύο λογικά μέρη τα οποία θα αναλυθούν σε λεπτομέρεια στα επόμενα κεφάλαια: |
|||
|
|||
\begin{enumerate} |
|||
\item μία αυτοτελή και πλήρως αποκεντρωτική πλατφόρμα επικοινωνίας γενικής χρήσης |
|||
\item μία μερικώς αποκεντρωτική και μη αυτοτελή επέκταση του πρώτου μέρους στοχευμένη για χρήση από μέλη του ΑΠΘ |
|||
\end{enumerate} |
|||
|
|||
\subsection{Πρώτο μέρος} \label{subsection:3-1-first-part} |
|||
|
|||
Το πρώτο μέρος αποτελεί μία αυτοτελή και πλήρως αποκεντρωτική πλατφόρμα. Στόχος της πλατφόρμας είναι να παρέχει τη |
|||
δυνατότητα ελευθερίας λόγου, απρόσβλητου σε λογοκρισία από κεντρικές οντότητες εξουσίας. Στην πλατφόρμα αυτή θα μπορεί |
|||
οποιοσδήποτε να δημιουργήσει θέματα (topics) ή να απαντήσει σε άλλα. Η επεξεργασία των πληροφοριών που παράγονται και η |
|||
οποία είναι αναγκαία για τη λειτουργία της πλατφόρμας θα παρέχεται από το Ethereum μέσω των smart contracts τα οποία θα |
|||
υλοποιηθούν στο πλαίσιο αυτής της διπλωματικής. Τα contracts αποτελούν ανοιχτό λογισμικό από τη φύση τους, κάτι το οποίο |
|||
ενισχύει την διαφάνεια των διαδικασιών κάνοντας το επιχείρημα της ισότητας του λόγου πιο δυνατό. Τα contracts αυτά θα |
|||
δέχονται transactions από τους χρήστες και θα εγγράφουν τα αποτελέσματα στο Storage Layer του blockchain: |
|||
|
|||
% TODO: remove AUTH stuff, make it more abstract |
|||
|
|||
Το πρόβλημα αυτής της προσέγγισης είναι πως, για τη λειτουργία της, απαιτείται για κάθε συναλλαγή (transaction) οι |
|||
χρήστες να καταβάλουν ένα τέλος. Το τέλος αυτό αφορά τα fees που είναι αναγκαία για την περάτωση των συναλλαγών. Παρόλο |
|||
που υπάρχουν σχέδια από την ομάδα ανάπτυξης του Ethereum για τη μείωσή αυτών των fees στο μέλλον, θα είναι πάντα |
|||
αναπόφευκτα για τη χρήση του EVM. Ωστόσο, πρέπει να σημειωθούν δύο πράγματα. Αφενός τα τέλη παρέχουν μια μορφή |
|||
προστασίας απέναντι σε κακόβουλους χρήστες που θα πλημμύριζαν την εφαρμογή με ανεπιθύμητο ποσοτικά ή ποιοτικά |
|||
περιεχόμενο καθώς θα τους ήταν οικονομικά ασύμφορη μια τέτοια επίθεση. Αφετέρου υπάρχουν κάποιες εναλλακτικές ώστε να |
|||
μειωθεί δραστικά η εμπλοκή του χρήστη με την καταβολή τελών, κάτι που περιγράφεται παρακάτω στις κατηγορίες χρηστών. |
|||
|
|||
Τα παραπάνω πρακτικά σημαίνουν ότι το Smart Contract θα πρέπει ανά διαστήματα να φορτίζεται με Ether ή οι χρήστες να |
|||
καταβάλουν τα δικά τους έξοδα. |
|||
|
|||
\subsection{Δεύτερο μέρος} \label{subsection:3-2-first-part} |
|||
|
|||
Το δεύτερο μέρος αποτελεί μια μερικώς αποκεντρωτική και μη αυτοτελή πλατφόρμα που λειτουργεί προσθετικά στην πρώτη. Το |
|||
κομμάτι αυτό απευθύνεται αποκλειστικά σε επικυρωμένα μέλη του ΑΠΘ και συνιστά ένα αμεσοδημοκρατικό σύστημα ψηφοφορίας |
|||
που θα εγγυάται σε υψηλό βαθμό την εγκυρότητα και την ανωνυμία των διαδικασιών του. Στο πρώτο μέρος, το οποίο αναλύθηκε |
|||
προηγουμένως, θα παρέχεται η δυνατότητα δημιουργίας θεμάτων προς ψηφοφορία. Πάνω στα θέματα αυτά θα ψηφίζουν όσοι έχουν |
|||
δικαίωμα, ενώ το δικαίωμα στην ψήφο θα ορίζεται με την κατοχή ενός ανάλογου token στο Ethereum. |
|||
Συνοπτικά, η αρχιτεκτονική του συστήματος αποτυπώνεται στο παρακάτω διάγραμμα: |
|||
|
|||
% TODO: Add proper figure |
|||
\begin{figure}[H] |
|||
\centering |
|||
\includegraphics[width=\textwidth]{assets/figures/chapter-3/uas} |
|||
\caption{Ethereum logo} |
|||
\includegraphics[width=.75\textwidth]{assets/figures/chapter-3/3.7.architecture-design} |
|||
\caption{Αρχιτεκτονική του συστήματος (στάδιο σχεδίασης)} |
|||
\end{figure} |
|||
|
|||
O χρήστης, μέσω ενός frontend με τη μορφή ιστοσελίδας, θα μπορεί να πιστοποιήσει μέσω login στο \texttt{it.auth.gr} την |
|||
ακαδημαϊκή του ταυτότητα. Στη συνέχεια η Υπηρεσία Διανομής Token (Token Distribution Service - TDS), όντως ο ιδιοκτήτης |
|||
(owner) του contract που δινέμει τα tokens θα παρέχει στο χρήστη δύο tokens. Το πρώτο token θα δίνει στον χρήστης το |
|||
δικαίωμα ψήφου (verified user token) και το δεύτερο θα σηματοδοτεί στη πλατφόρμα ότι πρέπει του επιστρέφει τα τέλη |
|||
(fees) τα οποία πληρώνει (trusted user token). |
|||
Αξίζει να σημειωθούν τα εξής: |
|||
|
|||
*Ιδανικά, με τη συνεργασία του ΑΠΘ, το UAS θα αποτελεί υπηρεσία συνεργαζόμενη με την Υποδομή πιστοποίησης και |
|||
εξουσιοδότησης (βλ. https://it.auth.gr/el/infrastructure/aai). Αυτό σημαίνει ότι οι χρήστες δε θα χρειάζεται να |
|||
εμπιστευτούν τον UAS με τα it credential τους. |
|||
\begin{itemize} |
|||
\item Ο κώδικας του frontend εκτελείται αποκλειστικά στο σύστημα του χρήστη, χωρίς να απαιτείται κάποιος εξυπηρετητής. Δηλαδή, ο χρήστης αρκεί απλά να έχει τον κώδικα αποθηκευμένο στον υπολογιστή του. |
|||
\item Ο χρήστης αλληλεπιδρά άμεσα με το UI και το MetaMask. Το MetaMask αποτελεί browser add-on, το οποίο διαχειρίζεται τα ιδιωτικά κλειδιά Ethereum του χρήστη και πραγματοποιεί τις συναλλαγές του τελευταίου με τα smart contracts. Στην προκειμένη περίπτωση, περιέχει τα κλειδιά που σχετίζονται αφενός με τη διεύθυνση με την οποία ο χρήστης εγγράφεται στην πλατφόρμα, αφετέρου με τις διευθύνσεις που περιέχουν τα NFTs των κοινοτήτων στις οποίες ανήκει και έχει δικαιώματα ψήφου. |
|||
\item Στο frontend εκτελείται στο παρασκήνιο ένας κόμβος για το IPFS. Αυτός συνδέεται με άλλους κατάλληλους κόμβους, διαμοιράζοντας τον κύριο όγκο των δεδομένων της εφαρμογής (π.χ. του περιεχομένου των μηνυμάτων). |
|||
\item Τέλος, στο Ethereum blockchain υπάρχουν τόσο τα contracts της εφαρμογής, όσο και τα εξωτερικά contracts που παρέχουν τα tokens των κοινοτήτων. Τα μεν λειτουργούν ως το σημείο αναφοράς της εφαρμογής, επί του οποίου εκτελούνται οι ενέργειες και αποθηκεύονται οι μεταβλητές που είναι απολύτως απαραίτητες για τη λειτουργία της πλατφόρμας (π.χ. εγγεγραμμένοι χρήστες, δημιουργημένες κοινότητες). Τα δε, δημιουργούνται από εξωτερικές οντότητες, οι οποίες ορίζουν κατά τη βούλησή τους τον ακριβή τρόπο δημιουργίας και διαμοιρασμού των tokens τους στους χρήστες. |
|||
\end{itemize} |
Binary file not shown.
Loading…
Reference in new issue