Como usar
- Cole os bytes hex na caixa de entrada. Espaços, dois-pontos e o prefixo 0x são aceitos.
- Leia o resultado em Base58 na saída.
- Copie-o ou clique em Inverter entrada e saída para decodificar o Base58 de volta para hex.
Como o hex vira Base58
Primeiro, os dígitos hex são transformados em bytes, dois dígitos por byte, por isso a entrada precisa ter um número par de dígitos. Em seguida, os bytes são lidos como um único número big-endian e reescritos na base 58 com o alfabeto Bitcoin. Cada byte 00 inicial é escrito como 1, e é por isso que 0000ff vira 115Q, enquanto ff sozinho vira 5Q.
O Base58 precisa de cerca de 1,37 caractere por byte, então 64 dígitos hex (32 bytes) encolhem para 43 ou 44 caracteres. O alfabeto não tem 0, O, I, l, + nem /, então o resultado é fácil de ler em voz alta, pode ser selecionado com um clique duplo e cabe em URLs. Tudo é calculado no seu navegador.
Como montar identificadores Solana e IPFS
- Solana: um endereço é a chave pública Ed25519 de 32 bytes em Base58, sem prefixo e sem soma de verificação. Cole a chave hex de 64 dígitos para obter o endereço.
- IPFS CIDv0: um CIDv0 é um multihash sha2-256 em Base58. Coloque
1220na frente do digest de 64 dígitos e você obtém uma string de 46 caracteres que começa comQm. O digest precisa ser aquele que o IPFS calculou para o bloco codificado, que não é o mesmo que o SHA-256 do arquivo original.
1220 9d6c2be50f706953479ab9df2ce3edca90b68053c00b3004b7f0accbe1e8eedf
QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG
Endereços Bitcoin precisam de soma de verificação
Um hash160 sozinho não é um endereço. Um endereço Bitcoin legado é o Base58Check do byte de versão 00 seguido do hash160 de 20 bytes, o que acrescenta uma soma de verificação de 4 bytes, calculada com SHA-256 duplo, antes da codificação. Codificar 00 e o hash160 com Base58 simples gera uma string mais curta sem soma de verificação, e as carteiras a rejeitam.
Use a página Base58Check: mude a entrada para hex, digite 00 seguido do hash160, e a soma de verificação é acrescentada para você. Se o seu hex já termina com a soma de verificação correta, esta página gera o mesmo endereço.
0062e907b15cbf27d5425399ebf6f0fb50ebb88f18 (Base58Check)
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
Hex para Base58 no código
# Python (pip install base58)
import base58
base58.b58encode(bytes.fromhex('0000ff')) # b'115Q'
// JavaScript (npm install bs58)
import bs58 from 'bs58';
bs58.encode(Buffer.from('0000ff', 'hex')); // '115Q'
Perguntas frequentes
Como transformar um hash160 em um endereço Bitcoin?
Por que o resultado começa com vários caracteres 1?
O seu hex começa com a mesma quantidade de bytes 00. O Base58 os mantém como caracteres 1 iniciais para que sejam restaurados quando a string for decodificada.
Por que minha entrada hex é rejeitada?
O hex precisa de um número par de dígitos e apenas dos caracteres 0-9 e a-f, em maiúsculas ou minúsculas. Espaços, dois-pontos e o prefixo 0x são removidos automaticamente; qualquer outra coisa, como uma letra g perdida ou um dígito faltando, é um erro.