Formulário de contato

Nome

E-mail *

Mensagem *

Imagem

Como Gerar Chave Pública e Endereço Bitcoin Usando Python e ECDSA

Como Gerar Chave Pública e Endereço Bitcoin Usando Python e ECDSA

Publicado por em


@CanalQb no YouTube


@CanalQb

Como Usar a Testnet Chainphon e se Preparar para o Lançamento Oficial


Sempre crie uma frase de segurança única para jogos, testnets ou airdrops e evite usar sua carteira principal.



Guia Completo para Gerar Chave Pública e Endereço Bitcoin com Python

Neste artigo, você aprenderá como gerar uma chave pública comprimida e um endereço Bitcoin a partir de uma chave privada usando a biblioteca ecdsa em Python, além de entender conceitos essenciais de criptografia aplicados ao Bitcoin.

Introdução

O Bitcoin utiliza criptografia de curva elíptica (ECDSA) para gerar pares de chaves privadas e públicas que garantem a segurança das transações. Este tutorial apresenta um exemplo prático para quem deseja compreender o processo de derivação das chaves e dos endereços Bitcoin.

Importação das Bibliotecas Necessárias

Para executar o código, certifique-se de ter a biblioteca ecdsa instalada. Além dela, usaremos hashlib para funções de hash e uma implementação manual do Base58Check, padrão para endereços Bitcoin.

O Código Explicado

A seguir está o código comentado e estruturado para gerar a chave pública comprimida e o endereço Bitcoin:

import ecdsa
import hashlib

# Valor decimal da chave privada revelada
privkey_decimal = 62522620898388648159897954119572167059065661617885912620603899974102669643449

# Converter para 32 bytes (256 bits)
privkey_bytes = privkey_decimal.to_bytes(32, byteorder='big')

# Alfabeto Base58 para codificação
alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'

def base58_encode(b):
    n = int.from_bytes(b, 'big')
    res = ''
    while n > 0:
        n, r = divmod(n, 58)
        res = alphabet[r] + res
    pad = 0
    for byte in b:
        if byte == 0:
            pad += 1
        else:
            break
    return '1' * pad + res

def pubkey_to_address(pubkey_bytes):
    sha256 = hashlib.sha256(pubkey_bytes).digest()
    ripemd160 = hashlib.new('ripemd160', sha256).digest()
    prefix = b'\x00'  # Prefixo para endereços Bitcoin padrão (mainnet)
    payload = prefix + ripemd160
    checksum = hashlib.sha256(hashlib.sha256(payload).digest()).digest()[:4]
    address_bytes = payload + checksum
    return base58_encode(address_bytes)

def private_to_compressed_pubkey(priv_key_bytes):
    sk = ecdsa.SigningKey.from_string(priv_key_bytes, curve=ecdsa.SECP256k1)
    vk = sk.get_verifying_key()
    x = vk.pubkey.point.x()
    y = vk.pubkey.point.y()
    prefix = b'\x02' if y % 2 == 0 else b'\x03'  # Prefixo para chave comprimida
    return prefix + x.to_bytes(32, byteorder='big')

# Gerar chave pública comprimida
pubkey = private_to_compressed_pubkey(privkey_bytes)
pubkey_hex = pubkey.hex()

# Gerar endereço Bitcoin derivado da chave pública
btc_address = pubkey_to_address(pubkey)

# Chave pública alvo para comparação (exemplo)
target_pubkey = "03150992937967192EBCD2539E5A949689AC69E6458F9178E7251356FFE079B7F0".lower()

# Impressão dos resultados
print(f"🔐 Chave privada (hex): {privkey_bytes.hex()}")
print(f"🔑 Chave pública (hex): {pubkey_hex}")
print(f"🎯 Chave pública esperada: {target_pubkey}")
print(f"✅ Match? {pubkey_hex == target_pubkey}")
print(f"🏁 Endereço Bitcoin derivado: {btc_address}")

Detalhes Técnicos Importantes

  • Chave Privada: Um número secreto que deve ser mantido confidencial.
  • Chave Pública Comprimida: Representação compacta da chave pública, iniciada por 0x02 ou 0x03 conforme o paridade do valor y.
  • Base58Check: Sistema de codificação utilizado para tornar os endereços Bitcoin legíveis e evitar confusões com caracteres similares.
  • Hashes SHA256 e RIPEMD160: Funções criptográficas usadas para gerar um identificador seguro do endereço.

Conclusão e Responsabilidade

Este código demonstra a derivação básica de chaves e endereços Bitcoin, um componente essencial para quem deseja explorar programação e segurança em criptomoedas. Sempre avalie cuidadosamente os riscos ao trabalhar com chaves privadas reais e evite expor seus dados confidenciais.

Este conteúdo é para fins educacionais e não constitui aconselhamento financeiro. Faça sua própria análise antes de investir ou operar com criptomoedas.

Referências

Marcadores: Airdrop Blogger Cripto IA Jogos Python Script Sistemas Tutorial

© junho 30, 2025 CanalQb — Python, Scripts, Automação, Airdrops e Criptomoedas | Web3 e Tech na Prática

Comentários