IBM 하이퍼레저 패브릭과 아키텍처

하이퍼레저 패브릭


  • IBM에서 최초로 제작되어 리눅스 재단에 기부한 기술이다.

  • 하이퍼레저 패브릭 프로젝트는 크게 하이퍼레저 프레임워크와 하이퍼레저 툴로 나뉜다.

  • 공개형 블록체인의 경우 프라이버시 문제가 발생할 수 있어 이를 보완하기 위해 개발되었다.

  • 비트코인이나 이더리움과 달리 실체/실무적인 부분에 적용하기 때문에 기업 측면에서 좋다.

  • 다른 블록체인에 비해 복잡한 구조로 되어있다.

  • 채널(Channel)이라는 개념을 도입하여 프라이버시 문제를 해결하였다.

  • 분산원장은 모든 정보가 해시화되어 Append-only 방식으로만 원장에 저장된다. (불가변성)



하이퍼레저 패브릭 합의 과정


  • 다른 블록체인에는 없는 개념으로, 기억해야 할 용어들이 있다.

  • Endorsing: 보증 정책 확인

  • Ordering: 트랜잭션을 정해진 순서에 맞춰 정렬

  • Validation & Commit: 정렬된 트랜잭션의 유효성 검증 및 최신 블록 업데이트


  • 트랜잭션이 들어오면 Endorsing 동작을 통해 트랜잭션이 정상적인 것인지 판단한다.

  • 정상적이라면 줄 세우기를 하여 순서대로 블록체인 상에 올릴 것인지 말 것인지를 판단한다.

  • 특별한 이상이 없다면 Commit을 통해 블록체인 상에 업데이트한다.



하이퍼레저 프레임워크


한이음 ICT 멘토링 - 하이퍼레저 패브릭 강의 자료 일부



  • 하이퍼레저 패브릭은 가장 활발하게 활동 중인 하이퍼레저 프로젝트로서 IBM이 제공한 44,000줄의 코드를 기반으로 개발되고 있다. 현재 합의 방법으로 Solo, Kafka, SBFT(개발 예정)을 채택하고 있다.

  • 이외 내용 참고



하이퍼레저 툴


  • Caliper: 블록체인의 성능을 측정하기 위한 프로젝트

  • Cello: 블록체인의 운영 및 관리를 위한 프로젝트

  • 이외 내용 참고



HL.F (하이퍼레저 패브릭 프로젝트) 개요


  • 허가형 프라이빗 블록체인 형태로 개발되었다.

  • MSP (Membership Services Provider): 멤버형 인증 관리 시스템에 등록된 사용자만이 하이퍼레저 패브릭 블록체인에 참여할 수 있다.

  • 채널이라는 개념을 도입해서 블록체인 참여자들 간의 프라이버시를 강화할 수 있다.

  • 거래 정보를 공개 또는 기밀로 할 수 있다.


  • 하이퍼레저 구조: Membership, Blockchain, Transactions, Chaincode (스마트 계약)

  • 체인코드를 얼마나 잘 만드느냐가 중요하다.

  • 특정 비즈니스 목적에 따라 채널을 설정하여 정보를 상호 간 공유할 수 있다.

  • 체인코드는 현재 Go와 Node.js 언어를 지원한다.

  • 하이퍼레저는 World state와 Blockchain으로 구성되어 있다.


  • vKVS (Versioned Key Value Store) = World state: 트랜잭션을 실행한 결과 얻어지는 최신 상태를 기록한다.
    • 예시) 은행 앱에서 최종 자산만 검색하여 메인에 보여주는 것, 중고차를 구입할 때 소유자가 계속해서 변경되는 것 등 최종 값을 가지고 검색하는 것이 빠르다. (버전이 계속해서 갱신되는 느낌)



HL.F 특징


  • 채널이 있기 때문에 프라이버시와 기밀성이 있다.

  • 비트코인의 경우 분산하여 모든 노드에서 계속해서 똑같은 작업을 반복해야 하는 반면 하이퍼레저는 여러 개의 피어들이 각각 처리하는 트랜잭션을 서로 다르게끔 하여 분산 병렬 처리로 작업을 한다.


  • 진행 과정: 실행 > 결과(디앱) > 줄 세우기 > 순서대로 검증 피어에 전달 > 문제가 없다면 커밋 피어에서 커밋

  • 체인코드의 로직을 통해 트랜잭션 처리 여부를 결정한다.

  • 하이퍼레저를 이루는 네트워크 구성요소 피어들을 원하는 순서대로 모듈화 하여 네트워크를 설계할 수 있다.

  • 교체 가능한 합의 프로토콜을 사용할 수 있다. (Solo, Kafka, PBFT 등)



Fabric V1 아키텍처


  • 오더링 서비스: 기본적으로 4개가 묶여있는데 Kafka 방식을 이용하여 합의 알고리즘을 수행한다.

  • 여러 피어 중 하나가 작동이 안 된다던지 아니면 배신자 노드가 있을 수 있는데 그런 경우 1명을 제외하고 나머지 피어가 합의를 할 수 있다.

  • Solo의 경우 오더러의 개수는 1개만 있으면 된다.

  • Kafka 방식에서는 최소 오더러가 3개 이상 있어야 한다.



HL.F 구성요소 - Peer


  • Ledger (World state + Blockchain) + ChainCode (비즈니스 로직 포함)

  • 하이퍼레저 패브릭 블록체인을 구성하는 네트워크 노드를 나타내는 논리적 단위

  • Peer 노드 네트워크는 비즈니스 목적에 따라 달리 구성할 수 있다.


  • 종류: Endorsing, Anchor, Ordering, Committing, Validation peer

  • 조직이 여러 개일 수 있지만 Ordering peer는 하나이고 이에 의해 모든 트랜잭션을 제어한다.

  • General peer = Commiting peer


  • Anchor peer: 노드 간에 통신을 주고받게 해주는 역할
    • 어떤 노드가 살아있고 죽었는지 확인, 패킷을 던져보는 역할

  • 오더러가 죽어버리면 전체 시스템이 죽어버리기 때문에 이중화 구성을 해야 한다.

  • 일반 트랜잭션 영역은 RDBMS에 쌓고 블록체인 상에 올려야 할 것들은 LevelDB나 CouchDB를 통해 데이터를 저장한다.

  • 블록체인 데이터는 파일 시스템 DB로 관리된다.


  • 시스템 체인코드 종류: QSCC(Query System ChainCode), ESCC(Endorsement), VSCC(Validation), CSCC(Configuration), LSCC(Lifecycle)

  • ChainCode 명령어는 DApp과도 연관되어 있어 외워둘 필요가 있다.



HL.F 구성요소 - DApp


한이음 ICT 멘토링 - 하이퍼레저 패브릭 강의 자료 일부



HL.F 구성요소 기타


  • Endorsement Policy: 어떤 트랜잭션이 발생했을 때 보증 그룹의 특정 Peer로부터 디지털 인증서를 획득해야 하는데 여러 가지 조건에 따라 설정이 가능하다.

  • Organization: HL.F 네트워크에 참여하는 조직을 나타내는 논리적 단위이다.

  • Channel: 하나의 조직과 조직을 연결할 수 있는 논리적으로 분리한 네트워크이다.

  • Gossip Protocol: 오더러가 블록들을 순서대로 정렬시키는데 여러 개의 피어 모두에게 블록을 던지는 것이 아니라 리더 피어를 설정해서 리더 피어에게 전달하는 방식이다.



HL.F 합의


  • 트랜잭션 생성부터 최신 블록이 Peer에 저장되기까지의 모든 과정을 합의라고 한다.

  • PoW, PoS, BFT 등을 사용하지 않는다.

  • Kafka와 Solo를 이용하여 트랜잭션을 정렬한다.


  • 합의 알고리즘 = 보증(Endorsement) + 오더링(가장 중요, Ordering), 검증(Validation)
Author

Alec J

Posted on

2019-11-07

Updated on

2021-02-09

Licensed under