Mode d'emploi

Les spécifications techniques d'Ethereum

Créé le

07.11.2017

-

Mis à jour le

28.11.2017

Dans Ethereum, on trouve deux types de concept : des comptes et des fonctions de transition. Chaque compte comprend le nonce, son solde en Ether, le code du contrat, le stockage du compte. On distingue deux types de comptes :

  • les comptes de propriété externes (contrôlés par des clés privées et identifiées par une adresse dérivée de la clé publique correspondante obtenue à l’aide de la fonction cryptographique SHA3) ;
  • et les comptes liés à un contrat (identifiés par une adresse dérivée de manière déterministe à partir d'une adresse de compte externe connue et contrôlés par leur code) : ces comptes contiennent l'adresse du contrat, le solde du contrat, le code et l'état de l'exécution du programme. Un compte externe ne contient pas de code, mais on peut envoyer des messages d'un compte externe en créant et en signant une transaction. Chaque fois que le compte de contrat reçoit un message, son code s'active, lui permettant de lire et d'écrire dans le système interne et d'envoyer d'autres messages ou de créer des contrats à son tour.
L'environnement d'exécution pour les contrats Ethereum est la Machine virtuelle Ethereum (EVM) où tout est écrit dans un langage de bytecode à bas niveau (le Turing complet). Le logiciel EVM se trouve sur les nœuds de réseau qui exécutent le bytecode du contrat. Chaque bloc Ethereum est stocké sur une racine appelée « Patricia tree » et contient l'état de chaque compte, l'historique complet de l'exécution des programmes distribués, le numéro du bloc et le processus de la validation.

Ethereum met en œuvre des frais de minage pour les mêmes raisons que Bitcoin. En effet, l’EVM permet d'exécuter des contrats avec des boucles potentiellement infinies ou des opérations coûteuses en termes de calcul. Pour compenser les mineurs pour ces calculs qui prennent beaucoup de temps, les contrats consomment un gaz. Le gaz est une unité interne utilisée dans l'EVM (Le prix du gaz est un prix acheté en Ether (ETH)). À chaque instruction, EVM est affecté le coût en gaz. Lorsqu'un compte appelle un compte, l'appel est accompagné de l'équilibre du compte et des données transférées. Le solde transféré est déposé sur le compte appelé. Lorsque le compte appelé est un compte externe, il se produit un simple transfert de solde. Lorsque le compte appelé est un contrat, après le transfert du solde, le code du contrat appelé est exécuté s’il y a assez de gaz pour exécuter toutes les instructions (chaque instruction consommant du gaz).

Les langages des contrats peuvent être Solidity (qui est similaire à Javascript), Viper ou Serpent (qui est similaire à Python), ou Lem. Ils sont compilés dans le bytecode EVM [1] .

 

1 Récemment un cadre permettant de développer des applications indépendantes et avec des références lisibles a été proposé : il s’agit de l’environnement KEVM  qui formalise plusieurs langages : C, Java et JavaScrip.

À retrouver dans la revue
Revue Banque Nº814
Notes :
1 Récemment un cadre permettant de développer des applications indépendantes et avec des références lisibles a été proposé : il s’agit de l’environnement KEVM  qui formalise plusieurs langages : C, Java et JavaScrip.