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.
Como Gerar Endereços Bitcoin com Frases Mnemônicas BIP39 em Python
Este guia apresenta um script em Python que demonstra como gerar endereços Bitcoin válidos a partir de frases mnemônicas no padrão BIP39. A ferramenta combina o uso da biblioteca mnemonic (do padrão BIP39) com a biblioteca bit para derivar chaves privadas e endereços. O conteúdo é técnico e voltado para desenvolvedores, pesquisadores de segurança e entusiastas de criptografia.
O que são Frases Mnemônicas e o Padrão BIP39?
O BIP39 é um padrão amplamente utilizado em carteiras de criptomoedas que converte frases simples (como “abandon abandon abandon...”) em chaves criptográficas. Essas frases, conhecidas como mnemonics, são compostas por 12, 18 ou 24 palavras selecionadas de uma lista de 2048 palavras definidas no protocolo.
Pré-requisitos
Para executar o código abaixo, você precisa instalar as seguintes bibliotecas em seu ambiente Python:
pip install mnemonic bit
Visão Geral do Script
O script apresentado executa as seguintes funções:
- Carrega a lista BIP39 de 2048 palavras;
- Gera combinações de 24 palavras a partir de um índice único;
- Valida a frase mnemônica gerada e converte para entropia em hexadecimal;
- Converte a entropia em chave privada WIF e endereço Bitcoin;
- Exibe os resultados no terminal e salva o progresso periodicamente.
Script Python Completo
import gc
import time
from mnemonic import Mnemonic
from itertools import product
from bit import Key
import sys
def gerar_entropia_hex(mnemonic_phrase):
mnemo = Mnemonic("english")
mnemonic_phrase = mnemonic_phrase.replace(';', '').strip()
if not mnemo.check(mnemonic_phrase):
return None
entropy = mnemo.to_entropy(mnemonic_phrase)
hex_entropy = entropy.hex()
return hex_entropy
mnemo = Mnemonic("english")
elementos = mnemo.wordlist
def salvar_estado(ultimo_item):
with open('estado_lista1.txt', 'w') as f:
f.write(str(ultimo_item) + '\n')
def carregar_estado():
try:
with open('estado_lista1.txt', 'r') as f:
return int(f.readline().strip())
except (FileNotFoundError, ValueError):
return 0
def processar_par(indices):
return " ".join([elementos[i] for i in indices])
def index_to_combination(index, num_words=24):
base = len(elementos)
indices = []
for _ in range(num_words):
indices.append(index % base)
index //= base
return indices[::-1]
def hex_to_wif(entropia_hex):
private_key = bytes.fromhex(entropia_hex)
return Key.from_bytes(private_key).to_wif()
ultimo_item = carregar_estado()
print("abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon length abandon abandon abandon abandon abandon bacon")
for index in range(ultimo_item, 2048 ** 24):
indices = index_to_combination(index)
par_atual = processar_par(indices)
try:
entropia_hex = gerar_entropia_hex(par_atual)
if entropia_hex is None:
continue
wif = hex_to_wif(entropia_hex)
key = Key(wif)
bitcoin_address = key.address
print(f'{par_atual[123:]} \t\t{entropia_hex}\t{bitcoin_address}')
if bitcoin_address == "19vkiEajfhuZ8bs8Zu2jgmC6oqZbWqhxhG ":
sys.exit(1)
except Exception as e:
print(f"Erro ao gerar entropia para o par {par_atual}: {e}")
continue
if index % 10000 == 0:
salvar_estado(index)
gc.collect()
print("Execução finalizada. O estado foi salvo.")
Responsabilidade no Uso
Aviso: Este conteúdo tem caráter educacional e técnico. Não utilize scripts como esse para gerar carteiras reais sem entendimento profundo do funcionamento de chaves privadas, BIP39 e segurança digital. Você é responsável por qualquer uso indevido. Nunca compartilhe sua chave privada com terceiros.
Referências e Recursos Oficiais
- Documentação oficial do BIP39: github.com/bitcoin/bips
- Biblioteca
mnemonic: pypi.org/project/mnemonic - Biblioteca
bit: ofek.dev/bit

Comentários
Comente só assim vamos crescer juntos!