From 48fc3febc6e35ddcf90c1b41e299fea9e8ad56ce Mon Sep 17 00:00:00 2001 From: Ezerous Date: Sun, 12 Dec 2021 13:23:56 +0200 Subject: [PATCH 1/7] feat: add Ethereum fee management --- .../5.0.conclusions-open-areas.tex | 6 ++++++ .../5.1.problems-faced.tex | 2 ++ .../5.2.design-implementation-differences.tex | 2 ++ .../5.3.conclusions.tex | 1 + .../5.4.open-areas.tex | 15 +++++++++++++++ chapters/5.conclusions/5.0.conclusions.tex | 6 ------ chapters/5.conclusions/5.3.open-areas.tex | 8 -------- chapters/5.conclusions/5.4.conclusion.tex | 1 - thesis.pdf | Bin 2518065 -> 2520027 bytes thesis.tex | 2 +- 10 files changed, 27 insertions(+), 16 deletions(-) create mode 100644 chapters/5.conclusions-open-areas/5.0.conclusions-open-areas.tex rename chapters/{5.conclusions => 5.conclusions-open-areas}/5.1.problems-faced.tex (51%) rename chapters/{5.conclusions => 5.conclusions-open-areas}/5.2.design-implementation-differences.tex (58%) create mode 100644 chapters/5.conclusions-open-areas/5.3.conclusions.tex create mode 100644 chapters/5.conclusions-open-areas/5.4.open-areas.tex delete mode 100644 chapters/5.conclusions/5.0.conclusions.tex delete mode 100644 chapters/5.conclusions/5.3.open-areas.tex delete mode 100644 chapters/5.conclusions/5.4.conclusion.tex diff --git a/chapters/5.conclusions-open-areas/5.0.conclusions-open-areas.tex b/chapters/5.conclusions-open-areas/5.0.conclusions-open-areas.tex new file mode 100644 index 0000000..1183c56 --- /dev/null +++ b/chapters/5.conclusions-open-areas/5.0.conclusions-open-areas.tex @@ -0,0 +1,6 @@ +\chapter[Συμπεράσματα και ανοιχτά θέματα]{Συμπεράσματα \\και ανοιχτά θέματα}\label{chapter:5-conclusions-open-areas} + +\input{chapters/5.conclusions-open-areas/5.1.problems-faced} +\input{chapters/5.conclusions-open-areas/5.2.design-implementation-differences} +\input{chapters/5.conclusions-open-areas/5.3.conclusions} +\input{chapters/5.conclusions-open-areas/5.4.open-areas} \ No newline at end of file diff --git a/chapters/5.conclusions/5.1.problems-faced.tex b/chapters/5.conclusions-open-areas/5.1.problems-faced.tex similarity index 51% rename from chapters/5.conclusions/5.1.problems-faced.tex rename to chapters/5.conclusions-open-areas/5.1.problems-faced.tex index e0bc091..568b01c 100644 --- a/chapters/5.conclusions/5.1.problems-faced.tex +++ b/chapters/5.conclusions-open-areas/5.1.problems-faced.tex @@ -1 +1,3 @@ \section{Προβλήματα ανάπτυξης} + +%TODO: [Discuss] Move this section to chapter 4 \ No newline at end of file diff --git a/chapters/5.conclusions/5.2.design-implementation-differences.tex b/chapters/5.conclusions-open-areas/5.2.design-implementation-differences.tex similarity index 58% rename from chapters/5.conclusions/5.2.design-implementation-differences.tex rename to chapters/5.conclusions-open-areas/5.2.design-implementation-differences.tex index 3f750cc..8aa9fef 100644 --- a/chapters/5.conclusions/5.2.design-implementation-differences.tex +++ b/chapters/5.conclusions-open-areas/5.2.design-implementation-differences.tex @@ -1 +1,3 @@ \section{Διαφορές σχεδιασμού-υλοποίησης} + +%TODO: [Discuss] Move this section to chapter 4 \ No newline at end of file diff --git a/chapters/5.conclusions-open-areas/5.3.conclusions.tex b/chapters/5.conclusions-open-areas/5.3.conclusions.tex new file mode 100644 index 0000000..2567d67 --- /dev/null +++ b/chapters/5.conclusions-open-areas/5.3.conclusions.tex @@ -0,0 +1 @@ +\section{Συμπεράσματα}\label{section:5-3-conclusions} diff --git a/chapters/5.conclusions-open-areas/5.4.open-areas.tex b/chapters/5.conclusions-open-areas/5.4.open-areas.tex new file mode 100644 index 0000000..7f83bd5 --- /dev/null +++ b/chapters/5.conclusions-open-areas/5.4.open-areas.tex @@ -0,0 +1,15 @@ +\section{Ανοιχτά θέματα}\label{section:5-4-open-areas} + +\subsection{Τέλη Ethereum}\label{subsection:5-4-1-ethereum-fees} + +Οι ανάγκες κάθε υπολογιστικού συστήματος σε πόρους που σχετίζονται με τις διάφορες λειτουργίες του (π.χ. επεξεργασία, αποθήκευση δεδομένων, δίκτυα) μεταφράζονται σε κάποιο οικονομικό κόστος. Στην περίπτωση της παρούσας εφαρμογής, ενώ η αποθήκευση των δεδομένων διαμοιράζεται αυτοβούλως ανάμεσα στους συμμετέχοντες κόμβους, η χρήση του Ethereum απαιτεί από τα μέλη την καταβολή τελών για τη δημιουργία συναλλαγών. Αν και αυτά τα τέλη είναι απαραίτητα για τη λειτουργία του blockchain και την προάσπισή του από επιθέσεις, αποτελούν ισχυρό εμπόδιο για την ένταξη των τελικών χρηστών στο οικοσύστημα των αποκεντρωμένων εφαρμογών του Ethereum. + +Στα πλαίσια της εφαρμογής "Concordia", η λήψη μέτρων για τη διαχείριση των τελών θεωρείται υψίστης σημασίας. Ωστόσο, η συμπερίληψη ενός τέτοιου μηχανισμού θα περιέπλεκε εξαιρετικά τον σχεδιασμό της και, ως εκ τούτου, λήφθηκε η απόφαση να συμπεριληφθεί ως πρόταση για μελλοντική της επέκταση. Ένας τέτοιος μηχανισμός θα παρείχε τη δυνατότητα στα μέλη της πλατφόρμας να τη χρησιμοποιούν χωρίς να κατέχουν ή να δαπανούν ETH. Αυτό θα μπορούσε να ήταν εφικτό μέσω της δημιουργίας μίας meta transaction, υπογεγραμμένης από τον Ethereum λογαριασμό τους, η οποία θα μεταβίβαζε την αποπληρωμή των τελών στις κοινότητες που ανήκουν οι χρήστες. + +Αυτή τη στιγμή υπάρχουν ήδη προσεγγίσεις υλοποιήσεων τέτοιου είδους μηχανισμών, όπως το Gas Station Network\footnote{\url{https://opengsn.org/}}, ενώ η προγραμματιστική ομάδα του Ethereum εργάζεται ενεργά για την εγγενή υποστήριξη αυτή της δυνατότητας από την ίδια πλατφόρμα. + +%TODO: add +%1. reputation system +%2. voting types +%3. token distribution +%4. ethereum, ipfs, move to proof of stake, remove of rendezvous server diff --git a/chapters/5.conclusions/5.0.conclusions.tex b/chapters/5.conclusions/5.0.conclusions.tex deleted file mode 100644 index 37ef4bb..0000000 --- a/chapters/5.conclusions/5.0.conclusions.tex +++ /dev/null @@ -1,6 +0,0 @@ -\chapter{Συμπεράσματα}\label{chapter:5-conclusions} - -\input{chapters/5.conclusions/5.1.problems-faced} -\input{chapters/5.conclusions/5.2.design-implementation-differences} -\input{chapters/5.conclusions/5.3.open-areas} -\input{chapters/5.conclusions/5.4.conclusion} diff --git a/chapters/5.conclusions/5.3.open-areas.tex b/chapters/5.conclusions/5.3.open-areas.tex deleted file mode 100644 index c9a1868..0000000 --- a/chapters/5.conclusions/5.3.open-areas.tex +++ /dev/null @@ -1,8 +0,0 @@ -\section{Ανοιχτά θέματα} - -TODO: add -1. feeless -2. reputation system -3. voting types -4. token distribution -5. ethereum, ipfs, move to proof of stake, remove of rendezvous server diff --git a/chapters/5.conclusions/5.4.conclusion.tex b/chapters/5.conclusions/5.4.conclusion.tex deleted file mode 100644 index 779150e..0000000 --- a/chapters/5.conclusions/5.4.conclusion.tex +++ /dev/null @@ -1 +0,0 @@ -\section{Επίλογος} diff --git a/thesis.pdf b/thesis.pdf index 964c84526c2f586e8e850fdb6415894cea8bbdc6..f71dfe045d58c39dcdcaa578b0fc9e5b52e6b222 100644 GIT binary patch delta 36636 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