DApp Bibliothèque Blockchain
Un Système de Gestion de Bibliothèque Décentralisé
Ralisé par :
DAOUCHE Oualid
EL GHANDOUR Anas
BARBARA Yasser
EL GHAOUI Hatim
Encadré par :
Dr El Ksimi Ali
16 mai 2025
Table des matières
1 Introduction 2
2 Aperçu du Projet 2
2.1 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Fonctionnalités Clés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3 Architecture Technique 2
3.1 Stack Technologique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3.2 Architecture du Système . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.3 Contrat Intelligent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.4 Fonctions et Modificateurs du Contrat . . . . . . . . . . . . . . . . . . . . . . . . 4
4 Implémentation Frontend 4
4.1 Interface Utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.2 Composants Clés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.3 Intégration Web3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
5 Déploiement 6
5.1 Déploiement sur le Testnet Sepolia . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5.2 Vérification du Contrat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
6 Tests 7
6.1 Tests du Contrat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
6.2 Tests Utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
7 Défis et Solutions 7
7.1 Défis Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
8 Conclusion 8
8.1 Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
8.2 Améliorations Futures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
9 Références 8
1
1 Introduction
Ce rapport présente une application décentralisée (DApp) de gestion de bibliothèque construite
sur la blockchain Ethereum. Le système offre une méthode transparente et sécurisée pour gérer
des livres, permettant aux utilisateurs de réserver, emprunter et retourner des livres, tout en
fournissant aux administrateurs des outils pour ajouter et supprimer des livres de la collection.
L’application démontre des concepts clés de la blockchain, notamment les contrats intelli-
gents, le stockage décentralisé et l’authentification des utilisateurs via des adresses de porte-
feuille.
2 Aperçu du Projet
2.1 Objectifs
Les objectifs principaux de ce projet sont :
— Implémenter un système de gestion de bibliothèque décentralisé utilisant des contrats
intelligents Ethereum
— Démontrer différents rôles et permissions (administrateur vs utilisateurs réguliers)
— Fournir une interface conviviale pour interagir avec la blockchain
— Implémenter les opérations CRUD (Création, Lecture, Mise à jour, Suppression) pour les
ressources de la bibliothèque
— Présenter les meilleures pratiques de développement Ethereum
2.2 Fonctionnalités Clés
La DApp Bibliothèque Blockchain offre les fonctionnalités suivantes :
— Pour les Administrateurs :
— Ajouter de nouveaux livres à la bibliothèque
— Supprimer des livres de la bibliothèque (lorsqu’ils sont disponibles)
— Consulter tous les livres du système
— Pour les Utilisateurs :
— Parcourir les livres disponibles
— Réserver des livres
— Emprunter des livres réservés
— Retourner des livres empruntés
— Fonctionnalités de Sécurité :
— Contrôle d’accès basé sur les rôles
— Vérification des transactions
— Enregistrement immuable de toutes les opérations de la bibliothèque
3 Architecture Technique
3.1 Stack Technologique
La DApp est construite en utilisant les technologies suivantes :
— Couche Blockchain :
— Ethereum (testnet Sepolia)
2
— Solidity (langage de contrat intelligent)
— Truffle (framework de développement)
— [Link] (API JavaScript Ethereum)
— Couche Frontend :
— [Link] (framework UI)
— CSS3 (style)
— MetaMask (intégration de portefeuille)
— Développement & Tests :
— Ganache (blockchain locale)
— Infura (fournisseur d’API Ethereum)
— Etherscan (explorateur de blockchain)
3.2 Architecture du Système
L’application suit une architecture DApp standard avec trois composants principaux :
Figure 1 – Architecture du système de la DApp Bibliothèque Blockchain
1. Contrat Intelligent (Backend) : Déployé sur la blockchain Ethereum, gère toute la
logique métier et le stockage des données.
2. Frontend Web : Application React qui fournit l’interface utilisateur.
3. Intégration Web3 : Connecte le frontend à la blockchain via MetaMask.
3.3 Contrat Intelligent
Le système de gestion de bibliothèque est alimenté par un contrat intelligent Solidity avec
la structure suivante :
3
1 // SPDX - License - Identifier : MIT
2 pragma solidity ^0.8.0;
3
4 contract Library {
5 // Structures de d o n n e s
6 struct Book {
7 uint id ;
8 string title ;
9 string author ;
10 bool available ;
11 address borrower ;
12 uint256 borrowDate ;
13 uint256 returnDate ;
14 }
15
16 // Variables d ’ tat
17 address public admin ;
18 uint public nextBookId ;
19 mapping ( uint = > Book ) public books ;
20 mapping ( address = > uint []) public borrowedBooks ;
21 mapping ( uint = > bool ) public deletedBooks ;
22
23 // vnements
24 event BookAdded ( uint id , string title , string author ) ;
25 event BookReserved ( uint id , address borrower ) ;
26 event BookBorrowed ( uint id , address borrower , uint256 borrowDate ) ;
27 event BookReturned ( uint id , address borrower , uint256 returnDate ) ;
28 event BookDeleted ( uint id ) ;
29
30 // Modificateurs et fonctions ...
31 }
Listing 1 – Structure du Contrat Intelligent de la Bibliothèque
3.4 Fonctions et Modificateurs du Contrat
Le contrat implémente plusieurs modificateurs de contrôle d’accès :
— onlyAdmin : Restreint les fonctions pour qu’elles ne soient appelées que par l’administra-
teur
— notAdmin : Empêche les administrateurs d’exécuter certaines fonctions utilisateur
— bookExists : Vérifie qu’un livre existe et n’a pas été supprimé
Les fonctions clés comprennent :
— addBook : Permet aux administrateurs d’ajouter de nouveaux livres
— deleteBook : Permet aux administrateurs de supprimer des livres disponibles
— reserveBook : Permet aux utilisateurs (pas aux administrateurs) de réserver des livres
disponibles
— borrowBook : Permet aux utilisateurs d’emprunter des livres qu’ils ont réservés
— returnBook : Permet aux utilisateurs de retourner des livres empruntés
— getAllBooks : Renvoie tous les livres non supprimés
— getBorrowedBooks : Renvoie tous les livres empruntés par un utilisateur spécifique
4 Implémentation Frontend
4
4.1 Interface Utilisateur
Le frontend est construit avec [Link] et présente un design responsive avec des vues dis-
tinctes pour les administrateurs et les utilisateurs réguliers.
Figure 2 – Vue administrateur avec panneau de gestion des livres
Figure 3 – Vue utilisateur montrant les livres disponibles et empruntés
4.2 Composants Clés
L’application React est organisée en composants suivants :
— [Link] : Composant principal gérant l’initialisation et l’état
— [Link] : Affiche l’en-tête de l’application avec les informations du compte
— [Link] : Affiche la liste des livres avec options de filtrage
— [Link] : Affiche les détails de chaque livre et les boutons d’action
— [Link] : Formulaire permettant aux administrateurs d’ajouter de nouveaux livres
— [Link] : Indicateur de chargement pour les opérations asynchrones
4.3 Intégration Web3
L’application se connecte à la blockchain Ethereum en utilisant [Link] via l’extension Me-
taMask.
1 async init () {
2 // Navigateurs DApp modernes
3 if ( window . ethereum ) {
4 try {
5
5 this . web3 = new Web3 ( window . ethereum ) ;
6 // Demande d ’ a c c s au compte
7 await window . ethereum . request ({ method : ’ eth_requestAccounts ’ }) ;
8 } catch ( error ) {
9 console . error (" L ’ utilisateur a r e f u s l ’ a c c s au compte ") ;
10 return false ;
11 }
12 }
13 // Logique d ’ initialisation et de connexion du contrat ...
14 }
Listing 2 – Intégration Web3 dans [Link]
5 Déploiement
5.1 Déploiement sur le Testnet Sepolia
Le contrat intelligent est déployé sur le testnet Ethereum Sepolia. Le déploiement a été
effectué à l’aide de Truffle avec Infura comme fournisseur de nœud Ethereum.
Adresse du Contrat : 0xB2f6D32fe3Af6A047bD7b499D842289f5cf9DC42
Figure 4 – Contrat intelligent vérifié sur Etherscan
5.2 Vérification du Contrat
Le code source du contrat a été vérifié sur Etherscan, permettant aux utilisateurs d’inspecter
le code et d’interagir directement avec le contrat via l’interface Etherscan.
Figure 5 – Les transactions sur Etherscan
6
Figure 6 – Les methodes de lecture sur Etherscan
Figure 7 – Les methodes d’écriture sur Etherscan
6 Tests
6.1 Tests du Contrat
Le contrat intelligent a été testé à l’aide du framework de test de Truffle, qui permet de
tester automatiquement les fonctions du contrat dans un environnement contrôlé.
6.2 Tests Utilisateur
Des tests manuels ont été effectués à la fois sur la blockchain locale Ganache et sur le testnet
Sepolia pour assurer le bon fonctionnement dans différents environnements.
Les scénarios de test suivants ont été exécutés :
— Ajout et suppression de livres par l’administrateur
— Réservation, emprunt et retour de livres par les utilisateurs
— Vérification du contrôle d’accès (les administrateurs ne peuvent pas réserver de livres, les
utilisateurs ne peuvent pas ajouter/supprimer de livres)
— Test des cas limites (suppression de livres empruntés, retour de livres non réservés, etc.)
7 Défis et Solutions
7.1 Défis Techniques
— Défi : Mise en œuvre d’un contrôle d’accès approprié entre administrateurs et utilisateurs
réguliers.
Solution : Création de modificateurs dédiés (onlyAdmin et notAdmin) pour contrôler
l’accès aux différentes fonctions.
— Défi : Gestion de la suppression de livres sans perturber les références.
Solution : Implémentation d’une approche de "suppression douce" utilisant un mapping
pour suivre les livres supprimés plutôt que de les retirer du stockage.
7
— Défi : Coûts en gas pour les opérations sur de grands tableaux.
Solution : Optimisation des opérations sur les tableaux en utilisant des mappings lorsque
possible et en employant des techniques de filtrage efficaces.
8 Conclusion
8.1 Résumé
La DApp Bibliothèque Blockchain démontre avec succès comment les applications tradi-
tionnelles peuvent être repensées à l’aide de la technologie blockchain. En utilisant les contrats
intelligents Ethereum, l’application offre une approche transparente, sécurisée et décentralisée
de la gestion de bibliothèque.
8.2 Améliorations Futures
Les améliorations potentielles pour les versions futures comprennent :
— Prise en charge de plusieurs administrateurs avec des exigences de signatures multiples
— Implémentation de contrats évolutifs pour une maintenance plus facile
— Ajout de catégories de livres et de fonctionnalités de recherche avancée
9 Références
1. Documentation Ethereum : [Link]
2. Documentation Solidity : [Link]
3. Framework Truffle : [Link]
4. Documentation [Link] : [Link]
5. Documentation [Link] : [Link]
6. Documentation Infura : [Link]
7. API Etherscan : [Link]