dochardhat_solidity
This commit is contained in:
160
docs/pedagogie/03-hardhat-et-alternatives.md
Normal file
160
docs/pedagogie/03-hardhat-et-alternatives.md
Normal file
@@ -0,0 +1,160 @@
|
||||
# Hardhat et alternatives (Remix, Truffle, Foundry…)
|
||||
|
||||
> **Contexte :** projet Tokenizer — dossier `code/` + `deployment/` ([sujet ch. IV](../sujets/tokenizer.md#chapitre-iv--partie-obligatoire)).
|
||||
> **Choix projet :** [decisions-projet.md](decisions-projet.md) → **Hardhat** + OpenZeppelin.
|
||||
|
||||
---
|
||||
|
||||
## 1. Le problème que résout une « toolchain »
|
||||
|
||||
Écrire un fichier `.sol` ne suffit pas. Il faut :
|
||||
|
||||
| Besoin | Sans outil | Avec toolchain |
|
||||
|--------|------------|----------------|
|
||||
| Traduire Solidity en bytecode | Impossible à la main | **Compilation** |
|
||||
| Vérifier que `transfer` marche | Deploy à chaque essai sur testnet (gas) | **Tests** locaux |
|
||||
| Envoyer le contrat sur BSC testnet | Tx manuelle complexe | **Scripts de déploiement** |
|
||||
| Reproduire le deploy pour l’éval | Oublis, « ça marche sur ma machine » | Scripts + config **versionnés** dans Git |
|
||||
|
||||
Le sujet cite explicitement : **IDE**, **Remix**, **Truffle** ou **Hardhat** — ce sont des **outils** pour compiler, tester et déployer, pas le standard BEP-20 lui-même.
|
||||
|
||||
---
|
||||
|
||||
## 2. C’est quoi Hardhat ?
|
||||
|
||||
**Hardhat** est un **environnement de développement** pour smart contracts sur chaînes **EVM** (Ethereum, BSC, etc.).
|
||||
|
||||
- Écrit en **JavaScript / TypeScript** (Node.js).
|
||||
- Projet typique : `hardhat.config.js`, dossier `contracts/`, `scripts/`, `test/`.
|
||||
- Commandes courantes :
|
||||
- `npx hardhat compile` — compile Solidity → artefacts dans `artifacts/`
|
||||
- `npx hardhat test` — lance les tests (souvent avec **ethers.js**)
|
||||
- `npx hardhat run scripts/deploy.js --network bscTestnet` — déploie sur le testnet
|
||||
- `npx hardhat node` — blockchain **locale** temporaire (0 tBNB réel, pour dev)
|
||||
|
||||
**Rôle dans Tokenizer :**
|
||||
|
||||
| Dossier sujet | Rôle Hardhat |
|
||||
|---------------|--------------|
|
||||
| **`code/`** | Sources `.sol`, config Hardhat, tests, `package.json` |
|
||||
| **`deployment/`** | Scripts / notes de deploy (souvent `scripts/deploy.js` appelé depuis `code/`, ou copie documentée — l’important est que l’évaluateur retrouve **comment** redéployer) |
|
||||
|
||||
Hardhat ne remplace pas **MetaMask** : MetaMask **signe** ; Hardhat utilise ta **clé privée** (via `.env`) pour envoyer la transaction de deploy depuis le terminal.
|
||||
|
||||
---
|
||||
|
||||
## 3. Les briques autour de Hardhat (vocabulaire)
|
||||
|
||||
| Terme | Rôle |
|
||||
|-------|------|
|
||||
| **Solidity** | Langage du contrat (FGC42Forge.sol) |
|
||||
| **OpenZeppelin** | Bibliothèque de contrats éprouvés (`ERC20`, `Ownable`) |
|
||||
| **ethers.js** | Bibliothèque JS pour parler à la chaîne (lire balances, envoyer txs) |
|
||||
| **RPC** | URL dans `hardhat.config` → même idée que MetaMask ([02-web3 § 3.9](02-web3-comprendre.md#39-réseau-rpc)) |
|
||||
| **@nomicfoundation/hardhat-toolbox** | Pack plugins (tests, verify, etc.) recommandé par Hardhat |
|
||||
| **artifacts/** | Sortie compilée (bytecode) — souvent **gitignoré**, régénéré par `compile` |
|
||||
| **BscScan verify** | Publier le code source sur l’explorer (étape deploy, hors Hardhat strict mais complémentaire) |
|
||||
|
||||
---
|
||||
|
||||
## 4. Alternatives citées par le sujet (et autres)
|
||||
|
||||
### Remix (IDE navigateur)
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **C’est quoi** | Site [remix.ethereum.org](https://remix.ethereum.org) : éditeur + compile + deploy **dans le navigateur**. |
|
||||
| **Pour** | Prototyper vite, premier contrat, démo visuelle, cours. |
|
||||
| **Contre** | Moins pratique pour un **dépôt 42** structuré (`code/`, tests, CI, scripts reproductibles). |
|
||||
| **Tokenizer** | Autorisé par le sujet ; beaucoup d’étudiants font un **premier test** sur Remix puis migrent vers Hardhat/Truffle pour le rendu. |
|
||||
|
||||
### Truffle
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **C’est quoi** | Framework Node.js **plus ancien** que Hardhat : Truffle Compile, Migrate, Ganache. |
|
||||
| **Pour** | Cycle complet migrations + tests ; encore vu en entreprise / anciens tutos. |
|
||||
| **Contre** | Écosystème moins « par défaut » qu’Hardhat aujourd’hui ; config parfois plus lourde. |
|
||||
| **Exemple 42** | [BdClement/Tokenizer](https://github.com/BdClement/Tokenizer) a choisi **Truffle** + Alchemy RPC — **valide** si README explique les choix. |
|
||||
|
||||
### Foundry (forge / cast)
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **C’est quoi** | Toolchain en **Rust** : `forge` (compile/test), `cast` (CLI), très rapide, tests souvent **en Solidity**. |
|
||||
| **Pour** | Perf, culture « smart contract pur », projets DeFi avancés. |
|
||||
| **Contre** | Courbe d’apprentissage différente (moins JS) ; moins cité dans le PDF Tokenizer. |
|
||||
| **Tokenizer** | Possible si BEP-20 + deploy testnet + doc — à **justifier** dans le README école. |
|
||||
|
||||
### Autres (hors PDF mais utiles à situer)
|
||||
|
||||
| Outil | Note |
|
||||
|-------|------|
|
||||
| **Ganache / `hardhat node`** | Blockchain locale pour tests |
|
||||
| **Brownie** | Python — plutôt écosystème Ethereum historique |
|
||||
| **Thirdweb, etc.** | Abstractions / SDK — le sujet demande de **comprendre** ce que tu déploies ; éviter le « tout no-code » en soutenance |
|
||||
|
||||
---
|
||||
|
||||
## 5. Tableau comparatif (révision soutenance)
|
||||
|
||||
| Critère | Hardhat | Remix | Truffle | Foundry |
|
||||
|---------|---------|-------|---------|---------|
|
||||
| Où ça tourne | Terminal + VS Code | Navigateur | Terminal | Terminal |
|
||||
| Langage orchestration | JS/TS | GUI | JS | Rust + Solidity tests |
|
||||
| Tests automatisés | ✅ (Mocha/Chai) | Limité | ✅ | ✅ (forge) |
|
||||
| Scripts deploy reproductibles | ✅ | Manuel | ✅ (migrations) | ✅ |
|
||||
| Cité sujet Tokenizer | ✅ | ✅ | ✅ | ❌ (mais EVM OK) |
|
||||
| Fit dossiers `code/` + `deployment/` | ✅ très bon | Moyen seul | ✅ bon | ✅ bon |
|
||||
|
||||
Le sujet **n’impose pas** Hardhat : il impose de **maîtriser un outil** et de livrer du **code commenté** + deploy documenté.
|
||||
|
||||
---
|
||||
|
||||
## 6. Pourquoi Hardhat pour *ton* parcours FGC ?
|
||||
|
||||
| Raison | Détail |
|
||||
|--------|--------|
|
||||
| Alignement doc 42 / tutoriels BEP-20 | Beaucoup d’exemples OpenZeppelin + Hardhat |
|
||||
| Un seul écosystème **Node** | `npm install`, proche d’autres stacks JS |
|
||||
| Tests avant testnet | Économise tes **0,1 tBNB** |
|
||||
| `hardhat.config.js` | Réseau **bscTestnet** chainId **97** = même logique que MetaMask |
|
||||
| Séparation claire | `contracts/` + `scripts/` → facile à expliquer en **code review** |
|
||||
|
||||
Tu pourrais dire en soutenance :
|
||||
|
||||
> « J’ai choisi **Hardhat** pour compiler et tester **FGC42Forge** en local, puis déployer sur **BSC Testnet** avec un script reproductible dans le dépôt, comme le sujet le prévoit pour la partie deployment. »
|
||||
|
||||
---
|
||||
|
||||
## 7. Flux mental : de Hardhat à la chaîne
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
subgraph local [Machine dev]
|
||||
SOL[FGC42Forge.sol]
|
||||
HH[Hardhat compile / test]
|
||||
SCRIPT[script deploy.js]
|
||||
end
|
||||
subgraph chain [BSC Testnet 97]
|
||||
RPC[RPC URL]
|
||||
SC[Adresse contrat]
|
||||
end
|
||||
SOL --> HH
|
||||
HH --> SCRIPT
|
||||
SCRIPT -->|tx signée PRIVATE_KEY| RPC
|
||||
RPC --> SC
|
||||
SC --> BSCScan[testnet.bscscan.com]
|
||||
```
|
||||
|
||||
MetaMask reste utile pour **démos manuelles** (`transfer` FG42) ; Hardhat sert surtout au **deploy** et aux **tests**.
|
||||
|
||||
---
|
||||
|
||||
## 8. Liens
|
||||
|
||||
- **Index complet tutos & docs :** [ressources-solidity-hardhat.md](ressources-solidity-hardhat.md)
|
||||
- [Hardhat — Getting started](https://hardhat.org/hardhat-runner/docs/getting-started)
|
||||
- [OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts/)
|
||||
- Étape suivante : [etape-02-init-hardhat.md](etapes/etape-02-init-hardhat.md)
|
||||
- [guide-realisation.md](guide-realisation.md)
|
||||
@@ -12,6 +12,19 @@ Parcours pour construire le projet **étape par étape** et le défendre en sout
|
||||
|
||||
→ **[decisions-projet.md](decisions-projet.md)** — choix token / chaîne / wallet (**travail**, pas rendu école).
|
||||
|
||||
→ **[03-hardhat-et-alternatives.md](03-hardhat-et-alternatives.md)** — **Hardhat**, Remix, Truffle, Foundry (sujet ch. IV).
|
||||
|
||||
→ **[ressources-solidity-hardhat.md](ressources-solidity-hardhat.md)** — **tutos & docs officiels** Solidity, Hardhat, OpenZeppelin, BSC (parcours d’apprentissage).
|
||||
|
||||
## Apprentissage Solidity / Hardhat
|
||||
|
||||
| Priorité | Document / lien |
|
||||
|----------|-----------------|
|
||||
| Index ressources | [ressources-solidity-hardhat.md](ressources-solidity-hardhat.md) |
|
||||
| Concepts Web3 | [02-web3-comprendre.md](02-web3-comprendre.md) |
|
||||
| Pourquoi Hardhat | [03-hardhat-et-alternatives.md](03-hardhat-et-alternatives.md) |
|
||||
| Plan lecture minimum (avant étape 3) | [ressources-solidity-hardhat.md § 8](ressources-solidity-hardhat.md#8-plan-de-lecture-minimum-avant-létape-3) |
|
||||
|
||||
→ **[01-apports-pedagogiques.md](01-apports-pedagogiques.md)** — **ce que ce projet t’apporte** (compétences, concepts).
|
||||
|
||||
→ **[02-web3-comprendre.md](02-web3-comprendre.md)** — **Web3 : définition détaillée** (RPC, ERC-20/BEP-20, **PoW/PoS/PoA**, **multisig**, owner, BNB / Binance).
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
# Étape 2 — Initialiser Hardhat dans `tokenizerRendu/code/`
|
||||
|
||||
> **Sujet (ch. IV) :** dossier **`code/`** à la racine du dépôt école ; maîtriser la toolchain (Hardhat cité) ; code commenté plus tard (étape 3).
|
||||
> **Prérequis :** étape 1 ✅ (réseau BSC Testnet 97, tBNB sur **FGC_account**).
|
||||
> **Prérequis :** étape 1 ✅ (réseau BSC Testnet 97, tBNB sur **FGC_account**).
|
||||
> **Lire d’abord (recommandé) :** [Hardhat et alternatives](03-hardhat-et-alternatives.md) · [Ressources Solidity / Hardhat](ressources-solidity-hardhat.md) (§ 2 + § 8 plan minimum).
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
# Guide de réalisation — Tokenizer
|
||||
|
||||
> **Objectif :** document de travail pour **coder, déployer et défendre** le projet. À mettre à jour quand le code existe (chemins, commandes, adresses).
|
||||
> **Référence sujet :** [tokenizer.md](../sujets/tokenizer.md)
|
||||
> **Référence sujet :** [tokenizer.md](../sujets/tokenizer.md)
|
||||
> **Apprentissage :** [ressources-solidity-hardhat.md](ressources-solidity-hardhat.md)
|
||||
|
||||
---
|
||||
|
||||
|
||||
163
docs/pedagogie/ressources-solidity-hardhat.md
Normal file
163
docs/pedagogie/ressources-solidity-hardhat.md
Normal file
@@ -0,0 +1,163 @@
|
||||
# Ressources — apprendre Solidity & Hardhat (Tokenizer)
|
||||
|
||||
> Liens **officiels** et parcours suggérés pour le projet **FGC42Forge** (BEP-20, BSC Testnet, Hardhat).
|
||||
> Priorité : comprendre ce que tu déploies, pas tout lire d’un coup.
|
||||
|
||||
---
|
||||
|
||||
## Parcours suggéré (ordre)
|
||||
|
||||
| Phase | Quand | Objectif | Section ci-dessous |
|
||||
|-------|--------|----------|-------------------|
|
||||
| **A** | Avant / pendant étape 2 | Solidity : types, fonctions, `constructor` | § 1 |
|
||||
| **B** | Étapes 2–3 | Hardhat : compile, test, config réseau | § 2 |
|
||||
| **C** | Étape 3 | ERC-20 / OpenZeppelin, `Ownable` | § 3 |
|
||||
| **D** | Étape 4+ | Deploy, verify BscScan, gas | § 4 |
|
||||
| **E** | Optionnel | Approfondir Web3 / BNB | § 5 |
|
||||
|
||||
Croiser avec : [02-web3-comprendre.md](02-web3-comprendre.md) · [03-hardhat-et-alternatives.md](03-hardhat-et-alternatives.md) · [decisions-projet.md](decisions-projet.md).
|
||||
|
||||
---
|
||||
|
||||
## 1. Solidity — bases
|
||||
|
||||
### Documentation officielle (référence)
|
||||
|
||||
| Ressource | URL | À utiliser pour |
|
||||
|-----------|-----|-----------------|
|
||||
| **Solidity docs** (EN, référence) | https://docs.soliditylang.org/ | Syntaxe, types, visibilité, modifiers, erreurs |
|
||||
| **By example** (courts extraits) | https://docs.soliditylang.org/en/latest/by-example.html | `mapping`, `modifier`, `events` |
|
||||
| **Structure d’un contrat** | https://docs.soliditylang.org/en/latest/structure-of-a-contract.html | `state variables`, `functions`, `constructor` |
|
||||
| **Sécurité (patterns)** | https://docs.soliditylang.org/en/latest/security-considerations.html | Bonnes pratiques (soutenance) |
|
||||
|
||||
### Chapitres utiles pour Tokenizer (lecture ciblée)
|
||||
|
||||
| Chapitre / thème | Pourquoi pour FGC42Forge |
|
||||
|------------------|---------------------------|
|
||||
| **Types** (`uint256`, `address`) | Soldes, adresses owner / holders |
|
||||
| **Fonctions** (`public`, `view`, `pure`) | `balanceOf`, `transfer` (via ERC20) |
|
||||
| **`constructor`** | Mint initial de la supply au deploy |
|
||||
| **`modifier`** | Comprendre `onlyOwner` (OpenZeppelin) |
|
||||
| **`require` / revert** | Tests « non-owner ne peut pas mint » |
|
||||
| **Héritage** | `contract FGC42Forge is ERC20, Ownable` |
|
||||
|
||||
### Tutoriels / cours (gratuits)
|
||||
|
||||
| Ressource | URL | Note |
|
||||
|-----------|-----|------|
|
||||
| **Ethereum.org — Solidity** | https://ethereum.org/fr/developers/docs/programming-languages/solidity/ | Point d’entrée FR, liens vers la doc |
|
||||
| **Ethereum.org — smart contracts** | https://ethereum.org/fr/developers/docs/smart-contracts/ | Concepts avant le code |
|
||||
| **CryptoZombies** (jeu, EN) | https://cryptozombies.io/ | Solidity ludique — chapitres 1–3 suffisent pour démarrer |
|
||||
| **OpenZeppelin — Learn** | https://docs.openzeppelin.com/learn/ | Articles ERC-20, access control (EN) |
|
||||
|
||||
### Vidéos (optionnel, EN souvent)
|
||||
|
||||
Chercher sur YouTube : *「Solidity tutorial 2024」* + *「ERC20 OpenZeppelin」* — privilégier chaînes qui montrent **testnet**, pas mainnet avec argent réel.
|
||||
|
||||
---
|
||||
|
||||
## 2. Hardhat — bases
|
||||
|
||||
### Documentation officielle
|
||||
|
||||
| Ressource | URL | À utiliser pour |
|
||||
|-----------|-----|-----------------|
|
||||
| **Hardhat — Getting started** | https://hardhat.org/hardhat-runner/docs/getting-started | Install, premier `compile` |
|
||||
| **Configuration** | https://hardhat.org/hardhat-runner/docs/config | `networks.bscTestnet`, `solidity` version |
|
||||
| **Testing contracts** | https://hardhat.org/hardhat-runner/docs/guides/test-contracts | Écrire tests étape 3 |
|
||||
| **Deploying** | https://hardhat.org/hardhat-runner/docs/guides/deploying | Scripts → dossier `deployment/` |
|
||||
| **Hardhat Network** | https://hardhat.org/hardhat-network/docs | `hardhat node` — tests sans tBNB |
|
||||
| **Hardhat Toolbox** | https://hardhat.org/hardhat-runner/plugins/nomicfoundation-hardhat-toolbox | Plugins inclus (`ethers`, verify, etc.) |
|
||||
|
||||
### Tutoriels alignés BSC / testnet
|
||||
|
||||
| Ressource | URL | Note |
|
||||
|-----------|-----|------|
|
||||
| **BNB Chain — dev docs** | https://docs.bnbchain.org/bnb-smart-chain/developers/ | Faucet, réseau, outils |
|
||||
| **How to Create a BEP20 Token** (QuickNode) | https://www.quicknode.com/guides/smart-contract-development/how-to-create-and-deploy-a-bep-20-token | Proche du sujet Tokenizer (vérifie dates / versions) |
|
||||
| **OpenZeppelin — ERC20 guide** | https://docs.openzeppelin.com/contracts/5.x/erc20 | Utilisation `ERC20` + `_mint` |
|
||||
|
||||
### Commandes à connaître (fiche mémo)
|
||||
|
||||
```bash
|
||||
cd tokenizerRendu/code
|
||||
npm install
|
||||
npx hardhat compile # compile contracts/
|
||||
npx hardhat test # tests/
|
||||
npx hardhat node # chaîne locale (optionnel)
|
||||
npx hardhat run scripts/deploy.js --network bscTestnet
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. ERC-20 / BEP-20 & OpenZeppelin (cœur du projet)
|
||||
|
||||
| Ressource | URL | Contenu |
|
||||
|-----------|-----|---------|
|
||||
| **OpenZeppelin ERC20** | https://docs.openzeppelin.com/contracts/5.x/erc20 | API : `transfer`, `approve`, `_mint`, `_burn` |
|
||||
| **OpenZeppelin Ownable** | https://docs.openzeppelin.com/contracts/5.x/access-control#ownership-and-ownable | `owner()`, `onlyOwner` |
|
||||
| **EIP-20 (standard)** | https://eips.ethereum.org/EIPS/eip-20 | Spec originale (= logique BEP-20) |
|
||||
| **Doc projet — BEP-20** | [02-web3 § 6](02-web3-comprendre.md#6-standards-erc-20-et-bep-20) | Lien sujet 42 + BSC |
|
||||
|
||||
**Exercice mental :** lire la doc `ERC20` et lister quelles fonctions tu **exposes** dans FGC42Forge et lesquelles viennent **uniquement** du parent OpenZeppelin.
|
||||
|
||||
---
|
||||
|
||||
## 4. Déploiement, explorer, verify
|
||||
|
||||
| Ressource | URL | Contenu |
|
||||
|-----------|-----|---------|
|
||||
| **BscScan — verify** | https://testnet.bscscan.com/verifyContract | Publier le source après deploy |
|
||||
| **Hardhat — verify plugin** | https://hardhat.org/hardhat-runner/plugins/nomicfoundation-hardhat-verify | `npx hardhat verify --network bscTestnet <adresse>` |
|
||||
| **BNB — faucet** | https://docs.bnbchain.org/bnb-smart-chain/developers/faucet/ | tBNB (tu as déjà utilisé Telegram) |
|
||||
| **Guide réalisation** | [guide-realisation.md](guide-realisation.md) | Étapes deploy du dépôt perso |
|
||||
|
||||
---
|
||||
|
||||
## 5. ethers.js (utilisé par Hardhat)
|
||||
|
||||
| Ressource | URL | Contenu |
|
||||
|-----------|-----|---------|
|
||||
| **ethers v6 docs** | https://docs.ethers.org/v6/ | `Wallet`, `Contract`, `parseEther` |
|
||||
| **Hardhat + ethers** | https://hardhat.org/hardhat-runner/docs/advanced/using-ethers | Dans tests et scripts deploy |
|
||||
|
||||
Tu n’as pas besoin de tout maîtriser : savoir lire un script `deploy.js` qui fait `const Token = await ethers.getContractFactory("FGC42Forge")` suffit au début.
|
||||
|
||||
---
|
||||
|
||||
## 6. Outils complémentaires (sujet les cite)
|
||||
|
||||
| Outil | URL | Usage |
|
||||
|-------|-----|--------|
|
||||
| **Remix IDE** | https://remix.ethereum.org/ | Test rapide d’un `.sol` sans Hardhat |
|
||||
| **Truffle docs** | https://archive.truffleframework.com/docs | Comparaison — [03-hardhat](03-hardhat-et-alternatives.md) |
|
||||
| **Solidity VS Code** | Extension « Solidity » (Nomic Foundation) | Coloration, compilation locale |
|
||||
|
||||
---
|
||||
|
||||
## 7. Fiches projet Tokenizer (doc interne)
|
||||
|
||||
| Document | Lien |
|
||||
|----------|------|
|
||||
| Sujet traduit | [../sujets/tokenizer.md](../sujets/tokenizer.md) |
|
||||
| Web3, RPC, mint, multisig | [02-web3-comprendre.md](02-web3-comprendre.md) |
|
||||
| Hardhat vs alternatives | [03-hardhat-et-alternatives.md](03-hardhat-et-alternatives.md) |
|
||||
| Étapes pas à pas | [parcours-etape-par-etape.md](parcours-etape-par-etape.md) |
|
||||
| Étape 2 Hardhat | [etapes/etape-02-init-hardhat.md](etapes/etape-02-init-hardhat.md) |
|
||||
|
||||
---
|
||||
|
||||
## 8. Plan de lecture « minimum » avant l’étape 3
|
||||
|
||||
Si tu manques de temps, lire au moins :
|
||||
|
||||
1. [Solidity — Simple Storage](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html) (intro officielle)
|
||||
2. [OpenZeppelin ERC20 — Usage](https://docs.openzeppelin.com/contracts/5.x/erc20#usage)
|
||||
3. [Hardhat — Getting started](https://hardhat.org/hardhat-runner/docs/getting-started) jusqu’au premier `compile`
|
||||
4. [02-web3 § 7.2](02-web3-comprendre.md#72-glossaire-anglais--supply-owner-ownable-onlyowner) (supply, owner, onlyOwner)
|
||||
|
||||
Ensuite : coder `FGC42Forge.sol` avec le guide étape 3 (à venir après validation étape 2).
|
||||
|
||||
---
|
||||
|
||||
*Dernière mise à jour : liens vérifiés oct. 2026 — signaler dans le chat si un lien est mort pour mise à jour.*
|
||||
Reference in New Issue
Block a user