Go-Ethereum

“乙太坊區塊瀏覽器”如何安全地連接到已經在主伺服器上執行的 geth?

  • February 27, 2017

我正在研究私有乙太坊網路。我在主伺服器上執行乙太坊引導節點和Ethereum Block Explorer應用程序(https://github.com/etherparty/explorer(一個輕量級的乙太坊區塊瀏覽器。))。

在我執行乙太坊節點的主伺服器內,在瀏覽器中我可以連接到Ethereum Block Explorerfrom localhost:8000

在此處輸入圖像描述

但是從瀏覽器上的外部節點,當我嘗試從主伺服器的 IP 地址連接時,< ip-address >:8000我遇到了以下錯誤消息。此錯誤消息的主要原因是“web3未連接”

在此處輸入圖像描述

var eth_node_url = 'http://localhost:8545'; // TODO: remote URL
web3.setProvider(new web3.providers.HttpProvider(eth_node_url));

if(!web3.isConnected()) {
   $('#connectwarning').modal({keyboard:false,backdrop:'static'}) //enters here
   $('#connectwarning').modal('show') //enters here
}

在外部節點上,如果我geth在已經連接到私有乙太坊網路的後台執行應用程序,它可以解決問題。

**$$ Q $$**在沒有在後台執行應用程序的外部節點geth上,是否可以Ethereum Block Explorer連接到geth已經在主伺服器上執行的應用程序?如果是,是否有在主伺服器上執行的安全geth方法--rpcaddr="localhost" --rpccorsdomain="*"

感謝您寶貴的時間和幫助。

筆記:

=> 我執行乙太坊節點的方式:

geth --port 3000 --networkid 23422 --nodiscover --datadir="/home/MyEthereumEbloc" 
--rpc --rpcaddr="localhost" --rpccorsdomain="*" --maxpeers=6 --ipcapi 
"admin,eth,web3" --autodag

=> 為了安裝Ethereum Block Explorer,我遵循了https://github.com/etherparty/explorer上的安裝指南。

[~$] git clone https://github.com/etherparty/explorer 
[~$] cd explorer
[~/explorer$] npm start

> EthereumExplorer@0.1.0 prestart /home/netlab/explorer
> npm install


> EthereumExplorer@0.1.0 postinstall /home/netlab/explorer
> bower install


> EthereumExplorer@0.1.0 start /home/netlab/explorer
> http-server ./app -a 79.123.177.145 -p 8000 -c-1

Starting up http-server, serving ./app on port: 8000

=> 在位於 explorer 文件夾下的 package.json 文件中:應用程序啟動如下:

"start": "http-server ./app -a localhost -p 8000 -c-1"

請知道,當我將 localhost 更改為 node’a ip-address 時,它沒有幫助:

"start": "http-server ./app -a <ip-address> -p 8000 -c-1"

!!請注意,此解決方案僅適用於外部節點和主伺服器位於同一網路域中的情況!!

不安全的方法:

問題是:我如何啟動我的 RPC。

在主伺服器上執行geth如下:

> admin.startRPC("0.0.0.0", 8545, "*")
true

或者

--rpc --rpcport 8545 --rpcaddr 0.0.0.0 --rpccorsdomain "*" --rpcapi "eth,web3"

更新 explorer/app/app.js 如下:

   //var eth_node_url = 'http://localhost:8545'; //commented out. 
   var eth_node_url = 'http://<ip-address of the main server>:8545';         
   web3.setProvider(new web3.providers.HttpProvider(eth_node_url));

引用自:https://ethereum.stackexchange.com/questions/10081