Codificador e Decodificador Bech32 / Bech32m

Inspecione o que há dentro de uma string bc1q, bc1p, ltc1, lnurl1 ou npub1, ou construa uma a partir de um programa witness ou de bytes brutos. Detecta bech32 vs bech32m e verifica o checksum.

Detecta bech32 vs bech32m, mostra a parte legível por humanos, os dados em 5 bits, os bytes brutos, e a versão e o programa witness SegWit para endereços bc1 / tb1 / ltc1.

Calculado no seu navegador com JavaScript. Os endereços nunca são enviados nem armazenados.

O que é um codificador / decodificador bech32?

Um codificador / decodificador bech32 converte entre bytes brutos e o formato de string do BIP-173: uma parte legível por humanos (bc, ltc, lnurl, npub), o separador 1, o payload em grupos de 5 bits num alfabeto de 32 caracteres, e um checksum BCH de 6 caracteres. Bech32m (BIP-350) é o mesmo formato com uma constante de checksum diferente, exigido para SegWit versão 1 e superiores (Taproot bc1p…).

Exemplo prático

O programa witness 751e76e8199196d454941c45d1b3a323f1433bd6 com versão 0 e hrp bc codifica em bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4, o endereço de referência do BIP-173. Decodificá-lo retorna versão 0, um programa de 20 bytes e codificação bech32. O mesmo programa com versão 1 exigiria bech32m e começaria com bc1p.

Onde o bech32 aparece

Bech32 vs. bech32m vs. Base58Check

CodificaçãoChecksumDetecção de errosUso típico
bech32 (BIP-173)6 caracteres, constante 1garantida para até 4 substituições em 90 caracteresbc1q SegWit v0, LNURL, faturas Lightning, npub
bech32m (BIP-350)6 caracteres, constante 0x2bc830a3igual, e corrige a fraqueza de inserção antes de um p finalbc1p Taproot, SegWit v1 e posteriores
Base58Check4 bytes de SHA-256 duploprobabilística, sem garantia1… e 3… do Bitcoin, T… da Tron, XRP

Erros comuns

Valide um endereço Bitcoin completo, incluindo formatos legados Base58, com o validador de endereços Bitcoin.

Perguntas frequentes

O que é bech32?

Uma codificação definida no BIP-173 para endereços SegWit do Bitcoin: uma parte legível por humanos, o separador 1, e dados num alfabeto de 32 caracteres com um checksum BCH de 6 caracteres que detecta até 4 erros. Não diferencia maiúsculas de minúsculas e, em maiúsculas, é ideal para QR codes.

Qual é a diferença entre bech32 e bech32m?

O Bech32m (BIP-350) muda a constante do checksum de 1 para 0x2bc830a3 para corrigir uma fraqueza do bech32 quando o último caractere é um p. SegWit versão 0 (bc1q) mantém bech32; a versão 1 Taproot e posteriores (bc1p) usam bech32m. O decodificador tenta os dois.

Por que os dados não convertem em bytes inteiros?

O bech32 carrega grupos de 5 bits. Um endereço SegWit tem uma versão witness de 1 grupo seguida do programa, então os dados brutos não ficam alinhados por byte; a ferramenta mostra a versão e o programa separadamente. Outros usos, como LNURL e npub, codificam bytes inteiros com preenchimento.

Posso decodificar LNURL e chaves Nostr?

Sim. lnurl1… decodifica para o texto da URL; npub1… e nsec1… decodificam para chaves de 32 bytes. Nunca cole uma nsec nem qualquer chave privada em lugar nenhum, inclusive aqui.

Qual é o tamanho máximo de uma string bech32?

O BIP-173 limita endereços a 90 caracteres para que a garantia de 4 erros valha. Faturas Lightning e LNURL ignoram o limite de propósito porque carregam muito mais dados; o checksum continua funcionando, só que com garantias mais fracas para strings muito longas.

Como crio um endereço SegWit a partir de uma chave pública?

Faça o hash da chave pública comprimida com SHA-256 e depois RIPEMD-160 para obter o programa de 20 bytes, escolha versão witness 0 e hrp bc. Para Taproot, use a chave de saída x-only de 32 bytes com versão 1. Esta página faz a etapa de codificação; o hash da chave está fora do seu escopo.