Como usar
- Escolha Codificar para gerar uma string Base58Check, ou Decodificar para verificar uma string e recuperar os bytes.
- 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.
- Mantenha a opção Soma de verificação Base58Check ativada. A soma de verificação é acrescentada ao codificar e verificada ao decodificar.
- 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
- 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.
- 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.
- Acrescente a soma de verificação ao final e codifique tudo com Base58. Cada byte
0x00à esquerda vira um1.
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ão | Dados | A string codificada começa com |
|---|---|---|
0x00 | Endereço Bitcoin P2PKH (HASH160 de 20 bytes) | 1 |
0x05 | Endereço Bitcoin P2SH (hash de script de 20 bytes) | 3 |
0x6F | Endereço P2PKH da testnet do Bitcoin | m ou n |
0x80 | Chave 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
| Alfabeto | 1-9 A-Z a-z sem 0 O I l |
|---|---|
| Tamanho da saída | Cerca de 137% mais uma soma de verificação de 4 bytes |
| Preenchimento | Nenhum |
| Padrão | Bitcoin Base58Check |
| Diferencia maiúsculas e minúsculas | Sim |
Exemplos
| Entrada (UTF-8) | Saída |
|---|---|
Hello, World! | gTazoqFvnegwaKM8v1B33sR |
Base64.is | 6XgW4KVJr8DBmZEAeJ |
你好 | DrMzxHL43oWHbW |
Perguntas frequentes
Por que a decodificação falha com um erro de soma de verificação?
A ferramenta adiciona o byte de versão por mim?
00 para um endereço Bitcoin.Posso decodificar uma chave privada WIF?
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).