Formulário de contato

Nome

E-mail *

Mensagem *

Este blog é um complemento do nosso canal no YouTube. Clique em @CanalQb para seguir e acompanhar nossos vídeos!
Imagem

Geração de Chaves Bitcoin com Entropia Binária e Armazenamento em SQLite


@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.



Geração de Chaves Bitcoin com Entropia Binária e Armazenamento em SQLite

Este conteúdo aborda a criação de chaves privadas Bitcoin com entropia baseada em sequências binárias geradas aleatoriamente. A implementação utiliza a biblioteca bit para gerar chaves e endereços, enquanto os resultados relevantes são armazenados em um banco de dados SQLite.

Objetivo do Script

O script visa encontrar endereços Bitcoin que comecem com "19" por meio de sequências binárias customizadas, convertidas para hexadecimal e processadas com a biblioteca bit. Além disso, é possível configurar um endereço desejado para busca específica.

Bibliotecas Utilizadas

  • bit: para manipulação de chaves privadas e endereços Bitcoin.
  • sqlite3: para armazenar os resultados em um banco de dados local.
  • random, time, gc e os: para suporte à geração, limpeza de memória e controle de sistema.

Funcionamento do Código

  1. Define uma estrutura de banco de dados para armazenar os dados gerados (binário, chave WIF e endereço Bitcoin).
  2. Gera sequências binárias únicas de 70 bits, contendo 34 bits iguais a '1', garantindo entropia e diversidade.
  3. As sequências válidas são convertidas para hexadecimal e utilizadas para criar uma chave Bitcoin (Key.from_hex()).
  4. Se o endereço gerado começa com "19", ele é armazenado no banco de dados.
  5. Caso o endereço gerado seja igual ao endereço desejado, os dados são salvos em um arquivo .txt e o loop é encerrado.

Critérios de Validação das Sequências

O script garante que as sequências binárias geradas:

  • Não contenham seis zeros ou uns consecutivos.
  • Contenham pelo menos um par de '00'.
  • Sejam únicas e não repetidas.

Exemplo de Uso Prático

Esse tipo de abordagem pode ser usada para estudar padrões de endereços Bitcoin, testar distribuições de entropia, ou simplesmente para aprender sobre a geração de chaves privadas de forma controlada.

from bit import PrivateKey
import os
import gc
import time
import random
import sqlite3
from bit import Key

random.seed(time.time_ns())

conn = sqlite3.connect('dados.db')
cursor = conn.cursor()

cursor.execute('''
CREATE TABLE IF NOT EXISTS dados (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    bin TEXT NOT NULL,
    wif TEXT NOT NULL,
    address TEXT NOT NULL
)
''')

os.system('cls' if os.name == 'nt' else 'clear')

loop = 100000000
salva = int(loop * 0.33)
limpa = int(loop * 0.50)

endereco_desejado = '19vkiEajfhuZ8bs8Zu2jgmC6oqZbWqhxhG'
salvos_19 = 0

sequencias_geradas = set()

def validar_sequencia(seq):
    return '000000' not in seq and '111111' not in seq and '00' in seq

for i in range(1, loop + 1):
    while True:
        seq = ['0'] * 70
        seq[0] = '1'
        indices = random.sample(range(1, 70), 33)
        for idx in indices:
            seq[idx] = '1'
        seq = ''.join(seq)

        if validar_sequencia(seq) and seq not in sequencias_geradas:
            sequencias_geradas.add(seq)
            break

    hex_key = hex(int(seq, 2))[2:].zfill(64)
    key = Key.from_hex(hex_key)
    wif = key.to_wif()
    address = key.address

    if address.startswith("19"):
        salvos_19 += 1
        cursor.execute('''
        INSERT INTO dados (bin, wif, address) VALUES (?, ?, ?)
        ''', (seq, wif, address))
        conn.commit()
        print(address, end='\r')

    if address == endereco_desejado:
        with open('chaves_wif_enderecos.txt', 'a') as f:
            f.write(f"Sequência {i}: {seq} - WIF: {wif} - Endereço: {address}\n")
        print(f"\nEncontrado! {i}: {seq} - {wif} - {address}")
        break

    if i % limpa == 0:
        print(f"{i}: {seq} - {address}", end='\r')
        gc.collect()

conn.close()

Sobre o Projeto

Esse código é útil para fins educacionais e experimentais. Caso deseje implementar esse modelo em produção ou lidar com criptomoedas reais, é essencial entender profundamente o funcionamento das bibliotecas utilizadas e os riscos de segurança envolvidos.

Importante: Não invista recursos financeiros em qualquer tipo de operação sem compreender os riscos. A geração de chaves aleatórias deve ser feita com cuidado, e as ferramentas utilizadas precisam ser auditadas e seguras.

Repositório Oficial da Biblioteca

Para mais detalhes sobre a biblioteca bit utilizada neste artigo, visite o repositório oficial em: https://github.com/ofek/bit

Comentários