Hyperledger fabric 시작하기
Prerequisition
- docker 설치하기
- virtual box 다운로드
VM 환경 설정
먼저 다음 명령어를 통해 docker를 사용하기 위한 VM을 생성해 줍니다.
1 | docker-machine create --driver virtualbox blockchain |
새로 생성된 VM의 환경변수를 Host에 적용해 줍니다
1 | docker-machine env blockchain |
운영체제에 따라 다음과 같은 명령을 실행해 줍니다.
MacOS
1 | $ eval $(docker-machine env blockchain) |
Windows
1 | @FOR /f "tokens=*" %i IN ('docker-machine env blockchain') DO @%i |
Docker 사용을 위한 환경 설정이 잘 되었는지 확인합니다.
1 | docker images |
Download hyperledger fabric docker image
다음의 명령을 통해서 모든 이미지를 받습니다.
1 | docker pull hyperledger/fabric-baseimage:x86_64-0.2.2 |
이미지를 다 받으셨으면 docker images
명령을 통해서 이미지 리스트를 확인합니다.
1 | docker images |
baseimage
의 경우 Tab를 latest로 태깅을 해야 합니다. 향후 블록체인의 운영모드에서 체인코드 디플로이를 할 경우 baseimage를 통해 체인코드 구동을 위한 Docker 이미지를 만드는데 hyplerledger/fabric-baseimage:latest
를 사용합니다.
1 | docker tag hyperledger/fabric-baseimage:x86_64-0.2.2 hyperledger/fabric-baseimgae:latest |
docker configuration
Docker-compose.yml
1 | membersrvc: |
Fabric 소스 준비하기
컴퓨터의 go path 내에 hyper ledger-fabric 의 코드를 받습니다.
1 | mkdir -p $GOPATH/src/github.com/hyperledger |
우선 예제 코드를 빌드하여 블록체인 네트워크 상에서 동작을 확인해 봅시다.
MacOS
1 | cd $GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 |
Windows
1 | cd %GOPATH%\src\github.com\hyperledger\fabric\examples\chaincode\go\chaincode_example02 |
위의 과정을 문제없이 완료하였으면 chaincode_example02
디렉토리 하위에 chaincode_example02 라는 이름으로 실행파일이 생성되었을 겁니다.(Windows는 chaincode_example02.exe ) 개발모드에서는 이 실행파일을 몇 개의 환경변수와 함께 실행하기만 하면 블록체인 런타임에서 트랜잭션 테스트가 가능한 상태가 됩니다.
스마트 컨트랙의 배포
체인 코드를 validating peer 컨테이너에 복사해 넣고 rest api로 deploy만 호출하면 블록체인 네트워크 전체에 코드가 적용됩니다.
다음은 운영모드에서 어떻게 체인크도그 반영되는지를 보여줍니다.
체인코드의 디플로이 프로세스
- 운영모드에서 체인코드 디플로이가 요청되면 요청을 받은 Peer는 블록체인 네트워크상에 연결되어 있느 모든 피어에게 동일한 체인코드를 전송합니다.
- 체인 코드를 받은 각 validating peer는 체인코드르 빌드하여 체인 구동을 위한 docker-image를 만들고, 실행하게 됩니다.
- validating peer는 docker remote api서비스에 체인코드를 위한 docker-image 생성 및 실행을 요청하고 docker-engine은 hyper ledger/fabric-baseimage를 이용하여 체인코드 docker이미지를 생성하고 실행합니다.
Validating Peer의 수정
docker machine은 VM 환경을 만들 때 기본적으로 https 통신을 하도록 docker 엔진을 구동하고, validating peer 가 docker engine api 에 요청하기 위해서는 블록체인의 ssl certificate를 가지고 있어야합니다.
이렇게 validating peer 가 ssl certificate를 가지기 위해 다음과 같은 절차를 거칩니다.
- 실행중인 validating peer 컨테이너에 certificate들을 복사합니다.
- 실행중인 Validating Peer 컨테이너에 터미널로 접속해서 설정파일을 수정합니다.
- Validating Peer에서 빠져나와서 실행중인 Validating Peer 컨테이너를 새로운 이미지 명으로 commit 합니다.
- 새로 생성된 이미지로 Validating Peer를 다시 구동합니다.
컨테이너에 ssl 인증서 복사
1 | 컨테이너에서 로컬로 복사 |
인증서 위치
1 | $ cd $HOME/.docker/machine/machines/blockchain |
도커 컨테이너 아이디 확인
1 | docker ps |
컨테이너에서 Peer의 설정파일에 인증서 위치를 명시
1 | docker exec -it 컨테이너ID bash |
docker의 bash 에 접근하였으면 다음과 같은 설정파일을 수정한다.
1 | cd membersrvc |
Comments