110 lines
5.9 KiB
Markdown
110 lines
5.9 KiB
Markdown
# 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/)
|