Chacun d’entre nous utilise un Ethereum token, tel que Tether USD (USDT), USD COIN (USDC), Shiba Inu (SHIBA), ou vient d’en entendre parler, mais la majorité n’a jamais posé la question concernant leur création parce qu’ils pensent que c’est compliqué en tant que tâche pour une personne normale. Si vous avez l’impression que nous parlons de vous, ne vous inquiétez pas, aujourd’hui vous allez créer facilement votre premier jeton.
Table Des Matières
Qu’est ce que ERC20 ?
L’ERC-20 est une norme pour les jetons fongibles (fungible tokens). En d’autres termes, chaque jeton peut être exactement le même (en type et en valeur) qu’un autre jeton. Par exemple, un jeton ERC-20 agit exactement comme l’ETH, ce qui signifie que le premier jeton sera toujours égal à tous les autres jetons, nous pourrons également prendre l’exemple du dollar. En fait, si vous avez un dollar, vous pouvez aller et l’échanger avec n’importe quel autre .
Les jetons ERC-20 sont les jetons les plus couramment utilisés sur le réseau Ethereum. Ils sont conçus pour être utilisés pour payer des fonctions et sont connus sous le nom de jetons utilitaires. Ils peuvent également être utilisés pour payer des biens et des services.
Ces tokens sont :
💻 Fongibles – Le code de chaque jeton individuel est le même que n’importe quel autre, bien que l’historique des transactions puisse être utilisé pour identifier et séparer les jetons impliqués.
🛫 Transférables – Ils peuvent être envoyés d’une adresse à une autre.
⛏️ Offre fixe – Un nombre fixe de jetons doit être créé afin que les développeurs ne puissent pas émettre plus de jetons.
Comment créer un contrat ERC20 ?
On va utiliser truffle pour développer votre contrat , si c’est la première fois que vous en entendez parler, nous avons déjà écrit en détail un article sur truffle suite et la méthode d’utilisation, cliquez ici pour le voir.
les tokens ERC20 implémentent les méthodes ci-dessous comme normes, alors votre rôle pour créer un token est d’écrire leur implémentations:
En termes simples, ERC20 n’est rien de plus qu’une classe, avec ses méthodes et ses membres, qui exécute une certaine logique. Pour implémenter cette logique, nous pouvons le faire de deux manières :
- Soit la faire nous-mêmes.
- Soit utiliser une implémentation prête. (openzeppelin)
Si vous décidez de le faire avec votre propre implémentation, c’est sûr que vous le pouvez, mais ce ne sera pas aussi efficace et sécurisé que si vous implémentiez oppenzeppelin.
Définissons d’abord brièvement ce que c’est openzeppelin. En fait, il est considéré comme la bibliothèque standard maintenant les classes de contrats ERC.
Passons à la partie pratique, et commençons par l’installation d’openzeppelin par la commande ci-dessous:
npm install @openzeppelin/contracts
Après avoir créé votre fichier solidity, vous importez la partie de erc20 d’openzeppelin dans notre fichier :
Et initialiser le Token, héritant du contrat ERC20.sol :
Ici, nous déclarons un nouveau contrat appelé “FirstToken”, en utilisant le keyword contract, tout en héritant du contrat ERC20 OpenZeppelin en utilisant le mot-clé “is“.
L’héritage du contrat ERC20 nous donnera accès à des méthodes comme _mint() et balanceOf().
Comme dit précédemment, hériter du contrat ERC20, nous donne accès à la méthode _mint() utilisée pour créer de nouveaux jetons, et les envoyer à une adresse donnée dont nous avons besoin. En termes plus simples, “mint” signifie : créer quelque chose, comme un certain nombre de jetons, ou un NFT, et l’enregistrer sur la blockchain.
Tout d’abord, nous appelons la fonction _mint(), qui est chargée d’émettre les jetons, et qui aura besoin de deux paramètres :
- to : adresse du wallet/contrat qui recevra les tokens,
- amount: quantité de jetons à envoyer.
- owner: C’est le créateur du token, on l’utilise pour s’assurer qu’il est le seul à pouvoir exécuter des fonctions comme mint
Passons aux fonctions tel que : mint() et burn()
- mint: nous utilisons mint d’openzeppelin mais nous vérifions si la personne qui veut minter est le propriétaire du jeton
- burn : signifie détruire un jeton
Comment déployer un contrat ERC20 avec ganache ?
Après avoir créé le contrat erc20, nous allons le déployer d’abord sur ganache, puis sur un testnet public.
Déployer un contrat ERC20 avec ganache est similaire à ce qu’on a fait dans l’article de truffle suite.
tout d’abord, nous devons lancer ganache-cli avec la commande :
ganache-cli
On obtient dix comptes pour déployer notre contrat.
Créez un fichier js sous migrations, nommez-le “1_deploy_contracts.js”.
Après cela, copiez et collez le contenu de déploiement suivant dans le “1_deploy_contracts.js”.
Modifiez le fichier truffle.config.js comme ci-dessous :
Et la dernière chose que vous devez faire est d’écrire la commande ci-dessous :
truffle migrate
Si tout se passe bien, le résultat va être comme l’image ci-dessous:
Comment déployer le contrat ERC20 dans un testnet?
Pour déployer votre contract, vous aurez besoin de configurer un Ethereum node, ce qui est difficile. Donc on va utiliser infura .
Infura est un cluster de nœuds Ethereum hébergé qui permet d’exécuter votre application sans les obliger à configurer leur propre Ethereum node.
vous devez donc vous rendre sur infura et créer un compte.
vous allez créer votre premier projet avec l’aide fournie par infra.après,vous cliquez sur :
pour déployer notre contrat, nous utiliserons rinkeby testnet, alors on va la choisir et on copie le lien fournie:
Installons HDWalletProvider avec la commande ci-dessous:
npm install truffle-hdwallet-provider
Puis vous ouvrez truffle-config pour avoir l’opportunité d’ajouter les lignes comme mentionné dans les images ci-dessous :
Vous devez faire une dernière modification dans le fichier de migration:
Maintenant notre contrat est prête, tapez simplement dans le terminal la commande suivante :
truffle migrate --network rinkeby
si tout se passe bien, vous recevrez un message sur votre console qui est semblable a l’image ci-dessous :
Félicitations!! vous venez de créer votre premier token, et vous lavez déployé dans ganache et rinkeby testnet .