first commit
33
.gitignore
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
# ── Secrets / clés ──
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
!.env.example
|
||||||
|
*.pem
|
||||||
|
**/secrets.*
|
||||||
|
|
||||||
|
# Repo Git du rendu école (option : git init dans tokenizerRendu/)
|
||||||
|
tokenizerRendu/.git/
|
||||||
|
|
||||||
|
# ── Node / Hardhat / Foundry (dans tokenizerRendu/code/) ──
|
||||||
|
**/node_modules/
|
||||||
|
**/cache/
|
||||||
|
**/artifacts/
|
||||||
|
**/typechain-types/
|
||||||
|
**/coverage/
|
||||||
|
**/dist/
|
||||||
|
**/.openzeppelin/
|
||||||
|
|
||||||
|
# ── Python (outils docs) ──
|
||||||
|
.venv/
|
||||||
|
venv/
|
||||||
|
.venv_pdf/
|
||||||
|
|
||||||
|
# ── OS / IDE ──
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
.idea/
|
||||||
|
*.iml
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
# ── Logs ──
|
||||||
|
*.log
|
||||||
56
README.md
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
# Tokenizer — dépôt de travail
|
||||||
|
|
||||||
|
Espace **perso** : sujet traduit, pédagogie, guides dev. Le rendu à l’école ne contient **pas** tout ce dépôt.
|
||||||
|
|
||||||
|
## Deux dépôts Git distincts
|
||||||
|
|
||||||
|
| Rôle | Où | Contenu typique |
|
||||||
|
|------|-----|-----------------|
|
||||||
|
| **Travail** (ce repo) | Racine `tokenizer/` | `docs/`, PDF, historique, notes |
|
||||||
|
| **École** (Intra / Vogosphere) | Racine = contenu de **`tokenizerRendu/`** | `README.md`, `code/`, `deployment/`, `documentation/` |
|
||||||
|
|
||||||
|
Le dossier [`tokenizerRendu/`](tokenizerRendu/) est le **paquet de rendu** : structure et README **autonomes**, conformes au sujet v1.1.
|
||||||
|
|
||||||
|
### Pousser vers l’école (quand le projet est prêt)
|
||||||
|
|
||||||
|
**Option A — Git dans le sous-dossier** (recommandé en local) :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd tokenizerRendu
|
||||||
|
git init
|
||||||
|
git remote add origin <url-vogosphere-tokenizer>
|
||||||
|
# premier push : uniquement les fichiers de ce dossier
|
||||||
|
```
|
||||||
|
|
||||||
|
Dans le dépôt de **travail**, ignorer le `.git` imbriqué (voir `.gitignore` racine).
|
||||||
|
|
||||||
|
**Option B — Clone Vogosphere vide** puis copier le contenu de `tokenizerRendu/` à la racine du clone.
|
||||||
|
|
||||||
|
Ne pas pousser : `docs/`, traductions, captures PDF, ce README de travail.
|
||||||
|
|
||||||
|
## Documentation (travail uniquement)
|
||||||
|
|
||||||
|
| Document | Lien |
|
||||||
|
|----------|------|
|
||||||
|
| Index doc | [docs/README.md](docs/README.md) |
|
||||||
|
| Sujet FR (v1.1) | [docs/sujets/tokenizer.md](docs/sujets/tokenizer.md) |
|
||||||
|
| 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) |
|
||||||
|
|
||||||
|
## Rendu école
|
||||||
|
|
||||||
|
Correcteurs et soutenance : **[tokenizerRendu/README.md](tokenizerRendu/README.md)** (lu depuis le dépôt Intra une fois poussé).
|
||||||
|
|
||||||
|
## Reprise du projet
|
||||||
|
|
||||||
|
**État actuel :** structure doc + squelette de rendu ; smart contract et déploiement **à faire**.
|
||||||
|
|
||||||
|
→ [docs/pedagogie/00-reprise-et-etat.md](docs/pedagogie/00-reprise-et-etat.md)
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
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)).
|
||||||
27
docs/README.md
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# Documentation — Tokenizer
|
||||||
|
|
||||||
|
Documentation du projet, sur le modèle de [piscine_mobile/docs](../../piscine_mobile/docs/README.md) et [swifty_companion/docs](../../swifty_companion/docs/README.md).
|
||||||
|
|
||||||
|
## Sujet officiel
|
||||||
|
|
||||||
|
→ [sujets/README.md](sujets/README.md)
|
||||||
|
|
||||||
|
| Document | Lien |
|
||||||
|
|----------|------|
|
||||||
|
| Traduction française (v1.1) + visuels | [sujets/tokenizer.md](sujets/tokenizer.md) |
|
||||||
|
| PDF Intra | [sujets/originaux/tokenizer_subject.pdf](sujets/originaux/tokenizer_subject.pdf) |
|
||||||
|
|
||||||
|
## Pédagogie (dev)
|
||||||
|
|
||||||
|
| Document | Lien |
|
||||||
|
|----------|------|
|
||||||
|
| **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) |
|
||||||
|
| **Guide de réalisation** | [pedagogie/guide-realisation.md](pedagogie/guide-realisation.md) |
|
||||||
|
| Plan des étapes | [pedagogie/README.md](pedagogie/README.md) |
|
||||||
|
|
||||||
|
## Dépôt de rendu 42 (hors dépôt de travail)
|
||||||
|
|
||||||
|
Le code, le déploiement et la doc « utilisateur token » vivent dans **`tokenizerRendu/`** — racine du futur dépôt Intra.
|
||||||
|
|
||||||
|
→ [../tokenizerRendu/README.md](../tokenizerRendu/README.md) · workflow : [../README.md](../README.md#deux-dépôts-git-distincts)
|
||||||
75
docs/pedagogie/00-reprise-et-etat.md
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
# Reprise du projet — où nous en sommes
|
||||||
|
|
||||||
|
> Dernière mise à jour : initialisation documentation et squelette de rendu.
|
||||||
|
|
||||||
|
## En bref
|
||||||
|
|
||||||
|
| | |
|
||||||
|
|---|---|
|
||||||
|
| **Fait** | Dépôt de travail, sujet FR v1.1, captures PDF, plan pédagogique, paquet `tokenizerRendu/` |
|
||||||
|
| **À faire** | Smart contract, déploiement testnet, doc utilisateur, README école complété |
|
||||||
|
| **Prochaine action** | Lire [guide-realisation.md](guide-realisation.md) étape 1 — figer chaîne + nom du token |
|
||||||
|
|
||||||
|
## Arborescence actuelle
|
||||||
|
|
||||||
|
```
|
||||||
|
tokenizer/ ← dépôt Git de TRAVAIL (perso)
|
||||||
|
├── README.md
|
||||||
|
├── .gitignore
|
||||||
|
├── tokenizer.pdf ← copie locale du sujet (optionnel)
|
||||||
|
├── docs/
|
||||||
|
│ ├── README.md
|
||||||
|
│ ├── sujets/
|
||||||
|
│ │ ├── tokenizer.md
|
||||||
|
│ │ ├── originaux/tokenizer_subject.pdf
|
||||||
|
│ │ └── captures/page-01.png … page-10.png
|
||||||
|
│ └── pedagogie/
|
||||||
|
│ ├── README.md
|
||||||
|
│ ├── 00-reprise-et-etat.md ← ce fichier
|
||||||
|
│ ├── 01-apports-pedagogiques.md
|
||||||
|
│ └── guide-realisation.md
|
||||||
|
└── tokenizerRendu/ ← futur dépôt ÉCOLE (racine Vogosphere)
|
||||||
|
├── README.md
|
||||||
|
├── code/
|
||||||
|
├── deployment/
|
||||||
|
└── documentation/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Décisions à prendre (non figées)
|
||||||
|
|
||||||
|
| Sujet | Options | Recommandation doc |
|
||||||
|
|-------|---------|-------------------|
|
||||||
|
| Chaîne | BSC testnet, Sepolia, autre EVM | **BSC testnet** (partenariat BNB, faucet tBNB) |
|
||||||
|
| Toolchain | Hardhat, Foundry, Remix seul | **Hardhat** pour scripts reproductibles dans `deployment/` |
|
||||||
|
| Lib | OpenZeppelin ERC20 → BEP-20 | **OpenZeppelin** pour ownership et standard éprouvé |
|
||||||
|
| Nom / symbole | Doit contenir `42` | Ex. nom `Token42School`, symbole `TK42` — à valider perso |
|
||||||
|
| Bonus multisig | Gnosis Safe, contrat custom | Seulement après obligatoire **parfaite** |
|
||||||
|
|
||||||
|
## Avancement par étape
|
||||||
|
|
||||||
|
| Étape | Contenu | Statut |
|
||||||
|
|-------|---------|--------|
|
||||||
|
| **0** | Structure, traduction, séparation travail / école | ✅ **Terminé** |
|
||||||
|
| **1** | Choix stack + init projet dans `code/` | ⏳ |
|
||||||
|
| **2** | Contrat token + tests locaux | ⏳ |
|
||||||
|
| **3** | Déploiement + verify + adresse dans README | ⏳ |
|
||||||
|
| **4** | `documentation/` + démo soutenance | ⏳ |
|
||||||
|
| **5** | Rendu Vogosphere + partage Git perso (recommandé) | ⏳ |
|
||||||
|
| **6** | Bonus multisig | ⏳ |
|
||||||
|
|
||||||
|
## Reprendre le travail (checklist)
|
||||||
|
|
||||||
|
1. Ouvrir le dépôt : `~/projets/42School/tokenizer`
|
||||||
|
2. Relire la [partie obligatoire](../sujets/tokenizer.md#chapitre-iv--partie-obligatoire)
|
||||||
|
3. Suivre [guide-realisation.md](guide-realisation.md) depuis l’étape en cours
|
||||||
|
4. Ne committer **aucune clé privée** — `.env` local uniquement (voir `.gitignore` rendu)
|
||||||
|
5. Après déploiement : mettre à jour **ce fichier** + `tokenizerRendu/README.md` avec adresse et réseau
|
||||||
|
|
||||||
|
## Fichiers à renseigner après le code
|
||||||
|
|
||||||
|
| Fichier | Quand |
|
||||||
|
|---------|--------|
|
||||||
|
| `tokenizerRendu/README.md` | Choix techniques + adresse contrat + réseau |
|
||||||
|
| `tokenizerRendu/deployment/` | Scripts et éventuellement `deployed.json` |
|
||||||
|
| `tokenizerRendu/documentation/` | Guide d’usage du token |
|
||||||
|
| Ce fichier | À chaque jalon important |
|
||||||
86
docs/pedagogie/01-apports-pedagogiques.md
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
# Ce que le projet Tokenizer t’apporte
|
||||||
|
|
||||||
|
> Lecture **pédagogique** — hors rendu école. Le correcteur évalue le dépôt Vogosphere (`tokenizerRendu/`), pas ce dossier.
|
||||||
|
|
||||||
|
## En une phrase
|
||||||
|
|
||||||
|
Tu passes de « j’ai entendu parler de la blockchain » à « j’ai **déployé**, **documenté** et **défendu** un actif numérique sur une chaîne publique, en maîtrisant au minimum la **sécurité d’ownership** et les **standards de tokens** ».
|
||||||
|
|
||||||
|
## Compétences techniques
|
||||||
|
|
||||||
|
### 1. Smart contracts et langage de chaîne
|
||||||
|
|
||||||
|
- Écrire ou adapter un contrat (**Solidity** si tu suis BSC/ETH) qui respecte une **interface standard** (BEP-20 / ERC-20).
|
||||||
|
- Comprendre ce que fait chaque fonction publique : `transfer`, `approve`, `allowance`, éventuellement `mint` / `burn`.
|
||||||
|
- Lire une **revue de code** en soutenance : noms explicites, commentaires sur les choix de sécurité, pas de « magie » copiée sans comprendre.
|
||||||
|
|
||||||
|
**Pourquoi c’est utile :** l’écosystème Web3 recrute sur la capacité à livrer du code **auditable** ; ce projet reproduit une mini-livraison réelle (code + deploy + doc).
|
||||||
|
|
||||||
|
### 2. Toolchain et reproductibilité
|
||||||
|
|
||||||
|
- Utiliser **Hardhat**, **Truffle** ou **Remix** de façon cohérente : compilation, réseaux, scripts de déploiement.
|
||||||
|
- Séparer **`code/`** (source) et **`deployment/`** (procédure) comme demandé — même logique qu’en entreprise (CI/CD, infra).
|
||||||
|
|
||||||
|
**Pourquoi c’est utile :** un token déployé « à la main une fois » sans script est difficile à maintenir ; le sujet t’entraîne à penser **reproductibilité**.
|
||||||
|
|
||||||
|
### 3. Réseaux publics et explorateurs
|
||||||
|
|
||||||
|
- Différence **mainnet** / **testnet**, **gas**, **adresse de contrat**, **vérification** sur BscScan ou équivalent.
|
||||||
|
- Obtenir des fonds de test via un **faucet** — flux standard pour tout développeur blockchain.
|
||||||
|
|
||||||
|
**Pourquoi c’est utile :** tu sais **prouver** on-chain que ton contrat existe et correspond au code (verify + lecture explorer).
|
||||||
|
|
||||||
|
### 4. Sécurité appliquée (obligatoire au sujet)
|
||||||
|
|
||||||
|
- **Ownership** : qui peut changer les règles du jeu ?
|
||||||
|
- **Privilèges** : mint illimité, pause, blacklist — chaque pouvoir doit être **justifié** dans le README et la doc.
|
||||||
|
- Préparer une **démo minimale** qui montre les cas normaux **et** ce qui est interdit (ex. un compte non-owner ne peut pas mint).
|
||||||
|
|
||||||
|
**Pourquoi c’est utile :** la majorité des incidents Web3 viennent de contrats mal conçus ; ce projet t’oblige à en parler à l’oral.
|
||||||
|
|
||||||
|
### 5. Documentation produit
|
||||||
|
|
||||||
|
- Deux niveaux distincts :
|
||||||
|
- **README école** : choix d’architecture et métadonnées de déploiement ;
|
||||||
|
- **`documentation/`** : comment **utiliser** le token (wallet, ajout du token, transfert, rôle du token dans ton « produit »).
|
||||||
|
- Option whitepaper : formaliser **à quoi sert** le token (même fictif).
|
||||||
|
|
||||||
|
**Pourquoi c’est utile :** un développeur blockchain est aussi **rédacteur** pour utilisateurs et auditeurs.
|
||||||
|
|
||||||
|
## Compétences transverses 42
|
||||||
|
|
||||||
|
| Compétence | Comment le projet la travaille |
|
||||||
|
|------------|--------------------------------|
|
||||||
|
| **Autonomie** | Peu de garde-fous : tu choisis la stack (dans les contraintes) |
|
||||||
|
| **Rigueur** | Arborescence imposée, eval = code review |
|
||||||
|
| **Communication** | README argumenté, soutenance avec démo |
|
||||||
|
| **Éthique** | Pas d’argent réel ; nom du token sans insultes ; honnêteté sur les limites du testnet |
|
||||||
|
|
||||||
|
## Lien avec le partenariat BNB Chain
|
||||||
|
|
||||||
|
Le sujet n’impose pas BSC en toutes lettres, mais le **préambule BNB** et le **faucet tBNB** orientent vers cet écosystème :
|
||||||
|
|
||||||
|
- Volume et adoption réels (contexte donné dans le PDF).
|
||||||
|
- Standard **BEP-20** aligné sur l’industrie (compatible mental model ERC-20).
|
||||||
|
- Passerelle vers d’autres projets Web3 42 ou perso (DApp, ponts, etc.).
|
||||||
|
|
||||||
|
## Bonus multisig — apports supplémentaires
|
||||||
|
|
||||||
|
Si la partie obligatoire est **parfaite**, le multisig ajoute :
|
||||||
|
|
||||||
|
- Modèle **seuil de confiance** (m-of-n signatures).
|
||||||
|
- Réflexion sur **gouvernance** et **opérations** (qui détient les clés en test ?).
|
||||||
|
|
||||||
|
## Ce que ce projet n’est pas
|
||||||
|
|
||||||
|
- Ce n’est **pas** un cours de trading ni une incitation à investir.
|
||||||
|
- Ce n’est **pas** une validation de « crypto » en général — c’est un exercice **d’ingénierie** sur registre distribué.
|
||||||
|
- Une vidéo démo **ne remplace pas** une doc écrite ni une démo live en soutenance.
|
||||||
|
|
||||||
|
## Suite naturelle après Tokenizer
|
||||||
|
|
||||||
|
- Auditer un contrat existant (lecture seule sur explorer).
|
||||||
|
- Front minimal (Web3.js / ethers) qui appelle ton token.
|
||||||
|
- Modules 42 ou projets perso : NFT (ERC-721), gouvernance, indexation (The Graph).
|
||||||
|
|
||||||
|
→ Retour au plan : [README.md](README.md) · Guide technique : [guide-realisation.md](guide-realisation.md)
|
||||||
50
docs/pedagogie/README.md
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# Pédagogie — Tokenizer
|
||||||
|
|
||||||
|
Parcours pour construire le projet **étape par étape** et le défendre en soutenance.
|
||||||
|
|
||||||
|
## Reprise rapide
|
||||||
|
|
||||||
|
→ **[00-reprise-et-etat.md](00-reprise-et-etat.md)** — état du projet, décisions, prochaine action.
|
||||||
|
|
||||||
|
→ **[guide-realisation.md](guide-realisation.md)** — **guide dev** détaillé (choix techniques, sécurité, déploiement, démo).
|
||||||
|
|
||||||
|
→ **[01-apports-pedagogiques.md](01-apports-pedagogiques.md)** — **ce que ce projet t’apporte** (compétences, concepts).
|
||||||
|
|
||||||
|
## Prérequis suggérés
|
||||||
|
|
||||||
|
| Domaine | Niveau attendu |
|
||||||
|
|---------|----------------|
|
||||||
|
| Git | Dépôt structuré, README, pas de secrets commités |
|
||||||
|
| Ligne de commande | npm ou équivalent, variables d’environnement |
|
||||||
|
| Programmation | Au moins un langage ; Solidity s’apprend pendant le projet |
|
||||||
|
| 42 | Aucun prérequis Web3 obligatoire — le sujet assume l’apprentissage |
|
||||||
|
|
||||||
|
Ressources externes utiles : [docs Solidity](https://docs.soliditylang.org/), [OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts/), [BscScan Testnet](https://testnet.bscscan.com/).
|
||||||
|
|
||||||
|
## Étapes du projet
|
||||||
|
|
||||||
|
| Étape | Objectif | Statut |
|
||||||
|
|-------|----------|--------|
|
||||||
|
| **0** | Dépôt travail + `docs/`, sujet FR, paquet `tokenizerRendu/` | ✅ **Fait** — [00-reprise-et-etat.md](00-reprise-et-etat.md) |
|
||||||
|
| **1** | Choix chaîne + stack (ex. BSC testnet + Hardhat) + nom token avec `42` | ⏳ À faire |
|
||||||
|
| **2** | Smart contract BEP-20 dans `tokenizerRendu/code/` (ownership, commentaires) | ⏳ À faire |
|
||||||
|
| **3** | Scripts `tokenizerRendu/deployment/` + déploiement testnet + verify explorer | ⏳ À faire |
|
||||||
|
| **4** | `documentation/` utilisateur + README école (adresse, réseau, choix) | ⏳ À faire |
|
||||||
|
| **5** | Scénario de démo minimal + préparation code review | ⏳ À faire |
|
||||||
|
| **6** | Bonus multisig (optionnel) | ⏳ Non commencé |
|
||||||
|
|
||||||
|
README correcteurs (dépôt école) : [tokenizerRendu/README.md](../../tokenizerRendu/README.md)
|
||||||
|
|
||||||
|
## Sujet de référence
|
||||||
|
|
||||||
|
→ [Traduction FR v1.1](../sujets/tokenizer.md) · PDF : [originaux/tokenizer_subject.pdf](../sujets/originaux/tokenizer_subject.pdf)
|
||||||
|
|
||||||
|
## Guides détaillés
|
||||||
|
|
||||||
|
| Fichier | Rôle |
|
||||||
|
|---------|------|
|
||||||
|
| [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 |
|
||||||
|
| [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).
|
||||||
210
docs/pedagogie/guide-realisation.md
Normal file
@@ -0,0 +1,210 @@
|
|||||||
|
# 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)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Vue d’ensemble du livrable école
|
||||||
|
|
||||||
|
| Élément | Emplacement | Contenu attendu |
|
||||||
|
|---------|-------------|-----------------|
|
||||||
|
| README | `tokenizerRendu/README.md` | Choix + **adresse contrat** + **réseau** |
|
||||||
|
| Source | `tokenizerRendu/code/` | Contrat(s) commentés |
|
||||||
|
| Déploiement | `tokenizerRendu/deployment/` | Scripts, config réseaux, sorties |
|
||||||
|
| Doc utilisateur | `tokenizerRendu/documentation/` | Usage du token, rôle, limites |
|
||||||
|
| Hors dépôt école | `docs/` (ici) | Traduction, pédagogie, ce guide |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Étape 1 — Cadrage (avant d’écrire du Solidity)
|
||||||
|
|
||||||
|
### Checklist décisions
|
||||||
|
|
||||||
|
- [ ] Chaîne : **BNB Smart Chain Testnet** (chainId `97`) — ou autre EVM **justifié** dans README
|
||||||
|
- [ ] Nom du token contenant **`42`** (ex. `FortyTwoToken`, `School42Coin`)
|
||||||
|
- [ ] Symbole ticker (ex. `FT42`) — affiché sur l’explorer après déploiement
|
||||||
|
- [ ] Supply initiale, décimales (souvent `18`), droit de **mint** ou supply fixe
|
||||||
|
- [ ] Modèle de ownership : `Ownable` OpenZeppelin recommandé pour la soutenance
|
||||||
|
|
||||||
|
### Comptes et secrets
|
||||||
|
|
||||||
|
1. Wallet de test (MetaMask ou autre) — **jamais** la clé privée du mainnet avec de vrais fonds.
|
||||||
|
2. Faucet : [BNB Chain Testnet Faucet](https://www.bnbchain.org/en/testnet-faucet)
|
||||||
|
3. Fichier `.env` dans `deployment/` ou racine `code/` :
|
||||||
|
|
||||||
|
```env
|
||||||
|
PRIVATE_KEY=0x... # compte TEST uniquement
|
||||||
|
BSC_TESTNET_RPC=https://data-seed-prebsc-1-s1.binance.org:8545/
|
||||||
|
```
|
||||||
|
|
||||||
|
Ajouter `.env` au `.gitignore` (déjà prévu dans le paquet rendu).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Étape 2 — Projet `code/`
|
||||||
|
|
||||||
|
### Structure suggérée (Hardhat)
|
||||||
|
|
||||||
|
```
|
||||||
|
tokenizerRendu/code/
|
||||||
|
├── package.json
|
||||||
|
├── hardhat.config.js
|
||||||
|
├── contracts/
|
||||||
|
│ └── Token42.sol # nom à adapter
|
||||||
|
├── test/
|
||||||
|
│ └── Token42.test.js
|
||||||
|
└── README.md # comment compiler / tester localement
|
||||||
|
```
|
||||||
|
|
||||||
|
### Contrat minimal (logique, pas le code final)
|
||||||
|
|
||||||
|
1. Hériter **ERC20** + **Ownable** (OpenZeppelin).
|
||||||
|
2. Constructeur : `name`, `symbol`, supply initiale au déployeur ou `mint` réservé à `owner`.
|
||||||
|
3. Si `mint` : fonction `onlyOwner` — **à expliquer** en README (risque si owner compromis).
|
||||||
|
4. Commentaires en tête de fichier : rôle du token, réseau cible, standard BEP-20.
|
||||||
|
|
||||||
|
### Tests locaux (fortement recommandés avant deploy)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd tokenizerRendu/code
|
||||||
|
npm install
|
||||||
|
npx hardhat test
|
||||||
|
```
|
||||||
|
|
||||||
|
Points à couvrir : `transfer`, solde, `onlyOwner` sur fonctions sensibles.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Étape 3 — Dossier `deployment/`
|
||||||
|
|
||||||
|
### Contenu type
|
||||||
|
|
||||||
|
```
|
||||||
|
tokenizerRendu/deployment/
|
||||||
|
├── README.md # ordre des commandes
|
||||||
|
├── deploy.js # ou scripts Hardhat dans code/ référencés ici
|
||||||
|
└── addresses.json # adresse + chainId + date (après deploy)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Déploiement (exemple Hardhat)
|
||||||
|
|
||||||
|
Depuis `code/` (selon ton organisation) :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npx hardhat run scripts/deploy.js --network bscTestnet
|
||||||
|
```
|
||||||
|
|
||||||
|
Enregistrer dans `addresses.json` :
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"network": "bscTestnet",
|
||||||
|
"chainId": 97,
|
||||||
|
"contract": "Token42",
|
||||||
|
"address": "0x...",
|
||||||
|
"explorer": "https://testnet.bscscan.com/address/0x..."
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Vérification sur l’explorer
|
||||||
|
|
||||||
|
- [BscScan Testnet](https://testnet.bscscan.com/) → **Verify and Publish** (flatten ou standard JSON input selon toolchain).
|
||||||
|
- Copier l’URL du contrat dans `tokenizerRendu/README.md`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Étape 4 — `documentation/` (utilisateur)
|
||||||
|
|
||||||
|
Sections recommandées (`documentation/README.md` ou plusieurs fichiers) :
|
||||||
|
|
||||||
|
1. **Qu’est-ce que ce token ?** (cas d’usage fictif ou pédagogique)
|
||||||
|
2. **Réseau et adresse** (lien explorer)
|
||||||
|
3. **Ajouter le token dans un wallet** (contract address, decimals, symbol)
|
||||||
|
4. **Actions supportées** : transfer, approve, etc.
|
||||||
|
5. **Sécurité** : qui est owner, ce qu’il peut faire, ce que les utilisateurs ne peuvent pas faire
|
||||||
|
6. **Limites testnet** : pas de valeur réelle, reset possible des faucets
|
||||||
|
|
||||||
|
Option : `documentation/WHITEPAPER.md` court (1–2 pages).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Étape 5 — README école (`tokenizerRendu/README.md`)
|
||||||
|
|
||||||
|
Le sujet exige d’y expliquer les **choix** et **raisons**. Modèle :
|
||||||
|
|
||||||
|
| Section | Contenu |
|
||||||
|
|---------|---------|
|
||||||
|
| Présentation | Nom, symbole, standard BEP-20 |
|
||||||
|
| Chaîne | BSC Testnet, chainId, pourquoi pas mainnet |
|
||||||
|
| Stack | Hardhat, OpenZeppelin, versions |
|
||||||
|
| Sécurité | Ownable, mint ou non, pas de backdoor cachée |
|
||||||
|
| Déploiement | Adresse + lien BscScan |
|
||||||
|
| Démo soutenance | 3–5 actions à montrer (voir ci-dessous) |
|
||||||
|
| Bonus | Si multisig : où est le code, comment tester |
|
||||||
|
|
||||||
|
Mettre à jour le fichier réel dans `tokenizerRendu/` au fil du projet (le squelette actuel liste les sections à compléter).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Étape 6 — Scénario de soutenance (démo minimale)
|
||||||
|
|
||||||
|
Préparer un **fil narratif** de 5–10 minutes :
|
||||||
|
|
||||||
|
| # | Action | Preuve |
|
||||||
|
|---|--------|--------|
|
||||||
|
| 1 | Montrer le repo : `code/`, `deployment/`, `documentation/` | `ls` ou IDE |
|
||||||
|
| 2 | Expliquer ownership / privilèges sur le contrat | Code ouvert `Token42.sol` |
|
||||||
|
| 3 | Lire `name`, `symbol`, `totalSupply` sur l’explorer | BscScan |
|
||||||
|
| 4 | `transfer` entre deux comptes test | Explorer « Token transfers » ou wallet |
|
||||||
|
| 5 | Montrer qu’un non-owner **ne peut pas** mint (si applicable) | Transaction revert ou test Hardhat |
|
||||||
|
| 6 | Bonus multisig | Seulement si obligatoire parfaite |
|
||||||
|
|
||||||
|
Pas de vidéo obligatoire ; si lien vidéo : une ligne dans README.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Étape 7 — Code review (ce que l’évaluateur peut demander)
|
||||||
|
|
||||||
|
- Pourquoi OpenZeppelin plutôt qu’un ERC20 from scratch ?
|
||||||
|
- Où est le risque principal de ton design (owner, mint) ?
|
||||||
|
- Comment quelqu’un utilise ton token sans ton aide ?
|
||||||
|
- Différence entre ton `documentation/` et le README racine ?
|
||||||
|
- Confirmation : **aucune clé privée** dans Git ?
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Étape 8 — Bonus multisig (après obligatoire parfaite)
|
||||||
|
|
||||||
|
Pistes :
|
||||||
|
|
||||||
|
- Contrat wallet multisig simple (m-of-n) qui détient l’ownership du token.
|
||||||
|
- Ou contrat qui exige N signatures pour `mint` / transfert sortant d’un trésor.
|
||||||
|
|
||||||
|
Documenter dans `documentation/` et README : nombre de signataires, adresses de test, procédure de signature.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Dépannage (à enrichir pendant le dev)
|
||||||
|
|
||||||
|
| Problème | Piste |
|
||||||
|
|----------|--------|
|
||||||
|
| Faucet vide / rate limit | Réessayer plus tard, autre compte test |
|
||||||
|
| Transaction underpriced | Ajuster gas sur BSC testnet |
|
||||||
|
| Verify échoue | Vérifier version compilateur et settings Hardhat |
|
||||||
|
| Token invisible dans wallet | Ajouter manuellement par adresse de contrat |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Cartographie sujet ↔ dossiers (rappel)
|
||||||
|
|
||||||
|
| Exigence sujet | Dossier / fichier |
|
||||||
|
|----------------|-------------------|
|
||||||
|
| Code commenté | `code/` |
|
||||||
|
| Déploiement | `deployment/` |
|
||||||
|
| Doc projet token | `documentation/` |
|
||||||
|
| Choix + adresse + réseau | `README.md` racine rendu |
|
||||||
|
| Revue de code | `code/` |
|
||||||
|
| Démo sécurité | soutenance + éventuellement tests |
|
||||||
|
|
||||||
|
→ État du projet : [00-reprise-et-etat.md](00-reprise-et-etat.md)
|
||||||
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)
|
||||||
BIN
tokenizer.pdf
Normal file
19
tokenizerRendu/.gitignore
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# Secrets — jamais dans Git
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
!.env.example
|
||||||
|
|
||||||
|
# Node / Hardhat
|
||||||
|
node_modules/
|
||||||
|
cache/
|
||||||
|
artifacts/
|
||||||
|
typechain-types/
|
||||||
|
coverage/
|
||||||
|
dist/
|
||||||
|
|
||||||
|
# OS / IDE
|
||||||
|
.DS_Store
|
||||||
|
.idea/
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
*.log
|
||||||
82
tokenizerRendu/README.md
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
# Tokenizer — Build your own token
|
||||||
|
|
||||||
|
Projet 42 — création et déploiement d’un **token** sur blockchain publique (**testnet**).
|
||||||
|
|
||||||
|
> **Dépôt de rendu école** : ce dossier est la **racine** du dépôt Git Vogosphere. Pas de `docs/` ni de sujet traduit ici.
|
||||||
|
|
||||||
|
## État du projet
|
||||||
|
|
||||||
|
| Élément | Statut |
|
||||||
|
|---------|--------|
|
||||||
|
| Smart contract (`code/`) | À compléter |
|
||||||
|
| Déploiement (`deployment/`) | À compléter |
|
||||||
|
| Documentation utilisateur (`documentation/`) | À compléter |
|
||||||
|
|
||||||
|
## Token (à compléter après déploiement)
|
||||||
|
|
||||||
|
| Champ | Valeur |
|
||||||
|
|-------|--------|
|
||||||
|
| **Nom** | *(contient `42` — ex. `FortyTwoToken`)* |
|
||||||
|
| **Symbole** | *(ex. `FT42`)* |
|
||||||
|
| **Standard** | BEP-20 (BNB Smart Chain) |
|
||||||
|
| **Réseau** | *(ex. BNB Smart Chain **Testnet**, chainId `97`)* |
|
||||||
|
| **Adresse du contrat** | `0x...` |
|
||||||
|
| **Explorer** | *(ex. https://testnet.bscscan.com/address/0x...)* |
|
||||||
|
|
||||||
|
## Choix techniques (à rédiger pour la soutenance)
|
||||||
|
|
||||||
|
Explique **pourquoi** tu as fait ces choix (le sujet l’exige) :
|
||||||
|
|
||||||
|
1. **Chaîne** : …
|
||||||
|
2. **Langage / outils** (Solidity, Hardhat, Remix, etc.) : …
|
||||||
|
3. **Bibliothèques** (ex. OpenZeppelin) : …
|
||||||
|
4. **Modèle économique** (supply, mint, decimals) : …
|
||||||
|
5. **Sécurité** (ownership, privilèges, ce qui est interdit) : …
|
||||||
|
|
||||||
|
## Structure du dépôt
|
||||||
|
|
||||||
|
```
|
||||||
|
README.md ← ce fichier
|
||||||
|
code/ ← sources du smart contract
|
||||||
|
deployment/ ← scripts et infos de déploiement
|
||||||
|
documentation/ ← comment utiliser le token
|
||||||
|
```
|
||||||
|
|
||||||
|
## Lancer / tester (à adapter selon ta stack)
|
||||||
|
|
||||||
|
Exemple avec Hardhat dans `code/` :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd code
|
||||||
|
npm install
|
||||||
|
npx hardhat compile
|
||||||
|
npx hardhat test
|
||||||
|
```
|
||||||
|
|
||||||
|
Déploiement (exemple) :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# depuis deployment/ ou via script documenté dans deployment/README.md
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ne jamais committer** de clé privée. Utiliser un fichier `.env` local (voir `.env.example` si présent).
|
||||||
|
|
||||||
|
## Démo en évaluation (actions minimales)
|
||||||
|
|
||||||
|
1. Montrer le contrat sur l’**explorer** (adresse + token).
|
||||||
|
2. **Transfer** entre deux comptes de test.
|
||||||
|
3. Expliquer **owner** et les fonctions restreintes (ex. `mint` `onlyOwner`).
|
||||||
|
4. Montrer que la **documentation/** permet d’utiliser le token sans ton aide.
|
||||||
|
|
||||||
|
## Bonus
|
||||||
|
|
||||||
|
*(Si implémenté : multisig — décrire ici où se trouve le code et comment le tester.)*
|
||||||
|
|
||||||
|
## Vidéo démo (optionnel)
|
||||||
|
|
||||||
|
*(Lien uniquement — la vidéo n’est pas requise et n’améliore pas la note.)*
|
||||||
|
|
||||||
|
## Ressources
|
||||||
|
|
||||||
|
- [BNB Chain Testnet Faucet](https://www.bnbchain.org/en/testnet-faucet)
|
||||||
|
- [BscScan Testnet](https://testnet.bscscan.com/)
|
||||||
14
tokenizerRendu/code/README.md
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# Code — smart contract(s)
|
||||||
|
|
||||||
|
Place ici les sources du token (ex. `contracts/`, `hardhat.config.js`, tests).
|
||||||
|
|
||||||
|
**Exigences sujet :** code commenté, noms de variables et fonctions explicites, standard **BEP-20** (ou équivalent documenté).
|
||||||
|
|
||||||
|
## Commandes (à compléter)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Exemple Hardhat — adapter
|
||||||
|
npm install
|
||||||
|
npx hardhat compile
|
||||||
|
npx hardhat test
|
||||||
|
```
|
||||||
11
tokenizerRendu/deployment/README.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# Déploiement
|
||||||
|
|
||||||
|
Scripts, configuration réseau et **adresses déployées** (ex. `addresses.json`).
|
||||||
|
|
||||||
|
Après déploiement sur **testnet public** :
|
||||||
|
|
||||||
|
1. Noter l’adresse du contrat.
|
||||||
|
2. Vérifier le contrat sur l’explorer (BscScan testnet ou équivalent).
|
||||||
|
3. Reporter réseau + adresse dans le [README racine](../README.md).
|
||||||
|
|
||||||
|
**Ne pas versionner** de clé privée — utiliser `.env` local.
|
||||||
13
tokenizerRendu/documentation/README.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# Documentation du token
|
||||||
|
|
||||||
|
Ce dossier est évalué en soutenance : il doit permettre de **comprendre** le token et de **l’utiliser** (wallet, transferts, rôle du token).
|
||||||
|
|
||||||
|
## Contenu à rédiger
|
||||||
|
|
||||||
|
1. **Présentation** — à quoi sert ce token (même dans un cadre pédagogique).
|
||||||
|
2. **Réseau et adresse** — lien vers l’explorer.
|
||||||
|
3. **Guide d’utilisation** — ajouter le token dans un wallet, effectuer un transfert.
|
||||||
|
4. **Sécurité et gouvernance** — owner, mint, limites connues.
|
||||||
|
5. **(Optionnel)** `WHITEPAPER.md` — vision et fonctionnalités sur 1–2 pages.
|
||||||
|
|
||||||
|
Ce fichier est distinct de la documentation **dev** du dépôt perso (`docs/` à la racine du dépôt de travail).
|
||||||