1. 程式人生 > >手把手教你從原始碼開始搭建自己的以太坊公鏈(四)部署及連線多個節點

手把手教你從原始碼開始搭建自己的以太坊公鏈(四)部署及連線多個節點

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": { } }
  1. 節點編號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. 加入節點資訊

加入節點資訊有兩種方式。

  1. 通過命令列加入。
#接入geth控制檯
admin.addpeer("ennode://< node public key >@[node ip address]:<tcpport>?discport=<udpport>"
)
  1. 通過配置檔案加入。這種情況下下需要重啟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

然後從一個節點建立賬戶,開始挖礦,轉賬等各種操作,其它節點也會自動同步。