Hyperledger Fabric v2.2를 알아보자.
Linux 환경이 갖춰져 있다면 5분만에 블록체인 네트워크를 활성화 시킬 수 있다!!😆
본 문서는 Linux환경에서 docker를 적극 활용한다.
OS | Memory | Disk |
---|---|---|
Ubuntu 18.04 | 2048MB | 20GB |
Hyperledger Fabric의 블록체인 네트워크는 docker container를 활용하여 편리한
운영 관리가 가능하다.
또한 Fabric core는 Github에 오픈소스로 공개되어 있다.
자신의 OS에 git과 docker, docker-compose를 설치하여 사전 준비를 완료하자.
sudo apt-get install git
# docker remove
sudo apt-get remove docker docker-engine docker.io
# docker install
sudo apt-get update && sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable"
sudo apt-get update && sudo apt-get install docker-ce
sudo usermod -aG docker $USER
# docker-compose install
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# check
docker --version
docker-compose --version
Fabric에서 제공하는 chaincode, shell script등 다양한 예시 코드와 binary, docker image 등을
얻기 위해 Fabric binaries를 다운받자.
# 현 위치에 fabric-samples 디렉토리가 생긴다.
curl -sSL https://bit.ly/2ysbOFE | bash -s -- 2.2.1 1.4.9
# Installed docker image 확인
docker images
Hyperledger Fabric은 잘 만들어진 Shell script를 제공한다.
이를 이용하여 채널 생성, 체인코드 배포 등을 누구나 쉽게 할 수 있다.
cd fabric-samples/test-network
./network.sh up
# 확인
docker ps -a
./network.sh createChannel
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go \
-ccl go
export PATH=${PWD}/../bin:$PATH
export FABRIC_CFG_PATH=$PWD/../config/
export ORDERER_CA=${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
# 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 chaincode invoke \
-o localhost:7050 \
--ordererTLSHostnameOverride orderer.example.com \
--tls \
--cafile $ORDERER_CA\
-C mychannel \
-n basic \
--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":[]}'
# 다음이 나오면 성공
# -> INFO 001 Chaincode invoke successful. result: status:200
peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'
# 다음이 나오면 성공
# [
# {"ID": "asset1", "color": "blue", "size": 5, "owner": "Tomoko", "appraisedValue": 300},
# {"ID": "asset2", "color": "red", "size": 5, "owner": "Brad", "appraisedValue": 400},
# {"ID": "asset3", "color": "green", "size": 10, "owner": "Jin Soo", "appraisedValue": 500},
# {"ID": "asset4", "color": "yellow", "size": 10, "owner": "Max", "appraisedValue": 600},
# {"ID": "asset5", "color": "black", "size": 15, "owner": "Adriana", "appraisedValue": 700},
# {"ID": "asset6", "color": "white", "size": 15, "owner": "Michel", "appraisedValue": 800}
# ]
./network.sh down
# 확인
docker ps -a
따봉도치의 기운을 받아 패브릭 마스터가 됐읍니다.