<div dir="ltr">Μπορείς να κρατάς σε κάποια έξτρα δομή μόνο τα hashes των transactions του τελευταίου ή των χ τελευταίων blocks και να τσεκάρεις αν κάθε νέο που έρχεται έχει ήδη συμπεριληφθεί.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Mar 15, 2019 at 7:46 PM Nikos Gad <<a href="mailto:nikosgad96@gmail.com">nikosgad96@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Καλησπέρα,<div>Έστω η περίπτωση που το 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 που έχουν ήδη προστεθεί.</div><div>Πώς μπορούμε να το αποφύγουμε αυτό; Το να κοιτάμε αν υπάρχει ένα transaction ήδη μέσα στο blockchain εξετάζοντας ολόκληρο το blockchain δε μας φαίνεται καλή επιλογή, δεδομένου πως στο παράδειγμα που ανέφερα αυτό θα συμβεί στο τελευταίο block αλλά εν γένει μπορεί να συμβεί και με transactions που βρίσκονται σε ενδιάμεσα blocks του blockchain. Πουθενά στην άσκηση δεν αναφέρεται πως αν πάρουμε ένα block θα πρέπει να ελέγχουμε αν έχουμε ήδη κάνει validate ένα από τα transactions που περιλαμβάνει, και δε θα ήταν λογικό αφού το δίκτυο μπορεί να έχει τέτοιες καθυστερήσεις και ένα transaction να το έχουμε δει ή να μην το έχουμε δει ενώ υπάρχει σε block που λαμβάνουμε.</div></div>
_______________________________________________<br>
Distrib mailing list<br>
<a href="mailto:Distrib@lists.cslab.ece.ntua.gr" target="_blank">Distrib@lists.cslab.ece.ntua.gr</a><br>
<a href="http://lists.cslab.ece.ntua.gr/mailman/listinfo/distrib" rel="noreferrer" target="_blank">http://lists.cslab.ece.ntua.gr/mailman/listinfo/distrib</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div>Katerina Doka, PhD</div><div>Senior Researcher, Computing Systems Laboratory</div><div>National Technical University of Athens</div><div>phone: +30 2107721175</div><div>Web: <a href="http://www.cslab.ntua.gr/~doka" target="_blank">http://www.cslab.ntua.gr/~doka</a></div></div></div></div>