Browse Source

feat: add subsection 4.3.1 stuff

develop
Ezerous 3 years ago
parent
commit
47da4a6728
  1. 8
      assets/code/orbit-db-identity.js
  2. 1
      chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.4.ipfs-technologies/4.2.4.2.orbit-db.tex
  3. 2
      chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-breeze-unit.tex
  4. 4
      chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-drizzle-unit.tex
  5. 15
      chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-identity-provider-unit.tex
  6. BIN
      thesis.pdf

8
assets/code/orbit-db-identity.js

@ -1,12 +1,12 @@
{ {
_id: '<the ID of the external identity>', id: '<the ID of the external identity>',
// Auto-generated by OrbitDB // Auto-generated by OrbitDB
_publicKey: '<signing key used to sign OrbitDB entries>', publicKey: '<signing key used to sign OrbitDB entries>',
signatures: { signatures: {
//Allows the owner of id to prove they own the private key associated with publicKey //Allows the owner of id to prove they own the private key associated with publicKey
id: '<signature of _id signed using publicKey>', id: '<signature of id signed using publicKey>',
//This links the two ids //This links the two ids
publicKey: '<signature of signatures.id + _publicKey using _id>' publicKey: '<signature of signatures.id + publicKey using id>'
}, },
type: 'orbitdb' type: 'orbitdb'
} }

1
chapters/4.application-implementation/4.2.implementation-technology-stack/4.2.4.ipfs-technologies/4.2.4.2.orbit-db.tex

@ -26,6 +26,7 @@
\begin{enumitemcenteredfigure} \begin{enumitemcenteredfigure}
\simplelisting[width=.95\textwidth]{orbit-db-identity.js} \simplelisting[width=.95\textwidth]{orbit-db-identity.js}
\caption{OrbitDB Identity} \caption{OrbitDB Identity}
\label{figure:4-2-4-2-orbit-db-identity}
\end{enumitemcenteredfigure} \end{enumitemcenteredfigure}
\item \textbf{Access Control}: Κατά τη δημιουργία μίας βάσης μπορούν να οριστούν όσοι θα έχουν δικαίωμα εγγραφής σε αυτή, μέσω ενός ελεγκτή πρόσβασης (access controller). Ο ελεγκτής θα περιλαμβάνει τα public keys τους, τα οποία μπορούν να ανακτηθούν από το identity του καθενός. Από προεπιλογή και αν δεν ορίζεται διαφορετικά, δίνεται πρόσβαση εγγραφής μόνο στον δημιουργό της βάσης. \item \textbf{Access Control}: Κατά τη δημιουργία μίας βάσης μπορούν να οριστούν όσοι θα έχουν δικαίωμα εγγραφής σε αυτή, μέσω ενός ελεγκτή πρόσβασης (access controller). Ο ελεγκτής θα περιλαμβάνει τα public keys τους, τα οποία μπορούν να ανακτηθούν από το identity του καθενός. Από προεπιλογή και αν δεν ορίζεται διαφορετικά, δίνεται πρόσβαση εγγραφής μόνο στον δημιουργό της βάσης.

2
chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-breeze-unit.tex

@ -1,6 +1,6 @@
\subsubsection{Άρθρωμα breeze} \label{subsubsection:4-3-1-eth-breeze-unit} \subsubsection{Άρθρωμα breeze} \label{subsubsection:4-3-1-eth-breeze-unit}
Το άρθρωμα αυτό αποτελεί μία βιβλιοθήκη περίβλημα (wrapper) της βιβλιοθήκης \hyperref[subsection:4-2-4-2-orbit-db]{OrbitDB}, η οποία παρέχει ένα \hyperref[subsection:4-2-2-1-redux]{Redux} store. Το άρθρωμα αυτό αναπτύχθηκε στα πλαίσια της διπλωματικής εργασίας και αποτελεί μία βιβλιοθήκη περίβλημα (wrapper) της βιβλιοθήκης \hyperref[subsection:4-2-4-2-orbit-db]{OrbitDB}, η οποία παρέχει ένα \hyperref[subsection:4-2-2-1-redux]{Redux} store.
Με τη συμπερίληψη του αρθρώματος στο κεντρικό Redux store της εφαρμογής, παρέχεται η δυνατότητα εκτέλεσης των λειτουργιών των OrbitDB βάσεων εντός του γενικότερου flow του frontend της εφαρμογής. Έτσι, οι προγραμματιστικές διεπαφές που προσφέρει η Orbit χρησιμοποιούνται πλέον μέσα από actions, reducers και middleware. Με τη συμπερίληψη του αρθρώματος στο κεντρικό Redux store της εφαρμογής, παρέχεται η δυνατότητα εκτέλεσης των λειτουργιών των OrbitDB βάσεων εντός του γενικότερου flow του frontend της εφαρμογής. Έτσι, οι προγραμματιστικές διεπαφές που προσφέρει η Orbit χρησιμοποιούνται πλέον μέσα από actions, reducers και middleware.

4
chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-drizzle-unit.tex

@ -2,6 +2,6 @@
Το άρθρωμα drizzle που χρησιμοποιείται στην υπηρεσία \hyperref[subsection:4-3-2-concordia-application-service]{Concordia Application} είναι μία τροποποιημένη έκδοση της Javascript βιβλιοθήκης Drizzle (και συγκεκριμένα του @drizzle/store\footnote{\url{https://github.com/trufflesuite/drizzle/tree/develop/packages/store}}), η οποία προσφέρεται από τη σουίτα εργαλείων Truffle. Η τροποποιημένη βιβλιοθήκη αναπτύχθηκε στα πλαίσια της διπλωματικής με στόχο τη διευκόλυνση της χρήσης του Drizle και την επιδιόρθωση προβληματικών σημείων της πρωτότυπης βιβλιοθήκης. Το άρθρωμα drizzle που χρησιμοποιείται στην υπηρεσία \hyperref[subsection:4-3-2-concordia-application-service]{Concordia Application} είναι μία τροποποιημένη έκδοση της Javascript βιβλιοθήκης Drizzle (και συγκεκριμένα του @drizzle/store\footnote{\url{https://github.com/trufflesuite/drizzle/tree/develop/packages/store}}), η οποία προσφέρεται από τη σουίτα εργαλείων Truffle. Η τροποποιημένη βιβλιοθήκη αναπτύχθηκε στα πλαίσια της διπλωματικής με στόχο τη διευκόλυνση της χρήσης του Drizle και την επιδιόρθωση προβληματικών σημείων της πρωτότυπης βιβλιοθήκης.
Το άρθρωμα drizzle υλοποιεί τις προγραμματιστικές διεπαφές μέσω των οποίων πραγματοποιείται η επικοινωνία της εφαρμογής με το blockchain. Για την επίτευξη της επικοινωνίας αυτής, η βιβλιοθήκη χρησιμοποιεί τη συλλογή βιβλιοθηκών web3.js η οποία αποτελεί τον πιο διαδεδομένο τρόπο διεπαφής με το blockchain σε αποκεντρωτικές εφαρμογές. Το άρθρωμα drizzle υλοποιεί τις προγραμματιστικές διεπαφές μέσω των οποίων πραγματοποιείται η επικοινωνία της εφαρμογής με το blockchain. Για την επίτευξη της επικοινωνίας αυτής, η βιβλιοθήκη χρησιμοποιεί τη συλλογή βιβλιοθηκών web3.js η οποία αποτελεί τον πιο διαδεδομένο τρόπο διεπαφής με το blockchain σε αποκεντρωτικές εφαρμογές. Τελικά, παρέχει ένα Redux store, το οποίο συμπεριλαμβάνεται στο κεντρικό store της εφαρμογής.
Το άρθρωμα αυτό γίνεται διαθέσιμο για χρήση με τη μορφή βιβλιοθήκης μέσω του αποθετηρίου λογισμικού npm. Το άρθρωμα αυτό γίνεται διαθέσιμο για χρήση με τη μορφή βιβλιοθήκης μέσω του μητρώου λογισμικού npm (\url{https://www.npmjs.com/package/@ecentrics/drizzle}), ενώ το αποθετήριό του βρίσκεται στο GitLab (\url{https://gitlab.com/ecentrics/drizzle}).

15
chapters/4.application-implementation/4.3.implementation-architecture/4.3.1.software-units/4.3.1.eth-identity-provider-unit.tex

@ -1,5 +1,16 @@
\subsubsection{Άρθρωμα eth-identity-provider} \label{subsubsection:4-3-1-eth-identity-provider-unit} \subsubsection{Άρθρωμα eth-identity-provider} \label{subsubsection:4-3-1-eth-identity-provider-unit}
Η λειτουργία της βάση OrbitDB απαιτεί τη δημιουργία ενός μοναδικού αναγνωριστικού χρήστη (identity). Για την εύκολη εξαγωγή ενός αναγνωριστικού χρήστη το οποίο να είναι μεν μοναδικό αλλά να είναι δυνατός ο επανυπολογισμός, χρησιμοποιήθηκε ο συνδυασμός της διεύθυνσης του χρήστη στο δίκτυο Ethereum με τη διεύθυνση του βασικού contract που χρησιμοποιεί η εφαρμογή. Ο υπολογισμός του συνδυασμού αυτού υλοποιείται από αυτό το άρθρωμα. Η λειτουργία της βάσης OrbitDB επιτρέπει τη χρήση προσαρμοσμένων orbit-db-identity-provider, οι οποίοι θα δημιουργούν και θα επικυρώνουν
τα μοναδικά αναγνωριστικά των χρήστών (OrbitDB Identity) βάσει προσαρμοσμένων εξωτερικών αναγνωριστικών (external identifier), όπως παρουσιάζεται στο σχήμα \ref{figure:4-2-4-2-orbit-db-identity}.
Το άρθρωμα αυτό γίνεται διαθέσιμο για χρήση με τη μορφή βιβλιοθήκης μέσω του αποθετηρίου λογισμικού npm. Στην περίπτωση της εφαρμογής Concordia είναι χρήσιμο να μπορούν να υπολογιστούν με ντετερμινιστικό τρόπο οι OrbitDB βάσεις δεδομένων του κάθε χρήστη, για λόγους απλότητας και εξοικονόμησης αποθηκευτικού χώρου επί του blockchain. Έτσι, αφού κάθε χρήστης ορίζεται μοναδικά μέσω της διεύθυνσης Ethereum με την οποία εγγράφεται και συνδέεται, αυτή θα πρέπει να αποτελεί και το εξωτερικό αναγνωριστικό στο πεδίο id της OrbitDB Identity.
Για αυτόν το λόγο υλοποιήθηκε το άρθρωμα eth-identity-provider, το οποίο:
\begin{itemize}
\item Παράγει ένα OrbitDB Identity για τον χρήστη, με id τον συνδυασμο του Ethereum address του και του address του κεντρικού contract της εφαρμογής\footnote{Το δεύτερο εισήχθη για την αποφυγή προβλημάτων σε πολλαπλές αναπτύξεις συμβολαίων.}. Αυτό επιτυγχάνεται με την υπογραφή μίας συναλλαγής με το Ethereum private key του χρήστη, μέσω του MetaMask.
\item Επικυρώνει τις OrbitDB Identity που απαιτούνται, εξασφαλίζοντας ότι υπογράφηκαν από τα Ethereum private key των κατόχων τους.
\item Διασφαλίζει ντετερμινιστικές, υπολογίσιμες διευθύνσεις OrbitDB βάσεων για τον κάθε χρήστη.
\end{itemize}
Αυτό το άρθρωμα γίνεται διαθέσιμο για χρήση με τη μορφή βιβλιοθήκης μέσω του μητρώου λογισμικού npm (\url{https://www.npmjs.com/package/@ecentrics/eth-identity-provider}), ενώ το αποθετήριό του βρίσκεται στο GitLab (\url{https://gitlab.com/ecentrics/eth-identity-provider}).

BIN
thesis.pdf

Binary file not shown.
Loading…
Cancel
Save