Как подключиться к удаленному узлу Parity из web3.js?

Я установил контроль четности на экземпляре AWS EC2, следуя этим инструкциям, и запустил контроль четности с --jsonrpc-apis 'web3,eth,net,parity'флагом. Я также пробовал много других флагов, таких как--rpccorsdomain '*'

Однако я изо всех сил пытаюсь подключиться к нему с помощью web3.js.

Также я временно открыл весь входящий трафик с моего IP

Ответы (4)

Взгляните на документы JSONRPC:

--jsonrpc-port PORT          Specify the port portion of the JSONRPC API server
                             (default: 8545).
--jsonrpc-interface IP       Specify the hostname portion of the JSONRPC API
                             server, IP should be an interface's IP address, or
                             all (all interfaces) or local (default: local).
--jsonrpc-cors URL           Specify CORS header for JSON-RPC API responses.
                             (default: None)
--jsonrpc-apis APIS          Specify the APIs available through the JSONRPC
                             interface. APIS is a comma-delimited list of API
                             name. Possible name are web3, eth, net, personal,
                             parity, parity_set, traces, rpc, parity_accounts.
                             (default: web3,eth,net,parity,traces,rpc).
--jsonrpc-hosts HOSTS        List of allowed Host header values. This option will
                             validate the Host header sent by the browser, it
                             is additional security against some attack
                             vectors. Special options: "all", "none",
                             (default: none).

Таким образом, включение необходимых API, как вы это сделали, — это только одна часть головоломки, которую вы пытаетесь решить :)

Предполагая, что у вас все в порядке с портом по умолчанию и API по умолчанию, давайте посмотрим на следующие функции, которые вам, вероятно, понадобятся:

  • --jsonrpc-interface allвключает HTTP JSON-RPC API на всех сетевых интерфейсах, а не только на локальном замыкании на себя. Вы также можете указать --jsonrpc-interface 133.33.33.37, какой ваш общедоступный IP-адрес будет обслуживать RPC только для общедоступного сетевого интерфейса.

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

  • --jsonrpc-hosts allчтобы разрешить все значения заголовка хоста, отправленные браузером.
  • --jsonrpc-cors '*'чтобы разрешить все запросы CORS из любого домена.

Обратите внимание, что вы, вероятно, захотите отключить разумные API, такие как, personal,parity_accounts,parity_setа также отключить другие функции, такие как --no-ui, --no-dapps, --no-secretstore, --no-code, или --no-storageповысить безопасность своего клиента.

+1 @Влал. Наряду с этим --jsonrpc-hosts all --jsonrpc-interface allмне пришлось добавить --jsonrpc-cors nullвместо--rpccorsdomain "*"

короткая версия (если вы находитесь в доверенной сети и предполагаете, что у вас не работают локальные брандмауэры):

--jsonrpc-hosts all --jsonrpc-interface all

затем вы подключаетесь через (и, очевидно, меняете IP):web3 = new Web3(new Web3.providers.HttpProvider("http://xxx.xxx.xxx.xxx:8545"));

Вы должны использовать

jsonrpc-cors all

И

jsonrpc-hosts all

либо непосредственно в команде ( --jsonrpc-cors all --jsonrpc-hosts all), либо в .tomlконфигурационном файле.