# 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** : tout ce qui est évalué (code, deploy, doc utilisateur) est sous `README.md`, `code/`, `deployment/` et `documentation/`. **Guide utilisateur (wallet, transfers, sécurité) :** [`documentation/README.md`](documentation/README.md) ## É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 ← ce fichier code/ ← sources du smart contract deployment/ ← scripts et infos de déploiement documentation/ ← comment utiliser le token ``` ## 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/)