Files
tokenizer/tokenizerRendu/code/README.md
2026-10-22 11:39:33 +02:00

101 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Code — FGC42Forge (Hardhat 3)
Sources du token **FGC42Forge** (symbole **FG42**), standard **BEP-20**, déployé sur **BNB Smart Chain Testnet** (chainId **97**).
| 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) |
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
```
---
## Guide relecture (correcteur / code review)
| Fichier | Contenu commenté |
|---------|------------------|
| **`contracts/FGC42Forge.sol`** | **Contrat principal** — NatSpec, contraintes sujet, supply fixe, sécurité, fonctions héritées |
| `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).
- **BscScan :** affiche BEP-20 ; vérification via [`../deployment/FGC42Forge_flat.sol`](../deployment/FGC42Forge_flat.sol).
---
## Prérequis
- **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
```shell
cd code
npm install
cp .env.example .env
```
| 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…` |
`.env` est **ignoré par Git** ; ne jamais le committer.
---
## Commandes — quoi et pourquoi
| 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**. |
Après un nouveau deploy : mettre à jour [`../deployment/addresses.json`](../deployment/addresses.json) et le README racine.
Procédure détaillée : [`../deployment/README.md`](../deployment/README.md).
---
## Arborescence utile
```
contracts/
FGC42Forge.sol ← token BEP-20 (commenté)
Counter.* ← exemple template (optionnel)
test/
FGC42Forge.ts ← tests du token
ignition/modules/
FGC42Forge.ts ← deploy Ignition
hardhat.config.ts ← réseaux + Solidity
.env.example ← modèle secrets
package.json ← dépendances npm
```
Documentation utilisateur (MetaMask, transfers) : [`../documentation/README.md`](../documentation/README.md)