Tengo un nodo Ethereum ejecutando el servidor JSON RPC en este ejemplo de IP 136.10.164.134
. Entonces quiero usar un cliente para enviar algunos datos. Veo esta biblioteca para hacer el cliente.
Pero no puedo conectarme a mi servidor. Recibí este error:
requests.exceptions.ConnectionError: HTTPConnectionPool(host='136.10.164.134', port=8545):
Max retries exceeded with url: / (Caused by NewConnectionError
('<requests.packages.urllib3.connection.HTTPConnection object at 0x10ecfacd0>:
Failed to establish a new connection: [Errno 61] Connection refused',))
Acabo de poner estas 3 líneas como se menciona en la documentación como esta en mi secuencia de comandos de python:
from eth_rpc_client import Client
client = Client(host="136.10.164.134", port="8545")
client.get_coinbase()
Creo que no puedo conectarme a mi servidor porque la contraseña no está definida en mi script. ¿Cómo puedo enviar la contraseña del servidor en el cliente ethereum rpc?
Ok, ahora solucioné el problema de conexión. Reconfiguré la paridad con esta línea de comando:
geth --rpc --rpcaddr <ip> --rpcport <portnumber>
Y configuré mi IP en el objeto web3:
var Web3 = require('web3');
var web3 = new Web3();
web3.setProvider(new Web3.providers.HttpProvider('http://136.10.164.134:8545'));
web3.eth.syncing
Pero ahora tengo otro problema. tengo este error:
ValueError: No JSON object could be decoded
Estoy viendo la red con Charles y puedo ver esto:
415 Unsupported Media Type
Supplied content type is not allowed. Content-Type: application/json is required
Por supuesto, el tipo de contenido enviado es text/html; charset=utf-8
.
¿Cómo puedo cambiar el tipo de contenido con este cliente Ethererum rpc?
Bueno, como dijo @PiperMerriam, usé esta biblioteca web3.py. La biblioteca anterior que usé no está más actualizada. Ahora puedo conectar python web3 a mi nodo de servidor remoto de esta manera:
# Import
from web3 import Web3, HTTPProvider
# Connection to the remote server
web3rpc = Web3(HTTPProvider(host="136.10.164.134", port="8545"))
# Unlock your account
duration = 1000
web3rpc.personal.unlockAccount(web3rpc.eth.coinbase, 'your-passphrase', duration)
# Syncing check
web3rpc.eth.syncing
# Transaction from account A to account B
web3rpc.eth.sendTransaction({'to': 'your_token_account', 'from': web3rpc.eth.coinbase, 'value': web3rpc.toWei(1, "wei"), 'data': web3rpc.toHex('Test Transaction')})
niksmac
John
geth --rpc --rpcaddr <ip> --rpcport <portnumber>
y cambiar la ip web3 de esta manera:web3.setProvider(new Web3.providers.HttpProvider('http://136.10.164.134:8545'));
en lugar del host local. Pero ahora tengo un problema con el tipo de contenido.Sebí
John
John
gaitero merriam
ethereum-rpc-client
. Ya no es compatible. Eche un vistazo a web3.py si desea una opción de python para conectarse a un servidor RPC.John
privacidadisahumanright.eth