Les crypto-currencies : L'Ethereum
Dossiers
2024-02-18
Cet article a pour but d'expliquer dans un langage technique mais assez simple, ce qu'est l'Ethereum, une cryptomonnaie, et son écosystème.
La Blockchain
Ethereum est une blockchain. Il existe plusieurs blockchain connues, notamment le Bitcoin qui est une devise et sert exclusivement à faire des échanges de monnaie, le Bitcoin étant l'unité monétaire de cryptomonnaie de cette blockchain. L'Ethereum est, à la base, une blockchain, mais à la différence du Bitcoin, la blockchain Ethereum ne sert pas uniquement à faire de basiques transferts de fonds. Avant de rentrer plus en détails dans les particularités de l'Ethereum face au Bitcoin, revenons à ce qu'est une blockchain.
Il s'agit, comme son nom l'indique, d'une chaîne de blocs. Cette chaîne contient des blocs ; chaque bloc a un numéro qui s'incrémente alors à chaque nouveau bloc ; chaque bloc est constitué de transactions qui reprennent le résultat d'une opération, le plus souvent permettant un échange de monnaie (voir plus bas). Les blocs sont créés toutes les 12 secondes pour l'Ethereum (10 minutes pour le Bitcoin), et reprennent l'ensemble des transactions effectués depuis le dernier bloc.
La blockchain est infalsifiable car elle ne se trouve pas uniquement à un seul endroit. Comme internet, il existe des nodes (des nœuds) qui stockent tous, la totalité de la chaîne. Il est donc impossible pour un node de modifier cette chaîne car l'ensemble de la chaîne est signée numériquement : chaque nouveau bloc reprend le bloc précédent avec sa signature et est alors signé numériquement aussi. L'ensemble de la chaîne est alors sécurisée. Toutes les informations s'y trouvant sont en clair, elles ne sont pas cryptées, mais elles sont signées, afin qu'aucune information ne soit modifiée. Ainsi, toute information mise dans la chaîne à un moment donné y sera alors de manière permanente et ne peut être retirée. Il est donc possible de voir l'ensemble des informations qui s'y trouvent afin, plusieurs mois ou années plus tard, de vérifier ce qui s'est passé à un moment donné, et ce, de manière sûre, sans possibilité de modification.
L'Ethereum
L'une des principales fonctions des blockchains est l'échange de monnaie. Dans le cas de l'Ethereum, il y a donc une monnaie du même nom qui est mise en place et que l'on peut acheter ou échanger, ou encore recevoir ou envoyer, et toutes les transactions qui sont liées à cette monnaie se trouvent en totalité et exclusivement stockées dans la blockchain Ethereum. La valeur de l'Ethereum par rapport à l'Euro ou au Dollar n'est pas fixée et peut fluctuer suivant la demande, comme pour le Bitcoin. L'Ethereum en lui-même ne peut pas être utilisé autrement que pour acheter des services situés sur la blockchain Ethereum.Parfois, certains sites peuvent accepter les Ethereum comme moyen de paiement, et il est alors possible d'envoyer des Ethereum vers un compte sur la blockchain Ethereum pour payer ce service, et certaines banques peuvent proposer de mettre en place des cartes de débit ou cartes pré-payées en Ethereum (ou en Bitcoin), toutefois ce ne sont que des moyens de changer l'Ethereum en euros ou en dollar, car les cartes bancaires en question ne sont pas libellées en Ethereum mais dans une monnaie officielle. La valeur de ces monnaies étant très volatile, le prix est souvent indiqué en dollar ou en euro et est ensuite converti en Ethereum ou Bitcoin au moment du paiement pour se rapprocher au maximum du prix dans la devise indiquée.
Créer un compte sur Ethereum
Pour posséder des Ethereum, il faut un compte en Ethereum. Tout ce qui se passe au niveau des Ethereum se passe dans la blockchain Ethereum, donc pour créer un compte, il suffit de trouver une combinaison de clé sécurisée n'ayant jamais été utilisée auparavant, afin de pouvoir obtenir son propre compte. Pas de frais d'ouverture et pas de frais de création de compte puisque cela n'engendre aucune opération à proprement parler, la création du compte n'est que la création d'une paire de clé privé/clé publique suivant l’algorithme autorisé sur la blockchain Ethereum.
La clé publique est celle que l'on peut donner à une personne pour qu'elle fasse un envoi d'argent sur notre compte. Il est aussi possible, pour tout le monde, de connaître le solde du compte en ayant simplement accès à la clé publique. Cette clé ne permet pas de transférer des Ethereum vers un autre compte, mais simplement de voir l'état du compte actuel et d'envoyer des Ethereum vers ce compte.
Il existe aussi une manière de créer des dérivés des clés publiques permettant de fournir ces dérivés à usage unique, afin de ne pas donner sa clé publique, tout en pouvant recevoir des Ethereum sur son compte de manière plus discrète. Dans ce cas, il existe un algorithme ou des sites permettant de calculer ces dérivés afin de les fournir en fichier texte ou sous forme de QR code pour donner aux personnes devant envoyer des Ethereum vers votre compte.
La clé privée est plus longue que la clé publique. Cette clé privée est très importante car elle donne le contrôle du compte. Avec elle, il est possible d'envoyer des Ethereum vers un autre compte ou de les utiliser directement dans la blockchain, et donc si une personne détient votre clé privée, elle détient potentiellement les clés de votre compte. A l'inverse, si cette clé publique est perdue, il ne sera pas possible de la récupérer et donc de récupérer les fonds se trouvant sur le compte. Ces Ethereum seront alors perdus sans aucune possibilité de les récupérer. D'après certains articles, il semble que 10% à 15% des monnaies virtuelles soient perdues ou volées chaque année.
MyEtherWallet est un bon outil pour créer un compte. Il est très important de conserver, de manière sûre, ces informations, afin de ne pas se les faire voler ou de ne pas les perdre, ce qui aurait alors pour conséquence la perte totale du contenu de votre compte (son solde notamment).
Le Smart Contract
Le principe de l'Ethereum est de créer une Turing Machine afin de permettre d'exécuter du code permettant de fournir des résultats sous conditions. Ces fonctions sont appelées Smart Contracts, car ce sont des contrats intelligents permettant principalement la mise en place de 3 types de services :
- l'échange d'Ethereum entre les comptes (comme dans la blockchain Bitcoin)
- l'échange d'Ethereum entre les comptes, à la suite d'une condition
- tout autre fonction permise par le langage du Smart Contract
Le principe d'une Turing Machine est décrite dans Wikipédia. En résumé, il s'agit d'un objet mathématique qui permet de sélectionner un nouvel état à partir d'un état précédent, sous la forme d'une condition. Par exemple, l'état passé est F, la nouvelle variable est 6, alors le nouvel état sera 8. Chaque nouvel appel à cette machine (qui correspond donc à un Smart Contract) permettra de changer l'état de celui-ci. Pour la gestion des comptes, le solde précédent est l'état passé, l'opération actuelle est la nouvelle variable, le nouvel état correspond alors au nouveau solde.
Le Smart Contract est ce qui différencie l'Ethereum du Bitcoin. La troisième possibilité est alors très vaste puisqu'il est possible de stocker ou d'échanger une multitude de choses dans cette blockchain. Par exemple, un certain nombre de sociétés mettent en place des ICO (Initial Coin Offering). Avec la sécurité de l'Ethereum, elles peuvent alors vendre des tokens (des jetons) qui servent ensuite comme une monnaie à payer les services qui sont fournis par cette même société. Le token ainsi créé fonctionne alors comme une monnaie virtuelle, comme le Bitcoin ou l'Ethereum. Avec ce système, chaque société peut avoir ses propres tokens qui permettent alors un genre de levée de fond et servent ensuite à payer les services utilisés et peuvent être achetés ou vendus contre de véritables monnaies.Une autre utilisation très connue de la blockchain Ethereum est la gestion des NFT (Non-Fungible Token ou Jeton non fongible). Un NFT est un identifiant permettant d'authentifier une oeuvre d'art ou un objet virtuel quelconque. Ce jeton est stocké dans la blockchain Ethereum et fonctionne avec un Smart contract adapté au NFT, permettant d'échanger les NFT d'un utilisateur à l'autre comme on pourrait échanger la monnaie Ethereum. Le résultat du smart contract étant l'identifiant du nouveau propriétaire et l'identifiant du NFT une fois la transaction enregistrée.
Il est aussi possible d'utiliser la blockchain Ethereum pour stocker des informations, comme des images, des avatars, ou bien pour gérer des services décentralisés comme des noms de domaine et des serveurs DNS d'une autre manière qu'actuellement. La différence est alors qu'aucune autorité ne peut bloquer ces informations ou les supprimer car elles sont distribuées partout et sont indispensables au maintient de la chaîne.
Mining
Une des notions les plus mal documentées sur internet est d'expliquer en quoi consiste le minage. Pour qu'une cryptomonnaie, et que la blockchain fonctionne, il faut effectuer régulièrement plusieurs tâches importantes. Dans le cas de l'Ethereum, il faut calculer les Smart Contracts, puis une fois cela effectué, il faut créer et signer le bloc. Dans le cas de l'Ethereum, un bloc est créé toutes les 12 secondes (10 minutes pour le Bitcoin).
Jusqu'à la mise à jour de Paris le 15 septembre 2022, les calculs se faisaient suivant un système de preuve de travail, appelé proof-of-work. Chaque mineur va exécuter les Smart Contracts. Suivant le temps d'exécution nécessaire pour chaque contrat, le mineur va gagner un peu d'argent sous la forme de gas. Cela est un peu compliqué mais en fait la personne qui demande l'exécution d'un Smart Contract va indiquer combien de gas il fournit au maximum pour cette opération, et le prix du gas qu'il veut bien payer, en Ethereum (le taux de change gas/Ethereum). Si le taux convient au mineur, il va exécuter l'opération en utilisant le gas indiqué (correspondant à un certain nombre d'opérations, de temps de processeur). Plus le nombre d'opérations ou leur complexité est élevé, plus il faut de gas. Si l'opération n'est pas terminé et qu'il n'y a plus de gas, le gas est perdu et l'opération se termine sur un échec. L'échec est indiqué dans le bloc.
Une fois que le mineur a exécuté l'ensemble des Smart Contracts en cours, il va alors commencer à valider le bloc. Cette opération pourrait être très rapide, mais est volontairement longue, puisqu'elle prend pour l'Ethereum presque 15 secondes. Le bloc complet avec tous les paramètres est envoyé dans une fonction de hachage. Ce type de fonction va calculer une emprunte, sur 256 bits, du bloc. Toutefois, pour compliquer la chose, un paramètre est ajouté : la difficulté. Ce paramètre est un nombre calculé et modifié à chaque création de bloc, modulé en fonction du temps que les blocs précédents ont pris pour être validés, afin de faire en sorte que les blocs prennent en moyenne toujours 15 secondes. Cette fonction, pour l'Ethereum, s'appelle le Ethash. En modifiant un seul paramètre contenu dans le bloc, nommé "nonce", la fonction de hashage doit donner un résultat qui doit toujours être inférieur à la difficulté.
Pour caricaturer, si la difficulté est de 100 000, le Ethash doit avoir une valeur inférieure à 100 000. Il faut donc chercher de manière aléatoire la valeur de nonce pour que le résultat du Ethash soit celle recherchée. On n'est bien évidemment pas dans des valeurs de difficulté ou de Ethash de 100 000, mais plutôt de l'ordre de nombres sur 32 chiffres en Hexadécimal. L'algorithme est détaillé ici en anglais.
Plusieurs milliers d'ordinateurs recherchent alors un Ethash valide pour le bloc, et c'est le premier qui le trouve qui gagne et son bloc est alors validé dans la blockchain. Il remporte en même temps l'ensemble du gas pour l'ensemble des transactions effectuées, ainsi qu'un bonus de 3 Ethereum (5 Ethereum jusqu'en octobre 2017). C'est souvent pour cela que "mining" est associé à la recherche de nouvelles pièces d'Ethereum ou de Bitcoin, toutefois la pièce n'est pas trouvée, c'est simplement la récompense qui est donnée à celui qui signe le dernier bloc, et actuellement, c'est la difficulté qui rend la signature aléatoire.
Depuis le 15 septembre 2022, à compter du bloc 15537393, Ethereum fonctionne suivant un système de preuve d'enjeu, ou proof-of-stake. Pour fonctionner comme un nœud qui va valider les transactions, il faut déposer 32 ETH sur un compte bloqué qui sert à éviter les mauvais comportements. Cette somme pourra être détruite sur le node effectue des opérations malhonnêtes (cf détails sur les blocks).
Le principe de validation du bloc reste le même que précédemment, mais le nœud qui effectue la validation est sélectionné pseudo-aléatoirement sans avoir besoin d'effectuer un travail préalable. Il doit ensuite calculer les smarts contracts et enregistrer les transactions, puis les signer numériquement. Tout est expliqué en détail sur le site Ethereum en français.
La difficulté du bloc n'est plus un enjeu car l'algorithme est différent. Pour ce qui est du gain lors de la création d'un block, celui-ci est moindre. Il dépend toutefois de beaucoup de paramètres, y compris du gas, ainsi que du nombre de nœuds qui valident les blocs.
Ce nouveau système a permis de bien réduire la quantité d'énergie utilisée pour la signature des blocs, puisqu'avant, beaucoup de nœuds calculaient les blocs avec une course à qui le signera en premier, et maintenant, c'est un sélectionneur pseudo-aléatoire qui désigne le validateur, ce qui fait que seul ce validateur peut effectuer la validation du bloc. Aucun travail n'est fait en double.
Applications
Une des principales fonctions de l'Ethereum est de permettre la création d'applications décentralisées, voire de sociétés décentralisées. Ce type d'application utilise, comme indiqué plus haut, les Smart Contracts, pour créer différents objets qu'il est ensuite possible de manipuler soit directement, pour créer des applications, soit indirectement pour créer des applications qui vont les manipuler ou manipuler des tokens qui vont permettre de gérer ces applications ou sociétés.
On peut trouver différents types d'applications ou de projets liés à l'Ethereum, notamment la gestion de sociétés décentralisées, de NFT, mais aussi l'enregistrement de transactions ou la signature de transactions, en fait, tout ce qui nécessite d'enregistrer quelque chose de manière publique (ou parfois privée en les cryptant ou en utilisant une signature numérique) et de conserver un registre qui permet de prouver l'existence de cette transaction à long terme.
Conclusion
La blockchain est de plus en plus populaire. On entend de plus en plus parler de blockchain, du Bitcoin ou de l'Ethereum. Savoir et comprendre ce qui se cache derrière pour se faire une idée de ce à quoi cela peut servir, voire s'il faut ou non en acheter, reste assez complexe car chaque Blockchain est différente, de par sa conception et son utilisation, c'est donc un travail de longue haleine.
Je pense qu'il est utile de comprendre que l'avenir se jouera avec ce type d'application, mais la volatilité de ces monnaies virtuelles (cryptocurrencies) reste très forte, c'est pourquoi il faut y investir avec précaution et plutôt penser que c'est un investissement à perte, pour tester, qu'un investissement qui va réellement rapporter. En un seul weekend, juste avant l'écriture de cet article en novembre 2017, le Bitcoin a perdu 20% de sa valeur, pour la regagner dans les jours qui ont suivis. Personne ne sait s'il ne les perdra pas encore une fois. Si une faille de sécurité est découverte dans une blockchain, cela pourrait aussi la détruire complètement car la blockchain, encore plus que les monnaies souveraines, fonctionne sur la confiance. Si celle-ci est perdue, difficile de la restaurer. Les législations ne prennent pas en compte les monnaies virtuelles pour le moment, mais si un jour, c'est le cas, alors cela aura aussi potentiellement un impact sur le cours de celles qui seront reconnues.
Mon conseil : achetez quelques dizaines d'euros d'Ethereum et testez la puissance de l'écosystème. Même s'ils ne servent pas aujourd'hui, ces Ethereum serviront peut-être demain !
Rédigé le 15/11/2017, mis à jour le 18/02/2024 (proof-of-stake notamment).