"하이퍼레저 컴포저"의 두 판 사이의 차이
(새 문서: 하이퍼레저 컴포저(Hyperledger Composer)는 하이퍼레저 패브릭(Hyperledger Fabric)에서 제공하는 별도의 개발 툴로써 REST(Representational State Transfer) AP...) |
잔글 |
||
(사용자 5명의 중간 판 10개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | 하이퍼레저 컴포저(Hyperledger Composer)는 하이퍼레저 패브릭(Hyperledger Fabric)에서 제공하는 별도의 개발 | + | [[파일:하이퍼레저 컴포저 로고.png|썸네일|200픽셀|'''하이퍼레저 컴포저'''(Hyperledger Composer)]] |
+ | [[파일:하이퍼레저 컴포저 글자.png|썸네일|300픽셀|'''하이퍼레저 컴포저'''(Hyperledger Composer)]] | ||
+ | |||
+ | '''하이퍼레저 컴포저'''(Hyperledger Composer)는 [[하이퍼레저 패브릭]](Hyperledger Fabric)에서 제공하는 별도의 개발 툴로서, [[레스트]](REST; Representational State Transfer) 방식의 [[API]]를 지원하는 모델링 언어이다. 하이퍼레저 프로젝트에서 가장 먼저 출시된 툴로, [[블록체인]] 비즈니스 네트워크를 구축하는 데 사용된다. 또한 스마트 계약 및 원장 간 계약을 작동시킨다. 하이퍼레저 컴포저는 블록체인 비즈니스 네트워크 구축 목적의 공동 작업 도구로 스마트 계약 개발 및 분산 원장 내의 배포를 가속한다. | ||
== 개요 == | == 개요 == | ||
− | 하이퍼레저 컴포저는 블록체인 응용 프로그램을 보다 쉽게 개발할 수 있는 광범위하고 개방적인 개발 도구 세트이자 프레임 워크이다. 하이퍼레저 컴포저를 사용하여 유스 케이스(Use Case)를 신속하게 개발하고 몇 개월이 아닌 몇 주 내에 블록체인 솔루션이 배포된다. 컴포저를 사용하면 비즈니스 네트워크를 모델링하고 기존 시스템 및 데이터를 블록체인 응용 프로그램과 통합이 가능하다. 하이퍼레저 컴포저는 기존 하이퍼레저 패브릭 블록체인 인프라 및 런타임을 지원하며, 지정된 비즈니스 네트워크 참가자의 정책에 따라 | + | 하이퍼레저 컴포저는 [[블록체인]] 응용 프로그램을 보다 쉽게 개발할 수 있는 광범위하고 개방적인 개발 도구 세트이자 프레임 워크이다. 하이퍼레저 컴포저를 사용하여 유스 케이스(Use Case)를 신속하게 개발하고 몇 개월이 아닌 몇 주 내에 블록체인 솔루션이 배포된다. 컴포저를 사용하면 비즈니스 네트워크를 모델링하고 기존 시스템 및 데이터를 블록체인 응용 프로그램과 통합이 가능하다. 하이퍼레저 컴포저는 기존 [[하이퍼레저 패브릭]] 블록체인 인프라 및 런타임을 지원하며, 지정된 비즈니스 네트워크 참가자의 정책에 따라 [[트랜잭션]]의 유효성을 확인하기 위해 플러그 가능한 블록체인 합의 프로토콜을 지원한다. 일상적인 응용 프로그램은 비즈니스 네트워크에서 데이터를 소비하여 최종 사용자에게 간단하고 제어된 액세스 포인트를 제공한다. 하이퍼레저 컴포저를 사용하면 기존 자산 및 관련 트랜잭션이 포함된 현재 비즈니스 네트워크를 신속하게 모델링한다. 자산(Assets)은 유형 또는 무형의 재화, 서비스인데 비즈니스 네트워크 모델의 일부로 자산과 상호 작용하는 트랜잭션을 정의한다. 비즈니스 네트워크에는 여러 비즈니스 네트워크에서 고유 ID와 연관되어 상호 작용하는 참가자도 포함된다.<ref name=“로티”>로티, 〈[https://racoonlotty.tistory.com/21 Hyperledger Composer]〉, 《티스토리》, 2017-12-28</ref> |
== 특징 == | == 특징 == | ||
=== 작동 방법 === | === 작동 방법 === | ||
− | 참가자는 구매자, 판매자 또는 부동산 중개인으로서의 역할에 따라 제한된 거래에 대한 액세스 권한을 가진다. 부동산 중개인은 공개 목록을 보고 제안을 하기 위한 간단한 사용자 인터페이스로 구매자와 판매자를 소개하는 응용 프로그램을 작성한다. 이 비즈니스 네트워크는 기존 재고 시스템과 통합되어 새로운 주택을 자산으로 추가하고 판매된 부동산을 제거한다. 토지 등록 기관이 구매자와 상호 작용하여 토지의 소유권을 이전하는 경우와 같이 관련 당사자를 참가자로 등록할 수 있다. 하이퍼레저 컴포저는 모델링 언어와 API 집합을 포함하는 프로그래밍 모델로, 참가자가 자산을 교환하는 | + | 참가자는 구매자, 판매자 또는 부동산 중개인으로서의 역할에 따라 제한된 거래에 대한 액세스 권한을 가진다. 부동산 중개인은 공개 목록을 보고 제안을 하기 위한 간단한 사용자 인터페이스로 구매자와 판매자를 소개하는 응용 프로그램을 작성한다. 이 비즈니스 네트워크는 기존 재고 시스템과 통합되어 새로운 주택을 자산으로 추가하고 판매된 부동산을 제거한다. 토지 등록 기관이 구매자와 상호 작용하여 토지의 소유권을 이전하는 경우와 같이 관련 당사자를 참가자로 등록할 수 있다. 하이퍼레저 컴포저는 모델링 언어와 [[API]] 집합을 포함하는 프로그래밍 모델로, 참가자가 자산을 교환하는 [[트랜잭션]]을 보낼 수 있게 해주는 비즈니스 네트워크와 응용 프로그램을 빠르게 정의하고 배포한다.<ref name=“스팀잇”>racoon02cho, 〈[https://steemit.com/hyperledger/@racoon02cho/hyperledger-composer Hyperledger Composer의 주요 개념]〉, 《스팀잇》, 2018</ref> |
=== 구성 요소 === | === 구성 요소 === | ||
− | 하이퍼레저 컴포저 플레이그라운드(Hyperledger Composer Playground)라는 브라우저 기반 | + | 하이퍼레저 컴포저 플레이그라운드(Hyperledger Composer Playground)라는 브라우저 기반 [[UI]]를 사용하여 하이퍼레저 컴포저를 경험하게 된다. 플레이그라운드는 설치가 필요 없는 호스팅 버전이나 오프라인 샘플 비즈니스 네트워크 편집 및 테스트에 적합한 로컬 설치로 사용 가능하다.<ref name=“스팀잇”></ref> |
=== 주요 개념 === | === 주요 개념 === | ||
− | + | * '''블록체인 상태 저장소''' : 비즈니스 네트워크를 통해 제출된 모든 [[트랜잭션]]은 [[블록체인]] 원장에 저장되며 현재 자산 및 참가자 상태는 블록체인 상태 데이터베이스에 저장된다.<ref name=“스팀잇”></ref> 블록체인은 원장과 상태 [[데이터베이스]]를 피어 집합에 분산시키고 원장 및 상태 데이터베이스에 대한 업데이트가 [[합의 알고리즘]]을 사용하여 모든 피어 간에 일관성 있게 유지되도록 한다. | |
− | 비즈니스 네트워크를 통해 제출된 모든 | + | * '''커넥션 프로필''' : 하이퍼레저 컴포저는 커넥션 프로필(Connection Profile)을 사용하여 런타임에 연결한다. 커넥션 프로필은 사용자의 홈 디렉토리에 있거나 환경 변수에서 올 수 있는 JSON문서이며 컴포저 [[API]](Comper API) 또는 명령 행 도구를 사용할 때 이름으로 참조된다. 커넥션 프로필을 사용하면 코드와 스크립트를 하나의 런타임 인스턴스에서 다른 런타임 인스턴스로 쉽게 전송 할 수 있다.<ref name=“스팀잇”></ref> |
− | + | ||
− | 하이퍼레저 컴포저는 커넥션 프로필(Connection Profile)을 사용하여 런타임에 연결한다. 커넥션 프로필은 사용자의 홈 디렉토리에 있거나 환경 변수에서 올 수 있는 JSON문서이며 컴포저 API(Comper API) 또는 명령 행 도구를 사용할 때 이름으로 참조된다. 커넥션 프로필을 사용하면 코드와 스크립트를 하나의 런타임 인스턴스에서 다른 런타임 인스턴스로 쉽게 전송 할 수 있다.<ref name=“스팀잇”></ref> | + | * '''자산''' : 자산(Assets)은 유형 또는 무형의 재화, 서비스이며 [[레지스트리]]에 저장된다. 자산은 비즈니스 네트워크의 거의 모든 것을 의미한다. 자산에는 고유한 식별자가 있어야 하지만 그 외에 정의한 속성을 포함할 수 있다. 자산은 다른 자산이나 참가자와 관련된 것이다.<ref name=“로티”></ref> |
− | + | ||
− | 자산(Assets)은 유형 또는 무형의 재화, 서비스이며 | + | * '''참가자''' : 참가자(Participants)는 비즈니스 네트워크의 구성원이다. 그들은 자산을 소유하고 거래를 할 수 있다. 참여자 유형은 모델화되며 자산과 마찬가지로 식별자가 있어야 하며 필요에 따라 다른 속성을 가질 수 있다.<ref name=“로티”></ref> |
− | + | ||
− | 참가자(Participants)는 비즈니스 네트워크의 구성원이다. 그들은 자산을 소유하고 거래를 할 수 있다. 참여자 유형은 모델화되며 자산과 마찬가지로 식별자가 있어야 하며 필요에 따라 다른 속성을 가질 수 있다.<ref name=“로티”></ref> | + | * '''신원''' : 비즈니스 네트워크 내에서 참가자는 신원과 연관된다. ID 카드는 ID, 컨넥션 프로필 및 메타 데이터의 조합이다. ID 카드는 비즈니스 네트워크에 연결하는 프로세스를 단순화하고 비즈니스 네트워크 외부의 ID 개념을 특정 비즈니스 네트워크 및 커넥션 프로필과 연관된 ID의 [[지갑]]으로 확장한다.<ref name=“로티”></ref> |
− | + | ||
− | 비즈니스 네트워크 내에서 참가자는 신원과 연관된다. ID 카드는 ID, 컨넥션 프로필 및 메타 데이터의 조합이다. ID 카드는 비즈니스 네트워크에 연결하는 프로세스를 단순화하고 비즈니스 네트워크 외부의 ID 개념을 특정 비즈니스 네트워크 및 커넥션 프로필과 연관된 ID의 | + | * '''거래''' : 거래(Transaction)는 참가자가 자산과 상호 작용하는 [[메커니즘]]이다. 이는 참가자가 경매에 있는 자산에 입찰을 하거나 경매인이 경매를 종결로 표시하여 자산의 소유권을 최고 입찰자에게 자동으로 이전하는 것처럼 간단하다.<ref name=“로티”></ref> |
− | + | ||
− | 거래(Transaction)는 참가자가 자산과 상호 작용하는 | + | * '''쿼리''' : 쿼리(Queries)는 세계 상태의 블록체인에 대한 데이터를 반환하는 데 사용된다. 쿼리는 비즈니스 네트워크 내에서 정의되며 간단한 사용자 정의를 위한 변수 매개 변수를 포함한다. 쿼리를 사용하여 [[블록체인]] 네트워크에서 데이터를 쉽게 추출 가능하다. 쿼리는 하이퍼레저 컴포저 [[API]]를 사용하여 전송된다.<ref name=“스팀잇”></ref> |
− | + | ||
− | 쿼리(Queries)는 세계 상태의 블록체인에 대한 데이터를 반환하는 데 사용된다. 쿼리는 비즈니스 네트워크 내에서 정의되며 간단한 사용자 정의를 위한 변수 매개 변수를 포함한다. 쿼리를 사용하여 블록체인 네트워크에서 데이터를 쉽게 추출 가능하다. 쿼리는 하이퍼레저 컴포저 | + | * '''이벤트''' : 이벤트(Events)는 자산 또는 참여자와 동일한 방식으로 비즈니스 네트워크에서 정의된다. 이벤트가 정의되면 거래 프로세서 기능에 의해 이벤트를 발생시켜 외부 시스템에 중요한 일이 발생했을 때 알린다. [[애플리케이션]]은 컴포저 [[클라이언트]] [[API]]를 통해 이벤트에 가입한다.<ref name=“로티”></ref> |
− | + | ||
− | 이벤트(Events)는 자산 또는 참여자와 동일한 방식으로 비즈니스 네트워크에서 정의된다. 이벤트가 정의되면 거래 프로세서 기능에 의해 이벤트를 발생시켜 외부 시스템에 중요한 일이 발생했을 때 알린다. | + | * '''액세스 제어''' : 비즈니스 네트워크에는 일련의 액세스 제어 규칙이 포함된다. 액세스 제어 규칙을 사용하면 참가자가 비즈니스 네트워크의 자산 및 어떤 조건에 액세스할 수 있는지를 세밀하게 제어한다. 액세스 제어 언어는 정교한 조건을 선언적으로 파악하기에 충분할 만큼 풍부하다. [[트랜잭션]] 프로세스 함수 논리에서 액세스 제어를 외부화하면 검사, 디버그, 개발 및 유지 관리가 더 쉬워진다. <ref name=“로티”></ref> |
− | + | ||
− | 비즈니스 네트워크에는 일련의 액세스 제어 규칙이 포함된다. 액세스 제어 규칙을 사용하면 참가자가 비즈니스 네트워크의 자산 및 어떤 조건에 액세스할 수 있는지를 세밀하게 제어한다. 액세스 제어 언어는 정교한 조건을 선언적으로 파악하기에 충분할 만큼 풍부하다. 트랜잭션 프로세스 함수 논리에서 액세스 제어를 외부화하면 검사, 디버그, 개발 및 유지 관리가 더 쉬워진다. <ref name=“로티”></ref> | + | * '''히스토리안 등록''' : 히스토리안(Historian)은 참가자 및 제출한 신원을 포함하여 성공적인 거래를 기록하는 전문화 된 레지스트리이다. 히스토리안은 히스토리안레코드 [[트랜잭션]]을 자산으로 저장하며 하이퍼레저 컴포저 시스템 네임 스페이스에 정의되어 있다.<ref name=“스팀잇”></ref> |
− | |||
− | 히스토리안(Historian)은 참가자 및 제출한 신원을 포함하여 성공적인 거래를 기록하는 전문화 된 레지스트리이다. 히스토리안은 히스토리안레코드 | ||
=== 솔루션 아키텍처 === | === 솔루션 아키텍처 === | ||
− | 하이퍼레저 컴포저를 사용하면 아키텍처와 개발자가 전체 스택 블록체인 솔루션을 신속하게 만들 수 있다. 즉, 블록체인에서 실행되는 비즈니스 로직,웹 또는 모바일 | + | 하이퍼레저 컴포저를 사용하면 아키텍처와 개발자가 전체 스택 블록체인 솔루션을 신속하게 만들 수 있다. 즉, 블록체인에서 실행되는 비즈니스 로직,웹 또는 모바일 [[애플리케이션]]에 블록체인 로직을 노출하는 REST [[API]]는 물론 기존의 전자 시스템과 [[블록체인]]을 통합할 수 있다. 하이퍼레저 컴포저는 다음과 같은 구성 요소로 이루어져 있다. <ref name=“로티”></ref> |
− | + | ||
− | + | * '''실행 런타임''': 하이퍼레저 컴포저는 다양한 플러그 가능한 런타임을 지원하도록 설계되었으며 현재 세 가지 런타임(Runtimes) 구현이 가능하다. [[하이퍼레저 패브릭]] 버전 1.0. 상태는 분산 원장에 저장된다. 웹 페이지 내에서 실행되며 플레이그라운드(Playground)에서 사용되고 상태는 브라우저 로컬 저장소에 저장된다. 임베디드(Embedded)는 노드Js(Node.js) 프로세스 내에서 실행되며 주로 비즈니스 로직 테스트에 사용되고 상태는 메모리 내장 키 - 값 저장소에 저장된다.<ref name=“로티”></ref> | |
− | + | ||
− | + | * ''' 커넥션 프로필''': 커넥션 프로필(Connection Profiles)은 하이퍼레저 컴포저에서 실행 런타임에 연결하는 방법을 지정하는 데 사용된다. 각 실행 런타임 유형마다 다른 구성 옵션이 있다. 커넥션 프로필은 이름으로 참조되고 JSON 형식의 커넥션 프로필 문서는 사용자의 홈 디렉토리에서 확인된다.<ref name=“스팀잇”></ref> | |
− | + | ||
− | + | * '''자바 스크립트 SDK''' : 하이퍼레저 컴포저 자바스크립트(Hyperledger Composer JavaScript) SDK는 개발자가 배포 된 비즈니스 네트워크를 관리하고 상호 작용할 수 있는 응용 프로그램을 만들 수 있게 해주는 노드.js API 세트이다. [[API]]는 두 개의 npm 모듈로 나뉜다. 비즈니스 네트워크에 트랜잭션을 제출하거나 자산 및 참가자에 대한 생성, 읽기, 업데이트, 삭제 작업을 수행하는 데 사용되는 컴포저 [[클라이언트]] 부분과 비즈니스 네트워크를 관리하는 데 사용하는 컴포저- 관리자 부분이으로 나뉜다. 모든 API의 세부 사항은 JSDocs로 제공된다. <ref name=“로티”></ref> | |
− | + | ||
− | * | + | * '''컴포저 클라이언트''' : 컴포저 클라이언트(composer-client) 모듈은 대개 응용 프로그램의 로컬 종속성으로 설치된다. 비즈니스 응용 프로그램이 비즈니스 네트워크에 연결하여 자산, 참여자 및 트랜잭션 제출에 액세스하는 데 사용되는 [[API]]를 제공한다. 프로덕션 환경에서는 응용 프로그램의 직접 종속성으로 추가해야 하는 모듈이다.<ref name=“로티”></ref> |
− | + | ||
− | 하이퍼레저 컴포저는 다양한 플러그 가능한 런타임을 지원하도록 설계되었으며 현재 세 가지 런타임(Runtimes) 구현이 가능하다. 하이퍼레저 패브릭 버전 1.0. 상태는 분산 원장에 저장된다. 웹 페이지 내에서 실행되며 플레이그라운드(Playground)에서 사용되고 상태는 브라우저 로컬 저장소에 저장된다. 임베디드(Embedded)는 노드Js(Node.js) 프로세스 내에서 실행되며 주로 비즈니스 로직 테스트에 사용되고 상태는 메모리 내장 키 - 값 저장소에 저장된다.<ref name=“로티”></ref> | + | * '''컴포저 관리자''' : 컴포저 관리자(composer-admin) 모듈은 일반적으로 관리 응용 프로그램의 로컬 종속성으로 설치된다. 이 API를 사용하면 비즈니스 네트워크 정의를 만들고 배포할 수 있다. |
− | + | ||
− | 커넥션 프로필(Connection Profiles)은 하이퍼레저 컴포저에서 실행 런타임에 연결하는 방법을 지정하는 데 사용된다. 각 실행 런타임 유형마다 다른 구성 옵션이 있다. 커넥션 프로필은 이름으로 참조되고 JSON 형식의 커넥션 프로필 문서는 사용자의 홈 디렉토리에서 확인된다.<ref name=“스팀잇”></ref> | + | * '''REST 서버''' : 하이퍼레저 컴포저 REST 서버(Hyperledger Composer REST Server)는 비즈니스 네트워크용 오픈 API REST API를 자동으로 생성한다. 루프백(LOOPBack) 기술에 기반한 REST 서버는 비즈니스 네트워크의 작성자 모델을 오픈 [[API]] 정의로 변환하고 런타임에 자산 및 참가자에 대한 작성, 읽기, 업데이트 및 삭제 지원을 구현하고 처리 또는 검색을 위해 트랜잭션을 제출할 수 있도록 한다. <ref name=“로티”></ref> |
− | + | ||
− | 하이퍼레저 컴포저 자바스크립트(Hyperledger Composer JavaScript) SDK는 개발자가 배포 된 비즈니스 네트워크를 관리하고 상호 작용할 수 있는 응용 프로그램을 만들 수 있게 해주는 노드.js API 세트이다. | + | * '''루프백 커넥터''' : 하이퍼레저 컴포저 루프백 커넥터(Hyperledger Composer LoopBack Connector)는 컴포저 REST 서버에서 사용하지만 루프백을 기본적으로 지원하는 통합 도구로 독립 실행 형으로 사용할 수 있다. 또는 루프백 도구와 함께 사용하여 REST API보다 정교한 사용자 정의를 작성 가능하다. <ref name=“로티”></ref> |
− | + | ||
− | 컴포저 클라이언트(composer-client) 모듈은 대개 응용 프로그램의 로컬 종속성으로 설치된다. 비즈니스 응용 프로그램이 비즈니스 네트워크에 연결하여 자산, 참여자 및 트랜잭션 제출에 액세스하는 데 사용되는 | + | * '''플레이그라운드''' : 하이퍼레저 컴포저 플레이그라운드(Playground)는 비즈니스 네트워크를 정의하고 테스트하는 웹 사용자 인터페이스(Web User Interface)이다. 비즈니스 분석가는 샘플을 신속하게 가져오고 웹 또는 하이퍼레저 패브릭 런타임에서 실행되는 비즈니스 논리를 프로토타입화 한다.<ref name=“스팀잇”></ref> |
− | + | ||
− | 컴포저 관리자(composer-admin) 모듈은 일반적으로 관리 응용 프로그램의 로컬 종속성으로 설치된다. 이 API를 사용하면 비즈니스 네트워크 정의를 만들고 배포할 수 있다. | + | * '''요맨 코드 생성기''' : 하이퍼레저 컴포저는 오픈소스 요맨 코드 생성기(Yeoman Code Generators) 프레임 워크를 사용하여 [[스켈레톤]] 프로젝트를 만든다.<ref name=“로티”></ref> |
− | + | ||
− | 하이퍼레저 컴포저 REST 서버(Hyperledger Composer REST Server)는 비즈니스 네트워크용 오픈 API REST API를 자동으로 생성한다. 루프백(LOOPBack) 기술에 기반한 REST 서버는 비즈니스 네트워크의 작성자 모델을 오픈 API 정의로 변환하고 런타임에 자산 및 참가자에 대한 작성, 읽기, 업데이트 및 삭제 지원을 구현하고 처리 또는 검색을 위해 트랜잭션을 제출할 수 있도록 한다. <ref name=“로티”></ref> | + | * '''VS코드 및 아톰 편집기 확장''' : 하이퍼레저 컴포저에는 VS코드(VSCode) 및 아톰(Atom)에 대한 커뮤니티 기여 편집기 확장 기능이 있다. VS코드 확장은 매우 강력하고 컴포저 모델과 ACL 파일의 유효성을 검사하여 구문 강조, 오류 감지 등 기능을 제공한다. 아톰(Atom) 플러그인은 훨씬 초보적으로 기본 구문 강조만 제공한다.<ref name=“로티”></ref> |
− | |||
− | 하이퍼레저 컴포저 루프백 커넥터(Hyperledger Composer LoopBack Connector)는 컴포저 REST 서버에서 사용하지만 루프백을 기본적으로 지원하는 통합 도구로 독립 실행 형으로 사용할 수 있다. 또는 루프백 도구와 함께 사용하여 REST API보다 정교한 사용자 정의를 작성 가능하다. <ref name=“로티”></ref> | ||
− | |||
− | 하이퍼레저 컴포저 플레이그라운드(Playground)는 비즈니스 네트워크를 정의하고 테스트하는 웹 사용자 인터페이스(Web User Interface)이다. 비즈니스 분석가는 샘플을 신속하게 가져오고 웹 또는 하이퍼레저 패브릭 런타임에서 실행되는 비즈니스 논리를 프로토타입화 한다.<ref name=“스팀잇”></ref> | ||
− | |||
− | 하이퍼레저 컴포저는 오픈소스 요맨 코드 생성기(Yeoman Code Generators) 프레임 워크를 사용하여 스켈레톤 프로젝트를 만든다.<ref name=“로티”></ref> | ||
− | |||
− | 하이퍼레저 컴포저에는 VS코드(VSCode) 및 아톰(Atom)에 대한 커뮤니티 기여 편집기 확장 기능이 있다. VS코드 확장은 매우 강력하고 컴포저 모델과 ACL 파일의 유효성을 검사하여 구문 강조, 오류 감지 등 기능을 제공한다. 아톰(Atom) 플러그인은 훨씬 초보적으로 기본 구문 강조만 제공한다.<ref name=“로티”></ref> | ||
== 최근 동향 == | == 최근 동향 == | ||
70번째 줄: | 63번째 줄: | ||
== 참고자료 == | == 참고자료 == | ||
+ | * 하이퍼레저 컴포저 공식 홈 페이지 - https://www.hyperledger.org/projects/composer | ||
* 로티, 〈[https://racoonlotty.tistory.com/21 Hyperledger Composer]〉, 《티스토리》, 2017-12-28 | * 로티, 〈[https://racoonlotty.tistory.com/21 Hyperledger Composer]〉, 《티스토리》, 2017-12-28 | ||
* racoon02cho, 〈[https://steemit.com/hyperledger/@racoon02cho/hyperledger-composer Hyperledger Composer의 주요 개념]〉, 《스팀잇》, 2018 | * racoon02cho, 〈[https://steemit.com/hyperledger/@racoon02cho/hyperledger-composer Hyperledger Composer의 주요 개념]〉, 《스팀잇》, 2018 | ||
76번째 줄: | 70번째 줄: | ||
* Steven Perry, "[https://developer.ibm.com/tutorials/cl-model-test-your-blockchain-network-with-hyperledger-composer-playground/ Model and test your blockchain network]", ''IBM Develop'', 2017-01 | * Steven Perry, "[https://developer.ibm.com/tutorials/cl-model-test-your-blockchain-network-with-hyperledger-composer-playground/ Model and test your blockchain network]", ''IBM Develop'', 2017-01 | ||
− | + | == 같이 보기 == | |
− | {{블록체인 | + | * [[하이퍼레저]] |
+ | |||
+ | {{블록체인 솔루션|검토 필요}} |
2021년 5월 31일 (월) 17:48 기준 최신판
하이퍼레저 컴포저(Hyperledger Composer)는 하이퍼레저 패브릭(Hyperledger Fabric)에서 제공하는 별도의 개발 툴로서, 레스트(REST; Representational State Transfer) 방식의 API를 지원하는 모델링 언어이다. 하이퍼레저 프로젝트에서 가장 먼저 출시된 툴로, 블록체인 비즈니스 네트워크를 구축하는 데 사용된다. 또한 스마트 계약 및 원장 간 계약을 작동시킨다. 하이퍼레저 컴포저는 블록체인 비즈니스 네트워크 구축 목적의 공동 작업 도구로 스마트 계약 개발 및 분산 원장 내의 배포를 가속한다.
개요[편집]
하이퍼레저 컴포저는 블록체인 응용 프로그램을 보다 쉽게 개발할 수 있는 광범위하고 개방적인 개발 도구 세트이자 프레임 워크이다. 하이퍼레저 컴포저를 사용하여 유스 케이스(Use Case)를 신속하게 개발하고 몇 개월이 아닌 몇 주 내에 블록체인 솔루션이 배포된다. 컴포저를 사용하면 비즈니스 네트워크를 모델링하고 기존 시스템 및 데이터를 블록체인 응용 프로그램과 통합이 가능하다. 하이퍼레저 컴포저는 기존 하이퍼레저 패브릭 블록체인 인프라 및 런타임을 지원하며, 지정된 비즈니스 네트워크 참가자의 정책에 따라 트랜잭션의 유효성을 확인하기 위해 플러그 가능한 블록체인 합의 프로토콜을 지원한다. 일상적인 응용 프로그램은 비즈니스 네트워크에서 데이터를 소비하여 최종 사용자에게 간단하고 제어된 액세스 포인트를 제공한다. 하이퍼레저 컴포저를 사용하면 기존 자산 및 관련 트랜잭션이 포함된 현재 비즈니스 네트워크를 신속하게 모델링한다. 자산(Assets)은 유형 또는 무형의 재화, 서비스인데 비즈니스 네트워크 모델의 일부로 자산과 상호 작용하는 트랜잭션을 정의한다. 비즈니스 네트워크에는 여러 비즈니스 네트워크에서 고유 ID와 연관되어 상호 작용하는 참가자도 포함된다.[1]
특징[편집]
작동 방법[편집]
참가자는 구매자, 판매자 또는 부동산 중개인으로서의 역할에 따라 제한된 거래에 대한 액세스 권한을 가진다. 부동산 중개인은 공개 목록을 보고 제안을 하기 위한 간단한 사용자 인터페이스로 구매자와 판매자를 소개하는 응용 프로그램을 작성한다. 이 비즈니스 네트워크는 기존 재고 시스템과 통합되어 새로운 주택을 자산으로 추가하고 판매된 부동산을 제거한다. 토지 등록 기관이 구매자와 상호 작용하여 토지의 소유권을 이전하는 경우와 같이 관련 당사자를 참가자로 등록할 수 있다. 하이퍼레저 컴포저는 모델링 언어와 API 집합을 포함하는 프로그래밍 모델로, 참가자가 자산을 교환하는 트랜잭션을 보낼 수 있게 해주는 비즈니스 네트워크와 응용 프로그램을 빠르게 정의하고 배포한다.[2]
구성 요소[편집]
하이퍼레저 컴포저 플레이그라운드(Hyperledger Composer Playground)라는 브라우저 기반 UI를 사용하여 하이퍼레저 컴포저를 경험하게 된다. 플레이그라운드는 설치가 필요 없는 호스팅 버전이나 오프라인 샘플 비즈니스 네트워크 편집 및 테스트에 적합한 로컬 설치로 사용 가능하다.[2]
주요 개념[편집]
- 블록체인 상태 저장소 : 비즈니스 네트워크를 통해 제출된 모든 트랜잭션은 블록체인 원장에 저장되며 현재 자산 및 참가자 상태는 블록체인 상태 데이터베이스에 저장된다.[2] 블록체인은 원장과 상태 데이터베이스를 피어 집합에 분산시키고 원장 및 상태 데이터베이스에 대한 업데이트가 합의 알고리즘을 사용하여 모든 피어 간에 일관성 있게 유지되도록 한다.
- 커넥션 프로필 : 하이퍼레저 컴포저는 커넥션 프로필(Connection Profile)을 사용하여 런타임에 연결한다. 커넥션 프로필은 사용자의 홈 디렉토리에 있거나 환경 변수에서 올 수 있는 JSON문서이며 컴포저 API(Comper API) 또는 명령 행 도구를 사용할 때 이름으로 참조된다. 커넥션 프로필을 사용하면 코드와 스크립트를 하나의 런타임 인스턴스에서 다른 런타임 인스턴스로 쉽게 전송 할 수 있다.[2]
- 자산 : 자산(Assets)은 유형 또는 무형의 재화, 서비스이며 레지스트리에 저장된다. 자산은 비즈니스 네트워크의 거의 모든 것을 의미한다. 자산에는 고유한 식별자가 있어야 하지만 그 외에 정의한 속성을 포함할 수 있다. 자산은 다른 자산이나 참가자와 관련된 것이다.[1]
- 참가자 : 참가자(Participants)는 비즈니스 네트워크의 구성원이다. 그들은 자산을 소유하고 거래를 할 수 있다. 참여자 유형은 모델화되며 자산과 마찬가지로 식별자가 있어야 하며 필요에 따라 다른 속성을 가질 수 있다.[1]
- 신원 : 비즈니스 네트워크 내에서 참가자는 신원과 연관된다. ID 카드는 ID, 컨넥션 프로필 및 메타 데이터의 조합이다. ID 카드는 비즈니스 네트워크에 연결하는 프로세스를 단순화하고 비즈니스 네트워크 외부의 ID 개념을 특정 비즈니스 네트워크 및 커넥션 프로필과 연관된 ID의 지갑으로 확장한다.[1]
- 거래 : 거래(Transaction)는 참가자가 자산과 상호 작용하는 메커니즘이다. 이는 참가자가 경매에 있는 자산에 입찰을 하거나 경매인이 경매를 종결로 표시하여 자산의 소유권을 최고 입찰자에게 자동으로 이전하는 것처럼 간단하다.[1]
- 쿼리 : 쿼리(Queries)는 세계 상태의 블록체인에 대한 데이터를 반환하는 데 사용된다. 쿼리는 비즈니스 네트워크 내에서 정의되며 간단한 사용자 정의를 위한 변수 매개 변수를 포함한다. 쿼리를 사용하여 블록체인 네트워크에서 데이터를 쉽게 추출 가능하다. 쿼리는 하이퍼레저 컴포저 API를 사용하여 전송된다.[2]
- 이벤트 : 이벤트(Events)는 자산 또는 참여자와 동일한 방식으로 비즈니스 네트워크에서 정의된다. 이벤트가 정의되면 거래 프로세서 기능에 의해 이벤트를 발생시켜 외부 시스템에 중요한 일이 발생했을 때 알린다. 애플리케이션은 컴포저 클라이언트 API를 통해 이벤트에 가입한다.[1]
- 액세스 제어 : 비즈니스 네트워크에는 일련의 액세스 제어 규칙이 포함된다. 액세스 제어 규칙을 사용하면 참가자가 비즈니스 네트워크의 자산 및 어떤 조건에 액세스할 수 있는지를 세밀하게 제어한다. 액세스 제어 언어는 정교한 조건을 선언적으로 파악하기에 충분할 만큼 풍부하다. 트랜잭션 프로세스 함수 논리에서 액세스 제어를 외부화하면 검사, 디버그, 개발 및 유지 관리가 더 쉬워진다. [1]
- 히스토리안 등록 : 히스토리안(Historian)은 참가자 및 제출한 신원을 포함하여 성공적인 거래를 기록하는 전문화 된 레지스트리이다. 히스토리안은 히스토리안레코드 트랜잭션을 자산으로 저장하며 하이퍼레저 컴포저 시스템 네임 스페이스에 정의되어 있다.[2]
솔루션 아키텍처[편집]
하이퍼레저 컴포저를 사용하면 아키텍처와 개발자가 전체 스택 블록체인 솔루션을 신속하게 만들 수 있다. 즉, 블록체인에서 실행되는 비즈니스 로직,웹 또는 모바일 애플리케이션에 블록체인 로직을 노출하는 REST API는 물론 기존의 전자 시스템과 블록체인을 통합할 수 있다. 하이퍼레저 컴포저는 다음과 같은 구성 요소로 이루어져 있다. [1]
- 실행 런타임: 하이퍼레저 컴포저는 다양한 플러그 가능한 런타임을 지원하도록 설계되었으며 현재 세 가지 런타임(Runtimes) 구현이 가능하다. 하이퍼레저 패브릭 버전 1.0. 상태는 분산 원장에 저장된다. 웹 페이지 내에서 실행되며 플레이그라운드(Playground)에서 사용되고 상태는 브라우저 로컬 저장소에 저장된다. 임베디드(Embedded)는 노드Js(Node.js) 프로세스 내에서 실행되며 주로 비즈니스 로직 테스트에 사용되고 상태는 메모리 내장 키 - 값 저장소에 저장된다.[1]
- 커넥션 프로필: 커넥션 프로필(Connection Profiles)은 하이퍼레저 컴포저에서 실행 런타임에 연결하는 방법을 지정하는 데 사용된다. 각 실행 런타임 유형마다 다른 구성 옵션이 있다. 커넥션 프로필은 이름으로 참조되고 JSON 형식의 커넥션 프로필 문서는 사용자의 홈 디렉토리에서 확인된다.[2]
- 자바 스크립트 SDK : 하이퍼레저 컴포저 자바스크립트(Hyperledger Composer JavaScript) SDK는 개발자가 배포 된 비즈니스 네트워크를 관리하고 상호 작용할 수 있는 응용 프로그램을 만들 수 있게 해주는 노드.js API 세트이다. API는 두 개의 npm 모듈로 나뉜다. 비즈니스 네트워크에 트랜잭션을 제출하거나 자산 및 참가자에 대한 생성, 읽기, 업데이트, 삭제 작업을 수행하는 데 사용되는 컴포저 클라이언트 부분과 비즈니스 네트워크를 관리하는 데 사용하는 컴포저- 관리자 부분이으로 나뉜다. 모든 API의 세부 사항은 JSDocs로 제공된다. [1]
- 컴포저 클라이언트 : 컴포저 클라이언트(composer-client) 모듈은 대개 응용 프로그램의 로컬 종속성으로 설치된다. 비즈니스 응용 프로그램이 비즈니스 네트워크에 연결하여 자산, 참여자 및 트랜잭션 제출에 액세스하는 데 사용되는 API를 제공한다. 프로덕션 환경에서는 응용 프로그램의 직접 종속성으로 추가해야 하는 모듈이다.[1]
- 컴포저 관리자 : 컴포저 관리자(composer-admin) 모듈은 일반적으로 관리 응용 프로그램의 로컬 종속성으로 설치된다. 이 API를 사용하면 비즈니스 네트워크 정의를 만들고 배포할 수 있다.
- REST 서버 : 하이퍼레저 컴포저 REST 서버(Hyperledger Composer REST Server)는 비즈니스 네트워크용 오픈 API REST API를 자동으로 생성한다. 루프백(LOOPBack) 기술에 기반한 REST 서버는 비즈니스 네트워크의 작성자 모델을 오픈 API 정의로 변환하고 런타임에 자산 및 참가자에 대한 작성, 읽기, 업데이트 및 삭제 지원을 구현하고 처리 또는 검색을 위해 트랜잭션을 제출할 수 있도록 한다. [1]
- 루프백 커넥터 : 하이퍼레저 컴포저 루프백 커넥터(Hyperledger Composer LoopBack Connector)는 컴포저 REST 서버에서 사용하지만 루프백을 기본적으로 지원하는 통합 도구로 독립 실행 형으로 사용할 수 있다. 또는 루프백 도구와 함께 사용하여 REST API보다 정교한 사용자 정의를 작성 가능하다. [1]
- 플레이그라운드 : 하이퍼레저 컴포저 플레이그라운드(Playground)는 비즈니스 네트워크를 정의하고 테스트하는 웹 사용자 인터페이스(Web User Interface)이다. 비즈니스 분석가는 샘플을 신속하게 가져오고 웹 또는 하이퍼레저 패브릭 런타임에서 실행되는 비즈니스 논리를 프로토타입화 한다.[2]
- VS코드 및 아톰 편집기 확장 : 하이퍼레저 컴포저에는 VS코드(VSCode) 및 아톰(Atom)에 대한 커뮤니티 기여 편집기 확장 기능이 있다. VS코드 확장은 매우 강력하고 컴포저 모델과 ACL 파일의 유효성을 검사하여 구문 강조, 오류 감지 등 기능을 제공한다. 아톰(Atom) 플러그인은 훨씬 초보적으로 기본 구문 강조만 제공한다.[1]
최근 동향[편집]
2018년 11월 IBM은 하이퍼레저 컴포저 개발에 참여하지 않겠다는 의사를 밝혔다. 그에 따른 가장 큰 이유는 컴포저와 패브릭의 시너지가 미비함에 따른 것을 추축된다. 하이퍼레저 패브릭은 프라이빗 네트워크를 구축할 수 있도록 네트워크 접근을 제어하는 퍼미션(Permission)형으로 다양한 솔루션에 적용 가능한 모듈형이다. 그에 반해 컴포저는 다른 레벨과 API가 사용되기 때문에 패브릭과 결합되지 않아 개발자들에게 비효율적인 상황이 되었다. 이러한 점을 바탕으로 IBM은 기존에 컴포저에 투입됐던 리소스를 패브릭에 집중 투입하기로 뜻을 모은 것으로 보인다. [3]
각주[편집]
참고자료[편집]
- 하이퍼레저 컴포저 공식 홈 페이지 - https://www.hyperledger.org/projects/composer
- 로티, 〈Hyperledger Composer〉, 《티스토리》, 2017-12-28
- racoon02cho, 〈Hyperledger Composer의 주요 개념〉, 《스팀잇》, 2018
- 하나 기자, 〈IBM이 '하이퍼레저' 컴포저 개발에 손을 뗀 이유〉, 《디지털데일리》, 2018-11-16
- "Welcome to Hyperledger Composer", GitHub
- Steven Perry, "Model and test your blockchain network", IBM Develop, 2017-01
같이 보기[편집]
이 하이퍼레저 컴포저 문서는 블록체인 솔루션에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.
|