Hyperledger Fabric Sidechain
루니버스는 하이퍼레저 패브릭(Hyperledger Fabric) 체인을 지원합니다. 루니버스 고객은 자신만의 독립적인 하이퍼레저 패브릭 체인을 만들어 체인코드를 배포하고 DApp을 서비스 할 수 있습니다.
Hyperledger Fabric 사이드 체인 생성하기
Hyperledger Fabric 사이드 체인 개발 환경을 구매 및 사용하고자 하는 경우 Create Hyperledger Fabric Sidechain 페이지의 가이드를 참조해주세요.
Hyperledger Fabric이란?
하이퍼레저 패브릭은 리눅스 재단이 주도하여 설립한 하이퍼레저 프로젝트 중의 하나로, 허가받은 사용자만 참여할 수 있는 허가형 블록체인(Permissioned Blockchain) 입니다. 비트코인이나 이더리움처럼 전 세계 모든 사용자가 제한 없이 접속할 수 있고 데이터를 볼 수 있는 공개형 블록체인과는 달리, 하이퍼레저 패브릭은 허가된 사용자 이외에는 참여가 불가능하며, 데이터를 조회할 수도 없습니다. 이러한 특징 때문에 보안에 민감한 금융권이나 기업, 단체들이 자신들만의 블록체인을 구축하려고 할 때 주로 하이퍼레저 패브릭을 사용합니다.루니버스는 사용자가 자체 하이퍼레저 패브릭 블록체인 네트워크를 생성할 수 있도록 지원합니다. 하이퍼레저 패브릭 블록체인을 생성하고 싶은 사용자나 조직은 루니버스 콘솔을 통해 손쉽게 하이퍼레저 패브릭 네트워크를 구성할 수 있습니다.
Hyperledger Fabric의 특징
- 신원 관리
- 패브릭 네트워크에 접속할 수 있는 사용자의 신원을 관리하고 인증하는 서비스를 제공합니다.
- 기밀 유지
- 패브릭 네트워크에서는 각 원장이 '채널'이라는 이름으로 나뉘어져 있으며, 각 채널에 접속할 수 있는 사용자를 제한할 수 있습니다. 채널의 접속이 제한된 사용자는 그 채널의 데이터를 조회할 수 없기 때문에 기밀을 유지할 수 있습니다.
- 효율적인 처리
- 비교적 신뢰할 수 있는, 미리 허가된 사용자만 참여할 수 있는 특징으로 인해 패브릭 네트워크에 악의적인 노드가 거의 없다고 가정할 수 있습니다. 따라서 트랜잭션의 합의에도 많은 노력이 필요하지 않습니다.
- 트랜잭션의 실행과 트랜잭션 순서 합의가 서로 분리되어 있어 트랜잭션의 실행을 병렬적으로 처리할 수 있습니다. 트랜잭션이 발생하지 않으면 블록이 생성되지 않기 때문에 쓸데없는 데이터가 늘어나지 않습니다.
- 체인코드
- 이더리움에 스마트 컨트랙트(Smart Contract)가 있듯이 하이퍼레저 패브릭에는 체인코드(Chain Code)가 있습니다. 체인코드는 보통 네트워크 멤버들이 동의한 비즈니스 로직을 처리합니다.
- 권한만 있으면 하나의 체인코드가 다른 채널의 체인코드도 호출(조회만 허용)할 수 있습니다.
- 체인코드는 Go, Node.js, Java로 작성할 수 있으며, 원하는 노드에만 설치할 수도 있습니다.
Hyperledger Fabric의 구성
패브릭 네트워크는 다음과 같은 요소로 구성됩니다.
- 조직 (Organization)
- 조직(organization)은 패브릭 네트워크에 참여하는 하나의 사용자그룹 단위입니다. 조직별로 노드를 운영하며, 하나의 조직에는 여러 명의 사용자를 가질 수 있습니다.
보통 이해 관계가 맞는 여러 회사들이 연합체(consortium)를 구성하여 패브릭 네트워크를 운영하며, 이 때 각 회사들이 하나의 패브릭 조직(organization)으로 참여하게 됩니다.
- 조직(organization)은 패브릭 네트워크에 참여하는 하나의 사용자그룹 단위입니다. 조직별로 노드를 운영하며, 하나의 조직에는 여러 명의 사용자를 가질 수 있습니다.
- CA
- 패브릭 네트워크의 각 조직들은 자신의 신원을 관리하고 각 조직에 속한 사용자들을 인증하기 위해 CA(Certificate Authority)를 운영합니다. CA는 조직과 사용자들에게 디지털 증명서(Digital Certificate)를 발급하는 역할을 합니다.
- 패브릭 네트워크에 참여하는 각 조직들은 모두 개별 CA를 이용합니다.
- 피어 (Peer)
- 피어 노드는 오더러가 만든 블록을 검증하고 그 블록을 바탕으로 원장을 저장하고 유지하는 노드입니다.
또한 클라이언트의 요청에 의해 발생하는 체인코드의 실행을 담당하며 체인코드 실행 결과를 트랜잭션으로 만들어 오더러에게 전달합니다. - 보통 각 조직별로 일정 개수의 피어 노드를 구성하여 네트워크에 참여합니다.
- 피어 노드는 오더러가 만든 블록을 검증하고 그 블록을 바탕으로 원장을 저장하고 유지하는 노드입니다.
- 오더러 (Orderer, Ordering service)
- 오더러 노드는 패브릭 네트워크에서 블록 내의 트랜잭션 순서를 결정하는 역할을 담당합니다.
일반적으로 알려진 여러 공개형 블록체인들의 합의 모델과 달리 하이퍼레저 패브릭의 신뢰 모델은 오더러와 체인코드 보증 정책을 통해 이루어집니다. - 체인코드의 보증 정책에 따라, 하나 내지 여러 피어에게 같은 입력에 대한 체인 코드 실행 결과가 동일함을 보증받는 것이 첫 번째 신뢰 단계이고, 체인코드가 생성한 트랜잭션들이 오더러에 의해 한 블록 내에서 같은 순서로 취합되는 것이 두 번째 신뢰 단계입니다.
- 한 조직이 전담해서 오더링 서비스 노드를 구성하거나, 여러 조직이 나눠서 오더링 서비스를 구성하는 등 여러가지 방식으로 오더러 노드를 구성할 수 있습니다. 현재 공식적으로 지원되는 합의 방식은 raft 방식이며 기존의 kafka 방식은 하이퍼레저 패브릭 2.0 부터 지원이 종료되었습니다.
- 오더러 노드는 패브릭 네트워크에서 블록 내의 트랜잭션 순서를 결정하는 역할을 담당합니다.
- 채널 (Channel)
- 채널은 하나의 원장을 나타내는 논리적 개념입니다. 하나의 패브릭 네트워크 안에 여러 개의 채널을 만들 수 있으며 각 채널 별로 별도의 접근 권한을 설정할 수 있습니다. 따라서 중요한 정보를 별도의 채널을 구성하여 저장하고 그 채널의 접근 권한을 제어하면, 패브릭 네트워크 사용자라고 하더라도 채널에 허가된 사용자가 아니라면 접근할 수 없도록 제한할 수 있습니다.
- 각 피어 노드는 자신이 저장하고 유지할 채널을 선택하여 서비스 할 수 있으며, 여러 개의 채널을 하나의 피어 노드에서 서비스 할 수도 있습니다. 같은 채널을 서비스하는 피어 노드들은 결국 모두 동일한 원장을 가지게 됩니다.
- 클라이언트 (Client)
- 패브릭 클라이언트는 패브릭 네트워크를 사용하는 어플리케이션을 말합니다. 패브릭 네트워크를 사용할 수 있는 유저 정보와 패브릭 네트워크 접속 정보를 이용하면 네트워크 외부에서 트랜잭션을 발생시키거나 데이터를 조회할 수 있습니다.
- 현재 지원하는 하이퍼레저 패브릭 SDK 는 Node.js, Java, Go SDK 입니다.
루니버스 Hyperledger Fabric 사용 시 주의 사항
- 배포할 수 있는 체인코드에 제한이 있으며, 다른 사용자들과 네트워크 공유하기 때문에 속도가 느릴 수 있습니다. 또한 하나의 채널에 데이터가 공유되므로 데이터의 기밀성이 보장되지 않습니다.
- 현재 네트워크가 한번 만들어지고 나면 동적으로 조직을 추가하거나 피어 노드를 추가할 수 없습니다. 향후 해당 기능을 추가할 예정입니다.
- 루니버스 하이퍼레저 패브릭 유료상품은 하이퍼레저 패브릭 2.2버전을 지원합니다.
Updated about 1 year ago