手把手教你從原始碼開始搭建自己的以太坊公鏈(四)部署及連線多個節點
阿新 • • 發佈:2018-12-17
1. 使用相同的創世區塊檔案genesis.json
創世區塊genesis.json檔案內容如下:
{
"config": {
"chainId": 100,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x400",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x00",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000" ,
"timestamp" : "0x00",
"alloc": { }
}
- 節點編號chainId要統一
2. 用創世紀區塊json區塊初始化節點
執行以下命令初始化各個節點。
geth --datadir /data/00 init genesis.json
3. 啟動各個節點
執行以下命令啟動各個節點。console引數表示啟動後,啟用命令列。
geth --networkid 100 --datadir /data/00 --rpc --rpcapi net,eth,web3,personal console>>geth.log
4. 獲取節點資訊
#接入geth控制檯
geth attach ipc:/data/00/geth.ipc
# 獲取節點資訊
admin.nodeInfo.enode
節點資訊如下: 格式是這樣的: “ennode://< node public key >@[::]:?discport=” 需要將[::]換成該節點電腦的公網IP地址。tcpport通常情況是30303,udpport通常可以設為30301,可能也可以不用。
5. 加入節點資訊
加入節點資訊有兩種方式。
- 通過命令列加入。
#接入geth控制檯
admin.addpeer("ennode://< node public key >@[node ip address]:<tcpport>?discport=<udpport>" )
- 通過配置檔案加入。這種情況下下需要重啟geth。 在data/geth目錄下,建立靜態節點檔案static-nodes.json,並將各個節點的node資訊寫入。
[
"ennode://< node1 public key >@[node1 ip address]:<tcpport1>?discport=<udpport1>",
"ennode://< node2 public key >@[node2 ip address]:<tcpport2>?discport=<udpport2>",
"ennode://< node3 public key >@[node3 ip address]:<tcpport3>?discport=<udpport3>",
]
然後啟動geth
geth --networkid 100 --datadir /data/00 --rpc --rpcapi net,eth,web3,personal console>>geth.log
6. 節點確認
在各個節點上進行測試:
#已連線的其他節點的個數
net.peerCount
#返回其他節點的資訊
admin.peers
然後從一個節點建立賬戶,開始挖礦,轉賬等各種操作,其它節點也會自動同步。