majdocrendu
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user