DApp (Application Décentralisée) complète de certification de diplômes sur Ethereum, respectant les normes RGPD et utilisant le standard W3C Verifiable Credentials.
Un système révolutionnaire de certification numérique basé sur la blockchain, permettant aux écoles d'émettre des diplômes vérifiables de façon immuable, tout en respectant la vie privée des étudiants grâce au Zero-Knowledge Proofs.
Problème résolu: Comment certifier les diplômes de manière numérique, immuable et sécurisée, sans exposer les données personnelles des étudiants?
Solution: Blockchain + Cryptographie + Gouvernance Décentralisée
Risque: Un administrateur unique = point de défaillance unique
Solution: Consensus de 2 administrateurs sur 3 requis
- Ajout d'une école: 2/3 approval
- Révocation d'école: Actionnable par 1 admin
Données stockées: ❌ Nom, ❌ Email, ❌ Notes
Données hashées: ✅ H(Nom + Email + Diplôme)
Résultat: Immuabilité sans exposition de données privées
Format: JSON-LD signé cryptographiquement
Émission: Étudiant télécharge son credential
Souveraineté: L'étudiant contrôle son diplôme (SSI)
Processus:
1. Étudiant génère un token (1h de validité)
2. Partage le token au recruteur
3. Recruteur vérifie sur blockchain sans voir les données brutes
4. Token expire automatiquement
Frontend (HTML5 + JavaScript)
├── etudiant.html → Interface pour étudiants
├── entreprise.html → Interface pour recruteurs
└── ecole.html → Interface pour écoles
Smart Contracts (Solidity)
├── CertificationRegistry.sol → Registre des certifications
├── GovernanceModule.sol → Multi-sig governance
└── VerificationModule.sol → Vérification zero-knowledge
Backend (Node.js)
├── Web3.js / Ethers.js → Interaction blockchain
├── Hardhat Framework → Déploiement & tests
└── Scripts → Utilitaires
Data Flow:
École → Hash Credential → Blockchain → Token Temporaire → Vérification
certification-blockchain/
├── README.md # Ce fichier
├── package.json # Dépendances Node.js
├── hardhat.config.js # Configuration Hardhat
├── Instruction.txt # Guide d'installation
├── Readme # Documentation technique
│
├── contracts/
│ ├── CertificationRegistry.sol
│ ├── GovernanceModule.sol
│ └── VerificationModule.sol
│
├── scripts/
│ ├── deploy.js # Déploiement des contrats
│ ├── mint.js # Émission de certifications
│ └── verify.js # Vérification
│
├── Frontend/
│ ├── etudiant.html # Interface étudiant
│ ├── entreprise.html # Interface recruteur
│ ├── ecole.html # Interface école
│ └── index.html # Page d'accueil
│
└── tests/
├── Certification.test.js
└── Governance.test.js
- Node.js v18+
- npm ou yarn
- Navigateur Web (Chrome, Firefox, Brave)
- MetaMask ou compatible (pour Web3)
# 1. Cloner le repository
git clone https://github.com/iz235/blockchain-certification.git
cd blockchain-certification
# 2. Installer les dépendances
npm install
# 3. Compiler les Smart Contracts
npx hardhat compile
# 4. Déployer sur réseau local (Hardhat)
npx hardhat run scripts/deploy.js --network localhost
# 5. Lancer le serveur de développement
npm start
# 6. Ouvrir dans le navigateur
# http://localhost:3000Le fichier hardhat.config.js configure:
- Réseau local (Hardhat Node)
- Réseaux de test (Goerli, Sepolia)
- Réseaux principaux (Mainnet, Polygon, Arbitrum)
// Exemple: Déployer sur Sepolia testnet
npx hardhat run scripts/deploy.js --network sepolia<!-- 1. Ouvrir ecole.html -->
<!-- 2. Connecter MetaMask -->
<!-- 3. Émettre certification:
- Entrer nom étudiant
- Entrer email
- Entrer type de diplôme
- Cliquer "Émettre"
- Transaction validée en ~15s
--><!-- 1. Ouvrir etudiant.html -->
<!-- 2. Connecter MetaMask -->
<!-- 3. Voir ses certifications:
- List de tous les diplômes reçus
- Télécharger en format W3C VC (JSON-LD)
-->
<!-- 4. Générer token temporaire:
- Cliquer "Partager"
- Token généré (valide 1 heure)
- Partager via lien
--><!-- 1. Ouvrir entreprise.html -->
<!-- 2. Entrer le token reçu -->
<!-- 3. Vérifier authententicité:
- Confirmation blockchain
- Informations du diplôme (sans données personnelles)
- Horodatage d'émission
- Statut du token (valide/expiré)
-->1. ÉMISSION
École → Données Étudiant → Hash Cryptographique
→ Blockchain (contrat) → Événement émis
2. STOCKAGE
Blockchain conserve:
✓ Hash(données)
✓ Adresse école
✓ Timestamp
✗ Données personnelles (jamais stockées)
3. GÉNÉRATION TOKEN
Étudiant → Génère Token → Valide 1h
→ Token = Proof Temporaire
4. VÉRIFICATION
Recruteur → Entrer Token
→ Vérifier Hash sur Blockchain
→ ✅ Authentique ou ❌ Frauduleux
| Mesure | Détail |
|---|---|
| Multi-Sig Governance | 2/3 admins requis pour ajouter écoles |
| Access Control | Rôles: Admin, École, Étudiant, Vérificateur |
| Zero-Knowledge Proofs | Données hashées, jamais exposées |
| Token Expiration | Tokens temporaires (1h par défaut) |
| Immutability | Blockchain empêche modifications |
| RGPD Compliant | Droit à l'oubli via révocation tokens |
// ✅ Validation stricte des adresses
require(msg.sender == schoolAddress, "Unauthorized");
// ✅ Checks-Effects-Interactions pattern
// ✅ SafeMath pour éviter overflow
// ✅ Pausable en cas de découverte vulnérabilité# Lancer tous les tests
npx hardhat test
# Lancer avec couverture de code
npx hardhat coverage
# Tests spécifiques
npx hardhat test tests/Certification.test.jsCouverture cible: 95%+
- Architecture de base
- Smart Contracts Solidity
- Gouvernance Multi-Sig
- Frontend basique
- Intégration DID (Decentralized Identifiers)
- Support multi-chaînes (Polygon, Arbitrum)
- Système de notation (5 étoiles)
- Web3 Social (partage certifications)
- Mobile app (React Native)
Voir Readme pour les détails techniques complets, incluant:
- Architecture détaillée
- Spécifications cryptographiques
- Déploiement production
- Optimisations gas
| Opération | Gas | Coût (ETH) | Coût (USD) |
|---|---|---|---|
| Émettre Certification | ~150K | 0.005 | ~$15 |
| Générer Token | ~50K | 0.0015 | ~$5 |
| Vérifier | ~30K | 0.001 | ~$3 |
Estimations sur Ethereum Mainnet (gas=30 Gwei)
Les contributions sont bienvenues!
# 1. Fork
# 2. Branch (git checkout -b feature/NewFeature)
# 3. Commit (git commit -m 'Add NewFeature')
# 4. Push (git push origin feature/NewFeature)
# 5. Pull RequestIzadine - Blockchain & Smart Contracts Developer
Email: massarizzadinealkhali@gmail.com
GitHub: @iz235
MIT License
État: ✅ Production-Ready
Dernière Mise à Jour: Mai 2026
Testé sur: Ethereum Sepolia, Hardhat Local