From 624a44bffd08b73033c3567ef7082b8b3636d7f7 Mon Sep 17 00:00:00 2001 From: Ladebeze66 Date: Thu, 22 Oct 2026 11:09:29 +0200 Subject: [PATCH] fichesoutenance --- docs/pedagogie/fiche-soutenance-tokenizer.md | 127 +++++++++++++++++++ docs/pedagogie/sujet-exigences-rendu.md | 122 ++++++++++++++++++ 2 files changed, 249 insertions(+) create mode 100644 docs/pedagogie/fiche-soutenance-tokenizer.md create mode 100644 docs/pedagogie/sujet-exigences-rendu.md diff --git a/docs/pedagogie/fiche-soutenance-tokenizer.md b/docs/pedagogie/fiche-soutenance-tokenizer.md new file mode 100644 index 0000000..9647347 --- /dev/null +++ b/docs/pedagogie/fiche-soutenance-tokenizer.md @@ -0,0 +1,127 @@ +# Fiche de soutenance — Tokenizer (FGC42Forge) + +> **Usage :** préparation orale + code review. Fichier **hors rendu** (`docs/pedagogie/`). +> **Grille sujet :** [`sujet-exigences-rendu.md`](sujet-exigences-rendu.md) (PDF v1.1, ch. IV–VI). + +--- + +## 1. Pitch (30–45 s) + +- Projet **Tokenizer** : token **BEP-20** sur **BSC Testnet**, nom **FGC42Forge**, symbole **FG42**, supply **1 000 000** mintée une fois au déploiement. +- Stack : **Solidity** + **OpenZeppelin** (`ERC20`, `Ownable`) + **Hardhat 3** + **Ignition**. +- Déployé et vérifié sur **BscScan** ; démo **transfer** entre deux wallets test. +- Bonus **multisig** non retenu (priorité obligatoire + simplicité ownership). + +--- + +## 2. Carte du dépôt école (`tokenizerRendu/`) + +| Chemin | Rôle (sujet) | +|--------|----------------| +| `README.md` | Choix techniques + **pourquoi** + adresse + réseau + explorer | +| `code/` | Source commenté, tests, Hardhat | +| `code/contracts/FGC42Forge.sol` | Contrat token — **cœur code review** | +| `deployment/` | Adresses, flatten, guide vérif BscScan | +| `documentation/README.md` | **Utilisateur** : qu’est-ce que FG42, comment l’utiliser | + +**Ne pas montrer** au correcteur comme partie du rendu : `docs/`, `tokenizerRendu/../docs/pedagogie`. + +--- + +## 3. Chiffres à avoir en tête (sans lire l’écran) + +| Élément | Valeur | +|---------|--------| +| Réseau | BSC Testnet, **chainId 97** | +| Contrat | `0x0c76df26A1149fDc22C8f994975705271b070fF4` | +| Wallet déploiement / owner | `0xB6bE…603c` (FGC_account — avoir l’adresse complète sous les yeux) | +| Supply | 1 000 000 × 10¹⁸ unités (18 décimales OZ) | +| Tests | `npx hardhat test` — 2 tests FGC42Forge | + +--- + +## 4. Déroulé oral suggéré (~10–15 min selon école) + +| Étape | Contenu | Lien exigence sujet | +|-------|---------|---------------------| +| 1 | Contexte Web3 + BNB Chain testnet, pas d’argent réel | T4, T6 | +| 2 | README : pourquoi BSC, OZ, supply fixe, pas de mint public | T5, T12 | +| 3 | `documentation/` : cas d’usage, limites, import MetaMask | T17–T19 | +| 4 | BscScan : contrat vérifié, token, une tx `transfer` | T11, T15–T16 | +| 5 | Démo live ou replay : transfer 100 FG42 | T11 | +| 6 | **Code review** `FGC42Forge.sol` | T9–T10 | +| 7 | `deployment/` : comment reproduire le deploy (sans exposer clé) | T13–T14 | +| 8 | Bonus : pourquoi pas multisig | Ch. V (choix assumé) | + +--- + +## 5. Code review — points à expliquer ligne par ligne (conceptuel) + +1. **`import ERC20, Ownable`** — standard BEP-20 / ERC-20, pas de réinvention. +2. **Constructeur** : `_mint(msg.sender, …)` une fois → supply initiale ; `msg.sender` = deployer = owner. +3. **Pas de `mint()` public** — seul le design « supply fixe » ; owner ne mint pas après (à confirmer dans le fichier). +4. **`Ownable`** — qui peut `transferOwnership` ; pas de pause si non implémentée. +5. **Tests** : supply, transfer, éventuellement owner — preuve locale avant deploy. + +*(Relire le contrat la veille ; adapter cette liste au code exact.)* + +--- + +## 6. Sécurité (obligatoire sujet — réponses courtes) + +| Question évaluateur | Réponse type | +|---------------------|--------------| +| Qui peut créer des tokens après deploy ? | Personne ; supply fixée au constructeur. | +| Risque si clé owner compromise ? | Ownership OZ : transfert de propriété possible ; pas de mint dans notre design. | +| Pourquoi testnet ? | Sujet : pas d’argent réel ; faucet tBNB. | +| Pourquoi OpenZeppelin ? | Bibliothèque auditée, conformité ERC-20. | + +--- + +## 7. Stack, outils, alternatives (README « pourquoi ») + +| Choix | Pourquoi | Alternative citée au sujet | +|-------|----------|----------------------------| +| BSC Testnet | Partenaire BNB, BEP-20, faucet | Ethereum testnet + ERC-20 | +| Hardhat 3 | Tests, compile, Ignition | Remix, Truffle | +| Ignition | Deploy reproductible | Script deploy manuel | +| `.env` + `.env.example` | Clé hors Git | — | +| Flatten + BscScan | Lisibilité évaluateur | Optionnel mais fait | + +--- + +## 8. Commandes utiles (machine école) + +```bash +cd code +npm ci # ou npm install +cp .env.example .env # renseigner PRIVATE_KEY 64 hex — jamais commit +npx hardhat test +npx hardhat ignition deploy ignition/modules/FGC42Forge.ts --network bscTestnet +``` + +--- + +## 9. Git / Vogosphere (rappel) + +- **Racine du repo école** = contenu de `tokenizerRendu/` (souvent `git init` dans ce dossier ou branche dédiée). +- `.gitignore` : `.env`, `node_modules`, `cache`, `artifacts`. +- **Seul le dépôt poussé** compte (ch. VI). + +--- + +## 10. Auto-contrôle avant soutenance + +Repasser la colonne « Projet » dans [`sujet-exigences-rendu.md`](sujet-exigences-rendu.md) (T1–T19). + +- [ ] README rendu **autonome** (pas de lien vers `docs/pedagogie`) +- [ ] `documentation/README.md` sans référence au dépôt perso `docs/` (optionnel à nettoyer) +- [ ] Adresse + réseau visibles sans chercher +- [ ] Démo transfer reproductible +- [ ] 2 phrases sur ch. III (compétences acquises) + +--- + +## 11. Si on te demande « qu’est-ce qui manquerait pour le bonus ? » + +Multisig (ex. Gnosis Safe ou contrat custom) sur actions sensibles ; **m** signatures sur **n** signataires ; extension cohérente avec le token — **seulement** si obligatoire jugée parfaite. diff --git a/docs/pedagogie/sujet-exigences-rendu.md b/docs/pedagogie/sujet-exigences-rendu.md new file mode 100644 index 0000000..d9b0be5 --- /dev/null +++ b/docs/pedagogie/sujet-exigences-rendu.md @@ -0,0 +1,122 @@ +# Exigences du sujet Tokenizer (v1.1) — grille de conformité rendu + +> Source officielle : [`docs/sujets/originaux/tokenizer_subject.pdf`](../sujets/originaux/tokenizer_subject.pdf) +> Traduction structurée : [`docs/sujets/tokenizer.md`](../sujets/tokenizer.md) +> **Dépôt évalué** : racine Vogosphere = contenu de **`tokenizerRendu/`** (pas le dépôt de travail `tokenizer/` avec `docs/`). + +--- + +## Chapitre VI — Règle d’or + +| Règle | Implication | +|-------|-------------| +| Dépôt Git habituel | Push sur Vogosphere ; **seul le contenu du dépôt** est noté | +| Noms dossiers / fichiers | Respecter l’exemple ou un nom **explicite** justifiable à l’oral | +| Git perso `#web3` | **Recommandé en plus**, pas en remplacement du rendu école | + +--- + +## Arborescence obligatoire (PDF p.7) + +``` +README.md ← racine du dépôt ÉCOLE +code/ +deployment/ ← nom d’exemple ; autre nom OK si clair en soutenance +documentation/ +``` + +**Hors sujet dans le rendu :** dossier `docs/` perso, PDF sujet traduit, checklist perso — à garder dans le dépôt de **travail** uniquement. + +--- + +## Tableau des exigences — partie obligatoire (ch. IV) + +| # | Exigence (sujet) | Critère de validation | Projet FGC42Forge | +|---|------------------|----------------------|-------------------| +| **T1** | Nom du token contient **`42`** | `name()` on-chain ou nom documenté | ✅ `FGC42Forge` | +| **T2** | Pas d’insultes dans le nom | — | ✅ | +| **T3** | Standard de la chaîne | BEP-20 si BSC | ✅ OpenZeppelin ERC20 sur BSC Testnet | +| **T4** | **Pas d’argent réel** | Testnet + doc | ✅ tBNB, pas de mainnet requis | +| **T5** | **`README.md` racine** : choix + **pourquoi** | Section explicite technologies / chaîne / modèle | ✅ `tokenizerRendu/README.md` (choix techniques) | +| **T6** | Blockchain qui supporte les tokens | EVM / smart contracts | ✅ BNB Smart Chain | +| **T7** | Maîtrise langage + toolchain | Solidity + Hardhat (ou équivalent cité) | ✅ Solidity 0.8.34 + Hardhat 3 | +| **T8** | Dossier **`code/`** à la racine | Présent | ✅ | +| **T9** | Code **commenté**, noms **lisibles** | Revue en eval | ✅ `FGC42Forge.sol` + index `code/README.md` | +| **T10** | **Code review** en soutenance | Savoir expliquer le contrat | À préparer (fiche soutenance) | +| **T11** | **Démo minimale** : token fonctionne | `name`, `symbol`, `totalSupply`, `transfer` ; explorer | ✅ tests + MetaMask + BscScan | +| **T12** | **Sécurité** : ownership, privilèges | Expliquer owner, mint, pause, etc. | ✅ Ownable, pas de mint public ; à verbaliser | +| **T13** | Dossier **`deployment/`** (ou équivalent) | Scripts / infos deploy | ✅ | +| **T14** | Deploy **blockchain publique** | Testnet public OK | ✅ BSC Testnet | +| **T15** | **Ticker** + contrat sur **explorateur** | Symbole + adresse visible | ✅ FG42 + BscScan | +| **T16** | Git : **adresse contrat** + **réseau** | README ou deployment | ✅ README + `addresses.json` | +| **T17** | Dossier **`documentation/`** | Comprendre + **utiliser** le token | ✅ | +| **T18** | Doc **claire**, relue en eval | Guide utilisateur autonome | ✅ | +| **T19** | Whitepaper léger (envisagé) | Rôle, limites — pas toujours fichier séparé | ✅ intégré dans `documentation/README.md` | + +--- + +## Ce qui n’est **pas** obligatoire (éviter de sur-investir) + +| Élément | Sujet | +|---------|--------| +| **Vidéo démo** | Optionnelle ; **ne change pas la note** ; lien seulement si faite | +| **Bonus multisig** | Ch. V ; **non noté** si obligatoire imparfaite ; tu as **abandonné** → OK | +| **Mint public en démo** | « Éventuellement mint **si prévu** » — pas requis si supply fixe documentée | +| **Vérification BscScan** | Non écrit mot pour mot ; **fortement recommandé** (preuve + code review) — ✅ fait | +| **NFT / ERC-721** | Hors token fongible type 20 | +| **Compte Binance** | Non requis ; wallet + faucet suffisent | + +--- + +## Chapitre V — Bonus (référence) + +| Règle | Conséquence | +|-------|-------------| +| Multisig (contrat ou extension) | Seuils m-of-n, qui signe | +| Obligatoire **PARFAITE** | Sinon bonus ignoré | + +**Ton choix :** bonus non implémenté — indiqué dans `tokenizerRendu/README.md`. + +--- + +## Objectifs pédagogiques (ch. III) — à mentionner à l’oral + +- Maîtrise d’**au moins un langage** chaîne (Solidity). +- Familiarité **blockchain publique** (réseau, explorer, adresses, txs). +- Capacité d’**adaptation** (apprentissage Web3). + +--- + +## Erreurs fréquentes à éviter (checklist anti-échec) + +| Erreur | Risque | +|--------|--------| +| Dépôt racine = `tokenizer/` avec `docs/` au lieu de `tokenizerRendu/` seul | Structure hors sujet | +| Pas d’adresse / réseau dans Git | T16 manquant | +| `documentation/` = copie de la doc dev ou liens vers `docs/pedagogie` | Évaluateur perdu ; fuite hors rendu | +| Clé privée / `.env` commité | Sécurité + disqualification possible | +| Nom sans `42` | T1 | +| Mainnet / vrai BNB obligatoire | T4 | +| Token non déployé sur chaîne publique | T14 | +| Code non commenté / illisible en review | T9–T10 | +| README sans **pourquoi** (liste d’outils seule) | T5 | +| Compter sur la vidéo pour la note | Inutile pour la note | +| Présenter le bonus sans obligatoire parfaite | Règle ch. V | + +--- + +## Démo minimale — script aligné sujet (ch. IV + éclaircissements) + +1. **Explorer** : adresse contrat + page **token** (symbole, supply). +2. **Lecture** : `name`, `symbol`, `totalSupply` (BscScan ou wallet). +3. **`transfer`** entre deux comptes test (MetaMask). +4. **Sécurité** : qui est `owner` ; **pas** de mint après deploy ; pas de privilèges cachés. +5. **`documentation/`** : montrer qu’un tiers peut importer FG42 et transférer. +6. **`code/`** : ouvrir `FGC42Forge.sol` (revue de code courte). + +--- + +## Prochaine étape doc perso + +→ Fiche de soutenance détaillée : [`fiche-soutenance-tokenizer.md`](fiche-soutenance-tokenizer.md) +→ Audit rendu avant push : voir plan dans le chat (README rendu sans liens `docs/`).