101 lines
4.1 KiB
Markdown
101 lines
4.1 KiB
Markdown
# 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)
|