# Code — FGC42Forge (Hardhat 3) Sources du token **FGC42Forge** (symbole **FG42**), standard **BEP-20**, déploiement prévu sur **BNB Smart Chain Testnet** (chainId **97**). Stack : **Solidity**, **Hardhat 3**, **OpenZeppelin**, tests **Mocha + ethers** et tests Solidity (`.t.sol`). ### BEP-20 vs `ERC20` dans le code - **Rendu / soutenance :** token **BEP-20** sur **BNB Smart Chain Testnet** (chainId 97). - **Code :** héritage **OpenZeppelin `ERC20`** — norme EVM identique en pratique ; pas de bibliothèque `BEP20` séparée. - **Après deploy :** BscScan classera le contrat en **BEP-20** ; le source reste `import {ERC20} from "@openzeppelin/contracts/..."`. > Le dossier peut encore contenir l’exemple **Counter** (template Hardhat) en attendant nettoyage. ## Prérequis - Node.js ≥ 18 (Hardhat 3 recommande v22+) - Compte testnet avec **tBNB** (ex. MetaMask, réseau BSC Testnet) ## Installation ```shell cd code npm install ``` ## Variables d’environnement Copier le modèle et remplir les valeurs **localement** (ne jamais committer `.env`) : ```shell cp .env.example .env ``` | Variable | Description | |----------|-------------| | `BSC_TESTNET_RPC` | URL RPC du testnet BSC (défaut dans `.env.example`) | | `PRIVATE_KEY` | Clé privée du compte de **test** uniquement (préfixe `0x`) | Hardhat lit ces variables via `hardhat.config.ts` et `dotenv`. ## Commandes utiles Compiler les contrats : ```shell npx hardhat build ``` Lancer tous les tests (exemple Counter, en attendant FGC42Forge) : ```shell npx hardhat test ``` Tests séparés : ```shell npx hardhat test solidity npx hardhat test mocha ``` ## Réseau `bscTestnet` Le réseau **`bscTestnet`** est déclaré dans `hardhat.config.ts`. Pour un déploiement (plus tard, avec Ignition ou un script) : ```shell npx hardhat ignition deploy --network bscTestnet ignition/modules/.ts ``` Remplacer le module par celui du token une fois le contrat prêt. ## Structure ``` contracts/ Contrats Solidity (+ tests .t.sol) test/ Tests TypeScript (Mocha) ignition/ Modules de déploiement Hardhat Ignition scripts/ Scripts `hardhat run` hardhat.config.ts ```