ITInnovDesign
Latest Posts:

Developement d’un application decentralisée sur la blockchaine éthereum(Dapps):Une application des elections
Developement d’un application decentralisée sur la blockchaine éthereum(Dapps):Une application des elections

Developement d’un application decentralisée sur la blockchaine éthereum(Dapps) : conception d’une application pour des élections(les scrutins).

Nous continuons dans notre serie d’article avec code source à l’appui sur le development des applications sur les blockchaines pour débutant, dans le premier article ici (https://itinnovdesign.com/creation-dune-cryptomonaie-sur-la-blockchaine-ethereum-%C3%A9tape-par-%C3%A9tape-pour-les-d%C3%A9butants-smart-contract-erc20-ico-token), nous avons fait la creation d’une cryptomonnaie(le TontinarCoin ou TNAR).Dans ce poste, nous allons developper ensemble étape par étape une application decentralisée pour les élections ou mieux pour les votes ou un scrutin. La particularité de ce type d’application est sa fiabilité, car pour que les élection soit crédible, il faut qu’elle repose sur une plateforme credible donc le contrat qui regit les règles des élections doit etre accepter par tous et mettre ce contrat dans une blockchaine à travers un smart contrat renforce cette credibilité car toutes les parties prenantes peuvent acceder à la blockchaine pour toute verification car comme j’ai si bien expliqué dans mes nombreux postes sur facebook sur les blockchaines, on ne peut pas modifier les données sur une blochaine, elles son imutables et ne sont pas en écriture comme dans une base de données ou on peut manipuler et modifier/falsifier les données comme on veut, dans une blochaine, une fois qu’on a fait une transaction(ecrit les donnée dans la blockchaine), elle devient inchangeable et donc non modifiable.

Pour suivre ce poste, il faut avoir au prealable lu le premier article (https://itinnovdesign.com/creation-dune-cryptomonaie-sur-la-blockchaine-ethereum-%C3%A9tape-par-%C3%A9tape-pour-les-d%C3%A9butants-smart-contract-erc20-ico-token)et surtout installer tous élements necessaires pour le developpement des Dapps comme expliqué dans cet article.

Ouvrez un terminale(powershell) et creez un repertoire “VoteElection” puis deux sous repertoire à l’interieur “Election_Contract” et “Election_App”, pour le faire vous devez utiliser la commande “mkdir” (une fois faite ouvrez le repertoire dans VSC)

Dans VSC(Visual Studio Code), ouvrez un terminale, naviguez dans le repertoire “Election_Contract” et tappez

truffle init

Comme vous l’avez compris, notre smart contract qui contient le code et la logique qui regit le vote doit etre fait en langage solidity puis compilé en bytecode qui sera executé par la machine virtuelle etehereum appellé EVM, pour ce faire le framework truffle nous permettera de compiler notre application, la command “truffle init” permet donc de creer un projet truffle qui contient dejà l’infrastructure qui nous permettra developper nos smart contract, l’image suivante explique le role de chaque repertoire crée par cette commande.

Dans le repertoire “Contracts”, creer le fichier Election.sol avec le copde suivant:

view rawelection.sol hosted with ❤ by GitHub

La methode “Register” permet au scrutateur qui en fait est la persone qui va deployé ce contrat dans la blockchaine à enregistrer les differents electeurs, la methode “Vote” consiste permet à un electeur enregistré de voter et la methode “reqWinner” permet à chaque electeur de connaitre le resultat des élections, on suppose ici que le poid ou mieux le vote du scrutateur compte double, disons que c’est la règle de cette élection acceptée par toute les parties prenantes.

Remplacez votre fichier “truffle-config.js” par ceci

view rawtruffle-config.js hosted with ❤ by GitHub

Vous pouvez compiler l’application en tappant dans le terminale de VSC

truffle compile

Cette commande permet de creer le fichier election.json qui contient le code ABI qui va nous permettre de comuniquer avec notre smart contract en javascript à travers la bibliothèque web3.js qui contient toutes les fonctions qui nous permettent d’interagir avec notre smart contract à partir de javasdcript un peu comme jquery à travers ajax qui nous permet de communiquer avec un serveur web

Creez ensuite le fichier “2_deploy_contracts.js” dans le repertoire “migrations” avec le code suivant (c’est ce fichier qui va indiquer à truffle quels sont les smart contracts à compilé et à deployer, le premier fichier de defaut sert à l’infrastructure de compilation et de deployement de truffle et vous devez le laissez tel qu’il est)

view raw2_deploy_contracts.js hosted with ❤ by GitHub

ce script nous permet de deployer notre smart contract avec 4 candidats.

Pour Deployer notre smart contract sur notre blockchaine locale avec Ganache (veillez lire la première partie pour installer Ganache), tappez la commande suivante dans le terminale de VSC:

truffle migrate — reset

notre smart contract sera effectivement deployé sur notre blockchaine locale

et on aperçois aussi le deployement de ce contrat intelligent sur l’interface UI de ganache

Bien evidement le contrat est deployé avec le premier addresse de test fournit par ganache comme decrit dans la première partie. et cette addresse est dejà aussi present sur metamask et c’est donc cette addresse qui sera le scrutateur et pourra enregistrer les electeurs.

Creons à present une application web en nodejs pour permettre aux acteurs des elections (les electeurs et le scrutateur) de pouvoir interagir avec notre smart contract et ainsi voter

Pour faire simple et plus rapidement, ce tutoriel n’ayant pas pour bujt de vous apprendre ìle developement d’une web app en nodejs, j’ai dejà prevu tout le code pour vous, allez sur le code source de ce post ici (https://github.com/Defcoq/Elections), faite un clone et naviguer dans le repertoire “Election_App” et copiez collez le contenu dans votre repertoire “Election_App” puis dans VSC ouvrez un nouveau terminale dans le repertoire “Election_App” et tappez la comamnde nodejs

npm install

Tappez à present

npm start

et voilà, nous allons votez entre 4 chiots Lol

l’addresse utilisé chez moi pour enregistrer le contrat c’est “0x819593823276a47808D385Dd33DbEDaeA2e2Ed05” donc c’est avec cette adresse que je dois enregistrer les electeurs, je me connecte donc avec cette addresse dans metamask et je choisis du menu deroulant les electeurs, il suffit de se connecter par la suite avec l’addresse de chaque electeur pour voter et à chaque moment, chaque electeur peut cliquer sur le bouton declarer le gagnant pour obtenir le result des elections. le code de connection avec javascript en utilisant web3.js est assez explicite et se trouve dans app.js.

le source code se trouve sur mon compte github ici https://github.com/Defcoq/Elections


Author: admin
20.08.2022, 10:36
Category: Blockchain
Comments: 0
Views: 986
-

Share

Comments (0)
There are no comments yet.

Leave A Comment
processing...