# 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.