Lab #2 : Création de votre premier Token - PaulFasola/TechLabBlockchain101 GitHub Wiki
Cliquez-ici pour accéder au projet
Rappels sur la notion de "Token"
Un token n'est pas un coin
Si jamais vous ne m'avez pas entendu insister-la dessus lors de la partie théorique, c'est le moment de bien lire !
Un coin est globalement un moyen de paiement. La plupart des coins sont basés sur des blockchains elles même basées directement de celle du Bitcoin (par fork)
Un token n'est pas forcément un moyen de paiement, celui-ci peut avoir un champ d'utilisation beaucoup plus vaste.
Un token est en réalité "porté" par une blockchain qui dispose de son coin représentatif (même si ce n'est pas toujours vrai). La blockchain la plus connue supportant le concept de tokens est celle de l'Ethereum.
Concevoir un token est donc trivial : il n'y a pas besoin de forker quoique ce soit ou de créer une nouvelle blockchain.
Les tokens sont distribués grâce a des événements comme des ICOs (Initial Coin Offering).
Pour en générer, il suffit d'y migrer un contrat définissant le jeton et son interface. Par soucis de normalisation, certaines ERC/EIP (pour Ethereum Request for Comments / Ethereum Improvement Proposal) sont adoptées massivemnt (comme l'ERC21). C'est cette ERC/EIP qu'on utilisera ;)
Étape 1 : Se renseigner sur l'ERC-20
Comme indiqué précédemment, l'ERC-20 est un set de règles définissant un token. Pour être compris par les différents services qui ont adopté cette "norme" (MetaMask, les token explorers etc...), il faut impérativement - et au minima - appliquer ces règles.
Ces règles sont définies dans [https://theethereum.wiki/w/index.php/ERC20_Token_Standard](le Wiki de The Ethereum)
Étape 2 : Implémenter le token
Pour créer le token, on va utiliser solc (le compilateur Solidity) via Truffle qui inclut sa dernière version ainsi que l'éditeur Remix (votre IDE fonctionne aussi, mais vous ne profiterez pas par défaut du sol linter et de l’auto-complétion par exemple).
Notre objectif est de créer un token ERC-20 de base (sans sécurité/gouvernance aucune) qui permet les transactions en interne et les demandes de transactions de l'extérieur après avoir vérifié que ces dernières sont autorisées par le ou les comptes détenteurs.
Étape 3 : Tester !
Beaucoup n'aiment pas ça, et pourtant il est incontournable de tester son code. Encore plus quand on manipule des valeurs qui peuvent être financières ! Vous n'aimeriez pas voir transférer 10 000 de vos tokens au lieu d'un seul prévu à votre destinataire, si?
Votre prochaine mission sera d'implémenter le corps des descripteurs de tests dans le fichier test/token.test.js (les trois TODO! - N'oubliez pas de modifier les trois variables au début du fichier pour qu'elles correspondent aux paramètres de votre token!)
Étape 4 : Déploiement sur la Blockchain locale
Si votre contrat compile et que les tests passent, ça devrait être une formalité :grin:
Il suffit d'exécuter la commande truffle permettant la migration à partir de la racine du projet.
Je vous laisse chercher ladite commande ;)
Vous pourrez par la suite observer sur Ganache les différentes transactions / blocs Une fois déployé, vous pourrez commencer à l'utiliser pour faire des "virements" !
Il était tout a fait possible de créer, tester et déployer votre token via Remix mais compiler et déployer en local vous fera vous habituer à Truffle ;)
Étape 5 (bonus) : Manipuler son porte feuille à tokens
Parce que je pense a vous et pour vous éviter une saisie de commande du coté de truffle develop, j'ai exploité la commande "truffle exec" permettant d'exécuter des scripts complets pour vous proposer une interface console (CLI) exposant trois commandes :
- Check Balance (affiche la balance de chacun des comptes)
- Transfer from the owner accout to the next one (transfert le montant désiré du compte détenteur - à l'initial - de tous les tokens (0) vers le compte suivant (1))
- Transfer from an account to another : pareil qu'au dessus, mais vous avez le choix du compte qui sera débité.
Si votre contrat est valide, cet outil devrait fonctionner sans soucis ;)
N'hésitez pas à consulter le code qu'il y a derrière (dans ce répertoire) car c'est le genre de fonctions/d'instructions que l'on va utiliser dans le lab suivant !
Fin du lab
Ceci conclut ce second lab. Vous avez crée votre premier token, félicitations ! Bon, je vous l'accorde, dans le contexte d'une utilisation local de celui-ci, l'utilité est moindre. Une fois consolidé et mis au service d'un projet, vous pourriez le déployer et en distribuer à ceux qui croient en votre idée et par conséquent financer celle-ci... mais ce n'est qu'un exemple.
Maintenant que vous savez générer et manipuler des tokens, il est temps de passer à l'étape supérieure ;)
Direction le Lab numéro 3