# Vérification du contrat sur BscScan (testnet) Fiche **correction / soutenance** : réglages BscScan utilisés pour **publier le code source** du contrat et obtenir le badge *Verified* — l’explorateur recompile ce code et vérifie qu’il produit le **même bytecode** que celui déjà enregistré à l’adresse sur la chaîne (donc le même programme que dans le dépôt `code/`). > **Vocabulaire (français)** : on dit **le code source** (masculin : *le* code) ou **la source** du contrat, pas « le source » (calque de l’anglais *source code*). Le **bytecode**, lui, est le binaire déployé on-chain, illisible sans vérification. ## Statut | Champ | Valeur | |-------|--------| | **Vérifié** | Oui (2026-10-20) | | **Contrat** | `FGC42Forge` | | **Adresse** | `0x0c76df26A1149fDc22C8f994975705271b070fF4` | | **Réseau** | BNB Smart Chain Testnet (chainId `97`) | ## Transaction de création (deploy) | Champ | Valeur | |-------|--------| | **Tx hash** | `0xb6a0ec09d4db0e9f0686aca6ad5d8ca71cecaf8d43405eeed214736bb8574072` | | **Lien** | https://testnet.bscscan.com/tx/0xb6a0ec09d4db0e9f0686aca6ad5d8ca71cecaf8d43405eeed214736bb8574072 | | **Bloc** | `137872368` | | **Deployer** | `0xB6bE1878BfaF1FFC8503E752b1D733Ad7b93603c` | ## Fichier `FGC42Forge_flat.sol` — rôle et génération ### Pourquoi ce fichier existe Dans le dépôt, le token est écrit dans **`code/contracts/FGC42Forge.sol`** avec des **imports** OpenZeppelin (`ERC20`, `Ownable`). Sur disque, le compilateur lit plusieurs fichiers. BscScan, en mode **« Solidity (Single file) »**, attend **un seul fichier texte** contenant **tout** le code compilé ensemble (ton contrat **et** les bibliothèques). Ce n’est **pas** le bytecode : c’est le **source Solidity fusionné**, utilisé par l’explorateur pour recompiler et comparer au bytecode déjà déployé sur la chaîne. | Fichier | Rôle | |---------|------| | `code/contracts/FGC42Forge.sol` | Source **maintenu** dans le projet (lisible, versionné). | | [`FGC42Forge_flat.sol`](FGC42Forge_flat.sol) | **Copie de travail** pour BscScan : même logique, **aplati** (~740 lignes). Utile en correction pour refaire une vérif sans recopier à la main les imports OZ. | Le contrat **on-chain** ne change pas quand tu génères ou modifies ce fichier : seule la **publication du code source** sur BscScan s’en sert. ### Commande utilisée pour le générer À lancer depuis la racine du dépôt école (chemins relatifs au dossier `tokenizerRendu/`) : ```bash cd code npx hardhat flatten contracts/FGC42Forge.sol > ../deployment/FGC42Forge_flat.sol ``` | Partie | Signification | |--------|----------------| | `cd code` | Hardhat lit `hardhat.config.ts` et `node_modules` dans **`tokenizerRendu/code/`**. | | `npx hardhat flatten` | Tâche Hardhat qui **fusionne** un contrat et toutes ses dépendances Solidity en **un seul** flux de texte. | | `contracts/FGC42Forge.sol` | Point d’entrée : le fichier de ton token (pas Counter). | | `>` | Redirection : écrit la sortie dans un fichier au lieu de l’afficher dans le terminal. | | `../deployment/FGC42Forge_flat.sol` | Fichier de sortie dans **`deployment/`** (à côté de cette fiche). | **Vérification rapide :** ouvrir `FGC42Forge_flat.sol` — les premières lignes mentionnent `Sources flattened with hardhat` ; plus bas, tu dois retrouver `contract FGC42Forge`. **Quand régénérer :** si tu modifies `FGC42Forge.sol` ou la version OpenZeppelin, puis redéploies ou refais une vérif BscScan — regénère le `.flat.sol` avant de le coller sur l’explorateur. --- ## Paramètres BscScan « Verify & Publish » (succès) | Paramètre | Valeur retenue | |-----------|----------------| | **Méthode** | Solidity (**Single file**) | | **Fichier source collé** | Contenu intégral de [`FGC42Forge_flat.sol`](FGC42Forge_flat.sol) (voir section ci-dessus) | | **Nom du contrat** | `FGC42Forge` | | **Compilateur (liste BscScan)** | `v0.8.24+commit.89d56535` *(valeur affichée par BscScan après vérif réussie)* | | **Optimisation** | **Activée** (`Yes` / `1`) | | **Optimizer runs** | `200` | | **Licence** | MIT | | **Arguments du constructeur** | *(vide)* | > **Note dev :** le projet compile en local avec **Solidity 0.8.34** (Hardhat 3). Pour la vérification, BscScan a accepté la combinaison **single file aplati + optimizer 200**. En cas de nouvelle tentative, aligner **optimization Yes / 200** ; si échec « bytecode mismatch », essayer **Standard JSON Input** depuis `code/ignition/deployments/chain-97/build-info/solc-0_8_34-….json`. ## Liens à montrer en évaluation - Contrat vérifié : https://testnet.bscscan.com/address/0x0c76df26A1149fDc22C8f994975705271b070fF4#code - Token FG42 : https://testnet.bscscan.com/token/0x0c76df26A1149fDc22C8f994975705271b070fF4 ## Rappel — régénérer le fichier aplati ```bash cd code npx hardhat flatten contracts/FGC42Forge.sol > ../deployment/FGC42Forge_flat.sol ``` *(Depuis `tokenizerRendu/` ; si tu es à la racine du dépôt de travail, préfixe par `tokenizerRendu/`.)*