•  하이퍼레저의 구성요소

 

구성요소

설명

비고

Network

Channel

명시적으로 인가된 특정 Member(PeerApplication)ledger 공유하기 위한 Private blockchain 가상  network (overlay)

CA

Hyperledger의 모든 구성요소 인증서 발급

Member

BC_NW내의 PeerApplication의 집합
Root 인증서를 가진 Entity

Organization

Peer 관리하는 조직 (논리적 단위)

MSP

회원등록을 위한 규칙 및 Access control 및 권한 부여를 설정할 수 있는 Identity 관리 서비스

Orderers

KAFKAZookeeper를 통해서 BC_NW 에서 Streaming 서비스 함

Peer

Ledger를 유지하고, 체인코드를 실행할 수 있는 network entity

Ledger

순차적이고, 변조불가능한 데이터들을 체인 형태로 구성한 개념(공유원장, 분산원장)
구성요소 : World StateTransaction Log 구성 ,

Transaction

유형 : Depoly(Install), Invoke (Write)

Consensus

PBFT 개념을 Hyperledger fabric이 구현한 ABC(Atomic BroadCast) 합의알고리즘 사용
합의 = Endorsement + Ordering + Validation
ABC 합의 알고리즘은 KAFKA에서 지원
KAFKA수행 방법;  Permissioned voting based. Leader does ordering. Only in-sync replicas can be voted as leader.
Consensus 결정되면 설정변경 불가능

Chaincode

Ledger상에서 실행되는 소프트웨어로 비즈니스 로직을 포함하고 있음
ChainCode는 여러 개의 함수를 가질 수 있으며 이를 ChainCode Function이라고 함

 

 

 

  •  하이퍼레저의 주요 구성요소  
  •  

    구분

    소분류

    설명

    트랜잭션

    배포 트랜잭션

    배포 트랜잭션은 단어 그대로 체인코드를 블록체인의 시스템에 설치하기 위해 실행되며, 배포 트랜잭션이 호출되면 체인코드를 빌드하고 피어에 설치하며 초기값을 파라미터로 받아서 블록에 저장하는 과정을 거친다.

    Invoke
    트랜잭션

    배포된 체인코드를 기준으로 정의된 함수를 호출하기 위해 실행된다. Invoke트랜잭션을 호출한 결과, 호출이 정상적으로 완료되면 스테이트에 처리 결과가 저장되고 결과는 호출한 클라이언트에 반환된다.
    Invoke Transaction 유형 : Invoke, Query

    블록체인
    데이터 구조

    스테이트(State)

    블록체인에서 최신 State는 버전관리 키-밸류스토어(KVS : Key Value Store ) 설계되어 있다. KVS에 문자열 타입의 키와 임의의 객체인 밸류로 저장가능하며, 블록체인에서 구동되고 있는 체인코드에서 "PUT", "GET" 동작에 의해 관리 된다. 키-밸류 스토어는 동시에 버전 정보를 함께 저장하고 있어서 동일한 키 값으로 입력되는 밸류에 대해 버전관리가 이루어 진다. 그러므로 모든 트랜잭션 되는 데이터에 대해서는 히스토리 관리가 된다.

    원장(Ledger)

    원장은 블록체인에서 모든 성공 또는 실패한 스테이트의 변경에 대한 검증 가능한 기록을 저장한다. 원장은 Ordering서비스에 의해 완벽하게 순차 처리된 트랜잭션의 해시 체인으로 구성되며, 해시 체인은 원장에 블록의 전체 순서를 지정하며 각 블록에는 순차로 정렬된 트랜잭션 배열이 포함된다.
    원장은 모든 피어와 일부 Orderer에서 저장되고 관리 된다. 피어에는 원장과 스테이트가 관리되는데, 역할에 따라서 Committing Peer와 Endorsing Peer로 구분되며 Endorsing Peer에 의해 검증된 트랜잭션뿐 아니라 검증에 실패한 트랜잭션의 정보도 비트 구분을 통해 함께 관리 한다. Orderer는 결함 허용(Fault-tolerance)정보와 피어의 가용성 정보를 원장으로 관리한다.

    노드(Node)

    블록체인에서 노드는 통신을 위한 엔티티 말하며, 같은 유형의 여러 노드가 동일한 서버에서 구동 될 수 있다는 점에서 논리적인 기능으로 구분되는 단위이다. 노드는 크게 세가지로 구분된다.
    클라이언트 : 트랜잭션을 발생시켜 Endorser에게 트랜잭션을 제안(Proposal)하고 Endorsing결과를 받아서 최종적으로 Orderer에게 트랜잭션을 전송하는 역할을 하는 노드
    피어 : 트랜잭션을 커밋하고 원장을 관리가 주된 역할이며, 설정에 의해 Endorser의 역할을 할 수도 있따.
    Ordering 서비스 노드(또는 Orderer): 트랜잭션에 대해 각 피어에게 일관되게 동일한 원장을 관리 할 수 있도록 커뮤니케이션을 보장하는 역할의 노드

     

     

     

    * 하이퍼레저 표준 문서 등을 기준으로 정리했습니다. 오기 등이 포함되어 있을 수 있습니다.

    + Recent posts