본문 바로가기

IT/블록체인

Hyperledger Fabric 블록체인 관련 용어 정리

Hyperledger Fabric 용어


다음은 Fabric 기반 블럭체인의 기술을 익히기 위해서 필요한 용어들입니다. 용어들은 가급적 한글화를 하지 않고 영문 용어를 그대로 사용했습니다. 그리고 대부분 시스템 용어라고 생각하시면 이해하는데 도움이 같습니다.

  • Transactor : 트랜잭션(거래) 일으키는 엔티티를 말합니다. 대표적으로 클라이언트 애플리케이션이 됩니다.
  • Transaction : 트랜잭션은 블럭체인 네트워크에 대해서 비즈니스 로직을 수행하기 위한 요청입니다. 트랜잭션의 유형은 deploy, invoke query dlau, 체인코드를 통해서 사전 정의된 인터페이스에 대한 함수를 구현합니다
  • Ledger : 트랜잭션과 현재 세계 상태를 포함하는 일련의 암호 학적으로 링크 블록. 이전 거래의 데이터 외에도 원장에는 현재 실행중인 체인 코드 애플리케이션의 데이터가 포함되어 있습니다.
  • World state : 트랜잭션에 의해서 체인코드가 호출될 상태 데이터 저장을 위한 Key-value 데이터베이스 입니다.
  • Chaincode : 다양한 트랜잭션의 유형을 구현한 블록체인에 임베드되는 로직입니다. 개발자에 의해 체인코드가 작성되고 블록체인 네트워크로 디플로이 합니다. 최종 사용자는 블록체인 네트워크를 구성하는 피어 또는 노드와 인터페이스 되어 있는 클라이언트 애플리케이션을 통해서 체인코드를 실행시킵니다. 체인코드는 트랜잭션을 일으키고 유효성이 확인되면 공유원장에 추가하고 World state 수정합니다.
  • Validating peer (VP) : 블록체인 네트워크에서 원장을 관리 유지하기 위해서 트랜잭션의 유효성을 검증하는 합의 프로토콜을 실행하는 노드입니다. 검증된 트랜잭션은 원장에 블록 단위로 추가됩니다. 트랜잭션이 합의에 실패하면 블록에서 제거되므로 장부에 기록되지 않습니다. Validating peer 체인코드를 deploy, invoke, query 권한을 가집니다.
  • Non-validating peer (NVP) : Transactor Validating peer 접속 있도록 프록시 역할을 하는 노드입니다. Non-validating peer (NVP) 호출된 요청을 Validating peer 전달하며, 이벤트 스트림, REST 서비스를 담당하는 노드입니다.
  • Consensus : 블록체인 네트워크의 트랜잭션(deploy, invoke) 순서를 유지하는 프로토콜, Validating 노드들은 합의 프로토콜을 구현하여 트랜잭션을 승인하기 위해서 함께 동작합니다.
  • Permissioned network : 노드는 블록체인 네트워크에서 접근 권한을 관리해야 하는 노드이며, 노드는 권한이 있는 사용자만 접근할 있습니다.

  

아키텍처

블록체인 기본에서도 보여준 아키텍처 그림과 같이 블록체인의 엔진으로 볼수 있는 Fabric 크게 3가지 서비스로 구성이 되어 있습니다.

 

1. Membership Services

멤버십 서비스는 블록체인 네트워크에서 인증 서비스를 제공합니다. Non-permissioned 블록체인의 경우 사용자 인증이 필요없으며, 모든 노드는 동등하게 트랜잭션 처리가 가능하고 블록에 트랜잭션 정보를 입력할 있습니다. 멤버쉽 서비스는 PKI(Public Key Infrastructure) 분산화/합의 컴포넌트를 non-permissioned 블록체인에서 permissioned 블록체인으로 변환시킵니다. Permissioned 블록체인에서는 엔티티가 장기적인 인증서(enrollment certificates) 획득하기 위해 등록절차를 거치게 되며, 엔티티 유형에 따라 구별될 있습니다. 사용자의 경우 TCA (Transaction Certificate Authority) 인증서를 발급 있습니다. 여기서 획득한 인증서는 트랜잭션을 발생시킬때 인증하는데 사용됩니다.


2. Blockchain Services

블록체인 서비스는 HTTP/2 표준을 기반으로 P2P 프로토콜을 통해서 분산원장을 관리합니다. 데이터 구조는 해시 알고리즘을 통해 World state 복제하는 관리 하는데 가장 효율적으로 관리할 있도록 최적화되어 있습니다. 필요에 따라 다른 합의 알고리즘 플러그인(PBFT, Raft, PoW, PoS) 연결하고 구성 있습니다.


3. Chaincode Services

체인코드 서비스는 Validating 노드에서 안전하고 가볍운 방법으로 체인코드가 실행되도록 보장합니다. 환경은 보안 OS 체인 코드 언어, Go, Java Node.js 런타임 SDK 계층을 포함하는 일련의 서명 기본 이미지와 함께잠긴보안 컨테이너입니다. 필요한 경우 다른 언어를 사용할 있습니다.


4. 그외 기능


4.1 Events

Validating peers 체인코드는 블록체인 네트워크에서 이벤트를 발생 있습니다. 이벤트 발생을 대기하고 있는 애플리케이션에 필요한 노티를 보냅니다. 이벤트는 미리 정의된 이벤트 혹은 커스텀 이벤트를 발생 있으며, 하나 이상의 어댑터를 통해 이벤트 수신 있습니다. 또한 Web hooks Kafka 등을 이용하여 이벤트 수신도 가능합니다.


4.2 Application Programming Interface (API)

Fabric 대한 기본 인터페이스는 REST API 입니다. API 호출을 통해 사용자 등록, 블록체인에 대한 쿼리, 트랜잭션 발생 들을 있습니다. 특히 체인코드와 상호작용하기 위한 API 통해서 트랜잭션을 관리 있습니다.


4.3 Command Line Interface (CLI)

REST API 일부 기능을 지원하는 CLI기능을 통해서 체인코드의 디플로이 트랜잭션 처리 등을 빠르게 진행할 있도록 합니다. CLI Golang으로 제작이 되었으며 다양한 OS 지원합니다.


토폴로지

Fabric 통한 볼록체인 네트워크는 하나의 멤버쉽 서비스와 다수의 Validating peer non-validating peer 들로 이루어 있습니다. 모든 컴포넌트를 통해 하나 또는 다수의 체인을 운영 있습니다.


1. Single Validating Peers

기능적으로 non-validating peer validating peer 서브셋입니다. 그러므로 모든 non-validating peer 기능은 validating peer 사용이 가능합니다. 그래서 가장 간단한 블록체인의 네트워크는 하나의 validating peer 구성된 블록체인 네트워크입니다. 토폴로지는 보통 개발을 위한 환경으로 적합합니다.

토폴로지는 합의 알고리즘 사용을 없습니다. 그래서 기본으로 설정되어있는 합의 모듈인 noops 플러그인을 적용해서 사용합니다.

  

2. Multiple Validating Peers

운영환경이거나 개발 환경일 경우 다양한 validating peer non-validating peer 이용하여 블록체인 네트워크를 구성해야 합니다. 구성에서 non-validating peer 이벤트 처리 REST API 서비스 관리등의 역할을 하게 되는 노드입니다.

Validating peers 들은 블록체인 네트워크 상에서 일어나는 모든 이벤트, 트랜잭션 등의 데이터를 공유하게 됩니다.


3. Multichain

각각 블록체인 네트워크는 validating peer non-validating peer 이루어져 있습니다. 다양한 목적에 따라서 이와 같은 조합으로 다양한 블록체인을 구성 있습니다.

 



[https://www.linuxfoundation.org/]


1. Hyperledger Burrow

모듈 식 블록 체인 클라이언트에 부분적으로 개발 된 허가 된 스마트 계약 해석기를 제공합니다.


2. Hyperledger Fabric

블록 체인 응용 프로그램 또는 솔루션을 개발하기위한 토대가 되는 블록 체인 기술 구현입니다.


3. Hyperledger Iroha

분산 원장 기술을 필요로하는 인프라 프로젝트에 간단하고 쉽게 통합 할 수 있도록 설계된 분산 원장 프로젝트입니다.


4. Hyperledger Sawtooth

다양성과 확장 성을 위해 설계된 모듈 식 블록 체인 제품군입니다.


5. Hyperledger Indy

블록 체인이나 다른 분산 원장을 기반으로하는 상호 운용 가능한 디지털 ID를위한 도구, 라이브러리 및 재사용 가능한 구성 요소를 제공합니다.


[출처: http://goodjoon.tistory.com/235]


=> Open Blockchain 은 여러 산업에서 사용할 수 있게하기위한 목적의 저수준의 Fabric Code 이다. 

    핵심은 스마트 계약, 디지털 자산, 기록 리포지토리, 분산 네트워크, 컨센서스 제공, 암호화 보안