從零一步一步搭建以太坊私有鏈
我會說明一步一步怎么做,同時說明可能的注意事項。
1.下載geth
這一步網上很多,就不細說了,windows的,linux的,mac都有。
2. 創建genesis.json
關於genesis文件的介紹,在此處:http://blog.csdn.net/sportshark/article/details/51855007有詳細說明,自行查閱。
我的genesis.json如下
{
"config": {
"chainId": 89120348581,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"difficulty": "20",
"gasLimit": "2100000",
"alloc": {
"0x1a9ec3b0b807464e6d3398a59d6b0a369bf422fa": { "balance": "30000000000000000000000" },
"0x33df901abc22dcb7f33c2a77ad43cc98fbfa0790": { "balance": "40000000000000000000000" }
}
}
我這里預先給自己的測試賬號分配了一些以太幣,這樣就不用挖礦了。
3.初始化區塊鏈
這里需要注意的是,如果你要有多台電腦,那么每台電腦都要執行一遍下面的操作,也不能圖省事,復制geth目錄。
geth --datadir ~/eth/privnet/ init genesis.json
,我設定的私有鏈主目錄是~/eth/privnet,你可以根據自己的情況修改
4.節點運行
節點之間能夠聯通,首先要保證網絡是通的,測試網絡是否暢通,可以通過telnet ip 30303
來測試,有時候由於防火牆或者nat等原因,有些節點之間是沒法直接通信的.
在各個節點上運行下面命令
geth --datadir ~/eth/privnet --networkid 89120348581
這時候各個幾點已經獨立運行起來了,但是他們是沒有連通的,因為他們的networkid,和創世塊和以太坊網絡上的都不一樣,所以導致在p2p網絡認證過程中會失敗.
5.連接節點
在各自節點上運行geth attach來添加節點
各自節點信息可以通過admin.nodeInfo來獲取,獲取以后再其他節點通過
admin.addPeer('enode://69e4026e61198088b9bdc353a7e0c924481b1835b35acbf298066634bf47406655516f251933992d3ae2d2752048c0df5656981d4113faa92bb0302243a62eea@xx.xx.xx.xx:30303')
來添加,
還有一種方式可以通過在運行參數中直接指定
如下:
geth.exe --datadir=d:/privnet --networkid 89120348581 --bootnodes enode://69e4026e61198088b9bdc353a7e0c924481b1835b35acbf298066634bf47406655516f251933992d3ae2d2752048c0df5656981d4113faa92bb0302243a62eea@xx.xx.xx.xx:30303
如果有多個node,用逗號分隔即可.
6.注意事項
-
- init genesis.json必須每個節點都運行一遍,否則添加節點的時候因為創世塊不匹配,會失敗,我就是在這里耽誤了很久.
-
- 節點之間單向網絡通就可以,也就是在nat環境下A可以直接訪問B,那就用A添加B
-
- 后續轉賬等操作,必須啟動挖礦,怎么挖礦,很簡單,就是在啟動的時候加上--mine參數就可以了.
7 加入我的私有鏈
-
- 將上面的genesis.json內容保存為c:\privnet\genesis.json
-
- 運行命令
geth --datadir c:\privnet init genesis.json
- 運行命令
-
- 啟動節點
geth.exe --datadir=c:/privnet --networkid 89120348581 --bootnodes enode://69e4026e61198088b9bdc353a7e0c924481b1835b35acbf298066634bf47406655516f251933992d3ae2d2752048c0df5656981d4113faa92bb0302243a62eea@123.206.176.142:30303
- 啟動節點
-
- 特別注意,genesis.json要一字不差,否則無法加入我的私有網絡.
在私有鏈上挖礦很容易,方便自己測試開發.
- 特別注意,genesis.json要一字不差,否則無法加入我的私有網絡.