3. L’Ethereum Virtual Machine (EVM) le moteur d’Ethereum

Rappel : Pour profiter pleinement de cette formation, sauvegarder votre progression et obtenir votre diplôme en fin de formation, il est vivement recommandé de vous créer un compte CoinAcademy et de vous y connecter.


Nous commencerons par un rappel de ce qu’est une machine virtuelle de manière générale, avant de nous pencher sur Ethereum.

Cette partie traitera de la machine virtuelle d’Ethereum, à savoir le moteur du réseau qui permet toutes les innovations venues révolutionner l’écosystème.

Nous verrons son fonctionnement puis nous reviendrons brièvement sur Solidity, le langage utilisé sur le réseau. À la fin de cette partie, vous comprendrez le cœur du projet Ethereum et son impact sur le reste de l’univers des cryptomonnaies.

Rappel : qu’est-ce qu’une machine virtuelle

En informatique, une machine virtuelle ou VM (virtual machine) est un logiciel permettant d’émuler ou simuler un autre environnement d’exécution au sein de votre machine physique.

Pour faire simple, disons que vous possédez un ordinateur d’une marque quelconque avec un système d’exploitation : Windows 11 par exemple. Une machine virtuelle vous permet d'émuler Windows 7, 10, Ubuntu (Linux) ou Pop! OS (Linux) depuis un ordinateur exécutant nativement Windows 11.

vmware virtualisaton ubuntu sur windows
Virtualisation d'un environnement Ubuntu sur un PC sous Windows 11 avec VMWare

Une VM vous permet donc d’exécuter un autre système d’exploitation, ou applications, simultanément et de manière complètement indépendante au sein de votre ordinateur.

Pour quoi faire ? Souvent ces machines virtuelles sont utilisées pour la consolidation de serveurs. Cela permet en effet de faire tourner de nombreux serveurs virtuels sur chaque machine physique que vous possédez.

Elle offre donc une économie non négligeable en termes de ressources matérielles nécessaires comme disque dur ou alimentation par exemple. De plus elles admettent des fonctions de récupération de données supplémentaires en cas de problème, à l’origine impossibles avec seulement du matériel physique supplémentaire.

Schéma d'une machine virtuelle

Le gros avantage dans l’utilisation d’une machine virtuelle est bien évidemment le fait que les différents environnements sont isolés et il ne peut donc pas y avoir d’interférence entre eux. Entendez par là que si un pirate informatique souhaite remonter à la machine “d'origine” il ne pourra pas, il ne pourra agir que dans l'environnement de la machine virtuelle.

À présent, venons-en à Ethereum 💎

Qu’est-ce que l’EVM (Ethereum Virtual Machine) et comment elle fonctionne ?

C’est quoi l’EVM ?

Dans le contexte d’Ethereum, l’EVM (Ethereum Virtual Machine) est une machine virtuelle dite, Turing complete. Cela signifie simplement qu’elle est capable d’exécuter n'importe quelle instruction ou algorithme calculable, en suivant les règles fondamentales décrites dans la machine de Turing.

Vous pouvez si vous le souhaitez rentrer plus en profondeur sur le sujet des systèmes et langages Turing complete afin d’en comprendre toute la complexité. Pour l'heure, revenons en à Ethereum.

Souvenez-vous, la blockchain est un registre dont l’état est synchronisé entre tous les nœuds qui la constituent. Ce mécanisme permet donc à tous les nœuds d’être en accord sur une seule et même version (état) de la chaine, car chaque nœud viendra exécuter l’EVM.

C’est grâce à l’EVM que cette synchronisation est rendue possible au cours du temps avec toutes les transactions et interactions nouvelles intégrées à chaque nouveau bloc.

C’est pourquoi l’EVM est aussi appelé « distributed state machine » (ou machine d’état distribué en français).

L’EVM est en quelque sorte considéré comme la tête pensante d’Ethereum et permet également au réseau d’exécuter les fameux contrats intelligents (vus en partie 2) et donc d’héberger des applications décentralisées plus ou moins complexes.

Comment l’EVM fonctionne ?

Rappelez-vous dans la dernière partie, nous avons parlé de comptes au sein d’Ethereum. Il y avait les comptes « utilisateur » contrôlables uniquement par les utilisateurs via la clé privée de leur adresse, et les comptes de contrats contrôlés par leur code source et exécutable par l’EVM elle-même.

Nous avons parlé également d’état de la chaine qui rappelez-vous doit rester le même pour tous les nœuds du réseau afin de garder de la cohérence.

En sachant que chaque transaction présente dans chaque bloc vient modifier l’état de la chaine, c’est l’EVM qui vient faire le pont entre les différents états de la chaine en déchiffrant l’ancien, en y ajoutant les nouvelles transactions et interactions puis en la rechiffrant derrière.

Cette étape est donc réitérée par l’EVM à chaque nouveau bloc ajouté à la chaine.

Dans ce processus, l’EVM vient en fait mettre à jour une entité décrivant l’état de la blockchain et nommer « World state ». Cette transition d’état se fait relativement facilement notamment grâce à un concept : les arbres de Merkle (ou Merkle tree).

Schémas de la world state et des transitions d’états

Pour faire très simple, un Merkle tree est une structure mathématique qui permet de lier des éléments ensemble via des calculs mathématiques et d’en tirer une racine (merkle root) commune afin de n’avoir que celle-ci à vérifier pour attester de la validité de tous les éléments le composant.

Il s’agit là d’un sujet un peu plus complexe qui, si vous le souhaitez, peut être approfondi par le biais d’un de nos articles dédiés au sujet.

C’est ainsi que la machine virtuelle d’Ethereum remplit sa fonction principale de calcul des transitions d’état.

L’impact de l’EVM sur l’écosystème crypto

Vous le savez sans doute, mais le réseau Ethereum fut le premier à déployer des contrats intelligents et c’est d’ailleurs ça qui lui a valu sa notoriété si grande au sein de l’écosystème.

De fait, et par sa robustesse dans ce domaine, il est rapidement devenu une norme pour les blockchains concurrentes.

Cependant, il a vite été question de soucis de scalabilité et donc de frais de transactions élevés, dus au trafic important engendré sur Ethereum. C’est pourquoi d’autres chaines ont vu le jour en s’appuyant sur la norme EVM et sa notoriété auprès des utilisateurs.

Ainsi ces nouvelles chaines pouvaient proposer des frais de gaz bien moins élevés et des transactions plus rapides au sein de leur réseau. La plupart d’entre elles n’étant rien de plus qu’un fork (une mise à jour) d’Ethereum utilisant souvent des mécanismes de consensus différents pour pallier ces problèmes.

L’EVM a donc permis à ces nouveaux projets, de copier certaines parties de la structure d’Ethereum pour le déploiement de leur contrat intelligent au lieu de repartir de zéro.

Cette approche a donc également permis une interopérabilité directe pour les utilisateurs de ces nouveaux réseaux en leur permettant de transférer des actifs d’un sens ou dans l’autre tant que la chaine en question était dite EVM compatible. Les utilisateurs peuvent continuer d'utiliser le même wallet (généralement Metamask) pour intéragir avec ces nouvelles blockchains, cela simplifie grandement l'expérience utilisateur.

De plus, les développeurs de smart contrats Ethereum peuvent facilement porter leurs applications décentralisées sur ces nouvelles blockchains EVM compatibles.

Pour que vous compreniez l’impact réel avec des exemples concrets, voici quelques noms de crypto monnaies, parmi beaucoup d’autres qui se ont rendu EVM compatible :

Il s’agit-là d’une liste non exhaustive, mais qui montre néanmoins une adoption de la norme EVM par certains des plus gros projets de l’écosystème crypto.

Solidity, le langage qui fait des miracles

Comme vous vous en doutez probablement, n’importe quel langage de programmation ne peut pas être utilisé pour le développement des smart contracts sur Ethereum.

Ethereum propose une alternative principale, à savoir Solidity, langage largement répandu dans l’écosystème et Vyper.

Ces langages sont considérés comme des langages de haut niveau mais leur syntaxe se rapproche néanmoins de langages très populaires comme Python ou encore Javascript, les rendant ainsi plus accessibles pour les développeurs traditionnels maîtrisant ces langages.

Pour l’heure, nous nous concentrerons sur le langage Solidity, car il est le plus courant dans l’écosystème Ethereum.

Il s’agit donc d’un langage orienté objet (comme python, javascript et bien d’autres) de haut niveau utilisé pour la création de smart contracts sur Ethereum.

Solidity reste un langage facile à prendre en main pour les raisons suivantes :

  • Étant le plus commun sur la chaîne il existe de nombreux tutoriels pour apprendre à le maîtriser
  • Il y a de bons outils de développement disponibles
  • Le langage possède une vaste communauté de développeurs pouvant vous aider dans votre parcours d’apprentissage ou de création de projets

La sécurité au sein des contrats

Les contrats intelligents, qui imposent des transitions d’états, peuvent parfois détenir plus d’1 milliard de dollars d’actifs (pour les échangeurs décentralisés par exemple). C’est pourquoi leur sécurité sera l’un des piliers de leur fondement.

Pour ce faire, la grande majorité des acteurs importants, souhaitant sécuriser des fonds sur leur contrat, passe par des sociétés d’audit.

Les sociétés d’audit sont des sociétés spécialisées dans la sécurité des programmes informatiques. Leur but est de déceler toutes les potentielles failles dans un code informatique avant que celui-ci ne soit mis en ligne.

Malgré tout, il ne s’agit pas d’une solution miracle car, non seulement les audits de smart contrat sont onéreux mais en plus passer un audit ne fait que réduire le risque de faille et ne le supprime pas totalement. En effet plusieurs projets, après avoir fait passer leurs smart contracts par plusieurs sociétés d’audit sérieuses, ont néanmoins laissé apparaître des failles leur coûtant souvent très cher.

C’est pourquoi il est important de souligner que la sécurité de cette technologie ne réside pas totalement dans sa vérification mais bien dans sa conception complète.

Si vous êtes intéressé, les étapes pour sécuriser au maximum votre smart contract de sa création à son déploiement vous seront données dans ce document.

Pour valider ce chapitre et passer à la suite, cliquez sur “Ce qu'il faut retenir” ci-dessous. Cette étape vous aidera avant de répondre au quiz de cette partie.