majdocrendu
This commit is contained in:
@@ -2,9 +2,14 @@
|
||||
|
||||
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/`.
|
||||
> Ce dépôt Git est **autonome** : aucun autre dossier (pas de `docs/` externe). En suivant ce README et les liens ci-dessous, un correcteur peut **utiliser le token** (déjà déployé), **lancer les tests** Hardhat et **relire le code**.
|
||||
|
||||
**Guide utilisateur (wallet, transfers, sécurité) :** [`documentation/README.md`](documentation/README.md)
|
||||
| Document | Public | Contenu |
|
||||
|----------|--------|---------|
|
||||
| [**documentation/README.md**](documentation/README.md) | Utilisateur / évaluateur | Comprendre FG42, MetaMask, transfers, sécurité |
|
||||
| [**documentation/STACK-GLOSSAIRE-ET-PARCOURS.md**](documentation/STACK-GLOSSAIRE-ET-PARCOURS.md) | Soutenance / technique | Solidity, Hardhat, alternatives, commandes, carte des fichiers |
|
||||
| [**code/README.md**](code/README.md) | Code review | Index des fichiers commentés, commandes depuis `code/` |
|
||||
| [**deployment/README.md**](deployment/README.md) | Deploy / explorer | Ignition, `addresses.json`, BscScan |
|
||||
|
||||
## État du projet
|
||||
|
||||
@@ -47,12 +52,20 @@ Résumé pour la soutenance (le sujet demande d’expliquer **pourquoi**) :
|
||||
## 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
|
||||
README.md ← vue d’ensemble, choix techniques, adresse on-chain
|
||||
code/ ← Solidity + Hardhat (compiler, tester, redeploy)
|
||||
deployment/ ← trace du deploy, adresses, vérif BscScan
|
||||
documentation/
|
||||
README.md ← guide utilisateur (wallet, BscScan)
|
||||
STACK-GLOSSAIRE-ET-PARCOURS.md ← outils, glossaire, parcours autonome
|
||||
```
|
||||
|
||||
### Démarrage rapide (après clone)
|
||||
|
||||
1. **Utiliser le token** (sans installer Node) : [`documentation/README.md`](documentation/README.md) — MetaMask + adresse du contrat.
|
||||
2. **Tests automatisés** : `cd code` → `npm install` → `npx hardhat test --grep FGC42Forge` (attendu : **2 passing**).
|
||||
3. **Stack détaillée** : [`documentation/STACK-GLOSSAIRE-ET-PARCOURS.md`](documentation/STACK-GLOSSAIRE-ET-PARCOURS.md).
|
||||
|
||||
## Lancer / tester (à adapter selon ta stack)
|
||||
|
||||
Le projet Hardhat est dans **`code/`** (fichier `hardhat.config.ts`).
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -21,7 +21,8 @@ npx hardhat ignition deploy --network bscTestnet ignition/modules/FGC42Forge.ts
|
||||
|
||||
Hardhat peut afficher une estimation de gas et demander une confirmation.
|
||||
|
||||
À la fin, note l’**adresse** du contrat `FGC42Forge` (sortie Ignition ou fichier dans `code/ignition/deployments/`).
|
||||
À la fin, note l’**adresse** du contrat `FGC42Forge` (sortie console Ignition).
|
||||
**Référence versionnée dans Git :** [`addresses.json`](addresses.json) (le dossier `code/ignition/deployments/` est local et ignoré par `.gitignore`).
|
||||
|
||||
## Après le deploy
|
||||
|
||||
|
||||
@@ -72,6 +72,11 @@ Obtenir du **tBNB** : faucet BNB Chain testnet ou canaux officiels (Telegram @bn
|
||||
|
||||
## 3. Guide d’utilisation
|
||||
|
||||
### MetaMask — rôle dans ce projet
|
||||
|
||||
**MetaMask** est une extension navigateur qui joue le rôle de **portefeuille (wallet)** : elle stocke tes comptes (adresses `0x…`), te permet de **signer** des transactions et d’afficher les soldes (tBNB pour le gas, FG42 après import du token).
|
||||
Hardhat, dans `code/`, sert au **développement** (compile, tests, deploy) ; MetaMask sert à la **démo utilisateur** réelle sur BSC Testnet. Les deux utilisent le même type d’adresses EVM, mais ce dépôt ne met **jamais** la seed MetaMask dans Git — seule la clé du compte de deploy peut aller dans `code/.env` local pour Ignition.
|
||||
|
||||
### 3.1 Importer FG42 dans MetaMask
|
||||
|
||||
1. Ouvrir MetaMask sur le réseau **BNB Smart Chain Testnet**.
|
||||
@@ -117,6 +122,39 @@ Pour le modèle technique (Hardhat, OpenZeppelin, choix BSC), voir le [README ra
|
||||
|
||||
---
|
||||
|
||||
## 5. Whitepaper (optionnel)
|
||||
## 5. Whitepaper léger (rôle, fonctionnalités, limites)
|
||||
|
||||
Un document `WHITEPAPER.md` peut compléter cette page (vision, limites, public cible). Non requis si cette documentation reste complète.
|
||||
### Vision
|
||||
|
||||
**FGC42Forge (FG42)** est un jeton **BEP-20** pédagogique : il montre comment un actif numérique **fongible** vit on-chain (supply, transfers, lecture via wallet et explorateur), dans le respect du sujet 42 *Tokenizer* (testnet, nom avec **42**, pas d’argent réel).
|
||||
|
||||
### Fonctionnalités
|
||||
|
||||
| Fonction | Disponible | Détail |
|
||||
|----------|------------|--------|
|
||||
| `name` / `symbol` / `decimals` | Oui | FGC42Forge, FG42, 18 |
|
||||
| `totalSupply` / `balanceOf` | Oui | Supply fixe 1 000 000 |
|
||||
| `transfer` / `approve` / `transferFrom` | Oui | Standard ERC-20 (BEP-20 sur BSC) |
|
||||
| Mint public après deploy | **Non** | Offre figée au constructeur |
|
||||
| Burn | Non | Non implémenté |
|
||||
| Pause / blacklist | Non | Hors périmètre |
|
||||
| Multisig (bonus sujet) | Non | Non retenu — voir README racine |
|
||||
|
||||
### Public cible
|
||||
|
||||
- Évaluateurs et pairs : vérifier le contrat sur BscScan et tester un transfer.
|
||||
- Développeurs : cloner le dépôt, lire [`STACK-GLOSSAIRE-ET-PARCOURS.md`](STACK-GLOSSAIRE-ET-PARCOURS.md), exécuter les tests dans `code/`.
|
||||
|
||||
### Limites
|
||||
|
||||
- **Testnet uniquement** — aucune valeur marchande ; tBNB et FG42 sont jetons d’essai.
|
||||
- **Pas de gouvernance on-chain** avancée : seul le modèle `Ownable` OpenZeppelin (sans mint).
|
||||
- **Dépendance wallet** : l’usage humain passe par MetaMask (ou tout wallet EVM compatible) ; le gas reste en **tBNB**, pas en FG42.
|
||||
|
||||
### Où aller plus loin dans ce dépôt
|
||||
|
||||
| Besoin | Fichier |
|
||||
|--------|---------|
|
||||
| Outils (Hardhat, Solidity, alternatives) | [`STACK-GLOSSAIRE-ET-PARCOURS.md`](STACK-GLOSSAIRE-ET-PARCOURS.md) |
|
||||
| Choix techniques et pourquoi | [README racine](../README.md#choix-techniques) |
|
||||
| Code source commenté | [`../code/contracts/FGC42Forge.sol`](../code/contracts/FGC42Forge.sol) |
|
||||
|
||||
167
tokenizerRendu/documentation/STACK-GLOSSAIRE-ET-PARCOURS.md
Normal file
167
tokenizerRendu/documentation/STACK-GLOSSAIRE-ET-PARCOURS.md
Normal file
@@ -0,0 +1,167 @@
|
||||
# Stack, outils, code — guide complet (dépôt autonome)
|
||||
|
||||
Ce fichier complète [`README.md`](../README.md) (choix techniques) et [`documentation/README.md`](README.md) (utilisation du token). **Aucun autre dépôt n’est requis** : tout est sous `README.md`, `code/`, `deployment/`, `documentation/`.
|
||||
|
||||
---
|
||||
|
||||
## 1. Autonomie du rendu
|
||||
|
||||
| Question | Réponse |
|
||||
|----------|---------|
|
||||
| Faut-il un dossier `docs/` externe ? | **Non.** |
|
||||
| Le token fonctionne sans redeploy ? | **Oui** — contrat déjà sur BSC Testnet ; voir [`deployment/addresses.json`](../deployment/addresses.json). |
|
||||
| Que faire après `git clone` ? | Suivre [§2 Parcours](#2-parcours-rendre-le-projet-opérationnel) ci-dessous. |
|
||||
| Où est le « vrai » code du token ? | [`code/contracts/FGC42Forge.sol`](../code/contracts/FGC42Forge.sol) |
|
||||
|
||||
---
|
||||
|
||||
## 2. Parcours : rendre le projet opérationnel
|
||||
|
||||
### A — Correcteur / utilisateur (sans redeploy)
|
||||
|
||||
Objectif : **comprendre** et **utiliser** FG42 on-chain.
|
||||
|
||||
1. Lire le [README racine](../README.md) (adresse, réseau, choix).
|
||||
2. Suivre [`documentation/README.md`](README.md) : MetaMask testnet, importer le contrat, transfer.
|
||||
3. Vérifier sur [BscScan token](https://testnet.bscscan.com/token/0x0c76df26A1149fDc22C8f994975705271b070fF4) et onglet **Contract** (source vérifiée).
|
||||
|
||||
**Prérequis :** navigateur + extension **MetaMask** + un peu de **tBNB** (faucet) sur le compte qui envoie des FG42.
|
||||
|
||||
### B — Développeur (tests locaux Hardhat)
|
||||
|
||||
Objectif : compiler et lancer les **tests automatisés** (chaîne simulée, pas de gas réel).
|
||||
|
||||
```bash
|
||||
# Depuis la racine du dépôt Git (contenu de ce rendu)
|
||||
cd code
|
||||
npm install
|
||||
npx hardhat build # compile Solidity → artifacts locaux
|
||||
npx hardhat test --grep FGC42Forge # 2 tests attendus
|
||||
```
|
||||
|
||||
| Étape | Rôle |
|
||||
|-------|------|
|
||||
| `cd code` | Hardhat lit `hardhat.config.ts` **uniquement** dans ce dossier. |
|
||||
| `npm install` | Installe Hardhat, OpenZeppelin, ethers, Mocha (voir `package.json`). |
|
||||
| `npx hardhat build` | Télécharge le compilateur Solidity si besoin, compile les contrats. |
|
||||
| `npx hardhat test` | Exécute les tests ; `--grep FGC42Forge` limite au token du sujet. |
|
||||
|
||||
### C — Développeur (redéployer sur testnet — optionnel)
|
||||
|
||||
Le projet est **déjà déployé**. Pour **reproduire** un deploy :
|
||||
|
||||
1. `cd code && cp .env.example .env` — renseigner `PRIVATE_KEY` (compte test) et `BSC_TESTNET_RPC`.
|
||||
2. Obtenir **tBNB** (faucet).
|
||||
3. `npx hardhat ignition deploy --network bscTestnet ignition/modules/FGC42Forge.ts`
|
||||
4. Mettre à jour [`deployment/addresses.json`](../deployment/addresses.json) et le README racine.
|
||||
|
||||
Détails : [`deployment/README.md`](../deployment/README.md).
|
||||
|
||||
---
|
||||
|
||||
## 3. Glossaire — chaque outil du projet
|
||||
|
||||
### Langage et contrat
|
||||
|
||||
| Terme | Définition | Rôle dans **ce** projet |
|
||||
|-------|------------|-------------------------|
|
||||
| **Solidity** | Langage de smart contracts pour chaînes **EVM** (Ethereum, BSC, etc.). | Fichier principal : [`FGC42Forge.sol`](../code/contracts/FGC42Forge.sol). |
|
||||
| **Smart contract** | Programme déployé on-chain à une **adresse** fixe ; état (soldes) stocké sur la blockchain. | Le token FG42 est un contrat BEP-20. |
|
||||
| **BEP-20** | Standard de jeton **fongible** sur BNB Chain (équivalent fonctionnel à **ERC-20**). | Respecté via OpenZeppelin `ERC20` + deploy sur BSC Testnet. |
|
||||
| **OpenZeppelin** | Bibliothèque Solidity auditée (`ERC20`, `Ownable`). | Évite de réécrire `transfer`, `balanceOf`, etc. |
|
||||
|
||||
### Environnement de développement (off-chain)
|
||||
|
||||
| Terme | Définition | Rôle dans **ce** projet |
|
||||
|-------|------------|-------------------------|
|
||||
| **Node.js / npm** | Runtime JavaScript + gestionnaire de paquets. | Exécute Hardhat et les tests TypeScript. |
|
||||
| **Hardhat** | **Framework** de développement Ethereum : compile Solidity, tests, réseaux, deploy. | Projet dans `code/` ; config : [`hardhat.config.ts`](../code/hardhat.config.ts). |
|
||||
| **Hardhat Ignition** | Sous-système de **déploiement déclaratif** (modules TypeScript). | [`ignition/modules/FGC42Forge.ts`](../code/ignition/modules/FGC42Forge.ts). |
|
||||
| **Mocha** | Framework de tests JavaScript. | Lance les fichiers `code/test/*.ts`. |
|
||||
| **ethers.js** | Bibliothèque pour parler à la blockchain (deploy, appels, signatures). | Utilisée dans les tests via `network.create()`. |
|
||||
| **TypeScript** | JavaScript typé. | Tests, config Hardhat, module Ignition (`.ts`). |
|
||||
|
||||
### Alternatives citées par le sujet (non utilisées ici)
|
||||
|
||||
| Outil | À quoi ça sert | Pourquoi Hardhat a été choisi |
|
||||
|-------|----------------|-------------------------------|
|
||||
| **Remix** | IDE web Solidity, compile + deploy dans le navigateur. | Tests reproductibles en CLI, Ignition, dépôt `code/` structuré. |
|
||||
| **Truffle** | Ancien framework compile / migrate / test. | Hardhat 3 plus actif, même écosystème npm. |
|
||||
| **Foundry** | Toolkit Rust (`forge`, `cast`) très rapide pour Solidity. | Stack 42 / Node déjà en place ; Mocha + Hardhat suffisants pour ce token simple. |
|
||||
|
||||
### Blockchain publique (on-chain)
|
||||
|
||||
| Terme | Définition | Rôle dans **ce** projet |
|
||||
|-------|------------|-------------------------|
|
||||
| **BNB Smart Chain (BSC)** | Blockchain EVM ; partenaire du sujet Tokenizer. | **Testnet** uniquement (pas de mainnet / argent réel). |
|
||||
| **Testnet** | Copie publique de la chaîne pour développeurs ; jetons sans valeur. | Chain ID **97**, gas en **tBNB**. |
|
||||
| **tBNB** | BNB de test pour payer le **gas** (frais de transaction). | Faucet BNB Chain ; requis pour deploy et transfers MetaMask. |
|
||||
| **RPC** | URL HTTP vers un nœud qui lit/écrit la chaîne. | `BSC_TESTNET_RPC` dans `.env` ; même URL que MetaMask (voir doc utilisateur). |
|
||||
| **Gas** | Coût d’exécution d’une transaction (deploy, `transfer`). | Payé en tBNB ; les FG42 ne paient pas le gas (séparé du token). |
|
||||
| **BscScan** | **Explorateur** : adresses, transactions, code source vérifié. | Preuve du deploy + historique des transfers. |
|
||||
|
||||
### Wallet (interface utilisateur)
|
||||
|
||||
| Terme | Définition | Rôle dans **ce** projet |
|
||||
|-------|------------|-------------------------|
|
||||
| **MetaMask** | Extension navigateur **wallet** : stocke des comptes (clés), signe des txs, affiche soldes. | Importer FG42 par **adresse du contrat** ; envoyer des FG42 ; réseau BSC Testnet. |
|
||||
| **Adresse `0x…`** | Identifiant public d’un compte ou d’un contrat (40 hex après `0x`). | Contrat token : voir README racine ; compte deployer dans `addresses.json`. |
|
||||
| **Clé privée / seed** | Secret qui contrôle un compte. | **Uniquement** dans `code/.env` local pour Hardhat ; **jamais** dans Git. MetaMask garde la clé dans l’extension. |
|
||||
|
||||
**MetaMask n’est pas obligatoire pour corriger le code** : les tests Hardhat simulent la chaîne. En **démo sujet**, MetaMask prouve l’usage réel du token BEP-20.
|
||||
|
||||
---
|
||||
|
||||
## 4. Carte du code (où trouver quoi)
|
||||
|
||||
| Chemin | Contenu |
|
||||
|--------|---------|
|
||||
| [`code/contracts/FGC42Forge.sol`](../code/contracts/FGC42Forge.sol) | Contrat token : constructeur, supply fixe, NatSpec, sécurité. |
|
||||
| [`code/test/FGC42Forge.ts`](../code/test/FGC42Forge.ts) | Tests : nom/symbole/supply, `transfer`, `owner`. |
|
||||
| [`code/hardhat.config.ts`](../code/hardhat.config.ts) | Solidity 0.8.34, optimizer production, réseau `bscTestnet`. |
|
||||
| [`code/ignition/modules/FGC42Forge.ts`](../code/ignition/modules/FGC42Forge.ts) | Déploiement du contrat sur le réseau choisi. |
|
||||
| [`code/.env.example`](../code/.env.example) | Modèle `RPC` + `PRIVATE_KEY` (sans secrets). |
|
||||
| [`deployment/addresses.json`](../deployment/addresses.json) | Adresse officielle, chainId, liens explorer. |
|
||||
| [`deployment/FGC42Forge_flat.sol`](../deployment/FGC42Forge_flat.sol) | Source aplati pour vérification BscScan. |
|
||||
| [`deployment/BSCSCAN_VERIFICATION.md`](../deployment/BSCSCAN_VERIFICATION.md) | Paramètres de vérification explorer. |
|
||||
|
||||
Fichiers **template Hardhat** (hors token évalué) : `Counter.sol`, `test/Counter.ts` — ignorés en soutenance sauf question sur le template.
|
||||
|
||||
---
|
||||
|
||||
## 5. Explication rapide du contrat (lien code)
|
||||
|
||||
Le contrat **hérite** de `ERC20` et `Ownable` :
|
||||
|
||||
1. **Constructeur** : définit nom `FGC42Forge`, symbole `FG42`, définit l’`owner`, appelle `_mint` une fois pour **1 000 000 × 10¹⁸** unités vers le déployeur.
|
||||
2. **Pas de `mint` exposé** : `totalSupply` ne peut plus augmenter via ce contrat.
|
||||
3. **Fonctions utilisées en démo** : `transfer`, `balanceOf`, `totalSupply`, `name`, `symbol` (héritées ERC-20).
|
||||
|
||||
Détail ligne par ligne : commentaires dans [`FGC42Forge.sol`](../code/contracts/FGC42Forge.sol) et index [`code/README.md`](../code/README.md).
|
||||
|
||||
---
|
||||
|
||||
## 6. Commandes Hardhat — récapitulatif
|
||||
|
||||
Toutes depuis **`code/`** :
|
||||
|
||||
| Commande | À quoi elle sert |
|
||||
|----------|------------------|
|
||||
| `npm install` | Installe les dépendances du projet (`package.json`). |
|
||||
| `npx hardhat build` | Compile les contrats Solidity. |
|
||||
| `npx hardhat test` | Lance tous les tests (FGC42Forge + Counter template). |
|
||||
| `npx hardhat test --grep FGC42Forge` | Tests **uniquement** du token du sujet. |
|
||||
| `npx hardhat ignition deploy --network bscTestnet ignition/modules/FGC42Forge.ts` | Déploie le contrat sur BSC Testnet (gas tBNB, `.env` requis). |
|
||||
| `npx hardhat flatten contracts/FGC42Forge.sol` | Produit un fichier unique pour BscScan (voir deployment). |
|
||||
|
||||
---
|
||||
|
||||
## 7. Documentation sujet — où c’est couvert
|
||||
|
||||
| Exigence sujet | Fichier(s) dans ce dépôt |
|
||||
|----------------|---------------------------|
|
||||
| README : choix + pourquoi | [`../README.md`](../README.md) § Choix techniques |
|
||||
| `code/` commenté, lisible | [`FGC42Forge.sol`](../code/contracts/FGC42Forge.sol), [`code/README.md`](../code/README.md) |
|
||||
| `deployment/` + adresse + réseau | [`deployment/`](../deployment/), README racine |
|
||||
| Comprendre + utiliser le token | [`documentation/README.md`](README.md) |
|
||||
| Whitepaper léger (rôle, limites) | [`documentation/README.md`](README.md) § 5 |
|
||||
Reference in New Issue
Block a user