Skip to content

iz235/blockchain-certification

Repository files navigation

🔗 Blockchain Certification System (BCS)

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.

📋 Vue d'ensemble

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

🎯 Caractéristiques Principales

1. Gouvernance Décentralisée (Multi-Sig)

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

2. Confidentialité Maximale (Zero-Knowledge)

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

3. Standard W3C (Verifiable Credentials)

Format: JSON-LD signé cryptographiquement
Émission: Étudiant télécharge son credential
Souveraineté: L'étudiant contrôle son diplôme (SSI)

4. Vérification par Token Temporaire

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

🏗️ Architecture

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

📁 Structure du Projet

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

🚀 Installation & Setup

Prérequis

  • Node.js v18+
  • npm ou yarn
  • Navigateur Web (Chrome, Firefox, Brave)
  • MetaMask ou compatible (pour Web3)

Installation

# 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:3000

Configuration Hardhat

Le 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

💻 Utilisation

Pour les Écoles

<!-- 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
-->

Pour les Étudiants

<!-- 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
-->

Pour les Recruteurs

<!-- 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é)
-->

📊 Flux de Données

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

🔒 Sécurité

Mesures Implémentées

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

Bonnes Pratiques

// ✅ 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é

🧪 Tests

# Lancer tous les tests
npx hardhat test

# Lancer avec couverture de code
npx hardhat coverage

# Tests spécifiques
npx hardhat test tests/Certification.test.js

Couverture cible: 95%+

📈 Roadmap

  • 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)

📚 Documentation Complète

Voir Readme pour les détails techniques complets, incluant:

  • Architecture détaillée
  • Spécifications cryptographiques
  • Déploiement production
  • Optimisations gas

🔗 Ressources

💰 Coûts (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)

🤝 Contributing

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 Request

👤 Auteur

Izadine - Blockchain & Smart Contracts Developer
Email: massarizzadinealkhali@gmail.com
GitHub: @iz235

📄 Licence

MIT License


État: ✅ Production-Ready
Dernière Mise à Jour: Mai 2026
Testé sur: Ethereum Sepolia, Hardhat Local

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors