endprojetnobonus
This commit is contained in:
@@ -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().
|
||||
// -------------------------------------------------------------------------
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user