Qu'est-ce que la machine virtuelle Ethereum (EVM) ?
En se renseignant sur la blockchain Ethereum, de nombreux termes importants surgissent de façon récurrente. C’est le cas de l’Ethereum Virtual Machine (EVM) ou machine virtuelle d’Ethereum en français, l’une des créations les plus importantes de l’écosystème de la blockchain. Découvrons ensemble son fonctionnement complexe ainsi que les portées de son utilisation au-delà des frontières de l'écosystème d'Ethereum.
Acheter Ethereum (ETH)
Publicité eToro
L'Ethereum Virtual Machine (EVM), c'est quoi au juste ?
L’Ethereum Virtual Machine (EVM) ou machine virtuelle d’Ethereum en français est en quelque sorte le cerveau de la blockchain Ethereum. Cette entité permet au réseau d’être continuellement mis à jour selon les transactions et interactions incluses dans les blocs.
Sans l’EVM, la blockchain Ethereum ne serait qu’un réseau épars dans lequel chaque nœud pourrait avoir une version différente de la blockchain, avec des transactions et des comptes disparates.
L’EVM est un système ou un environnement dit « Turing complet », signifiant que celui-ci possède la puissance de calcul de la machine Turing. Autrement dit, l’EVM est capable de réaliser des opérations telles que des calculs simples, des récursions, des comparaisons, des modifications de variables, etc.
L’EVM est également ce qui permet à la blockchain Ethereum de traiter des smart contracts, et donc d’héberger des applications décentralisées complexes. C’est ce qui différencie les blockchains d’infrastructure comme Ethereum des autres blockchains comme Bitcoin ou Monero.
Structure de la blockchain Ethereum
Afin de comprendre le fonctionnement de la machine virtuelle d’Ethereum, il est important d’en apprécier sa structure. En effet, celle-ci est bien plus complexe qu’une simple « suite de blocs » comme on l’entend si souvent.
Les différents comptes sur Ethereum
Il existe sur Ethereum différents types de comptes, les Externally Owned Accounts (EOA) et les Contract Accounts. Alors que les premiers sont des comptes très simples avec une adresse, une balance et un compteur de transactions, les Contract Accounts possèdent en plus un stockage et un code source.
Au-delà de ces différences techniques, il existe une distinction très particulière vis-à-vis de la machine virtuelle d’Ethereum. En effet, les EOA ne peuvent pas être contrôlés par l’EVM, les transactions doivent être réalisées à partir de la clé privée de l’adresse. Autrement dit, seul le propriétaire du compte pourra initier des transactions.
Ce n’est pas le cas des Contract Accounts qui contiennent quant à eux un code source. Celui-ci est spécialement conçu pour que l’EVM puisse l’actionner, sans passer par le détenteur de la clé privée.
Figure 1 : Les différents types de comptes sur la blockchain Ethereum
Le concept de la « World State »
Il existe sur Ethereum une entité, nommée World State. Celle-ci représente l’état de la blockchain à un instant T. Autrement dit, c’est une variable qui contient absolument toutes les informations permettant de définir tout l’inventaire actuel de la blockchain Ethereum.
On y retrouve notamment tous les comptes couplés à leur adresse publique et leurs balances d’ETH et de tokens des différents standards, mais également toutes les applications, accompagnées d’un stockage modifiable et de leur code source immuable.
Cette World State se présente sous la forme d’un arbre gigantesque, appelé Merkle Patricia Trie, qui, une fois chiffrée, prend la forme d’une racine de Merkle. En d’autres termes, tout l’état de la blockchain Ethereum est conservé dans une très large suite de lettres et de chiffres qui, une fois déchiffrée, prend la forme d’un arbre.
La mise à jour de la World State
Par définition, la World State d’Ethereum est une entité décrivant l’état de la blockchain à un instant T. Cependant, de très nombreuses transactions sont effectuées en permanence. Naturellement, celles-ci sont à l’origine de modifications de l’état de la blockchain et donc de la World State.
Étant donné que toutes ces transactions sont effectuées et validées dans des blocs, il est nécessaire de mettre à jour la World State chaque fois qu’un nouveau bloc est traité, et ce, sur tous les nœuds du réseau Ethereum (afin que tout le monde soit sur la même page). C’est là que la machine virtuelle d’Ethereum, ou EVM, entre en jeu.
Figure 2 : Mise à jour de la World State
L’Ethereum Virtual Machine (EVM)
Le cerveau de la blockchain Ethereum
Pour mettre à jour la World State, il est nécessaire d’avoir une unité centrale capable de récupérer l’ancienne racine, de la déchiffrer, de modifier l’état de la blockchain grâce aux transactions du nouveau bloc, et de le chiffrer à nouveau afin d’obtenir la nouvelle World State. La machine virtuelle d’Ethereum, c’est en quelque sorte l’ordinateur qui effectue toutes ces opérations à chaque bloc.
Cette suite d’opérations nécessite de nombreux calculs qui doivent être effectués avec une précision hors pair, car la moindre micro-modification de paramètre entraîne une racine de Merkle radicalement différente. Ceci est dû à la nature du chiffrement.
L’intérêt d’une machine virtuelle
Quand vous entendez « machine virtuelle d’Ethereum », plusieurs questions font surface. Qu’est-ce qu’une machine virtuelle ? Et pourquoi utilise-t-on ça et non une simple application sur son nœud ?
Une machine virtuelle est en quelque sorte un environnement virtualisé qui fonctionne sur une machine physique. Par exemple, un utilisateur d’ordinateur Mac voulant faire tourner une application Windows sur sa machine peut le faire grâce à une machine virtuelle Windows.
Figure 3 : Architecture classique d’une machine virtuelle
L’intérêt d’une machine virtuelle est la constance dans les calculs. En effet, tous les nœuds du réseau sont amenés à modifier la World State à chaque bloc. Et ce même si un seul de ces nœuds n’obtiendra les récompenses du réseau. Ainsi, il est nécessaire que toutes ces entités puissent faire le calcul et arriver au même résultat en un temps identique.
Si chaque nœud utilisait sa propre machine personnelle physique (qui varie largement d’un nœud à un autre), alors la précision et rapidité de ces calculs ne ferait que varier. On pourrait alors se retrouver dans une situation où il existe des centaines de versions de la même blockchain. L’utilisation d’une machine virtuelle permet d’assurer que tout le monde utilise le même environnement avec les mêmes performances, indépendamment de la machine physique.
Le fonctionnement de l’Ethereum Virtual Machine
L’EVM fonctionne donc comme un ordinateur chargé de mettre à jour la World State. Il existe deux types d’interactions avec la blockchain Ethereum : les « calls » et les transactions.
Les « calls » ne permettent que de lire une information sur la blockchain, ce qui ne modifie pas son état. Les transactions sont quant à elles des interactions altérant l’état de la blockchain. Pour interagir avec le réseau, l’utilisateur à l’origine de l’interaction doit payer des frais, appelés gas, et ce, pour éviter le spamming éventuel du réseau. Lorsqu’un nouveau bloc est miné, l’EVM doit traiter chaque transaction qui y figure.
Tout d’abord, les transactions simples entre les comptes externes (EOA) sont traitées. Cette opération est très rapide, car elle ne nécessite qu’une vérification des fonds. En effet, si A envoie 100 ETH à B, il faut être absolument sûr que A possède bien 100 ETH et que B possèdera bien 100 ETH en plus une fois la transaction effectuée.
D’un autre côté, les transactions incluant un contrat sont plus complexes. Celles-ci interagissent avec un code source, écrit en Solidity, qui doit donc être exécuté avant de connaitre la finalité de la transaction. Cette opération est effectuée de façon isolée, impliquant que l’EVM n’a accès à aucun fichier ou réseau que ce qui est en sa possession.
Tout cela est exécuté pour chaque transaction du bloc et par tous les nœuds du réseau. Les calls quant à eux ne nécessitent qu’un seul nœud, car l’état de la blockchain n’en sort pas modifié. Il n’y a donc que très peu de risques d’attaque par ce biais-là.
Figure 4 : Représentation d’une transaction sur Ethereum
L’EVM dans d’autres blockchains
Le réseau Ethereum a été le premier à déployer des smart contracts et est, à l’heure d’écriture de ces lignes, toujours considéré comme la norme parmi les blockchains concurrentes. Mais en raison de sa taille et de son nombre d’utilisateurs, il est arrivé un point où ses frais élevés et sa faible vitesse d’exécution des transactions sont devenus de sérieux freins à l’adoption.
Bien qu’Ethereum 2.0, dont la sortie est prévue en 2022, soit censée résoudre certains des problèmes de l’actuelle version, il va de soi que les nombreux retards ont entrainé de multiples blockchains novatrices à tirer profit de l’EVM tout en améliorant technologiquement la blockchain sous-jacente.
Ainsi, diverses nouvelles blockchains se sont construites sur la base d’une compatibilité avec l’EVM tout en réduisant considérablement les frais et en améliorant la scalabilité du réseau. Pour ce faire, les développeurs ont tout simplement copié certaines parties du code source d’Ethereum (notamment celle contenant l’EVM) et développé une blockchain plus performante autour.
Cette méthode s’est révélée extrêmement bénéfique tant par la relative simplicité de développement que par l’attractivité de la blockchain vis-à-vis des développeurs. Voici une liste non exhaustive des blockchains compatibles EVM les plus connues :
- BNB Chain (BNB) ;
- Fantom (FTM) ;
- Polygon (MATIC) ;
- Avalanche (AVAX) ;
- Cardano (ADA).
Conclusion sur l’Ethereum Virtual Machine
L’EVM est la première sous-couche du système Ethereum. Elle permet de réaliser les différentes transactions impliquant adresse externe et smart contracts.
Ainsi, elle est à l’origine de la mise à jour de la World State, entité définissant entièrement l’état de la blockchain Ethereum, après chaque bloc. Son utilisation requiert du gas, et ce, afin d’éviter le spam du réseau.
Grâce à sa capacité à exécuter des applications complexes, elle est devenue, à l’heure d’écriture de ces lignes, la norme des environnements d’exécution dans les blockchains. Ainsi, de nombreuses blockchains novatrices continuent d’implémenter l’EVM malgré sa relative vieillesse.
Sources graphiques : Figure 1 : Vaihbhav Saini ; Figure 2 : Software Engineering Daily ; Figure 3 : Microsoft ; Figure 4 : Edureka
👉 Retrouvez tous nos guides dédiés à la blockchain Ethereum
Recevez un récapitulatif de l'actualité crypto chaque jour par mail 👌
Si l’EVM est aussi puissante que la machine de Turing, on ne va pas aller loin...
Merci pour cet article simple et efficace. Juste une remarque sur l'affirmation suivante: "une addition va coûter plus cher qu’une multiplication". Je suis surpris que ça ne soit pas l'inverse, une multiplication étant une somme d'additions.
C'est effectivement l'inverse !