first commit
9
docs/sujets/README.md
Normal file
@@ -0,0 +1,9 @@
|
||||
# Sujets — Tokenizer
|
||||
|
||||
| Document | Description |
|
||||
|----------|-------------|
|
||||
| [tokenizer.md](tokenizer.md) | Traduction FR complète (v1.1) + interprétation des visuels |
|
||||
| [originaux/tokenizer_subject.pdf](originaux/tokenizer_subject.pdf) | PDF officiel Intra |
|
||||
| [captures/](captures/) | Pages extraites du PDF (`page-01.png` … `page-10.png`) |
|
||||
|
||||
Copie locale à la racine du dépôt de travail : `tokenizer.pdf` (optionnel, doublon du PDF dans `originaux/`).
|
||||
BIN
docs/sujets/captures/page-01.png
Normal file
|
After Width: | Height: | Size: 199 KiB |
BIN
docs/sujets/captures/page-02.png
Normal file
|
After Width: | Height: | Size: 126 KiB |
BIN
docs/sujets/captures/page-03.png
Normal file
|
After Width: | Height: | Size: 268 KiB |
BIN
docs/sujets/captures/page-04.png
Normal file
|
After Width: | Height: | Size: 609 KiB |
BIN
docs/sujets/captures/page-05.png
Normal file
|
After Width: | Height: | Size: 224 KiB |
BIN
docs/sujets/captures/page-06.png
Normal file
|
After Width: | Height: | Size: 297 KiB |
BIN
docs/sujets/captures/page-07.png
Normal file
|
After Width: | Height: | Size: 322 KiB |
BIN
docs/sujets/captures/page-08.png
Normal file
|
After Width: | Height: | Size: 150 KiB |
BIN
docs/sujets/captures/page-09.png
Normal file
|
After Width: | Height: | Size: 233 KiB |
BIN
docs/sujets/captures/page-10.png
Normal file
|
After Width: | Height: | Size: 172 KiB |
BIN
docs/sujets/originaux/tokenizer_subject.pdf
Normal file
246
docs/sujets/tokenizer.md
Normal file
@@ -0,0 +1,246 @@
|
||||
# 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**. |
|
||||
| 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*)
|
||||
|
||||
### 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.) |
|
||||
| **Argent réel** | **Jamais** demandé — utiliser des **chaînes de test** |
|
||||
|
||||
### 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** | Interface standard ; sur BSC testnet, BscScan reconnaît les tokens 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)
|
||||