majdocrendu

This commit is contained in:
2026-10-22 11:39:33 +02:00
parent ec69c07bfc
commit 83f3d4c1ec
7 changed files with 293 additions and 49 deletions

View File

@@ -2,9 +2,24 @@
Sources du token **FGC42Forge** (symbole **FG42**), standard **BEP-20**, déployé sur **BNB Smart Chain Testnet** (chainId **97**).
Stack : **Solidity 0.8.34**, **Hardhat 3**, **OpenZeppelin 5**, tests **Mocha + ethers**.
| 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) |
Adresse déployée et vérif BscScan : [`../deployment/addresses.json`](../deployment/addresses.json) · [`../deployment/BSCSCAN_VERIFICATION.md`](../deployment/BSCSCAN_VERIFICATION.md)
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
```
---
@@ -13,26 +28,27 @@ Adresse déployée et vérif BscScan : [`../deployment/addresses.json`](../deplo
| Fichier | Contenu commenté |
|---------|------------------|
| **`contracts/FGC42Forge.sol`** | **Contrat principal** — NatSpec, contraintes sujet, supply fixe, sécurité, fonctions héritées |
| `test/FGC42Forge.ts` | Tests du token (métadonnées, transfer, supply) |
| `ignition/modules/FGC42Forge.ts` | Module de déploiement Ignition |
| `hardhat.config.ts` | Compilateur, réseau `bscTestnet`, variables d’environnement |
| `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 ; pas de module `BEP20` séparé).
- **BscScan :** affiche BEP-20 après déploiement ; vérification du **code source** via `deployment/FGC42Forge_flat.sol`.
- **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+)
- Compte testnet avec **tBNB** pour deploy / gas
- **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
@@ -40,46 +56,45 @@ Fichiers **hors livrable token** (template Hardhat) : `contracts/Counter.sol`, `
cd code
npm install
cp .env.example .env
# Éditer .env : PRIVATE_KEY = clé privée (pas l'adresse wallet)
```
| Variable | Description |
|----------|-------------|
| `BSC_TESTNET_RPC` | URL RPC BSC Testnet |
| `PRIVATE_KEY` | Signataire des transactions Hardhat (deploy) |
| 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…` |
## Commandes utiles
`.env` est **ignoré par Git** ; ne jamais le committer.
```shell
npx hardhat build
npx hardhat test mocha --grep FGC42Forge
```
---
Tous les tests (inclut l’exemple Counter du template) :
## Commandes — quoi et pourquoi
```shell
npx hardhat test
```
| 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**. |
## Déploiement (déjà effectué — reproduction)
Après un nouveau deploy : mettre à jour [`../deployment/addresses.json`](../deployment/addresses.json) et le README racine.
```shell
npx hardhat ignition deploy --network bscTestnet ignition/modules/FGC42Forge.ts
```
Procédure détaillée : [`../deployment/README.md`](../deployment/README.md).
Détails : [`../deployment/README.md`](../deployment/README.md)
---
## Arborescence
## Arborescence utile
```
contracts/
FGC42Forge.sol ← token BEP-20 (commenté pour la soutenance)
Counter.* ← exemple Hardhat (optionnel)
FGC42Forge.sol ← token BEP-20 (commenté)
Counter.* ← exemple template (optionnel)
test/
FGC42Forge.ts ← tests du token
FGC42Forge.ts ← tests du token
ignition/modules/
FGC42Forge.ts ← deploy Ignition
hardhat.config.ts ← réseau bscTestnet + Solidity 0.8.34
FGC42Forge.ts ← deploy Ignition
hardhat.config.ts ← réseaux + Solidity
.env.example ← modèle secrets
package.json ← dépendances npm
```
Documentation utilisateur (wallet, transfers) : [`../documentation/README.md`](../documentation/README.md)
Documentation utilisateur (MetaMask, transfers) : [`../documentation/README.md`](../documentation/README.md)