Hyperledger Fabric學習筆記——macOS上運行Fabric測試網絡

1、運行測試網絡(test-network)

#移除之前運行生成的所有容器和工件
./network.sh down
#以默認情況啓動網絡,生成一個排序節點和兩個分屬兩個組織的對等節點,沒有通道
./network.sh up
#通過列出Docker容器來查看生成了哪些工件
docker ps -a

2、創建通道

#有很多中創建方式,下面是默認創建名爲mychannel的命令,其他見network.sh -h
./network.sh createChannel

3、在通道上啓動鏈碼

#部署fabcar鏈碼到通道mychannel上,默認的是go語言鏈碼,並且調用鏈碼初始化函數寫入初始數據
./network.sh deployCC

4、與網絡互動

#設置CLI路徑使得可以以peerOrg1的形式操作CLI(在test-network目錄下)
export PATH=${PWD}/../bin:${PWD}:$PATH
export FABRIC_CFG_PATH=$PWD/../config/
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/[email protected]/msp
export CORE_PEER_ADDRESS=localhost:7051

#從CLI查詢賬本,運行一下命令以獲取已添加到通道賬本中的汽車列表
peer chaincode query -C mychannel -n fabcar -c '{"Args":["queryAllCars"]}'

#通過調用fabcar鏈碼來更改賬本中汽車的所有者
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls true --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n fabcar --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"function":"changeCarOwner","Args":["CAR9","Dave"]}'

#設置環境變量以作爲Org2進行操作
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/[email protected]/msp
export CORE_PEER_ADDRESS=localhost:9051

#查詢在peer0.org2.example.com運行的fabcar鏈碼
peer chaincode query -C mychannel -n fabcar -c '{"Args":["queryAllCars"]}'

5、腳本文件的背後

  • ./network.sh爲兩個對等組織和orderer組織創建證書和密鑰,默認情況下腳本使用位於organizations/cryptogen文件夾中的配置文件來使用cryptogene工具。如果使用-ca標誌來建立CA,腳本會使用位於organizations/fabric-ca文件夾中的FabricCA服務配置文件和registerEnroll.sh腳本。cryptogen和Fabric CAs都爲三個組織在organizations文件夾中生成了加密材料和MSP文件夾
  • 腳本使用configtxgen工具創建系統通道創世塊。Configtxgen consumes the TwoOrgsOrdererGenesis channel profile in the configtx/configtx.yaml file to create the genesis block.這個區塊存儲在system-genesis-block中。
  • 一旦組織加密材料和系統通道創世區塊形成,腳本就可以運行網絡的節點了。腳本使用docker文件夾下的docker-compose-test-net.yaml文件來創建對等和orderer節點。
  • 如果使用createChannel子命令,腳本運行scripts文件夾中的createChannel.sh腳本創建一個默認名稱的通道。createChannel.sh腳本使用configtx.yaml文件來創建通道創建transaction以及兩個錨節點更新的transaction。腳本使用peer cli來創建通道、將peer0.org1和peer0.org2來加入通道,並使這兩個節點都成爲錨節點。
  • 如果使用了deployCC命令,./network.sh運行deployCC.sh腳本將fabcar鏈碼安裝到這兩個對等節點上,並在通道上定義鏈碼。一旦鏈碼定義被提交到通道,peer cli使用Init初始化鏈碼,然後掉費用鏈碼將初始化數據放入帳本。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章