Descripción general
Base58 es un sistema de codificación que convierte datos binarios en una cadena compacta y legible por humanos usando 58 caracteres alfanuméricos. Fue diseñado por Satoshi Nakamoto específicamente para Bitcoin con el fin de minimizar la posibilidad de errores cuando los usuarios copian o transcriben manualmente direcciones y claves privadas.
Conjunto de caracteres
Base58 usa los siguientes caracteres, excluyendo deliberadamente aquellos que se confunden fácilmente:
Alfabeto Base64 estándar:
A-Z a-z 0-9 + /
Base58 elimina estos caracteres ambiguos:
0 (cero) ← confundido con O
O (mayúscula) ← confundido con 0
I (mayúscula) ← confundido con l o 1
l (minúscula) ← confundido con I o 1
+ y / ← no son alfanuméricos
Alfabeto Base58 resultante:
1 2 3 4 5 6 7 8 9
A B C D E F G H J K L M N P Q R S T U V W X Y Z
a b c d e f g h i j k m n o p q r s t u v w x y z
Base58Check
Base58Check extiende Base58 anteponiendo un byte de versión y agregando una suma de verificación de 4 bytes (los primeros 4 bytes de un hash SHA-256 doble del payload). Esta suma de verificación permite a las billeteras detectar errores tipográficos antes de enviar una transacción a una dirección inválida.
Transición a Bech32
Aunque Base58Check sirvió bien a Bitcoin durante años, ha sido en gran medida reemplazado por Bech32 para direcciones SegWit. Bech32 proporciona una detección de errores más robusta, no distingue entre mayúsculas y minúsculas, y produce códigos QR más pequeños. Sin embargo, Base58Check todavía se usa ampliamente para direcciones legacy y claves privadas codificadas en WIF.