не удается подключить узел Ethereum, даже порт RPC: 8545 открыт

Я создал свою частную сеть блокчейнов Ethereum. С разных серверов я могу без проблем подключаться и добавляться в сеть как одноранговый узел.

Как я запускаю свой сервер:

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

Как видите, порт RPC открыт:

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

Внутри моей консоли geth:

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

http://localhost:8545— это RPC-порт моего локально работающего программного обеспечения узла Ethereum. Но в моем браузере http://localhost:8545я вижу следующую ошибку:

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

Внутри консоли geth, где я запускаю свой загрузочный узел; Я запускаю следующий код для связи с моим локальным узлом:

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

Но web3.isConnected()сохраняет return false .

[В] Я знаю, что есть много документации, связанной с подключением web3 к локальному узлу, и я следовал всем предложениям. Но я не могу исправить проблему с подключением к web3, с которой я столкнулся. Как я могу решить эту проблему? Спасибо за ваше драгоценное время и помощь.

Я сделал предложения из следующих вопросов: Как подключить веб-сайт к узлу 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 .

Ответы (4)

РЕДАКТИРОВАТЬ: Для других пользователей, читающих это: решение найти в комментариях к этому ответу - параметры запуска были неправильными.

HTTP-запросы к узлу не должны возвращать ничего полезного, совершенно нормально, что вы получаете этот ответ в своем браузере. Предполагая, что вы хотите разработать dApp для своей частной сети, я рекомендую использовать https://github.com/ConsenSys/truffle — вы указываете truffle для связи с вашим узлом, а затем он обрабатывает всю связь между вашим веб-сайтом и вашей частной сетью. . документация действительно полезная: https://truffle.readthedocs.io/en/latest/

Веселиться ! :)

спасибо @Nikita: На самом деле я должен использовать его для «EthExplorer» ( github.com/etherparty/explorer ).
Ааа, вот и он — номер порта! Описание также кажется немного запутанным, но из того, что я могу сказать здесь: вы пытались вызвать номер порта RPC geth (8545), тогда как сценарий требует, чтобы вы открыли браузер в localhost:8000 . Это сработало?
через 8545 вы связываетесь только со своим geth-узлом . через 8000 вы связываетесь с веб-сервером, предоставляющим вам приложение, которое связывается с вашим узлом geth через rpc.
После того, как я запустил «npm start» внутри папки /explorer => localhost:8000, сработало. Но все же web3.isConnected() возвращает мне false, что я не смог это исправить.
Я вижу некоторые ошибки в вашей команде запуска. Измените часть RPC на следующий формат: --rpc --rpcport 8545 --rpcaddr 0.0.0.0 --rpccorsdomain "*" --rpcapi "eth,web3" и замените все в соответствии с вашими значениями. у вас есть ненужный --rpccorsdomain '*' перед --rpc, который также написан неправильно.

Моя проблема: я пытался запустить все команды web3 внутри gethконсоли, где я должен был использовать nodejs с библиотекой web3.

Я создал имя файла: 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");

На моем терминале, когда я запускаю: nodejs script.jsон выдает результат в виде connected.

Основываясь на этом потоке - https://github.com/ethereum/remix/issues/588 , я пробовал следующее:

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

После этого ремикса можно было подключиться к - http://localhost:8545

Я думаю, проблема в том, что вы включили только --ipcapi. Вы должны включить, --rpcapiа также выбрать, какие параметры вам нравятся admin ethи web3. Надеюсь, это решило это.

Например: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