[fabric2.0 정리]수동으로 체인코드 설치 및 업그레이드
$ cd fabric-samples/chaincode/fabcar/go
$ GO111MODULE=on go mod vendor
#위의 커멘드가 성공적으로 됏으면, vendor 폴더가 생성됐을 것임
$ l
$ cd ../../../test-network/
$ export PATH=${PWD}/../bin:$PATH
$ export FABRIC_CFG_PATH=$PWD/../config/
$ peer version
$ peer lifecycle chaincode package haccp-common.tar.gz --path ../chaincode/haccp-common/go/ --lang golang --label haccp-common_1
$ 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/Admin@org1.example.com/msp
export CORE_PEER_ADDRESS=localhost:7051
$ peer lifecycle chaincode install haccp-common.tar.gz
$ 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_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/Admin@org2.example.com/msp
export CORE_PEER_ADDRESS=localhost:9051
$ peer lifecycle chaincode install haccp-common.tar.gz
$ peer lifecycle chaincode queryinstalled
Installed chaincodes on peer:
Package ID: haccp-common_1:94a87995b20bd66e45d614600216229c8333722b1b9ab1262f0a702fb2562b84, Label: haccp-common_1
$ export CC_PACKAGE_ID=haccp-common_1:94a87995b20bd66e45d614600216229c8333722b1b9ab1262f0a702fb2562b84
$ peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name haccp-common --version 1.0 --package-id $CC_PACKAGE_ID --sequence 1 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
$ export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_ADDRESS=localhost:7051
$ peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name haccp-common --version 1.0 --package-id $CC_PACKAGE_ID --sequence 1 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
2020-07-16 22:14:00.261 PDT [chaincodeCmd] ClientWait -> INFO 001 txid [ecce5f8f7251c19925326c3a2c1ef1140747334cb0134f60195de050139870f6] committed with status (VALID) at
$ peer lifecycle chaincode checkcommitreadiness --channelID mychannel --name haccp-common --version 1.0 --sequence 1 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --output json
{
"approvals": {
"Org1MSP": true,
"Org2MSP": true
}
}
$ peer lifecycle chaincode commit -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name haccp-common --version 1.0 --sequence 1 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --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
2020-07-16 22:15:09.007 PDT [chaincodeCmd] ClientWait -> INFO 001 txid [be5a6089b4d272b4975f842def74eba9f6a5aad2d2f5c399f5ff5ccc7098dc75] committed with status (VALID) at localhost:9051
2020-07-16 22:15:09.045 PDT [chaincodeCmd] ClientWait -> INFO 002 txid [be5a6089b4d272b4975f842def74eba9f6a5aad2d2f5c399f5ff5ccc7098dc75] committed with status (VALID) at localhost:7051
$ peer lifecycle chaincode querycommitted --channelID mychannel --name haccp-common --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
Committed chaincode definition for chaincode 'haccp-common' on channel 'mychannel':
Version: 1.0, Sequence: 1, Endorsement Plugin: escc, Validation Plugin: vscc, Approvals: [Org1MSP: true, Org2MSP: true]
$ 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 haccp-common --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":[]}'
2020-07-16 22:16:14.456 PDT [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 001 Chaincode invoke successful. result: status:200
$ peer chaincode query -C mychannel -n haccp-common -c '{"Args":["QueryAllCompanies"]}'
[{"Key":"COM0","Record":{"businessNo":"KR-001","companyName":"삼성","shortName":"SM","englishName":"Samsung","representName":"0","businessCondition":"1","businessType":"2","haccpCertificate":"3","certificateNo":"4"}},{"Key":"COM1","Record":{"businessNo":"KR-002","companyName":"현대","shortName":"HD","englishName":"Hyundai","representName":"0","businessCondition":"1","businessType":"2","haccpCertificate":"3","certificateNo":"4"}},{"Key":"COM2","Record":{"businessNo":"KR-003","companyName":"네이버","shortName":"NA","englishName":"Naver","representName":"0","businessCondition":"1","businessType":"2","haccpCertificate":"3","certificateNo":"4"}},{"Key":"COM3","Record":{"businessNo":"KR-004","companyName":"카카오","shortName":"KA","englishName":"Kakao","representName":"0","businessCondition":"1","businessType":"2","haccpCertificate":"3","certificateNo":"4"}},{"Key":"COM4","Record":{"businessNo":"KR-005","companyName":"기아","shortName":"KI","englishName":"Kia","representName":"0","businessCondition":"1","businessType":"2","haccpCertificate":"3","certificateNo":"4"}},{"Key":"COM5","Record":{"businessNo":"KR-006","companyName":"키움","shortName":"KW","englishName":"Kiwoom","representName":"0","businessCondition":"1","businessType":"2","haccpCertificate":"3","certificateNo":"4"}},{"Key":"COM6","Record":{"businessNo":"KR-007","companyName":"LG","shortName":"LG","englishName":"LG","representName":"0","businessCondition":"1","businessType":"2","haccpCertificate":"3","certificateNo":"4"}},{"Key":"COM7","Record":{"businessNo":"KR-008","companyName":"SK","shortName":"SK","englishName":"SK","representName":"0","businessCondition":"1","businessType":"2","haccpCertificate":"3","certificateNo":"4"}},{"Key":"COM8","Record":{"businessNo":"KR-009","companyName":"한화","shortName":"HW","englishName":"Hanhwa","representName":"0","businessCondition":"1","businessType":"2","haccpCertificate":"3","certificateNo":"4"}},{"Key":"COM9","Record":{"businessNo":"KR-010","companyName":"롯데","shortName":"LT","englishName":"Lotte","representName":"0","businessCondition":"1","businessType":"2","haccpCertificate":"3","certificateNo":"4"}}]
#####수동 업그레이드#######
haccp-common_2 >> haccp-common_n
--version 2.0 >> --version n.0
--sequence 2 >> --sequence n
#####업그레이드#######
# 패키징
$ cd /opt/gopath/src/github.com/hyperledger/fabric-samples/test-network/
$$$
export PATH=${PWD}/../bin:$PATH
export FABRIC_CFG_PATH=$PWD/../config/
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
$$$
$ peer lifecycle chaincode package haccp-common_3.tar.gz --path ../chaincode/haccp-common/go/ --lang golang --label haccp-common_3
# Org1 체인코드 설치
$$$
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/Admin@org1.example.com/msp
export CORE_PEER_ADDRESS=localhost:7051
$$$
$ peer lifecycle chaincode install haccp-common_3.tar.gz
Installed chaincodes on peer:
Package ID: haccp-common_n:adfadfasdfadfadsfasdfasdfadfafsdadsfadsf8704, Label: haccp-common_n
# <<유의>> 체인코드 패키지 아이디 설정
$ export NEW_CC_PACKAGE_ID=haccp-common_n:adfadfasdfadfadsfasdfasdfadfafsdadsfadsf8704
# Org의 체인 코드 정의를 승인
$ peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name haccp-common --version 3.0 --package-id $NEW_CC_PACKAGE_ID --sequence 3 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
# Org2 체인코드 설치
$$$
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/Admin@org2.example.com/msp
export CORE_PEER_ADDRESS=localhost:9051
$$$
$ peer lifecycle chaincode install haccp-common_3.tar.gz
# 채널 구성원이 동일한 체인코드 정의를 승인했는지 확인
$ peer lifecycle chaincode checkcommitreadiness --channelID mychannel --name haccp-common --version 3.0 --sequence 3 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --output json
{
"approvals": {
"Org1MSP": true,
"Org2MSP": true
}
}
#체인코드 정의를 채널에 커밋
$ peer lifecycle chaincode commit -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name haccp-common --version 3.0 --sequence 3 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --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
2020-07-16 22:38:19.291 PDT [chaincodeCmd] ClientWait -> INFO 001 txid [cd87f5849c94907c1913dcff3cd2c58bfa86402e4fc7e5d97a7984fefa87bb76] committed with status (VALID) at localhost:9051
2020-07-16 22:38:19.415 PDT [chaincodeCmd] ClientWait -> INFO 002 txid [cd87f5849c94907c1913dcff3cd2c58bfa86402e4fc7e5d97a7984fefa87bb76] committed with status (VALID) at localhost:7051
#새로운 체인 코드가 피어에서 시작되었는지 확인
$ docker ps
# 체인코드 인보크 실행
$ 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 haccp-common --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":"CreateCompany","Args":["COM11","KR-011","농심","NS","Nongshim", "0", "1", "2", "3", "4"]}'
# 체인코드 쿼리 실행
$ peer chaincode query -C mychannel -n haccp-common -c '{"Args":["queryAllCompanies"]}'
[{"Key":"COM0","Record":{"businessNo":"KR-001","companyName":"삼성","shortName":"SM","englishName":"Samsung","representName":"0","businessCondition":"1","businessType":"2","haccpCertificate":"3","certificateNo":"4"}},{"Key":"COM1","Record":{"businessNo":"KR-002","companyName":"현대","shortName":"HD","englishName":"Hyundai","representName":"0","businessCondition":"1","businessType":"2","haccpCertificate":"3","certificateNo":"4"}},{"Key":"COM11","Record":{"businessNo":"KR-011","companyName":"농심","shortName":"NS","englishName":"Nongshim","representName":"0","businessCondition":"1","businessType":"2","haccpCertificate":"3","certificateNo":""}},{"Key":"COM2","Record":{"businessNo":"KR-003","companyName":"네이버","shortName":"NA","englishName":"Naver","representName":"0","businessCondition":"1","businessType":"2","haccpCertificate":"3","certificateNo":"4"}},{"Key":"COM3","Record":{"businessNo":"KR-004","companyName":"카카오","shortName":"KA","englishName":"Kakao","representName":"0","businessCondition":"1","businessType":"2","haccpCertificate":"3","certificateNo":"4"}},{"Key":"COM4","Record":{"businessNo":"KR-005","companyName":"기아","shortName":"KI","englishName":"Kia","representName":"0","businessCondition":"1","businessType":"2","haccpCertificate":"3","certificateNo":"4"}},{"Key":"COM5","Record":{"businessNo":"KR-006","companyName":"키움","shortName":"KW","englishName":"Kiwoom","representName":"0","businessCondition":"1","businessType":"2","haccpCertificate":"3","certificateNo":"4"}},{"Key":"COM6","Record":{"businessNo":"KR-007","companyName":"LG","shortName":"LG","englishName":"LG","representName":"0","businessCondition":"1","businessType":"2","haccpCertificate":"3","certificateNo":"4"}},{"Key":"COM7","Record":{"businessNo":"KR-008","companyName":"SK","shortName":"SK","englishName":"SK","representName":"0","businessCondition":"1","businessType":"2","haccpCertificate":"3","certificateNo":"4"}},{"Key":"COM8","Record":{"businessNo":"KR-009","companyName":"한화","shortName":"HW","englishName":"Hanhwa","representName":"0","businessCondition":"1","businessType":"2","haccpCertificate":"3","certificateNo":"4"}},{"Key":"COM9","Record":{"businessNo":"KR-010","companyName":"롯데","shortName":"LT","englishName":"Lotte","representName":"0","businessCondition":"1","businessType":"2","haccpCertificate":"3","certificateNo":"4"}}]
'IT > Block Chain(Hyperledger)' 카테고리의 다른 글
minifabric 실행 (0) | 2020.10.06 |
---|---|
minifabric에 대한 요약 정리 (0) | 2020.10.05 |
upgradeCC.sh (0) | 2020.07.17 |
hyperledger 2.0 go:unknown subcommand "mod" (0) | 2020.06.04 |
test-network fabcar cli 명령어 정리 (0) | 2020.06.03 |