Dapp не подключается (через web3) при вызове из браузера, на котором не запущен узел

пытаясь подключить dapp через браузер, при выполнении того же самого через браузер на машине, на которой работает узел geth, подключается через общедоступный IP-адрес (например: http175.xxx.xxx.xx:xxxxlogin), но то же самое при попытке подключения через другой браузер конкретно другая машина выдает ошибку в консоли

Ошибка: ОШИБКА ПОДКЛЮЧЕНИЯ: не удалось подключиться к узлу http://192.xxx.x.xx:8484

geth command :-geth --rpccorsdomain "*" --rpc --rpcport "8484"  --rpcaddr "192.xxx.x.xx" --datadir="xxxx" --port "30302" --networkid 65535 --rpcapi="db,eth,net,web3,personal,web3"  --nodiscover console

код веб3

var Web3 = require('web3');
var web3 = new Web3();
web3.setProvider(new web3.providers.HttpProvider('http://192.xxxx.x.xx:8484'));
web3.eth.defaultAccount = "0x6f3ae17a20d3367d649f8774a42a15xxxxxxxxxx";

192.xxx.x.xx:8484 — это ip узла

жду предложений..

Ответы (3)

Для меня это звучит как проблема с брандмауэром где-то в сети. если вы получаете доступ к узлу с локальной машины даже через общедоступный IP-адрес, это не означает, что он доступен из любого места.

Например, если я запускаю geth (используя те же параметры, что и вы) на своем компьютере с Windows 10. Я мог бы получить доступ к конечной точке JSON-RPC с этого компьютера, используя внешний сетевой интерфейс 192.168.xx, но не с моего телефона, который находится в той же сети. Потому что брандмауэр Windows включен. После отключения работает.


Что касается ответа Томаса, я согласен с тем, что децентрализация — это новая парадигма с точки зрения сетевой архитектуры [peer2p VS клиент-сервер]. Но JSON-RPC WebService и библиотека Web3 полезны для любых устройств, которые не могут размещать узел локально (таких как IOT, персональные компьютеры и т. д.).

Я не верю, что каждое устройство в мире, взаимодействующее с блокчейном, скоро станет узлом. Рано еще...

В моем случае, например, у меня дома есть несколько устройств (компьютеры, ноутбуки, мобильные устройства, NAS, умные телевизоры, игровые приставки, raspberryPi), и на одном из моих RaspberryPi размещен полный узел Ethererum. Я думаю, что этот доверчивый «узел» самодостаточен для моего дома:

  • Мой браузер может взаимодействовать с блокчейном с помощью метамаски (присоединиться к этому узлу)
  • Моя консоль и мой смарт-ТВ могли подключаться к этому узлу и оплачивать игры или подписку Netfix.
  • ...

Я думаю, это часть дискуссии!

Проблема, с которой вы столкнулись, - это именно то, что она говорит, и именно то, что вы указываете. Децентрализованное приложение пытается подключиться к несуществующему узлу.

Это прекрасная иллюстрация того, что мы подразумеваем под децентрализацией. Это не похоже на мир Web 2.0, где вы можете выйти на удаленный сервер. Удаленных серверов нет. Есть локально работающие узлы, каждый из которых проверяет и соглашается со всеми данными.

Децентрализация, на мой взгляд, является наиболее важным моментом, который многие люди либо упускают из виду, либо идут на компромисс.

Попробуйте запустить ngrok и использовать этот домен как домен rpccors, а localhost для ip.