Я создал свою частную сеть блокчейнов 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 .
РЕДАКТИРОВАТЬ: Для других пользователей, читающих это: решение найти в комментариях к этому ответу - параметры запуска были неправильными.
HTTP-запросы к узлу не должны возвращать ничего полезного, совершенно нормально, что вы получаете этот ответ в своем браузере. Предполагая, что вы хотите разработать dApp для своей частной сети, я рекомендую использовать https://github.com/ConsenSys/truffle — вы указываете truffle для связи с вашим узлом, а затем он обрабатывает всю связь между вашим веб-сайтом и вашей частной сетью. . документация действительно полезная: https://truffle.readthedocs.io/en/latest/
Веселиться ! :)
Моя проблема: я пытался запустить все команды 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
альпер
Никита Фукс
Никита Фукс
альпер
Никита Фукс
--rpc --rpcport 8545 --rpcaddr 0.0.0.0 --rpccorsdomain "*" --rpcapi "eth,web3"
и замените все в соответствии с вашими значениями. у вас есть ненужный --rpccorsdomain '*' перед --rpc, который также написан неправильно.