[Distrib] Απορίες σχετικά με τα transactions

Nikos Gad nikosgad96 at gmail.com
Fri Mar 15 19:44:29 EET 2019


Καλησπέρα,
Έστω η περίπτωση που το capacity είναι 4. Οι κόμβοι 1 και 2 έχουν το ίδιο
blockchain και επιπλέον έχουν κάνει validate 3 transactions (που είναι τα
ίδια 3 και στους 2 κόμβους) και περιμένουν να κάνουν validate ένα τέταρτο
transaction ώστε να κάνουν mine. Έστω ότι κάποιος κόμβος κάνει broadcast
ένα transaction και ο κόμβος 1 το λαμβάνει, κάνει validate και ξεκινάει
mining. Φτιάχνει το block, το βάζει στο blockchain του και το κάνει
broadcast. Ο κόμβος 2 λαμβάνει πρώτα το νέο αυτό block και μετά από λίγο
λαμβάνει το τέταρτο transaction που περίμενε. Θα εξετάσει πρώτα το block,
θα κάνει validate και επειδή θα του βγει valid θα το βάλει στο blockchain
του. Έπειτα, θα του έρθει το τέταρτο transaction που περίμενε και θα κάνει
mine με αποτέλεσμα να προσθέσει ουσιαστικά ένα block με transactions που
έχουν ήδη προστεθεί.
Πώς μπορούμε να το αποφύγουμε αυτό; Το να κοιτάμε αν υπάρχει ένα
transaction ήδη μέσα στο blockchain εξετάζοντας ολόκληρο το blockchain δε
μας φαίνεται καλή επιλογή, δεδομένου πως στο παράδειγμα που ανέφερα αυτό θα
συμβεί στο τελευταίο block αλλά εν γένει μπορεί να συμβεί και με
transactions που βρίσκονται σε ενδιάμεσα blocks του blockchain. Πουθενά
στην άσκηση δεν αναφέρεται πως αν πάρουμε ένα block θα πρέπει να ελέγχουμε
αν έχουμε ήδη κάνει validate ένα από τα transactions που περιλαμβάνει, και
δε θα ήταν λογικό αφού το δίκτυο μπορεί να έχει τέτοιες καθυστερήσεις και
ένα transaction να το έχουμε δει ή να μην το έχουμε δει ενώ υπάρχει σε
block που λαμβάνουμε.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cslab.ece.ntua.gr/pipermail/distrib/attachments/20190315/2f16a329/attachment.htm>


More information about the Distrib mailing list