ITInnovDesign
Latest Posts:

Creation d’une cryptomonaie sur la blockchaine ethereum, étape par étape pour les débutants : smart contract ERC20, ICO, token
Creation d’une cryptomonaie sur la blockchaine ethereum, étape par étape pour les débutants : smart contract ERC20, ICO, token

 

Sur ma page facebook (https://www.facebook.com/profile.php?id=100011294258548), j’ai fait une serie de post pour parler de blockchaine et des technologies liées tout au tour surtout sur le point de vue d’un developpeur. Beaucoup de mes followers qui sont géneralement des developpeurs débutants, m’ont demandé de faire des exemples concrets des app (ou DAPP = application decentralisée) sur les blochaines. Je me propose dans une serie de 3 articles de faire 3 applications concretes sur les blockchaines:

  1. Le premier exemple concret est celui ci qui traite de la creation d’une cryptomonaie sur le réseau ethereum avec au final une page web fait en react pour la lever des fonds (crowdsales) à partire de notre cryptomonaie.
  2. Le second exemple portera sur une lotterie ou les joeurs devront choisir un nombre au hasard dans un interval bien definit et parier sur le nombre choisis en payant des ether(la cryptomonaie du réseau ethereum), qui trouve le nombre gagne la totalité des montants de tous les joeurs (s’il y a plusieurs gagnants on divise la totalité entre tous les gagnants), s’il n’y a pas de gagnant, la totalité des gains vont au developpeurs du jeux, la particularité ici est que le contrat qui definit les règles du jeux est connu de tous et publique car reside sur un smart contract cablé dans la blochaine et du coup il n’y a rien de caché ni de centraliser.
  3. Le troisième exemple portera sur l’organisation des élections (un scrutin de vote) à travers une blochaine, l’application permettra à chaque électeur de pouvoir voter sur la blochaine et voir la progression en temps réel les résultats, la transparance ici est garantie car le smart contract qui regit le vote est cablé dans la blochaine et est publique et tout le monde peut verifier de sa veracité avant de voter.

NB: l’objectif de ces series n’est pas de ré-expliquer de nouveau tout ce que j’ai dejà expliqué sur ma page sur les blockchaine il suffit juste de faire des recherches sur facebook avec le mot clé “blockchaine gallinocoq” et vous aurez tous les articles que j’ai écrit pour expliquer de manière terre à terre ce qu’est une blockchaine et ce qu’on peut faire dessus. Ce post n’est n’ont plus un post pour vous apprendre le langage solidity iutilisé pour faire des smart contracts sur la blockhaine ethereum. Si vous connaissez dejà un langage de programmation, c’est assez suffisant pour comprendre le source code des differents projets et se faire sa propre idée, l’idée ici est juste de vous donner des pistes pour arriver à la réalisation de vos propres DAPPS sur les blockchaines.

Pour créer sa propre cryptomonnaie on a deux solutions : soit créer sa propre blockchaine et par consequence un réseau decentralisé pour cette blockchaine, soit utiliser une blockchaine existante dans un réseau decentralisé existant et c’est cette deuxième solution que nous allons implementé dans cet article, une cryptomonnaie dans une blockchaine et un réseau existant est le plus souvent appellé un “Token”(ou jeton) et j’en ai parlé sur ma page facebook du concept de jeton. Un token sur le réseau ethereum est en fait un smart contract qui respecte le protocole ERC20, sur binance chain on parlera du protocole BEP20.

Qu’est ce qu’il nous faut pour créer notre propre cryptomonnaie sur la blockchaine ethereum?

  • Nodejs: si vous ne l’avez pas, telechargez et installez nodejs (https://nodejs.org/en/download/)car nous allons l’utilisé comme plateforme de developpement.
  • Ganache : telechargez et installez Ganache (https://trufflesuite.com/ganache/) en fait, en phase de developpement, il faut que votre smart contract (le contrat intelligent ou il y a la logique metier de l’application que vous voulez deployer sur la blockchaine et ici il s’agit de notre token/cryptomonnaie) soit deployer sur une blockchaine, et ganache est justement c’est instrument qui le temps du developpement transforme votre machine en une blockchaine ou disons vous avez un mini reseau ethereum ou deployer vos smart contract et faire toutes les opérations que l’on fait dans le réseau principale d’ethereum (mainnet ou le reseau de test comme rostpen etc..). Une fois Ganache installé, créez un espace de travaille et vous aurez une image comme la suivante : Ganache vous donne un certain nombre d’account (utilisateur) donc d’addresse ethereum chargé dejà des ether pour faire des test, par exemple sur mon image, l’addresse “0x819593823276a47808D385Dd33DbEDaeA2e2Ed05” a 99.69 ether, ganache vous permet aussi de voir toutes les transctions fait sur la blockchaine ainsi que tous les blocks, bref vous avez en local un réseau d’une blockchaine complete pour travailler et il suffit juste d’une petite commande pour transmettre votre smart contract de votre machine au vrai reseau ethereum et le mettre à la disposition de tout le public.

  • Truffle: c’est un framework qui permet de faciliter le developpement sur la blochaine ethereum, c’est un outils que tout developpeurs ethereum doit connaitre et savoir en utiliser, il fonctionne avec nodejs, donc pour installer truffle, il faut nodejs et si vous avez nodejs, installez truffle globalement avec la commande (ouvrez powershell et tappez la commande suivante) :

npm install -g truffle

si vous faite “truffle version” vous obtienderz la version exacte de truffle dans votre machine comme moi en image:

  • Metamask : pour qu’un utilisateur accède à une blockchaine, il lui faut un wallet, j’en ai parlé longuement dans les articles sur facebook, le wallet en fait contient l’addresse qui est la clé publique, plus une clée privée qui permet de chiffrer les transactions car la force de la blockchaine reside sur l’utilisation des chiffrements à clée publique, metamask c’est donc ‘est instrument qui permet la création des wallet(portemonnaie) et donc c’est à travers metamask que l’utilisateur à accès aux differents blockchaine basées sur ethereum et peut donc manipuler ses token et ses cryptommonaie, suivez le lien suivant pour installer metamask qui n’est qu’une extension que vous pouvez ajouter par exemple à chrome (https://metamask.zendesk.com/hc/en-us/articles/360015489531-Getting-started-with-MetaMask), une fois installer, creer un compte metamask et du coup il vous donnera la possibilité de vous connecter sur n’importe quelle blockchaine y compris Ganache, importer des utilisateurs en inserrant la clé privée ou creer un utilisateur dans une blochaine et ainsi avoir une porte feuille dans cette blochaine(wallet) et pouvoir donc faire des transactions, par exemple acheter des crypto/token ou transferrer des token/crypto à une autre addresse etc.. l’image de metamask sur mon browser chrome est la suivante: dans cette image, l’account5 est l’addresse de Ganache que j’ai communiqué plus haut, et justement je suis connectè au reseua ganache en locale sur ma machine, et c’est accout dispose d’un autre token/crypto appellé PCT que j’ai cree dans ma machine pour les demo, on en creera un autre dans cet article.

La cryptomonnaie qu’on va créer ici s’appelle “TontinarCoin” en abbrégé “TNAR” (Je suis du cameroun et les tontinars sont ceux qui font de la tontine et cette cryptomonnaie pourrait etre vraiment utilisé par les amis tontinars pour faire des transctions entre eux ainsi eviter de passer par les banques), on va successivement par la suite créer une page web en react pour commercialiser notre cryptommonaie, bref pour la lever de fond, ce qu’on appelle un ICO ou mieux un crowdsales, il faut que nous donnons l’opportunité aux nombreux tontinars de pouver acheter et vendre le “TontinarCoin” non?

c’est partit dans powershell crée un repertoir ““TontinarCoin”” en tappant les commandes suivantes: la première crée un repertoire et la deuxième navigue dans ce repertore, la troisième commande si vous avez VSC (visual studio code)

mkdir TontinarCoin
cd TontinarCoin
code .

voici mon powershell

Voici mon VSC ou j’ai dejà tout affreté pour commencer à developper, y compris creer un terminale dans VSC ou je vais desormais lancer mes commandes

Cette fois ci dans le terminale de VSC tappez une après l’autre les commandes suivantes : la première permet d’initialiser un projet truffle qui nous permettra d’ecrire notre smart contract du token ERC20 en langage solidity, la deuxième initie un projet nodejs et la troisième nous installe une bibliothèque pour faciliter le developpement des token ERC20

truffle init
npm init -y
npm install @openzeppelin/contracts

Une fois fait votre visual studio code ressemblera à ceci:

remplacez le contenu de votre fichier “truffle-config.js” par : en fait ce fichier contient les configurations de truffle qui indique par exemple les reseau blockchaine ou on veut deployer les smart contract ainsi que les versions du compilateur du langage solidity qu’on va utiliser dans le projet car c’est truffle qui va s’occuper de la compilation du code solidity des smart contract en byte code qui est l’unique chose que comprend la machine virtuelle ethereum appellée EVM Ethereum Virtual Machine qui est exactement comme la machine virtuelle de java JVM ou la CLR de dotnet, j’en ai parlé de cet aspect sur mes articles sur facebook), dans le noeud “network ” de ce fichier, le “development” pointe sur notre fameux reseau “Ganache” qui tourne à la porte 7545 en localhost(127.0.0.1) donc quand nous lancerons la commande de deployement de truffle sans specifier le network, il va le deployer sur notre blockchaine locale sur ganache.

Dans le repertoire “Contract”, creer les fichiers solidity suivants (remarquez l’extension .sol comme solidity donc ces fichiers vont contenir le code solidity qui va decrire les smart contract qui vont nopus servire à faire notre levée de fond):

TontinarToken.sol (contient le code source de notre token), remarquez bien que notre token(TontinarToken) herite de ERC20 de openzeppelin qui est la bibliothèque qu’on a installé auparavent et qui contient dejà toutes les specifités du standard ECR20 qui régit le token dans ethereum, donc en fait le gros du boulot est dejà fait dans cette bibliothèque, on ne doit pas ré-inventé la roue, et toutes les cryptomonnaie que vous avez sur les plateformes d’echange sont fait exactement comme vous voyez là.

KycContract.sol : ce fichier contient le code qui va nous definir le KYC en fait dans un levée de fond, on doit savoir qui sont réelleement ceux qui participent, bref on peur definir une whitelist donc une liste blanche des investisseurs pour eviter que n’importe qui fasse du n’importe quoi, bref pour donner un peu duu serieux à notre levée de fond quoi, bref les fichier ou les smart contract que nous allons creer actuellment sont le plus pour faire la levée des fonds.

Crowdsale.sol : ce fichier contient la logique pour gerer la levée de fond proprement dite.

TontinarTokenSale.sol : ce fichier contient notre levée de fond qui sera basé sur notre token TNAR.

Au finale, votre VSC ressemblera à ceci:

Maintenant, nous allons deployé notre contrat sur la blockchaine ethereum locale (ganache), pour se faire, allez dans le repertoire “migration” et creez un nouveau fichier “2_deploy_contracts.js

creez egalement dans la racine du projet un fichier “.env” contenant le code suivant, en fait INITIAL_TOKENS c’est le nombre de token de depart que vous voulez mettre en circulation pour que les potentiels investisseurs achetent, la moi j’ai mis 1 million de TNAR, le MNEMONIC c’est votre MNEMONIC lorsque vous avez installez metamask, et le PROJECT_ID c’est le code de votre projet sur infuria (https://infura.io/) si vous n’avez pas un compte sur infuria, creez le , ce compte n’est pas necessaire pour deployer notre contrat sur Ganache, mais si vous voulez deployer le contrat sur une blockchaine publique ethereum comme le mainnet ou celui de test comme rostpen network, il est plus facile de passer par infuria pour le faire, raison pour laquelle infuria est integré à ce projet.

Installez les libraries npm suivante qui nous seront très utiles;

npm install truffle/hdwallet-provider
npm install dotenv@10.0.0
npm install object-keys@0.4.0

Compilé à present notre smart contract en tappant la commande.

truffle compile

Vous aurez la creation d’un repertoire client/src/abi avec tout ce qu’il faut pour interagir en javascript avec notre smart contract une fois qu’on l’aura installé dans la blockchaine.

Tappez ensuite la commande suivante pour deployer notre smart contract sur le reseau blockchain locale Ganache

truffle migrate — reset

cette commande va faire les transactions sur notre reseau locale pour y deployer nos differents smart contract

Vous pouvez egalement contactez le deployement sur l’interface de ganache

Passons actuellement à la creation d’une application react qui va nous permettre de faire la levée de fond proprement dite car il faut bien que les potentiels tontinars puissent acheter notre cryptomonnaie non?

tappez la commande suivante pour creer une app react

npx create-react-app client

Ce projet n’ayant pas pour but de décrire comment on travaille avec react, j’invites le lecteur à telecharger le code source de ce projet (il s’agit en fait d’une application banale en react qui utilise juste la librairie web3.js pour se connecter au reseau ethereum à travers metamask), une fois le code source telecharger, remplacer le contenu du projet react creer precedement par celui du code source puis à travers powershell, acceder au repertoire “client” et tappez la commande

npm install

puis successivement

npm start

ceci va vous lancer la page web pour faire la levée de fond, j’ai laisée expressement tout en anglais car mes resources sont en anglais et vous devez juste faire un effort de le comprendre.

une fois que vous avez lancez le site, on a la page suivante (moi je suis partit sur une simulation de 5 token seulement dans ma levèe de fond):

Faite un click sur “Complete Your KYC” pour aller à la page ou il faut inserrer votre addresse du wallet, ici je vais me connecter avec mon account 5 que j’ai utilisé depuis le debut de cet article, je copie cet addresse de metamaske puis je le colle à la page

Maintenant, voilà je suis habiliter dans la liste des persones pouvant investire dans tontinardCoin, je peux à present acheter un TNAR et à chaque fois metamask me demande la confirmation car je dois debourser de l’ether de mon wallet pour l’achat de ce token

Voilà j’ai à present 1 TNAR dans mon wallet et je peux avoir tous les info possibles de mon wallet

Je peux meme voir mon token dans mon wallet sur metamask, il suffit juste de ,copier l’addresse du smart contrat du token dans Ganache et fait une importation du token dans metamask

j’ai à present un TNAR dans mon wallet que je peux echanger avec d’autres cryptomonnaies.

Je vais à present importer un autre account de ganache à metamask en copiant sa clée privée

Je me connecte donc à metamask avec l’account 6

Je peux à present acheter aussi des TNAR de la meme manière qu’avec l’account 5 et ainsi de suite.

Voilà de manière simple comment on procède pour la creation d’une cryptomonnaie sur une blockchaine existante, si vous voulez le deployer sur le reseau publique ethereum par exemple sur le reseau de test rostpen, creer un projet infuria (ou passez par alchemy => https://docs.alchemy.com/alchemy/tutorials/hello-world-smart-contract) il suffira de le deployer tout simplement en tappant la commande suivante (il faudrait aussi que l’accout utiliser pour deployer le contrat ait un peu de ether, dans le reseau test rotspen, on peut obtenir un peu d’ether en utilisant le site faucet comme par exemple ici https://faucet.egorfine.com/ , il suffit juste d’indiquer l’addresse de l’account et hop, vous aurez quelques ether qui vous permettra de deployer le contrat car toutes transactions sur le reseau ethereum se paye en gas (wei donc ether)):

truffle migrate --reset --network ropsten

truffle dispose egalement de plusieurs template pour faire des DAPPS par bexemple si nous voulons creer un projet de smart contract plus le client web en react on peut juste tapper la commande suivante et il vous creera un template d’un projet complet comme celui que nous avaons fait pas à pas sur cet article qui comprend non seulement l’ossature pour la creation des smart contract, mais aussi le projet react pour la DAPPS pour toutes les types de projets et template de truffle c’est ici https://trufflesuite.com/boxes/index.html:

truffle unbox react

Le code source complet de ce projet se trouve sur mon compte github ici https://github.com/Defcoq/TontinarCoin


Author: admin
10.08.2022, 20:57
Category: Blockchain
Comments: 0
Views: 471
-

Share

Comments (0)
There are no comments yet.

Leave A Comment
processing...