Hyperledger Fabric은 Hyperledger 제품중 가장 널리 사용되는 허가형 블록체인입니다.
금융, 은행, 의료, 보험, 공급망 및 디지털 자산 관리를 포함한 광범위한 산업계의 유즈케이스에 최적화 되있습니다.
또한 Hyperledger Fabric은 스마트 컨트랙트 개발에 Java, Go, JavaScript, Typescript
와 같은 범용 프로그래밍 언어를 지원합니다.
피어 peer
: 네트워크의 노드로 원장의 상태를 유지합니다. 피어는 트랜잭션을 실행하는 보증인이거나, 승인내역을 확인하고 트랜잭션 결과를 검증하는 커미터 일 수 있습니다. 보증인은 커미터의 역할도 수행합니다. 피어는 이벤트 허브 Event를 관리하고 구독자subscriber
들에게 이벤트를 전달합니다.
오더링 서비스 ordering
: 트랜잭션의을 블록에 담아 체인코드로 전달하기 전에 블록을 생성하는 역할을 합니다. 즉, 블록 생성과정에서 노드들이 동의하여 블록에 포함될 트랜잭션을 선별하고 정렬합니다. 또한 노드간의 동기화와 합의를 위해 Kafka, Solo, Raft, Istanbul, BFT
등 다양한 알고리즘을 사용할 수 있습니다.
Fabric CA : PKI 기반 인증서를 네트워크 멤버 조직과 사용자에게 발급하는 인증기관Certificate Authority
입니다. Fabric CA를 사용하면 아래와 같은 기능을 수행할 수 있습니다.
Fabric 원장 : 블록체인과 월드스테이트라는 두 부분으로 나누어져 있습니다. 블록체인은 모든 트랜잭션 데이터의 체인 형태의 기록을 관리하는 역할을 하며, 월드스테이트는 블록체인과 다르게 최신 데이터의 상태를 저장하고 유지합니다. 이는 스마트 컨트랙트의 실행 결과물이 월드스테이트에 반영되는것을 의미합니다.
월드스테이트는 데이터 베이스 역할을 띄며 트랜잭션 처리 결과를 Key/Value 형태로 저장하는 LevelDB, JSON 기반의 문서 데이터를 저장하는 CouchDB가 있습니다. 즉, 블록체인은 모든 거래 기록의 보관소 역할을 하며, 월드스테이트는 스마트 컨트랙트의 실행 결과를 저장하고 최신 데이터를 유지하는 역할을 합니다.
LevelDB, CouchDB : 위에서 설명한 대로 Fabric의 월드스테이트를 구성하는 데이터베이스로는 LevelDB와 CouchDB가 있습니다. 먼저 LevelDB는 경량 데이터베이스로 Key/Value 형태로 데이터를 저장하고 있어 검색에 최적화되어 있기 때문에 블록체인 데이터의 처리 속도가 빨라집니다. 그러나 LevelDB는 높은 데이터 읽기 처리량과 쓰기 처리량을 처리하는데는 적합하지 않습니다.
반면, CouchDB는 JSON 기반의 문서 데이터 저장소로, LevelDB와는 다르게 높은 데이터 읽기 처리량과 쓰기 처리량을 처리하는데 특화되어 있습니다. CouchDB는 블록체인과 같은 복잡한 데이터 모델을 다룰 수 있으며, 쿼리와 인덱싱 기능을 제공합니다. Fabric에서는 이러한 두 가지 형태의 데이터베이스를 선택적으로 사용할 수 있기 때문에, 애플리케이션의 요구사항에 따라 선택적으로 사용 가능합니다.
채널 channel
: 별도의 분산 원장을 생성하여, 서로 다른 원장 간의 프라이버시를 제공하며, 프라이버시의 제공 범위는 채널 내에 국한됩니다.허가된 참가자들에게만 접근 권한을 부여할 수 있고, 특정 채널에서 트랜잭션을 수행하면 해당 채널의 별도의 분산 원장에만 기록되기 때문에 다른 채널에 영향을 주지 않습니다.
채널은 체인코드Chaincode
라는 스마트 컨트랙트를 통해 동작하며 체인코드는 피어 노드에 설치됩니다. 체인코드는 다양한 프로그래밍 언어로 작성될 수 있지만, 실행될 때는 Docker 컨테이너 내에서 실행되어 모두 동일한 실행 환경에서 실행됩니다. 따라서 체인코드의 실행 환경은 네트워크 내의 모든 피어 노드에서 동일합니다.
조직 oraganization
: 조직은 관리자, 사용자, 피어, 오더리, 인증기관 CA 및 다른 구성 요소를 포함하는 독립적인 구성 요소 그룹입니다. 각 조직은 서로 다른 인증기관에 등록될 수 있으며, 각 조직은 자체적으로 체인코드를 설치하고 관리할 수 있습니다. 각 조직은 개별적인 ID로 식별되며, 조직은 채널을 통해 다른 조직과 상호 작용 할 수 있으며, 각 채널에는 각 조직의 피어 노드가 포함됩니다.
조직은 자체적으로 인증기관을 설정하고 관리할 수 있으며, Fabric CA라는 도구를 사용하여 조직의 인증기관을 구성할 수 있습니다. 조직은 Fabric CA를 사용하여 자체 인증서를 생성하고, 조직 구성원에 대한 인증서를 발급, 인증서 폐기를 할 수 있습니다.
보증 정책 : 트랜잭션이 보증되기 위한 조건들로 트랜잭션은 해당 정책에 따라 보증된 경우에만 유용한 것으로 간주됩니다. 각 체인코드는 보증 정책과 함께 배포되며 보증 시스템 체인코드는 보증인 피어가 응답한 Proposal (체인코드 함수 호출을 나타내는 요청 메시지
)에 서명하고, 검증 시스템 체인 코드는 보증 내역을 검증합니다.
멤버십 서비스 제공자 Membership Service Provider
: Fabric 네트워크에 참가하는 인증된 참가자들의 신원을 관리하는데 사용되는 서비스입니다. MSP는 피어, 오더러, 클라이언트 어플리케이션, 관리자에게 신원을 제공하며 Fabric CA 또는 외부 CA가 인증서를 발급한 경우 MSP는 발급된 인증서를 이용하여 사용자의 인증 및 권한 부여를 수행합니다. 또한, MSP에서 TLS (Transport Layer Security
) 인증서를 발급하여 네트워크 내에서 다른 구성원들과의 통신 시, 상대방의 인증서를 확인하고 상호 인증을 할 수 있게 합니다.
MSP는 각 조직마다 하나씩 존재하며, 각 조직의 구성원들에 대한 인증서 및 권한 정보를 저장하고 관리합니다. 각 구성원들은 MSP에서 발급받은 권한으로 네트워크에 참여하고, 자신의 신원을 증명합니다.