Bech32
O formato de endereço para scripts de travamento segwit
Bech32 (pronuncia-se "betch trinta e dois") é um formato de endereço usado para representar scripts de travamento segwit como P2WPKH, P2WSH e P2TR.
Foi introduzido logo após a atualização Segregated Witness para fornecer um formato de endereço melhor para os novos scripts segwit. É uma melhoria em relação ao formato legado Base58.
Você identifica um endereço Bech32 pelo prefixo bc1.
Benefícios
Por que o Bech32 é melhor que o Base58?
Mais amigável
Os endereços Bech32 usam apenas letras minúsculas (ou apenas maiúsculas), então não são sensíveis a maiúsculas/minúsculas como o Base58. Isso os torna mais fáceis de ler em voz alta, digitar e codificar em QR codes (QR codes ficam menores com tudo em maiúsculas).
Detecção de erros superior
O checksum do Bech32 usa um código BCH que é muito melhor em detectar erros do que o checksum simples do Base58. Ele garante a detecção de até 4 erros de caractere e, além disso, pode até sugerir onde está o erro (embora as carteiras geralmente não usem essa capacidade de correção, por segurança).
Estrutura
Como um endereço Bech32 é montado?
Um endereço Bech32 tem três partes:
- Parte legível por humanos (HRP). Indica a rede:
bc(mainnet) outb(testnet). - Separador. Sempre o caractere
1. - Parte de dados. A versão de testemunha + o programa de testemunha + o checksum, todos codificados no conjunto de 32 caracteres do Bech32.
O processo de codificação resumido: pega-se o programa de testemunha (ex.: o hash de 20 ou 32 bytes), converte-se de grupos de 8 bits para grupos de 5 bits, adiciona-se a versão de testemunha na frente, calcula-se o checksum e codifica-se tudo no alfabeto Bech32 (Base32).
Bech32 vs Bech32m
Há duas variantes do checksum:
- Bech32 — usado para a versão de testemunha 0 (P2WPKH e P2WSH). Endereços
bc1q... - Bech32m — usado para a versão de testemunha 1+ (P2TR / Taproot). Endereços
bc1p...
O Bech32m (BIP 350) foi introduzido para corrigir uma fraqueza no checksum original do Bech32 para versões de testemunha maiores que 0.