Pour avoir essayé de nombreuses fois, je peux vous assurer qu'il est très difficile d'avoir une conversation traitant de près ou de loin de blockchain sans qu'elle ne parte dans tous les sens (la conversation). Je m'embarque donc dans ce premier article sur le blog d'Ippon avec un petit défi - jeu de mot - qui va consister à cadrer un sujet bien vaste dans un aspect bien précis.
Pour cet article donc, l'objectif sera simplement d'implémenter un token , dans un smart contract , que nous déploierons sur un testnet d'Ethereum pour permettre des échanges via ce token . Mais avant cela, cette première partie aura pour mais de comprendre ce que veut dire cet amoncellement de buzzwords. Installez vous confortablement, car 4 ans après un super article généraliste expliquant le fonctionnement d'une blockchain , on réembarque dans ce sujet qui fait couler beaucoup d'encre (numérique).
1. Définitions utiles
Avant toute chose, commençons par définir les quelques mots concernés plus haut à commencer par les jetons . Le terme est déjà défini dans l'article mentionné ci-dessus. Aussi, je me permettrai de rester succinct sur cette première explication, bien qu'il soit toujours bon de rappeler qu'un token est un actif numérique échangeable sur la blockchain qui l'émet.
Nombre de ces tokens sont émis sur la blockchain d’Ethereum. Bien sûr, il en existe beaucoup d'autres comme l’historique blockchain de Bitcoin ou la plus récente de Solana. D’ailleurs, en guise d’exemple et pour éviter toute confusion, vous trouverez souvent le terme de coin pour désigner le token natif d’une blockchain, celui qui lui permet de fonctionner. Pas d’inquiétude, la différence s’arrête là entre les deux appellations. Pour illustrer ceci simplement, le token MATIC est issu de la blockchain d’Ethereum mais ne permet pas à cette dernière de fonctionner contrairement au coin Ether (ou ETH). Je reviendrai sur différents tokens de la blockchain d’Ethereum plus tard dans cet article.
Ces tokens servent principalement à rémunérer les mineurs lors de la validation des transactions liées aux smart contracts. A nouveau, l’article mentionné en introduction de ce post définit le rôle des mineurs donc je ne reviendrai pas dessus. Un smart contract, ceci dit, n’est rien de bien compliqué en théorie puisqu’il s’agit grossièrement d’un if un peu personnalisé. J’exagère mais en pratique il est question de code informatique qui implémente une transaction en fonction de conditions prédéfinies dans une blockchain, garantissant une plus grande sécurité de l’exécution du contrat. Vous trouverez d'innombrables exemples pertinents de smart contracts sur le web; en voici quelques uns pour commencer :
- https://medium.com/@spireProtocol/blockchain-smart-contracts-will-revolutionize-voting-in-elections-acb5abc7beb6
- https://fr.investing.com/news/cryptocurrency-news/twitter-ajoute-loption-ethereum-a-la-fonction-de-pourboire-2071459
- https://newconomy.media/news/may-08-banks-can-save-15-20bn-a-year-with-blockchain-new-study-shows/
Soyez patient, nous verrons dans une future partie de cet article comment implémenter un smart contract. Ceci étant, bien que la partie implémentation n’ait pas encore été développée, il n’en demeure pas moins important d’évoquer le test du bon fonctionnement de ces smart contracts ; ne serait-ce que parce que le principe même de la blockchain est, on le rappelle, que toute transaction validée par un consensus est irréversible. C’est là que le testnet entre en jeu. En opposition au mainnet, le testnet est une blockchain miroir isolée du mainnet. En un mot et par analogie aux environnements familiers au développeurs, le mainnet est à la production ce que le testnet est au développement. Ce dernier est donc indépendant du consensus et ses tokens n’ont in fine aucune valeur mais permettent aux développeurs de s’assurer qu’ils n’ont pas fait n’importe quoi en développant leurs smart contracts.
Vous voilà donc au fait d'une partie du jargon de base du monde si vaste de la blockchain et fin prêt à plonger dans les différentes offres faites aux développeurs pour développer son propre token en 2022... à un détail près !
2. Bien choisir son token
Nous évoquions au début de cet article les différents tokens de la blockchain d’Ethereum. Il me paraît nécessaire de brièvement expliciter ce point avant d’aller plus loin. Une fois n’est pas coutume, il n’y a rien de très compliqué. Pour éviter tout malentendu cependant, veuillez noter que tous les tokens ne sont pas émis depuis la blockchain d’Ethereum bien qu’avec un peu de recul, il soit logique qu’une majorité le soit.
En effet, là où le Bitcoin de Satoshi Nakamoto se définit lui-même comme un système de monnaie numérique avec une gouvernance décentralisée (une volonté de remplacer les devises telles qu’on les connaît finalement), le fondateur d’Ethereum, Vitalik Buterin, expliquait dès la création du projet que l’objectif était de fournir une blockchain avec un langage de programmation dédié à l’implémentation de smart contracts, le tout en open source.
Ethereum est ce qu’on appelle communément aujourd’hui une blockchain "infrastructure” en opposition justement avec les projets utilisant ce type de blockchain pour fonctionner - e.g. Polygon cité précédemment utilise une blockchain infrastructure en émettant son jeton MATIC sur la blockchain d'Ethereum. Pour permettre à de nouveaux projets d’utiliser sa blockchain, Ethereum a implémenté différents tokens. Le site ethereum.org en donne 4 standards :
- ERC-20. C’est le standard le plus connu et encore aujourd’hui le plus utilisé pour implémenter de nouveaux tokens dits “fongibles” basés sur la blockchain d’Ethereum. Je resterai bref sur la définition de la fongibilité, vous pourrez la trouver partout sur le web (2.0, évidemment). ERC-20 est, en quelque sorte, le token fondamental de la blockchain d’Ethereum sur lequel sont basées les 3 autres implémentations mentionnées ci-dessous et bien d'autres.
- ERC-721. Celui-ci est un standard dédié à l’implémentation de tokens dits “non fongibles”. Mais si, vous savez, les fameux NFT dont tout le monde parlait en 2021.
- ERC-777. L’objectif de ce standard est d’améliorer l’ERC-20. Pourquoi l’améliorer ? Pour apporter les notions d’operator et de hooks tout en gardant une rétrocompatibilité avec son frère aîné. Dans une certaine mesure, vous pouvez le voir comme le Kotlin de Java : une amélioration prometteuse rétrocompatible mais pas encore suffisamment utilisée pour être la première de la classe.
- ERC-1155. Ce standard permet de gérer la multi-tokenisation - i.e. un smart contract déployé seul peut gérer une combinaison de plusieurs sortes de tokens (fongibles, semi fongibles ou non fongibles) à la fois. Là encore, je ne reviendrai pas outre mesure sur le concept de multi-token mais vous pourrez trouver plus d’informations sur le site ethereum.org. C'est un sujet très intéressant mais qui ne va pas dans la direction de cet article.
Heatmap des tokens existants en fonction de la blockchain dont ils sont émis. Source : coin360.com
Soit dit en passant, cela n’aura pas échappé aux plus attentifs que j’évoque 4 types de tokens en les désignant par le terme d’ERC. Ce dernier signifie Ethereum Request for Comments et rappellera aux plus barbus les RFC qui ne sont autres que la documentation de notre cher Internet. Par ailleurs, vous trouverez parfois le terme d’EIP pour Ethereum Improvement Proposals qui sont des propositions d’amélioration visant à devenir des ERC. La liste complète des ERC est bien sûr disponible puisque Ethereum a une vocation open source, faut-il le rappeler.
3. Première conclusion
Aujourd'hui, il suffit de jeter un œil à la partie de projets basés sur Ethereum (voir la heatmap ci-dessus) pour se rendre compte de son utilité dans le monde de la blockchain. Il est de fait d'autant plus important de comprendre comment se passe l'implémentation liée à cette technologie. Et comme vous êtes désormais au fait de l'écosystème dans lequel on se trouve, il est temps de conclure de cette première partie en prévision de la seconde dans laquelle nous implémenterons un token ERC-20, pour de vrai cette fois.