Nous avons déjà exploré de façon générale les tokens ou jetons dans cet article dédié aux actifs numériques. Penchons-nous maintenant sur une forme particulière de ces tokens : les ERC20. Ceux-ci pullulent sur Ethereum aujourd’hui, du fait de la simplicité de leur déploiement mais aussi, voire surtout, de la multiplication des ICOs, ces opérations de vente de tokens (bien décrites sur ICO Mentor ou BitConseil). A tel point qu’il existe aujourd’hui plus de 18 000 tokens ERC20 déployés ! Etat des lieux et aperçu du futur de ce qu’est aujourd’hui l’application d’Ethereum la plus utilisée.
Comportement d’un contrat de token sur Ethereum
Un contrat de token déployé sur Ethereum est un smart-contract comme un autre, contenant simplement un registre désignant les propriétaires de tokens du contrat et gérant l’ensemble des transferts de ces tokens en mettant à jour ledit registre.
Par exemple, si X envoie une transaction de transfert de 100 tokens à Y, le contrat modifie son registre pour réduire le nombre total de tokens de X de 100 et augmenter au même moment celui de Y.
ERC20, document de travail devenu standard
Les tokens dits « ERC20 » sont issus du processus de proposition / amélioration mis en oeuvre par la Fondation Ethereum sur son compte Github. ERC signifie littéralement Ethereum Request for Comments : un processus par lequel une personne demande à la communauté de revoir et de commenter une proposition pour Ethereum. En l’occurence, la 20ème proposition postée sur le Github le 19 novembre 2015 concernait une proposition de standards pour le développement de tokens sur Ethereum – elle s’appela donc ERC20. L’idée de token programmable était une des plus simples à implémenter sur la blockchain. Initiée par frozeman (Fabian Vogelsteller), la proposition a immédiatement donné lieu à d’intenses discussions.
Il est donc important de souligner qu’ERC20 est un standard : il définit des fonctions et des événements qu’un token doit gérer pour être qualifié d’ERC20. Il ne s’agit pas d’un code précis ou d’un produit. Chacun peut créer son propre code de token ERC20 tant que celui-ci respecte les fonctions standard et leur comportement. En l’occurence, il existe de nombreux contrats de tokens ERC20 : le code fourni sur ethereum.org, le code modulaire d’OpenZepplin, le code de ce wiki, etc.
N’importe quel code mettant en application les spécifications ERC20 crée un token ERC20.
Intérêt, limites et évolutions futures du standard ERC20
Cette standardisation a permis le développement rapide d’un très large écosystème de tokens sur Ethereum. Avant sa création, chaque service, chaque projet devait réinventer la roue (le token), ce qui a d’ailleurs provoqué des erreurs et des incompatibilités. Avec un standard simple et ouvert, les tokens peuvent être déployés facilement. C’est aussi le cas des les services utilisant ces tokens.
De fait, l’essentiel des services développés sur Ethereum aujourd’hui gèrent ce standard et uniquement ce standard. Il est facile de créer un service gérant les tokens ERC20 car vous connaissez à l’avance les fonctions basique que ce token va accepter. Par exemple, MyEtherWallet et Etherscan sont capables d’afficher le solde de vos tokens ERC20 sur son interface, et EtherDelta gère nativement les échanges décentralisés entre tous les tokens ERC20 existants.
Cette standardisation a naturellement eu l’effet pervers de toutes les spécifications, en figeant d’une certaine façon les tokens dans leur forme actuelle pendant un certain temps. Lorsque le standard devient la norme, l’expérimentation ne peut se faire que dans le cadre restreint de ce standard. Il est heureux que les créateurs du standard avaient dès le départ en tête ces limitations et ont veillé à en faire un standard « minimum » avec des spécifications portant uniquement sur les fonctions essentielles d’un token.
Ce standard a cependant été critiqué pour de nombreuses raisons. D’abord, il n’est valable que pour un token fongible (tous les tokens d’un contrat ERC20 ont les mêmes caractéristiques, ils ne sont pas uniques et on peut échanger deux tokens du même contrat ERC20 sans effet) et il ne prévoit aucune fonction pour éviter les erreurs d’envoi, aucun standard de mise à jour de son code ou de bonnes pratiques quant à son émission, etc.
En réaction à ce caractère limité du standard, de nombreuses initiatives ont vu le jour, et notamment :
- La proposition ERC223, qui vise à intégrer des mécanismes de contrôle dans le contrat de token directement visant à éviter les transferts de tokens vers une adresse ne pouvant elle-même gérer les tokens (soit parce qu’il s’agit d’une adresse de contrat, soit parce qu’il s’agit de l’adresse du token ERC20 elle-même).
- La proposition Minime Token, un token ERC20 avec des fonctions supplémentaires. Par exemple, il est facile de cloner le token et toutes ses balances, notamment pour mettre à jour ses fonctionnalités. Il est aussi possible de définir une personne qui contrôle les tokens (Token Controller) qui peut les déplacer, en créer de nouveaux, en détruire… Ou encore, l’historique des soldes de tokens par compte est enregistré et facilement consultable.
D’autres propositions sont visibles sur le github officiel de la Fondation.
Spécifications ERC20
Les fonctions et les événement qu’un token « ERC20 » doit pouvoir gérer sont les suivants :
name
est la fonction qui doit renvoyer le nom du token (par exemple OmiseGo ou VariabL Contribution Token)symbol
doit renvoyer le symbole du token (par exemple « OMG » est le symbole du token OmiseGo, « VCT » est le symbole de VariabL Contribution Token)decimals
renvoie le nombre de décimales qu’il faut prendre en compte pour le token. En effet, les balances de tokens sont gérés sans décimales par les contrats ERC20 – pour une personne possédant 1 token à 18 décimales, la fonctionbalanceOf
définie ci-dessous renverra 1000000000000000000.totalSupply
doit renvoyer le nombre total de tokens existantbalanceOf
doit permettre de consulter le nombre de tokens détenu par un compteallowance
renvoie le nombre de tokens qu’une adresse est autorisée à retirer du contrat de tokentransfer
est la fonction permettant à un compte possédant des tokens d’en envoyer à un autre comptetransferFrom
permet de transférer des tokens d’une adresse à une autre, sans que l’adresse qui envoie la transaction soit celle qui détient les tokensapprove
est une fonction permettant au détenteur d’un contrat de token d’approuver un retrait pour un montant déterminé par un compte précis (change l' »allowance » de ce compte)
Ces fonctions doivent également déclencher deux événements :
Transfer
se déclenche pour chaque appel à la fonctiontransfer
outransferFrom
Approval
se déclenche à chaque appel à la fonctionapprove
Le détail de ces fonctions et des événements associés est consultable sur la page de l’Ethereum Improvement Proposal correspondant au standard ERC20.
Pour aller plus loin, quelques articles (en anglais) sur les tokens ERC20 :
Bonjour Simon,
Super article (comme d’habitude).
Peux-tu faire un article expliquant la release de casper alpha en testnet ?
Merci
[…] > Article de Simon Polrot à lire sur ethereum-france.com […]
[…] > Article de Simon Polrot à lire sur ethereum-france.com […]
Bonjour Simon et merci pour cet article très intéressant sur les tokens ERC20.
Je souhaiterai que vous commettez un article pour aider les investisseurs des ICOs à detecter si possible les SCAM que des personnes malveillantes développent sur la base des tokens ECR20 Ethereum pour spolier les crypto investisseurs qui sont des profanes de la chose.
Je souhaiterai garder contact avec vous pour débattre des sujets sur les ICOs basés sur le ECR20.
Cordialement
Bonjour Gabriel, Ta proposition m’intéresse fortement. Je me pose la question sur cet ICO qui prétend bien des choses et qui va sortir sur un standard ERC20: https://www.lipcoin.io
Voici mon email si tu as des infos!
Cordialement
Eric
Bonjour Simon,
Merci de nous indiquer )les garanties qu’un investisseur doit exiger des promoteurs des ICOs avant d’investir dans leurs projets qui sont pour la plupart basés sur les tokens ERC20.
Ceci afin d’éviter les arnaqueurs très nombreux des les ICOs.
C’est à vous de vous sécuriser, pas aux autres. Comme tout investisseur dans n’importe quel domaine, renseignez-vous et prenez votre décision. Si vous n’êtes pas capable de vous prendre par la main, allez faire du jardinage.
pour le jardinage, il faut savoir prendre aussi de bonnes décisions au bon moment sinon pas ou peu de récolte.
Bonjour,
J’ai une question?
Quel est la difference entre un token et un ERC20?
Les 2 semblent très similaire.
ERC20 est une sorte de token.
C’est ce que j’essaye d’expliquer (visiblement sans succès) dans cet article !
[…] Si vous voulez en savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication sur ce standard : lire l’article ici […]
[…] Si vous voulez en savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication sur ce standard : lire l’article ici […]
[…] Si vous voulez en savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication sur ce standard : lire l’article ici […]
[…] cybermonnaie émise par un Etat, a été publié mardi : Il s’agira donc d’un token ERC20 sur Ethereum. 38,4% des petros émis seront écoulés dans le cadre d’une pré-vente qui débute […]
[…] un Etat, a été publié mardi : Il s’agira donc d’un token ERC20 sur Ethereum. 38,4% des petros émis seront écoulés dans le cadre […]
[…] Si vous voulez en savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication sur ce standard : lire l’article ici […]
[…] Si vous voulez en savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication sur ce standard : lire l’article ici […]
[…] Si vous voulez en savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication sur ce standard : lire l’article ici […]
[…] Si vous voulez en savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication sur ce standard : lire l’article ici […]
[…] Si vous voulez en savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication sur ce standard : lire l’article ici […]
[…] Si vous voulez en savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication sur ce standard : lire l’article ici […]
[…] Si vous voulez en savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication sur ce standard : lire l’article ici […]
[…] Si vous voulez en savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication sur ce standard : lire l’article ici […]
[…] Si vous voulez en savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication sur ce standard : lire l’article ici […]
[…] Si vous voulez en savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication sur ce standard : lire l’article ici […]
[…] Si vous voulez en savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication sur ce standard : lire l’article ici […]
[…] Si vous voulez en savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication sur ce standard : lire l’article ici […]
[…] En savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication […]
[…] En savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication […]
[…] En savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication […]
[…] En savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication […]
[…] En savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication […]
[…] En savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication […]
[…] En savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication […]
[…] Pour en savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication […]
[…] Pour en savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication […]
[…] Pour en savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication […]
[…] Pour en savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication […]
Merci en tout cas pour ma part j’ai mieux ce qu’était un token ERC.20
[…] En savoir plus sur les tokens ERC20, la principale norme de token utilisé pour les airdrops, Ethereum-france a fait un article d’explication […]
Sur quelle plateforme,on peut échanger des tokens ERC20?
Coool, j’aime bien ce développement.. sur quels portefeuilles peut-on retrouver Erc20 en-dehors de MetaMask
Sur quelle plateforme,on peut échanger des tokens ERC20?
[…] système de tokénisation sera basé sur la norme ERC20 d’Ethereum (plus d’infos ici). Les jetons seront compatibles avec tous les portefeuilles […]