Validador de Base58
Valida se uma string contém apenas caracteres do alfabeto Base58 (Bitcoin: sem 0, O, I e l). Aceita endereços e transações.
Validação Base58: a codificação saída do Bitcoin
Base58 é uma codificação binário-para-texto desenhada por Satoshi Nakamoto no código do Bitcoin em 2009. O objetivo era especificamente produzir identificadores amigáveis quando ditados ou escritos à mão, então o alfabeto é construído pegando os 62 caracteres alfanuméricos ASCII e removendo os quatro visualmente parecidos:
- 0 (zero) — confundido com O maiúsculo
- O (o maiúsculo) — confundido com o dígito zero
- I (i maiúsculo) — confundido com l minúsculo e dígito 1
- l (L minúsculo) — confundido com I maiúsculo e dígito 1
Sobra o alfabeto canônico de 58 caracteres:
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Um exemplo famoso é o endereço do Bloco Gênese: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa — a carteira do próprio Satoshi, ainda guardando os primeiros 50 BTC minerados.
Base58Check: Base58 com checksum
Base58 puro não tem detecção de erro. O protocolo Bitcoin então o embrulha em Base58Check: um byte de versão é prefixado ao payload, SHA-256 é aplicado duas vezes, e os primeiros 4 bytes desse hash duplo são anexados como checksum antes de codificar. O resultado é o endereço Bitcoin familiar: qualquer erro de digitação em um caractere muda o checksum e a carteira rejeita a transação muito antes de ela tocar a rede. O mesmo esquema é usado para chaves privadas no Wallet Import Format (WIF) e para chaves estendidas (xpub / xprv) do BIP-32.
Mecânica de codificação e casos especiais
Diferente do Base64, Base58 não é alinhado a 8 bits: 58 não é potência de 2, então a codificação é implementada como divisão BigInt — converte toda a string de bytes em um inteiro grande, depois divide repetidamente por 58 e emite o resto. Uma consequência é que bytes zero no início da origem não contribuem para o inteiro e seriam perdidos no round-trip; o spec os preserva emitindo um caractere 1 (a primeira letra do alfabeto) para cada byte zero inicial. É por isso que todo endereço Bitcoin legacy começa com 1 (byte de versão 0x00 para P2PKH) ou 3 (byte de versão 0x05 para P2SH).
Além do Bitcoin: Base58 na natureza
- IPFS CIDv0 usa Base58 (alfabeto Bitcoin) para identificadores de conteúdo — todos começam com
Qmporque o prefixo multihash é0x1220. - Stellar usa endereços (as chaves públicas
G...) em uma variante Base32, não Base58 — confusão comum. - NEO e várias chains privadas reutilizam Base58Check diretamente para endereços.
- Solana codifica chaves públicas Ed25519 de 32 bytes em Base58 sem checksum.
Bech32 (BIP-173, endereços SegWit nativos começando com bc1) é o substituto moderno do Base58Check no Bitcoin: case-insensitive, somente minúsculas e usa um código corretor de erros BCH no lugar do truncamento do duplo SHA.
Perguntas frequentes
Qual a diferença para Base64? Base58 é case-sensitive, sem +, / ou =, e pula caracteres visualmente ambíguos. É URL-safe por construção e seguro para copiar-colar entre fontes. O trade-off é performance: Base64 é shift de bits rápido; Base58 exige divisão BigInt.
Por que Base58 é mais lento que Base64? Porque 58 não é potência de dois, a codificação não pode ser uma janela de bits fixa. A implementação ingênua com BigInt é aproximadamente O(n²) no tamanho da entrada, contra O(n) estrito do Base64.
Base58 é usado fora de criptomoedas? Raramente. Encurtadores de URL costumam usar Base62 (mantém todos os alfanuméricos — mais denso, decodificação mais simples), e endereços Bitcoin modernos estão migrando para Bech32. Base58 segue vivo onde a compatibilidade com o tooling original do Bitcoin importa.
Bibliotecas populares? bs58 e bs58check no npm, base58 em Python, bitcoin-core em C++, mais o pacote genérico base-x que permite instanciar qualquer alfabeto custom.
Ferramentas Relacionadas
Formato de Endereço Bitcoin
Detecta o formato de endereço Bitcoin pelo prefixo: legacy (P2PKH), P2SH, segwit bech32 (P2WPKH/P2WSH) ou taproot (P2TR).
Checksum EIP-55 Ethereum
Verifica o checksum EIP-55 simplificado: endereços com mistura de maiúsculas/minúsculas devem seguir o padrão de capitalização.
Validador de Endereço Bitcoin
Valida endereços Bitcoin nos formatos legacy (P2PKH 1...), P2SH (3...) e Bech32 (bc1...). Verifica formato base — não consulta blockchain.