Περίληψη
Χρησιμοποιούμε ιστορικά δεδομένα για να εκτιμήσουμε το πιθανό όφελος των κερδοσκοπικών τεχνικών για την εκτέλεση έξυπνων συμβολαίων Ethereum παράλληλα. Επαναλαμβάνουμε τα ίχνη συναλλαγής των μπλοκ δειγματοληψίας από το Ethereum blockchain με την πάροδο του χρόνου, χρησιμοποιώντας μια απλή κερδοσκοπική μηχανή εκτέλεσης. Σε αυτήν τη μηχανή, οι εξορύκτες
προσπαθούν να εκτελέσουν όλες τις συναλλαγές σε ένα μπλοκ παράλληλα, αποσύροντας εκείνες που προκαλούν διενέξεις δεδομένων.
Στη συνέχεια, οι ματαιωθείσες συναλλαγές εκτελούνται διαδοχικά. Οι επικυρωτές εκτελούν το ίδιο χρονοδιάγραμμα με τους εξορύκτες.
Διαπιστώνουμε ότι η κερδοσκοπική μας τεχνική αποδίδει εκτιμώμενες επιταχύνσεις ξεκινώντας από περίπου 8 φορές το 2016, σημειώνοντας πτώση περίπου στο διπλάσιο στο τέλος του 2017, όπου η επιτάχυνση μετράται χρησιμοποιώντας είτε το κόστος του φυσικού αερίου είτε τον αριθμό των εντολών. Παρατηρούμε επίσης ότι ένα μικρό σύνολο συμβάσεων είναι υπεύθυνο για πολλές διενέξεις δεδομένων που προκύπτουν από κερδοσκοπική ταυτόχρονη εκτέλεση.
Συμπεράσματα
Τα αποτελέσματά μας δείχνουν ότι μια απλή κερδοσκοπική στρατηγική που βασίζεται στην επικάλυψη του συνόλου ανάγνωσης-γραφής μπορεί παράγουν μη τετριμμένες επιταχύνσεις, αλλά αυτές οι επιταχύνσεις μειώνονται καθώς τα ποσοστά συναλλαγών και τα ποσοστά συγκρούσεων αυξάνονται. Πιο επιθετικές στρατηγικές, όπως η προσθήκη επιπλέον παράλληλων φάσεων, φαίνεται να παρέχουν μικρό πρόσθετο όφελος, επειδή η διένεξη φαίνεται να είναι εκρηκτική: εάν μία συναλλαγή αντικρούει μια άλλη, τότε πιθανώς αντικρούει πολλές άλλες.
Τα αποτελέσματα αυτής της μελέτης υποδηλώνουν ότι ο πιο ελπιδοφόρος τρόπος για την περαιτέρω αύξηση του συγχρονισμού στην εκτέλεση έξυπνων συμβάσεων τύπου Ethereum είναι η μείωση του ποσοστού διένεξης, ίσως εστιάζοντας στη μείωση των περιττών διενέξεων. Παρατηρήσαμε ότι ο διαχωρισμός των δεδομένων των συναλλαγών στα σύνολα ανάγνωσης και εγγραφής μείωσε σημαντικά τα ποσοστά διενέξεων, υποδηλώνοντας ότι τα ποσοστά των διενέξεων είναι ευαίσθητα στη σημασιολογία των ταυτόχρονων λειτουργιών σε κοινόχρηστα δεδομένα. Αυτή η παρατήρηση
υποδηλώνει ότι τα ποσοστά διένεξης θα μπορούσε να μειωθούν ακόμη περισσότερο, εάν η μηχανή εκτέλεσης μπορούσε να κάνει καλύτερη αναγνώριση του πότε οι λειτουργίες μεταβάλλονται σε σημασιολογικό επίπεδο. Για παράδειγμα, συναλλαγές που αυξάνουν ή μειώνουν το ίδιο υπόλοιπο του λογαριασμού (ένα σύνηθες περιστατικό) έχουν επικαλυπτόμενα σύνολα ανάγνωσης και εγγραφής και, ως εκ τούτου, θεωρείται ότι συγκρούονται. Στο σημασιολογικό
επίπεδο, ωστόσο, αυτές οι λειτουργίες μεταβάλλονται (ελλείψει υπερχείλισης ή υποχείλισης) και εφόσον οι λειτουργίες μνήμης της εικονικής μηχανής είναι ατομικές, αυτές οι λειτουργίες δεν χρειάζεται να συγκρούονται.
(Η μελέτη μας δεν μπόρεσε να εντοπίσει ποιες συγκρούσεις είναι πραγματικές και ποιες είναι ψευδείς, επειδή μόνο μεταγλωττισμένο bytecode ήταν διαθέσιμο για ανάλυση).
Θα μπορούσε να είναι κερδοφόρο να διερευνηθούν οι επιπτώσεις του εξοπλισμού της εικονικής μηχανής με εγγενείς τύπους δεδομένων, όπως ατομικοί μετρητές ή ατομικά σύνολα που παρέχουν πολλές μεταβολές και μεταλλαξιογόνες επεμβάσεις. Η μελέτη εξαιρετικά αντικρουόμενων έξυπνων συμβολαίων μπορεί να παρέχει πληροφορίες σχετικά με το ποια είδη τύπων δεδομένων ή λειτουργιών θα μειώσουν περισσότερο τον ανταγωνισμό.
Οι περίοδοι μεγάλης διένεξης και χαμηλής επιτάχυνσης προκαλούνται από έναν σχετικά μικρό αριθμό δημοφιλών συμβολαίων. Επί του παρόντος, οι προγραμματιστές έξυπνων συμβολαίων δεν έχουν καθοδήγηση για το πώς να αποφύγουν κερδοσκοπικές διενέξεις δεδομένων, ούτε οποιοδήποτε κίνητρο για να το πράξουν. Τα αποτελέσματά μας υποδεικνύουν ότι υπάρχει ανάγκη
να γίνουν κατανοητά τα κίνητρα για τους προγραμματιστές έξυπνων συμβολαίων, ώστε αυτοί να δημιουργήσουν συμβόλαια συμβάσεις με τρόπους που μειώνουν τις διενέξεις, είτε με την εξάλειψη των ψευδών συγκρούσεων, είτε με την αξιοποίηση της βελτιωμένης μεταβολής των εντολών bytecode.
Αυτό το άρθρο προέρχεται από μετάφραση του άρθρου: An Empirical Study of Speculative Concurrency in Ethereum Smart Contracts από τα αγγλικά, και δημοσιεύεται με βάση την άδεια CC BY 3.0 Attribution 3.0 Unported Creative Commons.
Διαβάστε επίσης: