diff --git a/README.md b/README.md index 72de406..32bb56f 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,7 @@ Ne pas pousser : `docs/`, traductions, captures PDF, ce README de travail. | PDF officiel | [docs/sujets/originaux/tokenizer_subject.pdf](docs/sujets/originaux/tokenizer_subject.pdf) | | Plan pas à pas | [docs/pedagogie/README.md](docs/pedagogie/README.md) | | Apports pédagogiques | [docs/pedagogie/01-apports-pedagogiques.md](docs/pedagogie/01-apports-pedagogiques.md) | +| Web3 (définitions) | [docs/pedagogie/02-web3-comprendre.md](docs/pedagogie/02-web3-comprendre.md) | ## Rendu école @@ -51,6 +52,6 @@ Correcteurs et soutenance : **[tokenizerRendu/README.md](tokenizerRendu/README.m ## Démarrage 1. Lire le [sujet traduit](docs/sujets/tokenizer.md) (avec éclaircissements). -2. Lire [01-apports-pedagogiques.md](docs/pedagogie/01-apports-pedagogiques.md) pour le « pourquoi » du projet. +2. Lire [02-web3-comprendre.md](docs/pedagogie/02-web3-comprendre.md) si le terme Web3 n’est pas clair, puis [01-apports-pedagogiques.md](docs/pedagogie/01-apports-pedagogiques.md) pour le « pourquoi » du projet. 3. Suivre [guide-realisation.md](docs/pedagogie/guide-realisation.md) et le [plan](docs/pedagogie/README.md). 4. Coder et déployer **uniquement** dans `tokenizerRendu/` ([README rendu](tokenizerRendu/README.md)). diff --git a/docs/README.md b/docs/README.md index 7cfaf0b..6b5f245 100644 --- a/docs/README.md +++ b/docs/README.md @@ -17,6 +17,7 @@ Documentation du projet, sur le modèle de [piscine_mobile/docs](../../piscine_m |----------|------| | **Reprise / état du projet** | [pedagogie/00-reprise-et-etat.md](pedagogie/00-reprise-et-etat.md) | | **Ce que le projet t’apporte** | [pedagogie/01-apports-pedagogiques.md](pedagogie/01-apports-pedagogiques.md) | +| **Web3 — définition détaillée** | [pedagogie/02-web3-comprendre.md](pedagogie/02-web3-comprendre.md) | | **Guide de réalisation** | [pedagogie/guide-realisation.md](pedagogie/guide-realisation.md) | | Plan des étapes | [pedagogie/README.md](pedagogie/README.md) | diff --git a/docs/pedagogie/02-web3-comprendre.md b/docs/pedagogie/02-web3-comprendre.md new file mode 100644 index 0000000..7903a3f --- /dev/null +++ b/docs/pedagogie/02-web3-comprendre.md @@ -0,0 +1,242 @@ +# Web3 — définition et concepts (pour le projet Tokenizer) + +> Document **pédagogique** (dépôt de travail). Le sujet Tokenizer indique seulement : *« This document is a Web3 related exercise »* — ce texte complète cette mention avant de coder. + +--- + +## 1. Qu’est-ce que le Web3 ? + +**Web3** (ou **Web 3.0**) désigne une **vision** d’Internet où les utilisateurs interagissent avec des **services numériques** en s’appuyant sur des **réseaux décentralisés** (souvent des **blockchains**), plutôt que sur des **plateformes centralisées** seules (serveurs d’une entreprise, comptes verrouillés chez un opérateur). + +En pratique, quand on dit « projet Web3 » à l’école ou en entreprise, on parle souvent de : + +- des **smart contracts** (programmes exécutés sur une chaîne) ; +- des **tokens** (actifs numériques définis par ces contrats) ; +- des **portefeuilles** (*wallets*) qui signent des transactions avec des **clés cryptographiques** ; +- des **applications décentralisées** (**DApps**) qui lisent/écrivent l’état on-chain via des bibliothèques (ethers.js, web3.js, etc.). + +Le Web3 n’est **pas** un protocole unique ni un fichier de norme ISO : c’est un **ensemble d’idées et de technologies** dont l’emballage marketing varie. Pour Tokenizer, l’angle utile est **technique** : tu crées un **token sur une blockchain publique** — c’est un brique classique de l’écosystème Web3. + +--- + +## 2. Web1, Web2, Web3 — repères historiques (simplifiés) + +| Génération | Image courante | Qui « possède » les données / la logique ? | Exemples | +|------------|----------------|--------------------------------------------|----------| +| **Web1** (~1990–2000) | Pages **lecture seule** | Éditeurs de sites, hébergeurs | Pages HTML statiques, premiers forums | +| **Web2** (~2000–aujourd’hui) | **Lecture + écriture** sociale, apps riches | **Plateformes** (GAFAM, SaaS) : tes données et règles chez elles | Réseaux sociaux, Google Docs, API 42 hébergée par 42 | +| **Web3** (depuis ~2017, terme popularisé) | **Lecture + écriture + propriété** d’actifs / règles on-chain | **Réseau** + contrats : l’état partagé est sur la chaîne ; l’utilisateur garde souvent sa **clé** | Tokens, DeFi, NFT, DApps | + +Ces frontières sont **floues** : le Web2 n’a pas disparu ; la plupart des DApps ont encore un **site web classique** (Web2) qui parle à la blockchain (Web3). + +**Lien Tokenizer :** tu ne construis pas tout un site décentralisé ; tu fabriques l’**actif** (token BEP-20) que d’autres apps Web3 pourraient utiliser plus tard. + +--- + +## 3. Idées centrales du Web3 (vocabulaire) + +### 3.1 Décentralisation + +Plusieurs machines (nœuds) maintiennent une **copie** (ou une vue) du même registre. Personne ne peut, à lui seul, « effacer » une transaction validée selon les règles du protocole — contrairement à une base SQL sur un serveur unique. + +- **Nuance :** « décentralisé » ≠ « parfaitement égalitaire ». Miners/validateurs, fondations, bridges peuvent concentrer du pouvoir. Il faut rester **critique**. + +### 3.2 Blockchain + +Chaîne de **blocs** liés par empreintes cryptographiques ; chaque bloc contient des **transactions** (ou des exécutions de contrats). Consensus (PoS, PoA, etc.) définit qui peut proposer le bloc suivant. + +- **BNB Chain** (sujet Tokenizer) est une de ces chaînes, orientée **smart contracts** et volume d’usage. + +### 3.3 Smart contract + +Programme déployé à une **adresse** sur la chaîne. Une fois publié, son code est (en principe) **immuable** sauf si le contrat prévoit une mise à jour ou un proxy. Les utilisateurs l’appellent en envoyant des **transactions**. + +- **Ton projet :** le token est un smart contract (souvent basé sur le standard **BEP-20**). + +### 3.4 Token + +Actif numérique défini par un contrat : soldes par adresse, transferts, parfois mint/burn. Un token peut représenter une **unité de compte** (style monnaie), des **parts**, ou un rôle dans un protocole — selon ce que **tu documentes**. + +- **Contrainte 42 :** le **nom** doit contenir `42` ; le ticker et l’usage sont à toi (dans le cadre du sujet). + +### 3.5 Wallet (portefeuille) + +Logiciel ou matériel qui gère une **paire de clés** : + +- **Adresse publique** (ex. `0xabc…`) — identifiant pour recevoir ; +- **Clé privée** — secret qui **signe** les transactions (ne jamais la committer dans Git). + +Sur testnet, le wallet contient des **tBNB** (gas) et tes tokens après déploiement / transfer. + +### 3.6 DApp (Decentralized Application) + +Application dont une partie critique repose sur des contrats on-chain (échanges, votes, tokens). Souvent : front web ou mobile + bibliothèque Web3 + RPC vers un nœud. + +- Tokenizer **n’exige pas** une DApp complète ; le token est la brique de base. + +### 3.7 Gas + +Frais payés dans la **monnaie native** de la chaîne (BNB sur BSC, ETH sur Ethereum) pour exécuter une transaction. Sur **testnet**, cette monnaie n’a **pas de valeur réelle** — le sujet insiste : pas d’argent réel pour le projet. + +### 3.8 Explorateur de blocs (BscScan, etc.) + +Site qui indexe chaîne : adresses, transactions, code vérifié du contrat. Obligatoire pour **prouver** le déploiement et le ticker en soutenance. + +--- + +## 4. Web3 et « crypto » — ne pas confondre + +| Terme | Sens | +|-------|------| +| **Cryptographie** | Mathématiques (signatures, hash) — **fondation** technique de la blockchain | +| **Crypto-actif / « crypto »** (langage courant) | Tokens échangeables, souvent spéculatifs — **contexte économique** | +| **Web3** | Mouvement produit / dev autour d’apps et actifs on-chain | + +Le projet Tokenizer est un exercice **d’ingénierie** (contrat, déploiement, sécurité, documentation), pas une recommandation d’investissement. Le partenariat **BNB Chain** situe l’exercice dans un **écosystème** réel, tout en utilisant le **testnet** pour éviter le risque financier. + +--- + +## 5. Architecture mentale : où se place ton token ? + +```mermaid +flowchart LR + subgraph web2 [Couche familière Web2] + User[Utilisateur] + Browser[Navigateur / IDE / Git] + end + subgraph web3 [Couche Web3] + Wallet[Wallet] + RPC[Réseau RPC] + Chain[Blockchain publique] + SC[Smart contract Token BEP-20] + Explorer[Explorateur BscScan] + end + User --> Browser + User --> Wallet + Wallet --> RPC + RPC --> Chain + Chain --> SC + SC --> Explorer + Browser --> Explorer +``` + +1. Tu **écris** le contrat en local (`code/`). +2. Tu **déploies** via un script (`deployment/`) — transaction signée par ton wallet test. +3. Le contrat vit à une **adresse** sur la chaîne. +4. Tout le monde peut **lire** l’état via l’explorateur ; les détenteurs de tokens **transfèrent** via leurs wallets. + +--- + +## 6. Standards : pourquoi BEP-20 / ERC-20 ? + +Les blockchains compatibles **EVM** (Ethereum, BSC, etc.) partagent souvent le même modèle de contrat. **ERC-20** (Ethereum) et **BEP-20** (BSC) décrivent les mêmes idées : `balanceOf`, `transfer`, `approve`, `allowance`, événements `Transfer`, etc. + +Les wallets et explorateurs savent afficher un token **s’il respecte** ce standard. C’est pour cela que le sujet exige de respecter le standard de ta chaîne. + +--- + +## 7. Sécurité — angle Web3 (rappel sujet) + +Le Web3 déplace une partie des risques vers **le code** et **les clés** : + +| Risque | Exemple | +|--------|---------| +| Clé privée exposée | Drain du wallet | +| `owner` trop puissant | Mint illimité, vol de confiance | +| Bug de contrat | Fonds ou tokens bloqués / volés | +| Mauvaise doc | Utilisateurs qui ne comprennent pas les privilèges | + +Tokenizer te demande explicitement de réfléchir à **ownership** et **privilèges** et de le montrer en **démo minimale** + **revue de code**. + +--- + +## 8. Ce que le Web3 t’apporte dans *ce* projet (résumé) + +| Concept Web3 | Dans Tokenizer | +|--------------|----------------| +| Blockchain publique | Déploiement testnet + adresse dans README | +| Smart contract | `code/` — token | +| Token standard | BEP-20 (recommandé) | +| Wallet + gas | tBNB via faucet | +| Transparence | Explorer + verify | +| Gouvernance minimale | Owner, éventuel bonus multisig | + +Pour aller plus loin sur les **compétences** visées : [01-apports-pedagogiques.md](01-apports-pedagogiques.md). +Pour passer à l’action : [guide-realisation.md](guide-realisation.md). + +--- + +## 9. Lectures utiles (hors 42) + +- [Ethereum.org — Introduction](https://ethereum.org/fr/developers/docs/intro-to-ethereum/) (concepts transférables à BSC) +- [BNB Chain — documentation développeurs](https://www.bnbchain.org/en/developers) +- [OpenZeppelin — ERC20](https://docs.openzeppelin.com/contracts/5.x/erc20) + +--- + +## 10. BNB, BNB Chain et Binance (partenaire du sujet) + +Le chapitre I du sujet parle de **BNB Chain** et du faucet **tBNB**. Le sigle **BNB** prête souvent à confusion avec **Binance** : voici une cartographie claire pour Tokenizer. + +### 10.1 Trois sens différents de « BNB » + +| Sens | Explication | +|------|-------------| +| **BNB Chain** | Le **réseau blockchain** (smart contracts, tokens, DApps). Nom marketing actuel : *Build N Build* — c’est ce que le PDF cite en partenariat avec 42. | +| **BNB (l’actif)** | La **monnaie native** de cette chaîne : tu la dépenses en **gas** pour déployer un contrat ou envoyer une transaction. | +| **tBNB** | Même rôle sur le **testnet** : BNB de **test**, **sans valeur réelle** — obtenu via le [faucet](https://www.bnbchain.org/en/testnet-faucet) du sujet. | + +Ton token du projet (BEP-20) est un **autre** contrat : ce n’est pas le BNB natif, mais il vit sur la **même chaîne** et les transferts de ton token consomment aussi du gas payé en (t)BNB. + +### 10.2 Rapport avec Binance + +**Oui, il y a un lien historique et économique**, mais **BNB Chain n’est pas « l’application Binance »** au sens du site d’échange. + +| Élément | Rôle | +|---------|------| +| **Binance** | Entreprise fondée en 2017, connue surtout comme **plateforme d’échange** centralisée (ordres, carnets, comptes utilisateurs). | +| **Origine du token BNB** | Lancé par l’écosystème Binance ; le nom venait souvent de **Binance Coin** à l’époque. | +| **Binance Smart Chain (BSC)** | Lancée en 2020 : chaîne **compatible EVM** (proche d’Ethereum) pour des contrats moins chers / rapides que le mainnet ETH de l’époque. | +| **Rebranding BNB Chain** | La chaîne et la marque ont été regroupées sous **BNB Chain** (*Build N Build*) : communication orientée **réseau pour développeurs**, pas seulement exchange. | + +En soutenance, une formulation honnête et suffisante : + +> « Le sujet est en partenariat avec **BNB Chain**. BNB est la monnaie native de ce réseau ; l’écosystème est lié historiquement à **Binance**, mais mon projet tourne sur le **testnet public** avec **tBNB** — je n’utilise pas de fonds réels ni le compte trading Binance. » + +### 10.3 Noms que tu peux croiser (glossaire) + +| Abréviation | Signification | Utile pour Tokenizer | +|-------------|---------------|----------------------| +| **BSC** | *Binance Smart Chain* — ancien nom courant de la chaîne | Encore utilisé dans les tutos (MetaMask « BSC Testnet ») | +| **BNB Smart Chain** | Formulation intermédiaire | Même famille que BSC / BNB Chain | +| **BEP-20** | Standard des **tokens** sur BNB Chain | **Obligatoire** à respecter (équivalent ERC-20) | +| **BEP-2** | Ancien format sur une autre brique (Binance Chain legacy) | **Pas** le standard de ton exercice type ERC-20/BEP-20 | +| **BscScan** | Explorateur de blocs pour BSC / BNB Chain | Où publier l’adresse du contrat après déploiement | +| **chainId 97** | Identifiant du **BSC Testnet** | À mentionner dans le README école avec l’adresse | + +### 10.4 Ce dont tu as besoin (et ce dont tu n’as pas besoin) + +| Besoin | Pourquoi | +|--------|----------| +| **Wallet** (MetaMask, Rabby, etc.) | Adresse + signature des transactions de déploiement | +| **RPC testnet** | Connexion Hardhat / Remix à la chaîne de test | +| **tBNB** (faucet) | Payer le gas du deploy et des démos | +| **Compte Binance / KYC** | **Non requis** pour le projet tel que décrit dans le sujet | + +Le **mainnet** BNB (vrai BNB avec valeur marché) n’est **pas** demandé ; le sujet insiste sur les **test chains**. + +### 10.5 Lien avec le chapitre I du PDF + +Le partenariat **42 × BNB Chain** explique : + +- les statistiques d’usage (volume, DApps) dans le préambule ; +- le lien vers [bnbchain.org](https://www.bnbchain.org/) (Figure I.1) ; +- le **faucet** pour développer sans argent réel. + +Ce n’impose pas juridiquement BSC en une phrase « tu dois utiliser BSC », mais c’est la piste **la plus alignée** avec le sujet (BEP-20, tBNB, BscScan). Une autre chaîne EVM reste possible si tu **justifies** tes choix dans le README école. + +→ Rappel dans le sujet traduit : [Chapitre I — BNB, Binance et BNB Chain](../sujets/tokenizer.md#bnb-binance-et-bnb-chain). + +--- + +*Dernière révision : ajout section BNB / Binance — à compléter si tu choisis une chaîne non-EVM (peu courant pour ce sujet).* diff --git a/docs/pedagogie/README.md b/docs/pedagogie/README.md index 06ac2dd..e71705e 100644 --- a/docs/pedagogie/README.md +++ b/docs/pedagogie/README.md @@ -10,6 +10,8 @@ Parcours pour construire le projet **étape par étape** et le défendre en sout → **[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** (Web1/2/3, blockchain, token, wallet, **BNB / Binance**, lien avec Tokenizer). + ## Prérequis suggérés | Domaine | Niveau attendu | @@ -45,6 +47,7 @@ README correcteurs (dépôt école) : [tokenizerRendu/README.md](../../tokenizer |---------|------| | [00-reprise-et-etat.md](00-reprise-et-etat.md) | État, arborescence, reprise | | [01-apports-pedagogiques.md](01-apports-pedagogiques.md) | Valeur pédagogique du projet | +| [02-web3-comprendre.md](02-web3-comprendre.md) | Web3 — définitions et vocabulaire | | [guide-realisation.md](guide-realisation.md) | Réalisation technique pas à pas | Demande dans le chat l’étape à approfondir : le guide pourra être mis à jour au fil du code (fichiers réels, adresses, scripts). diff --git a/docs/sujets/tokenizer.md b/docs/sujets/tokenizer.md index 4be036b..a054ecc 100644 --- a/docs/sujets/tokenizer.md +++ b/docs/sujets/tokenizer.md @@ -25,7 +25,7 @@ |-------|---------------------|------------| | Titre | Tokenizer | Tokenizer | | Sous-titre | Build your own token | Construis ton propre token | -| Résumé | This document is a Web3 related exercise. | Ce document est un exercice lié au **Web3**. | +| Résumé | This document is a Web3 related exercise. | Ce document est un exercice lié au **Web3** → voir [définition détaillée](../pedagogie/02-web3-comprendre.md). | | Version | 1.1 | 1.1 | ### Référence visuelle — couverture @@ -54,6 +54,21 @@ Tu peux obtenir des **tBNB** (BNB de **test**, sans argent réel) via le faucet - [BNB Chain Faucet](https://www.bnbchain.org/en/testnet-faucet) (lien cité dans le sujet : *BNB Chain Faucet*) +### BNB, Binance et BNB Chain + +Le sigle **BNB** désigne à la fois l’**écosystème blockchain** du sujet (**BNB Chain**, *Build N Build*) et la **monnaie native** utilisée pour payer le **gas**. Sur testnet, on utilise **tBNB** (sans valeur réelle). + +**Rapport avec Binance :** oui, **historiquement** — Binance a lancé et porté cet écosystème (l’actif s’appelait souvent *Binance Coin* ; la chaîne s’appelait **Binance Smart Chain**, **BSC**). Aujourd’hui la communication officielle parle surtout de **BNB Chain** comme réseau pour développeurs et DApps. Ce n’est **pas** le même produit que l’application d’**échange** Binance : pour Tokenizer, tu n’as en principe **pas besoin** d’un compte Binance — wallet + **testnet** + faucet suffisent. + +| Terme | En bref | +|-------|---------| +| **Binance** | Exchange centralisé (entreprise) | +| **BNB Chain / BSC** | Blockchain smart contracts (ton déploiement) | +| **BEP-20** | Standard de **ton** token sur cette chaîne | +| **BscScan (testnet)** | Explorateur pour prouver le contrat déployé | + +→ Développement détaillé : [section 10 — BNB, BNB Chain et Binance](../pedagogie/02-web3-comprendre.md#10-bnb-bnb-chain-et-binance-partenaire-du-sujet). + ### Référence visuelle — Figure I.1 (PDF page 2) ![Chapitre I — BNB Chain](captures/page-03.png)