Je respecte toujours mes engagements
Développement d’une DApp(application décentralisée) de Réservation d’événements avec la blockhain
Ce projet a pour objectif le développement d’une application décentralisée (DApp)
permettant la gestion des réservations pour divers événements (conférences, séminaires,concerts. L’interaction utilisateur s’effectue via une interface web développée en React, qui communique avec la blockchain par l’intermédiaire de l’extension de navigateur MetaMask pour la gestion des comptes et la signature des transactions.
L’objectif est de fournir un système de réservation transparent et sécurisé, sans dépendre d’une base de données centralisée classique. Les événements sont créés par le propriétaire du contrat, et les utilisateurs peuvent réserver des places tant qu’il y en a de disponibles et qu’ils n’ont pas déjà réservé.
Technologies Utilisées
Backend (Smart Contract) :
- Solidity : Langage de programmation pour les smart contracts Ethereum.
- Hardhat : Environnement de développement Ethereum pour la compilation, le déploiement, les tests et le débogage des smart contracts.
- Ethers.js : Utilisé dans les scripts Hardhat pour interagir avec le contrat.
Frontend (Interface Utilisateur) :
- React : Bibliothèque JavaScript pour la construction d’interfaces utilisateur.
- Ethers.js (v6) : Pour interagir avec le smart contract depuis le client.
- MetaMask : Extension de navigateur servant de portefeuille Ethereum et permettant aux utilisateurs d’interagir avec la DApp.
- CSS : Pour la mise en forme de l’interface.
Vue d’Ensemble du Flux :
- Backend : j’ écris EventBooking.sol (les règles) qui constitue mon backend.
- Backend : j’ utilises deploy.js pour compiler et mettre EventBooking.sol sur la blockchain locale (Hardhat). Je notes son adresse de deploiement.
- Frontend : Dans App.js, j’ utilises l’adresse et l’ABI pour créer un objet contract.
- Frontend : L’utilisateur clique sur « Connecter MetaMask ». App.js demande à window.ethereum le compte.
- Frontend : App.js utilise contract.eventCount() et contract.events(i) (appels de lecture) pour afficher la liste des événements.
- Frontend : L’utilisateur clique sur « Réserver ». App.js appelle contract.reserve(eventId) (appel d’écriture).
- MetaMask : Pop-up demandant à l’utilisateur de confirmer la transaction (signer et payer le gaz).
- Blockchain : Si confirmée, la fonction reserve du smart contract s’exécute. Les require sont vérifiés. Si OK, l’état (reservations, events[eventId].registered) est mis à jour sur la blockchain.
- Frontend : App.js attend (tx.wait()) la confirmation, puis appelle loadEvents() pour rafraîchir l’affichage avec les nouvelles données de la blockchain.




