Hyperledger Composer
hyperledger composer(이하 컴포저)는 초보자가 패브릭을 좀 더 쉽게 사용할 수 있도록 도와주는 툴이다. 패브릭을 이용하기 위해서는 어려운 개념 습득들이 필요하고, 각 요소마다 각종 명령어를 구사해야 하기 때문에, 시작하기가 어려운 편인데 패브릭을 활용하면 조금 더 쉽게 hyperledger 구성을 할 수 있다. 컴포저 튜토리얼 링크: https://hyperledger.github.io/composer/latest/tutorials/developer-tutorial
튜토리얼은 Window PC에서 VMWare를 활용하여 우분투 16.04(hyperledger fabric 추천 OS) 에서 진행했다.
Installation
Install for Pre-requisties
- OS: Ubuntu 16.04
- Node: 8.9.0 (nvm 활용하면 버전 타겟팅이 쉬워진다. nvm install 8.9.0, nvm use 8.9.0)
- npm: 5.5.1
curl -O https://hyperledger.github.io/composer/latest/prereqs-ubuntu.sh
chmod u+x prereqs-ubuntu.sh
위 명령어를 통해 미리 선행되어야 할 요구조건을 만족할 수 있다. docker의 경우 기본적으로 sudoer에게 명령어 사용이 할당되므로, root user가 아닌 ubuntu에서는 유저 그룹에 추가가 필요하다. (링크)
Install the tools
이제 fabric을 쉽게 활용하는 것을 도와주는 composer 구성을 시작한다. install은 sudo, su 등을 생략하고 진행한다. (-g, global 필수)
npm install -g composer-cli@0.20
npm install -g composer-rest-server@0.20
npm install -g generator-hyperledger-composer@0.20
npm install -g yo
npm install -g composer-playground@0.20
여기서 playground는 hyperledger를 UI상에서 모델링할 수 있도록 도와주는 툴이고, composer-rest-server는 REST API Swagger를 제공해서, REST API를 실제로 호출할 수 있게 도와주는 툴이다.
설치가 완료되었으면 깃헙으로부터 composer를 가동할 수 있는 레포지토리를 받아 설치한다.
mkdir ~/fabric-tutorial && cd ~/fabric-tutorial
curl -O https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-servers/fabric-dev-servers.tar.gz
tar -xvf fabric-dev-servers.tar.gz
export FABRIC_VERSION=hlfv12
./downloadFabric.sh
./startFabric.sh
# playground 실행 (기본 8080포트)
composer-playground
http://localhost:8080 으로 접속하면 playground에 들어갈 수 있고, 여기서 네트워크를 모델링할 수 있으며, 완성한 내용을 export 하여 모델 파일(bna)을 다운받을 수 있다.
composer UI는 다루기 쉬우므로 곧바로 rest server로 넘어간다.
Composer REST API
먼저 빈 컴포저 네트워크의 프로젝트를 하나 만든다.
yo hyperledger-composer:businessnetwork // 비지니스 네트워크 생성
>> tutorial 입력
>> Apache-2.0 입력
>> org.ppuing.tutorial 입력
>> No 입력 // 미리 샘플코드 생김
위 명령어를 치면 샘플 프로젝트가(tutorial directory) 하나 생성된다.
그런 다음 text editor를 열어서 models.cto, logic.js, queries.qry 파일을 아래 그림처럼 수정한다.
models.cto
logic.js
queries.qry
이렇게 수정하고, 아래 명령어를 실행하면 초기 세팅이 완료된다.
./createPeerAdminCard.sh
composer archive create -t dir -n . // tutorial@0.0.1.bna (네트워크 파일 생성) => UI에서 export한 것과 같은 효과
composer network install --card PeerAdmin@hlfv1 --archiveFile tutorial@0.0.1.bna // 네트워크 설치 (PeerAdmin card는 맨 위 커맨드로 만든 상태)
composer network start --networkName tutorial --networkVersion 0.0.1 --networkAdmin admin --networkAdminEnrollSecret adminpw --card PeerAdmin@hlfv1 --file networkadmin.card // 새로 만든 네트워크 어드민의 카드 생성
composer card import --file networkadmin.card // 새로 만든 카드를 등록
composer network ping --card admin@tutorial // 핑으로 네트워크 연결 테스트
composer-rest-server // REST server 실행
>> admin@tutorial 입력
>> namespace 항상 쓰도록 선택
>> secure API: N
>> enable event publication: Y
>> TLS: N
여기서 docker로 받을 때 lastes version 문제가 있어서 에러가 날 수도 있다. 이 때에는 아래 명령어를 활용한다. 각종 장애 대응 링크
docker pull hyperledger/fabric-ccenv:1.4.3
docker tag hyperledger/fabric-ccenv:1.4.3 hyperledger/fabric-ccenv:latest
위와 같이 문제 없이 설정을 마치면, 아래 그림처럼 Swagger 가 열린다(기본 3000포트)
여기에선 CRUD가 모두 가능하며, asset(Balance), participant(Account), transaction(Payment) 를 추가, 수정, 조회, 삭제 모두 할 수 있다.
Query는 위에서 작성한대로 Payment의 paymentId로 필터링하여 조회하는 API 를 호출해볼 수 있다.
네트워크 업데이트
네트워크를 작성하면서 업데이트는 불가피하다. qry, cto, js 파일들을 수정한 후에는 packages.json파일을 수정해줘야 하며, 버전을 0.0.x => 0.0.y 로 올리면 된다. 그 다음 아래의 명령어를 실행한다.
composer archive create --sourceType dir --sourceName . -a tutorial@0.0.y.bna // 새 버전의 bna 파일 생성
composer network install --card PeerAdmin@hlfv1 --archiveFile tutorial@0.0.y.bna
composer network upgrade -c PeerAdmin@hlfv1 -n tutorial -V 0.0.y
composer network ping -c admin@tutorial | grep Business
composer-rest-server // 다시 실행 시작
이전 글 보기
2020/12/10 - [Blockchain] - Hyperledger Study (1) - Intro.
'개발 이야기 > Blockchain' 카테고리의 다른 글
Hyperledger Study (1) - Intro. (0) | 2020.12.10 |
---|
댓글