1. 程式人生 > 其它 >Hyperledger Fabric入門(4)-呼叫智慧合約

Hyperledger Fabric入門(4)-呼叫智慧合約

本章主要執行fabric-samples/asset-transfer-basic/chaincode-go工程,瞭解智慧合約的安裝和呼叫。

第1步:啟動網路
進入目錄/usr/local/go/src/github.com/hyperledger/fabric-samples/test-network,輸入命令

./network.sh up

在這裡插入圖片描述
第2步:建立通道:
目錄/usr/local/go/src/github.com/hyperledger/fabric-samples/test-network,輸入命令

./network.sh createChannel

在這裡插入圖片描述
可以看到建立了一個名稱為mychannel的通道。
在這裡插入圖片描述
在這裡插入圖片描述
第3步:啟動部署鏈碼

目錄/usr/local/go/src/github.com/hyperledger/fabric-samples/test-network,輸入命令

./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go

在這裡插入圖片描述
鏈碼的位置:fabric-samples/asset-transfer-basic/chaincode-go
鏈碼的名稱:basic。
在這裡插入圖片描述
第4步:鏈碼互動
1)將fabric-samples/bin新增到環境變數,可以直接執行二進位制檔案。
輸入命令:export PATH=${PWD}/../bin:$PATH


在這裡插入圖片描述
2)設定環境變數FABRIC_CFG_PATH,路徑為/fabric-samples/config,可以訪問配置檔案。
輸入命令:export FABRIC_CFG_PATH=$PWD/../config/
在這裡插入圖片描述

3)設定環境變數,以允許您作為Org1操作peer CLI
輸入命令:

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].example.com/msp export CORE_PEER_ADDRESS=localhost:7051

在這裡插入圖片描述
4)初始化鏈碼
目錄/usr/local/go/src/github.com/hyperledger/fabric-samples/test-network,輸入命令

peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n basic --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":"InitLedger","Args":[]}'

在這裡插入圖片描述
主要是呼叫InitLedger函式,可以看到成功status=200的輸出:

在這裡插入圖片描述
5)通道賬本中查詢資料。
目錄/usr/local/go/src/github.com/hyperledger/fabric-samples/test-network,輸入命令

peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'

在這裡插入圖片描述
可以看到查詢結果,返回一個json陣列:

在這裡插入圖片描述
格式化後:
[{“ID”:“asset1”,“color”:“blue”,“size”:5,“owner”:“Tomoko”,“appraisedValue”:300},
{“ID”:“asset2”,“color”:“red”,“size”:5,“owner”:“Brad”,“appraisedValue”:400},
{“ID”:“asset3”,“color”:“green”,“size”:10,“owner”:“Jin Soo”,“appraisedValue”:500},
{“ID”:“asset4”,“color”:“yellow”,“size”:10,“owner”:“Max”,“appraisedValue”:600},
{“ID”:“asset5”,“color”:“black”,“size”:15,“owner”:“Adriana”,“appraisedValue”:700},
{“ID”:“asset6”,“color”:“white”,“size”:15,“owner”:“Michel”,“appraisedValue”:800},

6)通道賬本中新增一條資料:
目錄/usr/local/go/src/github.com/hyperledger/fabric-samples/test-network,輸入命令

peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n basic --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":"CreateAsset","Args":["asset7","blue","20","Klay","777"]}'

在這裡插入圖片描述
呼叫CreateAsset函式,可以看到成功status=200的輸出:

在這裡插入圖片描述
7)通道賬本中驗證新增一條資料
目錄/usr/local/go/src/github.com/hyperledger/fabric-samples/test-network,輸入命令
peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'在這裡插入圖片描述
可以看到查詢結果:

在這裡插入圖片描述
格式化後:
[{“ID”:“asset1”,“color”:“blue”,“size”:5,“owner”:“Tomoko”,“appraisedValue”:300},
{“ID”:“asset2”,“color”:“red”,“size”:5,“owner”:“Brad”,“appraisedValue”:400},
{“ID”:“asset3”,“color”:“green”,“size”:10,“owner”:“Jin Soo”,“appraisedValue”:500},
{“ID”:“asset4”,“color”:“yellow”,“size”:10,“owner”:“Max”,“appraisedValue”:600},
{“ID”:“asset5”,“color”:“black”,“size”:15,“owner”:“Adriana”,“appraisedValue”:700},
{“ID”:“asset6”,“color”:“white”,“size”:15,“owner”:“Michel”,“appraisedValue”:800},
{“ID”:“asset7”,“color”:“blue”,“size”:20,“owner”:“Klay”,“appraisedValue”:777}]

第5步:鏈碼互動完畢後,關閉網路:
進入目錄/usr/local/go/src/github.com/hyperledger/fabric-samples/test-network,輸入命令

./network.sh down

在這裡插入圖片描述