Bech32 / Bech32m
Bech32 est l'encodage des adresses SegWit (BIP-173), reconnaissable au préfixe « bc1 ». Il améliore la détection d'erreurs et la lisibilité. Bech32m (BIP-350) en est la variante pour Taproot. Plus efficace en QR code et plus sûr que Base58Check.
Une réponse aux défauts de Base58Check
Base58Check avait deux défauts majeurs : il était sensible à la casse et son checksum se contentait de détecter des erreurs sans les localiser. Lors de l'activation de SegWit en 2017, Pieter Wuille et Greg Maxwell ont proposé un nouvel encodage, Bech32, formalisé dans BIP-173. Inspiré des codes BCH de la théorie des codes correcteurs, il offre des garanties mathématiques bien plus solides.
Structure d'une adresse Bech32
Une adresse Bech32 se compose de :
bc1 q w508d6qejxtdg4y5r3zarvary0c5xw7kygt080
└┬┘│ └──────────────────────┬──────────────┘
│ │ │
│ │ └─ Données + checksum 6 caractères
│ └─ Séparateur "1"
└─ HRP (Human-Readable Part) : bc pour mainnet, tb pour testnet
L'alphabet : qpzry9x8gf2tvdw0s3jn54khce6mua7l (32 caractères, choisis pour éviter les confusions visuelles).
Avantages techniques
| Propriété | Base58Check | Bech32 |
|-----------|-------------|--------|
| Casse | Mixte (sensible) | Tout minuscule (insensible) |
| Détection d'erreurs | ~2³² | Garantie jusqu'à 4 erreurs |
| Correction d'erreurs | Non | Possible (suggérée par lib) |
| QR code | Standard | 30 % plus compact (alphanumérique) |
| Préfixe lisible | Inexistant | bc1, tb1, bcrt1 |
Bech32 vs Bech32m
En 2020, une faiblesse a été découverte : Bech32 ne détecte pas certaines insertions de zéros en fin d'adresse. Pour Taproot, une variante Bech32m (BIP-350) a été créée avec une constante différente (0x2bc830a3 au lieu de 1). Conséquence :
À retenir
Bech32 et Bech32m sont les standards modernes des adresses Bitcoin. Plus sûrs, plus lisibles, plus économes en frais, ils devraient être utilisés par défaut. Les wallets affichant encore 1... (Base58) en 2026 sont à mettre à jour.
Termes lies
- Base58CheckBase58Check 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.
- P2WPKHP2WPKH (Pay-to-Witness-Public-Key-Hash) est le format SegWit natif équivalent à P2PKH (préfixe bc1q...). Plus économique en frais grâce au discount des données witness. Standard de fait pour les wallets singlesig modernes. Spécifié dans BIP-141 et BIP-173.
- P2WSHP2WSH (Pay-to-Witness-Script-Hash) est l'équivalent SegWit de P2SH (préfixe bc1q... longue). Verrouille sur un hash de script (multisig par ex.). Plus économique que P2SH-P2WSH. Standard pour les multisigs SegWit jusqu'à l'arrivée de Taproot.
- P2TRP2TR (Pay-to-Taproot) est le format Taproot (préfixe bc1p...). Il combine signature Schnorr et MAST pour des conditions de dépense flexibles et privées. Une dépense par clé est indistinguable d'une dépense par script. Standard recommandé pour les nouveaux wallets.
- BIP-173BIP-173 définit Bech32, l'encodage des adresses SegWit (bc1q...). Détection d'erreurs supérieure et lisibilité. Préfixe HRP.
- BIP-350BIP-350 définit Bech32m, variante de Bech32 pour Taproot. Corrige une faiblesse mineure du Bech32 original.
Glossaire inspire du dictionnaire de Loic Morel sur Pandul.fr.