From 52032c4213894801cf0e692cfd22875505760f69 Mon Sep 17 00:00:00 2001 From: Ezerous Date: Fri, 17 Sep 2021 15:16:32 +0300 Subject: [PATCH] fix: blockchain - minor corrections --- bibliography/references.bib | 3 +-- .../2.5.blockchain.tex | 2 +- thesis.pdf | Bin 979793 -> 979807 bytes 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/bibliography/references.bib b/bibliography/references.bib index 04c64cd..aaaed73 100644 --- a/bibliography/references.bib +++ b/bibliography/references.bib @@ -24,8 +24,7 @@ @article{2.5-bitcoin, author = {Nakamoto, Satoshi}, - year = {2009}, - month = {03}, + date = {2008-10-31}, title = {Bitcoin: A Peer-to-Peer Electronic Cash System}, journal = {Cryptography Mailing list at https://metzdowd.com} } diff --git a/chapters/2.theoretical-background/2.5.blockchain.tex b/chapters/2.theoretical-background/2.5.blockchain.tex index 3ffe821..7392a03 100644 --- a/chapters/2.theoretical-background/2.5.blockchain.tex +++ b/chapters/2.theoretical-background/2.5.blockchain.tex @@ -6,7 +6,7 @@ %TODO: add image like https://cdn.hackernoon.com/hn-images/1*qYKsqQ6aV-DgFD0REfcnig.png or https://ethereum.org/static/6f7d50fd4fab9f8abb94b5e610ade7e4/bf8c1/ethereum-blocks.png --- add that this is simplified -Ως προς την κυριότητα επί αυτού, το blockchain συνήθως\footnote{Υπάρχουν και κάποιες υλοποιήσεις ιδιωτικών blockchain που, όμως, δε θα μας απασχολήσουν.} δεν ελέγχεται από κάποια κεντρική οντότητα, αλλά διατηρείται από ένα δημόσιο P2P δίκτυο. Οι κόμβοι (nodes) του δικτύου συμμορφώνονται συλλογικά με ένα πρωτόκολλο συναίνεσης (consensus) για την επικοινωνία και την επικύρωση νέων μπλοκ. Για παράδειγμα, στο Bitcoin, το consensus επιτυγχάνεται μέσω ενός Proof of Work (PoW) αλγορίθμου, όπου οι κόμβοι (miners) ανταγωνίζονται ο ένας τον άλλον για το ποιος θα λύσει πρώτος ένα σύνθετο αλγοριθμικό πρόβλημα που συσχετίζεται με το εκάστοτε block. Αυτός που θα τα καταφέρει επιβραβεύεται για την επεξεργαστική ισχύ που δαπάνησε με ένα ποσό από bitcoin. Εκείνα είναι εν μέρει νέα νομίσματα που κόβονται ή "εξορύσσονται" εκείνη τη στιγμή (όπως ορίζεται από το πρωτόκολλο), αλλά και όσα τέλη (fees) κατέβαλαν οι κόμβοι για να πραγματοποιήσουν τις συναλλαγές του μπλοκ. Αξίζει να σημειωθεί πως δεν είναι αναγκαίο να διαθέτει κανείς ολόκληρο το blockchain (το οποίο είναι ογκώδες) - δηλαδή έναν πλήρη κόμβο - για να επικοινωνήσει με το δίκτυο, αλλά αρκεί ένας light node που απλά αναμεταδίδει την συναλλαγή που επιθυμεί να πραγματοποιήσει ο χρήστης. +Ως προς την κυριότητα επί αυτού, το blockchain συνήθως\footnote{Υπάρχουν και κάποιες υλοποιήσεις ιδιωτικών blockchain που, όμως, δε θα μας απασχολήσουν.} δεν ελέγχεται από κάποια κεντρική οντότητα, αλλά διατηρείται από ένα δημόσιο P2P δίκτυο. Οι κόμβοι (nodes) του δικτύου συμμορφώνονται συλλογικά με ένα πρωτόκολλο συναίνεσης (consensus) για την επικοινωνία και την επικύρωση νέων μπλοκ. Για παράδειγμα, στο Bitcoin, το consensus επιτυγχάνεται μέσω ενός Proof of Work (PoW) αλγορίθμου, όπου οι κόμβοι (miners) ανταγωνίζονται ο ένας τον άλλον για το ποιος θα λύσει πρώτος ένα σύνθετο αλγοριθμικό πρόβλημα που συσχετίζεται με το εκάστοτε block. Αυτός που θα τα καταφέρει επιβραβεύεται για την επεξεργαστική ισχύ που δαπάνησε με ένα ποσό από bitcoin. Εκείνα είναι εν μέρει νέα νομίσματα που κόβονται ή "εξορύσσονται" εκείνη τη στιγμή (όπως ορίζεται από το πρωτόκολλο), αλλά και όσα τέλη (fees) κατέβαλαν οι κόμβοι για να πραγματοποιήσουν τις συναλλαγές του μπλοκ. Αξίζει να σημειωθεί πως δεν είναι αναγκαίο να διαθέτει κανείς ολόκληρο το blockchain (το οποίο είναι ογκώδες) - δηλαδή έναν πλήρη κόμβο - για να επικοινωνήσει με το δίκτυο, αλλά αρκεί ένας light node που απλά αναμεταδίδει την συναλλαγή που επιθυμεί να πραγματοποιήσει ο χρήστης. Η διευθυνσιοδότηση σε ένα blockchain επιτυγχάνεται αξιοποιώντας την κρυπτογραφία δημόσιου κλειδιού. Το πρωτόκολλο του εκάστοτε blockchain ορίζει έναν αλγόριθμο για την παραγωγή ζευγών κλειδιών (π.χ. ECDSA στο Bitcoin). Το δημόσιο από αυτά ορίζει τη διεύθυνση, ενώ το ιδιωτικό παραμένει μυστικό, υπό την κατοχή του χρήστη. Με αυτό τον τρόπο προκύπτει ένα πρακτικά ανεξάντλητο πλήθος πιθανών έγκυρων δημόσιων διευθύνσεων (π.χ. $2^{160}$ για το Bitcoin), στις οποίες οι χρήστες μπορούν να στέλνουν και να λαμβάνουν ποσά του εκάστοτε κρυπτονομίσματος. Για την αποστολή ενός ποσού, δηλώνουν το fee που επιθυμούν να καταβάλουν και υπογράφουν την επιθυμητή συναλλαγή με το ιδιωτικό τους κλειδί. Η συναλλαγή αναμεταδίδεται στο δίκτυο και παραμένει στο transaction pool μέχρις ότου να γίνει αποδεκτή και να συμπεριληφθεί στο επόμενο block. diff --git a/thesis.pdf b/thesis.pdf index d2a5a86f3b1341fd1c617570ea329dc2aa6dedf7..d6177967aa992655392686e3625c649d82debaa5 100644 GIT binary patch delta 11250 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 PPXH?%Ik~937~KB@lD6{y delta 11267 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