Μετάβαση στο κύριο περιεχόμενο
Change page

Η εικονική μηχανή του Ethereum (EVM)

Τελευταία επεξεργασία: @mr_giorgos(opens in a new tab), 21 Ιουνίου 2024

Η εικονική μηχανή Ethereum (EVM) είναι ένα αποκεντρωμένο εικονικό περιβάλλον που εκτελεί κώδικα με συνέπεια και ασφάλεια σε όλους τους κόμβους του Ethereum. Οι κόμβοι εκτελούν το EVM για την εκτέλεση έξυπνων συμβολαίων, χρησιμοποιώντας "gas" για τη μέτρηση της υπολογιστικής προσπάθειας που απαιτούν οι λειτουργίες, διασφαλίζοντας αποτελεσματική κατανομή πόρων και ασφάλεια δικτύου.

Προαπαιτούμενα

Για την κατανόηση του EVM απαιτείται κάποια βασική εξοικείωση με την κοινή ορολογία στην επιστήμη των υπολογιστών, όπως byte(opens in a new tab), μνήμη(opens in a new tab) και στοίβα(opens in a new tab). Θα ήταν επίσης χρήσιμο να νιώθετε άνετα με έννοιες κρυπτογραφίας/αλυσίδας συστοιχιών, όπως συναρτήσεις κατακερματισμού(opens in a new tab) και δέντρο Merkle(opens in a new tab).

Από το ledger στη μηχανή κατάστασης

Η αναλογία ενός «κατανεμημένου ledger» χρησιμοποιείται συχνά για να περιγράψει αλυσίδες συστοιχιών, όπως το Bitcoin, που ενεργοποιούν ένα νόμισμα αποκεντρωμένο χρησιμοποιώντας θεμελιώδη εργαλεία κρυπτογραφίας. Το ledger διατηρεί ένα αρχείο δραστηριότητας το οποίο πρέπει να συμμορφώνεται με ένα σύνολο κανόνων που ελέγχουν τι μπορεί και τι δεν μπορεί να κάνει κάποιος για να τροποποιήσει το ledger. Για παράδειγμα, μια διεύθυνση Bitcoin δεν μπορεί να ξοδέψει περισσότερα Bitcoin από όσα είχε λάβει προηγουμένως. Αυτοί οι κανόνες είναι θεμελιώδεις για όλες τις συναλλαγές στο Bitcoin και σε πολλές άλλες αλυσίδες συστοιχιών.

Ενώ το Ethereum έχει το δικό του εγγενές κρυπτονόμισμα (Ether) που ακολουθεί σχεδόν ακριβώς τους ίδιους διαισθητικούς κανόνες, ενεργοποιεί επίσης μια πολύ πιο ισχυρή λειτουργία: τα έξυπνα συμβόλαια. Για αυτό το πιο περίπλοκο χαρακτηριστικό, απαιτείται μια πιο σύνθετη αναλογία. Αντί για ένα κατανεμημένο ledger, το Ethereum είναι μια κατανεμημένη μηχανή κατάστασης(opens in a new tab). Η κατάσταση του Ethereum είναι μια μεγάλη δομή δεδομένων που περιέχει όχι μόνο όλους τους λογαριασμούς και τα υπόλοιπα, αλλά μια κατάσταση μηχανής, η οποία μπορεί να αλλάζει από μπλοκ σε μπλοκ σύμφωνα με ένα προκαθορισμένο σύνολο κανόνων και η οποία μπορεί να εκτελεί αυθαίρετα κώδικα μηχανήματος. Οι συγκεκριμένοι κανόνες αλλαγής κατάστασης από μπλοκ σε μπλοκ καθορίζονται από το EVM.

Ένα διάγραμμα που δείχνει τη σύνθεση του EVM Προσαρμοσμένο διάγραμμα εικονογραφημένο από Ethereum EVM(opens in a new tab)

Η λειτουργία μετάβασης της κατάστασης του Ethereum

Το EVM συμπεριφέρεται όπως μια μαθηματική συνάρτηση: Με δεδομένο στοιχείο εισόδου, παράγει αιτιοκρατικό στοιχείο εξόδου. Επομένως, είναι πολύ χρήσιμο να περιγράφουμε πιο επίσημα ότι το Ethereum έχει λειτουργία μετάβασης κατάστασης:

1Y(S, T)= S'

Δεδομένης μιας παλιάς έγκυρης κατάστασης (S) και ενός νέου συνόλου έγκυρων συναλλαγών (T), η λειτουργία μετάβασης κατάστασης του Ethereum Y(S, T) παράγει μια νέα έγκυρη κατάσταση εξόδου S'

Κατάσταση

Στο πλαίσιο του Ethereum, η κατάσταση είναι μια τεράστια δομή δεδομένων που ονομάζεται τροποποιημένο Merkle Patricia Trie, το οποίο διατηρεί όλους τους λογαριασμούς συνδεδεμένους με κατακερματισμούς και μπορεί να αναχθεί σε έναν ενιαίο κατακερματισμό ρίζας που είναι αποθηκευμένος στην αλυσίδα συστοιχιών.

Συναλλαγές

Οι συναλλαγές είναι κρυπτογραφικά υπογεγραμμένες από το λογαριασμό. Υπάρχουν δύο τύποι συναλλαγών: αυτές που καταλήγουν σε κλήσεις μηνυμάτων και εκείνες που καταλήγουν στη δημιουργία συμβολαίων.

Η δημιουργία συμβολαίου έχει ως αποτέλεσμα τη δημιουργία ενός νέου λογαριασμού συμβολαίου που περιέχει συνταγμένο bytecode έξυπνου συμβολαίου. Κάθε φορά που ένας άλλος λογαριασμός κάνει μια κλήση μηνύματος σε αυτό το συμβόλαιο, εκτελεί το bytecode του.

Οδηγίες EVM

Το EVM εκτελείται ως μηχάνημα στοίβας(opens in a new tab) με βάθος 1024 στοιχείων. Κάθε στοιχείο είναι μια λέξη 25- bit, η οποία επιλέχθηκε για την ευκολία χρήσης με κρυπτογραφία 256-bit (όπως κατακερματισμοί Keccak-256 ή υπογραφές secp256k1).

Κατά την εκτέλεση, το EVM διατηρεί μια μεταβατική μνήμη (ως πίνακας byte με αναζήτηση βάσει λέξης), η οποία δεν επιμένει μεταξύ των συναλλαγών.

Τα συμβόλαια, ωστόσο, περιέχουν ένα τρίγωνο αποθήκευσης Merkle Patricia (ως πίνακας λέξεων με αναζήτηση βάσει λέξης), που σχετίζεται με τον εν λόγω λογαριασμό και αποτελεί μέρος της συνολικής κατάστασης.

Ο συνταγμένος bytecode έξυπνων συμβολαίων εκτελείται ως ένας αριθμός κωδικών EVM, οι οποίοι εκτελούν τυπικές λειτουργίες στοίβας όπως XOR, AND, ADD, SUB κ.λπ. Το EVM υλοποιεί επίσης έναν αριθμό λειτουργιών στοίβας ειδικά για την αλυσίδα συστοιχιών, όπως ADDRESS, BALANCE, BLOCKHASH, κ.λπ.

Ένα διάγραμμα που δείχνει πού χρειάζεται gas για λειτουργίες EVM Τα διαγράμματα προσαρμόζονται από το εικονογραφημένο EVM του Ethereum(opens in a new tab)

Υλοποιήσεις EVM

Όλες οι υλοποιήσεις του EVM πρέπει να συμμορφώνονται με τις προδιαγραφές που περιγράφονται στο Yellowpaper του Ethereum.

Κατά τη διάρκεια της εννιάχρονης ιστορίας του Ethereum, το EVM έχει υποστεί αρκετές αναθεωρήσεις και υπάρχουν αρκετές υλοποιήσεις του EVM σε διάφορες γλώσσες προγραμματισμού.

Οιπελάτης εκτέλεσης του Ethereum περιλαμβάνουν υλοποίηση EVM. Επιπλέον, υπάρχουν πολλές αυτόνομες υλοποιήσεις, όπως:

Περισσότερες πληροφορίες

  • Καύσιμα

Ήταν χρήσιμο αυτό το άρθρο;