Codificador e decodificador Base58Check

Acrescente uma soma de verificação SHA-256 dupla de 4 bytes e codifique em Base58, ou decodifique uma string Base58Check, verifique a soma de verificação e leia o byte de versão e o payload.

Funciona inteiramente no seu navegador. Nada é enviado.

Como usar

  1. Escolha Codificar para gerar uma string Base58Check, ou Decodificar para verificar uma string e recuperar os bytes.
  2. Para codificar, defina a entrada como Hex e digite o byte de versão seguido do payload, por exemplo 00 e um HASH160 de 20 bytes.
  3. Mantenha a opção Soma de verificação Base58Check ativada. A soma de verificação é acrescentada ao codificar e verificada ao decodificar.
  4. Para decodificar, cole a string e defina a saída como Hex. Você obtém o byte de versão e o payload, sem a soma de verificação.

Como o Base58Check funciona

  1. Comece com um byte de versão que indica o tipo dos dados, seguido do payload, como um hash de chave pública de 20 bytes.
  2. Calcule o SHA-256 desses bytes, calcule o SHA-256 do resultado mais uma vez e guarde os 4 primeiros bytes como soma de verificação.
  3. Acrescente a soma de verificação ao final e codifique tudo com Base58. Cada byte 0x00 à esquerda vira um 1.

Esta ferramenta calcula a soma de verificação exatamente sobre os bytes que você digita. Ela não adiciona o byte de versão por você, então inclua-o no início da entrada. Ao decodificar, ela recalcula a soma de verificação sobre tudo, exceto os últimos 4 bytes. Se os valores coincidirem, você recebe o byte de versão e o payload; caso contrário, recebe um erro de soma de verificação. Um erro de digitação aleatório só passa despercebido cerca de uma vez em quatro bilhões de tentativas.

Bytes de versão comuns

Byte de versãoDadosA string codificada começa com
0x00Endereço Bitcoin P2PKH (HASH160 de 20 bytes)1
0x05Endereço Bitcoin P2SH (hash de script de 20 bytes)3
0x6FEndereço P2PKH da testnet do Bitcoinm ou n
0x80Chave privada WIF (32 bytes, mais 0x01 para uma chave comprimida)5, ou K / L se for comprimida

Endereços SegWit e Taproot que começam com bc1 usam Bech32, não Base58Check, e não podem ser decodificados aqui. Endereços do XRP Ledger usam a mesma soma de verificação com o alfabeto Ripple: escolha Ripple na opção Alfabeto.

Exemplo: de HASH160 para endereço

O conhecido endereço associado ao bloco gênese do Bitcoin é formado pelo byte de versão 00 seguido de um HASH160 de 20 bytes. Inserido com a entrada em Hex e a Soma de verificação Base58Check ativada, ele gera o endereço familiar:

Entrada (Hex)  00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18
Saída          1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

No código, o pacote Python base58 oferece b58encode_check() e b58decode_check(), e o pacote npm bs58check oferece encode() e decode().

Especificação

Alfabeto1-9 A-Z a-z sem 0 O I l
Tamanho da saídaCerca de 137% mais uma soma de verificação de 4 bytes
PreenchimentoNenhum
PadrãoBitcoin Base58Check
Diferencia maiúsculas e minúsculasSim

Exemplos

Entrada (UTF-8)Saída
Hello, World!gTazoqFvnegwaKM8v1B33sR
Base64.is6XgW4KVJr8DBmZEAeJ
你好DrMzxHL43oWHbW

Perguntas frequentes

Por que a decodificação falha com um erro de soma de verificação?
Ou um caractere foi digitado errado, ou o alfabeto selecionado não é o certo, ou a string é Base58 simples, sem soma de verificação. Strings Base58 simples, como endereços Solana e CIDs do IPFS, devem ser decodificadas na página Base58.
A ferramenta adiciona o byte de versão por mim?
Não. A soma de verificação é calculada sobre os bytes que você digita, então o byte de versão precisa fazer parte da entrada. Mude a entrada para Hex e digite-o primeiro, por exemplo 00 para um endereço Bitcoin.
Posso decodificar uma chave privada WIF?
Sim. Cole-a na aba Decodificar e escolha a saída Hex. Você obtém 80, a chave de 32 bytes e, no caso de chaves comprimidas, um 01 no final. A decodificação acontece localmente no seu navegador, mas trate chaves privadas reais com cuidado mesmo assim.
Posso decodificar endereços bc1?

Não. Endereços SegWit nativos e Taproot usam Bech32 ou Bech32m, uma codificação diferente com sua própria soma de verificação. No Bitcoin, o Base58Check só é usado nos endereços legados que começam com 1 ou 3 (m, n ou 2 na testnet).