生活随笔
收集整理的這篇文章主要介紹了
搭建联盟链
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 安裝前的準備
1.1 配置Linux系統
本文配置的為windows下的VMware軟件下搭建的Linux下的cent0S-7系統,推薦系統有CentOS 7和Ubuntu 16.04有條件的可以用云服務器上的Linux系統,好處是可以搭建廣域網聯盟鏈。
本文默認你已經對以太坊和docker技術有一定的掌握和了解,并部署好相應的環境。如果你還未準備好,請參考芯鏈公眾號前期發布的環境搭建和部署文章。
1.2 安裝Docker
請使用管理員權限進行安裝,
# su root
安裝Docker(請參考芯鏈公眾號發布的安裝指導文章):
CentOS: yum -y install docker-io
Ubuntu: apt-get install docker-engine
安裝完畢如圖:
然后啟動Docker服務:
#service docker start
校驗docker是否安裝成功:
#docker run hello-world
這個命令會下載一個測試鏡像,并且運行在一個容器中。當容器運行時,他會打印一些信息,并且退出。下圖表示Docker已經安裝完成。
2 安裝bootnode
2.1 下載bootnode鏡像
運行命令如下命令:
#docker pull docker.io/hawyasunaga/ethereum-bootnode
查看鏡像:docker images
2.2 Docker創建bootnode容器節點
生成引導節點:
1
|
#docker run -itd -m 512M --privileged=true --memory-swap -1 --net=host -p 30301:30301/udp -p 30301:30301/tcp -v /path/docker/bootnode:/root/bootnode --name genbootnode docker.io/hawyasunaga/ethereum-bootnode bootnode --genkey=/root/bootnode/boot.key
|
運行引導節點:
1
|
#docker run -itd -m 512M --privileged=true --memory-swap -1 --net=host -p 30301:30301/udp -p 30301:30301/tcp -v /path/docker/bootnode:/root/bootnode --name bootnode docker.io/hawyasunaga/ethereum-bootnode bootnode --nodekey=/root/bootnode/boot.key
|
注意:這兩個命令參數中,-v /path/docker/bootnode:/root/bootnode為映射路徑,在docker的這個bootnode容器中,出現容器內/root/bootnode路徑都映射為外部路徑/path/docker/bootnode。下方以太坊容器搭建節點命令同理。
2.3 查看bootnode日志得到節點
1
|
#docker logs -f bootnode
|
得到節點如下:
將[::]替換為本機IP地址
好了,用于連接的根節點運行完畢。
3 安裝以太坊節點
可以找臺Linux進行節點聯盟鏈的搭建了,這里繼續以centos7繼續演示了。
3.1 創建以太坊的創世文件
新建創世文件genesis.json,內容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
{
"config": {
"chainId": 90,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc": {"0x5f38056f45091ee992298e53681b0a60c999ff95":{"balance": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7"}},
"coinbase" : "0x5f38056f45091ee992298e53681b0a60c999ff95",
"extraData" : "0x2017",
"nonce" : "0xdeadbeefdeadbeeF",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00",
"gasLimit": "0xffffffff",
"difficulty": "0x20000"
}
|
3.2 初始化創世文件
首先新建一個準備放置以太坊目錄的文件,將genesis.json文件放入該地址,本文為/home/admin下:
運行如下命令
1
|
#docker run -itd --privileged=true -v /home/admin:/root/ethdev --name gethDev1 ethereum/client-go --datadir /root/ethdev --networkid 8765639736937780 init /root/ethdev/genesis.json
|
請記住—networkid 8765639736937780,這是當前搭建聯盟鏈的ID。
查看日志文件:docker logs -f gethDev1
初始化成功。
3.3 Docker創建以太坊容器節點
運行如下命令
?
1
|
#docker run -itd -m 512M --privileged=true --network=host --memory-swap -1 --net=host -p 8545:8545 -p 40303:40303 -v /home/admin:/root/ethdev --name gethDev1 ethereum/client-go --ipcdisable --port 40303 --bootnodes "enode://ad6aff917c6e8bd40cb20af4eac6ce05c16d285125b46f17fc9b5c3b0a833bd21667231215949c6ff771ba512eb8f87f138ac6679852997c3eaec1d349561d20@120.25.162.110:30301" --bootnodesv4 "enode://ad6aff917c6e8bd40cb20af4eac6ce05c16d285125b46f17fc9b5c3b0a833bd21667231215949c6ff771ba512eb8f87f138ac6679852997c3eaec1d349561d20@120.25.162.110:30301" --bootnodesv5 "enode://ad6aff917c6e8bd40cb20af4eac6ce05c16d285125b46f17fc9b5c3b0a833bd21667231215949c6ff771ba512eb8f87f138ac6679852997c3eaec1d349561d20@120.25.162.110:30301" --debug --rpcapi "db,eth,net,web3,personal,admin,miner,txpool" --datadir /root/ethdev --networkid 8765639736937780 --wsapi "db,eth,net,web3,personal,admin,miner,txpool" --ws --wsaddr "0.0.0.0" --rpc --rpcaddr "0.0.0.0" --cache=512 --verbosity 3 console
|
//enode為上面運行bootnode得到的節點,并將預備的私鑰文件放入keystore中,并且—networkid 8765639736937780為聯盟鏈的標識ID。
查看控制臺日志:docker logs -f gethDev1
Ok,節點搭建成功。
3.4 驗證聯盟鏈的連接
在上一步搭建好節點后,等待一段時間,讓節點自動連接根節點bootnode。
進入以太坊容器中:
1
|
#docker attach gethDev1
|
輸入命令:admin
查看peer是否連接:
OK,連接完成,聯盟鏈搭建完成。
連接完成后,開始同步區塊:
注意:這里連接的是之前已經加入bootnode根節點的其他節點,與根節點的連接并不會顯示在peers中。如果是第一個連接bootnode的節點,連接了bootnode的時候輸入admin,peers是空的,需要繼續搭建一個節點來測試他們互相連接。
總結
以上是生活随笔為你收集整理的搭建联盟链的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。