

Ethereum, fondé par Vitalik Buterin en 2014, s’est imposé comme une plateforme open source destinée au lancement d’applications décentralisées (DApps). Plusieurs des motivations de Buterin pour concevoir une nouvelle blockchain découlaient du manque de flexibilité du protocole Bitcoin.
Depuis sa création, la blockchain Ethereum attire développeurs, entreprises et entrepreneurs, générant une industrie florissante d’utilisateurs qui déploient des smart contracts et des applications distribuées.
Cet article analyse la norme ERC-20, un cadre essentiel pour la création de tokens. Bien qu’elle soit spécifique au réseau Ethereum, cette norme a inspiré d’autres standards sur diverses plateformes blockchain.
Sur Ethereum, un ERC correspond à un Ethereum Request for Comments. Ce sont des documents techniques qui définissent des standards pour le développement sur Ethereum. Ils ne doivent pas être confondus avec les Ethereum Improvement Proposals (EIPs), qui, à l’instar des BIPs sur Bitcoin, suggèrent des améliorations du protocole. Les ERC visent à établir des conventions facilitant l’interaction des applications et des contrats entre eux.
Rédigée par Vitalik Buterin et Fabian Vogelsteller en 2015, la norme ERC-20 propose un format simple pour les tokens Ethereum. En s’appuyant sur ce modèle, les développeurs bénéficient d’une base largement utilisée dans l’industrie, sans devoir tout recréer.
Les nouveaux tokens ERC-20 sont automatiquement compatibles avec tous les services et logiciels prenant en charge ce standard, notamment les portefeuilles logiciels, portefeuilles matériels et plateformes d’échange.
Il convient de noter que la norme ERC-20 a ensuite évolué en EIP (EIP-20) quelques années après la proposition initiale, sous l’effet de son adoption massive. Malgré cette évolution, le terme « ERC-20 » demeure la référence standard.
Contrairement à l’ETH (cryptomonnaie native d’Ethereum), les tokens ERC-20 ne sont pas détenus directement par les comptes. Ils existent uniquement dans le contrat, qui fonctionne comme une base de données autonome. Il définit les règles du token (nom, symbole, divisibilité, etc.) et maintient une liste associant les soldes aux adresses Ethereum des utilisateurs.
Pour déplacer des tokens, l’utilisateur doit envoyer une transaction au contrat pour lui demander de transférer une partie de son solde. Par exemple, si Alice souhaite envoyer 5 000 tokens à Bob, elle appelle une fonction du smart contract dédié.
Son appel s’inscrit dans une transaction Ethereum classique qui transfère 0 ETH au contrat du token. L’action est précisée dans un champ supplémentaire de la transaction, indiquant l’intention d’Alice — ici, le transfert de tokens vers Bob.
Bien qu’aucun ether ne soit transféré, des frais en ETH doivent être acquittés pour inclure la transaction dans un bloc. Si Alice ne possède pas d’ETH, elle doit en acquérir avant de pouvoir transférer ses tokens.
Après ce rappel, observons la structure d’un contrat ERC-20 type.
Pour être conforme à la norme ERC-20, un contrat doit inclure six fonctions obligatoires : totalSupply, balanceOf, transfer, transferFrom, approve et allowance. Les développeurs peuvent ajouter des fonctions optionnelles comme name, symbol et decimal.
function totalSupply() public view returns (uint256)
Cette fonction, lorsqu’elle est appelée, retourne le nombre total de tokens que le contrat détient.
function balanceOf(address _owner) public view returns (uint256 balance)
Contrairement à totalSupply, balanceOf requiert une adresse en paramètre. Elle retourne alors le solde de tokens de cette adresse. Les comptes étant publics sur Ethereum, n’importe qui peut consulter le solde d’un utilisateur à condition de connaître son adresse.
function transfer(address _to, uint256 _value) public returns (bool success)
La fonction transfer permet de transférer des tokens d’un utilisateur à un autre. L’appelant indique l’adresse destinataire et la quantité à transférer.
L’appel à transfer déclenche un événement (event transfer), ordonnant à la blockchain de référencer cette transaction.
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
La fonction transferFrom constitue une alternative à transfer offrant une plus grande programmabilité dans les applications décentralisées. Comme transfer, elle transfère des tokens, mais ceux-ci ne doivent pas forcément appartenir à la personne qui appelle le contrat.
Un utilisateur peut ainsi autoriser une personne ou un autre contrat à déplacer des fonds en son nom. Par exemple, pour un service d’abonnement, l’utilisateur peut automatiser ses paiements.
Cette fonction déclenche le même événement que transfer.
function approve(address _spender, uint256 _value) public returns (bool success)
La fonction approve est utile pour la programmabilité. Elle permet à l’utilisateur de limiter le nombre de tokens qu’un smart contract peut prélever sur son solde. Sans cette limite, le contrat pourrait dysfonctionner ou être exploité, entraînant la perte de tous les fonds.
Reprenons l’exemple de l’abonnement : si l’utilisateur détient un solde important et souhaite automatiser un paiement hebdomadaire à une DApp de streaming, il peut fixer la limite à vingt tokens pour cinq mois de service.
En cas de bug ou d’abus, la perte maximale se limite à vingt tokens, ce qui reste préférable à une perte totale du solde.
L’appel à approve déclenche l’événement approval, qui inscrit l’opération sur la blockchain.
function allowance(address _owner, address _spender) public view returns (uint256 remaining)
La fonction allowance complète approve. Lorsqu’un utilisateur a donné une autorisation à un contrat, il peut vérifier le nombre de tokens restants à disposition. Par exemple, si douze des vingt tokens approuvés ont été utilisés, allowance retournera huit.
Les fonctions précédentes sont obligatoires. Les fonctions name, symbol et decimal sont facultatives, mais rendent le contrat ERC-20 plus lisible. Elles permettent d’ajouter un nom, un symbole (ETH, BTC, etc.) et de définir la divisibilité du token. Par exemple, une forte divisibilité peut s’avérer utile pour les tokens utilisés comme monnaie, contrairement à ceux représentant la propriété d’un actif physique.
En combinant l’ensemble des fonctions décrites, les développeurs créent un contrat ERC-20 opérationnel. Les utilisateurs peuvent consulter l’offre totale, vérifier les soldes, transférer des fonds et accorder à d’autres DApps la gestion de leurs tokens.
La flexibilité des tokens ERC-20 constitue un atout majeur. Le standard n’impose pas de restrictions au développement, permettant à chacun d’ajouter des fonctionnalités et de définir des paramètres adaptés à ses besoins.
Les stablecoins (tokens indexés sur des monnaies fiduciaires) utilisent fréquemment la norme ERC-20, la majorité des stablecoins majeurs étant proposés dans ce format.
Pour un stablecoin adossé à une monnaie fiduciaire, l’émetteur conserve des réserves et émet un token pour chaque unité détenue. Par exemple, 10 000 $ déposés en réserve permettent la création de 10 000 tokens, chacun échangeable contre 1 $.
Ce modèle est simple à mettre en œuvre sur Ethereum. L’émetteur lance un contrat avec le nombre de tokens souhaité et les distribue, garantissant leur échange futur contre une somme équivalente en monnaie fiduciaire.
Les utilisateurs peuvent utiliser leurs tokens pour des achats, dans des DApps ou demander leur rachat auprès de l’émetteur. À la restitution, les tokens sont brûlés et la somme correspondante est retirée des réserves.
Le contrat est relativement simple, mais la création d’un stablecoin nécessite une gestion logistique et réglementaire importante.
Les security tokens présentent une structure proche des stablecoins. Au niveau du contrat, leur fonctionnement peut être identique. La différence réside dans la nature de l’émission : les security tokens représentent des titres financiers (actions, obligations, actifs physiques) et peuvent conférer une participation dans une entreprise ou un actif.
Les utility tokens sont les tokens les plus répandus dans la cryptosphère. Contrairement aux précédents, ils ne sont pas adossés à des actifs externes. Si les tokens adossés à des actifs sont comparables à des actions d’entreprise, les utility tokens s’apparentent à un programme de fidélité : ils ont une fonction précise, mais aucune valeur intrinsèque externe. Ils peuvent servir de monnaie de jeu, carburant pour DApps, points de fidélité, etc.
Si l’ether (ETH) peut être miné, les tokens ERC-20 ne le sont pas : on parle de minting lors de leur création. Au lancement du contrat, les développeurs répartissent l’offre selon leurs plans et leur feuille de route.
La distribution a généralement lieu via une Initial Coin Offering (ICO), Initial Exchange Offering (IEO) ou Security Token Offering (STO). Malgré des variantes, le principe reste le même : les investisseurs envoient de l’ether au contrat, reçoivent des tokens, et les fonds servent au développement du projet. Les utilisateurs peuvent utiliser leurs tokens ou les revendre selon l’évolution du projet.
La distribution n’est pas nécessairement automatisée. Certains financements participatifs acceptent différentes cryptomonnaies, les soldes étant attribués aux adresses fournies.
Les tokens ERC-20 sont fongibles : chaque unité est interchangeable. Une personne peut échanger son token ERC-20 contre celui d’un autre utilisateur, la valeur reste identique, à l’image de la monnaie ou de l’or.
Cette caractéristique est idéale pour une monnaie : des unités différenciées deviendraient non fongibles et pourraient varier en valeur, ce qui remettrait en cause leur usage comme moyen d’échange.
Comme vu précédemment, les tokens ERC-20 sont très personnalisables et s’adaptent à de nombreux cas d’usage : monnaie de jeu, programme de fidélité, objets numériques, droits sur des œuvres d’art ou de propriété.
La popularité d’ERC-20 en fait une référence dans l’industrie crypto. De nombreux portefeuilles, plateformes et smart contracts sont compatibles avec ce standard, et la documentation à destination des développeurs est abondante.
Comme beaucoup de réseaux crypto, Ethereum présente des limites en matière de scalabilité. Lors des pics d’activité, les frais augmentent et les délais s’allongent : le lancement d’un token ERC-20 en période de congestion peut nuire à sa praticité.
Ce problème n’est pas propre à Ethereum : il s’agit d’un compromis des systèmes distribués sécurisés. Des évolutions du réseau sont prévues pour répondre à ces enjeux.
La simplicité de création d’un token ERC-20 peut présenter des inconvénients. N’importe qui peut en lancer un, que ce soit à des fins légitimes ou frauduleuses.
La prudence est donc de mise. De nombreux schémas pyramidaux et arnaques sont présentés comme des projets blockchain. Il est indispensable de mener des recherches approfondies avant d’investir pour évaluer la légitimité de l’opportunité.
ERC-20 est la première et la plus répandue des normes de tokens sur Ethereum, mais d’autres standards ont vu le jour, proposant des évolutions ou visant des usages distincts.
Certains standards moins courants sont dédiés aux tokens non fongibles (NFTs). Selon l’usage, il peut être judicieux d’utiliser des tokens uniques avec des attributs spécifiques, par exemple pour une œuvre d’art ou un objet virtuel.
La norme ERC-721, utilisée pour la DApp CryptoKitties, offre une API permettant de créer des tokens non fongibles et d’ajouter des métadonnées, comme des images ou des descriptions.
La norme ERC-1155 est une évolution qui prend en charge à la fois les tokens fongibles et non fongibles au sein d’un même contrat.
D’autres standards, comme ERC-223 ou ERC-621, visent à améliorer l’expérience utilisateur. ERC-223 intègre des protections contre les transferts accidentels, ERC-621 permet d’ajuster l’offre de tokens.
La norme ERC-20 domine le secteur des crypto-actifs depuis plusieurs années. Elle permet à chacun de déployer facilement un contrat pour de nombreux usages, dont les utility tokens et les stablecoins. Cependant, ERC-20 présente certaines limites comparées aux autres standards. L’avenir dira si d’autres normes s’imposeront comme nouvelle référence de l’industrie.
Les tokens ERC-20 sont des actifs numériques standardisés sur la blockchain Ethereum, respectant des règles techniques précises. Contrairement aux cryptomonnaies natives comme Bitcoin, les tokens ERC-20 sont créés par des smart contracts et représentent une valeur interne au réseau Ethereum, offrant des modèles de tokenomics personnalisés et de multiples usages.
Les tokens ERC-20 sont gérés par des smart contracts sur Ethereum. Ils suivent un protocole standardisé qui permet le transfert de tokens, le suivi des soldes et la gestion des autorisations. Chaque transaction est inscrite sur la blockchain, assurant transparence et sécurité, tout en facilitant les échanges entre utilisateurs.
ERC-20 définit une interface normalisée pour les tokens fongibles sur Ethereum. Les fonctionnalités clés sont : transfert entre adresses, mécanisme d’approbation pour la dépense, suivi des soldes, gestion de l’offre totale et journalisation des événements. Cette norme garantit l’interopérabilité entre portefeuilles et applications décentralisées.
Développez un smart contract en Solidity sur Ethereum. Déployez-le via Remix IDE ou Hardhat, implémentez l’interface ERC-20 avec les fonctions de mint et transfert, puis publiez-le sur le réseau principal. Des frais de gas sont nécessaires pour le déploiement.
ERC-20 est la norme de token fongible sur Ethereum pour les actifs interchangeables. BEP-20 est l’équivalent sur Binance Smart Chain. ERC-721 permet la création de tokens non fongibles (NFTs) avec des propriétés uniques. La différence fondamentale : les tokens ERC-20 sont identiques et divisibles, ERC-721 sont uniques et indivisibles.
Les principaux risques concernent les failles des smart contracts, les attaques de phishing, le vol de clés privées et les tokens frauduleux. Utilisez des portefeuilles sécurisés, vérifiez les adresses des contrats, activez l’authentification à deux facteurs et effectuez vos transactions sur des plateformes reconnues afin de protéger vos actifs.











