Geração de Chaves Privadas e Endereços Ethereum com Python e BIP44
Sempre crie uma frase de segurança única para jogos, testnets ou airdrops e evite usar sua carteira principal.
Geração de Chaves Privadas e Endereços Ethereum com Python e BIP44
Este artigo apresenta um exemplo prático de como gerar chaves privadas e endereços Ethereum a partir de uma frase mnemônica (BIP39) utilizando Python. O processo segue o padrão BIP44 para derivação hierárquica determinística (HD wallets), garantindo compatibilidade e segurança no gerenciamento de carteiras criptográficas.
Bibliotecas utilizadas
O código faz uso de diversas bibliotecas importantes para manipulação criptográfica e interações com blockchain, entre elas:
- bip_utils: para gerar a seed a partir da frase mnemônica e derivar as chaves seguindo o padrão BIP44.
- ecdsa e sha3: para criar a chave pública e gerar o endereço Ethereum com hashing Keccak-256.
- coincurve e tronpy: pacotes opcionais para operações com outras blockchains, instalados automaticamente caso não estejam disponíveis.
Funcionamento do script
O processo pode ser descrito nas seguintes etapas:
- Definição da frase mnemônica (
frasecompleta), que deve ser válida segundo o padrão BIP39. - Geração da seed criptográfica a partir da frase com
Bip39SeedGenerator. - Inicialização do contexto BIP44 para Ethereum com
Bip44.FromSeed(seed_bytes, Bip44Coins.ETHEREUM). - Iteração para gerar as primeiras chaves privadas e endereços (controle por
ADDR_NUM). - Derivação da chave privada e conversão para formato hexadecimal.
- Geração da chave pública associada com
ecdsae criação do endereço Ethereum aplicando o hash Keccak-256. - Impressão das chaves privadas e dos endereços Ethereum resultantes.
Exemplo de saída
Para a frase mnemônica fornecida, o script gera a chave privada e o endereço Ethereum correspondente:
Chave Privada: 1a2b3c4d... (hexadecimal)
Endereço ETH: 0xabc1234def5678...
Importância e uso prático
Derivar chaves e endereços de forma programática facilita a criação e o gerenciamento de carteiras HD para projetos de blockchain, exchanges, dApps e outras soluções financeiras descentralizadas.
Ao trabalhar com chaves privadas, é imprescindível garantir segurança máxima e evitar exposição das mesmas, pois quem detém a chave privada tem controle total dos fundos associados.
Instalação das dependências
Para rodar o script, instale as bibliotecas necessárias com o seguinte comando:
pip install bip-utils ecdsa sha3 coincurve tronpy bit
Link para as bibliotecas oficiais
Consideração final sobre segurança
Este conteúdo é informativo e demonstra conceitos técnicos. Ao lidar com investimentos em criptomoedas, recomenda-se fazer uma autoanálise detalhada e evitar investir valores que não compreende completamente, para proteger seu patrimônio.
Código corrigido e formatado
import os
import sys
import binascii
import hashlib
from bip_utils import Bip39SeedGenerator, Bip44, Bip44Changes, Bip44Coins
from ecdsa import SigningKey, SECP256k1
from sha3 import keccak_256
ADDR_NUM = 1 # Número de chaves privadas a serem geradas (de 1 a 5 recomendado)
frasecompleta = 'repair either cricket vocal vast wink engage puzzle bike wall ...'
seed_bytes = Bip39SeedGenerator(frasecompleta).Generate()
bip44_mst_ctx = Bip44.FromSeed(seed_bytes, Bip44Coins.ETHEREUM)
bip44_coin_ctx = bip44_mst_ctx.Purpose().Coin()
for i in range(ADDR_NUM):
bip44_addr_ctx = bip44_coin_ctx.Account(i).Change(Bip44Changes.CHAIN_EXT).AddressIndex(0)
priv_key = bip44_addr_ctx.PrivateKey().Raw().ToHex()
print(f'Chave Privada: {priv_key}')
public_key = SigningKey.from_string(binascii.unhexlify(priv_key), curve=SECP256k1).verifying_key.to_string()
address_ETH = keccak_256(public_key).digest()[-20:]
ETH = "0x" + address_ETH.hex()
print(f'Endereço ETH: {ETH}')

Comentários
Comente só assim vamos crescer juntos!