您好,登錄后才能下訂單哦!
本文使用RHEL 7.3 workstation版本操作系統。
(1)Go語言環境安裝
Go語言環境安裝包下載地址:
https://golang.org/dl/
https://golang.google.cn/dl/
將下載的源碼包解壓至/usr/local目錄sudo tar -C /usr/local -xzf go1.10.1.linux-amd64.tar.gz
將/usr/local/go/bin目錄添加至PATH環境變量export PATH=$PATH:/usr/local/go/bin
(2)GOPATH環境變量設置
GOPATH=/home/user/GoLang:/home/user/dev
export GOPATH
為了使用方便,通常需要將所有工作空間的bin路徑添加到PATH環境變量中,如:export $PATH:$GOPATH/bin
如果$GOPATH有多個工作目錄,使用?${GOPATH//://bin:}/bin?添加所有的bin目錄。export $PATH:${GOPATH//://bin:}/bin
yum install docker
GitHub地址:https://github.com/hyperledger/fabric
(1)go get下載
使用Go語言工具go get從HyperLeger Fabric項目的GitHub地址下載HyperLeger Fabric:go get -u -v github.com/hyperledger/fabric
(2)git clone下載
HyperLeger Fabric項目大小約76MB,如果使用go get工具下載速度慢,可以使用git clone下載:
創建hyperledger目錄:mkdir -p $GOPATH/src/github.com/hyperledger
切換到hyperledger目錄:cd $GOPATH/src/github.com/hyperledger
git clone下載:git clone https://github.com/hyperledger/fabric.git
進入HyperLeger Fabric項目所在源碼目錄:cd $GOPATH/src/github.com/hyperledger/fabric
切換到release-1.0版本:git checkout release-1.0
configtxgen工具用于生成Fabric的配置構件。
切換到configtxgen目錄:cd common/configtx/tool/configtxgen
編譯安裝:go install
報錯:fatal error: ltdl.h: No such file or directory
安裝Itdl:yum install libtool-ltdl-devel
繼續編譯安裝:go install
目標工具被安裝到$GOPATH/bin目錄下。
cryptogen工具用于生成Fabric證書和密鑰。
切換到cryptogen源碼目錄:cd common/tools/cryptogen
編譯安裝:go install
目標工具被安裝到$GOPATH/bin目錄下。
fabric-samples項目包含first-network等HyperLeger Fabric項目的多個示例。
https://github.com/hyperledger/fabric-samples.git
下載fabric-samples項目到$GOPATH/src/github.com/hyperledger:git clone https://github.com/hyperledger/fabric-samples.git
切換到first-network示例:cd $GOPATH/src/github.com/hyperledger/fabric-samples/first-network
切換到release-1.0版本:git checkout release-1.0
first-network源碼目錄如下:
first-network示例即BYFN(build your first network),BYFN方案規定了一個由兩個組織組成的簡單HyperLeger Fabric網絡,每個組織維護有兩個對等節點和一個solo排序服務。
byfn.sh腳本利用Docker鏡像快速引導BYFN(build your first network)示例網絡,BYFN網絡由代表兩個不同組織的4個對等節點和一個排序節點組成。 byfn.sh腳本會啟動容器運行一個腳本,腳本用于將對等節點加入一條通道,部署和實例化鏈碼,并驅動在部署的鏈碼上執行交易。
byfn.sh腳本提供了生成網絡構件的功能,用于生成不同網絡實體的所有證書和密鑰,用于引導排序服務的創始塊以及配置通道所需的交易配置的集合。命令如下:./byfn.sh -m generate -c scorpio -i 1.0.0
byfn.sh -m generate:使用cryptogen和configtxgen生成網絡構件
-c:指定通道名稱
-i:指定版本
[user@localhost first-network]$ ./byfn.sh -m generate -c scorpio -i 1.0.0
Generating certs and genesis block for with channel 'scorpio' and CLI timeout of '10'
Continue (y/n)? y
proceeding ...
/home/user/GoLang/bin/cryptogen
##########################################################
##### Generate certificates using cryptogen tool #########
##########################################################
org1.example.com
org2.example.com
/home/user/GoLang/bin/configtxgen
##########################################################
######### Generating Orderer Genesis block ##############
##########################################################
2018-10-21 15:52:45.442 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-10-21 15:52:45.467 CST [common/configtx/tool] doOutputBlock -> INFO 002 Generating genesis block
2018-10-21 15:52:45.469 CST [common/configtx/tool] doOutputBlock -> INFO 003 Writing genesis block
#################################################################
### Generating channel configuration transaction 'channel.tx' ###
#################################################################
2018-10-21 15:52:45.479 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-10-21 15:52:45.482 CST [common/configtx/tool] doOutputChannelCreateTx -> INFO 002 Generating new channel configtx
2018-10-21 15:52:45.482 CST [common/configtx/tool] doOutputChannelCreateTx -> INFO 003 Writing new channel tx
#################################################################
####### Generating anchor peer update for Org1MSP ##########
#################################################################
2018-10-21 15:52:45.494 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-10-21 15:52:45.497 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2018-10-21 15:52:45.498 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update
#################################################################
####### Generating anchor peer update for Org2MSP ##########
#################################################################
2018-10-21 15:52:45.508 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-10-21 15:52:45.513 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2018-10-21 15:52:45.513 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update
cryptogen用于為各種網絡實體生成加密材料(x509證書和簽名密鑰)。x509證書代表身份/標識,允許在實體進行通信和交易時進行簽名/驗證身份驗證。
cryptogen(fabric證書/密鑰生成工具)使用一個配置文件crypto-config.yaml(包含網絡拓撲)為組織和屬于組織的組件(peer/orderer)生成一組證書和密鑰。每個組織都配置了一個唯一的根證書(ca-cert),用于將特定組件(peer和orderer)綁定到組織。通過為每個組織分配唯一的CA證書,可以模仿典型的網絡,網絡中的成員將使用其自己的證書頒發機構。 Hyperledger Fabric中的交易和通信由實體的私鑰(密鑰庫)簽名,然后通過公鑰(簽名)進行驗證。
cryptogen工具生成的證書和密鑰將保存到crypto-config目錄,目錄結構如下:
configtxgen使用一個configtx.yaml文件,configtx.yam定義了一個示例網絡,網絡中有一個排序服務組織OrdererOrg以及兩個對等節點組織(Org1,Org2),每個組織管理和持有2個對等節點。configtx.yam文件還指定了一個SampleConsortium的聯盟,由2個對等節點組織構成。需要特別注意文件頂部的Profiles部分,有兩個唯一的頭部信息,一個是排序節點的創世區塊TwoOrgsOrdererGenesis,一個是通道TwoOrgsChannel。這兩個頭部信息會在創建網絡構件時作為參數。
configtx.yaml文件也包含兩個需要的額外規格說明。首先,指定了兩個對等節點組織的對等節點(peer0.org1.example.com,peer0.org2.example.com);其次,指明了每個成員的MSP目錄位置(MSPDir指定),從而允許在排序節點的創世塊中存儲每個組織的根證書。目前,任何網絡實體和排序服務通信都必須要進行數字簽名認證。
啟動first-network,使用-i參數指定版本為1.0.0:./byfn.sh -m up -c scorpio -i 1.0.0
byfn.sh -m up:啟動BYFN示例
首次啟動first-network時,會從Docker鏡像倉庫下載下列三個鏡像:
docker.io/hyperledger/fabric-orderer:x86_64-1.0.0
docker.io/hyperledger/fabric-peer:x86_64-1.0.0
docker.io/hyperledger/fabric-tools:x86_64-1.0.0
./byfn.sh -m down -c scorpio
用于關閉BYFN網絡,會關閉容器,移除加密材料和4個配置信息,并且從Docker倉庫刪除鏈碼鏡像。
再次啟動BYFN網絡示例前,必須先關閉BYFN網絡,刪除生成的證書、容器、網絡構件以及鏈碼鏡像等。如果不關閉BYFN網絡,將會導致創建通道失敗。錯誤如下:
!!!!!!!!!!!!!!! Channel creation failed !!!!!!!!!!!!!!!!
========= ERROR !!! FAILED to execute End-2-End Scenario ===========
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。