【fabric聯(lián)盟鏈學(xué)習(xí)筆記】Mac下安裝和運(yùn)行hyperledger fabric1.4

一、前言

之前在ubuntu18.04下安裝和運(yùn)行了fabric利诺,但是是在臺(tái)式機(jī)上,現(xiàn)在就想在自己的mac筆記本上安裝一個(gè)fabric環(huán)境剩燥。網(wǎng)上的參考慢逾,目前都是基于fabric1.0或1.1版本的,跟1.4版本的操作還是有些不同躏吊,現(xiàn)在記錄一下這中間的操作步驟氛改,和遇到的問(wèn)題帐萎。

參考文章:

1.Fabric篇——Mac下Hyperledger Fabric(超級(jí)賬本)環(huán)境搭建
2.Ubuntu 快速搭建HyperLedger Fabric 1.4.0

二比伏、前置環(huán)境安裝

go環(huán)境安裝和docker、docker-compose環(huán)境的安裝疆导,網(wǎng)上的教程挺多的赁项,下面簡(jiǎn)單描述這一部分,可以再單獨(dú)再網(wǎng)上搜索相關(guān)的安裝澈段。

1.安裝Go并配置環(huán)境變量

Mac可以直接通過(guò)Homebrew安裝go環(huán)境:
brew install go

或者前往官網(wǎng)下載安裝包

安裝完畢后在命令行輸入go version檢查是否安裝成功:

? go version
go version go1.11.2 darwin/amd64

然后開(kāi)始配置環(huán)境變量:

1). 先新建一個(gè)Go的工作空間文件夾(路徑按照自己的目錄創(chuàng)建):

? cd /Users/wuqiqi/Documents/workspace
? mkdir Go

2). 進(jìn)入Go目錄悠菜,創(chuàng)建三個(gè)文件夾bin,src败富,pkg

? cd /Users/wuqiqi/Documents/workspace/Go
? mkdir bin src pkg

3). 修改環(huán)境變量
編輯.bash_profile文件悔醋,如果沒(méi)有請(qǐng)新建。

? vi ~/.bash_profile

在文件末尾加上:

#GOPATH
export GOPATH=/Users/wuqiqi/Documents/workspace/Go

#GOBIN
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN

編輯之后保存兽叮,然后執(zhí)行source命令芬骄,使之生效:

source ~/.bash_profile

4). 通過(guò)go env檢查:

? go env
GOARCH="amd64"
GOBIN="/Users/wuqiqi/Documents/workspace/Go/bin"
GOCACHE="/Users/wuqiqi/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/wuqiqi/Documents/workspace/Go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"

2. 安裝Docker

在官網(wǎng)下載Docker CE for Mac完成后安裝。

安裝后可以在命令行中檢查dockerdocker-compose的版本:

? docker --version
Docker version 18.09.2, build 6247962
? docker-compose --version
docker-compose version 1.23.2, build 1110ad01

三鹦聪、下載Hyperledger Fabric項(xiàng)目源代碼

  1. 進(jìn)入Go的工作空間, 為fabric創(chuàng)建項(xiàng)目路徑:
? cd $GOPATH
? mkdir -p src/github.com/hyperledger
? cd src/github.com/hyperledger
? pwd
/Users/wuqiqi/Documents/workspace/Go/src/github.com/hyperledger
  1. 從git上拉取Hyperledger Fabric:
? git clone https://github.com/hyperledger/fabric.git
? ls
fabric
  1. 進(jìn)入項(xiàng)目文件夾账阻,查看tag:
? cd fabric
? git tag 
...
v1.0.6
v1.1.0
v1.1.0-alpha
v1.1.0-preview
v1.1.0-rc1
v1.1.1
v1.2.0
v1.2.0-rc1
v1.2.1
v1.3.0
v1.3.0-rc1
v1.4.0
v1.4.0-rc1
v1.4.0-rc2
v1.4.1
v1.4.1-rc1
v2.0.0-alpha

fabric1.4版本的鏈碼chaincode是支持java語(yǔ)言去編寫(xiě)的,對(duì)于常用java的開(kāi)發(fā)者泽本,上手更快淘太。所以我們切換到1.4版本去部署啟動(dòng)。

? git checkout v1.4.0
? git branch
  release-1.4
* (頭指針?lè)蛛x于 v1.4.0)

四、執(zhí)行腳本獲取fabric鏡像文件

  1. 進(jìn)入fabric目錄的scripts路徑蒲牧,執(zhí)行./bootstrap.sh撇贺,下載docker鏡像
? cd scripts/
? ./bootstrap.sh

鏡像拉取花費(fèi)的時(shí)間比較長(zhǎng),需要等一等造成。

這一步其實(shí)我執(zhí)行了很多遍才成功显熏,每次都是下載的時(shí)候出問(wèn)題。鏡像源換了也沒(méi)有效果晒屎。后來(lái)嘗試執(zhí)行了一次docker run hello-world喘蟆,然后docker ps -a查詢了一下這個(gè)容器的CONTAINER ID722f9a1dc429,再終止它docker stop 722f9a1dc429鼓鲁。之后再執(zhí)行./bootstrap.sh的時(shí)候就正常了蕴轨,不知道有沒(méi)有關(guān)系。

五骇吭、啟動(dòng)和測(cè)試fabric

  1. 啟動(dòng)fabric
    鏡像下載完成之后橙弱,我們所在的scripts目錄下,會(huì)多出一個(gè)fabric-samples文件夾燥狰,進(jìn)入這個(gè)目錄下的first-network棘脐,準(zhǔn)備啟動(dòng)fabric。
? cd fabric-samples/first-network/
? ./byfn.sh -m generate -c mychannel
? ./byfn.sh -m up -c mychannel

看到開(kāi)始的start和最后的end龙致,就是啟動(dòng)成功了蛀缝。

注意:如果執(zhí)行過(guò)了./byfn.sh -m up但是并沒(méi)有成功啟動(dòng),再次執(zhí)行./byfn.sh -m up前目代,需要先執(zhí)行./byfn.sh -m down屈梁,然后再執(zhí)行啟動(dòng),可以參考本文第六部分的內(nèi)容榛了。

image.png
image.png
  1. 通過(guò)cli命令窗口測(cè)試一下fabric
    查詢a,b余額在讶,a往b轉(zhuǎn)100,再查詢a余額

1). 命令行中打開(kāi)cli

docker exec -it cli bash

2). 查詢a霜大,b的余額

? peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
90
? peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'
210

查詢到a构哺,b的余額分別為90,210

3). a給b轉(zhuǎn)賬10

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 --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["invoke","a","b","10"]}'

4). 再查詢一次a战坤,b的余額

? peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
80
? peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'
220

5). 退出cli命令臺(tái)

? exit

六曙强、關(guān)閉和重啟網(wǎng)絡(luò)

當(dāng)我們想要關(guān)閉網(wǎng)絡(luò)或者更新了chaincode之后,想要重啟網(wǎng)絡(luò)湖笨,都需要先把docker的容器服務(wù)先關(guān)閉旗扑,清理一下,然后再啟動(dòng)慈省。

# 清理.關(guān)閉網(wǎng)絡(luò)
? ./byfn.sh -m down

# 查看容器關(guān)閉或啟動(dòng)情況
? docker ps -a

# 生成相關(guān)文件
? ./byfn.sh -m generate

# 啟動(dòng)fabric網(wǎng)絡(luò)(mychannel是默認(rèn)的channel名字臀防,啟動(dòng)時(shí)可以不指定)
? ./byfn.sh -m up

七眠菇、結(jié)語(yǔ)

完成以上操作,就成功的將fabric鏡像中的first-network網(wǎng)絡(luò)中的整個(gè)節(jié)點(diǎn)組織啟動(dòng)起來(lái)了袱衷。后面會(huì)再寫(xiě)個(gè)文章捎废,記錄一下,通過(guò)IDEA創(chuàng)建的java項(xiàng)目致燥,跟fabric網(wǎng)絡(luò)交互起來(lái)登疗,能夠?qū)崿F(xiàn)基礎(chǔ)的鏈碼調(diào)用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嫌蚤,一起剝皮案震驚了整個(gè)濱河市辐益,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌脱吱,老刑警劉巖智政,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異箱蝠,居然都是意外死亡续捂,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門宦搬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)牙瓢,“玉大人,你說(shuō)我怎么就攤上這事间校》耍” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵撇簿,是天一觀的道長(zhǎng)聂渊。 經(jīng)常有香客問(wèn)我差购,道長(zhǎng)四瘫,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任欲逃,我火速辦了婚禮找蜜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘稳析。我一直安慰自己洗做,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布彰居。 她就那樣靜靜地躺著诚纸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪陈惰。 梳的紋絲不亂的頭發(fā)上畦徘,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼井辆。 笑死关筒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的杯缺。 我是一名探鬼主播蒸播,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼萍肆!你這毒婦竟也來(lái)了袍榆?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤塘揣,失蹤者是張志新(化名)和其女友劉穎蜡塌,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體勿负,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡馏艾,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奴愉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琅摩。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖锭硼,靈堂內(nèi)的尸體忽然破棺而出房资,到底是詐尸還是另有隱情,我是刑警寧澤檀头,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布轰异,位于F島的核電站,受9級(jí)特大地震影響暑始,放射性物質(zhì)發(fā)生泄漏搭独。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一廊镜、第九天 我趴在偏房一處隱蔽的房頂上張望牙肝。 院中可真熱鬧,春花似錦嗤朴、人聲如沸配椭。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)股缸。三九已至,卻和暖如春吱雏,著一層夾襖步出監(jiān)牢的瞬間敦姻,已是汗流浹背寺酪。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留替劈,地道東北人寄雀。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像陨献,于是被迫代替她去往敵國(guó)和親盒犹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359