Bech32, défini par le BIP-173, a été introduit avec SegWit pour remplacer l'encodage Base58 des anciennes adresses. Il n'utilise qu'une seule casse, ce qui évite les confusions entre majuscules et minuscules et permet des QR codes plus compacts grâce au mode alphanumérique. Il exclut aussi des caractères faciles à confondre. Surtout, sa somme de contrôle, fondée sur un code correcteur de type BCH, garantit la détection d'un petit nombre d'erreurs de saisie et peut aider à les localiser.
Une faiblesse a ensuite été découverte : dans certains cas, l'ajout ou la suppression de caractères q juste avant un p final pouvait passer inaperçu. Le BIP-350 a donc créé bech32m, qui modifie une constante de la somme de contrôle. Il est obligatoire pour les adresses SegWit de version 1 et plus, ce qui inclut Taproot. Contrairement à une idée reçue, ces adresses ne sont pas plus courtes que les anciennes ; leur avantage tient à la fiabilité et à l'efficacité des données de transaction SegWit.
Un exemple concret
Imaginons que Camille copie à la main une adresse commençant par bc1q et se trompe sur un caractère. Grâce à la somme de contrôle bech32, son portefeuille signale immédiatement que l'adresse est invalide au lieu d'envoyer les fonds vers une destination inconnue. Plus tard, elle crée un portefeuille Taproot : ses nouvelles adresses commencent par bc1p et utilisent bech32m.
Les risques à connaître
Certains services anciens ne savent pas envoyer vers des adresses bech32m, ce qui peut bloquer un retrait. Un logiciel mal mis à jour qui encoderait une adresse Taproot en bech32 au lieu de bech32m produirait une adresse invalide. La somme de contrôle ne protège pas contre une adresse entièrement remplacée par un logiciel malveillant.
Questions fréquentes sur Bech32
Quelle est la différence entre une adresse bc1q et une adresse bc1p ?
Une adresse bc1q correspond à SegWit version 0 et utilise bech32 ; une adresse bc1p correspond à Taproot, SegWit version 1, et utilise bech32m.
Peut-on envoyer des bitcoins d'une ancienne adresse vers une adresse bc1 ?
Oui. Les formats d'adresses sont compatibles au niveau du protocole ; il faut seulement que le logiciel d'envoi reconnaisse le format de destination.