본문 바로가기

IT/Block Chain(Hyperledger)

[fabric2.0 정리]수동으로 체인코드 설치 및 업그레이드

[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