# Tokenizer — Build your own token Projet 42 — création et déploiement d’un **token** sur blockchain publique (**testnet**). > 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**. | 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 | Élément | Statut | |---------|--------| | Smart contract (`code/`) | **FGC42Forge** + tests Hardhat | | Déploiement (`deployment/`) | **Testnet** — voir [`deployment/addresses.json`](deployment/addresses.json) | | Documentation utilisateur (`documentation/`) | **Rédigée** — [`documentation/README.md`](documentation/README.md) | | Code review (commentaires) | **`contracts/FGC42Forge.sol`** + index [`code/README.md`](code/README.md) | ## Token | Champ | Valeur | |-------|--------| | **Nom** | `FGC42Forge` | | **Symbole** | `FG42` | | **Standard** | **BEP-20** (BNB Smart Chain) — contrat Solidity via OpenZeppelin **`ERC20`** (même interface EVM ; BscScan affiche BEP-20 après deploy) | | **Réseau** | BNB Smart Chain **Testnet**, chainId `97` | | **Supply** | 1 000 000 FG42 (18 décimales) — émission **unique** au deploy, **pas de mint** public ensuite | | **Adresse du contrat** | `0x0c76df26A1149fDc22C8f994975705271b070fF4` | | **Explorer (contrat)** | https://testnet.bscscan.com/address/0x0c76df26A1149fDc22C8f994975705271b070fF4 | | **Explorer (token)** | https://testnet.bscscan.com/token/0x0c76df26A1149fDc22C8f994975705271b070fF4 | | **Deployer** | `0xB6bE1878BfaF1FFC8503E752b1D733Ad7b93603c` (`FGC_account`) | | **Source vérifiée (BscScan)** | Oui — détails : [`deployment/BSCSCAN_VERIFICATION.md`](deployment/BSCSCAN_VERIFICATION.md) | ## Choix techniques Résumé pour la soutenance (le sujet demande d’expliquer **pourquoi**) : 1. **Chaîne — BNB Smart Chain Testnet (97)** : blockchain publique EVM alignée avec le partenaire BNB du sujet ; gas en **tBNB** via faucet ; preuve sur **BscScan** testnet sans argent réel. 2. **Langage / outils — Solidity + Hardhat 3** : langage attendu pour les smart contracts BSC ; Hardhat pour compiler, tester (Mocha/ethers) et déployer (Ignition) de façon reproductible dans `code/` et `deployment/`. 3. **Bibliothèques — OpenZeppelin `ERC20` + `Ownable`** : implémentation éprouvée du standard fongible ; sur BSC le jeton est qualifié **BEP-20** à l’explorer. Pas de réécriture manuelle de `transfer` / `balanceOf`. 4. **Modèle économique** : **1 000 000** FG42, **18** décimales ; toute la supply mintée **une fois** au déployeur dans le constructeur ; **aucune** fonction `mint` publique → offre non diluable. 5. **Sécurité** : compte de test dédié ; secrets dans `.env` local uniquement ; `owner` pour l’admin OpenZeppelin sans création de jetons supplémentaires ; pas de burn. Détail utilisateur : [`documentation/README.md`](documentation/README.md#4-sécurité-et-gouvernance). ## Structure du dépôt ``` 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`). Depuis la racine du dépôt (`tokenizerRendu/`), **`npx hardhat`** échoue avec *No Hardhat config file found* — il faut **entrer dans `code/`** d’abord. ```bash cd code # obligatoire avant toute commande hardhat npm install npx hardhat build npx hardhat test npx hardhat test --grep FGC42Forge # uniquement les tests du token ``` Déploiement (déjà effectué — pour reproduire, voir [`deployment/README.md`](deployment/README.md)) : ```bash cd code npx hardhat ignition deploy --network bscTestnet ignition/modules/FGC42Forge.ts ``` **Ne jamais committer** de clé privée. Utiliser un fichier `.env` local (voir `.env.example` si présent). ## Démo en évaluation (actions minimales) 1. Montrer le contrat sur l’**explorer** (adresse + token). 2. **Transfer** entre deux comptes de test. 3. Expliquer **owner** (`Ownable`) : pas de `mint` public ; supply fixe au deploy. 4. Montrer que la **documentation/** permet d’utiliser le token sans ton aide. ## Bonus **Non implémenté** (choix volontaire : priorité à une partie obligatoire stable et documentée). Le sujet propose un **multisig** en bonus ; non requis pour la correction du token BEP-20. ## Vidéo démo (optionnel) *(Lien uniquement — la vidéo n’est pas requise et n’améliore pas la note.)* ## Ressources - [BNB Chain Testnet Faucet](https://www.bnbchain.org/en/testnet-faucet) - [BscScan Testnet](https://testnet.bscscan.com/)