Files
tokenizer/tokenizerRendu/deployment/BSCSCAN_VERIFICATION.md
2026-10-20 15:00:37 +02:00

91 lines
5.0 KiB
Markdown
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.
# 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/`.)*