no se puede conectar el nodo Ethereum ni siquiera el puerto RPC: 8545 está abierto

He creado mi red privada de blockchain Ethereum. Desde diferentes servidores puedo conectarme y agregarme a la red como par sin ningún problema.

La forma en que ejecuto mi servidor:

geth --targetgaslimit "994712388" --port 3000 --networkid 23422 --identity node1 
--verbosity 3 --nodiscover --nat none --datadir="/home/miner/MyEthereumEbloc" 
--rpccorsdomain '*' --rpc --rpcaddr "localhost" --
rpcport="8545" --nodiscover --maxpeers=6 --ipcapi "admin,eth,web3" --autodag

Como puede ver, el puerto RPC está abierto:

$ telnet localhost 8545
Trying 127.0.0.1...
Connected to localhost.

Dentro de mi consola geth:

> admin.startRPC("127.0.0.1", 8545, "*", "web3,net,eth")
HTTP RPC already running on localhost:8545

http://localhost:8545es el puerto RPC de mi software de nodo Ethereum que se ejecuta localmente. Pero en mi navegador http://localhost:8545veo el siguiente error:

{"jsonrpc":"2.0","error":{"code":-32600,"message":"eof"}}

Dentro de la consola geth, donde ejecuto mi nodo de arranque; Estoy ejecutando el siguiente código para comunicarme con mi nodo local:

var Web3 = require("web3");
var web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));
web3.isConnected()   //returns false

Pero web3.isConnected()sigue devolviendo falso .

[P] Sé que hay mucha documentación relacionada con la conexión web3 al nodo local y he seguido todas las sugerencias. Pero no puedo solucionar el problema de conexión web3 al que me enfrento. ¿Cómo podría solucionar este problema? Gracias por su valioso tiempo y ayuda.

He hecho las sugerencias de las siguientes preguntas: ¿Cómo conectar un sitio web a un nodo geth? , https://forum.ethereum.org/discussion/3414/step-by-step-guide-to-connect-a-web-site-to-a-geth-node , https://gitter.im/ethereum /web3.js/archives/2015/12/31 .

Respuestas (4)

EDITAR: para otros usuarios que leen esto: la solución es encontrar en los comentarios de esta respuesta: los parámetros de lanzamiento eran incorrectos.

Se supone que las solicitudes http al nodo no deben devolver nada útil, está totalmente bien que obtenga esa respuesta en su navegador. Suponiendo que desea desarrollar una dApp para su cadena privada, le recomiendo usar https://github.com/ConsenSys/truffle : le dice a truffle que se comunique con su nodo y luego maneja toda la comunicación entre su sitio web y su cadena privada. . la documentación es realmente útil: https://truffle.readthedocs.io/en/latest/

Que te diviertas ! :)

gracias @Nikita: En realidad, tengo que usarlo para "EthExplorer" ( github.com/etherparty/explorer ).
Ahh, ahí lo tenemos: ¡el número de puerto! La descripción también parece ser un poco confusa, pero por lo que puedo decir aquí: intentaste llamar al número de puerto de geth RPC (8545), mientras que el script requiere que abras el navegador en localhost:8000 . ¿Eso funcionó?
a través de 8545, solo se comunica con su nodo geth . a través de 8000, se comunica con el servidor web, que le proporciona la aplicación, que se comunica con su nodo geth a través de rpc.
Después de ejecutar "npm start" dentro de la carpeta /explorer => localhost:8000 funcionó. Pero aún web3.isConnected() me devuelve falso que no pude solucionarlo.
Veo algunos errores en su comando de lanzamiento. Cambie la parte RPC al siguiente formato: --rpc --rpcport 8545 --rpcaddr 0.0.0.0 --rpccorsdomain "*" --rpcapi "eth,web3" y reemplace todo de acuerdo con sus valores. tiene un --rpccorsdomain '*' innecesario antes de --rpc, que también está mal escrito.

Mi problema es: estaba tratando de ejecutar todos los comandos web3 dentro gethde la consola, donde debería haber usado nodejs con la biblioteca web3.

He creado el nombre del archivo: script.js:

var Web3 = require('./node_modules/web3/index.js');
var web3 = new Web3();
web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545'));

if(!web3.isConnected())
    console.log("not connected");
else
    console.log("connected");

En mi terminal cuando ejecuto: nodejs script.jsda la salida como connected.

Basado en este hilo: https://github.com/ethereum/remix/issues/588 , he intentado lo siguiente:

geth --datadir ./bc-data --networkid 9001 --nodiscover --rpc --rpccorsdomain "*" --desbloquear 0

Después de este remix podría conectarse a - http://localhost:8545

Creo que el problema es que solo has habilitado --ipcapi. Debe habilitar --rpcapijunto con seleccionar qué opciones desea como admin ethy web3. Espero que lo haya resuelto.

Por ejemplo:geth --rpcapi eth,web3 --rpc

Enables the admin, official DApp and miner API over the IPC interface
Enables the official DApp and web3 API over the HTTP interface