docker-machine create --driver virtualbox blockchain
-> 이미 실습 진행한 적이 있다면?
`docker-machine start blockchain` 으로 해당 머신 실행
docker-machine env blockchain
→ 새 터미널 접속시 마다 설정해줘야함
eval $(docker-machine env blockchain)
docker pull hyperledger/fabric-baseimage:x86_64-0.2.2
docker pull hyperledger/fabric-membersrvc:x86_64-0.6.1-preview
docker pull hyperledger/fabric-peer:x86_64-0.6.1-preview
baseimage의 경우 Tab를 latest로 태깅
→ 데브모드에서 체인코드 디플로이 시 baseimage를 통해 체인코드 구동을 위한 Docker 이미지를 만드는데 hyplerledger/fabric-baseimage:latest 를 사용하기 때문
docker tag hyperledger/fabric-baseimage:x86_64-0.2.2 hyperledger/fabric-baseimgae:latest
membersrvc:
image: hyperledger/fabric-membersrvc:x86_64-0.6.1-preview
ports:
- "7054:7054"
command: membersrvc
vp0:
image: hyperledger/fabric-peer:x86_64-0.6.1-preview
ports:
- "7050:7050"
- "7051:7051"
- "7053:7053"
environment:
- CORE_PEER_ADDRESSAUTODETECT=true
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_ID=vp0
- CORE_PEER_PKI_ECA_PADDR=membersrvc:7054
- CORE_PEER_PKI_TCA_PADDR=membersrvc:7054
- CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054
- CORE_SECURITY_ENABLED=true
- CORE_SECURITY_ENROLLID=test_vp0
- CORE_SECURITY_ENROLLSECRET=MwYpmSRjupbT
links:
- membersrvc
command: sh -c "sleep 5; peer node start --peer-chaincodedev"
예제 실행시
Fabric 소스 준비
mkdir -p $GOPATH/src/github.com/hyperledger
cd $GOPATH/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git
cd fabric
git checkout release-1.4
실행하고자 하는 go파일이 있는 경로로 이동해 빌드
cd $GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
go build -o test
6.1 새 터미널에서 아까 만든 .yml 파일이 있는 경로에서 블록체인 런타임 실행
docker-compose up
6.2 ip주소 확인하기
docker-machine ls
6.3 실행하기
아까 빌드 후 실행파일이 생성된 경로에서 명령어 실행
CORE_CHAINCODE_ID_NAME=mycc CORE_PEER_ADDRESS=192.168.99.100:7051 ./test
.yaml에 cli bash에 대한 설정을 따로 해주지 않았으므로 postman으로 테스트
개발모드에서 체인코드 수정시
→ 체인코드 빌드부터 –> 체인코드 실행 –> 로그인 API 호출 –> 체인코드 디플로이
7.1 사용자 등록 및 로그인
7.2 체인코드 디플로이
7.3 Invoke
작성한 조회, 작성 APi의 테스트
→ 위치 : ~/fabric/fabric-samples/chaincode-docker-devmode
docker-compose -f docker-compose-simple.yaml up
체인코드 컨테이너 접속
docker exec -it chaincode sh
체인코드 빌드
→ 위치 : 빌드할 체인코드가 있는 위치
go build -o test
체인코드 런
CORE_PEER_ADDRESS=peer:7052 CORE_CHAINCODE_ID_NAME=mycc:0 ./test
cli bash 접속
docker exec -it cli bash
체인코드 설치&인스턴스화
peer chaincode install -p chaincodedev/chaincode/test -n mycc -v 0
peer chaincode instantiate -n mycc -v 0 -c '{"Args":["init"]}' -C myc
-> 설치된 체인코드 확인
peer chaincode list --installed
체인코드 수정 시 업그레이드
#버전 올려서 설치
peer chaincode install -p chaincodedev/chaincode/test -n mycc -v 1.0
#업그레이드
peer chaincode upgrade -n mycc -C myc -c '{"Args":[""]}' -o orderer:7050 -v 1 -p chaincodedev/chaincode/test
invoke
peer chaincode invoke -n myspec -c '{"Args":["initLedger"]}' -C myc
peer chaincode invoke -n myspec -c '{"Args":["createSpec", "spec11", "2020-10-27", "user1", "1"]}' -C mychannel
query
peer chaincode query -n myspec -c '{"Args":["querySpec", "spec11"]}' -C mychannel