Blockchain

[Blockchain] 하이퍼레저 컴포저(Hyperledger Composer)

구루싸 2021. 7. 6. 09:06
반응형
SMALL

하이퍼레저 컴포저

  • 하이퍼레저 패브릭과 마찬가지로 리눅스 재단의 하이퍼레저 산하 프로젝트다.
  • 하이퍼레저 패브릭에서 개발을 지원하는 프레임워크다.
  • 하이퍼레저 패브릭 환경에 대응해 자바스크립트 기반 프레임워크를 통해 응용 프로그램을 만들 수 있다.

하이퍼레저 패브릭 비즈니스 네트워크(.bna file)

  • 비즈니스 네트워크는 모델, 트랜잭션 처리 기능을 담당하는 자바스크립트 기반의 스크립트, 접근 제어를 담당하는 ACL, 질의 정의를 수행하는 쿼리(Query)의 4가지 요소로 구성된다.
  • 위의 4개의 정의 파일을 BNA(Business Network Archive) 파일에 모아 템플릿으로 만들 수 있다.
# BNA 파일로 내보내기
composer archive create -a [BNA파일명] -sourceType dir -sourceName

# BNA 파일을 사용해 패브릭 환경으로 배포
composer network deploy -a [BNA파일명] -p 커넥션 프로파일명 -I PeerAdmin -s randomString

하이퍼레저 컴포저 모델(.cto file)

1. 참가자(Participants)

  • 거래를 수행하는 참가자

2. 자산(Assets)

  • 거래 대상 상품

3. 거래(Transactions)

  • 참가자 간에 일어나는 자산의 거래

하이퍼레저 컴포저 트랜잭션 프로세서(.js @transaction 사용)

  • 모델이 기본적인 클래스라면 비즈니스 로직을 구현할 때는 트랜잭션 프로세서를 사용한다.
  • 트랜잭션 프로세서는 블록체인 접속 API를 이용한 트랜잭션이 실행된 시점에 자산 등의 데이터 변경을 반영할 수 있게 한다.
  • 모델별로 레지스트리(Registry) API로는 ParticipantRegistry, AssetRegistry, TransactionRegistry가 있다.

하이퍼레저 컴포저 쿼리

  • 쿼리는 모델 데이터의 검색을 위해 사용한다.
  • SQL과 유사한 문법을 사용한다.

하이퍼레저 컴포저 ACL

  • ACL은 모델에 대해 CRUD를 참여자 유형 또는 인스턴스별로 제어하는 기능이다.

하이퍼레저 컴포저 개발 도구

  • Node.js SDK
  • Playground

하이퍼레저 컴포저 구성 요소

 


하이퍼레저 컴포저 환경 구축

1. composer-cli 설치

  • composer-cli는 하이퍼레저 컴포저를 조작하기 위한 기본적인 커맨드라인 도구다.
npm install -g install composer-cli@0.20

2. composer-rest-server 설치

  • composer-rest-server는 하이퍼레저 컴포저를 사용해 만든 Assets나 체인코드에 접속하기 위한 REST API를 만들 때 사용한다.
npm install -g composer-rest-server@0.20.5

3. Yeoman과 generator-hyperledger-composer 설치

  • Yeoman은 웹 응용 프로그램의 템플릿 생성 도구로 Yeoman 에코시스템은 generator라는 단위로 템플릿을 관리하도록 돼 있다.
  • generator-hyperledger-composer는 하이퍼레저 컴포저에서 응용 프로그램을 만들기 위한 템플릿이다.
npm install -g yo
npm install -g generator-hyperledger-composer@0.20.5

4. Composer Playground 설치

npm install -g composer-playground@0.20.5

5. fabric-dev-servers 설치

  • 개발, 테스트를 위한 헬퍼 스크립트를 설치한다.
  • 하이퍼레저 컴포저로 구축한 응용 프로그램은 이 스크립트로 작성된 하이퍼레저 패브릭 네트워크를 사용해 테스트한다.
curl -O https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-servers/fabric-dev-servers.tar.gz
tar -zxvf fabric-dev-servers.tar.gz

6. Fabric Version 환경 변수 설정 및 PeerAdmin 네트워크 카드 작성

export FABRIC_VERSION=hlfv12
./createPeerAdminCard.sh

7. composer-runtime 및 composer network 설치

npm install composer-runtime --save
composer network install --archiveFile [BNA 파일] --card [peer-admin-card]

8. 배포 및 실행

composer network start --card PeerAdmin@hlfv1 --networkAdmin admin --networkAdminEnrollSecret adminpw --archiveFile [BNA 파일] --file networkadmin.card

커넥션 프로파일

  • 하이퍼레저 컴포저에서 하이퍼레저 패브릭 환경에 접속하기 위한 내용을 정의한 파일이 커넥션 프로파일이다.
  • JSON 형식으로 구성돼 있으며 여러 접속 설정을 저장할 수 있다.
{
  "name": "hlfv1",
  "x-type": "hlfv1",
  "x-commitTimeout": 300,
  "version": "1.0.0",
  "client": {
    "organization": "Org1",
    "connection": {
      "timeout": {
        "peer": {
          "endorser": "300",
          "eventHub": "300",
          "eventReg": "300"
        },
        "orderer": "300"
      }
    }
  },
  "channels": {
    "composerchannel": {
      "orderers": [
        "orderer.example.com"
      ],
      "peers": {
        "peer0.org1.example.com": {
          "endorsingPeer": true,
          "chaincodeQuery": true,
          "ledgerQuery": true,
          "eventSource": true
        }
      }
    }
  },
  "orgarnizations": {
    "Org1": {
      "mspid": "Org1MSP",
      "peers": [
        "peer0.org1.example.com"
      ],
      "certificateAuthorities": [
        "ca.org1.example.com"
      ]
    }
  },
  "orderers": {
    "orderer.example.com": {
      "url": "grpc://orderer.example.com:7050"
    }
  },
  "peers": {
    "peer0.org1.example.com": {
      "url": "grpc://peer0.org1.example.com:7051"
    }
  },
  "certificateAuthorities": {
    "ca.org1.example.com": {
      "url": "http://ca.org1.example.com:7054",
      "caName": "ca.org1.example.com"
    }
  }
}

비즈니스 네트워크에 접속하기 위한 API

1. Admin API

  • Admin API는 컴포저 응용 프로그램을 관리하는 기능을 가진 API로서 AdminConnection 클래스에 정의돼 있다.
  • AdminConnection 클래스를 사용하면 하이퍼레저 컴포저 런타임과 연결할 수 있다.
  • 비즈니스 네트워크 정의를 배포하거나 커넥션 프로파일 스토어 안에 커넥션 프로파일 문서를 보관하는 일 등이 가능하다.

2. Client API

  • Client API는 배포된 컴포저 응용 프로그램에 자산을 추가하거나 트랜잭션을 등록하는 기능을 가진 API로서 몇 개의 클래스로 구성돼 있다.

 

반응형
LIST