搭建聯盟鏈

 

 

1 安裝前的準備

1.1 配置Linux系統

本文配置的爲windows下的VMware軟件下搭建的Linux下的cent0S-7系統,推薦系統有CentOS 7和Ubuntu 16.04有條件的能夠用雲服務器上的Linux系統,好處是能夠搭建廣域網聯盟鏈。node

本文默認你已經對以太坊和docker技術有必定的掌握和了解,並部署好相應的環境。若是你還未準備好,請參考芯鏈公衆號前期發佈的環境搭建和部署文章。web

1.2 安裝Docker

請使用管理員權限進行安裝,docker

# su rootjson

安裝Docker(請參考芯鏈公衆號發佈的安裝指導文章):windows

CentOS: yum -y install docker-iocentos

Ubuntu: apt-get install docker-engineapi

安裝完畢如圖:服務器

而後啓動Docker服務:tcp

#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 rm -f gethDev1

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是空的,須要繼續搭建一個節點來測試他們互相鏈接。

相關文章
相關標籤/搜索