|
|
Publié le 17-10-2025 à 09:01:55
|
|
|
|

Base58, Base58Check, Bech32 et Bech32m sont des formats d’encodage couramment utilisés dans la technologie blockchain, principalement pour améliorer la lisibilité, réduire les erreurs et garantir l’intégrité des données. Ces quatre codes présentent leurs propres avantages pour garantir la sécurité, la compatibilité et les capacités de correction d’erreurs, et constituent des pierres angulaires importantes des systèmes d’adressage blockchain modernes.
Base58
« Base58 » est une méthode d’encodage inventée par Satoshi Nakamoto, adaptée d’une méthode d’encodage bien connue, « Base64 ». Le jeu de caractères Base64 comprend : tous les chiffres ainsi que les lettres majuscules et minuscules, ainsi que deux symboles (« + » et « / ») ; Un total de 64 caractères. Satoshi Nakamoto a supprimé le chiffre 0, les lettres majuscules I et O, les lettres minuscules l et le symbole, et cela est devenu Base58.
Jeu de caractères : 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Base58Check
Comparé à Base58, l’encodage Base58Check ne comporte qu’un seul calcul supplémentaire de la somme de contrôle. Comme montré ci-dessous :
Base58Check résout les problèmes de propension à l’erreur, de difficulté à reconnaître et non vérifiés dans les méthodes de codage traditionnelles, en fournissant une méthode de représentation sécurisée, compacte, conviviale pour l’humain et détectant les erreurs des données clés dans la blockchain (telles que les adresses et les clés privées). Bien qu’il soit désormais progressivement remplacé par les plus avancés Bech32/Bech32m (pour les adresses SegWit), il a joué un rôle crucial dans l’écosystème Bitcoin naissant.
Bech32
« Bech32 » est une méthode d’encodage définie par BIP 0173, rédigée par Pieter Wuille et Greg Maxwell. Cependant, ce codage trouve aussi ses origines : « Bech » fait référence à « BCH », un algorithme de correction d’erreur cyclique inventé par trois mathématiciens en 1959 et 1960 respectivement (le nom BCH vient des noms de ces trois mathématiciens). « 32 » signifie que l’ensemble de caractères de la méthode d’encodage ne compte que 32 caractères : lettres minuscules et chiffres, à l’exclusion des chiffres « 1 », des lettres « b », « i » et « o ».
Au début de BIP 0173, les auteurs soulignent les aspects indésirables de Base58 :
- Base58 utilise à la fois des lettres anglaises en grand et minuscule, ce qui fait que ses données sont dessinées dans des codes QR non pas en mode « alphabet numérique » plus petit, mais uniquement en mode « données à octets » plus grand.
- L’utilisation à la fois de la case et de la case rend également difficile la transcription, la saisie et la lecture sur le clavier du téléphone.
- La somme de contrôle nécessitait deux opérations consécutives de SHA256, qui étaient lentes et ne permettaient pas de localiser le mauvais emplacement.
- La plupart des méthodes d’encodage d’erreurs localisables ne fonctionnent que si la taille du jeu de caractères est de puissance prime, et que 58 n’est pas une puissance prime.
- Base58 est plus complexe à décoder et plus lent à décoder.
En conséquence, la nouvelle approche de Bech32 utilise uniquement des lettres minuscules et des chiffres ; Lorsque cela est nécessaire, comme lors du dessin d’un code QR, ces lettres peuvent toutes être remplacées par des majuscules pour une représentation plus compacte. Pour les codes QR plus petits, puisque les adresses Bech32 sont singulières, vous pouvez les encoder en QR codes en mode alphanumérique. Cela signifie que vous pouvez créer un code QR plus compact car Base58 nécessite des lettres majuscules et minuscules (ce qui signifie que vous ne pouvez pas utiliser le mode alphanumérique), alors que Bech32 ne le fait pas. Comme montré ci-dessous :
Comme vous pouvez le voir, malgré l’adresse Bech32Contient plus de caractères, mais la possibilité d’utiliser des motifs alphanumériques signifie que les QR codes consomment moins de données au total。
En même temps, Bech32 a la capacité de localiser les erreurs : il peut non seulement détecter que vous avez commis une erreur de copie, mais aussi indiquer quels bits vous avez copiés incorrectement (cette capacité à détecter les erreurs est bien supérieure à celle de Base58).
En fait, l’algorithme BCH dispose aussi d’une fonction de « correction d’erreur » : elle peut non seulement indiquer quels bits vous avez copiés incorrectement, mais aussi quels caractères il doit être. Cependant, les auteurs de BIP 0173 ont constaté ses dangers inhérents : d’une part, renforcer la correction d’erreurs affaiblit la capacité à localiser les erreurs ; En revanche, si l’utilisateur fait trop confiance aux capacités de correction d’erreurs du logiciel, celui-ci peut corriger les données erronées saisies par l’utilisateur en une donnée « valide mais inutile » – bien qu’elle soit valide en tant que donnée encodée BCH ; Cependant, il est possible que le script restauré de Bitcoin ne soit pas sous le contrôle du destinataire, ni même de quiconque. C’est extrêmement dangereux. Par conséquent, BIP 0173 met en garde : « En plus de rappeler aux utilisateurs quels bits ont pu être copiés incorrectement, le logiciel ne devrait pas implémenter de capacités de correction d’erreurs (donner des suggestions de correction). » ”
De plus, Bech32 suit le schéma trouvé dans le codage Base58 :
1. Les données Bech32 commenceront par un paragraphe « données avec signification (hrp) », similaire au préfixe de Base58, qui peut indiquer le type de données qu’il s’agit. HRP peut utiliser bien plus de 32 caractères ; Bech32 utilise également le nombre « 1 » comme séparateur pour séparer la HRP des données qui doivent réellement être décodées. En plus de Bitcoin, de nombreux autres projets ont également adopté Bech32 ; La HRP est utilisée pour distinguer les données de différents items. Voici une liste des HRP enregistrés, ce qui est très intéressant (mais seulement intéressant). 2. Bech32 a également conçu une somme de contrôle qui occupe les 6 derniers caractères des données encodées.
Bech32m
« Bech32m » est une méthode d’encodage définie par BIP 0350. Lien:La connexion hyperlientérée est visible.Elle a été proposée parce que les développeurs ont découvert une vulnérabilité dans le codage de Bech32 :
Lorsque le dernier caractère est « p », insérer ou supprimer un nombre quelconque de « q » devant ce caractère ne provoquera pas d’erreur de somme de contrôle (les données resteront considérées comme valides), alorsLe mécanisme de somme de contrôle perd complètement sa fonctionFinir.
Si vous n’ajoutez pas de script Bitcoin standardisé, ce problème peut être facilement résolu : l’adresse P2WPKH et l’adresse P2WSH ont toutes deux une certaine longueur, il suffit d’ajouter la vérification de longueur. Cependant, étant donné que nous allons également ajouter de nouveaux scripts standardisés à l’avenir, la longueur des adresses pourrait changer, il est donc nécessaire de corriger ce problème.
Bech32m corrige ce problème en modifiant un paramètre dans le générateur de somme de contrôle Bech32.
Actuellement, Bech32m est uniquement utilisé pour coder les adresses des scripts « P2TR » ajoutés avec la mise à niveau « Taproot ». Il pourrait être utilisé à l’avenir dans l’encodage d’adresses d’autres scripts standardisés.
Référence:
La connexion hyperlientérée est visible.
La connexion hyperlientérée est visible.
La connexion hyperlientérée est visible. |
Précédent:tiktok, Douyin capture le paquet et coupe le script Frida, qui peut localiser l’emplacement du patch du fichier SOProchain:Introduction aux types d’adresses Bitcoin : Legacy, SegWit imbriqué, SegWit natif et Taproot
|