前言
這篇文章可能是最簡單的內容,基於前一篇我們講到的節點互聯,我們在這一章將其運用起來。為什麼選擇win10系統,因為geth實際上並不很調系統,都可以執行,然後很多教程都是linux下的我就寫一篇關於windows下的節點構建和並聯吧。
環境準備
windows 10
(非必須)geth 1.7.3
創世檔案 init.json
geth下載地址:
節點構建
本次構建使用到的創世檔案:
{
"nonce": "0x0000000000000075",
"config": {
"chainId": 4567,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x00",
"gasLimit": "0xffffffff",
"difficulty": "0x400",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc": { }
}
複製程式碼
和之前文章一樣我們需要使用初始化資料夾命令來初始化datadir
不過這次我們初始化兩個目錄
geth init init.json --datadir ./demo1
geth init init.json --datadir ./demo
之所以初始化兩次是因為前面文章提到,為了讓私鏈的多個節點互聯,前提就是保證每一個節點的創世檔案相同,否則無法互聯。
節點啟動
我們先啟動主要節點,並開啟json RPC
服務
geth --identity "prcService" --rpc --rpccorsdomain "*" --datadir ./demo --port "30301" --nodiscover --rpcport 8101 --rpcapi "personal,db,eth,net,web3" --networkid 1998 console 2>> ./geth.log
這裡標記的--networkid一定要保證和另一個啟動的節點一致。
在啟動第二個礦工節點前,我們先複習一下上一章講到的通過命令列建立賬戶的命令:
geth account new --datadir ./demo1
輸入兩次賬戶密碼,就會在剛剛建立的demo1中新建一個賬戶,之所以建立一個賬戶是為了挖礦需要,啟動挖礦必須指定一個賬戶否則無法啟動挖礦。
然後我們再啟動挖礦節點:
geth --datadir ./demo1 --nodiscover --ipcdisable --mine --networkid 1998 --minerthreads=4 console 2>> ./geth1.log
解釋下幾個不同的引數:
--ipcdisable
表示啟動節點時關閉檔案rpc服務,因為windows下的prc是預設放在同一個檔案下,導致多節點啟動時無法啟動並報錯:Fatal: Error starting protocol stack: Access is denied.
解決辦法就是新增這個引數關閉這個節點的rpc服務。
--mine
表示啟動節點就開始挖礦工作,所以之前我們需要建立一個賬戶,沒有賬戶然後又新增了這個引數會報錯然後無法啟動。
--minerthreads=4
表示啟動挖礦的執行緒數。
再次提醒一定要保證networkid一致。
節點互聯
在保證networkid一致,創世檔案一致的情況下,我們可以使用多種方法來互聯節點,這裡我們就演示最簡單的通過控制檯互聯節點。
在demo中輸入
admin.nodeInfo
得到節點的連結地址:
{
enode: "enode://000b59e137591a1a4c4b361df824d3f1ce4b872c0b4499d790913dfc8dfb57d97a311a26881cb45a0267d8c0b2a58565cb9bb02aa6a9ca31b7eab64aa3bf4e50@[::]:3031?discport=0",
id: "000b59e137591a1a4c4b361df824d3f1ce4b872c0b4499d790913dfc8dfb57d97a311a26881cb45a0267d8c0b2a58565cb9bb02aa6a9ca31b7eab64aa3bf4e50",
ip: "::",
listenAddr: "[::]:3031",
name: "Geth/v1.7.2-stable-1db4ecdc/windows-amd64/go1.9",
ports: {
discovery: 0,
listener: 3031
},
protocols: {
eth: {
difficulty: 88872041,
genesis: "0xc9400712dce394e4bb9019f317751286cdf4f594ebad0a5acf83162a373461d3",
head: "0x62b39a9a3d9d2b3a79ea2d6648b63b0b63baa9f51f8b34987a52da9e8222bcef",
network: 11
}
}
}
複製程式碼
然後將enode內容複製,在demo1
中輸入admin.addPeer(內容)
新增節點,新增之後可以通過admin.peers
命令檢視到新增的節點
可以試試在兩個節點輸入admin.peers
都可以檢視到連線資訊
來自本人: 以太坊極客