La Machine Virtuelle Ethereum (EVM) est l’élément au centre de fonctionnement de la blockchain Ethereum qui permet à ses utilisateurs de coder des programmes pour l’exécution des #contrats intelligents (smart-contracts) dans le but d’insérer sur la #Blockchain tout type des fonctionnalités utile à ses utilisateurs.
Introduction
Depuis la révolution technologique de la blockchain apportée par #SatoshiNakamoto, de plus en plus de concepteurs et développeurs se sont investis dans cette technologie afin d’apporter les solutions nécessaires à la résolution de nos problèmes quotidien. Parmi ces solutions figure en première place la technologie #Ethereum qui est sans doute la plus avancée de toute. Dans cet article, nous verrons le système permettant de déployer le réseau Ethereum et ses fonctionnalités.
Définition
L’#EVM (Ethereum Virtual Machine) est le système décrit par le Russo-Canadien #Vitalik Buterin (fondateur d’Ethereum) et mis sur pied par l’équipe du programmeur informatique #Gavin Wood (Co-fondateur) qui permet à tout développeur de créer tout type application décentralisée sans que personne n’est à créer sa propre blockchain. C’est elle qui permet aux smart-contracts de fonctionner sur la blockchain Ethereum grâce à son système « Turing Complet », expression du créateur de la machine Turing #Alan Turing. La philosophie d’Ethereum se veut donc #simple, #universelle, #modulaire, #agile, et #ni discrimination ni censure.
Les inventeurs de EVM
L’EVM a été décrit par #Gavin Wood sur le #YellowPaper (document technique) décrivant les principes et le fonctionnement de la machine virtuelle qui est au cœur du réseau Ethereum. Avec une équipe de professionnels de la cryptographie comme #Greg Colvin, #Charles Hoskinson, #Anthony Di Iorio et #Joseph Lubin, ils ont mis sur pied la technologie qui révolutionne l’utilisation de la blockchain. La machine virtuelle d’Ethereum y est décrit comme étant un système dans lequel les utilisateurs peuvent être sûrs que peu importe avec quels autres individus, systèmes ou organisations ils interagissent, ils peuvent le faire en ayant une connaissance absolue dans les résultats possibles et les règles guidant l’obtention de ces résultats. Il dit lors d’une conférence « le réseau Ethereum est comparable à un seul ordinateur pour toute la planète».
La définition formelle de l’EVM est spécifiée dans le #Ethereum Yellow Paper. Les EVMs ont été implémentés en C++, C#, Go, Haskell, Java, JavaScript, Python, Ruby, Rust, Elixir, Erlang et bientôt WebAssembly.
Figure 1 : architecture de l’EVM
Description de l’architecture EVM
L’EVM est constitué de quatre éléments essentiels
#stack : c’est une pile de données abstrait qui sert de collection d’éléments et permettant d’ajouter ou de retirer les éléments de la collection ;
#gas : Le gaz est une unité de compte au sein de l’EVM utilisée dans le calcul des frais de transaction, qui est le montant d’#ETH (ether) que l’expéditeur d’une transaction doit payer au mineur qui inclut la transaction dans la blockchain. Ce montant est exprimé en Wei (1wei = 10-18 Eth) ;
#Program counter (PC) : c’est un registre de processeur qui indique où se trouve un ordinateur dans sa séquence de programme ;
#memory : est la mémoire utilisée par EVM pour stocker les informations sur les contrats dont EVM peut y accéder rapidement.
Fonctionnement d’EVM
Ethereum est constitué de machines appelées #nœuds répartis sur tout le globe terrestre. Chaque nœud exécute une instance du logiciel de la blockchain Ethereum de telle sorte que l’ensemble de ces instances forme une machine virtuelle permettant à tout un chacun d’utiliser ou coder des #smart_contracts. Cette machine virtuelle a pour particularité de toujours garder toutes les informations sur l’#Etat du système à un moment donné. C’est donc une #Machine d’état. L’EVM effectue les calculs par #compilation d’instructions car elle n’est pas capable d’effectuer elle-même le langage.
Nous remarquons qu’a un certain moment donné, le réseau Ethereum se met à jour pour afficher un certain état différent de celui précédent. Dans chaque nœud, EVM doit miner et exécuter toutes les transactions du nouveau #block. Chaque transaction est exécutée séquentiellement par EVM dans un ordre décidé arbitrairement par chaque mineur. Pour chaque transaction, EVM doit vérifier si elle est valide et calculer le #nouvel état de la blockchain et préciser. Par exemple, une adresse peut avoir son solde augmenté. Le processus sera répéter plusieurs fois jusqu’à ce que toutes les transactions soient effectuées pour ce block. Dès lors, le mineur qui aura trouvé la solution et par conséquent le nouveau block pourra ainsi propager le nouveau block contenant le #hash du nouvel état du système à l’ensemble des nœuds du réseau.
L’EVM peut être exécuté en deux modes différents :
#eth_call (read_only) : dans ce mode, un utilisateur envoie une demande à n’importe quel nœud du réseau et l’EVM de ce nœud traitera la demande ;
#eth_sendTransaction (write) : dans ce mode l’utilisateur envoie les transactions minées par le réseau Ethereum, dans chaque nœud mineur, EVM doit exécuter toutes les transactions du nouveau block.
La machine virtuelle Ethereum est un logiciel qui présente des avantages (décentralisation des #smart-contracts, grande flexibilité, pas de limitation, sécurisation des échanges, gain de temps…) mais aussi des inconvénients (moins performant que d’autres machines virtuelles, pas de portabilité, pas optimisée pour s’adapter aux autres plateformes…).
Le déploiement des Applications décentralisées (#DApps) sur EVM
Le déploiement des applications décentralisées se fait grâce à l’utilisation du langage de programmation spécialisé #Solidity. Ce langage se transforme en #Opcodes (OP_CODES) puis en #bytecode pour être exécuter par EVM. Par la possibilité pour chaque nœud du réseau de stocker des contrats intelligents, nous pouvons comprendre qu’Ethereum se comporte un grand ordinateur mondial décentralisé à usage général sur un réseau pair à pair, qui peut résoudre presque tous les problèmes de calcul dans le même réseau Ethereum. Les instructions sont écrites dans un contrat dit « intelligent » qui est exécuté lorsqu’il arrive sur la blockchain.
Conclusion
Bien que cet article ne soit pas exhaustif et rédiger avec un aspect technique, nous réalisons néanmoins les performances exceptionnelles de l’Ethereum Virtual Machine et comprenons les raisons pour lesquelles il regorge le plus grand écosystème d’applications décentralisées. Avec l’évolution d’Ethereum à venir, nous témoignerons d’un réseau plus robuste, la défense contre les fautes bizantines, la #scalabilité, la meilleure protection et intégrité des données et une plus grande résistance à la censure. Avec Ethereum, rien ne vous arrête.
Sources : https://ethereum.org/fr/whitepaper/, https://en.wikipedia.org/wiki/Ethereum, https://web.archive.org/web/20180203110042/http://yellowpaper.io/, https://www.cointribune.com, https://academy.bit2me.com/fr/,