Comment écrire votre premier contrat intelligent ERC20 ?

0
669

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: 

KkUy03T5bGS8wSlltz11pw5TFrWlPCy6ahCBVv YyVLBhVcfAllPiV6zy5 YL8qXK2eAzP2gSXb2kRnRKHGEhjzhB7tTxDtDXilXv6

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 :

4GUob7xeuRnLQaDjTT7R50HF9C351LXFp sXGnYMIllZe fjQiwRClzYGmwmfnC8hWSGP9DlEUUVBoc14nw2OuIjyNicv3Mg0TKd x7A Sa5cPNime72BleAbsQX 6ABy3uClsBnBFtsMXf349aqZjejinomVt0A5 9e 27UBJy8Qr2Jwfi3etO Xg

Et initialiser le Token, héritant du contrat ERC20.sol :

a b94hqhLJI81Rs XLw59vkHzOgxYGtYOYcIAWHfpsj5xsSQFUM8i4u w0 JoUUVX jjqsTkEk

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.

UUjhkRGkLFCoXBYv30VbFRhBY9WiwrvG4mncv7pClSwnwo0barWu3mjuGCFkGLoxe4oXEA1sFINP4d7v9vsrE 2BGRkm4Og9PBwraUHUEudegYDhL1u6 5yFOtiqqu9CsrSEHP1YHZKHnQ4tQw0 ziLQ1MAR4Ix

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()

0rYviN3Qgi7pA6FcMgv5nhcN2E0oBrfYyEqPq19Jo1px5porjbxPnfw3ZOfNJZwOb EjoX9uCV427Oo9NTJ1nY MCmTjr4hflICO4rmeZ0gBkhG721XH ghcG83pGtDT4KzRRkKKNU85LIGHO5Otuvrbp2HF7FafnpzDyOXBkariZmVLC 8Xu1kujA
  • 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”.

JQSwnA6OaXQTzIfSL7ObpemE5cm3u1fQmXw ULB0saJIBkyGj4VoQTiAPYXeUnbw7NYVQFIh2A3J mmyc2 w2hN3PMZEwhdvuzM4krO Jf0Yz0acBXoNEX0TUx2aLAqky8Zktv tM8McJZG3YZwYBB6mRjHXTM7w DYsF99P0iJdQtuwq7yMyRQKEg

Modifiez le fichier truffle.config.js comme ci-dessous :

JUovS157Eo4JBfeZ1dSL5eMzJdJpCY0KvtT6EiBNy9yS Hik9ZtL 9Mmkk FOs2P4 WVyDP6G6qDVQ4QffZuW aI GCZ1sDtncpflYC2JmmlSmBuJT8h 14tvOXCiGiS024cZaZbuQhhrb SKH5vuYyYSVcCweIUO8vYztUADZw6npeVL z2nfSYsQ

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:

wb7MjtON4dAuDQk7HVknp32 7KxpPJ9aSRQopdeyuc usPTmQKKcSZHIxuPFm9i19QDNg5ZEqFji3K3IdPOdShGPSYhzDaQXCgkI4jFuKozH3 L0WKj57Hue8gpmwb5ETgTeKP zVc1prahKNJinhxnJZ QyW0 5c9bmTLS5EoS 4Z XYuqt0kLgw

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 :

YBRkkEwuQU5i K8wTOSJakWeJXYhrtZevKcDxOGiNVtyhspkNLoJsmm1 MquC yIxT4GDGl0z2UbtVHGOjg7W629Ya97eZQuiFV9REyHyWpILdee QeFc6SZST8R8otT6YNOKf TwG7yRqDZKM8NPimb0ZlZaky2ewE0NQc 7g22lKk 12LSV 27w

pour déployer notre contrat, nous utiliserons rinkeby testnet, alors on va la choisir et on copie le lien fournie:

l1AKLOzEcmPLXRq2d3WSMamdFmy6WepUCx5OT11i8c2dk5DuwhUK8Vt3 oBe41YBp40epdIjRwVrc0Ie WxK DQfUSpfqDxYQHzXtfXIRQSTDFTv694F7CMaQC5tTy05jiDH dejaZIlcoqO9 0X sZlTt9kPFjErPWLCQFPAjglTMX9265eOeL3Kw

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 :

L 7IZ94CvYD0YxiuOR5upzqB2I1GT2zhbr7ZDHkvHOLHF0vSF UIJjKV6Oa6trk98HEzrukhZ IFPax61GusK tCd4ON00b7cz9wlWiXB5a1YChJt0LvVhXeFEVMcCHOgMOa EqSXF1PaPHALzhVqmoRFfj6BiSZf63jVC7WaDht QMoVeROO7o0vA
w dP9Psgv x2yDdvLw6aJjEGBvM4jNJ3lZvxR22a2J ovap9lIuPCckVg5AoxmCkS1xIT3E4LqaYQJuNBAbG3d7fpvcMrTx4E J6GYGJB4knegliSDjTt7HFIHyZ6AjIA5IRNGP7f2hCm2R6U0b

Vous devez faire une dernière modification dans le fichier de migration:

Z53In5l9jzzt SqB9kD2iFMuUAWKGQZGCxqA POWS3IARJ6g8g0GVu2fE2hU9BpYOmeVMPTJ5kccCvT7EgXaJKMFUksHE9zlkT31sBjyUjxEj9c MqddQ0qCur8JQFGE X957mQLnMHF4wpvlPKT56Qhy9ItfiStN8nljAwIMUbsdEAPu93X5pHK8Q

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 :

KA8B22zXoOq860mMOxFaUBkWcYuhHZ4Yn9lDC gnUlsBzPgsbVvmh2EjY5b2tzLBN U MkOCbV6Fl3HESqZG8Db7t9BfA1SFmd2FtfbubnEglFJmzFLSZ1UV8zs hsoM6LScw4sD3XYR6WwoSSNSl9RV1Z

Félicitations!! vous venez de créer votre premier token, et vous lavez déployé dans ganache et rinkeby testnet .

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.