【學(xué)習(xí)筆記】基于Ubuntu構(gòu)建Hyperledger Fabric網(wǎng)絡(luò)

前言

本人參考連接搭建Fabric網(wǎng)絡(luò)越妈,遇到了一些坑檩赢,故此有了本篇文章闪盔。

準(zhǔn)備好機(jī)器環(huán)境

我的系統(tǒng)版本:Ubuntu 18.04.1 LTS

安裝GO語(yǔ)言環(huán)境

$ cd ~
$ mkdir go

對(duì)于新手來(lái)說(shuō),不推薦使用apt的方式安裝GO障斋。

$ wget https://dl.google.com/go/go1.10.2.linux-amd64.tar.gz  
$ sudo tar -C usr/local -xzf go1.10.2.linux-amd64.tar.gz  
$ vim ~/.profile  

添加如下內(nèi)容:

export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/go/bin

:wq保存后使用如下命令將立即刷新

$ source ~/.profile
$ go version
go version go1.10 linux/amd64

安裝Docker

這里使用的Docker官方文檔來(lái)安裝docker

  • 如果系統(tǒng)中有舊版本的Docker,需要先使用如下命令卸載
  • 更新apt包索引
  • 安裝軟件包以允許apt通過(guò)HTTPS使用遠(yuǎn)程庫(kù)
  • 添加Docker的官方GPG密鑰
  • 通過(guò)搜索指紋的最后8個(gè)字符薪捍,確認(rèn)您現(xiàn)在擁有指紋識(shí)別碼9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
  • 置穩(wěn)定版本的遠(yuǎn)程庫(kù)
  • 再次更新apt包索引
  • 使用apt安裝docker-ce
$ sudo apt-get remove docker docker-engine docker.io
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL [https://download.docker.com/linux/ubuntu/gpg](https://download.docker.com/linux/ubuntu/gpg) | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]
$ sudo add-apt-repository  "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce

  • 查看docker版本,測(cè)試環(huán)境配置是否成功
$ docker version
Client:
 Version:           18.06.1-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        e68fc7a
 Built:             Tue Aug 21 17:24:56 2018
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.06.1-ce
  API version:      1.38 (minimum version 1.12)
  Go version:       go1.10.3
  Git commit:       e68fc7a
  Built:            Tue Aug 21 17:23:21 2018
  OS/Arch:          linux/amd64
  Experimental:     false
  • 安裝完成之后,需要將當(dāng)前用戶添加到docker用戶組酪穿,然后為該用戶添加sudo權(quán)限,
  • 若沒(méi)有創(chuàng)建docker用戶組晴裹,可以使用如下命令創(chuàng)建一個(gè)GID999被济,組名為docker的用戶組
  • 將當(dāng)前用戶(ubuntu)添加到docker用戶組并分配sudo權(quán)限
$ sudo groupadd –g 999 docker
$ sudo usermod -aG docker ubuntu

安裝Docker-Compose

  • Docker-Compose是支持通過(guò)模板腳本批量創(chuàng)建的一個(gè)組件
  • 在安裝 Docker-Compose之前,需要安裝python-pip
  • 下載 Docker-Compose涧团,這里使用的是國(guó)內(nèi)的DaoClound加速器進(jìn)行下載
  • Docker-Compose文件夾移動(dòng)到/usr/local/bin目錄下
  • Docker-Compose附上可執(zhí)行權(quán)限
$ sudo apt-get python-pip
$ curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
$ sudo mv ~/docker-compose /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose

下載Fabric源碼

  • 先在GOPATH下創(chuàng)建對(duì)應(yīng)的目錄
  • 切換到對(duì)應(yīng)目錄
  • 使用Git命令將fabric的源碼從github上克隆下來(lái)
  • 由于Fabric一直在更新只磷,而我們并不需要使用最新的源碼,所有將版本切換到v1.0.0
$ mkdir -p ~/go/src/github.com/hyperledger
$ cd ~/go/src/github.com/hyperledger
$ git clone [https://github.com/hyperledger/fabric.git](https://github.com/hyperledger/fabric.git)
$ cd ~/go/src/github.com/hyperledger/fabric
$ git checkout -b v1.0.0

下載Fabric Docker鏡像

由于剛才設(shè)置了Docker Hub鏡像的地址泌绣,并且官方文件中也提供了批量下載的腳本钮追,所有我們只需運(yùn)行下面命令即可

$ cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/
$ source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0

由于剛才設(shè)置的是國(guó)內(nèi)的鏡像站,在本地網(wǎng)速還不錯(cuò)的情況下下載數(shù)度還是很快的阿迈。當(dāng)下載完成后元媚,使用如下命令檢查鏡像列表

$ docker images
REPOSITORY                              TAG                IMAGE ID            CREATED            SIZE
dev-peer0.org1.example.com-marbles-v4  latest              089d43e100c9        5 hours ago        173MB
dev-peer0.org1.example.com-fabcar-1.0  latest              6047921ee993        7 hours ago        173MB
hyperledger/fabric-tools                latest              0403fd1c72c7        10 months ago      1.32GB
hyperledger/fabric-tools                x86_64-1.0.0        0403fd1c72c7        10 months ago      1.32GB
hyperledger/fabric-couchdb              latest              2fbdbf3ab945        10 months ago      1.48GB
hyperledger/fabric-couchdb              x86_64-1.0.0        2fbdbf3ab945        10 months ago      1.48GB
hyperledger/fabric-kafka                latest              dbd3f94de4b5        10 months ago      1.3GB
hyperledger/fabric-kafka                x86_64-1.0.0        dbd3f94de4b5        10 months ago      1.3GB
hyperledger/fabric-zookeeper            latest              e545dbf1c6af        10 months ago      1.31GB
hyperledger/fabric-zookeeper            x86_64-1.0.0        e545dbf1c6af        10 months ago      1.31GB
hyperledger/fabric-orderer              latest              e317ca5638ba        10 months ago      179MB
hyperledger/fabric-orderer              x86_64-1.0.0        e317ca5638ba        10 months ago      179MB
hyperledger/fabric-peer                latest              6830dcd7b9b5        10 months ago      182MB
hyperledger/fabric-peer                x86_64-1.0.0        6830dcd7b9b5        10 months ago      182MB
hyperledger/fabric-javaenv              latest              8948126f0935        10 months ago      1.42GB
hyperledger/fabric-javaenv              x86_64-1.0.0        8948126f0935        10 months ago      1.42GB
hyperledger/fabric-ccenv                latest              7182c260a5ca        10 months ago      1.29GB
hyperledger/fabric-ccenv                x86_64-1.0.0        7182c260a5ca        10 months ago      1.29GB
hyperledger/fabric-ca                  latest              a15c59ecda5b        10 months ago      238MB
hyperledger/fabric-ca                  x86_64-1.0.0        a15c59ecda5b        10 months ago      238MB
hyperledger/fabric-baseos              x86_64-0.3.1        4b0cab202084        12 months ago      157MB

出現(xiàn)以上結(jié)果說(shuō)明鏡像已經(jīng)下載成功

啟動(dòng)Fabric網(wǎng)絡(luò)并運(yùn)行e2e_cli項(xiàng)目

  • 進(jìn)入e2e_cli目錄,并執(zhí)行啟動(dòng)命令
$ cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/
$ ./network_setup.sh up

這個(gè)過(guò)程做了如下操作:

  • 編譯生成Fabric公私鑰苗沧,證書(shū)的程序刊棕,程序在目錄:fabric/release/linux-amd64/bin下
  • 基于configtx.yaml生成創(chuàng)世區(qū)塊和通道相關(guān)信息,并保存到channel-artifacts文件夾中
  • 基于crypto-config.yaml生成公私鑰和證書(shū)信息待逞,并保存在crypto-config文件夾中
  • 基于docker-compose-cli.yaml啟動(dòng)1 Orderer + 4 Peer + 1 CLI的Fabric容器
  • 在CLI啟動(dòng)的時(shí)候甥角,會(huì)運(yùn)行srcipt/script.sh文件,這個(gè)腳本文件包含了創(chuàng)建Channel,加入Channel识樱,安裝Example02,運(yùn)行Example02等功能

最后運(yùn)行完成嗤无,我們會(huì)看到如下截圖,說(shuō)明網(wǎng)絡(luò)啟動(dòng)成功了
mark

HYPERLEDGER FABRIC網(wǎng)絡(luò)搭建之network e2ecli_default not found
原因是:e2e_cli目錄是固定的怜庸,啟動(dòng)后會(huì)創(chuàng)建一個(gè)docker network以此為名字当犯,這里是e2e_cli。如果修改該目錄休雌,要修改/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli/base目錄下的peer-base.yaml將網(wǎng)絡(luò)名改成如下名稱即可- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=e2e_cli_default

手動(dòng)測(cè)試一下Fabric網(wǎng)絡(luò)

我們以安裝好的Example02進(jìn)行測(cè)試,在官方例子中灶壶,channel的名字是mychannel,鏈碼的名字是mycc,我們首先重新打開(kāi)一個(gè)命令行,然后進(jìn)入CLI杈曲,

  • 輸入以下命令即可
  • 運(yùn)行命令查詢a賬戶的余額驰凛,可以看到a賬戶的余額現(xiàn)在是90
  • 運(yùn)行命令查詢b賬戶的余額,可以看到b賬戶的余額現(xiàn)在是210
  • 現(xiàn)在將b賬戶的余額轉(zhuǎn)100給a賬戶
  • 再次查詢a賬戶的余額担扑,可以看到a賬戶的余額現(xiàn)在是190,比之前多了100
  • 再次查詢b賬戶的余額恰响,可以看到b賬戶的余額現(xiàn)在是110,比之前少了100

root@60dc5766fa4d:/opt/gopath/src/github.com/hyperledger/fabric/peer# 簡(jiǎn)寫(xiě)為 root***peer#

$ docker exec -it cli bash
root***peer# peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
root***peer# peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'
root***peer# peer chaincode invoke -o orderer.example.com:7050  --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem  -C mychannel -n mycc -c '{"Args":["invoke","b","a","100"]}'
root***peer# peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
root***peer# peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'

查詢結(jié)果如下圖所示
mark

查詢結(jié)果如下圖所示
mark

執(zhí)行結(jié)果如下圖所示
mark

查詢結(jié)果如下圖所示
mark

查詢結(jié)果如下圖所示
mark

關(guān)閉區(qū)塊鏈網(wǎng)絡(luò)

  • 退出CLI容器
  • 關(guān)閉Fabric網(wǎng)絡(luò)
root@60dc5766fa4d:/opt/gopath/src/github.com/hyperledger/fabric/peer#  exit
$ cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli
$ ./network_setup.sh down

最后出現(xiàn)如下圖說(shuō)明關(guān)閉區(qū)塊鏈網(wǎng)絡(luò)成功
mark
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市涌献,隨后出現(xiàn)的幾起案子胚宦,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件枢劝,死亡現(xiàn)場(chǎng)離奇詭異井联,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)您旁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)烙常,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人鹤盒,你說(shuō)我怎么就攤上這事蚕脏。” “怎么了侦锯?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵驼鞭,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我尺碰,道長(zhǎng)挣棕,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任葱蝗,我火速辦了婚禮穴张,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘两曼。我一直安慰自己皂甘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布悼凑。 她就那樣靜靜地躺著偿枕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪户辫。 梳的紋絲不亂的頭發(fā)上渐夸,一...
    開(kāi)封第一講書(shū)人閱讀 52,696評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音渔欢,去河邊找鬼墓塌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛奥额,可吹牛的內(nèi)容都是我干的苫幢。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼垫挨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼韩肝!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起九榔,我...
    開(kāi)封第一講書(shū)人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤哀峻,失蹤者是張志新(化名)和其女友劉穎涡相,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體剩蟀,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡催蝗,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了育特。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片生逸。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖且预,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情烙无,我是刑警寧澤锋谐,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站截酷,受9級(jí)特大地震影響涮拗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜迂苛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一三热、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧三幻,春花似錦就漾、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至朗徊,卻和暖如春首妖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背爷恳。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工有缆, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人温亲。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓棚壁,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親铸豁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子灌曙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容