
Entenda Endereços Bitcoin, Bech32 e Conversão WIF: Guia Completo
Sempre crie uma frase de segurança única para jogos, testnets ou airdrops e evite usar sua carteira principal.
Introdução aos Endereços Bitcoin e Formatos WIF
Este artigo apresenta um guia detalhado sobre a geração e manipulação de endereços Bitcoin, incluindo formatos clássicos como P2PKH, endereços segwit Bech32 (BIP173) e o formato WIF para chaves privadas. Também abordamos conceitos importantes de codificação Base58Check e o cálculo de checksums essenciais para garantir a segurança das transações.
Codificação Bech32 e Endereços Segwit (BIP173)
O formato Bech32, definido pela BIP173, é o padrão para endereços Segwit, mais eficientes e com melhor detecção de erros.
Funções para Codificação Bech32
bech32_polymod
: calcula o checksum para o endereço.bech32_hrp_expand
: expande o prefixo humano legível (HRP) para o cálculo.bech32_create_checksum
: cria o checksum usando os dados e HRP.bech32_encode
: une tudo para gerar o endereço final.convertbits
: converte bits para a base apropriada para Bech32.
Geração de Endereços Segwit
O endereço Segwit é gerado a partir do hash160 da chave pública, codificado usando Bech32, conforme a função encode_segwit_address
. O prefixo bc
é usado para a rede Bitcoin principal.
Funções Auxiliares para Bitcoin
hash160
: realiza o hash SHA-256 seguido de RIPEMD-160, base para endereços Bitcoin.pubkey_to_p2wpkh
: converte a chave pública em endereço Bech32 P2WPKH.p2sh_p2wpkh_address
: cria o endereço P2SH-P2WPKH, para compatibilidade.
Intervalos de Chaves Privadas e Conversão
A função define_interval_from_privkey
calcula um intervalo decimal da chave privada baseado em um tamanho definido, útil para iterações e buscas.
Exemplo Prático
O código abaixo mostra o cálculo do intervalo para a chave privada hexadecimal e sua representação decimal, além do cálculo da entropia usando logaritmo base 2:
privkey_hex = "00000000000000000000000000000000000000000000000000000000000000e0"
low, high, privkey_int = define_interval_from_privkey(privkey_hex)
print(f"Chave privada (hex): {privkey_hex}")
print(f"Intervalo decimal: {low} a {high}")
Integração com Banco de Dados SQLite
O script conecta a um banco SQLite para buscar endereços Bitcoin armazenados, verificando quais chaves geradas correspondem aos endereços existentes. Isso permite identificar chaves privadas associadas a endereços de interesse.
Geração de Endereços e WIF
Para cada valor dentro do intervalo da chave privada, são gerados os formatos:
- P2PKH não comprimido
- P2PKH comprimido
- P2SH-P2WPKH
- Bech32 (P2WPKH)
Também são gerados os formatos WIF correspondentes para uso em carteiras.
Codificação Base58 e Base58Check
A codificação Base58 é amplamente usada para endereços Bitcoin e WIF, reduzindo ambiguidades em caracteres visuais. Já a Base58Check inclui um checksum para evitar erros de digitação.
Funções importantes:
base58_decode
ebase58_encode
: convertem entre bytes e Base58.base58check_decode
ebase58check_encode
: adicionam e verificam checksums.wif_to_hex
: converte WIF para chave privada hexadecimal, indicando se é comprimida.hex_to_wif
: converte chave privada hexadecimal para formato WIF, comprimido ou não.
Exemplo de Conversão WIF
Veja um exemplo prático de decodificação e codificação WIF para uma chave privada:
wif_uncompressed = '5KJo41DNfD3qPVMv9Dv1AcufqrbaxiaMKP7dNYzmu673YTUuWMa'
priv_hex, is_compressed = wif_to_hex(wif_uncompressed)
print("Chave privada hex:", priv_hex)
print("É comprimida?", is_compressed)
wif_compressed = hex_to_wif(priv_hex, compressed=True)
print("WIF comprimida:", wif_compressed)
Considerações Finais
Este guia técnico oferece uma base sólida para desenvolvedores e entusiastas entenderem a geração de endereços Bitcoin, manipulação de chaves privadas e formatos WIF, além do uso correto da codificação Base58Check e do formato Bech32. A integração com bancos de dados facilita a verificação e pesquisa de endereços existentes.
Importante: O uso de chaves privadas requer total responsabilidade e conhecimento. Nunca compartilhe suas chaves privadas e evite investimentos sem a devida análise e entendimento dos riscos envolvidos.
Para mais informações sobre Bitcoin, consulte o site oficial: bitcoin.org