Python - Incluindo banco de dados de WIF em uma wallet.dat - Bitcoin Core 0.21
Python - Incluindo banco de dados de WIF em uma wallet.dat
Sempre crie uma frase de segurança única para jogos, Airdrops e qualquer outra coisa de origem desconhecida, em vez de usar sua carteira principal.
Como Configurar e Usar Bitcoin Core no Windows
Este tutorial mostra o passo a passo para configurar e usar o Bitcoin Core 0.21.0 em uma máquina Windows. Ao final, você terá sua carteira configurada e pronta para interagir com a rede Bitcoin.
Passo 1: Instalação do Bitcoin Core
Baixe a versão bitcoin-0.21.0-win64-setup-unsigned.exe diretamente do site oficial:
Download Bitcoin Core 0.21.0 https://bitcoincore.org/bin/bitcoin-core-0.21.0/
Siga o assistente de instalação e instale o Bitcoin Core no seu computador. O caminho padrão de instalação será algo como:
D:\Program Files\Bitcoin
Insira no PATH exatamente o caminho de instalação do Bitcoin Care\daemon
Passo 2: Configuração do Arquivo bitcoin.conf
Após a instalação, você precisará criar o arquivo de configuração bitcoin.conf. Este arquivo define várias configurações da sua instância Bitcoin Core.
Crie o arquivo bitcoin.conf na pasta de dados, que pode ser em D:\Bitcoin ou em outro diretório de sua preferência. Lembre-se de ajustar o caminho para onde você deseja armazenar seus dados.
O conteúdo básico do arquivo bitcoin.conf deve ser o seguinte (lembre-se de substituir seuusuario e suasenha com credenciais de sua escolha):
server=1rpcuser=seuusuariorpcpassword=suasenharpcallowip=127.0.0.1rpcport=8332datadir=D:\Bitcoin
server=1: Habilita o servidor RPC.
rpcuser e rpcpassword: Credenciais para acesso RPC.
rpcallowip=127.0.0.1: Permite conexões apenas da máquina local.
rpcport=8332: Porta padrão para RPC.
datadir=D:\Bitcoin: Caminho para o diretório de dados (ajuste conforme necessário).
Passo 3: Sincronização da Blockchain
Abra o Prompt de Comando (CMD) no Windows e execute o seguinte comando para iniciar a sincronização da blockchain. Isso pode levar um tempo considerável dependendo da velocidade da sua conexão e do seu hardware:
bitcoind.exe -datadir="D:\Bitcoin" -rpcuser=seuusuario -rpcpassword=suasenha -reindex
O Bitcoin Core começará a reindexar a blockchain e você verá o progresso no CMD. Espere até que a sincronização atinja 100%.
Passo 4: Criação de Uma Nova Carteira
Abra um novo Prompt de Comando (CMD) para não interromper o processo de sincronização que está em execução no primeiro.
Para criar uma nova carteira no Bitcoin Core, execute o seguinte comando:
bitcoin-cli.exe -datadir="D:\Bitcoin" -rpcuser=seuusuario -rpcpassword=suasenha createwallet "Wallet"
O comando cria uma nova carteira chamada "Wallet". Você pode nomeá-la como quiser.
Passo 5: Iniciar o Daemon do Bitcoin Core
Em seguida, no CMD (pode ser o mesmo ou um novo), execute o daemon do Bitcoin Core para mantê-lo funcionando e permitindo interações RPC:
bitcoind.exe -datadir="D:\Bitcoin" -rpcuser=seuusuario -rpcpassword=suasenha
Agora o Bitcoin Core está rodando e você pode interagir com a rede.
Passo 6: Importando uma Chave Privada (WIF)
Para importar uma chave privada para a sua carteira, execute o comando a seguir em um novo Prompt de Comando (CMD):
bitcoin-cli.exe -datadir="D:\Bitcoin" -rpcuser=seuusuario -rpcpassword=suasenha -rpcwallet=wallet importprivkey "KxsYggu53EcEqrXqTb5AgJDv4Mne3jWN4SQEZs9DApeSrB7EkzaZ" "Wallet" false
importprivkey: Comando para importar a chave privada no formato WIF (Wallet Import Format).
"KxsYggu53EcEqrXqTb5AgJDv4Mne3jWN4SQEZs9DApeSrB7EkzaZ": Substitua pela sua chave privada.
"Wallet": Nome da carteira que você criou anteriormente.
import sqlite3import subprocessimport timeimport os# Caminho para o banco de dados SQLiteDB_PATH = "controle1.db"# Função para executar comandos no terminal (cmd) com subprocess.Popendef executar_comando_em_terminal(comando, manter_aberto=False):"""Executa o comando passado em um terminal CMD.Se manter_aberto for True, o terminal permanecerá aberto após a execução.Caso contrário, o terminal será fechado."""# Se manter_aberto for True, usa "cmd /k", caso contrário, "cmd /c"comando_terminal = 'cmd /k' if manter_aberto else 'cmd /c'# Criar o comando completo para executar no terminalcomando_completo = f'{comando_terminal} start "" {comando}' if manter_aberto else comando# Executar o comando em uma nova janela de terminal se for o casosubprocess.Popen(comando_completo, creationflags=subprocess.CREATE_NEW_CONSOLE, shell=True)print(f"Comando executado: {comando_completo}")# Função para executar o comando bitcoind.exe com reindexaçãodef iniciar_bitcoind():comando_bitcoind = ['bitcoind.exe','-datadir=D:\\Bitcoin','-rpcuser=seuusuario','-rpcpassword=suasenha','-reindex']print("Iniciando bitcoind com reindexação...")# Executa o comando e mantém o terminal abertoexecutar_comando_em_terminal(" ".join(comando_bitcoind), manter_aberto=True)# Função para importar as chaves privadas (WIFs) no walletdef importar_chaves_privadas():try:with sqlite3.connect(DB_PATH) as conn:cursor = conn.cursor()# Executar consulta SQL para recuperar todos os WIFscursor.execute("SELECT wif FROM mnemonics")# Recuperar todos os resultados da consultawifs = cursor.fetchall()# Verificar e processar WIFsif wifs:for wif in wifs:#time.sleep(1) # Atraso de 1 segundo entre as importações de chaveschave_privada = wif[0] # O WIF é o primeiro (e único) elemento da tuplacomando_bitcoin_cli = ['bitcoin-cli.exe','-datadir=D:\\Bitcoin','-rpcuser=seuusuario','-rpcpassword=suasenha','-rpcwallet=Wallet','importprivkey',chave_privada,'Wallet','false']# Executar o comando de importação da chave privada no mesmo terminalexecutar_comando_em_terminal(" ".join(comando_bitcoin_cli), manter_aberto=False)print(f"Chave privada importada com sucesso! WIF: {chave_privada}")else:print("Nenhum WIF encontrado.")except sqlite3.Error as e:print(f"Erro ao acessar o banco de dados: {e}")# Função principal que orquestra todo o processodef main():# Inicia o bitcoind.exe com a opção de reindexaçãoiniciar_bitcoind()# Aguardar 4 segundos antes de iniciar a importação das chavesprint("Aguardando 4 segundos antes de importar as chaves privadas...")time.sleep(4)# Importar as chaves privadasimportar_chaves_privadas()if __name__ == "__main__":main()
Nenhum comentário
Comente só assim vamos crescer juntos!
Observação: somente um membro deste blog pode postar um comentário.