Files
tokenizer/tokenizerRendu/code/contracts/FGC42Forge.sol
2026-10-20 15:09:41 +02:00

52 lines
2.6 KiB
Solidity
Raw Permalink 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.
// 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().
// -------------------------------------------------------------------------
}