Python cripto
Agora vamos para o python. Instalar e, as bibliotecas.
Monica
Claro! Vamos falar sobre como instalar o Python e as bibliotecas necessárias para trabalhar com transações em criptomoedas.
1. Instalando o Python
Se você ainda não tem o Python instalado, siga estes passos:
Windows:
Baixe o instalador do Python em python.org.
Execute o instalador e certifique-se de marcar a opção "Add Python to PATH".
Complete a instalação.
macOS:
Você pode usar o Homebrew. Se não tiver o Homebrew, instale-o primeiro.
Abra o terminal e execute:
bash
Copiar
brew install python
Linux:
A maioria das distribuições já vem com o Python instalado. Você pode verificar com:
bash
Copiar
python3 --version
Se não estiver instalado, você pode usar o gerenciador de pacotes. Por exemplo, no Ubuntu:
bash
Copiar
sudo apt update
sudo apt install python3 python3-pip
2. Instalando Bibliotecas
Para trabalhar com criptomoedas em Python, algumas bibliotecas úteis incluem:
requests: Para fazer requisições HTTP.
web3.py: Para interagir com a blockchain Ethereum.
bitcoinlib: Para interagir com a blockchain Bitcoin.
Você pode instalar essas bibliotecas usando pip. Abra seu terminal ou prompt de comando e execute:
bash
Copiar
pip install requests
pip install web3
pip install bitcoinlib
3. Exemplo de Uso
Aqui está um exemplo básico de como usar web3.py para interagir com a blockchain Ethereum:
python
Copiar
from web3 import Web3
# Conectar ao nó Ethereum
w3 = Web3(Web3.HTTPProvider('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID'))
# Verificar a conexão
if w3.isConnected():
print("Conectado à rede Ethereum!")
else:
print("Falha na conexão.")
# Obter o saldo de uma carteira
address = '0xYourEthereumAddress'
balance = w3.eth.get_balance(address)
print(f'Saldo: {w3.fromWei(balance, "ether")} ETH')
4. Considerações Finais
Infura: Para interagir com a rede Ethereum, você pode usar serviços como Infura. Crie uma conta e obtenha um PROJECT_ID para usar no código acima.
Segurança: Sempre tenha cuidado ao lidar com chaves privadas e informações sensíveis.
Se precisar de mais ajuda ou de exemplos específicos, é só avisar!
seasai@raspberrypi:~ $ python3 --version
Python 3.11.2
seasai@raspberrypi:~ $
Monica
Ótimo! Você já tem o Python 3.11.2 instalado no seu Raspberry Pi. Agora, vamos prosseguir com a instalação das bibliotecas necessárias.
1. Atualizando o pip
Antes de instalar as bibliotecas, é uma boa prática garantir que o pip esteja atualizado. Execute o seguinte comando:
bash
Copiar
python3 -m pip install --upgrade pip
2. Instalando as Bibliotecas
Agora, você pode instalar as bibliotecas que mencionamos anteriormente. Execute os seguintes comandos:
bash
Copiar
pip install requests
pip install web3
pip install bitcoinlib
3. Verificando a Instalação
Após a instalação, você pode verificar se as bibliotecas foram instaladas corretamente. Abra um console Python interativo:
bash
Copiar
python3
E tente importar as bibliotecas:
python
Copiar
import requests
import web3
import bitcoinlib
print("Bibliotecas importadas com sucesso!")
Se não houver mensagens de erro, significa que as bibliotecas foram instaladas corretamente.
4. Próximos Passos
Agora que você tem o Python e as bibliotecas instaladas, você pode começar a desenvolver seu projeto de criptomoeda. Se precisar de exemplos específicos ou ajuda com alguma funcionalidade, fique à vontade para perguntar!
1º preciso saber em qual diretorio se enconta. Para nele colocar tudo; - na mesma pasta.
Monica
Para descobrir em qual diretório você está atualmente no seu Raspberry Pi e decidir onde colocar seus arquivos, você pode usar o seguinte comando no terminal:
bash
Copiar
pwd
Esse comando exibe o "path" do diretório atual.
Criando um Novo Diretório
Se você quiser criar um novo diretório para o seu projeto, você pode usar o comando mkdir. Por exemplo, para criar um diretório chamado meu_projeto:
bash
Copiar
mkdir meu_projeto
Depois, você pode navegar até esse diretório com:
bash
Copiar
cd meu_projeto
Verificando o Conteúdo do Diretório
Para ver quais arquivos e pastas estão presentes no diretório atual, use:
bash
Copiar
ls
Resumo
Use pwd para ver o diretório atual.
Use mkdir nome_do_diretorio para criar um novo diretório.
Use cd nome_do_diretorio para navegar até o novo diretório.
Use ls para listar os arquivos no diretório.
Se precisar de mais ajuda, é só avisar!
Quero as permissões do diretorio: escrita, leitura e execução.
Monica
Para verificar e modificar as permissões de um diretório no Linux (incluindo Raspberry Pi), você pode usar os comandos ls -l e chmod. Aqui está como fazer isso:
1. Verificando Permissões
Para ver as permissões do diretório atual, use:
bash
Copiar
ls -l
Isso mostrará uma lista de arquivos e diretórios com suas permissões. A primeira coluna indica as permissões:
r: leitura
w: escrita
x: execução
As permissões são mostradas em três grupos: proprietário, grupo e outros.
2. Modificando Permissões
Se você precisar alterar as permissões de um diretório, use o comando chmod. Aqui estão alguns exemplos:
Dar permissões de leitura, escrita e execução para o proprietário, e leitura e execução para o grupo e outros:
bash
Copiar
chmod 755 nome_do_diretorio
Dar permissões de leitura e escrita para todos:
bash
Copiar
chmod 666 nome_do_diretorio
Dar todas as permissões (leitura, escrita e execução) para todos:
bash
Copiar
chmod 777 nome_do_diretorio
3. Exemplo Prático
Se você criou um diretório chamado meu_projeto e deseja dar permissões de leitura, escrita e execução para todos, execute:
bash
Copiar
chmod 777 meu_projeto
4. Confirmando as Mudanças
Após alterar as permissões, você pode usar novamente o comando ls -l para confirmar que as permissões foram aplicadas corretamente.
Se precisar de mais ajuda ou tiver outras perguntas, é só avisar!
drwxrwxrwx 2 seasai seasai 4096 out 6 18:56 cripto
Monica
As permissões do diretório cripto estão definidas como drwxrwxrwx, o que significa:
d: É um diretório.
rwx: O proprietário (seasai) tem permissões de leitura (r), escrita (w) e execução (x).
rwx: O grupo (seasai) também tem permissões de leitura, escrita e execução.
rwx: Outros usuários têm permissões de leitura, escrita e execução.
Resumo das Permissões
Leitura (r): Permite visualizar o conteúdo do diretório.
Escrita (w): Permite adicionar, remover ou renomear arquivos dentro do diretório.
Execução (x): Permite acessar o diretório e entrar nele.
O que Fazer Agora
Com essas permissões, você pode:
Criar, editar e excluir arquivos dentro do diretório cripto.
Acessar o diretório sem restrições.
Se você precisar de mais alguma coisa, como criar arquivos ou executar scripts dentro desse diretório, é só avisar!
seasai@raspberrypi:~/cripto $ python3
Python 3.11.2 (main, Aug 26 2024, 07:20:54) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>>
Monica
Você está dentro do interpretador Python, pronto para executar comandos e scripts. Aqui estão algumas coisas que você pode fazer:
1. Testar Importações
Você pode testar se as bibliotecas que instalou estão funcionando corretamente. Tente importar as bibliotecas:
python
Copiar
import requests
import web3
import bitcoinlib
print("Bibliotecas importadas com sucesso!")
2. Criar um Script
Se você quiser criar um script Python para seu projeto, siga estes passos:
Sair do Interpretador Python: Pressione Ctrl + D ou digite exit() para sair do interpretador.
Criar um Arquivo Python: Use um editor de texto como nano para criar um arquivo. Por exemplo:
bash
Copiar
nano meu_script.py
Escrever Código: No editor, você pode escrever seu código Python. Por exemplo:
python
Copiar
# meu_script.py
from web3 import Web3
# Conectar ao nó Ethereum
w3 = Web3(Web3.HTTPProvider('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID'))
if w3.isConnected():
print("Conectado à rede Ethereum!")
else:
print("Falha na conexão.")
Salvar e Sair: Para salvar o arquivo no nano, pressione Ctrl + O, depois Enter. Para sair, pressione Ctrl + X.
3. Executar o Script
Depois de criar o arquivo, você pode executá-lo com o seguinte comando:
bash
Copiar
python3 meu_script.py
Dicas Finais
Substitua YOUR_INFURA_PROJECT_ID pelo seu ID de projeto do Infura, se estiver usando a biblioteca web3.
Se precisar de mais ajuda com o código ou qualquer outra coisa, é só avisar!
seasai@raspberrypi:~/cripto $ python script.py
Traceback (most recent call last):
File "/home/seasai/cripto/script.py", line 2, in <module>
from web3 import Web3
ModuleNotFoundError: No module named 'web3'
seasai@raspberrypi:~/cripto $
Monica
O erro ModuleNotFoundError: No module named 'web3' indica que a biblioteca web3 não está instalada ou não está acessível no ambiente em que você está executando o script.
Soluções Possíveis
Verifique a Instalação do web3:
Execute o seguinte comando para ver se o web3 está instalado:bash
Copiar
pip list
Se web3 não aparecer na lista, você precisará instalá-lo.
Instale a Biblioteca:
Se o web3 não estiver instalado, você pode instalá-lo com o seguinte comando:bash
Copiar
pip install web3
Verifique o Ambiente Python:
Certifique-se de que você está usando o mesmo ambiente Python em que a biblioteca foi instalada. Às vezes, pode haver múltiplas versões do Python ou ambientes virtuais.
Para garantir que você está usando o pip correto, execute:bash
Copiar
python3 -m pip install web3
Reexecute o Script:
Após a instalação, tente executar o seu script novamente:bash
Copiar
python3 script.py
Dicas Finais
Se você estiver usando um ambiente virtual (virtualenv ou venv), certifique-se de ativá-lo antes de instalar bibliotecas ou executar scripts.
Se precisar de mais ajuda, é só avisar!
easai@raspberrypi:~/cripto $ pip install web3
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
For more information visit http://rptl.io/venv
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
Monica
O erro que você está enfrentando indica que o ambiente Python no seu Raspberry Pi é gerenciado externamente, o que significa que não é recomendado instalar pacotes diretamente usando pip no sistema global.
Solução: Criar um Ambiente Virtual
A melhor prática é criar um ambiente virtual para instalar pacotes Python. Aqui estão os passos para fazer isso:
Instale o python3-venv (se ainda não estiver instalado):
bash
Copiar
sudo apt update
sudo apt install python3-venv
Crie um Ambiente Virtual:
Navegue até o diretório cripto e crie um ambiente virtual:bash
Copiar
cd ~/cripto
python3 -m venv venv
Ative o Ambiente Virtual:
Ative o ambiente virtual com o seguinte comando:bash
Copiar
source venv/bin/activate
Após a ativação, você verá o nome do ambiente virtual (geralmente venv) no início da linha de comando.
Instale o web3 no Ambiente Virtual:
Agora, você pode instalar o web3 sem problemas:bash
Copiar
pip install web3
Execute seu Script:
Depois de instalar a biblioteca, você pode executar seu script normalmente:bash
Copiar
python script.py
Desativando o Ambiente Virtual
Quando terminar de trabalhar no ambiente virtual, você pode desativá-lo com o comando:
bash
Copiar
deactivate
Dicas Finais
Sempre que você quiser usar o web3 ou qualquer outra biblioteca instalada no ambiente virtual, lembre-se de ativá-lo primeiro.
Se precisar de mais ajuda, é só avisar!
(venv) seasai@raspberrypi:~/cripto $ python3 script.py
Traceback (most recent call last):
File "/home/seasai/cripto/script.py", line 7, in <module>
if w3.isConnected():
^^^^^^^^^^^^^^
AttributeError: 'Web3' object has no attribute 'isConnected'. Did you mean: 'is_connected'?
(venv) seasai@raspberrypi:~/cripto $
Monica
O erro AttributeError: 'Web3' object has no attribute 'isConnected' indica que a função correta para verificar a conexão com a rede Ethereum é is_connected() (com um underscore) e não isConnected().
Correção do Código
Altere a linha no seu script de:
python
Copiar
if w3.isConnected():
para:
python
Copiar
if w3.is_connected():
Código Corrigido
Aqui está como seu script deve ficar:
python
Copiar
# meu_script.py
from web3 import Web3
# Conectar ao nó Ethereum
w3 = Web3(Web3.HTTPProvider('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID'))
if w3.is_connected():
print("Conectado à rede Ethereum!")
else:
print("Falha na conexão.")
Executar o Script
Após fazer essa alteração, salve o arquivo e execute novamente:
bash
Copiar
python3 script.py
Dicas Finais
Não se esqueça de substituir YOUR_INFURA_PROJECT_ID pelo seu ID de projeto do Infura.
Se você encontrar mais erros ou tiver outras perguntas, é só avisar!
(venv) seasai@raspberrypi:~/cripto $ python3 script.py
Falha na conexão.
Monica
Se você está recebendo a mensagem "Falha na conexão", isso pode indicar que a conexão com o nó Ethereum não foi estabelecida. Aqui estão algumas etapas para solucionar o problema:
1. Verifique o URL do Provedor
Certifique-se de que o URL do provedor está correto. O formato deve ser:
arduino
Copiar
https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID
Substitua YOUR_INFURA_PROJECT_ID pelo seu ID de projeto do Infura. Caso não tenha um, você precisará criar uma conta no Infura e gerar um projeto.
2. Teste a Conexão com o Provedor
Você pode testar se o endpoint está acessível usando curl ou wget. Execute o seguinte comando no terminal:
bash
Copiar
curl https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID
Se você receber uma resposta de erro ou não conseguir se conectar, pode ser um problema com o endpoint.
3. Verifique a Conexão à Internet
Certifique-se de que seu Raspberry Pi está conectado à internet. Você pode testar isso tentando acessar um site:
bash
Copiar
ping google.com
4. Verifique as Configurações de Firewall
Se você estiver em uma rede que possui restrições de firewall, verifique se as portas necessárias estão abertas (geralmente, a porta 443 para HTTPS).
5. Teste com um Provedor Diferente
Se você ainda estiver tendo problemas, tente usar outro provedor de nós Ethereum, como Alchemy ou QuickNode, e veja se a conexão é bem-sucedida.
Exemplo de Código
Aqui está um exemplo atualizado do seu script, caso você precise:
python
Copiar
from web3 import Web3
# Substitua pelo seu ID de projeto do Infura
w3 = Web3(Web3.HTTPProvider('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID'))
if w3.is_connected():
print("Conectado à rede Ethereum!")
else:
print("Falha na conexão.")
Se Persistir o Problema
Se mesmo após essas verificações o problema persistir, forneça mais detalhes sobre o que você está vendo ou qualquer mensagem de erro adicional. Isso pode ajudar a diagnosticar melhor a situação.
Como criar uma conta no Infura e gerar um projeto
Monica
Para criar uma conta no Infura e gerar um projeto, siga estes passos:
1. Acesse o Site do Infura
Visite o site do Infura: Infura.io.
2. Crie uma Conta
Clique em "Sign Up": No canto superior direito, clique em "Sign Up".
Preencha o Formulário: Insira seu endereço de e-mail, crie uma senha e forneça um nome de usuário.
Concorde com os Termos: Aceite os termos de serviço e clique em "Sign Up".
Verifique seu E-mail: Você receberá um e-mail de verificação. Clique no link enviado para ativar sua conta.
3. Faça Login
Após verificar seu e-mail, faça login na sua conta Infura.
4. Crie um Novo Projeto
Acesse o Painel: Após o login, você será direcionado ao painel do Infura.
Clique em "Create New Project": No painel, clique no botão “Create New Project”.
Preencha os Detalhes do Projeto:
Nome do Projeto: Dê um nome ao seu projeto.
Descrição (opcional): Adicione uma descrição, se desejar.
Clique em "Create": Após preencher as informações, clique em "Create".
5. Obtenha seu ID de Projeto
Após criar o projeto, você será direcionado à página de detalhes do projeto.
Copie o ID do Projeto: Na seção "Keys", você verá o seu ID do projeto (uma sequência de caracteres). Este é o que você usará no seu script.
6. Configure o Endpoint
Na mesma página, você verá os endpoints disponíveis (como Ethereum Mainnet, Ropsten, etc.). Copie o URL do endpoint que você deseja usar.
7. Use seu ID de Projeto no Código
Agora você pode usar o ID do projeto e o endpoint no seu código Python:
python
Copiar
from web3 import Web3
# Substitua pelo seu ID de projeto do Infura
w3 = Web3(Web3.HTTPProvider('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID'))
if w3.is_connected():
print("Conectado à rede Ethereum!")
else:
print("Falha na conexão.")
Dicas Finais
Limites de Uso: Fique atento aos limites de uso do Infura, especialmente se você estiver utilizando a versão gratuita.
Documentação: Consulte a documentação do Infura para mais detalhes sobre como usar a API e as funcionalidades disponíveis.
Se você tiver mais dúvidas ou precisar de ajuda, é só avisar!
Infura criou a chave
Monica
Ótimo! Agora que você tem sua chave de projeto do Infura, siga estas etapas para integrá-la ao seu código e testar a conexão com a rede Ethereum.
1. Atualize seu Código
Substitua YOUR_INFURA_PROJECT_ID pelo seu ID de projeto do Infura no seu script Python. O código deve ficar assim:
python
Copiar
from web3 import Web3
# Substitua pelo seu ID de projeto do Infura
w3 = Web3(Web3.HTTPProvider('https://mainnet.infura.io/v3/SUA_CHAVE_AQUI'))
if w3.is_connected():
print("Conectado à rede Ethereum!")
else:
print("Falha na conexão.")
2. Execute o Script
Salve as alterações no seu arquivo script.py e execute-o novamente:
bash
Copiar
python3 script.py
3. Verifique a Conexão
Se tudo estiver configurado corretamente, você deve ver a mensagem "Conectado à rede Ethereum!" no terminal. Caso contrário, verifique os seguintes pontos:
Chave do Projeto: Certifique-se de que a chave do projeto está correta e não contém espaços ou caracteres extras.
Conexão à Internet: Verifique se seu Raspberry Pi está conectado à internet.
Firewall: Confirme se não há restrições de firewall que possam impedir a conexão.
4. Próximos Passos
Após conseguir se conectar, você pode começar a interagir com a rede Ethereum, como consultar saldos, enviar transações, etc. Consulte a documentação do Web3.py para mais informações sobre as funcionalidades disponíveis.
Se você encontrar mais problemas ou tiver perguntas, é só avisar!
O que você achou da resposta?
Conectado à rede Ethereum!
(venv) seasai@raspberrypi:~/cripto $
Monica
Excelente! Fico feliz em saber que você conseguiu se conectar à rede Ethereum com sucesso. Agora você pode começar a explorar e interagir com a blockchain.
Próximos Passos
Aqui estão algumas sugestões sobre o que você pode fazer a seguir:
Consultar o Saldo de uma Conta:
python
Copiar
address = 'ENDEREÇO_DA_CONTA_AQUI'
balance = w3.eth.get_balance(address)
print(f'Saldo: {w3.fromWei(balance, "ether")} ETH')
Enviar uma Transação:
Para enviar uma transação, você precisará da chave privada da conta que está enviando ETH. Cuidado com a segurança ao lidar com chaves privadas!
Interagir com Contratos Inteligentes:
Você pode usar o Web3.py para interagir com contratos inteligentes. Para isso, você precisará do endereço do contrato e da ABI (Application Binary Interface).
Monitorar Eventos:
Você pode configurar listeners para monitorar eventos em contratos inteligentes.
Recursos Adicionais
Documentação do Web3.py: Web3.py Documentation
Tutoriais e Exemplos: Explore tutoriais online para aprender mais sobre como usar a biblioteca.
Se você tiver mais perguntas ou precisar de ajuda com algo específico, é só avisar!
O que você achou da resposta?
Consultar o Saldo de uma Conta. No caso 'crio' - edito uma conta.py e rodo no venv
Monica
Para consultar o saldo de uma conta Ethereum usando o Web3.py, você pode criar um arquivo Python, como consulta_saldo.py, e executar no seu ambiente virtual (venv). Aqui está um passo a passo:
1. Crie o Arquivo consulta_saldo.py
Abra seu editor de texto ou IDE e crie um novo arquivo chamado consulta_saldo.py. Insira o seguinte código:
python
Copiar
from web3 import Web3
# Substitua pela sua chave de projeto do Infura
w3 = Web3(Web3.HTTPProvider('https://mainnet.infura.io/v3/SUA_CHAVE_AQUI'))
# Endereço da conta que você deseja consultar
endereco_conta = 'ENDEREÇO_DA_CONTA_AQUI'
# Verifica se a conexão foi bem-sucedida
if w3.is_connected():
print("Conectado à rede Ethereum!")
# Obtém o saldo da conta
saldo = w3.eth.get_balance(endereco_conta)
saldo_ether = w3.fromWei(saldo, 'ether')
print(f'Saldo de {endereco_conta}: {saldo_ether} ETH')
else:
print("Falha na conexão.")
2. Substitua os Valores
Chave do Projeto: Substitua SUA_CHAVE_AQUI pela sua chave de projeto do Infura.
Endereço da Conta: Substitua ENDEREÇO_DA_CONTA_AQUI pelo endereço da conta Ethereum que você deseja consultar.
3. Salve o Arquivo
Salve as alterações feitas no arquivo consulta_saldo.py.
4. Execute o Script no Ambiente Virtual
Certifique-se de que você está no diretório correto no terminal e que o ambiente virtual (venv) está ativado. Em seguida, execute o script:
bash
Copiar
python3 consulta_saldo.py
5. Verifique o Resultado
Se tudo estiver configurado corretamente, você verá a mensagem informando o saldo da conta especificada. Se houver algum erro, verifique as mensagens de erro no terminal e certifique-se de que todos os valores estão corretos.
Se precisar de mais ajuda ou tiver dúvidas, é só avisar!
Tem algum simulador de conta? # Endereço da conta que você deseja consultar endereco_conta = 'ENDEREÇO_DA_CONTA_AQUI'
Monica
Sim, você pode usar endereços de contas de teste (simuladores) para praticar sem usar ETH real. Aqui estão algumas opções:
1. Endereços de Teste no Ropsten ou Rinkeby
Você pode usar redes de teste como Ropsten ou Rinkeby, que são redes Ethereum onde você pode obter ETH de teste gratuitamente. Aqui estão alguns endereços de contas de teste que você pode usar:
Ropsten:
conta 1
conta 2
Rinkeby:
conta 1
conta 2
2. Criar uma Conta de Teste
Se você quiser criar sua própria conta de teste, você pode usar uma carteira como MetaMask e criar uma conta na rede de teste. Depois, você pode obter ETH de teste através de um faucet (distribuidor de ETH de teste).
3. Usando o Código
Substitua o endereco_conta no seu código pelo endereço de teste que você escolher. Por exemplo:
python
Copiar
endereco_conta = 'conta 1'
4. Executar o Script
Depois de fazer essa alteração, execute o script novamente para consultar o saldo da conta de teste.
Se você precisar de mais informações sobre como configurar uma conta de teste ou usar faucets, é só avisar!
No caso é chave e conta da Ropsten:
conta 1
conta 2
Monica
Ótimo! Você pode usar os endereços de conta da Ropsten que você forneceu para consultar os saldos. Aqui está como você pode configurar seu script para consultar o saldo de ambas as contas.
1. Atualize o Código
Abra seu arquivo consulta_saldo.py e substitua o código pelo seguinte:
python
Copiar
from web3 import Web3
# Substitua pela sua chave de projeto do Infura
w3 = Web3(Web3.HTTPProvider('https://ropsten.infura.io/v3/SUA_CHAVE_AQUI'))
# Endereços das contas que você deseja consultar
enderecos_contas = [
'conta 1',
'conta 2'
]
# Verifica se a conexão foi bem-sucedida
if w3.is_connected():
print("Conectado à rede Ropsten!")
for endereco in enderecos_contas:
# Obtém o saldo da conta
saldo = w3.eth.get_balance(endereco)
saldo_ether = w3.fromWei(saldo, 'ether')
print(f'Saldo de {endereco}: {saldo_ether} ETH')
else:
print("Falha na conexão.")
2. Substitua a Chave do Projeto
Não se esqueça de substituir SUA_CHAVE_AQUI pela sua chave de projeto do Infura.
3. Execute o Script
Salve as alterações e execute o script novamente:
bash
Copiar
python3 consulta_saldo.py
4. Verifique os Resultados
O script deve retornar os saldos das duas contas na rede Ropsten. Se você tiver alguma dúvida ou encontrar algum erro, é só avisar!
w3 = Web3(Web3.HTTPProvider('https://ropsten.infura.io/v3/SUA_CHAVE_AQUI')) A chave continua a mesma que peguei no Infura.
Monica
Perfeito! Se você já tem a chave do Infura, basta substituí-la na linha do código. Aqui está o que você precisa fazer:
1. Substitua a Chave do Infura
No seu código, substitua SUA_CHAVE_AQUI pela sua chave real do Infura. O código ficará assim:
python
Copiar
w3 = Web3(Web3.HTTPProvider('https://ropsten.infura.io/v3/SUA_CHAVE_REAL'))
2. Código Completo Atualizado
Aqui está o código completo com a chave do Infura:
python
Copiar
from web3 import Web3
# Substitua pela sua chave de projeto do Infura
w3 = Web3(Web3.HTTPProvider('https://ropsten.infura.io/v3/SUA_CHAVE_REAL'))
# Endereços das contas que você deseja consultar
enderecos_contas = [
'conta 1',
'conta 2'
]
# Verifica se a conexão foi bem-sucedida
if w3.is_connected():
print("Conectado à rede Ropsten!")
for endereco in enderecos_contas:
# Obtém o saldo da conta
saldo = w3.eth.get_balance(endereco)
saldo_ether = w3.fromWei(saldo, 'ether')
print(f'Saldo de {endereco}: {saldo_ether} ETH')
else:
print("Falha na conexão.")
3. Execute o Script
Após fazer essa substituição, salve o arquivo e execute-o novamente:
bash
Copiar
python3 consulta_saldo.py
4. Resultados
O script deve retornar os saldos das duas contas especificadas na rede Ropsten. Se tudo estiver correto, você verá o saldo em ETH. Se você enfrentar algum problema, sinta-se à vontade para perguntar!
(venv) seasai@raspberrypi:~/cripto $ python consulta_saldo.py
Conectado à rede Ropsten!
Traceback (most recent call last):
File "/home/seasai/cripto/consulta_saldo.py", line 19, in <module>
saldo = w3.eth.get_balance(endereco)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/seasai/cripto/venv/lib/python3.11/site-packages/web3/eth/eth.py", line 413, in get_balance
return self._get_balance(account, block_identifier)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/seasai/cripto/venv/lib/python3.11/site-packages/web3/module.py", line 100, in caller
(method_str, params), response_formatters = method.process_params(
^^^^^^^^^^^^^^^^^^^^^^
File "/home/seasai/cripto/venv/lib/python3.11/site-packages/web3/method.py", line 237, in process_params
_apply_request_formatters(params, self.request_formatters(method)),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/seasai/cripto/venv/lib/python3.11/site-packages/eth_utils/functional.py", line 47, in inner
return callback(fn(*args, **kwargs))
^^^^^^^^^^^^^^^^^^^
File "/home/seasai/cripto/venv/lib/python3.11/site-packages/web3/method.py", line 64, in _apply_request_formatters
formatted_params = pipe(params, request_formatters)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "cytoolz/functoolz.pyx", line 685, in cytoolz.functoolz.pipe
File "cytoolz/functoolz.pyx", line 660, in cytoolz.functoolz.c_pipe
File "cytoolz/functoolz.pyx", line 523, in cytoolz.functoolz.Compose.__call__
File "cytoolz/functoolz.pyx", line 268, in cytoolz.functoolz.curry.__call__
File "/home/seasai/cripto/venv/lib/python3.11/site-packages/web3/_utils/abi.py", line 570, in map_abi_data
return pipe(data, *pipeline)
^^^^^^^^^^^^^^^^^^^^^
File "cytoolz/functoolz.pyx", line 685, in cytoolz.functoolz.pipe
File "cytoolz/functoolz.pyx", line 660, in cytoolz.functoolz.c_pipe
File "cytoolz/functoolz.pyx", line 268, in cytoolz.functoolz.curry.__call__
File "/home/seasai/cripto/venv/lib/python3.11/site-packages/web3/_utils/abi.py", line 605, in data_tree_map
return recursive_map(map_to_typed_data, data_tree)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/seasai/cripto/venv/lib/python3.11/site-packages/web3/_utils/decorators.py", line 34, in wrapped
wrapped_val = to_wrap(*args)
^^^^^^^^^^^^^^
File "/home/seasai/cripto/venv/lib/python3.11/site-packages/web3/_utils/formatters.py", line 84, in recursive_map
items_mapped = map_collection(recurse, data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/seasai/cripto/venv/lib/python3.11/site-packages/web3/_utils/formatters.py", line 68, in map_collection
return datatype(map(func, collection))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/seasai/cripto/venv/lib/python3.11/site-packages/web3/_utils/formatters.py", line 82, in recurse
return recursive_map(func, item)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/seasai/cripto/venv/lib/python3.11/site-packages/web3/_utils/decorators.py", line 34, in wrapped
wrapped_val = to_wrap(*args)
^^^^^^^^^^^^^^
File "/home/seasai/cripto/venv/lib/python3.11/site-packages/web3/_utils/formatters.py", line 85, in recursive_map
return func(items_mapped)
^^^^^^^^^^^^^^^^^^
File "/home/seasai/cripto/venv/lib/python3.11/site-packages/web3/_utils/abi.py", line 601, in map_to_typed_data
return ABITypedData(func(*elements))
^^^^^^^^^^^^^^^
File "/home/seasai/cripto/venv/lib/python3.11/site-packages/web3/_utils/normalizers.py", line 79, in wrapper
modified = to_wrap(type_str, data)
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/seasai/cripto/venv/lib/python3.11/site-packages/web3/_utils/normalizers.py", line 202, in abi_address_to_hex
validate_address(data)
File "/home/seasai/cripto/venv/lib/python3.11/site-packages/web3/_utils/validation.py", line 183, in validate_address
raise InvalidAddress(
web3.exceptions.InvalidAddress: ('web3.py only accepts checksum addresses. The software that gave you this non-checksum address should be considered unsafe, please file it as a bug on their platform. Try using an ENS name instead. Or, if you must accept lower safety, use Web3.to_checksum_address(lower_case_address).', 'conta 1')
(venv) seasai@raspberrypi:~/cripto $
Monica
O erro que você está enfrentando indica que os endereços fornecidos não estão no formato de checksum. O web3.py exige que os endereços Ethereum estejam em formato de checksum para garantir que eles sejam válidos.
Como Corrigir
Você pode usar a função Web3.toChecksumAddress() para converter os endereços para o formato de checksum. Aqui está como você pode atualizar seu código:
Código Atualizado
python
Copiar
from web3 import Web3
# Substitua pela sua chave de projeto do Infura
w3 = Web3(Web3.HTTPProvider('https://ropsten.infura.io/v3/SUA_CHAVE_REAL'))
# Endereços das contas que você deseja consultar (convertidos para checksum)
enderecos_contas = [
w3.toChecksumAddress('conta 1'),
w3.toChecksumAddress('conta 2')
]
# Verifica se a conexão foi bem-sucedida
if w3.is_connected():
print("Conectado à rede Ropsten!")
for endereco in enderecos_contas:
# Obtém o saldo da conta
saldo = w3.eth.get_balance(endereco)
saldo_ether = w3.fromWei(saldo, 'ether')
print(f'Saldo de {endereco}: {saldo_ether} ETH')
else:
print("Falha na conexão.")
O que Mudou
Conversão para Checksum: Adicionei w3.toChecksumAddress() ao redor dos endereços para garantir que eles estejam no formato correto.
Execute o Script Novamente
Salve as alterações e execute o script novamente:
bash
Copiar
python3 consulta_saldo.py
Resultado
Agora, o script deve funcionar corretamente e retornar os saldos das contas. Se você continuar tendo problemas, não hesite em perguntar!
(venv) seasai@raspberrypi:~/cripto $ python consulta_saldo.py
Traceback (most recent call last):
File "/home/seasai/cripto/consulta_saldo.py", line 9, in <module>
w3.toChecksumAddress('conta 1'),
^^^^^^^^^^^^^^^^^^^^
AttributeError: 'Web3' object has no attribute 'toChecksumAddress'. Did you mean: 'to_checksum_address'?
(venv) seasai@raspberrypi:~/cripto $
Monica
O erro que você está enfrentando é devido à mudança na nomenclatura da função em versões mais recentes da biblioteca web3.py. A função correta agora é to_checksum_address() (tudo em minúsculas e com um sublinhado).
Código Corrigido
Aqui está o código atualizado com a função correta:
python
Copiar
from web3 import Web3
# Substitua pela sua chave de projeto do Infura
w3 = Web3(Web3.HTTPProvider('https://ropsten.infura.io/v3/SUA_CHAVE_REAL'))
# Endereços das contas que você deseja consultar (convertidos para checksum)
enderecos_contas = [
w3.to_checksum_address('conta 1'),
w3.to_checksum_address('conta 2')
]
# Verifica se a conexão foi bem-sucedida
if w3.is_connected():
print("Conectado à rede Ropsten!")
for endereco in enderecos_contas:
# Obtém o saldo da conta
saldo = w3.eth.get_balance(endereco)
saldo_ether = w3.fromWei(saldo, 'ether')
print(f'Saldo de {endereco}: {saldo_ether} ETH')
else:
print("Falha na conexão.")
Execute o Script Novamente
Salve as alterações e execute o script novamente:
bash
Copiar
python3 consulta_saldo.py
Resultado
Agora, o script deve funcionar corretamente e retornar os saldos das contas. Se você encontrar mais problemas ou tiver outras dúvidas, estou aqui para ajudar!
(venv) seasai@raspberrypi:~/cripto $ python consulta_saldo.py
Conectado à rede Ropsten!
Traceback (most recent call last):
File "/home/seasai/cripto/consulta_saldo.py", line 20, in <module>
saldo_ether = w3.fromWei(saldo, 'ether')
^^^^^^^^^^
AttributeError: 'Web3' object has no attribute 'fromWei'. Did you mean: 'from_wei'?
(venv) seasai@raspberrypi:~/cripto $
Monica
O erro que você está enfrentando é novamente devido à mudança na nomenclatura da função. A função correta para converter Wei para Ether é from_wei() (tudo em minúsculas e com um sublinhado).
Código Atualizado
Aqui está o código corrigido com a função correta:
python
Copiar
from web3 import Web3
# Substitua pela sua chave de projeto do Infura
w3 = Web3(Web3.HTTPProvider('https://ropsten.infura.io/v3/SUA_CHAVE_REAL'))
# Endereços das contas que você deseja consultar (convertidos para checksum)
enderecos_contas = [
w3.to_checksum_address('conta 1'),
w3.to_checksum_address('conta 2')
]
# Verifica se a conexão foi bem-sucedida
if w3.is_connected():
print("Conectado à rede Ropsten!")
for endereco in enderecos_contas:
# Obtém o saldo da conta
saldo = w3.eth.get_balance(endereco)
saldo_ether = w3.from_wei(saldo, 'ether') # Corrigido aqui
print(f'Saldo de {endereco}: {saldo_ether} ETH')
else:
print("Falha na conexão.")
Execute o Script Novamente
Salve as alterações e execute o script novamente:
bash
Copiar
python3 consulta_saldo.py
Resultado
Agora, o script deve funcionar corretamente e retornar os saldos das contas. Se você tiver mais dúvidas ou encontrar outros problemas, estou aqui para ajudar!
(venv) seasai@raspberrypi:~/cripto $ python consulta_saldo.py
Conectado à rede Ropsten!
Saldo de CHAVE CONTA 1: 0 ETH
Saldo de CHAVE CONTA 2: 0 ETH
(venv) seasai@raspberrypi:~/cripto $
Monica
O resultado indica que os saldos das contas consultadas estão em 0 ETH. Isso pode ocorrer por algumas razões:
Possíveis Motivos
Contas Sem Saldo: As contas consultadas realmente não possuem saldo. Você pode verificar isso em um explorador de blocos da rede Ropsten, como Etherscan (https://ropsten.etherscan.io/), inserindo os endereços.
Endereços Incorretos: Certifique-se de que os endereços que você está usando estão corretos e existem na rede Ropsten.
Rede Errada: Verifique se você está conectado à rede Ropsten e não a outra rede (como Mainnet ou Rinkeby).
Problemas de Conexão: Embora você tenha recebido a mensagem de que está conectado, pode haver problemas intermitentes com o provedor (Infura, por exemplo).
O Que Fazer a Seguir
Verifique os Endereços: Acesse um explorador de blocos e verifique os saldos dos endereços que você está usando.
Teste com Outros Endereços: Tente usar endereços de contas que você sabe que têm saldo.
Verifique a Conexão: Confirme se a conexão com a rede Ropsten está estável e funcionando corretamente.
Se precisar de mais assistência ou tiver outras perguntas, fique à vontade para perguntar!
O que você achou da resposta?