Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

🔑 Wallets & IdentitĂ© DĂ©centralisĂ©e

Gestion des clés (Key Mgmt), Seed Phrases (BIP-39), Metamask (EIP-1193), Hardware Wallets & WalletConnect.

1.1

Fondement : Clés & Cryptographie

Le "Wallet" est un porte-clés. Clé Privée (le Secret), Clé Publique (le Cadenas), Adresse (l'IBAN). Cryptographie Asymétrique (ECDSA).

Clé PrivéeClé PubliqueECDSA
2.1

Key Mgmt : Seed Phrase (BIP-39)

La "Master Key". BIP-39 (12/24 mots). HD Wallets (BIP-32/44) et les chemins de dérivation (`m/44'/60'/...`).

BIP-39Seed PhraseHD Wallet
2.2

Key Mgmt : Custody

"Not your keys, not your coins." La différence critique entre Non-Custodial (Metamask) et Custodial (Binance).

Non-CustodialCustodial
3.1

Wallet : Metamask (Hot Wallet)

Le "Software Wallet" dominant. Son rĂŽle de "Hot Wallet", de Provider (EIP-1193) et de Signer. Risques vs Convenance.

MetamaskHot WalletEIP-1193
3.2

Wallet : Hardware (Cold Wallet)

La sécurité maximale. "Cold Storage" (Ledger/Trezor). Le Secure Element et le flux de signature sécurisé.

Hardware WalletCold StorageSecure Element
4.1

Protocole : WalletConnect

Ce n'est pas un wallet. C'est le "pont" (via QR code) qui connecte les DApps (Desktop) aux Wallets (Mobile).

WalletConnectMobileQR Code
5.1

Identité : SIWE & ENS

Le wallet comme identité. `personal_sign`. Le standard "Sign-In with Ethereum" (EIP-4361) et les noms (ENS).

IdentitéSIWEENS
5.2

Sécurité : Risques & Pratiques

RÚgle n°1 : Ne jamais partager sa seed. Risques (Phishing, `setApprovalForAll`) et protections (Revoke, Hardware).

SécuritéPhishingRevoke
1.1 Fondement : Cryptographie Asymétrique (Clés Privées / Publiques)

Un "Wallet" (portefeuille) est un terme trompeur. Il ne **contient pas** vos cryptomonnaies (celles-ci "vivent" sur la blockchain, qui est un registre public). Un wallet est un **"porte-clés"** (Key Manager). Il détient le secret qui vous donne l'autorisation de déplacer vos actifs.

L'identité et la propriété en Web3 reposent sur la **cryptographie asymétrique** (ou à clé publique/privée), spécifiquement l'algorithme **ECDSA** (Elliptic Curve Digital Signature Algorithm) sur la courbe `secp256k1` (pour Bitcoin et Ethereum).

Le Flux de Génération (Unidirectionnel)

C'est un processus mathématique à sens unique. Vous ne pouvez pas remonter la chaßne.

1. Clé Privée (Le Secret)
  • DĂ©finition : C'est la seule chose qui soit vraiment secrĂšte. C'est un **nombre alĂ©atoire de 256 bits** (32 octets).
  • Exemple (Hex) : `f8f8...a1c` (64 caractĂšres).
  • Analogie : C'est votre **Mot de Passe MaĂźtre** pour votre compte en banque.
  • RĂšgle : DOIT RESTER ABSOLUMENT SECRET. Celui qui la possĂšde, possĂšde vos fonds. Elle n'est jamais partagĂ©e, jamais diffusĂ©e sur le rĂ©seau.
▌
2. Clé Publique (Le Cadenas)
  • DĂ©finition : La clĂ© publique (512 bits / 64 octets) est **dĂ©rivĂ©e mathĂ©matiquement** de la clĂ© privĂ©e via l'algorithme ECDSA.
  • PropriĂ©tĂ© : C'est une **fonction Ă  sens unique**. Il est trivial de calculer la ClĂ© Publique Ă  partir de la ClĂ© PrivĂ©e, mais il est **cryptographiquement impossible** de retrouver la ClĂ© PrivĂ©e Ă  partir de la ClĂ© Publique.
  • Analogie : C'est un **cadenas ouvert**. Vous pouvez le distribuer Ă  tout le monde. Les gens peuvent l'utiliser pour *vĂ©rifier* que vous ĂȘtes bien le propriĂ©taire de la clĂ© privĂ©e, ou pour chiffrer un message que vous seul pourrez ouvrir.
▌
3. Adresse Publique (L'IBAN)
  • DĂ©finition : L'adresse Ethereum (celle que vous utilisez, ex: `0xd8...6045`) est une version *hachĂ©e* et *raccourcie* de la ClĂ© Publique.
  • Processus (Ethereum) :
    1. Prendre la Clé Publique (64 octets).
    2. La hacher avec l'algorithme **Keccak-256**.
    3. Prendre les **20 derniers octets (40 caractĂšres)** de ce hash.
    4. Ajouter "0x" au début.
  • Analogie : C'est votre **IBAN** ou votre "RIB". C'est l'identifiant que vous donnez publiquement pour *recevoir* des fonds. Il est sĂ»r de la partager.
Le Processus de Signature (L'Autorisation)

Comment prouver que vous voulez envoyer 1 ETH sans révéler votre clé privée ? Vous **signez** la transaction.

[ 1. Transaction (Message) ]
  (Ex: "Envoyer 1 ETH Ă  0xABC...")
        |
        | + [ 2. Clé Privée (Votre Secret) ]
        |
        ▌
[ 3. Algorithme de Signature (ECDSA) ]
        |
        ▌
[ 4. Signature Numérique (Preuve) ]
  (Ex: 0x1a2b3c...)

Vous diffusez ensuite au réseau : (1. La Transaction) + (4. La Signature). Vous ne diffusez **JAMAIS** (2. La Clé Privée).

Le Processus de VĂ©rification (Par les NƓuds)

Chaque nƓud du rĂ©seau (les validateurs) effectue l'opĂ©ration inverse pour vĂ©rifier l'authenticitĂ© :

[ 1. Transaction (Message) ]
  (Reçue du réseau)
        |
        | + [ 4. Signature Numérique (Preuve) ]
        | + [ 2b. Clé Publique (Dérivée de l'Adresse) ]
        |
        ▌
[ 5. Algorithme de Vérification (ECDSA) ]
        |
        ▌
[ 6. Résultat (VRAI ou FAUX) ]

L'algorithme de vĂ©rification utilise la ClĂ© Publique de l'expĂ©diteur pour confirmer que la Signature n'a pu ĂȘtre créée que par le dĂ©tenteur de la ClĂ© PrivĂ©e correspondante, pour *cette transaction spĂ©cifique*. Si la vĂ©rification est VRAIE, la transaction est valide. Si c'est FAUX (ou si un attaquant tente de rĂ©utiliser la signature pour une autre transaction), elle est rejetĂ©e.

2.1 Key Mgmt : Seed Phrase (BIP-39) & HD Wallets (BIP-32/44)

Gérer une clé privée (un long nombre aléatoire) est impossible pour un humain. Si vous la perdez, tout est perdu. L'industrie a standardisé une méthode de sauvegarde et de génération de clés : la "Seed Phrase" (phrase mnémonique) et les portefeuilles "HD".

BIP-39 : La "Master Key" Mnémonique

**BIP-39 (Bitcoin Improvement Proposal 39)** est le standard utilisé par 99% des wallets (Metamask, Ledger, etc.) pour générer et sauvegarder votre clé maßtresse.

La "Seed Phrase" (12 ou 24 mots) n'est PAS votre clé privée. C'est une représentation "humainement lisible" d'un nombre aléatoire (l'entropie) qui est utilisé pour *générer* votre clé privée maßtresse.

Processus de Génération (BIP-39)
  1. 1. Entropie : Le wallet génÚre un long nombre aléatoire (ex: 128 bits pour 12 mots, 256 bits pour 24 mots).
  2. 2. Checksum : Il ajoute quelques bits de "checksum" (somme de contrÎle) pour détecter les fautes de frappe.
  3. 3. Conversion : Ce nombre binaire est découpé en groupes de 11 bits.
  4. 4. Mappage (Liste de Mots) : Chaque groupe de 11 bits correspond à un numéro (de 0 à 2047). Le standard BIP-39 fournit une **liste de 2048 mots** (en anglais, français, etc.). Le wallet fait correspondre chaque numéro à un mot de la liste.
    (Ex: `00000000001` -> `abandon`, `11111111111` -> `zoo`).
  5. 5. Phrase : Le résultat est votre "Seed Phrase" de 12/24 mots (ex: `abandon ability able...`).

Processus de Récupération (Inverse) :

Lorsque vous restaurez un wallet, vous entrez les 12 mots. Le wallet (connaissant la liste BIP-39) re-convertit les mots en numĂ©ros, rĂ©-assemble le nombre binaire (l'entropie), vĂ©rifie le checksum, et obtient *exactement* le mĂȘme point de dĂ©part alĂ©atoire.

▌
Du Mot à la Clé (PBKDF2)

La Seed Phrase (ex: "chat montagne...") est ensuite passée dans une fonction de dérivation de clé (PBKDF2) avec un "sel" (salt) pour créer le **"Seed" binaire** (512 bits). C'est cette "Seed" qui est la racine de toutes vos clés.

BIP-32/44 : Le Portefeuille "HD" (Hierarchical Deterministic)

ProblĂšme : J'ai des Bitcoins, des Ethereums, et peut-ĂȘtre 10 comptes diffĂ©rents sur Ethereum. Dois-je sauvegarder 12 clĂ©s privĂ©es diffĂ©rentes ?

Solution : BIP-32/44. Un portefeuille "HD" (HiĂ©rarchique DĂ©terministe) utilise le **Seed (512 bits)** de BIP-39 comme **ClĂ© MaĂźtresse (Master Key)** pour gĂ©nĂ©rer un "arbre" (hiĂ©rarchie) quasi infini de paires de clĂ©s (privĂ©e/publique), de maniĂšre **dĂ©terministe** (le mĂȘme seed produira toujours le mĂȘme arbre).

Le Chemin de Dérivation (BIP-44)

BIP-44 standardise l'organisation de cet arbre. Un "chemin de dérivation" est utilisé pour trouver une clé spécifique.

m / purpose' / coin_type' / account' / change / address_index
  • m : Master Key (le Seed).
  • purpose' (44') : Le standard (BIP-44).
  • coin_type' : Le type de cryptomonnaie (un numĂ©ro standardisĂ©).
    • 60' = Ethereum (ETH)
    • 0' = Bitcoin (BTC)
    • 195' = Tron (TRX)
  • account' (0') : Le "compte" utilisateur (Compte 0, Compte 1, etc. dans Metamask).
  • change (0) : (HĂ©ritage Bitcoin : 0 pour les adresses de rĂ©ception, 1 pour la "monnaie").
  • address_index (0) : L'adresse spĂ©cifique (Adresse 0, Adresse 1...).
Exemple Concret :

Votre unique Seed Phrase ("chat montagne...") génÚre le Seed 512 bits.

En utilisant le chemin `m/44'/60'/0'/0/0`, votre wallet dérive la Clé Privée n°1 de votre **Compte Ethereum 1**.

En utilisant le chemin `m/44'/60'/1'/0/0`, il dérive la Clé Privée n°1 de votre **Compte Ethereum 2**.

En utilisant le chemin `m/44'/0'/0'/0/0`, il dérive la Clé Privée n°1 de votre **Compte Bitcoin 1**.

Conclusion : L'utilisateur n'a besoin de sauvegarder **qu'une seule chose** (la Seed Phrase de 12/24 mots) pour récupérer tous ses comptes, sur toutes les blockchains compatibles.

2.2 Key Mgmt : La Question de la "Custody" (Garde)

"Key Management" (Gestion des Clés) est la question la plus importante en crypto : **Qui détient la clé privée ?** La réponse à cette question divise l'écosystÚme en deux mondes.

1. Non-Custodial (Self-Custody)

Définition : L'utilisateur (et l'utilisateur seul) détient et contrÎle la clé privée / seed phrase.

Motto : "Not your keys, not your coins." (Pas vos clés, pas vos piÚces).

Exemples :

  • Metamask (Software / Hot Wallet)
  • Ledger / Trezor (Hardware / Cold Wallet)
  • Trust Wallet, Phantom (Mobile Wallets)
Avantages :
  • SouverainetĂ© Totale : Vous ĂȘtes votre propre banque. Personne ne peut geler vos fonds, vous censurer ou vous empĂȘcher d'interagir.
  • AccĂšs Ă  la DeFi/NFTs : C'est la **seule** façon d'interagir directement avec les smart contracts (DeFi, mint de NFTs, DAOs).
Inconvénients :
  • ResponsabilitĂ© Totale : Il n'y a **pas de "mot de passe oubliĂ©"**. Si vous perdez votre seed phrase (incendie, oubli), vos fonds sont **perdus Ă  jamais**.
  • Risque de SĂ©curitĂ© (Phishing/Hack) : Si vous signez une transaction malveillante (`setApprovalForAll`) ou si votre seed phrase est volĂ©e (malware, phishing), vos fonds sont volĂ©s instantanĂ©ment, sans recours.
2. Custodial (Third-Party Custody)

Définition : Une tierce partie (un "gardien" ou "custodian") détient les clés privées en votre nom.

Motto : "Your keys, their coins." (Vos clés, leurs piÚces).

Exemples :

  • Binance, Coinbase, Kraken (Centralized Exchanges - CEX)
  • Services de "staking" centralisĂ©s
  • (Techniquement, votre compte Revolut ou PayPal "Crypto")
Avantages :
  • Convenance : Facile. Login avec email/mot de passe. Authentification 2FA.
  • Support Client : Il y a un service client. Vous *pouvez* rĂ©initialiser votre mot de passe.
  • Assurance (parfois) : Les grandes plateformes ont des fonds d'assurance (SAFU) en cas de hack *de la plateforme*.
Inconvénients :
  • Risque de Contrepartie : Vous ne possĂ©dez pas de crypto. Vous possĂ©dez une "promesse" (IOU) de la plateforme. Si la plateforme fait faillite (ex: **FTX**, Mt. Gox, Celsius), vos fonds disparaissent avec elle.
  • Risque de Censure : La plateforme *doit* se plier aux rĂ©gulations (KYC/AML). Elle *peut* (et *doit*) geler vos fonds sur demande d'un gouvernement.
  • Aucun accĂšs au Web3 : Vous ne pouvez pas utiliser votre "compte Binance" pour aller sur Uniswap ou mint un NFT. Vous devez d'abord *retirer* vos fonds vers un wallet **Non-Custodial** (Metamask).
3.1 Wallet : Metamask (Le "Hot Wallet" EIP-1193)

**Metamask** est le portefeuille non-custodial (self-custody) le plus populaire au monde, développé par ConsenSys. C'est une **extension de navigateur** (et une application mobile) qui remplit trois rÎles cruciaux dans l'écosystÚme DApp.

1. RÎle de "Hot Wallet" (Gestionnaire de Clés)

Metamask est un **"Hot Wallet"** (portefeuille chaud) car les clés privées (dérivées de votre seed phrase) sont stockées sur votre appareil connecté à Internet (dans le stockage chiffré de votre navigateur).

  • GĂ©nĂ©ration : Il gĂ©nĂšre la Seed Phrase (BIP-39) et gĂšre les comptes (BIP-44).
  • Stockage : La seed phrase et les clĂ©s privĂ©es sont chiffrĂ©es avec un **Mot de Passe** que vous dĂ©finissez.
  • Point ClĂ© : Ce "Mot de Passe" ne sert qu'Ă  **dĂ©chiffrer/verrouiller** le stockage local de Metamask sur *cet ordinateur*. Ce n'est **PAS** votre backup. Si l'ordinateur est dĂ©truit, le mot de passe ne sert Ă  rien. Seule la **Seed Phrase** de 12 mots peut restaurer le portefeuille.
2. RĂŽle de "Provider" (Injecteur EIP-1193)

Comme vu dans le guide Ethers.js, Metamask **injecte** un objet JavaScript `window.ethereum` dans chaque page web que vous visitez. Cet objet est le **Provider** (le pont de communication).

  • `window.ethereum` agit comme un routeur.
  • Il relaie les requĂȘtes de "lecture" (ex: `eth_getBalance`) de la DApp vers un nƓud RPC (par dĂ©faut, Metamask utilise Infura, mais l'utilisateur peut le changer pour son propre nƓud).
  • Il intercepte les requĂȘtes "d'Ă©criture" (ex: `eth_sendTransaction`).
3. RÎle de "Signer" (Interface de Sécurité)

C'est le rĂŽle le plus important pour l'utilisateur. Metamask est le "gardien" qui empĂȘche une DApp de voler vos fonds.

  • Lorsqu'une DApp (via Ethers.js) appelle signer.sendTransaction(...), Metamask intercepte cet appel.
  • Il **arrĂȘte** l'exĂ©cution et ouvre une **pop-up** (une interface utilisateur sĂ©parĂ©e, hors de portĂ©e de la DApp).
  • Cette pop-up affiche une version *lisible* de la transaction (Montant, Destination, Frais de Gas estimĂ©s).
  • La DApp est en pause. L'utilisateur (vous) doit **manuellement** cliquer sur "Confirmer" ou "Rejeter".
  • Si "Confirmer", Metamask utilise la clĂ© privĂ©e stockĂ©e pour signer la transaction, puis la renvoie Ă  la DApp (qui la diffuse).
  • Si "Rejeter", Metamask renvoie une erreur Ă  la DApp (ex: `Error: "User rejected transaction"`).
Risques de Sécurité des "Hot Wallets"

La convenance de Metamask (ĂȘtre dans le navigateur) est aussi son plus grand risque.

  • Risque 1 : Phishing de la Seed Phrase (Hameçonnage)
    • ScĂ©nario : Vous visitez un site malveillant qui imite un site connu (ex: "Uniswap Airdrop !"). Il affiche une *fausse* pop-up Metamask qui dit : "Votre portefeuille doit ĂȘtre re-synchronisĂ©. Veuillez entrer votre phrase secrĂšte de 12 mots."
    • RĂ©sultat : Si vous tapez votre seed phrase, vous l'envoyez au hacker. Il l'importe dans son propre wallet et vide *tous* vos comptes (ETH, BTC, etc.) en quelques secondes. **RĂšgle n°1 : Metamask ne vous demandera JAMAIS votre seed phrase (sauf lors de la restauration initiale).**
  • Risque 2 : Signature Malveillante (Phishing d'Approbation)
    • ScĂ©nario : Vous visitez un site de "mint NFT gratuit". Vous cliquez sur "Mint". Une pop-up Metamask s'ouvre. Vous ne la lisez pas attentivement et cliquez sur "Confirmer".
    • Le PiĂšge : Vous n'avez pas signĂ© une transaction `mint()`. Vous avez signĂ© une transaction setApprovalForAll(...).
    • RĂ©sultat : Cette fonction (utilisĂ©e par OpenSea) signifie : "J'autorise ce smart contract (le contrat du hacker) Ă  dĂ©penser/dĂ©placer *tous* mes NFTs de la collection Bored Ape (par exemple)". Le hacker exĂ©cute ensuite sa propre fonction pour transfĂ©rer tous vos Apes vers son adresse.
    • RĂšgle n°2 : TOUJOURS lire la fonction que Metamask vous demande de signer. Si un site de "mint" vous demande `setApprovalForAll`, c'est une arnaque Ă  100%.
  • Risque 3 : Malware / Exploit Navigateur
    • Si votre ordinateur lui-mĂȘme est compromis (un keylogger, un virus), le malware peut tenter de voler le fichier de stockage de Metamask ou d'intercepter votre mot de passe lorsque vous le tapez.

C'est pour contrer ces risques que les "Hardware Wallets" ont été créés.

3.2 Wallet : Hardware Wallets (Cold Storage)

Un **Hardware Wallet** (Portefeuille MatĂ©riel, ex: Ledger, Trezor) est un appareil physique conçu pour ĂȘtre le moyen le plus sĂ©curisĂ© de gĂ©rer des clĂ©s privĂ©es. Il est aussi appelĂ© **"Cold Storage"** (Stockage Froid) car la clĂ© privĂ©e n'est jamais exposĂ©e Ă  un appareil connectĂ© Ă  Internet.

Concept : Isolation de la Clé (Secure Element)

La philosophie d'un hardware wallet est : **"Faites confiance à l'appareil, ne faites confiance à rien d'autre."** Il part du principe que votre ordinateur (PC/Mac) est **déjà compromis** (infecté par un malware).

  • GĂ©nĂ©ration de ClĂ© : Lorsque vous allumez un Ledger pour la premiĂšre fois, la Seed Phrase (BIP-39) est gĂ©nĂ©rĂ©e *Ă  l'intĂ©rieur* de l'appareil. Elle est affichĂ©e sur le petit Ă©cran de l'appareil. Elle n'apparaĂźt **jamais** sur l'Ă©cran de votre ordinateur.
  • Secure Element (SE) : La ClĂ© PrivĂ©e (dĂ©rivĂ©e de la seed) est stockĂ©e dans une puce cryptographique spĂ©cialisĂ©e (un "Secure Element" ou "SE"). C'est le mĂȘme type de puce que dans une carte de crĂ©dit ou un passeport.
  • Protection : Cette puce est conçue pour ĂȘtre inviolable. Il est (en thĂ©orie) impossible d'en extraire la clĂ© privĂ©e, mĂȘme avec un accĂšs physique (elle s'autodĂ©truira si on tente de l'ouvrir).
Clé de la Sécurité : La Clé Privée est générée, stockée, et utilisée pour signer SANS JAMAIS QUITTER le Secure Element de l'appareil physique.
Le Flux de Signature (Metamask + Ledger)

Comment un appareil "froid" (offline) peut-il signer une transaction "chaude" (online) ? En utilisant Metamask comme un "intermédiaire" (via WebUSB ou Bluetooth).

Scénario : Vous voulez envoyer 1 ETH en utilisant votre Ledger.

[ 1. DApp (Uniswap) ]
  (Demande une signature Ă  Metamask)
        |
        ▌
[ 2. Metamask ]
  (Sait que ce compte est "géré par Ledger". N'a PAS la clé privée.)
  (Envoie la transaction NON SIGNÉE via USB à l'appareil Ledger)
        |
        |  (Tx: "Envoyer 1 ETH Ă  0xABC...")
        |
        ▌
[ 3. Hardware Wallet (Ledger) ]
  (Reçoit la Tx non signée)
  
  (Affiche sur son PETIT ÉCRAN SÉCURISÉ : "Envoyer 1 ETH à 0xABC... ?")
  
  (L'UTILISATEUR vérifie physiquement sur l'appareil)
  
  (L'UTILISATEUR appuie sur les DEUX BOUTONS PHYSIQUES pour "Approuver")
  
  (Le Secure Element SIGNE la transaction à l'intérieur de la puce)
  
  (L'appareil renvoie la transaction SIGNÉE à Metamask)
        |
        |  (Tx Signée : "0x123...")
        |
        ▌
[ 4. Metamask ]
  (Reçoit la Tx signée. N'a toujours pas vu la clé privée.)
  (Diffuse la Tx signée au réseau via son Provider Infura)
        |
        ▌
[ 5. Réseau Ethereum ]

Pourquoi est-ce sécurisé ?

Imaginez que votre PC est infecté. Un hacker est en train de regarder votre écran. Il voit la pop-up Metamask. Il tente de changer l'adresse de destination (pour mettre la sienne).

Metamask (corrompu) envoie la transaction *frauduleuse* au Ledger. Mais le Ledger affiche sur son *propre écran* (que le hacker ne peut pas contrÎler) : "Envoyer 1 ETH à [ADRESSE_DU_HACKER]".

Vous (l'utilisateur) voyez que l'adresse sur l'écran du Ledger ne correspond pas à celle attendue. Vous annulez la transaction sur l'appareil. Le hack a échoué. C'est ce qu'on appelle un "affichage de confiance" (Trusted Display).

4.1 Protocole : WalletConnect – Le Pont Mobile

**WalletConnect** n'est **PAS** un portefeuille. C'est un **protocole de communication open-source** (un "pont"). Son but est de connecter les DApps (qui tournent le plus souvent sur un navigateur de bureau) aux portefeuilles mobiles (oĂč les utilisateurs prĂ©fĂšrent garder leurs clĂ©s, ex: Trust Wallet, Metamask Mobile, Rainbow).

Il résout le problÚme : "Je suis sur mon PC (Desktop) mais mes clés sont sur mon Téléphone (Mobile)".

Le Flux de Connexion (v2.0)

WalletConnect agit comme un "téléphone" sécurisé entre la DApp et le Wallet Mobile.

  1. 1. DApp (sur PC) : L'utilisateur clique sur "Connecter le Wallet" et choisit "WalletConnect". La DApp (via la bibliothÚque WalletConnect) génÚre un QR code unique.
  2. 2. Wallet (sur Mobile) : L'utilisateur ouvre son portefeuille (ex: Trust Wallet) et utilise la fonction "WalletConnect" pour scanner le QR code.
  3. 3. Appairage (Pairing) : Le scan établit un **canal de communication chiffré de bout en bout (E2EE)** entre la DApp (PC) et le Wallet (Mobile).
    • Ce canal passe par un **"Bridge Server"** (serveur relais) public. Ce serveur ne fait que relayer des messages chiffrĂ©s ; il ne peut pas lire le contenu.
  4. 4. Session : Le Wallet Mobile demande : "Autoriser 'monsite.com' à se connecter ?". L'utilisateur accepte. La DApp (PC) reçoit l'adresse du compte et est connectée.
Point Clé : L'ordinateur (PC) n'a jamais, à aucun moment, accÚs à la clé privée. Il est juste "appairé" avec le wallet mobile.
Le Flux de Signature (Transaction)

C'est la mĂȘme logique qu'un Hardware Wallet, mais via le rĂ©seau.

[ 1. DApp (PC) ]
  (Ex: Uniswap. L'utilisateur clique "Swap".)
  (La DApp crĂ©e la transaction NON SIGNÉE.)
        |
        |  2. Envoi de la "demande de signature" (chiffrée)
        |     via le Bridge Server WalletConnect
        |
        ▌
[ 3. Wallet (Mobile) ]
  (Reçoit la demande chiffrée.)
  
  (Affiche une POP-UP NATIVE sur le téléphone :
   "Confirmer le Swap de 1 ETH pour 2000 DAI ?")
  
  (L'utilisateur confirme (ex: avec FaceID ou code PIN).)
  
  (Le Wallet SIGNE la transaction à l'intérieur du téléphone.)
  
  (Le Wallet renvoie la transaction SIGNÉE via le Bridge Server.)
        |
        |  4. RĂ©ception de la Tx SIGNÉE
        |
        ▌
[ 5. DApp (PC) ]
  (Reçoit la Tx signée.)
  
  (Diffuse la Tx signée au réseau via son PROPRE Provider Infura.)
        |
        ▌
[ 6. Réseau Ethereum ]

WalletConnect est le protocole qui permet à une DApp d'utiliser un **Signer distant** (le téléphone) aussi facilement qu'un Signer local (Metamask).

5.1 Identité : "Sign-In with Ethereum" (SIWE) & ENS

En Web3, votre "Wallet" (votre paire de clĂ©s) *est* votre identitĂ©. Il n'y a plus d'email/mot de passe. Vous prouvez qui vous ĂȘtes en prouvant que vous contrĂŽlez une clĂ© privĂ©e. C'est le "Sign-In with Ethereum".

Identité : Le ProblÚme de l'Authentification

ProblÚme : Comment un site web (Web2) peut-il "connecter" un utilisateur Web3 sans base de données d'utilisateurs ?

Ancienne Méthode (Dangereuse) : Le site demandait : "Signez ce message : 'Login'". L'utilisateur signait (via `personal_sign`). Le site vérifiait la signature et ouvrait une session.

Risque : Un site de phishing (ex: `faux-uniswap.com`) pouvait demander la mĂȘme signature ("Login"). Si le hacker interceptait cette signature, il pouvait l'utiliser pour se connecter au *vrai* site (Uniswap) en votre nom (attaque par rejeu ou "replay attack").

La Solution : EIP-4361 (Sign-In with Ethereum - SIWE)

SIWE est un standard (EIP) qui dĂ©finit un **format de message standardisĂ©** pour l'authentification. Ce message inclut des informations qui le rendent unique Ă  un seul site et Ă  une seule session, empĂȘchant les attaques par rejeu.

Le Flux SIWE (Authentification Web2/Web3)
  1. 1. Frontend (React) : L'utilisateur clique "Login". Le frontend (via Ethers.js) demande à Metamask de signer un message **structuré** (défini par SIWE) :
    monsite.com wants you to sign in with your Ethereum account:
    0x123...abc (Votre Adresse)
    
    (Message lisible)
    URI: https://monsite.com
    Version: 1
    Chain ID: 1
    Nonce: kG8a...7z (Un code aléatoire unique généré par le serveur)
    Issued At: 2025-11-10T14:30:00Z
    
  2. 2. Wallet (Metamask) : Affiche cette demande de signature claire. L'utilisateur voit que le `URI` et le `Nonce` sont corrects. Il signe.
  3. 3. Backend (Serveur Web2) : Le Frontend envoie le (Message + Signature) au serveur (ex: Node.js).
  4. 4. Vérification (Backend) : Le serveur :
    • VĂ©rifie que la signature est valide pour ce message (prouvant que l'utilisateur est bien `0x123...abc`).
    • VĂ©rifie que le `URI` est bien `https://monsite.com`.
    • VĂ©rifie que le `Nonce` est bien celui qu'il a gĂ©nĂ©rĂ© (empĂȘche le rejeu).
  5. 5. Session : Si tout est valide, le serveur Web2 génÚre un **Token de Session (JWT)** traditionnel et le renvoie au frontend. L'utilisateur est "logué" au sens Web2, mais authentifié au sens Web3.
ENS (Ethereum Name Service) : L'Identité Lisible

L'identité (l'adresse `0x123...abc`) n'est pas "human-friendly". L'ENS est l'équivalent du "DNS" (Domain Name System) pour Ethereum.

C'est un **systÚme de smart contracts** (gouverné par une DAO) qui gÚre un registre de noms (ex: `.eth`, `.xyz`).

Fonctionnement
  • Un NFT : Un nom ENS (ex: `vitalik.eth`) est un **NFT (ERC-721)**. Le "propriĂ©taire" du NFT est l'adresse qui a le droit de *gĂ©rer* le nom.
  • Le "Resolver" (RĂ©solveur) : Le propriĂ©taire du NFT configure un "Resolver" (un autre smart contract). C'est le carnet d'adresses.
  • Enregistrements (Records) : Dans le Resolver, le propriĂ©taire peut mapper le nom (`vitalik.eth`) Ă  diffĂ©rentes donnĂ©es :
    • `address` (ETH) : `0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045`
    • `address` (BTC) : `bc1q...`
    • `content` (IPFS) : `ipfs://Qm...` (un site web dĂ©centralisĂ©)
    • `text` (Social) : `com.twitter = @VitalikButerin`
  • RĂ©solution (Ethers.js) : Quand vous Ă©crivez provider.getBalance("vitalik.eth"), Ethers.js appelle le contrat ENS, demande le "Resolver" de `vitalik.eth`, puis demande Ă  ce Resolver l'enregistrement `address (ETH)`.

Conclusion : ENS transforme l'adresse cryptographique (le "numéro de compte") en **Identité Sociale** (le "nom d'utilisateur").

5.2 Sécurité : Risques & Bonnes Pratiques ("Key Management")

En "self-custody", vous ĂȘtes votre propre banque. Cela implique que vous ĂȘtes aussi votre propre service de sĂ©curitĂ©. La plupart des "hacks" en crypto ne sont pas des brĂšches de protocole (casser l'EVM), mais des **arnaques d'ingĂ©nierie sociale** (phishing) qui trompent l'utilisateur pour qu'il autorise une transaction malveillante.

RÚgle n°1 : La Seed Phrase (12/24 Mots)
  • NE JAMAIS taper votre seed phrase dans un site web, une DApp, un formulaire Google, ou l'envoyer Ă  un "Admin" sur Discord/Telegram. JAMAIS.
  • Les "Admins" ou le "Support" ne vous contacteront **JAMAIS** en premier.
  • Votre seed phrase ne sert **QU'À UNE CHOSE** : rĂ©cupĂ©rer votre portefeuille sur un NOUVEL appareil (ex: si vous avez perdu l'ancien).
  • Stockez-la **OFFLINE** (hors ligne). Écrite sur du papier (ou gravĂ©e sur du mĂ©tal), et gardĂ©e dans un lieu sĂ»r (un coffre). Ne la stockez pas dans votre gestionnaire de mots de passe, Google Drive, ou un fichier `notes.txt`.
Menaces Communes (Phishing)
  • 1. Phishing de Seed Phrase : (Le plus destructeur). Un site imite Metamask ou une DApp connue et vous demande votre seed phrase pour "synchroniser" ou "rĂ©clamer un airdrop". (Voir RĂšgle n°1).
  • 2. Phishing d'Approbation (`setApprovalForAll`) :
    • Le Leurre : Un site de "mint NFT gratuit" ou "nouveau jeu Play-to-Earn".
    • L'Action : Vous cliquez "Mint". Metamask s'ouvre. Vous ĂȘtes pressĂ© et vous signez.
    • Le Hack : Vous n'avez pas signĂ© `mint()`. Vous avez signĂ© setApprovalForAll(ADRESSE_DU_HACKER, true).
    • Traduction : "J'autorise l'adresse du hacker Ă  prendre et dĂ©placer *tous* mes NFTs de la collection Bored Ape (par exemple)." Le hacker vide votre wallet.
    • Protection : Lisez *toujours* la fonction que Metamask vous demande de signer.
  • 3. Transfert d'Adresse ZĂ©ro : Les hackers "polluent" votre historique de transactions en vous envoyant 0 ETH depuis une adresse qui *ressemble* Ă  la vĂŽtre (ex: `0x123...789` vs `0x123...DEF`). Vous copiez/collez cette "fausse" adresse depuis votre historique pour un transfert.
Bonnes Pratiques (Défense)
  • 1. Utiliser un Hardware Wallet (Ledger/Trezor) : C'est la meilleure dĂ©fense. MĂȘme si vous ĂȘtes "phishĂ©" et que vous signez une transaction malveillante sur votre PC, vous devrez la valider sur l'Ă©cran *sĂ©curisĂ©* de l'appareil. Cela vous donne une deuxiĂšme chance de voir la supercherie (ex: voir `setApprovalForAll` sur l'Ă©cran du Ledger).
  • 2. HygiĂšne des Wallets (Compartimentation) :
    • Wallet "Coffre-Fort" (Vault) : Un compte (idĂ©alement hardware) qui dĂ©tient 99% de vos fonds. Il ne se connecte **JAMAIS** Ă  une DApp. Il ne sert qu'Ă  envoyer des fonds au "Hot Wallet".
    • Wallet "Courant" (Hot Wallet) : Un compte Metamask avec peu de fonds (ex: 0.1 ETH). C'est votre "portefeuille de poche" pour interagir avec les DApps. S'il est compromis, vous ne perdez que peu.
  • 3. RĂ©voquer les Approbations (Revoke) :
    • Lorsque vous utilisez Uniswap, vous lui donnez l'approbation de dĂ©penser votre USDC. Cette approbation est *infinie* par dĂ©faut.
    • Utilisez rĂ©guliĂšrement des outils (ex: **`revoke.cash`**) pour voir *quels* contrats ont accĂšs Ă  *quels* tokens dans votre portefeuille, et **rĂ©voquez** (annulez) les approbations dont vous n'avez plus besoin.