Files
tokenizer/tokenizerRendu/documentation/STACK-GLOSSAIRE-ET-PARCOURS.md
2026-10-22 11:39:33 +02:00

168 lines
9.7 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.
# 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 |