Como Converter Chaves Privadas em WIF e Gerar Endereços Bitcoin
Sempre crie uma frase de segurança única para jogos, testnets ou airdrops e evite usar sua carteira principal.
Como Converter Chaves Privadas em WIF e Gerar Endereços Bitcoin
Este artigo apresenta um exemplo prático em Python para converter chaves privadas em formato hexadecimal para o padrão WIF (Wallet Import Format) e, em seguida, gerar endereços públicos Bitcoin. A conversão correta das chaves é fundamental para garantir a segurança e a compatibilidade com carteiras digitais.
O que é WIF?
O Wallet Import Format (WIF) é uma representação codificada de uma chave privada em formato base58, que facilita o uso e importação das chaves em diversas carteiras Bitcoin. Esse formato inclui um checksum para verificar erros na digitação e garante integridade dos dados.
Conversão de chave privada para WIF
A função private_key_to_wif abaixo recebe uma chave privada hexadecimal e converte para o formato WIF, aplicando o prefixo padrão, a compressão e o checksum usando hash duplo SHA-256, seguindo as especificações do protocolo Bitcoin.
import gc
import hashlib
from bit import Key
def private_key_to_wif(private_key_hex, compression='01'):
# Remove o prefixo '0x' se presente
if private_key_hex.startswith('0x'):
private_key_hex = private_key_hex[2:]
private_key = private_key_hex.zfill(64)
data = "80" + private_key + compression
# Aplica hash duplo SHA-256 para gerar o checksum
hash1 = hashlib.sha256(bytes.fromhex(data)).digest()
hash2 = hashlib.sha256(hash1).hexdigest()
checksum = hash2[0:8]
# Concatena a chave privada com o checksum
data = data + checksum
# Codifica a chave com base58
characters = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
i = int(data, 16)
base58 = ''
while i > 0:
i, remainder = divmod(i, 58)
base58 = characters[remainder] + base58
return base58
Gerando o endereço público Bitcoin
Com a biblioteca bit, podemos converter o WIF para um endereço público Bitcoin padrão, que pode ser usado para receber transações.
def wif_to_public_key(wif):
# Converte WIF para chave privada
key = Key(wif)
# Retorna o endereço público em formato padrão Bitcoin
return key.address
Exemplo prático completo
Veja a seguir um exemplo completo que demonstra a conversão de uma chave privada em hexadecimal para WIF e a geração do endereço público correspondente:
def main():
# Exemplo de chave privada em hexadecimal
private_key_hex = "00000000000000000000000000000000000000000000000000000000000001d3"
# Converte a chave privada para WIF
wif = private_key_to_wif(private_key_hex)
print(f"WIF: {wif}")
# Converte o WIF para endereço público
public_key = wif_to_public_key(wif)
print(f"Endereço público: {public_key}")
# Limpa a memória usando o garbage collector
gc.collect()
if __name__ == "__main__":
main()
Considerações finais
Este tutorial destaca os passos essenciais para manipular chaves privadas e gerar endereços Bitcoin com segurança e compatibilidade. A biblioteca bit é uma ferramenta robusta e confiável para este propósito.
Importante: Ao lidar com criptomoedas, recomendamos cautela e responsabilidade. Nunca compartilhe suas chaves privadas e analise individualmente qualquer investimento ou movimentação, evitando riscos desnecessários.

Comentários
Comente só assim vamos crescer juntos!