Como Consultar Saldos Bitcoin e Gerar Endereços com Python
Sempre crie uma frase de segurança única para jogos, testnets ou airdrops e evite usar sua carteira principal.
Como Consultar Saldos Bitcoin e Gerar Endereços com Python
Se você está desenvolvendo aplicações em Python e deseja interagir com a blockchain do Bitcoin para consultar saldos ou gerar endereços, este tutorial apresenta um exemplo prático completo usando bibliotecas como bit, aiohttp e hashlib. O objetivo é gerar chaves privadas e converter para o formato WIF, além de consultar automaticamente o saldo de endereços.
📦 Requisitos e Instalação
Antes de começar, é necessário instalar os seguintes pacotes:
pip install aiohttp bit base58
🔐 Gerar Endereços a partir de Chaves Privadas
Existem dois métodos para gerar uma chave WIF (Wallet Import Format) válida:
- Usando prefixo 0x80 para redes Bitcoin mainnet;
- Calculando a soma de verificação dupla com SHA-256;
- Codificando com Base58 para compatibilidade com carteiras Bitcoin.
🧪 Exemplo de Conversão Hexadecimal para WIF
def hex_to_wif(hex_private_key):
prefix = b'\x80'
private_key_bytes = bytes.fromhex(hex_private_key)
extended_key = prefix + private_key_bytes
checksum = hashlib.sha256(hashlib.sha256(extended_key).digest()).digest()[:4]
extended_key_with_checksum = extended_key + checksum
wif = base58.b58encode(extended_key_with_checksum)
return wif.decode('utf-8')
🔄 Conversão Alternativa para WIF com Compressão
def private_key_to_wif(private_key_hex, compression='01'):
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
hash1 = hashlib.sha256(bytes.fromhex(data)).digest()
hash2 = hashlib.sha256(hash1).hexdigest()
checksum = hash2[0:8]
data = data + checksum
characters = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
i = int(data, 16)
base58 = ''
while i > 0:
i, remainder = divmod(i, 58)
base58 = characters[remainder] + base58
return base58
🔎 Consultando Saldo de Endereços BTC
A função consulta_btc_endereco permite consultar saldos em satoshis de endereços Bitcoin usando a API pública da Blockchain.info:
async def consulta_btc_endereco(session, endereco):
url = f'https://blockchain.info/q/addressbalance/{endereco}?confirmations=6'
try:
async with session.get(url) as response:
if response.status == 200:
saldo = await response.text()
return saldo
else:
return None
except Exception as e:
print(f"Erro de conexão com {endereco}: {e}")
return None
🚀 Consultas Assíncronas em Lote
Com a função consulta_multipla_btc, é possível realizar múltiplas verificações simultâneas de endereços:
async def consulta_multipla_btc(enderecos):
async with aiohttp.ClientSession() as session:
tarefas = [consulta_btc_endereco(session, e) for e in enderecos]
resultados = await asyncio.gather(*tarefas)
for i, saldo in enumerate(resultados):
if saldo is not None:
print(f"Endereço {enderecos[i]}: {saldo} satoshis")
🔁 Loop de Geração de Endereços com Mini Keys
Este trecho percorre uma faixa hexadecimal e tenta encontrar um endereço específico gerado a partir de uma mini chave privada:
for i in range(0x40000000000000000, 0x7ffffffffffffffff):
mini_private_key = f"S{'0' * (29 - len(hex(i)[2:]))}{hex(i)[2:]}"
sha256_hash = hashlib.sha256(mini_private_key.encode()).digest()
sha256_hash_hex = sha256_hash.hex()
wif = hex_to_wif(sha256_hash_hex)
generated_wif = private_key_to_wif(sha256_hash_hex)
endereco_gerado = Key(generated_wif).address
if endereco_gerado == '1BY8GQbnueYofwSuFAT3USAhGjPrkxDdW9':
print(f"Mini Private Key: {mini_private_key}")
print(f"Hash SHA-256 (hex): {sha256_hash_hex}")
print("Chave WIF:", wif)
print(generated_wif)
print(endereco_gerado)
loop = asyncio.get_event_loop()
loop.run_until_complete(consulta_multipla_btc([endereco_gerado]))
📌 Observações Finais
- O script demonstra conhecimento técnico avançado em geração de chaves e consumo de APIs blockchain.
- Certifique-se de não usar este tipo de abordagem em ambientes de produção sem considerar aspectos de segurança.
- Os endereços e chaves aqui apresentados são gerados para fins educacionais e não devem ser utilizados com valores reais.
🔗 Links Oficiais e Referências
⚠️ Aviso Importante
Este conteúdo é meramente educacional e não deve ser interpretado como recomendação de investimento ou tentativa de mineração de chaves privadas conhecidas. Reflita criticamente sobre os riscos associados ao uso inadequado de criptografia e nunca armazene valores reais em chaves que foram geradas ou testadas publicamente.

Comentários
Comente só assim vamos crescer juntos!