La machine virtuelle Ethereum (EVM)
Le Machine virtuelle Ethereum (EVM) est un environnement virtuel décentralisé qui exécute le code de manière cohérente et sécurisée sur tous les nœuds Ethereum. Les nœuds exécutent l'EVM pour exécuter des contrats intelligents, en utilisant «gaz« pour mesurer l’effort de calcul requis pour les opérations, garantissant une allocation efficace des ressources et la sécurité du réseau.
Pré-requis :
Une connaissance de base de la terminologie informatique courante, comme les octets, la mémoire et les piles, est nécessaire pour comprendre l'EVM. Il est également utile d'être à l'aise avec les concepts de cryptographie et de blockchain tels que les fonctions de hachage et les arbres de Merkle.
Du grand livre à la machine à états
Les blockchains comme Bitcoin sont souvent décrites comme des « registres distribués », qui conservent un enregistrement des activités qui adhèrent à un ensemble de règles régissant les modifications. Par exemple, une adresse Bitcoin ne peut pas dépenser plus de Bitcoins qu'elle n'en a reçu. Ces règles sous-tendent toutes les transactions sur Bitcoin et de nombreuses autres blockchains.
Bien qu'Ethereum possède sa propre crypto-monnaie native (Ether) avec des règles similaires, il prend également en charge une fonctionnalité plus puissante : contrats intelligentsPour comprendre cela, Ethereum est mieux décrit comme une machine à états distribuée. L'état d'Ethereum est une grande structure de données qui contient non seulement tous les comptes et soldes, mais aussi un état de machine qui peut changer d'un bloc à l'autre selon des règles prédéfinies, en exécutant un code machine arbitraire. L'EVM définit les règles de ces changements d'état.
Quelle est la différence entre EVM et Ethereum ?
Ethereum est une plateforme qui permet aux utilisateurs de créer et d'exécuter des applications sur un réseau décentralisé d'ordinateurs. Elle possède sa propre monnaie numérique appelée Ether (ETH), qui est utilisée pour payer des choses sur le réseau. Considérez Ethereum comme un ordinateur géant et partagé que tout le monde peut utiliser pour créer et exécuter ses applications sans qu'une autorité centrale ne le contrôle.
Le Machine virtuelle Ethereum est comme le moteur à l'intérieur de cet ordinateur géant. Il s'assure que toutes les applications et tous les contrats intelligents (accords automatisés) fonctionnent de la même manière sur tous les ordinateurs du réseau. Pour que tout soit équitable et efficace, l'EVM utilise un système appelé « gaz » pour mesurer la puissance de calcul nécessaire à chaque tâche, garantissant ainsi que les ressources ne soient pas gaspillées.
En termes simples, Ethereum est la plate-forme entière qui vous permet de créer et d'utiliser des applications et des contrats décentralisés, tandis que Machine virtuelle Ethereum fait partie de la plateforme qui exécute ces applications et contrats, en s'assurant que tout fonctionne correctement et de manière cohérente sur tous les ordinateurs du réseau. C'est la différence entre EVM et Ethereum.
La fonction de transition d'état d'Ethereum
L'EVM se comporte comme une fonction mathématique : étant donné une entrée, elle produit une sortie déterministe. Cela peut être formellement décrit comme une fonction de transition d'état :
\[ Y(S, T) = S' \]
Étant donné un ancien état valide \( S \) et un nouvel ensemble de transactions valides \( T \), la fonction de transition d'état Ethereum \( Y(S, T) \) produit un nouvel état de sortie valide \( S' \).
État
Dans Ethereum, l'état est une énorme structure de données appelée Merkle Patricia Trie modifié, qui relie tous les comptes par des hachages et les réduit à un seul hachage racine stocké sur la blockchain.
Transactions
Les transactions sont des instructions signées cryptographiquement provenant de comptes, classées en deux types : celles qui aboutissent à des appels de messages et celles qui aboutissent à la création de contrats. La création de contrats génère un nouveau compte de contrat contenant le bytecode de contrat intelligent compilé. Lorsqu'un autre compte effectue un appel de message vers ce contrat, il exécute son bytecode.
Instructions EVM
L'EVM fonctionne comme une machine à pile avec une profondeur de 1024 éléments, chacun étant un mot de 256 bits, choisi pour la compatibilité avec la cryptographie 256 bits (comme les hachages Keccak-256 ou les signatures secp256k1). Pendant l'exécution, l'EVM conserve une mémoire transitoire (un tableau d'octets adressé par mot) qui ne persiste pas entre les transactions. Les contrats ont un trie de stockage Merkle Patricia (un tableau de mots adressable par mot) associé au compte et à une partie de l'état global.
Le bytecode du contrat intelligent compilé s'exécute comme Machine virtuelle Ethereum opcodes, exécutant des opérations de pile standard telles que XOR, AND, ADD, SUB, etc., et des opérations spécifiques à la blockchain telles que ADDRESS, BALANCE et BLOCKHASH.
Implémentations EVM
Toutes les implémentations EVM doivent respecter les spécifications du Yellow Paper d'Ethereum. Au cours de l'histoire d'Ethereum, l'EVM a subi plusieurs révisions, ce qui a donné lieu à de multiples implémentations dans divers langages de programmation, notamment :
- Py-EVM (Python)
- évmone (C++)
- ethereumjs-vm (JavaScript)
- eEVM (C++)
- revm (rouille)
Ces implémentations garantissent que l’EVM reste cohérent et sécurisé sur différentes plates-formes.