Hyperledger Fabric 環境搭建(2)


上一篇https://www.cnblogs.com/xdyixia/p/11738096.html

介紹了Hyperledger Fabric環境中各種軟件安裝和源碼編譯,這一篇介紹快速運行一個簡單的Fabric網絡。

方法一:利用源碼中的腳本運行docker鏡像

在Fabric的源碼中提供了一個基於docker-compose運行上篇文章中的Docker鏡像文件的例子。

在$GOPATH/src/github.com/hyperledger/fabric/examples/e2e_cli目錄里運行腳本
./network_setup.sh up

下面是運行該腳本啟動Fabric的結果

View Code
這個做了以下操作:
1)編譯生成Fabric公私鑰、證書的程序,程序在目錄:fabric/release/linux-amd64/bin 2)基於configtx.yaml生成創世區塊和通道相關信息,並保存在channel-artifacts文件夾。 3)基於crypto-config.yaml生成公私鑰和證書信息,並保存在crypto-config文件夾中。 4)基於docker-compose-cli.yaml啟動1Orderer+4Peer+1CLI的Fabric容器。 5)在CLI啟動的時候,會運行scripts/script.sh文件,這個腳本文件包含了創建Channel,加入Channel,安裝Example02,運行Example02等功能。

以上我們的整個Fabric網絡已經運行搭建完成

我們現在以安裝好的Example02為例,在官方例子中,channel名字是mychannel,鏈碼的名字是mycc。我們首先進入CLI,我們重新打開一個命令行窗口,輸入:

docker exec -it cli bash

運行以下命令可以查詢a賬戶的余額:

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

可以看到余額是90:

然后,我們試一試把a賬戶的余額再轉20元給b賬戶,運行命令:

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 -c '{"Args":["invoke","a","b","20"]}'

運行結果為:

現在轉賬完畢, 我們試一試再查詢一下a賬戶的余額,沒問題的話,應該是只剩下70了。我們看看實際情況:

果然,一切正常。最后我們要關閉Fabric網絡,首先需要運行exit命令退出cli容器。關閉Fabric的命令與啟動類似,命令為:

cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli
./network_setup.sh down

現在我們整個Fabric的環境已經測試完畢

該實驗參照該文實現https://www.cnblogs.com/studyzy/p/7437157.html 

方法二:直接運行模塊可執行文件的方式,不用docker

1. 創建一個目錄來存放命令執行過程中生成的相關文件

mkdir -p /opt/hyperledger

2. 生成fabric需要的證書文件

首先創建存放配置文件和證書的文件夾

 mkdir -p /opt/hyperledger/fabricconfig

cryptogen提供了一個命令可以獲取cryptogen模塊所需的配置文件的樣式

cryptogen showtemplate

cryptogen showtemplate > crypto-config.yaml 可以直接把樣式保存到文件中再進行修改

根據模板修改后保存到crypto-config.yaml文件中。

然后執行以下命令,生成證書文件crypto-config:

cryptogen generate --config=crypto-config.yaml --output ./crypto-config

發現新增文件夾crypto-config,里面存在本例相關的配置文件,可以通過tree命令查看證書文件內容。

現在所有證書文件都生成完畢。

3. 創始塊的生成

賬本區塊鏈用來存儲賬本的交易數據,但是第一個區塊是例外,它用於存儲配置信息,該區塊被稱為創始塊。configtxgen模塊是專門用來生成 系統的創始塊Channel的創始塊,並且configtxgen模塊也需要一個配置文件定義相關屬性。Fabric源碼中提供了該配置文件的例子,我們只需修改一下即可。模板文件configtx.yaml在$GOPATH/src/github.com/hyperledger/fabric/sampleconfig/目錄下。

首先創建一個目錄來存儲orderer節點相關的文件:

mkdir -p /opt/hyperledger/order

把配置模板文件復制到剛創建的order目錄

cp -r $GOPATH/src/github.com/hyperledger/fabric/sampleconfig/configtx.yaml /opt/hyperledger/order/

生成創始塊文件

configtxgen -profile TestTwoOrgsOrdererGenesis -outputBlock ./orderer.genesis.block

上述命令執行完成后會在order文件夾中生成創始塊文件orderer.genesis.block

4. 賬本創始塊的生成

通道,即賬本,在Fabric中稱為Channel,一個Channel表示一個賬本,Fabric和其他區塊鏈最大的區別是它支持多賬本,每個Fabric應用至少包含一個Channel,下面創建Channel創始塊,創建channel的配置文件也是configtx.yaml。

configtxgen -profile TestTwoOrgsChannel -outputCreateChannelTx ./roberttestchannel.tx -channelID roberttestchannel

命令執行完成之后會在order文件夾中生成roberttestchannel.tx文件,該文件用來生成channel,除此之外還需要生成相關的錨點文件,對應的執行以下兩條命令:

configtxgen -profile TestTwoOrgsChannel -outputAnchorPeersUpdate ./Org1MSPanchors.tx -channelID roberttestchannel -asOrg Org1MSP
configtxgen -profile TestTwoOrgsChannel -outputAnchorPeersUpdate ./Org2MSPanchors.tx -channelID roberttestchannel -asOrg Org2MSP

執行完后會在order文件夾中生成兩個錨節點文件Org1MSPanchors.tx和Org2MSPanchors.tx。

 5. orderer節點的啟動

orderer節點即排序節點,負責交易的打包和區塊的生成。orderer節點的配置信息通常放在環境變量或者配置文件中,本例放於配置文件中,Fabric源碼提供了節點啟動所需配置文件的實例,將示例文件復制到orderer的文件夾修改使用。

 cp -r $GOPATH/src/github.com/hyperledger/fabric/sampleconfig/orderer.yaml /opt/hyperledger/order

修改配置,然后在配置文件orderer.yaml所在目錄執行啟動order命令

orderer start

orderer服務啟動起來了,因此需要新開一個終端進行后續操作。

6. peer節點的啟動

同樣的,首先需要創建一個文件夾來存放peer模塊的配置文件和區塊數據

mkdir -p /opt/hyperledger/peer

將相關的模板配置文件core.yaml復制到peer文件夾下並修改內容

cd /opt/hyperledger/peer
cp $GOPATH/src/github.com/hyperledger/fabric/sampleconfig/core.yaml /opt/hyperledger/peer

然后在core.yaml文件所在目錄下執行以下命令啟動peer節點

export set FABRIC_CFG_PATH=/opt/hyperledger/peer/
peer node start >> log_peer.log 2>&1 &

7. 創建通道

第一步:創建通道

export set CORE_PEER_LOCALMSPID=Org1MSP
export set CORE_PEER_MSPCONFIGPATH=/opt/hyperledger/fabricconfig/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp

peer channel create
-t 50s -o orderer.example.com:7050 -c roberttestchannel -f /opt/hyperledger/order/roberttestchannel.tx

 創建完成后會在當前目錄生成roberttestchannel.block文件,即為通道初始塊文件。

第二步:讓已經運行的peer節點加入通道

export set CORE_PEER_LOCALMSPID=Org1MSP
export set CORE_PEER_ADDRESS=peer0.org1.example.com:7051
export set CORE_PEER_MSPCONFIGPATH=/opt/hyperledger/fabricconfig/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
peer channel join -b /opt/hyperledger/peer/roberttestchannel.block 

第三步;更新錨節點

export set CORE_PEER_LOCALMSPID=Org1MSP
export set CORE_PEER_ADDRESS=peer0.org1.example.com:7051
export set CORE_PEER_MSPCONFIGPATH=/opt/hyperledger/fabricconfig/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
peer channel update -o orderer.example.com:7050 -c roberttestchannel -f /opt/hyperledger/order/Org1MSPanchors.tx
 
        

 8.chaincode的部署和調用

可以使用Fabric源碼自帶的例子作為測試Chaincode.

$GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/go chaincode_example02

chaincode相關測試一共有四個步驟

第一步:部署chaincode即鏈代碼

第二步:實例化鏈代碼

第三步:通過鏈代碼寫入數據

第四步:通過鏈代碼查詢數據

 

 參考:

《區塊鏈開發實戰 Hyperledger Fabric關鍵技術與案例分析》

《區塊鏈原理、設計與應用》

http://www.luyixian.cn/news_show_14963.aspx

https://www.cnblogs.com/zhangmingcheng/p/10556469.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM