티스토리 뷰

반응형

Hyperledger Fabric v1.4 네트워크 설정

Hyperledger Fabric v1.4의 byfn 네트워크에서 체인코드를 테스트 할 때에, 동일한 체인코드를 반복해서 업그레이드 하거나, 여러 개의 체인 코드를 인스턴스화/업그레이드 할 경우에 옵션 값이 계속해서 변경되기 때문에 명령어를 수정하는 일이 번거로웁니다.

이런 경우에 조금 더 편리하게 개발하기 위해 체인코드에 관련된 내용들을 환경변수로 처리하고, 해당 환경변수만 변경해가며 나머지 명령은 그대로 복붙해서 사용할 수 있습니다.

 

네트워크 실행

기본 byfn 스크립트를 이용해 네트워크를 실행한다. -s 옵션을 이용해 couchdb도 함께 띄울 수 있습니다.

# 네트워크 실행
./byfn.sh up -c mychannel -s couchdb

 

cli 컨테이너 환경변수 설정

체인코드 배포를 위해 cli 컨테이너에 접속해 환경변수를 설정합니다.

자신의 환경에 맞게 환경변수의 값을 수정해서 사용합니다.

  • ORDERER_CA : cli 컨테이너 내의 orderer ca 파일 경로
  • CHANNEL_NAME : 체인코드를 배포할 채널 이름
  • CC_NAME : 배포할 체인코드의 이름
  • CC_VERSION : 배포할 체인코드의 버전
  • CC_LANGUAGE : 배포할 체인코드의 언어(golang 또는 node)
  • CC_PATH : 배포할 체인코드의 경로(golang의 경우 /opt/gopath/src/ 이후의 경로, node의 경우 전체 경로)
# cli 컨테이너 접속
docker container exec -it cli bash

# orderer 인증서 및 채널 설정
export ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
export CHANNEL_NAME=mychannel

# test 체인코드 설정
export CC_NAME=testcc
export CC_VERSION=1.0
export CC_LANGUAGE=node
export CC_PATH=/opt/gopath/src/github.com/chaincode/test/node

 

체인코드 설정

체인코드 설치

설정한 환경변수를 토대로 모든 피어에 체인코드를 설치합니다.

byfn에서 기본으로 실행하는 4개의 피어에 체인코드를 설치하는 내용이기 때문에 byfn 네트워크를 사용하는 경우, 아래의 명령어를 복사해 그대로 실행하면 됩니다.

자신만의 custom 네트워크를 실행한 경우에는 해당 환경에 맞게 명령어를 수정해서 사용해야 합니다.

# 체인코드 설치
CORE_PEER_ADDRESS=peer0.org1.example.com:7051 \
CORE_PEER_LOCALMSPID=Org1MSP \
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt \
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp \
PEER0_ORG1_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt \
peer chaincode install -n $CC_NAME -v $CC_VERSION -l $CC_LANGUAGE -p $CC_PATH

CORE_PEER_ADDRESS=peer1.org1.example.com:8051 \
CORE_PEER_LOCALMSPID=Org1MSP \
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt \
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp \
PEER0_ORG1_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt \
peer chaincode install -n $CC_NAME -v $CC_VERSION -l $CC_LANGUAGE -p $CC_PATH

CORE_PEER_ADDRESS=peer0.org2.example.com:9051 \
CORE_PEER_LOCALMSPID=Org2MSP \
PEER0_ORG2_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt \
CORE_PEER_TLS_ROOTCERT_FILE=$PEER0_ORG2_CA \
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp \
peer chaincode install -n $CC_NAME -v $CC_VERSION -l $CC_LANGUAGE -p $CC_PATH

CORE_PEER_ADDRESS=peer1.org2.example.com:10051 \
CORE_PEER_LOCALMSPID=Org2MSP \
PEER0_ORG2_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt \
CORE_PEER_TLS_ROOTCERT_FILE=$PEER0_ORG2_CA \
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp \
peer chaincode install -n $CC_NAME -v $CC_VERSION -l $CC_LANGUAGE -p $CC_PATH

 

체인코드 인스턴스화

해당 이름의 체인코드를 한 번도 배포하지 않은 경우에는 인스턴스화를 한 후, 정상적으로 인스턴스화 되었는지 확인합니다.

peer chaincode list 명령을 실행한 결과로 해당 이름 및 버전의 체인코드가 출력되어야합니다.

아래의 명령어를 복사해서 그대로 사용합니다.

# 체인코드 인스턴스화
peer chaincode instantiate -o orderer.example.com:7050 --tls --cafile $ORDERER_CA -C $CHANNEL_NAME -n $CC_NAME -v $CC_VERSION -l $CC_LANGUAGE -c '{"Args":[""]}' -P "OR('Org1MSP.member','Org2MSP.member')"

# 체인코드 인스턴스화 확인
peer chaincode list --instantiated -C $CHANNEL_NAME

 

체인코드 업그레이드

기존에 배포한 체인코드를 업그레이드 하는 경우에는 아래의 명령을 실행한 후, 정상적으로 업그레이드 되었는지 확인합니다. (기존의 버전과 다른 버전으로 업그레이드 해야합니다!!)

peer chaincode list 명령을 실행한 결과로 해당 이름 및 버전의 체인코드가 출력되어야합니다.

아래의 명령어를 복사해서 그대로 사용합니다.

# 체인코드 업그레이드
peer chaincode upgrade -o orderer.example.com:7050 --tls --cafile $ORDERER_CA -C $CHANNEL_NAME -n $CC_NAME -v $CC_VERSION -l $CC_LANGUAGE -c '{"Args":[""]}' -P "OR('Org1MSP.member','Org2MSP.member')"

# 체인코드 업그레이드 확인
peer chaincode list --instantiated -C $CHANNEL_NAME

 

네트워크 종료

네트워크를 종료할 때에도 byfn 스크립트를 이용하면 모든 컨테이너가 정리됩니다.

# 네트워크 종료
./byfn.sh down

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함