274 lines
13 KiB
Markdown
274 lines
13 KiB
Markdown
# Tokenizer — Build your own token
|
||
|
||
> **Version :** 1.1
|
||
> **Résumé :** Exercice lié au **Web3**.
|
||
> **Traduction française** — source : [tokenizer_subject.pdf](originaux/tokenizer_subject.pdf)
|
||
|
||
---
|
||
|
||
## Table des matières
|
||
|
||
1. [Chapitre I — Avant-propos](#chapitre-i--avant-propos)
|
||
2. [Chapitre II — Introduction](#chapitre-ii--introduction)
|
||
3. [Chapitre III — Objectifs](#chapitre-iii--objectifs)
|
||
4. [Chapitre IV — Partie obligatoire](#chapitre-iv--partie-obligatoire)
|
||
5. [Chapitre V — Bonus](#chapitre-v--bonus)
|
||
6. [Chapitre VI — Rendu et évaluation par les pairs](#chapitre-vi--rendu-et-évaluation-par-les-pairs)
|
||
7. [Éléments visuels du PDF](#éléments-visuels-du-pdf)
|
||
8. [Éclaircissements (lecture facilitée)](#éclaircissements-lecture-facilitée)
|
||
|
||
---
|
||
|
||
## Page de garde (PDF page 1)
|
||
|
||
| Champ | Texte officiel (EN) | Traduction |
|
||
|-------|---------------------|------------|
|
||
| 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** → voir [définition détaillée](../pedagogie/02-web3-comprendre.md). |
|
||
| Version | 1.1 | 1.1 |
|
||
|
||
### Référence visuelle — couverture
|
||
|
||

|
||
|
||
| Zone | Description |
|
||
|------|-------------|
|
||
| Illustration centrale | Motif vertical en facettes (style low-poly), tons gris/noir — **élément graphique 42**, pas une maquette de smart contract |
|
||
| Fond | Motif géométrique léger (triangles) sur toutes les pages |
|
||
| En-têtes | « Tokenizer » à gauche, « Build your own token » à droite |
|
||
|
||
---
|
||
|
||
## Chapitre I — Avant-propos
|
||
|
||
Ce sujet est réalisé en **partenariat entre 42 et BNB Chain**.
|
||
|
||
**BNB Chain** (*Build N Build*) est un réseau blockchain distribué sur lequel développeurs et innovateurs peuvent construire des **applications décentralisées (DApps)** dans la mouvance **Web3**.
|
||
|
||
En octobre 2022 (chiffres du sujet), BNB Chain était parmi les plus grands réseaux de smart contracts au monde en volume de transactions et utilisateurs actifs quotidiens : plus de 3 milliards de transactions, 232 millions d’adresses uniques, plus de 1 500 DApps actives. La nature **décentralisée** du réseau permet de déployer un produit **sans permission** centrale et d’atteindre un large public.
|
||
|
||
### Faucet (testnet)
|
||
|
||
Tu peux obtenir des **tBNB** (BNB de **test**, sans argent réel) via le faucet officiel :
|
||
|
||
- [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)
|
||
|
||

|
||
|
||
| Zone | Description |
|
||
|------|-------------|
|
||
| Logo | Hexagone jaune + mention **BNB CHAIN** |
|
||
| Légende | *Figure I.1: https://www.bnbchain.org/* — site officiel de l’écosystème |
|
||
| Message implicite | Le partenaire du sujet pousse vers l’écosystème **BSC / BNB** ; le standard token y est **BEP-20** (équivalent fonctionnel d’**ERC-20** sur Ethereum) |
|
||
|
||
---
|
||
|
||
## Chapitre II — Introduction
|
||
|
||
Bienvenue dans le monde de la **technologie blockchain**.
|
||
|
||
Tu vas pouvoir **créer ton propre token numérique**. La blockchain permet de créer et distribuer des actifs numériques uniques (**tokens**) : monnaie, parts, représentation d’œuvres, ou lien avec un actif du monde réel (selon le design que tu documentes).
|
||
|
||
Ce n’est pas trivial : il faut comprendre ce que tu déploies. Avec les bonnes ressources (testnet, faucet, outils), c’est un projet formateur et concret.
|
||
|
||
### Référence visuelle (PDF page 3)
|
||
|
||

|
||
|
||
| Zone | Description |
|
||
|------|-------------|
|
||
| Illustration | Style « peinture numérique » : **jeton doré** sur une base type **puce / circuit** |
|
||
| Sens | Métaphore **hardware + actif numérique** — le token est un programme (smart contract) exécuté par le réseau, pas un simple fichier |
|
||
|
||
---
|
||
|
||
## Chapitre III — Objectifs
|
||
|
||
En participant à ce projet, tu contribues à la création d’un **actif numérique on-chain**. Le sujet te challenge sur :
|
||
|
||
- la maîtrise d’**au moins un langage** lié à ta chaîne (ex. **Solidity** pour BSC/ETH) ;
|
||
- la familiarité avec une **blockchain publique** (réseau, explorer, adresses, transactions) ;
|
||
- l’**adaptation** : pas besoin d’être cryptographe expert au départ, mais tu dois apprendre en chemin.
|
||
|
||
Objectif final : compétences utiles + participation à un écosystème innovant (Web3).
|
||
|
||
### Référence visuelle (PDF page 4)
|
||
|
||

|
||
|
||
| Zone | Description |
|
||
|------|-------------|
|
||
| Illustration | Jetons / pièces stylisées — rappel que le livrable est un **token** avec règles économiques et techniques définies par **toi** (dans les contraintes du sujet) |
|
||
|
||
---
|
||
|
||
## Chapitre IV — Partie obligatoire
|
||
|
||
Pour créer un token, plusieurs exigences techniques et organisationnelles s’appliquent.
|
||
|
||
### Contraintes sur le token
|
||
|
||
| Règle | Détail |
|
||
|-------|--------|
|
||
| **Nom** | Libre, mais le nom doit contenir **`42`** |
|
||
| **Insultes** | Interdites — sanctions école |
|
||
| **README racine** | Fichier **`README.md`** à la racine du dépôt **école** : expliquer tes **choix** et **pourquoi** |
|
||
| **Standard** | Respecter le standard de la chaîne (**ERC-20** sur Ethereum, **BEP-20** sur BSC, etc.) — voir [§ ERC-20 / BEP-20](#erc-20-et-bep-20-éclaircissement) |
|
||
| **Argent réel** | **Jamais** demandé — utiliser des **chaînes de test** |
|
||
|
||
### ERC-20 et BEP-20 (éclaircissement)
|
||
|
||
**ERC-20** (Ethereum) et **BEP-20** (BNB Chain / BSC) définissent la même famille de **tokens fongibles** : `balanceOf`, `transfer`, `approve`, `totalSupply`, etc. Sur BSC, le code Solidity est en pratique le même qu’un ERC-20 (souvent bibliothèque **OpenZeppelin `ERC20`**) ; l’explorateur (**BscScan**) parle de **BEP-20** parce que la chaîne est BNB, pas parce que tu réécris une norme différente.
|
||
|
||
| Question | Réponse |
|
||
|----------|---------|
|
||
| BEP-20 obligatoire pour tout le monde ? | **Non** — obligatoire **si** tu choisis **BSC / BNB Chain**. Sur Ethereum testnet → **ERC-20**. |
|
||
| Piste la plus alignée avec le PDF ? | **BSC Testnet** + **BEP-20** (tBNB, partenariat BNB). |
|
||
| NFT / autre standard ? | Hors sujet type « token classique » ; rester sur le **20** fongible. |
|
||
|
||
→ Détail : [Standards ERC-20 et BEP-20](../pedagogie/02-web3-comprendre.md#6-standards-erc-20-et-bep-20).
|
||
|
||
### Plateforme et outils
|
||
|
||
1. Choisir une blockchain qui supporte la création de tokens.
|
||
2. Maîtriser le langage et la toolchain de cette chaîne : **IDE**, **Remix**, **Hardhat**, **Truffle**, etc.
|
||
|
||
### Code (`code/`)
|
||
|
||
- Dossier **`code/`** à la **racine** du dépôt école.
|
||
- Code **commenté**, noms de variables et fonctions **lisibles**.
|
||
- En soutenance : **revue de code** (*code review*).
|
||
|
||
### Démonstration et sécurité
|
||
|
||
Tu dois pouvoir faire des **actions minimales** qui prouvent que le token fonctionne.
|
||
|
||
Réfléchir explicitement à la **sécurité** : **propriété** (*ownership*), **privilèges** (qui peut mint, pause, transférer des rôles, etc.).
|
||
|
||
### Déploiement (2ᵉ dossier)
|
||
|
||
- Tout le nécessaire au **déploiement** dans un **second dossier** à la racine — le sujet donne l’exemple **`deployment/`** (nom libre mais structure claire attendue).
|
||
- Déployer sur une **blockchain publique** (en pratique : **testnet public** pour ne pas dépenser de vrai argent).
|
||
- Définir le **ticker** (symbole, ex. `TK42`) et **publier** le contrat sur un **explorateur** (ex. **BscScan**, **Blockscan** selon la chaîne).
|
||
- Dans le dépôt Git : indiquer l’**adresse du smart contract** et le **réseau** utilisé.
|
||
|
||
### Documentation (`documentation/`)
|
||
|
||
- Dossier **`documentation/`** à la racine du dépôt école.
|
||
- On doit comprendre **comment ça marche** et **comment utiliser** le token.
|
||
- Envisager un contenu type **whitepaper** léger : rôle du token, fonctionnalités, limites.
|
||
- La doc sera **relue en évaluation** — claire et explicite.
|
||
|
||
### Vidéo démo (optionnelle)
|
||
|
||
- Pas obligatoire ; **ne améliore pas la note**.
|
||
- Si tu en fais une : **lien** dans le README suffit (pas besoin de pousser la vidéo dans Git).
|
||
|
||
### Encadrés d’avertissement (PDF pages 5–7)
|
||
|
||

|
||
|
||
| Encadré | Message |
|
||
|---------|---------|
|
||
| Rose / ⚠️ | **Revue de code** pendant l’évaluation |
|
||
| Rose / ⚠️ | Documentation **claire** — relue en eval |
|
||
| Bleu / ℹ️ | Vidéo : **lien** seulement, pas le fichier dans le repo |
|
||
| Rose / ⚠️ | Vidéo **non requise**, pas de bonus de note |
|
||
|
||
### Arborescence attendue (exemple officiel, PDF page 7)
|
||
|
||

|
||
|
||
```
|
||
README.md
|
||
code/
|
||
deployment/ # nom d’exemple ; un autre nom explicite est possible si le sujet l’accepte en soutenance
|
||
documentation/
|
||
```
|
||
|
||
→ Dans ce dépôt perso, le paquet école est préparé dans [`../../tokenizerRendu/`](../../tokenizerRendu/).
|
||
|
||
---
|
||
|
||
## Chapitre V — Bonus
|
||
|
||
Pour renforcer la sécurité (ex. transactions sensibles), tu peux implémenter un **multisig** (*multisignature*) : plusieurs signataires doivent approuver une action avant exécution.
|
||
|
||
- Smart contract dédié ou extension adaptée à **ta** partie obligatoire.
|
||
- Définir le **nombre de signatures** et **qui** peut signer.
|
||
|
||
### ⚠️ Règle bonus
|
||
|
||
Le bonus n’est évalué **que si la partie obligatoire est PARFAITE** (intégrale, sans dysfonctionnement). Une seule exigence obligatoire manquante → **bonus non évalué**.
|
||
|
||

|
||
|
||
---
|
||
|
||
## Chapitre VI — Rendu et évaluation par les pairs
|
||
|
||
Dépôt Git habituel. **Seul le contenu du dépôt** est évalué. Vérifier **noms de dossiers et fichiers**.
|
||
|
||
Exception : le sujet **recommande** de partager le projet sur un **compte Git personnel** une fois valide (hashtags `#web3`, langage, etc.) — **en plus** du rendu Vogosphere, pas en remplacement.
|
||
|
||

|
||
|
||
---
|
||
|
||
## Éléments visuels du PDF
|
||
|
||
| Page PDF | Fichier | Contenu visuel |
|
||
|----------|---------|----------------|
|
||
| 1 | [page-01.png](captures/page-01.png) | Couverture |
|
||
| 2 | [page-03.png](captures/page-03.png) | Texte BNB + logo Figure I.1 |
|
||
| 3 | [page-04.png](captures/page-04.png) | Introduction + illustration token |
|
||
| 4 | [page-05.png](captures/page-05.png) | Objectifs + illustration |
|
||
| 5–6 | [page-06.png](captures/page-06.png), [page-07.png](captures/page-07.png) | Partie obligatoire, encadrés |
|
||
| 7 | [page-08.png](captures/page-08.png) | Exemple `ls -al` |
|
||
| 8 | [page-09.png](captures/page-09.png) | Bonus |
|
||
| 9 | [page-10.png](captures/page-10.png) | Soumission |
|
||
|
||
*(La page PDF « Contents » / table des matières correspond visuellement à [page-02.png](captures/page-02.png).)*
|
||
|
||
---
|
||
|
||
## Éclaircissements (lecture facilitée)
|
||
|
||
Ces points ne sont pas toujours explicites dans le PDF ; ils servent de fil conducteur pour le [guide de réalisation](../pedagogie/guide-realisation.md).
|
||
|
||
| Terme | En bref |
|
||
|-------|---------|
|
||
| **Token** | Contrat intelligent qui suit une norme (souvent **20** : solde, `transfer`, `approve`, etc.) |
|
||
| **BEP-20 / ERC-20** | Normes tokens fongibles (BSC vs Ethereum) — [§ détaillé](#erc-20-et-bep-20-éclaircissement) · [doc Web3 §6](../pedagogie/02-web3-comprendre.md#6-standards-erc-20-et-bep-20) |
|
||
| **Déploiement** | Transaction qui enregistre le bytecode du contrat sur la chaîne → **adresse** unique |
|
||
| **tBNB** | Monnaie native de **test** pour payer le gas sur BNB Smart Chain testnet |
|
||
| **Ownership** | Souvent `Ownable` (OpenZeppelin) : qui peut `mint`, changer des paramètres, etc. |
|
||
| **Démo minimale** | Ex. : lire `name`, `symbol`, `totalSupply` ; `transfer` ; éventuellement `mint` si prévu — montrable sur explorer + script ou Remix |
|
||
| **3 dossiers** | `code` = source ; `deployment` = scripts, config réseau, adresses déployées ; `documentation` = guide **utilisateur** du token (distinct de `docs/` du dépôt perso) |
|
||
|
||
**Chaîne recommandée (alignée partenaire sujet)** : **BNB Smart Chain Testnet** + Solidity + BEP-20. Autre chaîne EVM possible si tu justifies en README et respectes le standard équivalent.
|
||
|
||
---
|
||
|
||
## Prochaine étape
|
||
|
||
→ [Plan de réalisation](../pedagogie/README.md) · [Apports pédagogiques](../pedagogie/01-apports-pedagogiques.md)
|