1. Μελέτη του Κόστους Εκτέλεσης Εφαρμογών και
Αποθήκευσης Πληροφορίας σε Blockchain
Περιβάλλοντα
Παπατζέλος Σπυρίδων
Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης
Πολυτεχνική Σχολή, Τμήμα Ηλεκτρολόγων Μηχανικών
και Μηχανικών Η/Υ
Εργαστήριο Επεξεργασίας Πληροφορίας και
Υπολογισμών
Επιβλέπων Επ Καθηγητής
Ανδρέας Συ εωνίδης
Διπλωματική Εργασία
Θεσσαλονίκη, 2 Ιουλίου 2018
2. Κίνητρο
ια κατανε η ένη βάση δεδο ένων
προστατευ ένη από αλλοιώσεις και αλλαγές
Οι συναλλαγές που πραγ ατοποιούνται στο δίκτυο
καταγράφονται και εταδίδονται σε όλους τους
χρήστες Διαφάνεια
Απευθείας συναλλαγές εταξύ ατό ων χωρίς τη
εσολάβηση ιας έ πιστης κεντρικής αρχής
Γρήγορες Ασφαλείς και Φθηνότερες συναλλαγές
3. Στόχοι της Διπλωματικής
Εξερεύνηση της τεχνολογίας και των
διαφόρων υποδο ών
Μελέτη ως προς
Κόστος εκτέλεσης εφαρ ογών
Κόστος αποθήκευσης δεδο ένων
Αναζήτηση τεχνικών βελτιστοποίησης του
κόστους των
4. Περιγραφή
Υλοποίηση ιας Εφαρ ογής για τη στοιχειώδη διαχείριση της
Αγροτικής Εφοδιαστικής Αλυσίδας
Χρήση του περιβάλλοντος
Μεθοδολογία
● Ανάλυση ε τη χρήση εργαλείων
● Μελέτη του
● Ανάλυση σεναρίων για συναρτήσεις ε χωρίς ορίσ ατα
αποθήκευση σε
● Ανάλυση σεναρίων για το κόστος αποθήκευσης
δεδο ένων
● Εφαρ ογή τεχνικών βελτιστοποίησης στην εφαρ ογή
7. Συναλλαγές - Transactions
Υπογεγρα ένο πακέτο δεδο ένων Περιλα βάνει
Το δέκτη του ηνύ ατος
Μια υπογραφή που αναγνωρίζει τον αποστολέα
Ένα πεδίο
Ένα προαιρετικό πεδίο δεδο ένων το οποίο
περιέχει το ήνυ α για το
Μια τι ή
Μια τι ή
8. Ethereum Virtual Machine
Περιβάλλον Εκτέλεσης Εφαρ ογών
Μέρη Αποθήκευσης Δεδο ένων
α Στοίβα β Μνή η
γ Δίσκος
Οι υπολογισ οί στο πραγ ατοποιούνται ε την
χρήση ιας γλώσσας προγρα ατισ ού που
βασίζεται σε στοίβα Ένα πρόγρα α στο είναι ια
σειρά από
9. Υλοποίηση ενός Smart Contract
Προγρα ατισ ός ενός
Μεταγλώττιση σε
Μέσω Συναλλαγής Εκτέλεση του παραπάνω
στο Δη ιουργία ενός λογαριασ ού ε
αποθηκευ ένο τον επιθυ ητό κώδικα Αρχικοποίηση
Κλήση συναρτήσεων
Το Συνολικό Κόστος
Κόστος για το του φορά
Κόστος κλήσεις συναρτήσεων του
12. GAS
Κάθε διεργασία που εκτελείται στο
έχει ένα συγκεκρι ένο κόστος σε
Κάθε συναλλαγή θα κοστίσει σε
13. Κόστος ενός Transaction
Το σταθερό κόστος για την πραγ ατοποίηση ενός
ισούται ε
Κ γενική περίπτωση
Κ
Το κόστος του πεδίου δεδο ένων
Το κόστος εκτέλεσης εντολών στο
κατά τη διάρκεια της αρχικοποίησης
κατά την εκτέλεση κώδικα ενός
Το κόστος για την αποθήκευση κώδικα
στο
14. Τύποι υπολογισμού
Το κόστος των υπολογίζεται από
τον παρακάτω αλγόριθ ο
όπου στα δεδο ένα εισόδου η
ηδενικής τι ής ηδενικής τι ής
Το κόστος αποθήκευσης του κώδικα
υπολογίζεται
όπου
16. Σενάρια
Βασικά για την ανάλυση του κόστους
αποθήκευσης δεδο ένων Ερωτή ατα
Σύγκριση των δο ών τύπων δεδο ένων
Πώς επηρεάζουν τα ορίσ ατα τύπος δεδο ένων της
συνάρτησης τα
Με ποια σειρά αποθηκεύονται οι εταβλητές στο
του
Ποιο είναι το κόστος του και η εξάρτησή
του ε το τωρινό του
17. Παρατηρήσεις
Το έχει έγεθος λέξης
Επο ένως διαχειρίζεται πιο εύκολα λιγότερος
κώδικας λιγότερο κόστος τις δο ές δεδο ένων
των
Πρόσβαση στο του ανά
32 bytes
32 bytes
19. Function hash 000...0000var1 000...000varN
1. Transaction Data 0x
4 bytes 32 bytes 32 bytes
Function hash 000..00020 var_string
4 bytes 32 bytes 32 bytes
00..0#bytes
32 bytes
A
B
2. Storage -> Κόστος A[2*20Κ+5Κ], B[3*20K]
Var1
Var200..00 Var3
30 bytes 1 byte 1 byte
Var1
Var20000...00000
Var30000...00000
byte00....0000
A B
20. Σύγκριση int256 με int8
Μείωση του κόστους κατά Κ για κάθε εταβλητή
που αποθηκεύου ε στο ίδιο χώρο στο
Κ τι ές εγέθους σε Κ εταβλητές
Δυνατότητα επιλογής εταξύ των τύπων δεδο ένων
και
Προσεγγιστικά Η διαφορά του κόστους υλοποίησης
υπολογίζεται από τον τύπο
Diff = Cost(K*int256) - Cost(K*int8)
= 7240 * K - 11912 - 258 * n
21. Μεταβολή πλήθους μεταβλητών, Κ
[Περίπτωση χρήσης μικρού μεγέθους δομών]
Χρήση τύπου int8 για περιορισμένο αριθμό μεταβολής των τιμών
των μεταβλητών (n).
22. Σύγκριση Δομών Δεδομένων
Βέλτιστη χρήση δο ών δεδο ένων
Γενική Περίπτωση Χρήση δο ών δεδο ένων των
όπως για την αποθήκευση
εταβλητών οποιαδήποτε εγέθους Το
διαχειρίζεται πιο εύκολα τις παραπάνω δο ές
Ειδική Περίπτωση Χρήση ικρούς εγέθους δο ών
δεδο ένων όπως για την αποθήκευση
στατικών εταβλητών
Χρήση σταθερού εγέθους πίνακα για την
αποθήκευση αλφαριθ ητικών εώς έναντι
24. Εφαρμογή: 2 Προσεγγίσεις
Το συνολικό κόστος για την υλοποίηση του
της Προσέγγισης υπολογίζεται από
Το συνολικό κόστος για την υλοποίηση του
της Προσέγγισης υπολογίζεται από
Η διαφορά τους υπολογίζεται από
25. Διαφορές -> Εξοικονόμηση
Χρήση ικρού εγέθους τύπων δεδο ένων
Χρήση αντί για την αρχικοποίηση
εταβλητών
Αποθήκευση δεδο ένων τύπου στα
έσω αντί για το του
Παραπάνω αλλαγές Μείωση του κώδικα
26. Ενδεικτικές τιμές
Η διαφορά του κόστους των δυο προσεγγίσεων
υπολογίζεται από τον τύπο
Για Ν Ν Ν
Μ Μ
Μ Μείωση
30. Κόστος ενός Transaction
Το σταθερό κόστος για την πραγ ατοποίηση ενός
ισούται ε
Κ γενική περίπτωση
Κ
Το κόστος του πεδίου δεδο ένων
Το κόστος εκτέλεσης εντολών στο
κατά τη διάρκεια της αρχικοποίησης
κατά την εκτέλεση κώδικα ενός
Το κόστος για την αποθήκευση κώδικα
στο
31. Deploy ενός Contract
Το σταθερό κόστος για την πραγ ατοποίηση ενός
ισούται ε Κ
Το κόστος του πεδίου δεδο ένων
Το κόστος εκτέλεσης εντολών στο
κατά τη διάρκεια της αρχικοποίησης ενός
Το κόστος για την αποθήκευση κώδικα
στο
32. Εκτέλεση Συναρτήσεων
Το σταθερό κόστος για την πραγ ατοποίηση ενός
ισούται ε Κ
Το κόστος του πεδίου δεδο ένων
Ορίσ ατα
Το κόστος εκτέλεσης εντολών στο
36. Συμβουλές
Κατά το
Αφαίρεση περιττού κώδικα
Χρήση της παρα έτρου κατά τη
εταγλώττιση
Κατά την εκτέλεση συναρτήσεων
Αφαίρεση περιττού κώδικα
Χρήση Κανόνων
37. Συμβουλές (2)
Μείωση τον ακριβών Αποφυγή ακριβών
λειτουργιών σε επανάληψη
αποθήκευση σε εταβλητή του
έσα σε βρόχο Χρήση τοπικής εταβλητής
Αποθήκευση στο ετά τους
υπολογισ ούς
38. Σύγκριση Δομών Δεδομένων
Χρήση της δο ής δεδο ένων σε αντίθεση ε τη
δο ή για την αποθήκευση αλφαριθ ητικών
εγέθους εώς
Οι τύποι δεδο ένων έχουν το ίδιο
κόστος υλοποίησης
Χρήση των δο ών δεδο ένων έναντι
των αντίστοιχων ικρότερων δο ών
Χρήση του τύπου δεδο ένων έναντι του τύπου
για αποθήκευση δεδο ένων ικρού εγέθους
42. Προσεγγίσεις Συναρτήσεις
Προσέγγιση #1, gas Προσέγγιση #2, gas
Set Farmer’s Log 45355 27013
Set Quantity [42304, 44288] [42304, 44288]
Require Transfer [62704, 64688] [24519, 26497]
Transfer to Driver 69638 69550
Set Driver’s Log 69528 27298
Set TemC [42694, 44678] 27884 (42884)
Transfer to Lab 69528 69462
Set Farmer’s Log 45509 27122
Set Certificate 42890 27824 (42824)
47. Δεδομένα
Γεωργός διεύθυνση κωδικός για το χωράφι
ένας κωδικός για την παραγωγή ποσότητα
πληροφορίες σχετικά ε το χωράφι
Μεταφορέας διεύθυνση έρα
παραλαβής παράδοσης θερ οκρασία
ψυγείου πληροφορίες σχετικά ε την εταφορά
Εργοστάσιο διεύθυνση πιστοποίηση
προϊόντος πληροφορίες για ελέγχους
49. Αποθηκευτικός χώρος στο
EVM
Στοίβα
Κάθε στοιχείο έγεθος Μέγιστος αριθ ός
στοιχείων
Μνή η
Πίνακας από Πρόσβαση ανά
Προσωρινή Μέχρι το πέρας του προγρά ατος
Δίσκος
Πίνακας από Πρόσβαση ανά
Μόνι η
50. Βάση δεδομένων,
Blockchain
Διατηρεί ια ολοένα και αυξανό ενη λίστα ε
εγγραφές που ονο άζονται
είδη καταχωρήσεων
Αλγόριθ ος κατακερ ατισ ού
Συνδεδε ένα Αλυσίδα Ακεραιότητα
Ο κάθε χρήστης έχει αντίγραφο της βάσης
δεδο ένων
54. Consensus - Επικρατούσα
άποψη (1)
Όλοι οι χρήστες έχουν τη δυνατότητα να
δη ιουργήσουν ένα καινούριο σε κάποιο
προϋπάρχων παλιότερο
Δο ή ΒΔ δένδρο από
Κάθε διαδρο ή ονοπάτι από ρίζα έχρι φύλλο
ορίζει ια διαφορετική βάση δεδο ένων
Τρόπος επιλογής Μονοπατιού
55. Consensus - Επικρατούσα
άποψη (2)
Αλγόριθ ος επιλογής ΒΔ ε την εγαλύτερη αξία
κο άτι δεδο ένων το οποίο είναι
δύσκολο για ένα άτο ο να το παράγει αλλά εύκολο
για τους υπόλοιπους να διαπιστώσουν αν
ικανοποιεί κάποιες προϋποθέσεις
Παραγωγή κόστος ή χρονοβόρα
57. Ασφάλεια ΒΔ (1)
Προδιαγραφές
Προέλευση και ακεραιότητα των δεδο ένων
Ασφάλεια των δεδο ένων
Κινητικότητα Ενσω άτωση και Διαλειτουργικότητα
των δεδο ένων
59. Λειτουργία Δικτύου
Μετάδοση συναλλαγών στο δίκτυο
Το συλλέγουν τις συναλλαγές σε ένα
Κάθε προσπαθεί να υπολογίσει το
Όταν ένας υπολογίσει το τότε ο
εταδίδει το στα υπόλοιπα
Αποδοχή του νέου
Έγκυρες όχι
Αποδοχή του Τα δουλεύουν για τη
δη ιουργία του επό ενου
60. Κίνητρο
Αντα οιβή για τη δη ιουργία ενός καινούριου
Κατανάλωση πόρων επεξεργαστική ισχύς και
κατανάλωση ηλεκτρεκτρικού ρεύ ατος
Υποστήριξη δικτύου
της επεξεργαστικής ισχύος στην κατοχή
έντι ων χρηστών
61. Το Ethereum είναι ένα προγραμματίσιμο
σύστημα Blockchain. Δεν υποστηρίζει, μόνο,
ένα σύνολο από συγκεκριμένες λειτουργίες
αλλά δίνει στον χρήστη τη δυνατότητα να
δημιουργήσει τις δικές του λειτουργίες,
οποιασδήποτε πολυπλοκότητας. Σύστημα για
την ανάπτυξη κατανεμημένων εφαρμογών.