Visão geral
Base58 é um sistema de codificação que converte dados binários em uma string compacta e legível por humanos usando 58 caracteres alfanuméricos. Foi projetado por Satoshi Nakamoto especificamente para o Bitcoin para minimizar a chance de erros quando os usuários copiam ou transcrevem manualmente endereços e chaves privadas.
Conjunto de caracteres
O Base58 usa os seguintes caracteres, excluindo deliberadamente aqueles que são facilmente confundidos:
Alfabeto Base64 padrão:
A-Z a-z 0-9 + /
Base58 remove esses caracteres ambíguos:
0 (zero) ← confundido com O
O (maiúsculo) ← confundido com 0
I (maiúsculo) ← confundido com l ou 1
l (minúsculo) ← confundido com I ou 1
+ e / ← não são 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
O Base58Check estende o Base58 adicionando um byte de versão no início e um checksum de 4 bytes no final (os primeiros 4 bytes de um hash SHA-256 duplo do payload). Esse checksum permite que carteiras detectem erros de digitação antes de enviar uma transação para um endereço inválido.
Transição para o Bech32
Embora o Base58Check tenha servido bem ao Bitcoin por anos, ele foi amplamente substituído pelo Bech32 para endereços SegWit. O Bech32 fornece detecção de erros mais robusta, não diferencia maiúsculas de minúsculas e produz QR codes menores. No entanto, o Base58Check ainda é amplamente utilizado para endereços legacy e chaves privadas codificadas em WIF.