Aller au contenu principal
Adresses

Base58Check

Base58Check est un encodage utilisé pour les adresses Bitcoin legacy (1... ou 3...). Il omet certains caractères ambigus (0, O, I, l) et inclut un checksum. Il rend les adresses plus lisibles et évite les fautes de frappe. Il est progressivement remplacé par Bech32.

Pourquoi pas du Base64 ?

Satoshi voulait des adresses Bitcoin lisibles à l'œil et tapables à la main sans confusion. Base64 utilisait 0, O, I, l et +/= — autant de caractères trop ambigus ou non-URL-friendly. Base58 retire ces caractères problématiques, ne gardant que 58 symboles non confondables : les chiffres 1-9, les lettres A-Z et a-z minus les caractères piégeurs.

Le « Check » dans Base58Check

Encoder en Base58 seul ne suffit pas : une seule lettre erronée enverrait à une adresse différente, et les fonds seraient perdus. Base58Check ajoute un checksum de 4 octets :

checksum = SHA256(SHA256(prefix || payload))[:4]
encoded = Base58(prefix || payload || checksum)

Avant d'utiliser une adresse, tout wallet vérifie le checksum. La probabilité qu'une faute de frappe passe la validation est de 1/2³² (~ 0,000 000 023 %).

Cas d'usage

| Donnée | Prefix | Exemple | |--------|--------|---------| | P2PKH mainnet | 0x00 | 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa | | P2SH mainnet | 0x05 | 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy | | WIF (clé privée) | 0x80 | 5Hwgr3u458GLafKBgxtssHSPqJnYoGrSzgQsPwLFhLNYskDPyr | | Testnet P2PKH | 0x6F | mzBc4XEFSdzCDcTxAgf6EZXgsZWpztRhef |

Limites de Base58Check

  • Pas de détection d'erreur avancée : il sait juste dire « erreur ou pas ».
  • Sensible à la casse : 1Abc et 1aBc sont différents.
  • Mauvaise lisibilité QR : encode 4 octets de checksum, soit 5-6 caractères inutiles.
  • Incompatible avec SegWit natif.

C'est pourquoi SegWit a introduit Bech32 (BIP-173), qui détecte et même corrige certaines erreurs, est insensible à la casse et donne des QR codes 30 % plus compacts. Taproot utilise sa variante Bech32m.

À retenir

Base58Check reste valide et utilisé pour les adresses « legacy » et les exports WIF, mais ne devrait plus être proposé par défaut. Les wallets modernes affichent Bech32 (bc1q...) ou Bech32m (bc1p...). Conserver son historique en Base58Check est cependant nécessaire pour interopérer avec les vieux logiciels.

Termes lies

← Retour au glossaire complet

Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.