這次連接是要將不同主機上的節點連接,需要多臺主機網路相互連通,本次連接通過兩臺Ubuntu虛擬機(VMware)連接同一個手機熱點實作節點連接,
網路測驗
首先兩臺主機連接一個手機熱點,然后要在虛擬機設定里把網路配接器改為橋接模式并勾選復制物理網路連接狀態,保證之后IP可以ping通,

我當時出現了這個問題,虛擬機連上熱點后網路連接顯示這個圖示,說明不能上網,需要修改網路設定:

點擊編輯,選擇虛擬網路編輯器,選擇修改,把橋接模式的橋接到改為自己電腦的網卡,我電腦之前橋接到自動,結果虛擬機網路總顯示連接失敗,
網路設定完畢后進行測驗,在虛擬機中設定的Network(網路)中可以查看IPV4和DNS,如果兩臺虛擬機的DNS相同可進行下一步,不同的話具體解決辦法我還沒試,,,
然后兩臺主機互相ping另外一臺主機的IPV4,ping通即可
網路測驗的成功是保證不同主機節點連接的關鍵,之前因為DNS不同浪費了大量時間,
本地以太坊POA搭建
主機1中:
創個空檔案夾,在終端創建本地賬戶:
注意保存password和賬戶地址,
主機2也同樣操作創建一個新賬戶,
主機1中:
創建POA演算法的json檔案:
zhazhayu2@ubuntu:~$ puppeth
+-----------------------------------------------------------+
| Welcome to puppeth, your Ethereum private network manager |
| |
| This tool lets you create a new Ethereum network down to |
| the genesis block, bootnodes, miners and ethstats servers |
| without the hassle that it would normally entail. |
| |
| Puppeth uses SSH to dial in to remote servers, and builds |
| its network components out of Docker containers using the |
| docker-compose toolset. |
+-----------------------------------------------------------+
Please specify a network name to administer (no spaces, hyphens or capital letters please)
> key
Sweet, you can set this via --network=key next time!
INFO [10-13|06:26:51.139] Administering Ethereum network name=key
WARN [10-13|06:26:51.139] No previous configurations found path=/home/zhazhayu2/.puppeth/key
What would you like to do? (default = stats)
1. Show network stats
2. Configure new genesis
3. Track new remote server
4. Deploy network components
> 2
What would you like to do? (default = create)
1. Create new genesis from scratch
2. Import already existing genesis
> 1
Which consensus engine to use? (default = clique)
1. Ethash - proof-of-work
2. Clique - proof-of-authority
> 233
How many seconds should blocks take? (default = 15)
> 3
Which accounts are allowed to seal? (mandatory at least one)
> 0x6c03Ed0D9E001d652c56Fe0841418f9dc208F933
> 0x
Which accounts should be pre-funded? (advisable at least one)
> 0x6c03Ed0D9E001d652c56Fe0841418f9dc208F933
> 0x
Should the precompile-addresses (0x1 .. 0xff) be pre-funded with 1 wei? (advisable yes)
>
Specify your chain/network ID if you want an explicit one (default = random)
> 2
INFO [10-13|06:28:34.599] Configured new genesis block
What would you like to do? (default = stats)
1. Show network stats
2. Manage existing genesis
3. Track new remote server
4. Deploy network components
> 2
1. Modify existing configurations
2. Export genesis configurations
3. Remove genesis configuration
> 2
Which folder to save the genesis specs into? (default = current)
Will create key.json, key-aleth.json, key-harmony.json, key-parity.json
>
INFO [10-13|06:28:44.139] Saved native genesis chain spec path=key.json
ERROR[10-13|06:28:44.139] Failed to create Aleth chain spec err="unsupported consensus engine"
ERROR[10-13|06:28:44.140] Failed to create Parity chain spec err="unsupported consensus engine"
INFO [10-13|06:28:44.146] Saved genesis chain spec client=harmony path=key-harmony.json
What would you like to do? (default = stats)
1. Show network stats
2. Manage existing genesis
3. Track new remote server
4. Deploy network components
> ^C
把生成的創世塊key.json放到主機1和主機2的賬戶檔案夾中,并且都進行初始化:
開啟節點(注:開啟以太坊節點有很多命令,不同命令開啟節點后會有不同,具體請查閱其他教程)
主機1中:
上圖中有一個錯誤,開啟節點命令末尾的數字應該是233(創世塊的chainid),而不是2
然后查詢連接節點數:
可以看見連接節點為0,存在初始賬戶,余額無窮,
然后輸出主機2的節點資訊(由于另一臺虛擬機在同學的電腦上,所以這里以主機1的輸出為例,注意enode的區分):
記錄主機2的enode,
在主機1中連接enode:
注意這里要將主機2的enode中127.0.0.1改為主機2的IPV4,
主機1再次查詢連接節點數:

主機2查詢連接節點數同樣回傳1,說明連接成功,
查詢連接資訊:
可以看到localAddress和remoteAddress和虛擬機IP匹配,說明連接正確,
多輸出幾次發現結果相同,說明連接成功不是網路波動的問題(我之前遇到過),
主機1開啟挖礦:
報錯:賬戶未解鎖,解鎖賬戶:
這里賬戶地址是初始賬戶的地址,密碼是創建新賬戶時的密碼,
再次開啟挖礦:
顯示需要等待其他節點,
問題&錯誤
寫博客時回顧了整個程序,還是發現了一些錯誤,比如開啟節點chainid用錯了,這個應該不影響節點連接,但是在挖礦時可以看到,主機1挖礦時顯示等待其他節點,而主機2開啟挖礦時只回傳了null,之前以為主機1沒用給主機2授予權限,現在想來可能是chainid的問題,
本文非準確教程,僅供參考,初學階段難免出現錯誤,望指正,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/176970.html
標籤:其他
上一篇:零伽壹淺談:區塊鏈存證機制之探索
