Ethereum: le premier ordinateur mondial

Ethereum
Ethereum
Share

Créé en 2014 par par le génie visionnnaire Vitalik Buterin, Ethereum est une des premières plateformes à avoir permis la programmation et l’exécution de Smart Contracts. La blockchain Ethereum n’abrite plus simplement des transactions comme c’est le cas pour le bitcoin, mais également des programmes (les Smart Contracts) executés par l’Ethereum Virtual Machine (« EVM »). A ce titre la blockchain Ethereum (à travers son language de programmation et grâce à l’EVM) est dite « turing-complet » puisqu’elle est en mesure d’exécuter les commandes complexes ou non comprises dans ces Smart Contracts.

La véritable révolution que propose Ethereum réside dans l’environnement de développement d’applications décentralisées (DAPPS), qu’il met à la disposition des entrepreneurs. De manière simplistes, les applications reposent traditionnellement sur plusieurs serveurs pour abriter le code source et les bases de données. Ethereum se propose de réunir toutes ces fonctions dans un même et unique endroit, la blockchain. Les Smart Contract peuvent notamment correspondre au code source qui va permettre à une application de fonctionner. Pour l’utilisateur final rien ne change en apparence, seul l’envers du décors et profondément simplifié et sécurisé.

Il est important de rappeler qu’Ethereum est toujours en Beta ce qui explique que des failles de sécurité sont survenues (voir l’attaque de la DAO) et sont encore possible, mais la révolution est en marche qu’on le veuille ou non.

Ethereum est souvent comparé à un ordinateur mondial parce que chaque membre du réseau fait partie intégrante de l’Ethereum Virtual Machine et qu’à l’heure actuelle les Smart Contracts sont exécutés par l’ensmble des membres. Autrement dit, tous les ordinateurs connectés au réseau sont mis à contribution pour exécuter le code d’un Smart Contract ou activer une transaction. Cette façon de procéder à parfois été décrit comme un gachis de capacité de calcul, mais assure en fait la sécurité du système. A noter que cette façon de procéder pourrait évoluer dans les prochaines mises à jour du protocole.

La blockchain Ethereum est à la fois open source et ouverte. “Open Source” signifie que n’importe qui peut en dupliquer le code source (réaliser un « fork » de la blockchain) pour développer son projet sur une blockchain privée. “Publique”  signifie que n’importe qui peut devenir membre de la blockchain principale et y ajouter ses Smart Contracts. Ethereum est à ce jour la plateforme la plus utilisée par les développeurs pour créer des applications reposant sur des Technologies de Registres Décentralisés.

Il est important de noter que dans la version actuelle d’Ethereum (« Homstead ») n’est pas la version finale.

  1. UNE BLOCKCHAIN AVANCEE

Ethereum propose une blockchain qui fonctionne différement de celle du Bitcoin. La blockchain Ethereum contient en effet une liste de transactions (comme Bitcoin) mais également un “état” du registre de ces transactions. D’autre part, Ethereum n’utilise pas le même système d’UTXO que celui utilisé par le protocol Bitcoin.

Ethereum enregistre et met à jour l’“état” du registre qui est nécessaire pour gérer les deux types de comptes qui peuvent interagir avec la blockchain. Ethereum ne détermine pas si une transaction est valide, mais plutot si celui qui l’envoie a suffisament de fonds pour le faire. Les utilisateurs interagissent avec la blockchain Ethereum par l’intermédaire de comptes (a) qui emmettent des transactions (b) pour actionner des contrats (c) localisés sur la blockchain.

a) Compte Exterieur (EOA – Eternally Owned Accounts) et Compte du Contrat (Contract Accounts)

Il est important de bien différencier ces deux types comptes pour comprendre la façon dont fonctionne Ethereum.

Le compte extérieur peut être comparé à un portefeuille bitcoin. C’est en effet ce compte qui permet aux utilisateurs d’interagir avec la blockchain depuis l’extérieur. Dans le cas du bitcoin, les Transactions sont réalisées, validées et envoyées à partir d’un portefeuille exterieur grâce aux clées privées et publiques. Il en va de même avec le Compte Extérieur Ethereum. Ce dernier dispose d’une balance d’Ether et permet d’envoyer des transactions grâce à un jeu de clés privées et publiques en vue d’actionner un Smart Contract qui réside sur la blockchain dans un Compte du Contrat. C’est donc à partir de ce compte que sont envoyées les instructions humaines aux Smart Contracts.

Le Compte du Contract de son côté n’est pas directement accessible par les utilisateurs et n’est donc pas actionné au moyen de clées privées et publiques. A la différence du Compte Extérieur, le Compte du Contrat est associé à un code (le code du Smart Contract) qui est actionné par les transactions envoyées depuis les Comptes Extérieurs. Dès que le Compte du Contrat reçoit une Transaction son code est exécuté par l’Ethereum Virtual Machine (c’est à dire par l’ensemble des membres du réseau) selon les termes contenus dans la Transactions. Le nouvel état du Compte du Contrat est ensuite enregistré sur la blockchain. Il faut voir ce type de compte comme autonome, c’est à dire ayant son espace mémoire dans la blockchain dédié (pour stocker le Smart Contract) et sa balance d’Ether.

  1. Transactions et Messages (ou « Calls »)

Une Transaction est un message électronique contenant un ensemble de données transferées au moyen des clées publiques et privées et qui contient le message nécessaire pour activer le contrat auquelle elle est destinée.

L’envoie d’une Transaction a pour conséquence de modifier l’état du smart contract et donc de la blockchain de manière irréversible. C’est en cela qu’une Transaction se différencie d’un Message. En effet, un message est comme une transaction à l’exception qu’il est transmis d’un contrat à autre et qu’il n’engendre pas nécessairement un changement de l’état de la blockchain.

Une transaction peut être très simple tel qu’envoyer des Ethers d’un compte à un autre, ou beaucoup plus compliqué tel qu’ajouter des nouveaux contrats au réseau ou en actionnant des fonctions de contrats existant. Ces opérations requiert touours une participation financière des utilisateurs sous forme de Gas (voir ci-dessous).

Les messages ont eux la particularité de simplement lire le code existant et de retourner un résultat. Un message ne nécessite donc pas de participation financière de la part des utilisateurs. Pour résumer, vous utilisez une transaction pour écrire sur la blockchain et un message pour lire sur la blockchain.

Une autre différence importante réside dans le fait qu’un message ne nécessite pas de signature cryptographique pour être transféré d’un contrat à un autre. A l’inverse d’une transaction qui est initiée par un compte extérieur (c.a.d par un individu physique) et pour cette raison nécessite une confirmation cryptographique, l’origine d’un message peut être considéré comme étant « interne » en ce qu’il peut être initié automatiquement (c.a.d. à partir du code du smart contract) par un smart contract et de ce point de vue ne nécessite pas de signture supplémentaire.

Les contracts

Par « contrat » il faut comprendre les Smart Contracts auquel nous faisons référence dans cet article.

Un smart contract est un ensemble de code rédigé dans le language « Solidity ».

Ethereum
Ethereum

Le code du smart contrat est ensuite compilé par l’EVM, qui le transforme en EVM bytecode, puis stocké sur une adresse particulière de la blockchain (celle du smart contrat). Compiler le code du smart contract signifie que l’EVM transforme un code lisible par les humains (Solidity) en code lisible par la machine (Bytcode).

On peut également le définir comme un ensemble de règles économiques qui sont enregistrées sur une blockchain et partagées/validées collectivement par les membres d’un même reseau.

Constitution blocks

La composition des blocks est pour le moment similaire a celle de Bitcoin. Mais contrairement au bitcoin qui est dit “Stateless”, l’état de la blockchain Ethereum est enregistré à chaque transaction. En d’autres termes, chaque blocks de la blockchain presente une unitie de temps et la blockchain un histoirique de tous les états des contrats presents sur celle-ci.

D’autre part, il n’y a pas de limite a la taille des blocks (contrairement au bitcoin qui a mis une limite de 1MB par blocks). La taille des blocks est en fait controlée et limitée par le fait que chaque utilisateur paye l’espace de stockage ainsi que les capacité de calcul de l’EVM qu’il utilise. Enfin, comme nous l’avons déjà évoqué dans la section relative aux méchanismes de consensus, Ethereum ajoute un block à la blockchain toutes les 12/14 secondes contre toutes les 10 minutes pour le bitcoin.

 

  1. LA MACHINE VIRTUELLE ETHEREUM:

La Machine Virtuelle Ethereum (« Ethereum Virtual Machine » ou EVM ») est composée de l’ensemble des ordinateurs du réseau. Ethereum est parfois appelé « le premier ordinateur mondial » parce que l’EVM est un ordinateur partagé entre tous ses membres sans pouvoir en identifier le propriétaire.

Comme n’importe quel ordinateur, L’EVM est une « state machine ». C’est-à-dire de manière schematique, qu’un ordinateur vérifie en permanence si une instruction lui a été soumise en faisant fonctionner une « state fonction ». Chaque fois qu’une requette lui est soumise, l’ordinateur détecte ce changement d’état et l’actionne. Une fois l’action complétée et la mémoire mise à jour le cas échéant, l’ordinateur enregistre un nouvel état qui sera celui à prendre en compte pour les prochaines vérifications.

De la même manière l’EVM vérifie constament si de nouvelles transactions ont été envoyées. Si c’est le cas elle lit et actionne le code correspondant. Tous les langages utilisés pour programmer des smart contracts doivent en effet être compilés afin d’etre transformés en bytcode. Les bytcodes sont en fait des listes d’instructions qui sont lues et exécutés par l’EVM.

Ce système permet d’exécuter des codes complexes sur la blockchain. Les opérations ne sont pas pré-définies comme pour bitcoin, chacun est en mesure de créer ses opérations aussi complexes soient elles.

Comme nous l’avons déjà évoqué, tous les noeuds du reseau font fonctionner l’EVM simultanement pour obtenir un consensus sur la blockchain. Autrement dit, chaque fois qu’un contrat est actionné par un message ou une transaction, les calculs sont effectués sur tous les noeuds du réseau en même temps, ce qui rend les erreurs et la censure presque impossible. Evidement avec un tel système, Ethereum fait prévaloir la sécurité et la recherche de consensus sur l’économie de capacité de calcul et de mémoire.

Or ces capacités de calcul ainsi que l’espaces de mémoire ont un coût et il était indispensable d’imaginer des moyens d’en limiter les abus. C’est la raison pour laquelle les concepteurs d’Ethereum ont imaginé un moyen de faire participer financièrement les nœuds du réseau en calculant un prix payable en Ether proportionnel aux moyens requis par le Smart Contract pour être exécuté. Donc plus une application requiert d’importantes capacités de calcul et d’espace de stockage sur la blockchain, plus sont coût sera élevé.

Une conséquence directe de ce prix est que la plupart des Dapps vont limiter l’utilisation de la blockchain et ses systèmes de consensus pour leurs operations essentielles et procéder aux autres operations “off blockchain”.

J’espère que cette introduction vous a permis de mieux comprendre le fonctionnement d’Ethereum. Ces liens vous permettront d’en savoir plus sur le langage de programmation “Solidity” et sur le méchanisme de consensus “Proof of Work” et “Casper”.

Vous pouvez également vous reporter sur les liens suivants:

Follow me on Social media
Share
Passionné depuis 2014 par les technologies liées à la blockchain, j'ai créé ce blog pour partager avec les plus grand nombre les dernières innovations, les start-ups et les Crypto-monnaies qui selon nous constituent une avancée significative pour cette industrie en pleine expansion.