《HyperLedger Fabric 實戰》—— 十七、升級 Fabric 1.2 —— 6、部署驗證合約
阿新 • • 發佈:2018-12-16
1、載入智慧合約(以 211 機器為例)
拷貝~/fabric/examples/chaincode/go/
資料夾下的example02
及marbles02
兩個目錄到~/fabric/aberic/chaincode/go/
目錄下。
重啟 Peer 服務。
docker-compose -f docker-peer0.org1.yaml down --volumes
docker-compose -f docker-peer0.org1.yaml up
2、安裝例項化合約
登入 211 機器的 cli 容器。
docker exec -it cli bash
由於剛剛我們徹底清除了 peer 容器,所以這裡需要重新加入通道。
cp channel-artifacts/mychannel.block ./
peer channel join -b mychannel.block
安裝例項化合約
peer chaincode install -n mycc -v 1.0 -p github.com/hyperledger/fabric/aberic/chaincode/go/example02/cmd peer chaincode instantiate -o orderer1.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "OR ('Org1MSP.peer','Org2MSP.peer')"
3、查詢、交易、驗證合約
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}' peer chaincode invoke -o orderer1.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt -c '{"Args":["invoke","a","b","10"]}' peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
4、驗證 CouchDB
安裝、例項化 marbles02 合約,該合約會自動基於 couchdb 建立索引。
peer chaincode install -n marble1 -v 1.0 -p github.com/hyperledger/fabric/aberic/chaincode/go/marbles02
例項化若失敗,可稍等幾秒鐘,可能是安裝還沒有完成。
peer chaincode instantiate -o orderer1.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n marble1 -c '{"Args":[]}' -P "OR ('Org1MSP.peer', 'Org2MSP.peer')" -v 1.0
驗證合約,若成功,也是變相驗證了 couchdb。
peer chaincode invoke -C mychannel -n marble1 -c '{"Args":["initMarble","marble1","blue","35","tom"]}' -o orderer1.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
peer chaincode invoke -C mychannel -n marble1 -c '{"Args":["initMarble","marble2","red","50","tom"]}' -o orderer1.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
peer chaincode invoke -C mychannel -n marble1 -c '{"Args":["initMarble","marble3","blue","70","tom"]}' -o orderer1.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer1.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
peer chaincode query -C mychannel -n marble1 -c '{"Args":["readMarble","marble1"]}'
peer chaincode query -C mychannel -n marble1 -c '{"Args":["queryMarblesByOwner","tom"]}' # need couchdb
5、驗證 Peer 叢集其他節點
複製第一步的載入合約,和第二步的安裝合約,注意,不必再行例項化,之後直接進行查詢。
後面我們嘗試動態增加組織。