1. 新建一個目錄Test_Eth,用於存放區塊鏈等數據。
在~\Test_Eth\中新建一個文件genesis.json,作爲私有鏈的創世塊說明文件:
{
"config": {
"chainId": 6,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0
},
"alloc": {},
"coinbase": "0x0000000000000000000000000000000000000000",
"difficulty": "0x20000",
"extraData": "",
"gasLimit": "0x2fefd8",
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00"
}
2. 在Test_Eth目錄下啓動geth,以genesis.json中的創世塊開始創建私有鏈。
geth --datadir ./ init genesis.json
結果如下:
3. 啓動p2p節點A控制檯
此命令將建立一個p2p網絡,網絡id爲225,區塊鏈數據存放於Test_Eth目錄中
geth --datadir ./ --networkid 225 console
結果如下所示:
4. 新建另外一個目錄Test_Eth2,啓動另外一個node (node B)
使用同樣的genesis.json作爲創世塊,將Test_Eth中的genesis.json複製到Test_Eth2,執行以下命令:
geth --datadir ./ init genesis.json
使用不同的端口,啓動控制檯
geth --datadir ./ --networkid 225 --port 30304 console
結果如下:
5. 新建另外一個目錄Test_Eth3,啓動另外一個node (node C)
使用同樣的genesis.json作爲創世塊,將Test_Eth中的genesis.json複製到Test_Eth3,執行以下命令:
geth --datadir ./ init genesis.json
使用不同的端口,啓動控制檯
geth --datadir ./ --networkid 225 --port 30305 console
結果如下:
6. 在nodeA通過命令查看節點A的enode信息
admin
結果如下所示:
7. 在啓動後, 在node B控制檯中輸入命令,讓node B連接第一個node A:
admin.addPeer("enode://fc0ba73989008806f9050135367426913611c80f1157d988c8dd6509a1225d3866d172db35e84ea4129b361002aee90311af180a802818d5084b6afeaf418489@127.0.0.1:30303")
結果如下所示:
8.在node C控制檯中輸入命令,讓node C連接第一個node A:
admin.addPeer("enode://fc0ba73989008806f9050135367426913611c80f1157d988c8dd6509a1225d3866d172db35e84ea4129b361002aee90311af180a802818d5084b6afeaf418489@127.0.0.1:30303")
結果如下所示:
9. 在任一節點控制檯輸入命令查看節點接入情況
admin.peers
結果如下所示:
在節點A創建賬戶:
personal.newAccount("123456") //123456爲賬號密碼
在節點A使用命令進行挖礦:(默認第一個賬戶挖礦)
miner.start()
可以看到節點A,節點B,節點C都有相同的數據:
至此,基於本地以太坊客戶端搭建多節點私鏈工作完成。