endprojetnobonus

This commit is contained in:
2026-10-20 15:09:41 +02:00
parent b374c4a68f
commit cdbd7c2eee
13 changed files with 170 additions and 121 deletions

View File

@@ -1,17 +1,51 @@
// 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 — jeton fongible pour BNB Smart Chain Testnet
/// @notice Standard **BEP-20** (exigé sur BSC) : même interface que l’ERC-20 sur l’EVM.
/// On importe OpenZeppelin `ERC20` ; après déploiement sur BSC, BscScan affiche un token BEP-20.
/// Phrase soutenance : « BEP-20 sur la chaîne, implémenté via ERC20 OpenZeppelin. »
/**
* @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().
// -------------------------------------------------------------------------
}