fbpx Comment créer un token ERC20 avec OpenZeppelin et en moins de 10 minutes ? | Développeur Blockchain France

Comment créer un token ERC20 avec OpenZeppelin et en moins de 10 minutes ?

Posté par Vincent Ton le décembre 26, 2019 dans Blockchain En Entreprise
Card Image

En 2017 lorsque les cryptomonnaies étaient à la mode, beaucoup de personnes ont essayé de créer leur propres token. Mais depuis l’éclatement de la bulle des crypto monnaies, plus personnes ne savent comment créer un token ERC20.

Pire, le mot token ERC20 est très souvent associé à arnaque ou scam ! Je suis sûr que même toi, tu as peur de créer ton propre token ERC20 car inconsciemment, token ERC20 = SCAM !

D’ailleurs, ce qui a causé l’éclatement de la bulle des crypto monnaies c’est le fait que le gouvernement a mis en place une régulation autour des ICO (Initial Coin Offering). Ce qui fait qu’aujourd’hui on ne dit plus ICO mais STO (Security Token Offering).

Mais aujourd’hui, on va réhabiliter le token ERC20 qui a pris cher en 2018.

Et dans cet article, je vais te montrer comment créer un token ERC20 avec OpenZeppelin. Cela va te prendre moins de 10 minutes à créer tes premiers tokens ou jetons.

Créer un token ou créer une crypto monnaie ?

Par abus de langage, les médias (et quelques gourous dont un très connu dernièrement) utilisent le mot crypto monnaie pour dire token. Mais crypto monnaie et token sont 2 choses totalement distinctes.

Définition d’une crypto monnaie

Pour définir ce qu’est une crypto monnaie, je vais déjà définir ce qu’est une monnaie.

Une monnaie, c’est 3 choses :
une unité de compte ;
un réserve de valeur ;
un intermédiaire des échanges, c’est-à-dire un instrument qui te permet d’échanger des biens et des services.

L’euro €, c’est une unité de compte. On échange 1€20 pour acheter une baguette délicieuse de campagne. L’euro €, c’est aussi un réserve de valeur car l’euro permettra toujours d’acheter du pain à travers le temps. Et l’euro € est un intermédiaire des échanges.

Maintenant, une crypto monnaie est aussi une monnaie qui utilise les propriétés de cryptographie pour :
valider une transaction financière (par exemple : en achetant du pain avec du bitcoin)
générer de nouvelles piècesou coins in english.

La différence entre un token et une cryptomonnaie

La différence entre un crypto monnaie et un token

On fait souvent la confusion entre crypto monnaie et token. Les 2 fonctionnent sans banques et sont associés à la blockchain. Mais la différence se situe sur 2 aspects.

Premièrement, un crypto monnaie possède SA PROPRE blockchain alors qu’un token fonctionne sur un blockchain déjà existant. Conséquence, un crypto monnaie peut être minée alors qu’un token ne peut pas être miné car la quantité fixée du token est déjà disponible.

Par exemple, un token ERC20 fonctionne sur la blockchain Ethereum. Pourtant, la crypto monnaie associé à la blockchain Ethereum est Ether.

Deuxièmement, un token est associé à un projet spécifique comme un projet d’investissement d’un immeuble de rapport. Alors qu’un crypto monnaie est beaucoup plus large : tu peux acheter de la baguette de campagne avec tes bitcoins ou ether mais pas avec un token ERC20.

D’ailleurs, on parle de tokénisation d’un actif comme l’immobilier. C’est-à-dire transformer un actif comme l’immobilier en plusieurs jetons.

Troisièmement, tu peux échanger tes crypto monnaies avec des tokens mais l’inverse n’est pas vrai. Tu ne peux pas échanger tes tokens en bitcoin, ether ou litecoin. Sauf en passant par un Exchange Décentralisé.

Créer un token ERC20 sur l’Ethereum

Ce qui a provoqué le succès de l’ethereum (et par la suite, l’éclatement de la bulle des cryptomonnaies), c’est le token ERC20.

Qu’est-ce qu’un token ERC20 ?

L’acronyme ERC est Ethereum Request for Comment.

On peut voir un ERC comme une norme qui décrit ce qu’un smart contract doit avoir en terme de fonction et de propriété.

On peut faire l’analogie avec les normes ISO.

Maintenant, on parle de Token ERC20 car aujourd’hui, c’est la norme la plus connu dans le monde des cryptomonnaies.

Un ERC20 doit contenir les propriétés suivantes qui sont décrites ici : https://eips.ethereum.org/EIPS/eip-20

Token ERC20

Pour créer un token ERC20, on utilise les smart contracts. Et les smart contracts doivent avoir :
– 9 fonctions
– 2 events

Les 9 functions qu’un smart contract doit avoir pour être qualifié de Token ERC20 sont :

function name() public view returns (string) // optionel
function symbol() public view returns (string) // optionel
function decimals() public view returns (uint8) // optionel
function totalSupply() public view returns (uint256)
function balanceOf(address _owner) public view returns (uint256 balance)
function transfer(address _to, uint256 _value) public returns (bool success)
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
function approve(address _spender, uint256 _value) public returns (bool success)
function allowance(address _owner, address _spender) public view returns (uint256 remaining)

La fonction balanceOf() permet de retourner le nombre total de tokens détenu par une adresse.

La fonction transfer() permet à celui qui appelle la fonction (le msg.owner) d’envoyer le montant de token définit par _amount à l’adresse _to. Cette fonction doit déclencher l’event Transfer.

La fonction transferFrom() permet d’envoyer le montant de token définit par _amount de l’adresse _from à l’adresse _to. Cette fonction doit déclencher l’event Transfer.

La fonction approve() permet d’autoriser à _spender de pouvoir retirer une certaine quantité de token défini par _value, depuis l’adresse msg.sender (celui qui appelle la fonction). La fonction approve doit générer un event : Approval.

La fonction allowance() permet de retourner le montant que _spender est toujours autorisé à retirer de _owner.

Les 2 events qu’un smart contract doit avoir pour être qualifié de Token ERC20 sont :

event Transfer(address indexed _from, address indexed _to, uint256 _value)
event Approval(address indexed _owner, address indexed _spender, uint256 _value)

Maintenant que tu as vu ce qu’est un Token ERC20, je vais te montrer comment le créer. Il y a 2 méthodes :
– la méthode manuelle ;
– la méthode OpenZeppelin.

On va voir OpenZeppelin qui permet de créer un token ERC20 en moins de 10 minutes.

Comment créer un token ERC20 avec OpenZeppelin ?

Ici, je vais te montrer les 3 étapes à faire pour créer rapidement ton token ERC20.

Les 3 étapes sont :
1 – Installer OpenZeppelin ;
2 – Installer truffle-flattener ;
3 – Rentrer dans ton terminal une commande.

Et c’est tout !

Qu’est-ce que OpenZeppelin et comment l’installer ?

OpenZeppelin est une bibliothèque de smart contract écrit en Solidity.

Logo OpenZeppelin

Avec OpenZeppelin, les smart contracts sont sécurisés et optimisés pour consommer le moins de gas possible.

Pour installer OpenZeppelin, voici ce qu’on va faire.

Tout d’abord, créer un espace de travail où tu vas stocker tes smarts contracts.

Ensuite, rentre la commande suivante :

$ truffle init

Cela te donnera 3 nouveaux dossiers que sont :
– /tests pour faire des tests unitaires
– /migrations
– /contracts où tu vas stocker tes smart contracts.

Ensuite, tu vas rentrer la commande suivante sur le même dossier :

$ npm install @openzeppelin/contracts

Ca va créer un nouveau dossier /node_module qui va contenir le dossier OpenZeppelin.

Le nombre impressionnant des dossiers qu’ils ont sur OpenZeppelin !

Et à l’intérieur de OpenZeppelin, tu as une impressionnante liste de smart contracts.

Nous, ce qui nous intéresse c’est d’aller dans :
contracts/token/ERC20

Et de prendre le fichier ERC20.sol

Là, tu te dis : « Mais à quoi ça sert tous les autres smart contract ? »

Il y a ERC20Burnable.sol qui permet d’avoir la fonction burn(), c’est à dire détruire nos propre tokens.

Ensuite, il y a ERC20Capped.sol qui permet de désigner une adresse qui peut créer le même token (on parle de « miner »).

Il y a aussi d’autres extensions.

Nous, on va prendre le plus simple, à savoir : ERC20.sol.

Et comme tu peux le voir, le smart contract ERC20.sol importe 2 autres smart contracts : IERC20.sol et le smart contract Safemath qui est une librairie.

pragma solidity ^0.5.0;

import "./IERC20.sol";
import "../../math/SafeMath.sol";

C’est avec SafeMath que le smart contract assure sa sécurité au niveau des transactions.

Comme il y a 2 smart contracts qui intéragissent avec ERC20.sol, on va utiliser un autre outil : truffle-flattener.

Générer le smart contract avec Truffle-flattener

Pour ce faire, on va d’abord installer truffle-flattener. En gros, truffle-flattener permet de regrouper plusieurs smart contracts en 1 seul smart contract.

Pour cela, on va rentrer la commande suivante dans terminal :

$ npm i truffle-flattener

Ensuite, on va mettre la commande suivante dans le terminal :

$ ./node_modules/.bin/truffle-flattener ./node_modules/\@openzeppelin/contracts/token/ERC20/ERC20.sol > contracts/ERC20.sol

Et là, dans le fichier ERC20.sol nouvellement créé, tu auras 500 lignes de code. Voilà, tu as créé le token ERC20.sol

Conclusion

Si tu ne sais pas créer un token ERC20, je t’ai montré comment créer rapidement le smart contract en utilisant OpenZeppelin et truffle-flattener.

Après, il y a une méthode plus longue mais plus personnalisable qui est de créer manuellement le smart contract ERC20.

Et si tu souhaites devenir Développeur blockchain, n’hésite pas à réserver un créneau pour qu’on définisse ensemble un plan d’action.

Laisser un commentaire

Your email address will not be published. All fields are required.