Skip to content

kincjf/learn-hyperledgerFabric

 
 

Repository files navigation

Hyperledger Fabric을 이용한 상품 거래 시스템 개발

개발환경은 우분투 16.04 기반으로 테스트하여 작성하였습니다.

사전 개발 환경 준비

  • Docker
    • 17.06.2-ce 이상
  • Docker-compose
    • 1.14.0 이상 버전
  • Golang
    • 1.10.x 버전 이상
  • Nodejs
    • 8.x 버전
  • NPM
    • 5.6
  • 우분투
    • g++ 설치
    apt install g++

VM 네트워크 설정

Docker swarm 네트워크 설정

  • VM1

VM1에서 다음의 명령을 실행

docker swarm init
docker swarm join-token manager

위의 명령을 실행하면 아래와 같은 메시지를 확인 할 수 있으며 VM2에서 명령을 실행합니다.

docker swarm join --token SWMTKN-1-3uhjzu2hfh9x3yhwzleh326wud22yaee65kqb88pczx4m0uwij-40ksc4c7pnmj9b3okxdmc9wqp 10.142.0.3:2377

다음의 명령을 통해서 도커 네트워크를 생성합니다.

docker network create --attachable --driver overlay my-net

github repository를 clone 합니다.


git clone https://github.com/mjkong/mymarket
cd mymarket

Fabric 네트워크를 위한 아티팩트 생성

인증서 생성

cryptogen generate --config=./crypto-config.yaml

아티팩트 생성


mkdir channel-artifacts
export FABRIC_CFG_PATH=$PWD
export CHANNEL_NAME=mymarketchannel
configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAME
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Store1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Store1MSP
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Store2MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Store2MSP

새로 생성된 인증서에서 CA Key파일의 정보를 YAML 파일에서 수정합니다.

  • ca.store1.mymarket.com 를 위한 인증서 위치

~/mymarket/crypto-config/peerOrganizations/store1.mymarket.com/ca$ ls
66c2bea4ef42056d1f1807c978c8ec783e403557e1311c8beb1118244092ac4f_sk  ca.store1.mymarket.com-cert.pem
~/mymarket/crypto-config/peerOrganizations/store1.mymarket.com/ca$

Key 파일명(66c2bea4ef42056d1f1807c978c8ec783e403557e1311c8beb1118244092ac4f_sk)을 node1.yaml의 다음 위치에 적용합니다.


  ca.store1.mymarket.com:
    image: hyperledger/fabric-ca
    environment:
      - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=my-net
      - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
      - FABRIC_CA_SERVER_CA_NAME=ca.store1.mymarket.com
      - FABRIC_CA_SERVER_CA_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.store1.mymarket.com-cert.pem
      - FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server-config/**66c2bea4ef42056d1f1807c978c8ec783e403557e1311c8beb1118244092ac4f_sk**
    ports:
      - "17054:7054"

위와 같이 ca.mymarket.com, node2.yaml에서 ca2.store2.mymarket.com 도 수정합니다.

Fabric 네트워크 실행

mymarket 프로젝트 디렉토리를 압축하여 VM2로 복사합니다.


cd ../
tar -cvf mymarket.tar mymarket

각 VM에서 도커 컨테이너를 실행합니다.

  • VM1

mymarket 디렉토리로 이동합니다.


docker-compose -f node1.yaml up -d
  • VM2

docker-compose -f node2.yaml up -d

go lang 설치

wget https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz

소스 받기

go get -u github.com/hyperledger/fabric

이벤트 소스 컴파일

sudo apt install -y libltdl-dev cd $GOPATH/src/github.com/hyperledger/fabric/examples/events/eventsclient go build

About

공무제 강사님과 프로그래머스가 운영하는 하이퍼레저 패브릭 관련 강의를 위한 저장소입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 62.7%
  • Go 18.4%
  • Shell 18.2%
  • Dockerfile 0.7%