// SPDX-License-Identifier: MIT pragma solidity ^0.8.34; // --- Imports (OpenZeppelin 5.x) --- // ERC20 : implémentation standard d’un jeton fongible (transfer, balanceOf, totalSupply, …). // Sur BNB Smart Chain, l’explorateur qualifie ce type de jeton en BEP-20. // Ownable : un compte « owner » pour l’administration du contrat (sans mint dans ce projet). import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; /** * @title FGC42Forge * @notice Jeton pédagogique du projet 42 Tokenizer — réseau BNB Smart Chain Testnet uniquement. * * Contraintes sujet : * - Nom contenant « 42 » : FGC42Forge (symbole FG42). * - Standard de la chaîne : BEP-20 (code via OpenZeppelin ERC20). * - Supply fixe : 1 000 000 jetons, créés une seule fois au déploiement (pas de mint public). * * Sécurité (soutenance) : * - Toute la supply est mintée au constructeur vers le déployeur (msg.sender). * - Aucune fonction publique permettant d’augmenter totalSupply après deploy. * - owner() peut gérer le rôle admin OpenZeppelin (ex. transferOwnership), pas créer de FG42. */ contract FGC42Forge is ERC20, Ownable { /** * @dev Offre initiale en plus petite unité (18 décimales, convention ERC-20). * 1 FG42 affiché dans un wallet = 1 * 10^18 unités internes. * Literal : 1_000_000 * 10^18 (lisible ; équivalent à 1_000_000 * 10**decimals()). */ uint256 private constant INITIAL_SUPPLY = 1_000_000 * (10 ** 18); /** * @notice Déploie le token et forge toute la supply pour le compte qui envoie la transaction. * * @dev Ordre des initialiseurs de héritage : * 1. ERC20("FGC42Forge", "FG42") — nom et symbole on-chain (MetaMask, BscScan). * 2. Ownable(msg.sender) — le déployeur devient owner (admin du contrat). * 3. _mint(msg.sender, INITIAL_SUPPLY) — émission unique ; pas d’appel mint ultérieur prévu. */ constructor() ERC20("FGC42Forge", "FG42") Ownable(msg.sender) { _mint(msg.sender, INITIAL_SUPPLY); } // ------------------------------------------------------------------------- // Fonctions ERC-20 héritées (non redéfinies ici) — utilisables telles quelles : // name(), symbol(), decimals(), totalSupply(), balanceOf(), transfer(), // approve(), transferFrom(), allowance(), événements Transfer / Approval. // Fonctions Ownable héritées : owner(), transferOwnership(), renounceOwnership(). // ------------------------------------------------------------------------- }