Hyperledger Fabric簡介
Hyperledger項目是Linux基金會發(fā)起的一個聯(lián)盟區(qū)塊鏈的項目沧踏,吸引了眾多大佬級的公司進駐開發(fā)。Hyperledger這個組項目下包含了相當(dāng)多的子項目瘫怜,每個子項目由一兩家商業(yè)公司為主導(dǎo)俯在,為Hyperledger提供不同的功能和支持塘辅。
本文我們將介紹Hyperledger組項目下的Fabric子項目的開發(fā)環(huán)境搭建情龄,基于最新的1.1版本。這個子項目可以說是Hyperledger項目的核心項目癣丧,是區(qū)塊鏈的實現(xiàn)框架槽畔,提供chaincode(鏈碼,對標(biāo)以太坊項目中的智能合約)的編程接口胁编,可以說是整個Hyperledger的重中之重厢钧。目前該項目由IBM公司主導(dǎo)開發(fā)鳞尔。
在Linux下搭建開發(fā)環(huán)境
Linux系統(tǒng)對于Fabric的開發(fā)還是比較友好的,其中docker在Linux下更是原生支持坏快。本文我們使用的Linux發(fā)行版為Ubuntu 16.04
(或基于Ubuntu 16.04的發(fā)行版均可铅檩,如Linux mint 18.3
),搭建Fabric 1.1
開發(fā)環(huán)境莽鸿。本文主要參考官方文檔昧旨,并且對官方文檔中內(nèi)容進行少許補充與變通,以便在國內(nèi)特色環(huán)境下可以順利的搭建開發(fā)環(huán)境祥得。
安裝依賴
Docker
如果有舊版本的docker的話兔沃,需要先卸載:
sudo apt purge docker docker-engine docker.io
然后安裝依賴:
sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common
添加docker鏡像倉庫(清華大學(xué)):
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
echo "deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker-ce.list
安裝docker-ce軟件包:
sudo apt update && sudo apt install -y docker-ce
修改docker hub的鏡像,編輯/etc/docker/daemon.json
文件级及,沒有就創(chuàng)建一個乒疏,需要管理員提權(quán),寫入以下內(nèi)容:
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
重啟docker服務(wù)生效: sudo service docker restart
饮焦,這樣docker就可以從國內(nèi)鏡像站進行pull操作怕吴,大大提高了pull image的速度。
GO
下載GO:
wget https://dl.google.com/go/go1.10.2.linux-amd64.tar.gz
Golang官網(wǎng)無法訪問也可以從鏡像站獲取其他版本的go
解壓縮并將go移動到/usr/local/go
:
tar xvf go1.10.2.linux-amd64.tar.gz
sudo mv go /usr/local
sudo ln -s /usr/local/go/bin /usr/local/bin
這樣go就安裝完畢了县踢。默認情況下GOPATH
為/usr/local/go
转绷,GOROOT
為~/go
,如果不需要修改的話可以不設(shè)置這兩個環(huán)境變量硼啤。
安裝Fabirc可執(zhí)行程序與Docker image
這一步比較簡單议经,之前依賴安裝完畢之后,只需要執(zhí)行以下命令即可:
curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap.sh | bash -s 1.1.0
整個過程比較長的時間谴返,由于Fabric的二進制包在國內(nèi)速度并不快煞肾,而且docker鏡像容量也很大,整個時間會很久嗓袱。并且這個腳本并未做冪等處理籍救,一旦中途中斷可能不能重試,可能需要清理臨時文件重新運行渠抹。所以輕易不要中斷腳本執(zhí)行蝙昙,耐心等待即可。
腳本最后輸出類似于下面的內(nèi)容表示安裝開發(fā)環(huán)境完畢:
===> List out hyperledger docker images
hyperledger/fabric-ca latest 72617b4fa9b4 8 weeks ago 299MB
hyperledger/fabric-ca x86_64-1.1.0 72617b4fa9b4 8 weeks ago 299MB
hyperledger/fabric-tools latest b7bfddf508bc 8 weeks ago 1.46GB
hyperledger/fabric-tools x86_64-1.1.0 b7bfddf508bc 8 weeks ago 1.46GB
hyperledger/fabric-orderer latest ce0c810df36a 8 weeks ago 180MB
hyperledger/fabric-orderer x86_64-1.1.0 ce0c810df36a 8 weeks ago 180MB
hyperledger/fabric-peer latest b023f9be0771 8 weeks ago 187MB
hyperledger/fabric-peer x86_64-1.1.0 b023f9be0771 8 weeks ago 187MB
hyperledger/fabric-javaenv latest 82098abb1a17 8 weeks ago 1.52GB
hyperledger/fabric-javaenv x86_64-1.1.0 82098abb1a17 8 weeks ago 1.52GB
hyperledger/fabric-ccenv latest c8b4909d8d46 8 weeks ago 1.39GB
hyperledger/fabric-ccenv x86_64-1.1.0 c8b4909d8d46 8 weeks ago 1.39GB
hyperledger/fabric-zookeeper latest 92cbb952b6f8 2 months ago 1.39GB
hyperledger/fabric-zookeeper x86_64-0.4.6 92cbb952b6f8 2 months ago 1.39GB
hyperledger/fabric-kafka latest 554c591b86a8 2 months ago 1.4GB
hyperledger/fabric-kafka x86_64-0.4.6 554c591b86a8 2 months ago 1.4GB
hyperledger/fabric-couchdb latest 7e73c828fc5b 2 months ago 1.56GB
hyperledger/fabric-couchdb x86_64-0.4.6 7e73c828fc5b 2 months ago 1.56GB
同時逼肯,這個腳本會在當(dāng)前目錄下克隆一個fabric-samples/
項目,在fabric-samples/bin/
目錄下會存放下載好的fabric二進制工具包桃煎,將fabric-samples/bin/
目錄加入環(huán)境變量篮幢,即可直接運行節(jié)點程序。
export PATH=${PATH}:/path/to/fabric-samples/bin/
運行Sample
cd fabric-samples/first-network
進入first-network
目錄为迈,此目錄有個./byfn.sh
腳本三椿,負責(zé)快速產(chǎn)生一個區(qū)塊鏈網(wǎng)絡(luò)缺菌,直接使用這個腳本產(chǎn)生網(wǎng)絡(luò)配置,運行docker容器即可:
./byfn.sh -m generate
快速產(chǎn)生網(wǎng)絡(luò)節(jié)點配置項搜锰,如生成證書等等伴郁,產(chǎn)生一個創(chuàng)世紀塊蛋叼,產(chǎn)生一個名為mychannel
的Channel焊傅。
使用以下命令啟動網(wǎng)絡(luò):
./byfn.sh up
這個命令會在docker環(huán)境中啟動Fabric網(wǎng)絡(luò),并且運行chaincode測試(Golang的chaincode)狈涮,運行完畢后退出容器狐胎。
運行測成功之后,可以使用以下命令關(guān)閉Fabric網(wǎng)絡(luò)歌馍,并且清除所有的容器和數(shù)據(jù)卷:
./byfn.sh down
至此整個Fabric開發(fā)環(huán)境就已經(jīng)搭建完畢了握巢,我們可以利用它的API編碼代碼,部署在Docker環(huán)境中進行測試松却。后續(xù)將進一步介紹Fabric網(wǎng)絡(luò)的工作原理暴浦,以及如何開發(fā)Chaincode,如何部署Chaincode晓锻。