Hyperledger Fabric開發(fā)環(huán)境搭建

快速入門: http://hyperledger-fabric.readthedocs.io/en/release-1.1/getting_started.html

前提

安裝git

$ sudo apt update
$ sudo apt install git

安裝curl

$ sudo apt install curl

安裝vim (可選)

$ sudo apt install vim

安裝Docker

在命令行中輸入
docker --version
如果已經(jīng)安裝,會(huì)顯示初版本號(hào),如果沒有安裝,會(huì)給我們提示安裝命令
sudo apt install docker.io
安裝完成后 再執(zhí)行docker-verison,顯示出版本號(hào),就算安裝完成了.

$ sudo apt update
$ docker --version
$ sudo apt install docker.io

查看Docker版本信息

version 1.12+

$ docker --version

輸出: Docker version 1.13.1, build 092cba3

安裝Docker Compose

實(shí)現(xiàn)了對(duì)docker的自動(dòng)化操作
簡(jiǎn)化了docker容器的操作命令.一條命令即可啟動(dòng)docker容器.相關(guān)的操作命令是被集成在一個(gè)配置文件中.

$ docker-compose --version
$ sudo apt install docker-compose

查看DockerCompose版本信息

$ docker-compose --version

輸出: docker-compose version 1.8.0, build unknown

Golang

Fabric1.1.0版本要求Go1.9+

Fabric1.0.0版本要求Go1.7+

上傳go1.10.1.linux-amd64.tar.gz

解壓文件

$ tar -zxvf go1.10.1.linux-amd64.tar.gz

編輯環(huán)境變量文件

$ vim .bashrc 

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

export GOPATH=$HOME/gocode
export GOROOT=$HOME/go
export PATH=$GOROOT/bin:$PATH
$ source .bashrc
$ go version

輸出: go version go1.10.1 linux/amd64

如果系統(tǒng)中有舊版本的golang,則使用如下命令卸載舊版本的golang,然后再重新安裝

# sudo apt-get remove golang-go --purge && apt-get autoremove --purge && apt-get clean

安裝Node與npm

安裝nvm

$ sudo apt update
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.10/install.sh | bash

$ export NVM_DIR="$HOME/.nvm"
$ [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" 

安裝Node

$ nvm install v8.11.1

檢查Node版本

$ node -v

輸出: v8.11.1

檢查npm版本

$ npm -v

輸出: 5.6.0

Hyperledger Fabric Samples 下載安裝

創(chuàng)建一個(gè)空目錄

$ mkdir hyfa

進(jìn)入該目錄

$ cd hyfa
下載方式一:

新建文件bootstrap.sh

$ vim bootstrap.sh

https://github.com/hyperledger/fabric/blob/master/scripts/bootstrap.sh中的內(nèi)容拷貝到bootstrap.sh,然后保存退出

賦予bootstrap.sh可執(zhí)行權(quán)限并運(yùn)行

$ chmod +x bootstrap.sh

配置docker加速器

配置docker加速器的目的是為了在下載docker鏡像文件時(shí)加速

$ curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://8890cb8b.m.daocloud.io

重啟docker服務(wù)

$ sudo systemctl restart docker.service

執(zhí)行bootstrap.sh

確定網(wǎng)絡(luò)穩(wěn)定,否則會(huì)導(dǎo)致各種問題叙量,例如下載到一半時(shí)網(wǎng)絡(luò)超時(shí)熙揍,下載失敗等等

$ sudo ./bootstrap.sh 1.1.0

下載完成后, 查看相關(guān)輸出內(nèi)容, 如果下載有失敗的鏡像, 可再次執(zhí)行 $ sudo ./bootstrap.sh 1.1.0 命令

下載方式二:

**建議使用方式一進(jìn)行下載 **

配置docker加速器,

$ curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://8890cb8b.m.daocloud.io

重啟docker服務(wù)

$ sudo systemctl restart docker.service
$ curl  https://github.com/hyperledger/fabric/blob/master/scripts/bootstrap.sh | bash -s 1.1.0

安裝完成后輸出:

hyperledger/fabric-ca          latest          72617b4fa9b4   5 weeks ago    299 MB
hyperledger/fabric-ca          x86_64-1.1.0    72617b4fa9b4   5 weeks ago    299 MB
hyperledger/fabric-tools       latest          b7bfddf508bc   5 weeks ago    1.46 GB
hyperledger/fabric-tools       x86_64-1.1.0    b7bfddf508bc   5 weeks ago    1.46 GB
hyperledger/fabric-orderer     latest          ce0c810df36a   5 weeks ago    180 MB
hyperledger/fabric-orderer     x86_64-1.1.0    ce0c810df36a   5 weeks ago    180 MB
hyperledger/fabric-peer        latest          b023f9be0771   5 weeks ago    187 MB
hyperledger/fabric-peer        x86_64-1.1.0    b023f9be0771   5 weeks ago    187 MB
hyperledger/fabric-javaenv     latest          82098abb1a17   5 weeks ago    1.52 GB
hyperledger/fabric-javaenv     x86_64-1.1.0    82098abb1a17   5 weeks ago    1.52 GB
hyperledger/fabric-ccenv       latest          c8b4909d8d46   5 weeks ago    1.39 GB
hyperledger/fabric-ccenv       x86_64-1.1.0    c8b4909d8d46   5 weeks ago    1.39 GB
hyperledger/fabric-zookeeper   latest          92cbb952b6f8   2 months ago   1.39 GB
hyperledger/fabric-zookeeper   x86_64-0.4.6    92cbb952b6f8   2 months ago   1.39 GB
hyperledger/fabric-kafka       latest          554c591b86a8   2 months ago   1.4 GB
hyperledger/fabric-kafka       x86_64-0.4.6    554c591b86a8   2 months ago   1.4 GB
hyperledger/fabric-couchdb     latest          7e73c828fc5b   2 months ago   1.56 GB
hyperledger/fabric-couchdb     x86_64-0.4.6    7e73c828fc5b   2 months ago   1.56 GB

添加環(huán)境變量

$ export PATH=<path to download location>/bin:$PATH

注: <path to download location>表示下載的fabric-samples文件目錄所在路徑

例:  $ export PATH=$HOME/hyfa/fabric-samples/bin:$PATH

HyperLedger Fabric環(huán)境搭建完成


總結(jié)和解釋

Fabric的安裝過程總結(jié):

  1. 在當(dāng)前用戶目錄中創(chuàng)建一個(gè)新的目錄 -- 方便管理Fabric
  2. vim bootstrap.sh -- touch bootstrap.sh
  3. 從指定的網(wǎng)絡(luò)中路徑中將其對(duì)應(yīng)的腳本內(nèi)容拷貝至新建的腳本文件中 https://github.com/hyperledger/fabric/blob/master/scripts/bootstrap.sh
  4. bootstrap.sh添加可執(zhí)行權(quán)限 -- chmod +x bootstrap.sh
  5. 添加docker加速器
  6. 執(zhí)行 bootstrap.sh --> sudo ./bootstrap.sh 1.1.0

鏡像解釋:

如何查看自己本地的鏡像呢埂陆?
終端中執(zhí)行一下命令即可
sudo docker iamges
docker images 解釋:

    ca:
        證書頒發(fā)機(jī)構(gòu)
    peer
        包含了Peer相關(guān)的文件
            處理交易
            保存區(qū)塊
    orderer
        包含了Orderer相關(guān)的文件
            排序
            生成區(qū)塊
    javaenv
        包含了支持Java語(yǔ)言的鏈碼(智能合約)
    ccenv
        包含支持Go語(yǔ)言的鏈碼環(huán)境
    tools
        包含Peer, cryptogen, configtxgen相關(guān)工具
        支持客戶端測(cè)試
    zookeeper
    kafka
        支持couchdb(一種特定的KV數(shù)據(jù)庫(kù)), 保存數(shù)據(jù)

fabric-samples解釋

我們打開我們之前執(zhí)行的bootstrap.sh文件润讥,會(huì)發(fā)現(xiàn)里面有一個(gè)samplesInstall()方法,就會(huì)在我們執(zhí)行命令的所在目錄(我們上面hyfa)中 git clone 一個(gè)fabric-samples 文件衷畦。
我們先來粗略的解釋一下這個(gè)文件,后面的教程中會(huì)有詳細(xì)的解釋

abric-samples/bin:
    cryptogen: 用來生成組織結(jié)構(gòu)及相應(yīng)的證書密鑰
        在聯(lián)盟鏈中有哪些組織,及對(duì)應(yīng)組織下有哪些節(jié)點(diǎn)
            Orderer
            Org
                Org1
                    peer0.org1.example.com
                    peer1.org1.example.com
                org2
                    peer0.org2.example.com
                    peer0.org2.example.com

            什么組織可以訪問通道中的數(shù)據(jù)依賴于生成的證書及密鑰

    configtxgen:
        1. 用來生成Orderer服務(wù)的初始區(qū)塊(創(chuàng)世區(qū)塊)
        2. 可以生成對(duì)的通道交易配置文件(包含了通道中的成員, 及訪問策略)
        3. 生成Anchor(錨節(jié)點(diǎn)更新配置文件)
            -1. 用來跨組織的數(shù)據(jù)交換
            -2. 發(fā)現(xiàn)通道內(nèi)新加入的組織/節(jié)點(diǎn)

      每個(gè)組織都會(huì)有一個(gè)Anchor
        configtxlator: 用來添加新組織
    
fabric目錄簡(jiǎn)介:

    bin: 相應(yīng)的工具目錄
    chaincode: 鏈碼示例
    chaincode-docker-devmode: 用于在開發(fā)模式下測(cè)試的環(huán)境
    fabcar: 提供的一個(gè)Node.JS的簡(jiǎn)單示例
    fabric-ca: 簡(jiǎn)單的證書
    first-network: 搭建Fabric網(wǎng)絡(luò)的目錄
節(jié)點(diǎn):
    Orderer
    Peer
        背書節(jié)點(diǎn)
        commiter節(jié)點(diǎn)
        
        leader節(jié)點(diǎn): 負(fù)責(zé)與Orderer通信, 接收orderer產(chǎn)生的區(qū)塊, 然后將區(qū)塊同步到同組織中的節(jié)點(diǎn)
        Anchor節(jié)點(diǎn): 負(fù)責(zé)跨組織的數(shù)據(jù)交換
    CA節(jié)點(diǎn)
    客戶端節(jié)點(diǎn)

第一次寫教程茎截,如有考慮不周,望解釋赶盔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末企锌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子于未,更是在濱河造成了極大的恐慌撕攒,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烘浦,死亡現(xiàn)場(chǎng)離奇詭異抖坪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)闷叉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門擦俐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人握侧,你說我怎么就攤上這事蚯瞧。” “怎么了品擎?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵状知,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我孽查,道長(zhǎng)饥悴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任盲再,我火速辦了婚禮西设,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘答朋。我一直安慰自己贷揽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布梦碗。 她就那樣靜靜地躺著禽绪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪洪规。 梳的紋絲不亂的頭發(fā)上印屁,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音斩例,去河邊找鬼雄人。 笑死,一個(gè)胖子當(dāng)著我的面吹牛念赶,可吹牛的內(nèi)容都是我干的础钠。 我是一名探鬼主播恰力,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼旗吁!你這毒婦竟也來了踩萎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤很钓,失蹤者是張志新(化名)和其女友劉穎香府,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體履怯,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡回还,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了叹洲。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柠硕。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖运提,靈堂內(nèi)的尸體忽然破棺而出蝗柔,到底是詐尸還是另有隱情,我是刑警寧澤民泵,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布癣丧,位于F島的核電站,受9級(jí)特大地震影響栈妆,放射性物質(zhì)發(fā)生泄漏胁编。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一鳞尔、第九天 我趴在偏房一處隱蔽的房頂上張望嬉橙。 院中可真熱鬧,春花似錦寥假、人聲如沸市框。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)枫振。三九已至,卻和暖如春萤彩,著一層夾襖步出監(jiān)牢的瞬間粪滤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工乒疏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留额衙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓怕吴,卻偏偏與公主長(zhǎng)得像窍侧,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子转绷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

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