Skip to content

francois-guerin-ledger/simple_blockchain

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

simple_blockchain

Une mini-blockchain accompagnée d'une API HTTP. L'objectif est pédagogique : illustrer simplement le fonctionnement d'une blockchain (transactions, mempool, blocs, hash, minage, persistance, validation).

Le projet est livré incomplet : certaines fonctions clés restent à implémenter. Chacune est signalée par un commentaire TODO qui décrit la tâche et fournit une aide. La marche à suivre est détaillée dans le dossier docs/, organisé en modules.

Liste des modules et parcours conseillé : docs/README.md.

Fonctionnalités

  • Ajout de transactions (par exemple « Alice envoie 10 à Bob »).
  • Mise en attente des transactions dans la mempool.
  • Faux mineur qui regroupe les transactions dans un bloc et le mine.
  • Construction de la blockchain, bloc après bloc.
  • Sauvegarde de la chaîne dans un fichier, puis rechargement au démarrage.
  • Détection d'une modification frauduleuse des données.

Installation

Node.js est requis (nodejs.org). Ensuite :

cd ~/Documents/simple_blockchain
npm install

Lancement

npm start

Le serveur écoute sur http://localhost:3000. Pour vérifier qu'il fonctionne, ouvrir http://localhost:3000/health : la réponse, au format JSON, le confirme. Pour l'arrêter : Ctrl + C.

Tests

npm test

La commande teste à la fois les exercices (exercices/) et les fonctions de la blockchain (modules G à J). Chaque ligne affiche [OK] ou [KO]. Au départ, presque tout est en [KO] : c'est normal, les fonctions ne sont pas encore implémentées. L'objectif est de les écrire une par une et de tout faire passer au [OK].

Organisation du dépôt

simple_blockchain/
├── index.js              Serveur HTTP (déjà implémenté). Démarre avec "npm start".
├── src/
│   ├── blockchain.js     Cœur du projet. Contient les fonctions à implémenter (G, H, J).
│   ├── storage.js        Persistance dans un fichier (Module I).
│   └── miner.js          Faux mineur (déjà implémenté).
├── data/
│   ├── chain.example.json   Exemple de blockchain remplie, à titre d'illustration.
│   └── chain.json           Blockchain de travail (créée automatiquement, non versionnée).
├── bruno/                Collection Bruno pour tester l'API (« Open Collection »).
└── docs/                 Documentation, organisée en modules A à K.

API

La spécification complète, avec des exemples, figure dans docs/api.md. En résumé :

Méthode Adresse Rôle
GET /health État du serveur
POST /add-transaction Ajouter une transaction
GET /mempool Lister les transactions en attente
GET /chain Consulter toute la blockchain
GET /blocks/:index Consulter un bloc précis (ex : /blocks/0)
GET /last-block Consulter le dernier bloc
GET /validate Vérifier l'intégrité de la chaîne
POST /admin/start-miner Démarrer le faux mineur
POST /admin/stop-miner Arrêter le faux mineur

État initial du projet

Tant que les fonctions des modules G à J ne sont pas implémentées, certaines routes renvoient un message commençant par TODO Module ..., qui indique la fonction à écrire et le fichier concerné. La route /health, elle, est disponible dès le démarrage.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors