Ubuntu Server搭建Hyperledger Fabric 2.1學習環(huán)境

最近在學習Hyperledger Fabric袖订,它是由 Linux 基金會發(fā)起創(chuàng)建的開源區(qū)塊鏈分布式賬本裙品。

Hyperledger Fabric是一個開源區(qū)塊鏈實現(xiàn)赋铝,開發(fā)環(huán)境建立在 VirtualBox 虛擬機上孟抗,部署環(huán)境可以自建網(wǎng)絡震叮,也可以直接部署在 BlueMix 上,部署方式可傳統(tǒng)可 Docker 化舅世,共識達成算法插件化旦委,支持用 Go 和 JavaScript 開發(fā)智能合約,尤以企業(yè)級的安全機制和 membership 機制為特色歇终。

今天來聊聊怎么搭建一個基于Ubuntu Server的Hyperledger Fabric吧社证。

01 基本環(huán)境配置

建議用虛擬機裝一個Ubuntu Server版本即可,不要裝圖形界面评凝,那個太卡了。Ubuntu Server版本安裝的時候注意腺律,選擇英文版本的奕短,中文簡體安裝會出錯。

安裝好后記得換源成阿里云的匀钧,這里換的時候由于虛擬機上不支持復制黏貼翎碑,只能手動輸入一下啦:

deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

換源后把下面的軟件裝上:

  • ssh
  • git
  • go
  • node.js
  • docker
  • docker-compose

注意大部分只需要sudo apt-install即可安裝,go之斯、docker這種百度一下就知道怎么裝了日杈,就不展開講了。nodejs記得給升級到最新版本佑刷。

02 fabric環(huán)境搭建

現(xiàn)在網(wǎng)上關于fabric的教程大部分是基于1.4版本的莉擒,今天來演示下搭建2.1版本的Fabric環(huán)境進行學習。

2.1 下載fabric源碼

進入GO的目錄創(chuàng)建hyperledger文件夾:

mkdir -p $GOPATH/src/github.com/hyperledger
 
cd $GOPATH/src/github.com/hyperledger/

然后下載fabric的源碼瘫絮,注意這里用碼云Gitee的鏈接涨冀,GitHub的太慢了得下到明年去:

git clone https://gitee.com/mirrors/fabric.git
image

不知道為啥我這gitee也好慢啊。麦萤。鹿鳖。

將 fabric 切換至 2.1 版本:

cd fabric/
 
git branch -a
 
git checkout release-2.1
image
image

記得加個sudo扁眯,沒有管理員權(quán)限啥都干不了。

2.2 下載fabric-samples源碼翅帜、fabric鏡像

cd scripts/
 
sudo ./bootstrap.sh
image

然后就進入了漫長的等待了姻檀。fabric-samples是從GitHub上下載的,可能會比較慢涝滴。下載完成后會列出所有下載的docker鏡像绣版。

image

2.3 網(wǎng)絡測試

上面的工作完成后,當前目錄多了一個fabric-samples文件夾狭莱,我們進去該目錄下的test-network目錄測試下搭建的環(huán)境是否成功:

cd fabric-samples/

cd test-network/

然后啟動我們的測試網(wǎng)絡:

sudo ./network.sh up

記得加sudo保平安哦僵娃。開始了一堆代碼之后出現(xiàn):

image

說明創(chuàng)建成功了。

03 Fabcar測試

fabcar是一個小demo腋妙,我們這里運行它測試下看看默怨。我們回到fabric-samples目錄下,然后進入/fabcar目錄中骤素,先把網(wǎng)絡給清理一下匙睹,然后啟動:

sudo ./networkDown.sh

sudo ./startFabric.sh
image

可能存在的問題

問題1

當然了你可能會遇到問題,比如找不到go命令等济竹,這是因為sudo命令會重置當前的環(huán)境變量痕檬,導致設置go找不到。

Error: failed to normalize chaincode path: failed to determine module root: exec: "go": executable file not found in $PATH
!!!!!!!!!!!!!!! Chaincode packaging on peer0.org1 has failed !!!!!!!!!!!!!!!!

根據(jù)網(wǎng)上解決sudo環(huán)境變量問題的方法送浊,在自己的shell配置文件中如下設置

vim ~/.bashrc 添加如下

alias sudo='sudo env PATH=$PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH'
image

然后刷新下讓配置生效:

source ~/.bashrc

問題2

安裝golang fabric api依賴包的時候梦谜,長時間無響應,最后報如下錯誤:

go: github.com/hyperledger/fabric-contract-api-go@v1.0.0: Get https://proxy.golang.org/github.com/hyperledger/fabric-contract-api-go/@v/v1.0.0.mod: dial tcp 172.217.27.145:443: i/o timeout ~/fabric-samples/test-network Finished vendoring Go dependencies ++ peer lifecycle chaincode package fabcar.tar.gz --path ../chaincode/fabcar/go/ --lang golang --label fabcar_1 ++ res=1 ++ set +x Error: failed to normalize chaincode path: 'go list' failed with: go: github.com/hyperledger/fabric-contract-api-go@v1.0.0: Get https://proxy.golang.org/github.com/hyperledger/fabric-contract-api-go/@v/v1.0.0.mod: dial tcp 172.217.27.145:443: i/o timeout: exit status 1 !!!!!!!!!!!!!!! Chaincode packaging on peer0.org1 has failed !!!!!!!!!!!!!!!!

ERROR !!! Deploying chaincode failed

解決辦法:

golang1.13.x 可以直接執(zhí)行:

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

finally袭景,終于成功了:

image

04 SDK交互

在上一步執(zhí)行成功后唁桩,會輸出各個語言環(huán)境下的SDK交互實例,比如JavaScript是這樣的:

JavaScript:

  Start by changing into the "javascript" directory:
    cd javascript

  Next, install all required packages:
    npm install

  Then run the following applications to enroll the admin user, and register a new user
  called appUser which will be used by the other applications to interact with the deployed
  FabCar contract:
    node enrollAdmin
    node registerUser

  You can run the invoke application as follows. By default, the invoke application will
  create a new car, but you can update the application to submit other transactions:
    node invoke

  You can run the query application as follows. By default, the query application will
  return all cars, but you can update the application to evaluate other transactions:
    node query

可以選擇javascript耸棒,typescript荒澡,javago語言與網(wǎng)絡交互,這里用javascript試試与殃。進入fabcar中的javascript目錄中单山,這里得切換到root用戶,我也不知道sudo為什么還存在權(quán)限問題幅疼,執(zhí)行:

cd javascript/

su

npm install

安裝相關的依賴米奸。完成后我們按照合約流程依次啟動:

注冊管理員賬號:

sudo node enrollAdmin.js
image

注冊用戶:

sudo node registerUser.js
image

我們接下來,執(zhí)行一筆交易

sudo node invoke.js
image

查詢交易后的狀態(tài):

sudo node query.js
image

完成啦R缕痢u锷!至此狼忱,F(xiàn)abric的環(huán)境已經(jīng)搭建完成膨疏。大家可以在上面愉快的學習了一睁。

參考資料

最新超詳細的 Hyperledger Fabric2.2 環(huán)境搭建 部署

fabric2.1.0 打包chaincode 報錯

go 提示failed to normalize chaincode path

ubuntu16.04下搭建fabric 1.4.3環(huán)境

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市佃却,隨后出現(xiàn)的幾起案子者吁,更是在濱河造成了極大的恐慌,老刑警劉巖饲帅,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件复凳,死亡現(xiàn)場離奇詭異,居然都是意外死亡灶泵,警方通過查閱死者的電腦和手機育八,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赦邻,“玉大人髓棋,你說我怎么就攤上這事』讨蓿” “怎么了按声?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長恬吕。 經(jīng)常有香客問我签则,道長,這世上最難降的妖魔是什么铐料? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任渐裂,我火速辦了婚禮,結(jié)果婚禮上钠惩,老公的妹妹穿的比我還像新娘芯义。我一直安慰自己,他們只是感情好妻柒,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著耘分,像睡著了一般举塔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上求泰,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天央渣,我揣著相機與錄音,去河邊找鬼渴频。 笑死芽丹,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的卜朗。 我是一名探鬼主播拔第,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼咕村,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蚊俺?” 一聲冷哼從身側(cè)響起懈涛,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎泳猬,沒想到半個月后批钠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡得封,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年埋心,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忙上。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡拷呆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出晨横,到底是詐尸還是另有隱情洋腮,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布手形,位于F島的核電站啥供,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏库糠。R本人自食惡果不足惜伙狐,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瞬欧。 院中可真熱鬧贷屎,春花似錦、人聲如沸艘虎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽野建。三九已至属划,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間候生,已是汗流浹背同眯。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留唯鸭,地道東北人须蜗。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親明肮。 傳聞我的和親對象是個殘疾皇子菱农,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345