Le standard ERC20

ERC, pour Ethereum Request and Comments, est le processus par lequel une demande d’amélioration ou une nouvelle proposition est soumise à la communauté pour être validée. L’ERC20 est la vingtième proposition.

Ce standard est le plus utilisé actuellement, notamment lors des levées de fonds (ex: ICO). Il a été proposé par Fabian VogelSteller le 19 novembre 2015 et s’est rapidement répandu. Nous allons voir ses spécifications. Elles sont aussi disponibles ici. Pour pouvons aussi voir un exemple d’implémentation proposé dans ce code wiki.

Les fonctions

Pour interagir avec un token ERC20, ou en créer un, le smart contract de token devrait mettre en application ces fonctions :

  • totalSupply: renvoie le nombre total de token en circulation. [obligatoire].
  • balanceOf: permet de consulter le solde d’un autre compte. [obligatoire].
  • transfer: est la fonction qui permet le transfert de compte à compte. Un message d’erreur doit être remonter si le solde de l’émetteur n’est pas suffisant. Un transfert d’une valeur 0 doit être traiter comme une valeur normale. [obligatoire].
  • transferFrom: permet de transférer des tokens d’un compte vers un autre sans que l’initiateur de l’ordre soit propriétaire du compte. Ceci peut être utilisé par les contrats qui peuvent retirer des tokens en votre nom. [obligatoire].
  • approve: est une fonction permettant au détenteur d’un contrat de token d’approuver un ou plusieurs retraits pour un montant déterminé par un compte précis. [obligatoire].
  • allowance: renvoie le nombre de token que l’initiateur de la transaction peut retirer du compte propriétaire. [obligatoire].
  • name: retourne le nom du token. [optionnelle].
  • symbol: retourne le symbole du token. [optionnelle].
  • decimals: retourne le nombre de décimales à prendre en compte pour le token. La valeur récupérer par cette fonction doit être multiplier par la décimale. [optionnelle].

Les événements

Ci-dessous les événements déclenchés par les fonctions :

  • Transfer: doit se déclencher quand les tokens sont transférés. Ils se déclenchent quand les fonctions ‘transfer’ et ‘transferFrom’ sont appelés.
  • Approval: doit se déclencher à chaque appel réussie de la fonction ‘approve’.

Etant donné que l’on connait à l’avance les fonctions et comportements d’un token ERC20, l’implémentation est plus rapide pour soi et compréhensible par d’autres. Ces fonctions et événements peuvent être enrichit. On est sur une base minimaliste.

Ce standard présente cependant des limites puisqu’il ne prévoie aucun mécanisme de prévention des erreurs d’envoie. Il n’est pas valable pour les tokens non fongibles (les tokens uniques ayant un caractère différenciant).

D’autres standards existent :

  • ERC223 : une amélioration de ERC20
  • ERC721 : pour l’implémentation des smarts contracts gérant les NFTs
  • ERC1155 : pour gérer les tokens standards et les NFTs

4 commentaires

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s