blockchain bitcoin ethereum base58 bech32 encoding

Guide des adresses et de l'encodage blockchain : maîtriser Base58, Bech32 et EIP-55

Un guide technique complet on les formats d'adresses blockchain, incluant Base58Check, Bech32/Bech32m et les sommes de contrôle Ethereum EIP-55. Apprenez à valider les adresses Bitcoin et Ethereum.

2026-04-12

Introduction aux adresses blockchain

Dans le monde de la finance décentralisée et des registres distribués, une « adresse » est l'identifiant public utilisé pour recevoir des fonds. Bien que nous les voyions souvent comme de longues chaînes de caractères alphanumériques, ces chaînes sont le résultat de schémas d'encodage sophistiqués conçus pour la lisibilité humaine, la détection d'erreurs et l'efficacité de l'espace.

Comprendre ces schémas d'encodage — tels que Base58, Bech32 et EIP-55 — est crucial pour les développeurs, les chercheurs en sécurité et les utilisateurs avertis. Ce guide propose une plongée profonde dans les standards techniques qui définissent comment les adresses blockchain sont construites et validées.


1. Base58 et Base58Check : l'héritage de Bitcoin

Le format d'adresse original de Bitcoin (adresses Legacy commençant par 1 ou 3) utilise l'encodage Base58.

Pourquoi Base58 ?

L'encodage Base64 standard inclut des caractères qui peuvent être facilement confondus par l'homme, comme 0 (zéro) et O (o majuscule), ou I (i majuscule) et l (L minuscule). Base58 a été spécifiquement conçu par Satoshi Nakamoto pour éliminer ces caractères ambigus.

Alphabet Base58 : 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

Base58Check : ajout de la détection d'erreurs

Pour empêcher les utilisateurs d'envoyer accidentellement des fonds vers une adresse mal saisie, Bitcoin utilise Base58Check. Cela ajoute une somme de contrôle (checksum) de 4 octets à la charge utile avant l'encodage.

Le processus Base58Check :

  1. Octet de version : Un préfixe est ajouté pour indiquer le type d'adresse (par ex., 0x00 pour P2PKH, 0x05 pour P2SH).
  2. Charge utile (Payload) : Le hachage réel de la clé publique (RIPEMD-160).
  3. Calcul de la somme de contrôle : SHA256(SHA256(Version + Charge utile)) est calculé. Les 4 premiers octets du résultat constituent la somme de contrôle.
  4. Concaténation : Version + Charge utile + Somme de contrôle.
  5. Encodage Base58 : L'ensemble du tableau d'octets concaténés est converti en une chaîne Base58.

Si un seul caractère est modifié, la validation de la somme de contrôle échouera, protégeant l'utilisateur des erreurs de frappe.


2. Bech32 et Bech32m : SegWit et au-delà

À mesure que Bitcoin a évolué avec SegWit (Segregated Witness), un nouveau format d'adresse est devenu nécessaire. Bech32 (défini dans le BIP 173) est devenu le standard pour les adresses Native SegWit (commençant par bc1q).

Les avantages de Bech32

  • Insensible à la casse : Les chaînes Bech32 sont toutes en minuscules (bien qu'elles puissent être en majuscules, le mélange est interdit). Cela les rend plus faciles à saisir et à lire à haute voix.
  • Efficacité des codes QR : Parce qu'il n'utilise que des lettres minuscules et des chiffres, le Bech32 est plus efficace dans les codes QR.
  • Meilleure détection d'erreurs : Bech32 utilise un code BCH qui peut détecter jusqu'à 4 erreurs et potentiellement les corriger.
  • Pas d'ambiguïté Base58 : Il utilise un jeu de caractères qui exclut les caractères déroutants.

Alphabet Bech32 : qpzry9x8gf2tvdw0s3jn54khce6mua7l (Notez l'exclusion de 1, b, i, o).

Bech32m : correction du problème du caractère « 1 »

En 2021, le Bech32m (BIP 350) a été introduit pour corriger une vulnérabilité mineure du Bech32 original lorsqu'il est utilisé avec Taproot (programmes witness v1) et supérieurs. Le Bech32m est désormais le standard pour les adresses Taproot (commençant par bc1p).


3. Formats d'adresse Ethereum et sommes de contrôle EIP-55

Contrairement à Bitcoin, les adresses Ethereum sont dérivées directement des 20 derniers octets du hachage Keccak-256 de la clé publique. Elles sont généralement représentées sous la forme d'une chaîne hexadécimale commençant par 0x.

L'absence de somme de contrôle intégrée

À l'origine, les adresses Ethereum n'avaient pas de somme de contrôle intégrée. Si vous faisiez une erreur de frappe dans une adresse 0x standard, les fonds étaient simplement envoyés vers une destination invalide ou inaccessible.

EIP-55 : somme de contrôle par mélange de casses

Pour résoudre ce problème sans modifier la longueur de l'adresse, Vitalik Buterin a proposé l'EIP-55. Il utilise la capitalisation pour encoder une somme de contrôle.

Algorithme EIP-55 :

  1. Passer l'adresse en minuscules (en excluant 0x).
  2. Calculer le hachage Keccak-256 de la chaîne de l'adresse en minuscules.
  3. Pour chaque caractère $i$ de l'adresse :
    • Si le $i$-ème quartet (nibble) du hachage est $\ge 8$, passer le $i$-ème caractère de l'adresse en majuscule.
    • Sinon, le laisser en minuscule.

Exemple :

  • Standard : 0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed
  • EIP-55 : 0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed

Un validateur d'adresse Bitcoin ou un validateur d'adresse Ethereum doit implémenter ces algorithmes spécifiques pour garantir l'intégrité de la destination de la transaction.


4. Tableau récapitulatif : comparaison des encodages d'adresses

Caractéristique Base58Check Bech32 / Bech32m EIP-55 (Ethereum)
Blockchain Bitcoin (Legacy) Bitcoin (SegWit/Taproot) Ethereum
Préfixe 1 ou 3 bc1q ou bc1p 0x
Jeu de caractères 58 caractères (Alphanumérique) 32 caractères (Minuscules + Chiffres) 16 caractères (Hex)
Type de checksum Double SHA-256 (4 octets) Code BCH Keccak-256 (Mélange de casses)
Sensible à la casse Oui Non (Insensible) Optionnel (Recommandé)

FAQ : questions courantes sur l'encodage blockchain

Q : Pourquoi certaines adresses Bitcoin commencent-elles par 1 et d'autres par 3 ?

R : Les adresses commençant par 1 sont des adresses P2PKH (Pay-to-Public-Key-Hash). Celles commençant par 3 sont des adresses P2SH (Pay-to-Script-Hash), souvent utilisées pour le multi-sig ou le SegWit imbriqué.

Q : Puis-je envoyer des BTC vers une adresse Ethereum ?

R : Non. Les schémas d'encodage et les courbes cryptographiques sous-jacentes peuvent se chevaucher, mais les protocoles réseau sont entièrement différents. Envoyer des actifs vers une adresse sur une autre chaîne entraîne généralement une perte permanente.

Q : Qu'est-ce qu'une « adresse Vanity » ?

R : Une adresse vanity est une adresse blockchain qui contient un mot ou un motif spécifique (par ex., commençant par 1Love...). Elles sont générées par force brute sur des millions de paires de clés jusqu'à ce qu'un hachage public correspondant soit trouvé.

Q : Comment corriger une erreur « Adresse invalide » ?

R : Cette erreur signifie généralement que la validation de la somme de contrôle a échoué. Vérifiez deux fois les erreurs de frappe, assurez-vous de ne pas confondre 0 et O, et vérifiez que vous envoyez vers le bon réseau (par ex., n'envoyez pas de BTC SegWit vers un portefeuille exclusivement Legacy).


Conclusion

L'encodage des adresses blockchain est plus qu'une simple chaîne de caractères ; c'est une couche de sécurité vitale. Qu'il s'agisse de la résistance aux erreurs de frappe du Base58Check, de l'efficacité du Bech32 ou de l'astucieuse somme de contrôle par mélange de casses de l'EIP-55, ces standards garantissent que des milliards de dollars peuvent être déplacés à travers le monde en toute confiance. En tant que développeur ou utilisateur, maîtriser ces formats est la première étape vers la compréhension de l'architecture technique du Web décentralisé.