A sentimental robot

Hyperledger fabric 구조 본문

Hyperledger fabric

Hyperledger fabric 구조

GOD03219 2019. 7. 10. 17:04

하이퍼레저 패브릭은 비트코인과 이더리움과는 다르게 Private, Permissioned 한 블록체인 플랫폼이다.

패브릭의 가장 큰 특징은 허가 받은 주체만 네트워크에 참여할 수 있다는 점이다. 이러한 특징 때문에 기업형 블록체인 개발을 위해 사용된다. 또한 퍼블릭 블록체인에 비해 매우 복잡한 구조를 띄는데 이는 패브릭이 추가 여러 가지 기능을 가지기 때문이다. (채널, 컨소시움, 멀티 장부 etc...)

 

이름마저 생소한 하이퍼레저! 구조를 파헤져 보면 더 생소할 것이다 :)

(다짜고짜) group A가 패브릭 네트워크를 구성한다고 가정한다.

 

1. Ordering service 노드 구동 

 

오더링 서비스는 전달받은 트랙잭션의 순서를 정해 블록을 생성하고 연결된 노드들에게 전달하는 기능이다. 한마디로 블록체인의 핵심 기능이다.

 

오더링 서비스 노드 즉, Orderer가 오더링 서비스를 호스팅하는 주체이다.

 

Consensus

 

대표적인 public blockchain (non-permissioned blockchain) 비트코인과 이더리움에서는 PoW,PoS 합의 프로토콜을 사용한다.

퍼블릭 블록체인의 각 노드들을 신원이 확인되지 않았기 때문에 PoW나 PoS 같은 작업 증명이나 지분 증명을 통해 블록 생성 시 합의을 해야한다.

패브릭은 그렇지 않다는 점에 주목하자. 

하이퍼레저 패브릭에서는 트랜잭션의 생성부터 새로운 블록 생성까지 모든 과정을 통칭해서 합의 과정이라고 말한다.

최신 블록 생성 직전 트랜잭션을 정렬하는 방식을 사용자가 선택할 수 있는데,  패브릭은 기본적으로 SOLO(Single Ordering Service Node) 와 CFT(Crash Fault Tolerance) 기반 Kafka를 지원한다.

CFT란 일부 시스템 구성 요소들이 작동하지 않더라도 올바른 합의에 도달할 수 있는 성질이다. (다른 카프카 서버가 죽어도 괜찮아! 블록 생성을 위한 안정성 보장) 카프카 기반 오더링 서비스는 최소 4개의 노드를 가져야 CFT를 가진다.  패브릭 네트워크에 참여한 노드들은 이미 CA를 받은 허가된 주체이기 때문에 CFT가 가능할 수 있는 것이다.

  

패브릭을 사용하는 조직은 지원하는 합의 방식 외에도 합의 프로토콜을 직접 구현할 수도 있다. (교체 가능한 합의 프로토콜;Pluggable consensus)

 

2. Network Configuration 설정

 

관리자는 어떤 네트워크 조직이 어떤 권한을 가지는지를 Network Configuration에 저장한다. 

 

 

3. Certificate Authority (CA) 설정

 

참여자의 ID와 권한을 관리할 주체, 디지털 증명서를 발급하는 기관이다. 

패브릭에 참여하는 그룹들은 모두 개별 CA를 이용한다.

 

4. 컨소시엄(Consortium) 구성하기

 

consortium : 함께 협력하기로 동의한 사람 또는 회사의 집단

패브릭 네트워크에서 조직들이 하나의 컨소시엄을 구성하면 그 조직들은 트랜잭션 내역을 공유한다. 공동의 목표를 가지고 협력하는 두 개이상의 조직이 모인 셈

네트워크 설정에 어떤 그룹들이 어떤 컨소시엄을 이루는 지 정의된다.

 

5. 채널 만들기

 

채널은 컨소시엄 내 그룹 간 커뮤니케이션 메커니즘이다. 채널 안에서 데이터 분리 및 기밀화가 가능하며 채널 사용 허가를 받은 컨소시엄 멤버들은 채널용 장부에 접근이 가능하다.

체널에 접근할 수 있는 피어(peer)의 권한 정보와 같은 채널 운영에 필요한 정보는 channel configuration에 기록된다. 

네트워크 설정과 채널 설정 사이에 중복되는 설정이 없다.

네트워크 상 프라이버시를 보장하며 효율적인 데이터 공유가 가능하다.

'Hyperledger fabric' 카테고리의 다른 글

Docker  (0) 2019.07.12
Mac OS 기본적인 터미널 명령어  (0) 2019.07.12
Transaction Process  (0) 2019.07.11
Hyperledger fabric 주요 개념  (0) 2019.07.10
Token economics  (0) 2019.07.10