Estoy intentando conectarme a la cadena de bloques de Ethereum y monitorear las transacciones a medida que se transmiten. No tengo la capacidad de ejecutar un nodo completo en mi computadora, por lo que confío en nodos de "terceros" para conectarme a la cadena de bloques. Los dos que he estado probando son " https://mainnet.infura.io/ [MY PRIVATE KEY]" y " https://api.myetherapi.com/eth ". Para recuperar las transacciones más recientes, estoy usando los filtros del módulo web3 python. Sin embargo, cuando ejecuto este código, inspirado en aquí y aquí :
from web3 import Web3, HTTPProvider
import time
node = #DEPENDS
connection = Web3(HTTPProvider(node))
block_filter = connection.eth.filter('latest')
time.sleep(60) #OR LONGER
print(block_filter.get_all_entries())
Si mi nodo es el de infuria, aparece el error "requests.exceptions.HTTPError: 405 Client Error: Method Not Allowed for url: https://mainnet.infura.io/ [MY PRIVATE KEY]". Si uso myetherapi, el resultado es simplemente una lista vacía.
¿Hay otros nodos HTTP que pueda usar para conectarme a la cadena de bloques? ¿O es el problema con mi código?
Parece que el problema no está en tu código. Tengo el mismo problema: intenté usar infura y Filter() en Python. Desafortunadamente, infura no proporciona este método en este momento , pero lo será en el futuro, como dijeron.
Lo que puedes hacer:
1) probando con otro nodo público (busque en Google o busque aquí https://www.ethernodes.org/ )
2) crea tu propio nodo (como decidí hacer): la forma más sencilla de hacerlo aquí https://geth.ethereum.org/downloads/