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

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

Προϋποθέσεις

Μια βασική εξοικείωση με την κοινή ορολογία της επιστήμης των υπολογιστών, όπως bytes, μνήμη και στοίβες, είναι απαραίτητη για την κατανόηση του EVM. Είναι επίσης χρήσιμο να είστε εξοικειωμένοι με την κρυπτογραφία και τις έννοιες του blockchain, όπως οι συναρτήσεις κατακερματισμού και τα δέντρα Merkle.

Από το Λογιστικό Βιβλίο στη Μηχανή Καταστάσεων

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

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

Ποια είναι η διαφορά μεταξύ EVM και Ethereum;

Ethereum είναι μια πλατφόρμα που επιτρέπει στους ανθρώπους να δημιουργούν και να εκτελούν εφαρμογές σε ένα αποκεντρωμένο δίκτυο υπολογιστών. Διαθέτει το δικό της ψηφιακό νόμισμα που ονομάζεται Ether (ETH), το οποίο χρησιμοποιείται για την πληρωμή πραγμάτων στο δίκτυο. Σκεφτείτε το Ethereum ως έναν γιγάντιο, κοινόχρηστο υπολογιστή που όλοι μπορούν να χρησιμοποιήσουν για να δημιουργήσουν και να εκτελέσουν τις εφαρμογές τους χωρίς να τον ελέγχει μια κεντρική αρχή.

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

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

Η Συνάρτηση Μετάβασης Κατάστασης Ethereum

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

\[ Y(S, T) = S' \]

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

Κατάσταση

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

Συναλλαγές

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

Οδηγίες EVM

Το EVM λειτουργεί ως μηχανή στοίβας με βάθος 1024 στοιχείων, καθένα από τα οποία είναι μια λέξη 256-bit, επιλεγμένα για συμβατότητα με κρυπτογραφία 256-bit (όπως hashes Keccak-256 ή υπογραφές secp256k1). Κατά την εκτέλεση, το EVM διατηρεί προσωρινή μνήμη (έναν πίνακα byte με διεύθυνση λέξης) που δεν παραμένει μεταξύ των συναλλαγών. Τα συμβόλαια έχουν μια μνήμη αποθήκευσης Merkle Patricia (έναν πίνακα λέξεων με διεύθυνση λέξης) που σχετίζεται με τον λογαριασμό και μέρος της καθολικής κατάστασης.

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

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

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

  • Py-EVM (Python)
  • evmone (C++)
  • ethereumjs-vm (JavaScript)
  • eEVM (C++)
  • στροφές (Σκουριά)

Αυτές οι υλοποιήσεις διασφαλίζουν ότι το EVM παραμένει συνεπές και ασφαλές σε διαφορετικές πλατφόρμες.