“乙太坊區塊瀏覽器”如何安全地連接到已經在主伺服器上執行的 geth?
我正在研究私有乙太坊網路。我在主伺服器上執行乙太坊引導節點和
Ethereum Block Explorer
應用程序(https://github.com/etherparty/explorer(一個輕量級的乙太坊區塊瀏覽器。))。在我執行乙太坊節點的主伺服器內,在瀏覽器中我可以連接到
Ethereum Block Explorer
fromlocalhost: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));