first commit
This commit is contained in:
75
docs/pedagogie/00-reprise-et-etat.md
Normal file
75
docs/pedagogie/00-reprise-et-etat.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# Reprise du projet — où nous en sommes
|
||||
|
||||
> Dernière mise à jour : initialisation documentation et squelette de rendu.
|
||||
|
||||
## En bref
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **Fait** | Dépôt de travail, sujet FR v1.1, captures PDF, plan pédagogique, paquet `tokenizerRendu/` |
|
||||
| **À faire** | Smart contract, déploiement testnet, doc utilisateur, README école complété |
|
||||
| **Prochaine action** | Lire [guide-realisation.md](guide-realisation.md) étape 1 — figer chaîne + nom du token |
|
||||
|
||||
## Arborescence actuelle
|
||||
|
||||
```
|
||||
tokenizer/ ← dépôt Git de TRAVAIL (perso)
|
||||
├── README.md
|
||||
├── .gitignore
|
||||
├── tokenizer.pdf ← copie locale du sujet (optionnel)
|
||||
├── docs/
|
||||
│ ├── README.md
|
||||
│ ├── sujets/
|
||||
│ │ ├── tokenizer.md
|
||||
│ │ ├── originaux/tokenizer_subject.pdf
|
||||
│ │ └── captures/page-01.png … page-10.png
|
||||
│ └── pedagogie/
|
||||
│ ├── README.md
|
||||
│ ├── 00-reprise-et-etat.md ← ce fichier
|
||||
│ ├── 01-apports-pedagogiques.md
|
||||
│ └── guide-realisation.md
|
||||
└── tokenizerRendu/ ← futur dépôt ÉCOLE (racine Vogosphere)
|
||||
├── README.md
|
||||
├── code/
|
||||
├── deployment/
|
||||
└── documentation/
|
||||
```
|
||||
|
||||
## Décisions à prendre (non figées)
|
||||
|
||||
| Sujet | Options | Recommandation doc |
|
||||
|-------|---------|-------------------|
|
||||
| Chaîne | BSC testnet, Sepolia, autre EVM | **BSC testnet** (partenariat BNB, faucet tBNB) |
|
||||
| Toolchain | Hardhat, Foundry, Remix seul | **Hardhat** pour scripts reproductibles dans `deployment/` |
|
||||
| Lib | OpenZeppelin ERC20 → BEP-20 | **OpenZeppelin** pour ownership et standard éprouvé |
|
||||
| Nom / symbole | Doit contenir `42` | Ex. nom `Token42School`, symbole `TK42` — à valider perso |
|
||||
| Bonus multisig | Gnosis Safe, contrat custom | Seulement après obligatoire **parfaite** |
|
||||
|
||||
## Avancement par étape
|
||||
|
||||
| Étape | Contenu | Statut |
|
||||
|-------|---------|--------|
|
||||
| **0** | Structure, traduction, séparation travail / école | ✅ **Terminé** |
|
||||
| **1** | Choix stack + init projet dans `code/` | ⏳ |
|
||||
| **2** | Contrat token + tests locaux | ⏳ |
|
||||
| **3** | Déploiement + verify + adresse dans README | ⏳ |
|
||||
| **4** | `documentation/` + démo soutenance | ⏳ |
|
||||
| **5** | Rendu Vogosphere + partage Git perso (recommandé) | ⏳ |
|
||||
| **6** | Bonus multisig | ⏳ |
|
||||
|
||||
## Reprendre le travail (checklist)
|
||||
|
||||
1. Ouvrir le dépôt : `~/projets/42School/tokenizer`
|
||||
2. Relire la [partie obligatoire](../sujets/tokenizer.md#chapitre-iv--partie-obligatoire)
|
||||
3. Suivre [guide-realisation.md](guide-realisation.md) depuis l’étape en cours
|
||||
4. Ne committer **aucune clé privée** — `.env` local uniquement (voir `.gitignore` rendu)
|
||||
5. Après déploiement : mettre à jour **ce fichier** + `tokenizerRendu/README.md` avec adresse et réseau
|
||||
|
||||
## Fichiers à renseigner après le code
|
||||
|
||||
| Fichier | Quand |
|
||||
|---------|--------|
|
||||
| `tokenizerRendu/README.md` | Choix techniques + adresse contrat + réseau |
|
||||
| `tokenizerRendu/deployment/` | Scripts et éventuellement `deployed.json` |
|
||||
| `tokenizerRendu/documentation/` | Guide d’usage du token |
|
||||
| Ce fichier | À chaque jalon important |
|
||||
86
docs/pedagogie/01-apports-pedagogiques.md
Normal file
86
docs/pedagogie/01-apports-pedagogiques.md
Normal file
@@ -0,0 +1,86 @@
|
||||
# Ce que le projet Tokenizer t’apporte
|
||||
|
||||
> Lecture **pédagogique** — hors rendu école. Le correcteur évalue le dépôt Vogosphere (`tokenizerRendu/`), pas ce dossier.
|
||||
|
||||
## En une phrase
|
||||
|
||||
Tu passes de « j’ai entendu parler de la blockchain » à « j’ai **déployé**, **documenté** et **défendu** un actif numérique sur une chaîne publique, en maîtrisant au minimum la **sécurité d’ownership** et les **standards de tokens** ».
|
||||
|
||||
## Compétences techniques
|
||||
|
||||
### 1. Smart contracts et langage de chaîne
|
||||
|
||||
- Écrire ou adapter un contrat (**Solidity** si tu suis BSC/ETH) qui respecte une **interface standard** (BEP-20 / ERC-20).
|
||||
- Comprendre ce que fait chaque fonction publique : `transfer`, `approve`, `allowance`, éventuellement `mint` / `burn`.
|
||||
- Lire une **revue de code** en soutenance : noms explicites, commentaires sur les choix de sécurité, pas de « magie » copiée sans comprendre.
|
||||
|
||||
**Pourquoi c’est utile :** l’écosystème Web3 recrute sur la capacité à livrer du code **auditable** ; ce projet reproduit une mini-livraison réelle (code + deploy + doc).
|
||||
|
||||
### 2. Toolchain et reproductibilité
|
||||
|
||||
- Utiliser **Hardhat**, **Truffle** ou **Remix** de façon cohérente : compilation, réseaux, scripts de déploiement.
|
||||
- Séparer **`code/`** (source) et **`deployment/`** (procédure) comme demandé — même logique qu’en entreprise (CI/CD, infra).
|
||||
|
||||
**Pourquoi c’est utile :** un token déployé « à la main une fois » sans script est difficile à maintenir ; le sujet t’entraîne à penser **reproductibilité**.
|
||||
|
||||
### 3. Réseaux publics et explorateurs
|
||||
|
||||
- Différence **mainnet** / **testnet**, **gas**, **adresse de contrat**, **vérification** sur BscScan ou équivalent.
|
||||
- Obtenir des fonds de test via un **faucet** — flux standard pour tout développeur blockchain.
|
||||
|
||||
**Pourquoi c’est utile :** tu sais **prouver** on-chain que ton contrat existe et correspond au code (verify + lecture explorer).
|
||||
|
||||
### 4. Sécurité appliquée (obligatoire au sujet)
|
||||
|
||||
- **Ownership** : qui peut changer les règles du jeu ?
|
||||
- **Privilèges** : mint illimité, pause, blacklist — chaque pouvoir doit être **justifié** dans le README et la doc.
|
||||
- Préparer une **démo minimale** qui montre les cas normaux **et** ce qui est interdit (ex. un compte non-owner ne peut pas mint).
|
||||
|
||||
**Pourquoi c’est utile :** la majorité des incidents Web3 viennent de contrats mal conçus ; ce projet t’oblige à en parler à l’oral.
|
||||
|
||||
### 5. Documentation produit
|
||||
|
||||
- Deux niveaux distincts :
|
||||
- **README école** : choix d’architecture et métadonnées de déploiement ;
|
||||
- **`documentation/`** : comment **utiliser** le token (wallet, ajout du token, transfert, rôle du token dans ton « produit »).
|
||||
- Option whitepaper : formaliser **à quoi sert** le token (même fictif).
|
||||
|
||||
**Pourquoi c’est utile :** un développeur blockchain est aussi **rédacteur** pour utilisateurs et auditeurs.
|
||||
|
||||
## Compétences transverses 42
|
||||
|
||||
| Compétence | Comment le projet la travaille |
|
||||
|------------|--------------------------------|
|
||||
| **Autonomie** | Peu de garde-fous : tu choisis la stack (dans les contraintes) |
|
||||
| **Rigueur** | Arborescence imposée, eval = code review |
|
||||
| **Communication** | README argumenté, soutenance avec démo |
|
||||
| **Éthique** | Pas d’argent réel ; nom du token sans insultes ; honnêteté sur les limites du testnet |
|
||||
|
||||
## Lien avec le partenariat BNB Chain
|
||||
|
||||
Le sujet n’impose pas BSC en toutes lettres, mais le **préambule BNB** et le **faucet tBNB** orientent vers cet écosystème :
|
||||
|
||||
- Volume et adoption réels (contexte donné dans le PDF).
|
||||
- Standard **BEP-20** aligné sur l’industrie (compatible mental model ERC-20).
|
||||
- Passerelle vers d’autres projets Web3 42 ou perso (DApp, ponts, etc.).
|
||||
|
||||
## Bonus multisig — apports supplémentaires
|
||||
|
||||
Si la partie obligatoire est **parfaite**, le multisig ajoute :
|
||||
|
||||
- Modèle **seuil de confiance** (m-of-n signatures).
|
||||
- Réflexion sur **gouvernance** et **opérations** (qui détient les clés en test ?).
|
||||
|
||||
## Ce que ce projet n’est pas
|
||||
|
||||
- Ce n’est **pas** un cours de trading ni une incitation à investir.
|
||||
- Ce n’est **pas** une validation de « crypto » en général — c’est un exercice **d’ingénierie** sur registre distribué.
|
||||
- Une vidéo démo **ne remplace pas** une doc écrite ni une démo live en soutenance.
|
||||
|
||||
## Suite naturelle après Tokenizer
|
||||
|
||||
- Auditer un contrat existant (lecture seule sur explorer).
|
||||
- Front minimal (Web3.js / ethers) qui appelle ton token.
|
||||
- Modules 42 ou projets perso : NFT (ERC-721), gouvernance, indexation (The Graph).
|
||||
|
||||
→ Retour au plan : [README.md](README.md) · Guide technique : [guide-realisation.md](guide-realisation.md)
|
||||
50
docs/pedagogie/README.md
Normal file
50
docs/pedagogie/README.md
Normal file
@@ -0,0 +1,50 @@
|
||||
# Pédagogie — Tokenizer
|
||||
|
||||
Parcours pour construire le projet **étape par étape** et le défendre en soutenance.
|
||||
|
||||
## Reprise rapide
|
||||
|
||||
→ **[00-reprise-et-etat.md](00-reprise-et-etat.md)** — état du projet, décisions, prochaine action.
|
||||
|
||||
→ **[guide-realisation.md](guide-realisation.md)** — **guide dev** détaillé (choix techniques, sécurité, déploiement, démo).
|
||||
|
||||
→ **[01-apports-pedagogiques.md](01-apports-pedagogiques.md)** — **ce que ce projet t’apporte** (compétences, concepts).
|
||||
|
||||
## Prérequis suggérés
|
||||
|
||||
| Domaine | Niveau attendu |
|
||||
|---------|----------------|
|
||||
| Git | Dépôt structuré, README, pas de secrets commités |
|
||||
| Ligne de commande | npm ou équivalent, variables d’environnement |
|
||||
| Programmation | Au moins un langage ; Solidity s’apprend pendant le projet |
|
||||
| 42 | Aucun prérequis Web3 obligatoire — le sujet assume l’apprentissage |
|
||||
|
||||
Ressources externes utiles : [docs Solidity](https://docs.soliditylang.org/), [OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts/), [BscScan Testnet](https://testnet.bscscan.com/).
|
||||
|
||||
## Étapes du projet
|
||||
|
||||
| Étape | Objectif | Statut |
|
||||
|-------|----------|--------|
|
||||
| **0** | Dépôt travail + `docs/`, sujet FR, paquet `tokenizerRendu/` | ✅ **Fait** — [00-reprise-et-etat.md](00-reprise-et-etat.md) |
|
||||
| **1** | Choix chaîne + stack (ex. BSC testnet + Hardhat) + nom token avec `42` | ⏳ À faire |
|
||||
| **2** | Smart contract BEP-20 dans `tokenizerRendu/code/` (ownership, commentaires) | ⏳ À faire |
|
||||
| **3** | Scripts `tokenizerRendu/deployment/` + déploiement testnet + verify explorer | ⏳ À faire |
|
||||
| **4** | `documentation/` utilisateur + README école (adresse, réseau, choix) | ⏳ À faire |
|
||||
| **5** | Scénario de démo minimal + préparation code review | ⏳ À faire |
|
||||
| **6** | Bonus multisig (optionnel) | ⏳ Non commencé |
|
||||
|
||||
README correcteurs (dépôt école) : [tokenizerRendu/README.md](../../tokenizerRendu/README.md)
|
||||
|
||||
## Sujet de référence
|
||||
|
||||
→ [Traduction FR v1.1](../sujets/tokenizer.md) · PDF : [originaux/tokenizer_subject.pdf](../sujets/originaux/tokenizer_subject.pdf)
|
||||
|
||||
## Guides détaillés
|
||||
|
||||
| Fichier | Rôle |
|
||||
|---------|------|
|
||||
| [00-reprise-et-etat.md](00-reprise-et-etat.md) | État, arborescence, reprise |
|
||||
| [01-apports-pedagogiques.md](01-apports-pedagogiques.md) | Valeur pédagogique du projet |
|
||||
| [guide-realisation.md](guide-realisation.md) | Réalisation technique pas à pas |
|
||||
|
||||
Demande dans le chat l’étape à approfondir : le guide pourra être mis à jour au fil du code (fichiers réels, adresses, scripts).
|
||||
210
docs/pedagogie/guide-realisation.md
Normal file
210
docs/pedagogie/guide-realisation.md
Normal file
@@ -0,0 +1,210 @@
|
||||
# Guide de réalisation — Tokenizer
|
||||
|
||||
> **Objectif :** document de travail pour **coder, déployer et défendre** le projet. À mettre à jour quand le code existe (chemins, commandes, adresses).
|
||||
> **Référence sujet :** [tokenizer.md](../sujets/tokenizer.md)
|
||||
|
||||
---
|
||||
|
||||
## Vue d’ensemble du livrable école
|
||||
|
||||
| Élément | Emplacement | Contenu attendu |
|
||||
|---------|-------------|-----------------|
|
||||
| README | `tokenizerRendu/README.md` | Choix + **adresse contrat** + **réseau** |
|
||||
| Source | `tokenizerRendu/code/` | Contrat(s) commentés |
|
||||
| Déploiement | `tokenizerRendu/deployment/` | Scripts, config réseaux, sorties |
|
||||
| Doc utilisateur | `tokenizerRendu/documentation/` | Usage du token, rôle, limites |
|
||||
| Hors dépôt école | `docs/` (ici) | Traduction, pédagogie, ce guide |
|
||||
|
||||
---
|
||||
|
||||
## Étape 1 — Cadrage (avant d’écrire du Solidity)
|
||||
|
||||
### Checklist décisions
|
||||
|
||||
- [ ] Chaîne : **BNB Smart Chain Testnet** (chainId `97`) — ou autre EVM **justifié** dans README
|
||||
- [ ] Nom du token contenant **`42`** (ex. `FortyTwoToken`, `School42Coin`)
|
||||
- [ ] Symbole ticker (ex. `FT42`) — affiché sur l’explorer après déploiement
|
||||
- [ ] Supply initiale, décimales (souvent `18`), droit de **mint** ou supply fixe
|
||||
- [ ] Modèle de ownership : `Ownable` OpenZeppelin recommandé pour la soutenance
|
||||
|
||||
### Comptes et secrets
|
||||
|
||||
1. Wallet de test (MetaMask ou autre) — **jamais** la clé privée du mainnet avec de vrais fonds.
|
||||
2. Faucet : [BNB Chain Testnet Faucet](https://www.bnbchain.org/en/testnet-faucet)
|
||||
3. Fichier `.env` dans `deployment/` ou racine `code/` :
|
||||
|
||||
```env
|
||||
PRIVATE_KEY=0x... # compte TEST uniquement
|
||||
BSC_TESTNET_RPC=https://data-seed-prebsc-1-s1.binance.org:8545/
|
||||
```
|
||||
|
||||
Ajouter `.env` au `.gitignore` (déjà prévu dans le paquet rendu).
|
||||
|
||||
---
|
||||
|
||||
## Étape 2 — Projet `code/`
|
||||
|
||||
### Structure suggérée (Hardhat)
|
||||
|
||||
```
|
||||
tokenizerRendu/code/
|
||||
├── package.json
|
||||
├── hardhat.config.js
|
||||
├── contracts/
|
||||
│ └── Token42.sol # nom à adapter
|
||||
├── test/
|
||||
│ └── Token42.test.js
|
||||
└── README.md # comment compiler / tester localement
|
||||
```
|
||||
|
||||
### Contrat minimal (logique, pas le code final)
|
||||
|
||||
1. Hériter **ERC20** + **Ownable** (OpenZeppelin).
|
||||
2. Constructeur : `name`, `symbol`, supply initiale au déployeur ou `mint` réservé à `owner`.
|
||||
3. Si `mint` : fonction `onlyOwner` — **à expliquer** en README (risque si owner compromis).
|
||||
4. Commentaires en tête de fichier : rôle du token, réseau cible, standard BEP-20.
|
||||
|
||||
### Tests locaux (fortement recommandés avant deploy)
|
||||
|
||||
```bash
|
||||
cd tokenizerRendu/code
|
||||
npm install
|
||||
npx hardhat test
|
||||
```
|
||||
|
||||
Points à couvrir : `transfer`, solde, `onlyOwner` sur fonctions sensibles.
|
||||
|
||||
---
|
||||
|
||||
## Étape 3 — Dossier `deployment/`
|
||||
|
||||
### Contenu type
|
||||
|
||||
```
|
||||
tokenizerRendu/deployment/
|
||||
├── README.md # ordre des commandes
|
||||
├── deploy.js # ou scripts Hardhat dans code/ référencés ici
|
||||
└── addresses.json # adresse + chainId + date (après deploy)
|
||||
```
|
||||
|
||||
### Déploiement (exemple Hardhat)
|
||||
|
||||
Depuis `code/` (selon ton organisation) :
|
||||
|
||||
```bash
|
||||
npx hardhat run scripts/deploy.js --network bscTestnet
|
||||
```
|
||||
|
||||
Enregistrer dans `addresses.json` :
|
||||
|
||||
```json
|
||||
{
|
||||
"network": "bscTestnet",
|
||||
"chainId": 97,
|
||||
"contract": "Token42",
|
||||
"address": "0x...",
|
||||
"explorer": "https://testnet.bscscan.com/address/0x..."
|
||||
}
|
||||
```
|
||||
|
||||
### Vérification sur l’explorer
|
||||
|
||||
- [BscScan Testnet](https://testnet.bscscan.com/) → **Verify and Publish** (flatten ou standard JSON input selon toolchain).
|
||||
- Copier l’URL du contrat dans `tokenizerRendu/README.md`.
|
||||
|
||||
---
|
||||
|
||||
## Étape 4 — `documentation/` (utilisateur)
|
||||
|
||||
Sections recommandées (`documentation/README.md` ou plusieurs fichiers) :
|
||||
|
||||
1. **Qu’est-ce que ce token ?** (cas d’usage fictif ou pédagogique)
|
||||
2. **Réseau et adresse** (lien explorer)
|
||||
3. **Ajouter le token dans un wallet** (contract address, decimals, symbol)
|
||||
4. **Actions supportées** : transfer, approve, etc.
|
||||
5. **Sécurité** : qui est owner, ce qu’il peut faire, ce que les utilisateurs ne peuvent pas faire
|
||||
6. **Limites testnet** : pas de valeur réelle, reset possible des faucets
|
||||
|
||||
Option : `documentation/WHITEPAPER.md` court (1–2 pages).
|
||||
|
||||
---
|
||||
|
||||
## Étape 5 — README école (`tokenizerRendu/README.md`)
|
||||
|
||||
Le sujet exige d’y expliquer les **choix** et **raisons**. Modèle :
|
||||
|
||||
| Section | Contenu |
|
||||
|---------|---------|
|
||||
| Présentation | Nom, symbole, standard BEP-20 |
|
||||
| Chaîne | BSC Testnet, chainId, pourquoi pas mainnet |
|
||||
| Stack | Hardhat, OpenZeppelin, versions |
|
||||
| Sécurité | Ownable, mint ou non, pas de backdoor cachée |
|
||||
| Déploiement | Adresse + lien BscScan |
|
||||
| Démo soutenance | 3–5 actions à montrer (voir ci-dessous) |
|
||||
| Bonus | Si multisig : où est le code, comment tester |
|
||||
|
||||
Mettre à jour le fichier réel dans `tokenizerRendu/` au fil du projet (le squelette actuel liste les sections à compléter).
|
||||
|
||||
---
|
||||
|
||||
## Étape 6 — Scénario de soutenance (démo minimale)
|
||||
|
||||
Préparer un **fil narratif** de 5–10 minutes :
|
||||
|
||||
| # | Action | Preuve |
|
||||
|---|--------|--------|
|
||||
| 1 | Montrer le repo : `code/`, `deployment/`, `documentation/` | `ls` ou IDE |
|
||||
| 2 | Expliquer ownership / privilèges sur le contrat | Code ouvert `Token42.sol` |
|
||||
| 3 | Lire `name`, `symbol`, `totalSupply` sur l’explorer | BscScan |
|
||||
| 4 | `transfer` entre deux comptes test | Explorer « Token transfers » ou wallet |
|
||||
| 5 | Montrer qu’un non-owner **ne peut pas** mint (si applicable) | Transaction revert ou test Hardhat |
|
||||
| 6 | Bonus multisig | Seulement si obligatoire parfaite |
|
||||
|
||||
Pas de vidéo obligatoire ; si lien vidéo : une ligne dans README.
|
||||
|
||||
---
|
||||
|
||||
## Étape 7 — Code review (ce que l’évaluateur peut demander)
|
||||
|
||||
- Pourquoi OpenZeppelin plutôt qu’un ERC20 from scratch ?
|
||||
- Où est le risque principal de ton design (owner, mint) ?
|
||||
- Comment quelqu’un utilise ton token sans ton aide ?
|
||||
- Différence entre ton `documentation/` et le README racine ?
|
||||
- Confirmation : **aucune clé privée** dans Git ?
|
||||
|
||||
---
|
||||
|
||||
## Étape 8 — Bonus multisig (après obligatoire parfaite)
|
||||
|
||||
Pistes :
|
||||
|
||||
- Contrat wallet multisig simple (m-of-n) qui détient l’ownership du token.
|
||||
- Ou contrat qui exige N signatures pour `mint` / transfert sortant d’un trésor.
|
||||
|
||||
Documenter dans `documentation/` et README : nombre de signataires, adresses de test, procédure de signature.
|
||||
|
||||
---
|
||||
|
||||
## Dépannage (à enrichir pendant le dev)
|
||||
|
||||
| Problème | Piste |
|
||||
|----------|--------|
|
||||
| Faucet vide / rate limit | Réessayer plus tard, autre compte test |
|
||||
| Transaction underpriced | Ajuster gas sur BSC testnet |
|
||||
| Verify échoue | Vérifier version compilateur et settings Hardhat |
|
||||
| Token invisible dans wallet | Ajouter manuellement par adresse de contrat |
|
||||
|
||||
---
|
||||
|
||||
## Cartographie sujet ↔ dossiers (rappel)
|
||||
|
||||
| Exigence sujet | Dossier / fichier |
|
||||
|----------------|-------------------|
|
||||
| Code commenté | `code/` |
|
||||
| Déploiement | `deployment/` |
|
||||
| Doc projet token | `documentation/` |
|
||||
| Choix + adresse + réseau | `README.md` racine rendu |
|
||||
| Revue de code | `code/` |
|
||||
| Démo sécurité | soutenance + éventuellement tests |
|
||||
|
||||
→ État du projet : [00-reprise-et-etat.md](00-reprise-et-etat.md)
|
||||
Reference in New Issue
Block a user