diff --git a/docs/pedagogie/README.md b/docs/pedagogie/README.md index 5f94cfc..0dd52ad 100644 --- a/docs/pedagogie/README.md +++ b/docs/pedagogie/README.md @@ -12,6 +12,8 @@ Parcours pour construire le projet **étape par étape** et le défendre en sout → **[decisions-projet.md](decisions-projet.md)** — choix token / chaîne / wallet (**travail**, pas rendu école). +→ **[checklist-demo-evaluation.md](checklist-demo-evaluation.md)** — **checklist démo / correction** (hors dépôt Vogosphere). + → **[03-hardhat-et-alternatives.md](03-hardhat-et-alternatives.md)** — **Hardhat**, Remix, Truffle, Foundry (sujet ch. IV). → **[ressources-solidity-hardhat.md](ressources-solidity-hardhat.md)** — **tutos & docs officiels** Solidity, Hardhat, OpenZeppelin, BSC (parcours d’apprentissage). diff --git a/docs/pedagogie/checklist-demo-evaluation.md b/docs/pedagogie/checklist-demo-evaluation.md new file mode 100644 index 0000000..05bd7b4 --- /dev/null +++ b/docs/pedagogie/checklist-demo-evaluation.md @@ -0,0 +1,68 @@ +# Checklist — démo et correction Tokenizer + +> **Dépôt de travail** (`docs/`) — ne pas confondre avec `tokenizerRendu/` (Vogosphere). +> À utiliser **avant** la soutenance : tout doit fonctionner sans improviser. + +**Références rendu :** adresse et vérif → [`tokenizerRendu/deployment/addresses.json`](../../tokenizerRendu/deployment/addresses.json) · [`BSCSCAN_VERIFICATION.md`](../../tokenizerRendu/deployment/BSCSCAN_VERIFICATION.md) · doc utilisateur → [`tokenizerRendu/documentation/README.md`](../../tokenizerRendu/documentation/README.md) + +--- + +## A. Matériel prêt (la veille) + +| # | Action | Fait | +|---|--------|------| +| A1 | MetaMask : réseau **BNB Smart Chain Testnet** (chainId **97**) | ☐ | +| A2 | Compte **FGC_account** : tBNB (gas) + solde **FG42** (token importé) | ☐ | +| A3 | Compte **demo_account** (ou 2ᵉ compte) : token FG42 importé (`0x0c76…0fF4`) | ☐ | +| A4 | Onglets navigateur : [contrat #code](https://testnet.bscscan.com/address/0x0c76df26A1149fDc22C8f994975705271b070fF4#code) · [token](https://testnet.bscscan.com/token/0x0c76df26A1149fDc22C8f994975705271b070fF4) · README rendu local | ☐ | +| A5 | `cd tokenizerRendu/code && npx hardhat test mocha --grep FGC42Forge` → **2 passing** | ☐ | +| A6 | Aucune clé privée à l’écran / dans le dépôt Git | ☐ | + +--- + +## B. Déroulé suggéré (5–10 min) + +| Étape | Tu montres | Tu dis (idée) | +|-------|------------|----------------| +| **B1** | `tokenizerRendu/README.md` | Token **FGC42Forge / FG42**, BSC testnet, adresse, lien doc utilisateur | +| **B2** | BscScan **token** : supply **1M**, transfers | Jeton **BEP-20** ; supply fixe au deploy | +| **B3** | BscScan **Contract** (vérifié) | Source = dépôt ; fiche [`BSCSCAN_VERIFICATION.md`](../../tokenizerRendu/deployment/BSCSCAN_VERIFICATION.md) si questions compilateur | +| **B4** | MetaMask **FGC_account** → transfer **100 FG42** → **demo_account** | `transfer` ERC-20 ; gas en **tBNB** | +| **B5** | BscScan transfers + solde **demo_account** | Preuve on-chain | +| **B6** | `documentation/README.md` | Un évaluateur peut importer le token et transférer sans ton aide | +| **B7** | (Optionnel) `code/contracts/FGC42Forge.sol` | OpenZeppelin **ERC20 + Ownable** ; `_mint` **uniquement** au constructeur — **pas de mint** public | +| **B8** | (Optionnel) `npx hardhat test` | Tests automatisés avant deploy | + +--- + +## C. Questions fréquentes — réponses courtes + +| Question | Réponse | +|----------|---------| +| ERC-20 ou BEP-20 ? | **BEP-20** sur BSC ; code **OpenZeppelin ERC20** (même interface EVM). | +| Peut-on mint encore des FG42 ? | **Non** : pas de fonction `mint` publique ; supply **1 000 000** au deploy. | +| Rôle de `owner` ? | Admin **Ownable** ; pas de création de jetons dans ce contrat. | +| Pourquoi BSC testnet ? | Partenaire sujet, tBNB, BscScan ; pas d’argent réel. | +| Pourquoi Hardhat ? | Compile, tests, deploy reproductible (`deployment/`, Ignition). | + +--- + +## D. Bonus multisig + +| # | Action | Fait | +|---|--------|------| +| D1 | Partie **obligatoire** parfaite avant de présenter le bonus | ☐ | +| D2 | Savoir **où** est le code bonus et **comment** le tester (à remplir si implémenté) | ☐ | + +--- + +## E. Après la session + +| # | Action | +|---|--------| +| E1 | Noter questions de l’éval pour améliorer README / doc si besoin | +| E2 | Vérifier que le dépôt Vogosphere (`tokenizerRendu/`) est à jour avant push final | + +--- + +*Dernière mise à jour : 2026-10-20 — adresse contrat FGC42Forge testnet.* diff --git a/docs/pedagogie/etapes/etape-04-deploy-testnet.md b/docs/pedagogie/etapes/etape-04-deploy-testnet.md index 8a7d267..04f0cff 100644 --- a/docs/pedagogie/etapes/etape-04-deploy-testnet.md +++ b/docs/pedagogie/etapes/etape-04-deploy-testnet.md @@ -55,7 +55,7 @@ npx hardhat ignition deploy --network bscTestnet ignition/modules/FGC42Forge.ts - Ouvrir l’adresse sur https://testnet.bscscan.com/ - Vérifier **nom / symbole** du token si l’explorer les affiche. -- Option **Verify and Publish** : uploader le source (Hardhat artifact / standard JSON). +- Option **Verify and Publish** : publier le **code source** (fichier aplati ou standard JSON). --- diff --git a/docs/pedagogie/parcours-etape-par-etape.md b/docs/pedagogie/parcours-etape-par-etape.md index 0b80abd..2361bb5 100644 --- a/docs/pedagogie/parcours-etape-par-etape.md +++ b/docs/pedagogie/parcours-etape-par-etape.md @@ -21,7 +21,7 @@ | **3** | *(contrat + tests)* | `FGC42Forge.sol` + tests Mocha | ✅ | | **4** | [etapes/etape-04-deploy-testnet.md](etapes/etape-04-deploy-testnet.md) | Dossier `deployment/` + deploy + BscScan | ✅ | | **5** | `tokenizerRendu/documentation/README.md` | Doc utilisateur + choix techniques README | ✅ | -| **6** | *(à venir)* | Démo minimale + préparation code review | ⏳ | +| **6** | [checklist-demo-evaluation.md](checklist-demo-evaluation.md) | Démo minimale + préparation code review | 🔄 | | **7** | *(à venir)* | Bonus multisig (optionnel) | ⏳ | ## Fichier de suivi (travail) diff --git a/docs/pedagogie/ressources-solidity-hardhat.md b/docs/pedagogie/ressources-solidity-hardhat.md index a4e14bb..bc34f70 100644 --- a/docs/pedagogie/ressources-solidity-hardhat.md +++ b/docs/pedagogie/ressources-solidity-hardhat.md @@ -107,7 +107,7 @@ npx hardhat run scripts/deploy.js --network bscTestnet | Ressource | URL | Contenu | |-----------|-----|---------| -| **BscScan — verify** | https://testnet.bscscan.com/verifyContract | Publier le source après deploy | +| **BscScan — verify** | https://testnet.bscscan.com/verifyContract | Publier le **code source** après deploy | | **Hardhat — verify plugin** | https://hardhat.org/hardhat-runner/plugins/nomicfoundation-hardhat-verify | `npx hardhat verify --network bscTestnet ` | | **BNB — faucet** | https://docs.bnbchain.org/bnb-smart-chain/developers/faucet/ | tBNB (tu as déjà utilisé Telegram) | | **Guide réalisation** | [guide-realisation.md](guide-realisation.md) | Étapes deploy du dépôt perso | diff --git a/tokenizerRendu/code/README.md b/tokenizerRendu/code/README.md index d8d81f1..c5b2698 100644 --- a/tokenizerRendu/code/README.md +++ b/tokenizerRendu/code/README.md @@ -8,7 +8,7 @@ Stack : **Solidity**, **Hardhat 3**, **OpenZeppelin**, tests **Mocha + ethers** - **Rendu / soutenance :** token **BEP-20** sur **BNB Smart Chain Testnet** (chainId 97). - **Code :** héritage **OpenZeppelin `ERC20`** — norme EVM identique en pratique ; pas de bibliothèque `BEP20` séparée. -- **Après deploy :** BscScan classera le contrat en **BEP-20** ; le source reste `import {ERC20} from "@openzeppelin/contracts/..."`. +- **Après deploy :** BscScan classera le contrat en **BEP-20** ; le **code source** utilise toujours `import {ERC20} from "@openzeppelin/contracts/..."`. > Le dossier peut encore contenir l’exemple **Counter** (template Hardhat) en attendant nettoyage. diff --git a/tokenizerRendu/deployment/BSCSCAN_VERIFICATION.md b/tokenizerRendu/deployment/BSCSCAN_VERIFICATION.md index bfe3cd6..17551f6 100644 --- a/tokenizerRendu/deployment/BSCSCAN_VERIFICATION.md +++ b/tokenizerRendu/deployment/BSCSCAN_VERIFICATION.md @@ -1,6 +1,8 @@ # Vérification du contrat sur BscScan (testnet) -Fiche **correction / soutenance** : paramètres utilisés pour publier le source et prouver que le bytecode on-chain correspond au dépôt. +Fiche **correction / soutenance** : réglages BscScan utilisés pour **publier le code source** du contrat et obtenir le badge *Verified* — l’explorateur recompile ce code et vérifie qu’il produit le **même bytecode** que celui déjà enregistré à l’adresse sur la chaîne (donc le même programme que dans le dépôt `code/`). + +> **Vocabulaire (français)** : on dit **le code source** (masculin : *le* code) ou **la source** du contrat, pas « le source » (calque de l’anglais *source code*). Le **bytecode**, lui, est le binaire déployé on-chain, illisible sans vérification. ## Statut @@ -20,12 +22,50 @@ Fiche **correction / soutenance** : paramètres utilisés pour publier le source | **Bloc** | `137872368` | | **Deployer** | `0xB6bE1878BfaF1FFC8503E752b1D733Ad7b93603c` | +## Fichier `FGC42Forge_flat.sol` — rôle et génération + +### Pourquoi ce fichier existe + +Dans le dépôt, le token est écrit dans **`code/contracts/FGC42Forge.sol`** avec des **imports** OpenZeppelin (`ERC20`, `Ownable`). Sur disque, le compilateur lit plusieurs fichiers. + +BscScan, en mode **« Solidity (Single file) »**, attend **un seul fichier texte** contenant **tout** le code compilé ensemble (ton contrat **et** les bibliothèques). Ce n’est **pas** le bytecode : c’est le **source Solidity fusionné**, utilisé par l’explorateur pour recompiler et comparer au bytecode déjà déployé sur la chaîne. + +| Fichier | Rôle | +|---------|------| +| `code/contracts/FGC42Forge.sol` | Source **maintenu** dans le projet (lisible, versionné). | +| [`FGC42Forge_flat.sol`](FGC42Forge_flat.sol) | **Copie de travail** pour BscScan : même logique, **aplati** (~740 lignes). Utile en correction pour refaire une vérif sans recopier à la main les imports OZ. | + +Le contrat **on-chain** ne change pas quand tu génères ou modifies ce fichier : seule la **publication du code source** sur BscScan s’en sert. + +### Commande utilisée pour le générer + +À lancer depuis la racine du dépôt école (chemins relatifs au dossier `tokenizerRendu/`) : + +```bash +cd code +npx hardhat flatten contracts/FGC42Forge.sol > ../deployment/FGC42Forge_flat.sol +``` + +| Partie | Signification | +|--------|----------------| +| `cd code` | Hardhat lit `hardhat.config.ts` et `node_modules` dans **`tokenizerRendu/code/`**. | +| `npx hardhat flatten` | Tâche Hardhat qui **fusionne** un contrat et toutes ses dépendances Solidity en **un seul** flux de texte. | +| `contracts/FGC42Forge.sol` | Point d’entrée : le fichier de ton token (pas Counter). | +| `>` | Redirection : écrit la sortie dans un fichier au lieu de l’afficher dans le terminal. | +| `../deployment/FGC42Forge_flat.sol` | Fichier de sortie dans **`deployment/`** (à côté de cette fiche). | + +**Vérification rapide :** ouvrir `FGC42Forge_flat.sol` — les premières lignes mentionnent `Sources flattened with hardhat` ; plus bas, tu dois retrouver `contract FGC42Forge`. + +**Quand régénérer :** si tu modifies `FGC42Forge.sol` ou la version OpenZeppelin, puis redéploies ou refais une vérif BscScan — regénère le `.flat.sol` avant de le coller sur l’explorateur. + +--- + ## Paramètres BscScan « Verify & Publish » (succès) | Paramètre | Valeur retenue | |-----------|----------------| | **Méthode** | Solidity (**Single file**) | -| **Fichier source collé** | [`FGC42Forge_flat.sol`](FGC42Forge_flat.sol) (généré via `npx hardhat flatten contracts/FGC42Forge.sol`) | +| **Fichier source collé** | Contenu intégral de [`FGC42Forge_flat.sol`](FGC42Forge_flat.sol) (voir section ci-dessus) | | **Nom du contrat** | `FGC42Forge` | | **Compilateur (liste BscScan)** | `v0.8.24+commit.89d56535` *(valeur affichée par BscScan après vérif réussie)* | | **Optimisation** | **Activée** (`Yes` / `1`) | @@ -40,9 +80,11 @@ Fiche **correction / soutenance** : paramètres utilisés pour publier le source - Contrat vérifié : https://testnet.bscscan.com/address/0x0c76df26A1149fDc22C8f994975705271b070fF4#code - Token FG42 : https://testnet.bscscan.com/token/0x0c76df26A1149fDc22C8f994975705271b070fF4 -## Régénérer le fichier aplati +## Rappel — régénérer le fichier aplati ```bash -cd tokenizerRendu/code +cd code npx hardhat flatten contracts/FGC42Forge.sol > ../deployment/FGC42Forge_flat.sol ``` + +*(Depuis `tokenizerRendu/` ; si tu es à la racine du dépôt de travail, préfixe par `tokenizerRendu/`.)* diff --git a/tokenizerRendu/deployment/README.md b/tokenizerRendu/deployment/README.md index 43a5631..f81d4ea 100644 --- a/tokenizerRendu/deployment/README.md +++ b/tokenizerRendu/deployment/README.md @@ -26,7 +26,7 @@ Hardhat peut afficher une estimation de gas et demander une confirmation. 1. Copier `addresses.json.example` → **`addresses.json`** et remplir `address`, `deployer`, `deployedAt`, `explorer`. 2. Ouvrir l’URL **BscScan** testnet et vérifier que le contrat apparaît (transfers possibles après deploy). 3. Mettre à jour le [README racine](../README.md) (adresse + lien explorer). -4. *(Recommandé sujet)* Vérifier / publier le source sur BscScan (**Verify Contract**) — voir doc sujet. +4. *(Recommandé sujet)* Vérifier / publier le **code source** sur BscScan (**Verify Contract**) — voir [`BSCSCAN_VERIFICATION.md`](BSCSCAN_VERIFICATION.md). ## Fichiers