diff --git a/docs/pedagogie/audit-rendu-tokenizer.md b/docs/pedagogie/audit-rendu-tokenizer.md index d01e77a..4f5cc23 100644 --- a/docs/pedagogie/audit-rendu-tokenizer.md +++ b/docs/pedagogie/audit-rendu-tokenizer.md @@ -24,7 +24,7 @@ Tous les critères obligatoires du tableau **sujet-exigences-rendu.md** sont **O | Racine | `README.md`, `.gitignore` | | `code/` | `contracts/FGC42Forge.sol`, tests, ignition module, `hardhat.config.ts`, `package.json`, `package-lock.json`, `.env.example`, `.gitignore`, `README.md` | | `deployment/` | `addresses.json`, `README.md`, `BSCSCAN_VERIFICATION.md`, `FGC42Forge_flat.sol`, `addresses.json.example` | -| `documentation/` | `README.md` | +| `documentation/` | `README.md`, `STACK-GLOSSAIRE-ET-PARCOURS.md` | **Template Hardhat (Counter)** : présent mais documenté comme hors périmètre dans `code/README.md` — acceptable ; ne pas présenter Counter en code review. @@ -58,6 +58,16 @@ Tous les critères obligatoires du tableau **sujet-exigences-rendu.md** sont **O Aucun lien vers `docs/pedagogie` ou dépôt parent. Liens `../deployment`, `../code` : **OK** (dans le même repo école). +## Autonomie fonctionnelle (vérification doc) + +| Parcours | Suffisant dans `tokenizerRendu/` seul ? | +|----------|----------------------------------------| +| Utiliser FG42 (MetaMask + BscScan) | ✅ `documentation/README.md` | +| Comprendre stack / commandes / alternatives | ✅ `documentation/STACK-GLOSSAIRE-ET-PARCOURS.md` | +| Tests Hardhat | ✅ README racine + `code/README.md` → `cd code` + `npm install` + test | +| Token on-chain sans redeploy | ✅ adresse dans README + `deployment/addresses.json` | +| Redeploy optionnel | ✅ `deployment/README.md` + `.env.example` | + --- ## Procédure Git — Vogosphere diff --git a/docs/pedagogie/sujet-exigences-rendu.md b/docs/pedagogie/sujet-exigences-rendu.md index 48e3643..d17d0f4 100644 --- a/docs/pedagogie/sujet-exigences-rendu.md +++ b/docs/pedagogie/sujet-exigences-rendu.md @@ -50,8 +50,8 @@ documentation/ | **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` | +| **T18** | Doc **claire**, relue en eval | Guide utilisateur autonome | ✅ `documentation/README.md` + stack | +| **T19** | Whitepaper léger (envisagé) | Rôle, limites — pas toujours fichier séparé | ✅ `documentation/README.md` § 5 | --- diff --git a/tokenizerRendu/README.md b/tokenizerRendu/README.md index 76fe9cc..abf352f 100644 --- a/tokenizerRendu/README.md +++ b/tokenizerRendu/README.md @@ -2,9 +2,14 @@ Projet 42 — création et déploiement d’un **token** sur blockchain publique (**testnet**). -> Ce dépôt Git est **autonome** : tout ce qui est évalué (code, deploy, doc utilisateur) est sous `README.md`, `code/`, `deployment/` et `documentation/`. +> Ce dépôt Git est **autonome** : aucun autre dossier (pas de `docs/` externe). En suivant ce README et les liens ci-dessous, un correcteur peut **utiliser le token** (déjà déployé), **lancer les tests** Hardhat et **relire le code**. -**Guide utilisateur (wallet, transfers, sécurité) :** [`documentation/README.md`](documentation/README.md) +| Document | Public | Contenu | +|----------|--------|---------| +| [**documentation/README.md**](documentation/README.md) | Utilisateur / évaluateur | Comprendre FG42, MetaMask, transfers, sécurité | +| [**documentation/STACK-GLOSSAIRE-ET-PARCOURS.md**](documentation/STACK-GLOSSAIRE-ET-PARCOURS.md) | Soutenance / technique | Solidity, Hardhat, alternatives, commandes, carte des fichiers | +| [**code/README.md**](code/README.md) | Code review | Index des fichiers commentés, commandes depuis `code/` | +| [**deployment/README.md**](deployment/README.md) | Deploy / explorer | Ignition, `addresses.json`, BscScan | ## État du projet @@ -47,12 +52,20 @@ Résumé pour la soutenance (le sujet demande d’expliquer **pourquoi**) : ## Structure du dépôt ``` -README.md ← ce fichier -code/ ← sources du smart contract -deployment/ ← scripts et infos de déploiement -documentation/ ← comment utiliser le token +README.md ← vue d’ensemble, choix techniques, adresse on-chain +code/ ← Solidity + Hardhat (compiler, tester, redeploy) +deployment/ ← trace du deploy, adresses, vérif BscScan +documentation/ + README.md ← guide utilisateur (wallet, BscScan) + STACK-GLOSSAIRE-ET-PARCOURS.md ← outils, glossaire, parcours autonome ``` +### Démarrage rapide (après clone) + +1. **Utiliser le token** (sans installer Node) : [`documentation/README.md`](documentation/README.md) — MetaMask + adresse du contrat. +2. **Tests automatisés** : `cd code` → `npm install` → `npx hardhat test --grep FGC42Forge` (attendu : **2 passing**). +3. **Stack détaillée** : [`documentation/STACK-GLOSSAIRE-ET-PARCOURS.md`](documentation/STACK-GLOSSAIRE-ET-PARCOURS.md). + ## Lancer / tester (à adapter selon ta stack) Le projet Hardhat est dans **`code/`** (fichier `hardhat.config.ts`). diff --git a/tokenizerRendu/code/README.md b/tokenizerRendu/code/README.md index 98ee28c..7ac1ba6 100644 --- a/tokenizerRendu/code/README.md +++ b/tokenizerRendu/code/README.md @@ -2,9 +2,24 @@ Sources du token **FGC42Forge** (symbole **FG42**), standard **BEP-20**, déployé sur **BNB Smart Chain Testnet** (chainId **97**). -Stack : **Solidity 0.8.34**, **Hardhat 3**, **OpenZeppelin 5**, tests **Mocha + ethers**. +| Langage contrat | **Solidity** 0.8.34 — voir [`contracts/FGC42Forge.sol`](contracts/FGC42Forge.sol) | +| Framework | **Hardhat 3** — compile, teste, déploie depuis ce dossier | +| Bibliothèque | **OpenZeppelin 5** (`ERC20`, `Ownable`) | +| Tests | **TypeScript** + **Mocha** + **ethers** — [`test/FGC42Forge.ts`](test/FGC42Forge.ts) | -Adresse déployée et vérif BscScan : [`../deployment/addresses.json`](../deployment/addresses.json) · [`../deployment/BSCSCAN_VERIFICATION.md`](../deployment/BSCSCAN_VERIFICATION.md) +Glossaire complet (Hardhat, MetaMask, alternatives Remix/Truffle/Foundry) : [`../documentation/STACK-GLOSSAIRE-ET-PARCOURS.md`](../documentation/STACK-GLOSSAIRE-ET-PARCOURS.md). + +Adresse déployée : [`../deployment/addresses.json`](../deployment/addresses.json) · BscScan : [`../deployment/BSCSCAN_VERIFICATION.md`](../deployment/BSCSCAN_VERIFICATION.md) + +--- + +## Pourquoi les commandes se lancent depuis `code/` + +Hardhat cherche **`hardhat.config.ts` dans le répertoire courant**. À la racine du dépôt (`README.md` parent), `npx hardhat` échoue (*No Hardhat config file found*). Toujours : + +```bash +cd code # depuis la racine du dépôt Git +``` --- @@ -13,26 +28,27 @@ Adresse déployée et vérif BscScan : [`../deployment/addresses.json`](../deplo | Fichier | Contenu commenté | |---------|------------------| | **`contracts/FGC42Forge.sol`** | **Contrat principal** — NatSpec, contraintes sujet, supply fixe, sécurité, fonctions héritées | -| `test/FGC42Forge.ts` | Tests du token (métadonnées, transfer, supply) | -| `ignition/modules/FGC42Forge.ts` | Module de déploiement Ignition | -| `hardhat.config.ts` | Compilateur, réseau `bscTestnet`, variables d’environnement | +| `test/FGC42Forge.ts` | Tests : métadonnées, `transfer`, `owner`, conservation de `totalSupply` | +| `ignition/modules/FGC42Forge.ts` | Module Ignition : déploie `FGC42Forge` sur le réseau passé à `--network` | +| `hardhat.config.ts` | Compilateur Solidity, profil `production` (optimizer 200 runs), réseau `bscTestnet` + `.env` | Fichiers **hors livrable token** (template Hardhat) : `contracts/Counter.sol`, `Counter.t.sol`, `test/Counter.ts` — le jeton évalué est **FGC42Forge** uniquement. ---- - ### BEP-20 vs `ERC20` dans le code - **Soutenance :** jeton **BEP-20** sur BSC Testnet. -- **Code :** héritage **OpenZeppelin `ERC20`** (interface EVM identique ; pas de module `BEP20` séparé). -- **BscScan :** affiche BEP-20 après déploiement ; vérification du **code source** via `deployment/FGC42Forge_flat.sol`. +- **Code :** héritage **OpenZeppelin `ERC20`** (interface EVM identique). +- **BscScan :** affiche BEP-20 ; vérification via [`../deployment/FGC42Forge_flat.sol`](../deployment/FGC42Forge_flat.sol). --- ## Prérequis -- Node.js ≥ 18 (Hardhat 3 recommande v22+) -- Compte testnet avec **tBNB** pour deploy / gas +- **Node.js** ≥ 18 (Hardhat 3 recommande v22+) +- Pour **deploy testnet** : compte avec **tBNB** + `code/.env` (voir ci-dessous) +- Pour **tests seuls** : Node suffit (chaîne simulée Hardhat, pas de faucet) + +--- ## Installation @@ -40,46 +56,45 @@ Fichiers **hors livrable token** (template Hardhat) : `contracts/Counter.sol`, ` cd code npm install cp .env.example .env -# Éditer .env : PRIVATE_KEY = clé privée (pas l'adresse wallet) ``` -| Variable | Description | -|----------|-------------| -| `BSC_TESTNET_RPC` | URL RPC BSC Testnet | -| `PRIVATE_KEY` | Signataire des transactions Hardhat (deploy) | +| Variable `.env` | Description | +|-----------------|-------------| +| `BSC_TESTNET_RPC` | URL du nœud BSC Testnet (même famille que MetaMask) | +| `PRIVATE_KEY` | Clé privée **hex** du compte qui signe le deploy — **pas** l’adresse `0x…` | -## Commandes utiles +`.env` est **ignoré par Git** ; ne jamais le committer. -```shell -npx hardhat build -npx hardhat test mocha --grep FGC42Forge -``` +--- -Tous les tests (inclut l’exemple Counter du template) : +## Commandes — quoi et pourquoi -```shell -npx hardhat test -``` +| Commande | Effet | +|----------|--------| +| `npx hardhat build` | Compile `FGC42Forge.sol` (et Counter) ; nécessaire avant deploy ou si le code change. | +| `npx hardhat test --grep FGC42Forge` | Lance **2 tests** sur chaîne locale simulée : supply au deployer + `transfer`. | +| `npx hardhat test` | Tous les tests, y compris l’exemple **Counter** du template Hardhat. | +| `npx hardhat ignition deploy --network bscTestnet ignition/modules/FGC42Forge.ts` | Envoie une transaction on-chain : crée le contrat ; le deployer reçoit 1M FG42 ; coûte du **tBNB**. | -## Déploiement (déjà effectué — reproduction) +Après un nouveau deploy : mettre à jour [`../deployment/addresses.json`](../deployment/addresses.json) et le README racine. -```shell -npx hardhat ignition deploy --network bscTestnet ignition/modules/FGC42Forge.ts -``` +Procédure détaillée : [`../deployment/README.md`](../deployment/README.md). -Détails : [`../deployment/README.md`](../deployment/README.md) +--- -## Arborescence +## Arborescence utile ``` contracts/ - FGC42Forge.sol ← token BEP-20 (commenté pour la soutenance) - Counter.* ← exemple Hardhat (optionnel) + FGC42Forge.sol ← token BEP-20 (commenté) + Counter.* ← exemple template (optionnel) test/ - FGC42Forge.ts ← tests du token + FGC42Forge.ts ← tests du token ignition/modules/ - FGC42Forge.ts ← deploy Ignition -hardhat.config.ts ← réseau bscTestnet + Solidity 0.8.34 + FGC42Forge.ts ← deploy Ignition +hardhat.config.ts ← réseaux + Solidity +.env.example ← modèle secrets +package.json ← dépendances npm ``` -Documentation utilisateur (wallet, transfers) : [`../documentation/README.md`](../documentation/README.md) +Documentation utilisateur (MetaMask, transfers) : [`../documentation/README.md`](../documentation/README.md) diff --git a/tokenizerRendu/deployment/README.md b/tokenizerRendu/deployment/README.md index 229922e..27dfb51 100644 --- a/tokenizerRendu/deployment/README.md +++ b/tokenizerRendu/deployment/README.md @@ -21,7 +21,8 @@ npx hardhat ignition deploy --network bscTestnet ignition/modules/FGC42Forge.ts Hardhat peut afficher une estimation de gas et demander une confirmation. -À la fin, note l’**adresse** du contrat `FGC42Forge` (sortie Ignition ou fichier dans `code/ignition/deployments/`). +À la fin, note l’**adresse** du contrat `FGC42Forge` (sortie console Ignition). +**Référence versionnée dans Git :** [`addresses.json`](addresses.json) (le dossier `code/ignition/deployments/` est local et ignoré par `.gitignore`). ## Après le deploy diff --git a/tokenizerRendu/documentation/README.md b/tokenizerRendu/documentation/README.md index 296e49a..a1560c2 100644 --- a/tokenizerRendu/documentation/README.md +++ b/tokenizerRendu/documentation/README.md @@ -72,6 +72,11 @@ Obtenir du **tBNB** : faucet BNB Chain testnet ou canaux officiels (Telegram @bn ## 3. Guide d’utilisation +### MetaMask — rôle dans ce projet + +**MetaMask** est une extension navigateur qui joue le rôle de **portefeuille (wallet)** : elle stocke tes comptes (adresses `0x…`), te permet de **signer** des transactions et d’afficher les soldes (tBNB pour le gas, FG42 après import du token). +Hardhat, dans `code/`, sert au **développement** (compile, tests, deploy) ; MetaMask sert à la **démo utilisateur** réelle sur BSC Testnet. Les deux utilisent le même type d’adresses EVM, mais ce dépôt ne met **jamais** la seed MetaMask dans Git — seule la clé du compte de deploy peut aller dans `code/.env` local pour Ignition. + ### 3.1 Importer FG42 dans MetaMask 1. Ouvrir MetaMask sur le réseau **BNB Smart Chain Testnet**. @@ -117,6 +122,39 @@ Pour le modèle technique (Hardhat, OpenZeppelin, choix BSC), voir le [README ra --- -## 5. Whitepaper (optionnel) +## 5. Whitepaper léger (rôle, fonctionnalités, limites) -Un document `WHITEPAPER.md` peut compléter cette page (vision, limites, public cible). Non requis si cette documentation reste complète. +### Vision + +**FGC42Forge (FG42)** est un jeton **BEP-20** pédagogique : il montre comment un actif numérique **fongible** vit on-chain (supply, transfers, lecture via wallet et explorateur), dans le respect du sujet 42 *Tokenizer* (testnet, nom avec **42**, pas d’argent réel). + +### Fonctionnalités + +| Fonction | Disponible | Détail | +|----------|------------|--------| +| `name` / `symbol` / `decimals` | Oui | FGC42Forge, FG42, 18 | +| `totalSupply` / `balanceOf` | Oui | Supply fixe 1 000 000 | +| `transfer` / `approve` / `transferFrom` | Oui | Standard ERC-20 (BEP-20 sur BSC) | +| Mint public après deploy | **Non** | Offre figée au constructeur | +| Burn | Non | Non implémenté | +| Pause / blacklist | Non | Hors périmètre | +| Multisig (bonus sujet) | Non | Non retenu — voir README racine | + +### Public cible + +- Évaluateurs et pairs : vérifier le contrat sur BscScan et tester un transfer. +- Développeurs : cloner le dépôt, lire [`STACK-GLOSSAIRE-ET-PARCOURS.md`](STACK-GLOSSAIRE-ET-PARCOURS.md), exécuter les tests dans `code/`. + +### Limites + +- **Testnet uniquement** — aucune valeur marchande ; tBNB et FG42 sont jetons d’essai. +- **Pas de gouvernance on-chain** avancée : seul le modèle `Ownable` OpenZeppelin (sans mint). +- **Dépendance wallet** : l’usage humain passe par MetaMask (ou tout wallet EVM compatible) ; le gas reste en **tBNB**, pas en FG42. + +### Où aller plus loin dans ce dépôt + +| Besoin | Fichier | +|--------|---------| +| Outils (Hardhat, Solidity, alternatives) | [`STACK-GLOSSAIRE-ET-PARCOURS.md`](STACK-GLOSSAIRE-ET-PARCOURS.md) | +| Choix techniques et pourquoi | [README racine](../README.md#choix-techniques) | +| Code source commenté | [`../code/contracts/FGC42Forge.sol`](../code/contracts/FGC42Forge.sol) | diff --git a/tokenizerRendu/documentation/STACK-GLOSSAIRE-ET-PARCOURS.md b/tokenizerRendu/documentation/STACK-GLOSSAIRE-ET-PARCOURS.md new file mode 100644 index 0000000..03916bf --- /dev/null +++ b/tokenizerRendu/documentation/STACK-GLOSSAIRE-ET-PARCOURS.md @@ -0,0 +1,167 @@ +# Stack, outils, code — guide complet (dépôt autonome) + +Ce fichier complète [`README.md`](../README.md) (choix techniques) et [`documentation/README.md`](README.md) (utilisation du token). **Aucun autre dépôt n’est requis** : tout est sous `README.md`, `code/`, `deployment/`, `documentation/`. + +--- + +## 1. Autonomie du rendu + +| Question | Réponse | +|----------|---------| +| Faut-il un dossier `docs/` externe ? | **Non.** | +| Le token fonctionne sans redeploy ? | **Oui** — contrat déjà sur BSC Testnet ; voir [`deployment/addresses.json`](../deployment/addresses.json). | +| Que faire après `git clone` ? | Suivre [§2 Parcours](#2-parcours-rendre-le-projet-opérationnel) ci-dessous. | +| Où est le « vrai » code du token ? | [`code/contracts/FGC42Forge.sol`](../code/contracts/FGC42Forge.sol) | + +--- + +## 2. Parcours : rendre le projet opérationnel + +### A — Correcteur / utilisateur (sans redeploy) + +Objectif : **comprendre** et **utiliser** FG42 on-chain. + +1. Lire le [README racine](../README.md) (adresse, réseau, choix). +2. Suivre [`documentation/README.md`](README.md) : MetaMask testnet, importer le contrat, transfer. +3. Vérifier sur [BscScan token](https://testnet.bscscan.com/token/0x0c76df26A1149fDc22C8f994975705271b070fF4) et onglet **Contract** (source vérifiée). + +**Prérequis :** navigateur + extension **MetaMask** + un peu de **tBNB** (faucet) sur le compte qui envoie des FG42. + +### B — Développeur (tests locaux Hardhat) + +Objectif : compiler et lancer les **tests automatisés** (chaîne simulée, pas de gas réel). + +```bash +# Depuis la racine du dépôt Git (contenu de ce rendu) +cd code +npm install +npx hardhat build # compile Solidity → artifacts locaux +npx hardhat test --grep FGC42Forge # 2 tests attendus +``` + +| Étape | Rôle | +|-------|------| +| `cd code` | Hardhat lit `hardhat.config.ts` **uniquement** dans ce dossier. | +| `npm install` | Installe Hardhat, OpenZeppelin, ethers, Mocha (voir `package.json`). | +| `npx hardhat build` | Télécharge le compilateur Solidity si besoin, compile les contrats. | +| `npx hardhat test` | Exécute les tests ; `--grep FGC42Forge` limite au token du sujet. | + +### C — Développeur (redéployer sur testnet — optionnel) + +Le projet est **déjà déployé**. Pour **reproduire** un deploy : + +1. `cd code && cp .env.example .env` — renseigner `PRIVATE_KEY` (compte test) et `BSC_TESTNET_RPC`. +2. Obtenir **tBNB** (faucet). +3. `npx hardhat ignition deploy --network bscTestnet ignition/modules/FGC42Forge.ts` +4. Mettre à jour [`deployment/addresses.json`](../deployment/addresses.json) et le README racine. + +Détails : [`deployment/README.md`](../deployment/README.md). + +--- + +## 3. Glossaire — chaque outil du projet + +### Langage et contrat + +| Terme | Définition | Rôle dans **ce** projet | +|-------|------------|-------------------------| +| **Solidity** | Langage de smart contracts pour chaînes **EVM** (Ethereum, BSC, etc.). | Fichier principal : [`FGC42Forge.sol`](../code/contracts/FGC42Forge.sol). | +| **Smart contract** | Programme déployé on-chain à une **adresse** fixe ; état (soldes) stocké sur la blockchain. | Le token FG42 est un contrat BEP-20. | +| **BEP-20** | Standard de jeton **fongible** sur BNB Chain (équivalent fonctionnel à **ERC-20**). | Respecté via OpenZeppelin `ERC20` + deploy sur BSC Testnet. | +| **OpenZeppelin** | Bibliothèque Solidity auditée (`ERC20`, `Ownable`). | Évite de réécrire `transfer`, `balanceOf`, etc. | + +### Environnement de développement (off-chain) + +| Terme | Définition | Rôle dans **ce** projet | +|-------|------------|-------------------------| +| **Node.js / npm** | Runtime JavaScript + gestionnaire de paquets. | Exécute Hardhat et les tests TypeScript. | +| **Hardhat** | **Framework** de développement Ethereum : compile Solidity, tests, réseaux, deploy. | Projet dans `code/` ; config : [`hardhat.config.ts`](../code/hardhat.config.ts). | +| **Hardhat Ignition** | Sous-système de **déploiement déclaratif** (modules TypeScript). | [`ignition/modules/FGC42Forge.ts`](../code/ignition/modules/FGC42Forge.ts). | +| **Mocha** | Framework de tests JavaScript. | Lance les fichiers `code/test/*.ts`. | +| **ethers.js** | Bibliothèque pour parler à la blockchain (deploy, appels, signatures). | Utilisée dans les tests via `network.create()`. | +| **TypeScript** | JavaScript typé. | Tests, config Hardhat, module Ignition (`.ts`). | + +### Alternatives citées par le sujet (non utilisées ici) + +| Outil | À quoi ça sert | Pourquoi Hardhat a été choisi | +|-------|----------------|-------------------------------| +| **Remix** | IDE web Solidity, compile + deploy dans le navigateur. | Tests reproductibles en CLI, Ignition, dépôt `code/` structuré. | +| **Truffle** | Ancien framework compile / migrate / test. | Hardhat 3 plus actif, même écosystème npm. | +| **Foundry** | Toolkit Rust (`forge`, `cast`) très rapide pour Solidity. | Stack 42 / Node déjà en place ; Mocha + Hardhat suffisants pour ce token simple. | + +### Blockchain publique (on-chain) + +| Terme | Définition | Rôle dans **ce** projet | +|-------|------------|-------------------------| +| **BNB Smart Chain (BSC)** | Blockchain EVM ; partenaire du sujet Tokenizer. | **Testnet** uniquement (pas de mainnet / argent réel). | +| **Testnet** | Copie publique de la chaîne pour développeurs ; jetons sans valeur. | Chain ID **97**, gas en **tBNB**. | +| **tBNB** | BNB de test pour payer le **gas** (frais de transaction). | Faucet BNB Chain ; requis pour deploy et transfers MetaMask. | +| **RPC** | URL HTTP vers un nœud qui lit/écrit la chaîne. | `BSC_TESTNET_RPC` dans `.env` ; même URL que MetaMask (voir doc utilisateur). | +| **Gas** | Coût d’exécution d’une transaction (deploy, `transfer`). | Payé en tBNB ; les FG42 ne paient pas le gas (séparé du token). | +| **BscScan** | **Explorateur** : adresses, transactions, code source vérifié. | Preuve du deploy + historique des transfers. | + +### Wallet (interface utilisateur) + +| Terme | Définition | Rôle dans **ce** projet | +|-------|------------|-------------------------| +| **MetaMask** | Extension navigateur **wallet** : stocke des comptes (clés), signe des txs, affiche soldes. | Importer FG42 par **adresse du contrat** ; envoyer des FG42 ; réseau BSC Testnet. | +| **Adresse `0x…`** | Identifiant public d’un compte ou d’un contrat (40 hex après `0x`). | Contrat token : voir README racine ; compte deployer dans `addresses.json`. | +| **Clé privée / seed** | Secret qui contrôle un compte. | **Uniquement** dans `code/.env` local pour Hardhat ; **jamais** dans Git. MetaMask garde la clé dans l’extension. | + +**MetaMask n’est pas obligatoire pour corriger le code** : les tests Hardhat simulent la chaîne. En **démo sujet**, MetaMask prouve l’usage réel du token BEP-20. + +--- + +## 4. Carte du code (où trouver quoi) + +| Chemin | Contenu | +|--------|---------| +| [`code/contracts/FGC42Forge.sol`](../code/contracts/FGC42Forge.sol) | Contrat token : constructeur, supply fixe, NatSpec, sécurité. | +| [`code/test/FGC42Forge.ts`](../code/test/FGC42Forge.ts) | Tests : nom/symbole/supply, `transfer`, `owner`. | +| [`code/hardhat.config.ts`](../code/hardhat.config.ts) | Solidity 0.8.34, optimizer production, réseau `bscTestnet`. | +| [`code/ignition/modules/FGC42Forge.ts`](../code/ignition/modules/FGC42Forge.ts) | Déploiement du contrat sur le réseau choisi. | +| [`code/.env.example`](../code/.env.example) | Modèle `RPC` + `PRIVATE_KEY` (sans secrets). | +| [`deployment/addresses.json`](../deployment/addresses.json) | Adresse officielle, chainId, liens explorer. | +| [`deployment/FGC42Forge_flat.sol`](../deployment/FGC42Forge_flat.sol) | Source aplati pour vérification BscScan. | +| [`deployment/BSCSCAN_VERIFICATION.md`](../deployment/BSCSCAN_VERIFICATION.md) | Paramètres de vérification explorer. | + +Fichiers **template Hardhat** (hors token évalué) : `Counter.sol`, `test/Counter.ts` — ignorés en soutenance sauf question sur le template. + +--- + +## 5. Explication rapide du contrat (lien code) + +Le contrat **hérite** de `ERC20` et `Ownable` : + +1. **Constructeur** : définit nom `FGC42Forge`, symbole `FG42`, définit l’`owner`, appelle `_mint` une fois pour **1 000 000 × 10¹⁸** unités vers le déployeur. +2. **Pas de `mint` exposé** : `totalSupply` ne peut plus augmenter via ce contrat. +3. **Fonctions utilisées en démo** : `transfer`, `balanceOf`, `totalSupply`, `name`, `symbol` (héritées ERC-20). + +Détail ligne par ligne : commentaires dans [`FGC42Forge.sol`](../code/contracts/FGC42Forge.sol) et index [`code/README.md`](../code/README.md). + +--- + +## 6. Commandes Hardhat — récapitulatif + +Toutes depuis **`code/`** : + +| Commande | À quoi elle sert | +|----------|------------------| +| `npm install` | Installe les dépendances du projet (`package.json`). | +| `npx hardhat build` | Compile les contrats Solidity. | +| `npx hardhat test` | Lance tous les tests (FGC42Forge + Counter template). | +| `npx hardhat test --grep FGC42Forge` | Tests **uniquement** du token du sujet. | +| `npx hardhat ignition deploy --network bscTestnet ignition/modules/FGC42Forge.ts` | Déploie le contrat sur BSC Testnet (gas tBNB, `.env` requis). | +| `npx hardhat flatten contracts/FGC42Forge.sol` | Produit un fichier unique pour BscScan (voir deployment). | + +--- + +## 7. Documentation sujet — où c’est couvert + +| Exigence sujet | Fichier(s) dans ce dépôt | +|----------------|---------------------------| +| README : choix + pourquoi | [`../README.md`](../README.md) § Choix techniques | +| `code/` commenté, lisible | [`FGC42Forge.sol`](../code/contracts/FGC42Forge.sol), [`code/README.md`](../code/README.md) | +| `deployment/` + adresse + réseau | [`deployment/`](../deployment/), README racine | +| Comprendre + utiliser le token | [`documentation/README.md`](README.md) | +| Whitepaper léger (rôle, limites) | [`documentation/README.md`](README.md) § 5 |