97 lines
4.7 KiB
Markdown
97 lines
4.7 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** : 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/)
|