Consulta de saldo Ethereum via BIP44 e JSON-RPC usando Python
Sempre crie uma frase de segurança única para jogos, testnets ou airdrops e evite usar sua carteira principal.
Consulta de saldo Ethereum via BIP44 e JSON-RPC usando Python
Este tutorial apresenta um exemplo completo de como gerar uma chave privada e um endereço Ethereum a partir de uma frase mnemônica utilizando o padrão BIP44. Também mostramos como consultar o saldo da conta resultante usando uma chamada JSON-RPC a um endpoint RPC compatível com Ethereum.
O que é BIP44 e por que é importante?
O BIP44 é um padrão que permite a criação de carteiras HD (Hierarchical Deterministic), ou seja, que derivam múltiplas chaves e endereços a partir de uma única seed (frase mnemônica). Esse padrão é amplamente utilizado em carteiras como Metamask, Trust Wallet e Ledger.
Pré-requisitos
Para executar o código, é necessário instalar as bibliotecas abaixo:
pip install bip-utils ecdsa sha3 requests bit
Funcionamento do script
- Uma frase mnemônica é utilizada para gerar a seed criptográfica.
- O contexto BIP44 para Ethereum é criado com
Bip44.FromSeed. - Gera-se a chave privada e o endereço Ethereum correspondente.
- O endereço é consultado em um nó remoto compatível com JSON-RPC usando o método
eth_getProof. - O saldo retornado é convertido de Wei para Ether e exibido no console.
Código de exemplo
from bip_utils import Bip39SeedGenerator, Bip44, Bip44Changes, Bip44Coins
from ecdsa import SigningKey, SECP256k1
from sha3 import keccak_256
import binascii
import requests
# Endpoint JSON-RPC para consulta
url = "https://nd-422-757-666.p2pify.com/0a9d79d93fb2f4a4b1e04695da2b77a7/"
# Frase mnemônica para derivação
frasecompleta = 'either cricket vocal vast wink engage puzzle bike wall joke august size improve note ...'
# Geração da seed e derivação da chave
seed_bytes = Bip39SeedGenerator(frasecompleta).Generate()
bip44_mst_ctx = Bip44.FromSeed(seed_bytes, Bip44Coins.ETHEREUM)
bip44_coin_ctx = bip44_mst_ctx.Purpose().Coin()
# Deriva a primeira chave privada e endereço
bip44_addr_ctx = bip44_coin_ctx.Account(1).Change(Bip44Changes.CHAIN_EXT).AddressIndex(0)
priv_key = bip44_addr_ctx.PrivateKey().Raw().ToHex()
# Geração do endereço Ethereum
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()
# Consulta JSON-RPC
payload = {
"method": "eth_getProof",
"params": [
"0x4e501d5b08bcfd1758d7a6db7c392c1a78930247",
["0xf6e506a9cbe7546a796b18c40609a170ea8073047129a3cae1c38e6d7559b7"],
"latest"
],
"id": 1,
"jsonrpc": "2.0"
}
headers = {
"accept": "application/json",
"content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
data = response.json()
# Conversão de saldo
balance = int(data['result']['balance'], 16)
balance_in_ether = balance / 10**18
# Exibição
print(f'Chave Privada: {priv_key}')
print(f'Endereço ETH: {ETH} - Saldo: {balance_in_ether} ETH')
Resultados esperados
Com base na frase mnemônica fornecida, o script imprimirá no console a chave privada, o endereço Ethereum e o saldo em Ether (ETH), extraído diretamente do nó JSON-RPC.
Considerações de segurança
Importante: Nunca reutilize frases mnemônicas conhecidas ou exibidas publicamente. Este tutorial tem fins educacionais apenas. Em ambientes de produção, use fontes seguras e nunca compartilhe sua chave privada com ninguém.
Links úteis e documentação
Aviso sobre investimentos
Este conteúdo não constitui recomendação financeira. Toda decisão de uso de ferramentas blockchain, investimentos ou carteiras deve ser baseada em análise pessoal e conhecimento técnico. Não invista recursos em tecnologias ou plataformas que você não compreende totalmente.

Comentários
Comente só assim vamos crescer juntos!