Go-Ethereum

無法連接到託管在本地 VM 上的私有區塊鏈

  • September 16, 2019

我想使用 remix IDE 並想連接需要連接到本地 VM 上執行的私有區塊鏈的 web3provider。我的系統在 Windows 10 上執行,我正在使用 vagrant 在本地執行 VM,隨後的 vagrant 文件是

Vagrant.configure("2") do |config|
 # The most common configuration options are documented and commented below.
 # For a complete reference, please see the online documentation at
 # https://docs.vagrantup.com.

 config.vm.provider "virtualbox" do |vb|
   vb.customize ["modifyvm", :id, "--memory", "3072", "--cpus", "2", "--natnet1", "10.252/16"]
 end


 # Every Vagrant development environment requires a box. You can search for
 # boxes at https://vagrantcloud.com/search.
 config.vm.box = "ubuntu/xenial64"
 config.vm.box_version = "20190625.2.0"
 config.vm.network "forwarded_port", guest: 8000, host: 8080
 config.vm.network "forwarded_port", guest: 3503, host: 8073
 config.vm.network "forwarded_port", guest: 3505, host: 8075
 config.vm.network "forwarded_port", guest: 8090, host: 8070
end

`

我創建了一個用作礦工的帳戶並使用命令連接該帳戶 nohup geth --datadir node1/ --syncmode 'full' --allow-insecure-unlock --port "30303" --rpc --rpcaddr "127.0.0.1" --rpcport "3503" --rpcapi 'personal,db,eth,net,web3,txpool,miner' --bootnodes 'enode://6b9a53203cd41106bf21c8496a1ff7d1e41b7437b9b41dedd557d89be35fcc3b18562f8ce81287b4872ca0adfc27c7b5ea98b159698ca7ac833ae133b82b672d@127.0.0.1:30302' --networkid 1505 --gasprice '1' --unlock 0 --p assword node1/password.txt --mine > node1/01.log 2>&1 &

儘管區塊鍊網路已啟動並正在執行,但無法連接本地瀏覽器上的混音 IDE 以連接到 VM 的區塊鏈。我用來連接 remix IDE 的 http 端點是**http://127.0.0.1:3503**

我嘗試將 rpcaddr 更改為“0.0.0.0”,但沒有用。你能幫我確定我會出錯的地方嗎?我是新手,請幫我解決這個問題。

把你的虛擬機想像成一台完全不同的機器。例如,它有另一個 IP。 127.0.0.1訪問localhost並因此訪問您的主機。

那麼你如何解決這個問題?

您需要使用正確的 IP 連接到您的虛擬機。進入您的虛擬機並執行命令ifconfig

很多東西都被退回了。當您看到它時,您肯定會辨識出正確的 IP。例如 192.xxx.xxx.xxx(即使是第一個數字也會變化 192 或 172 或 10)。

然後,您可以使用這個新 IP 從您的主機系統進行連接。

e.g. http://192.168.21.145:3503

還有更多的東西需要考慮

要允許外部連接(主機 -> 虛擬機),您需要允許此 IP。

最簡單的方法是使用rpcaddr 0.0.0.0. 但這是非常不安全的。現在每個人都可以訪問您的節點(如果伺服器在 Internet 中執行而不是在本地 VM 上)。所以你應該指定哪個 IP 可以訪問你的節點。

要麼手動輸入進行所有呼叫的設備 IP,要麼圍繞它建構一個 API 來為你處理這些東西。

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