본문 바로가기

Blockchain

[Blockchain Platform] 01.Hyperledger

하이퍼레저(Hyperledger)란?

하이퍼레저는 리눅스 재단에서 주관하는 블록체인 오픈소스 프로젝트로, 여러 기업들이 공동으로 참여하는 범산업용 분산원장 표준화 프로젝트입니다.

프라이빗 블록체인 플랫폼으로서 스마트 계약의 구현이 가능하고, 기업 비즈니스를 구현하기에 적합하며, 금융에 특화된 타 플랫폼과 달리 여러 산업에 범용적으로 도입 가능한 기술로 떠오르고 있습니다.

 

##· Public Blockchain vs Private Blockchain

#Public Blockchain

누구나 자유롭게 참여가 가능한 블록체인을 의미합니다.

 

#Private Blockchain

인증 관리 시스템에 의해서 허가되고 승인된 사용자만이 블록체인의 네트워크에 참여할 수 있습니다.

 

하이퍼레저 블록체인 네트워크에 참여한 노드들은 이미 시스템에 의해 신뢰성을 가진 노드입니다.

허가된 노드들로 네트워크가 구성되기 때문에 퍼블릭 블록체인에서 악의적인 노드 또는 사용자를 검출하고 배제하기 위한 복잡하고 시간이 오래 소요되는 합의 알고리즘을 벗어날 수 있습니다.

 

· Hyperledger Whitepaper

원본 사이트: https://docs.google.com/document/d/1Z4M_qwILLRehPbVRUsJ3OF8Iir-gqS-ZYe7W-LE9gnE/pub?cm_mc_uid=29910601354314920081869&cm_mc_sid_50200000=1502840355 

 

Hyperledger Whitepaper

Hyperledger Whitepaper Abstract This paper describes industry use cases that drive the principles behind a new blockchain platform, and outlines the basic requirements and high-level architecture based on those use cases. The design presented here describe

docs.google.com

한글 해석:  https://miiingo.tistory.com/86

 

· Architecture

-신원서비스(Identity Service)

프라이빗 블록체인은 참여 권한이 있는 참여자만이 참여할 수 있는 폐쇄형 구조입니다. 그래서 참여자들이 분산원장에 데이터를 기록, 수정, 삭제할 수 있는 인증서를 발급받기 위한 기능이 필요합니다. 처음 참여할 때 받는 'Enrollment Certificate'와 호출 시 랜덤으로 생성되는 'Network Certificate'으로 두 가지 형태가 있습니다.

 

-정책서비스(Policy  Service)

기능을 사용하면서 시스템 정책을 구성하고 관리합니다. 예를 들어서 출입통제 및 승인 권한, 회원의 출입 및 출입 규정, 신원등록 및 확인정책, 개인정보 보호, 기밀유지 및 책임정책, 합의정책 등을 포함하여 합의된 규칙을 문서로 나타냅니다.

 

-블록체인

블록체인 서비스는 P2P 프로토콜, 분산원장, 합의 관리자 세 가지 핵심 구성 요소로 이루어져 있습니다. 

P2P 프로토콜은 단일 연결을 통해 양방향 스트리밍, 흐름제어 및 멀티플렉싱 요청을 비롯해 다양한 기능을 제공합니다.

분산원장은 트랜잭션 처리 및 유효성 검사하고 오브젝트의 상태를 업데이트 및 유지 관리하여 블록체인 상태를 관리합니다. 각 블록 데이터 세트의 암호화 해쉬를 효율적으로 계산하고, 각 피어가 동작하는 데 필요한 저장된 데이터의 양을 최소화 합니다.

 

-트랜잭션

분산원장은 데이터 저장소를 사용하여 데이터를 저장합니다. 대용량 파일은 off-chain 저장소에 저장됩니다.

저장된 데이터의 해시는 파일의 무결성을 유지하는 데 필요한 트랜잭션의 일부로 체인에 저장할 수 있습니다. 

합의모듈은 유효성 확인 및 합의 정책에 따라 제안된 블록에서 모든 거래의 정확성을 확인합니다.

 

-스마트 컨트랙트

스마트 컨트랙트는 프라이빗 블록체인에서 중요한 기능으로 기업 및 컨소시엄으로 구성된 서비스에 맞게 블록체인을 활용할 수 있도록 로직을 구현하는 기능입니다.

 

*API를 사용하면 응용 프로그램이 서비스를 호출할 수 있습니다.  SDK는 이러한 API를 기반으로 개발을 인코딩하는데 도움이 됩니다. CLI는 테스트를 하기 위해 API를 호출하는 명령 인터페이스 입니다.

CLI(Command Line Interface): 키보드로 명령어를 입력해서 컴퓨터를 제어하는 방식

SDK(Software Development Kit): 소프트웨어 개발 도구 모음으로 응용 프로그램 개발의 복잡성을 줄이는 기능 집합

API(Application Programming Interface): 응용 프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스

 

###Framework & Tool

하이퍼레저는 크게 프레임워크(Framework)와 도구(Tool)로 나누어져 기술 분야 전반을 지원합니다.

 

· Hyperledger greenhouse(2022/2/5 기준)

 

##Framework

분산원장, 스마트 컨트랙트, 합의 알고리즘 등으로 이루어진 블록체인 프로젝트로 블록체인에 대한 원천적 기술을 개발하기 위한 프로젝트입니다.

 

1. Hyperledger Fabric

· 플러그 앤 플레이 방식: 꽂으면 실행된다는 뜻으로, 컴퓨터 실행 중에 주변 장치를 부착해도 별다른 설정 없이 작동합니다.

· 모듈러 아키텍처: 합의 알고리즘, 멤버십 서비스 등의 모듈을 필요에 따라 교체가 가능합니다.

 

분산 어플리케이션 및 솔루션 개발을 위한 프로젝트로, 합의나 멤버십 서비스 등의 핵심 기술 요소들이 Plug and Play 방식으로 구현될 수 있는 모듈 구조를 가집니다. 합의 알고리즘이 정해져 있는 비트코인, 이더리움과 달리 요구사항에 따라 합의 알고리즘을 교체할 수 있는 이점이 있습니다. 

 

Chaincode는 하이퍼레저 패브릭의 스마트 컨트랙트 프로그램으로, 이더리움의 스마트 컨트랙트와 유사하지만 이더리움이 개발언어로 솔리디티를 이용하는 것과 달리 기존의 프로그래밍 언어들을 이용해 개발할 수 있습니다.

 

일반적인 블록체인과 다르게 하이퍼레저 패브릭은 내부적인 암호화폐가 존재하지 않습니다.

 

하이퍼레저 패브릭은 보증된 피어들을 통해 체인코드를 실행하는 다수의 거래들을 동시에 처리할 수 있어 성능이 매우 높고, 병렬으로 실행된 결과를 동일한 블록체인 내에 적용하기 위한 ordering 서비스가 구현되어 있습니다.

전체 시스템을 다수의 채널로 구분하여 멀티 블록체인이라는 개념을 지원하고 있습니다. 각 채널별로 독립적인 블록체인을 유지할 수 있으며 참여자는 특정 채널에 가입하여 블록체인을 선택할 수 있습니다.

 

2. Hyperledger Iroha

하이퍼레저 이로하는 디지털 자산, 신원을 관리하기 위한 하이퍼레져 프로젝트이며, 주로 기존 시스템에 분산 원장을 통합하는 기능을 제공합니다. C++로 개발되었고, 디지털 자산과 디지털 신원을 관리하기 위한 대부분의 동작을 커버하는 빠른 명령어와 쿼리 셋을 제공합니다. 배포와 유지 보수가 간단하며, 개발자를 위해 다양한 라이브러리를 제공합니다.

 

명령어 – 쿼리 분리 원칙에 의한 모듈식 설계 방식을 따릅니다. 시스템에 미리 작성된 명령을 사용하여 자산 생성, 계정 등록, 자산 전송 등의 기능을 수행하여 스마트 컨트랙트를 신속하고 적은 위험으로 테스트할 수 있습니다.

 

합의 알고리즘으로 BFT를 채택하였고, 일종의 투표를 거쳐 2/3 이상이 블록에 동의를 하면 해당 블록의 생성이 확정되는 방식으로 다른 알고리즘에 비해 더 높은 성능을 가집니다.

 

이로하는 강력한 권한 시스템을 갖춘 유일한 원장으로서 모든 명령 쿼리 및 네트워크 참여 권한을 설정할 수 있습니다.

 

3. Hyperledger Sawtooth

하이퍼레저 sawtooth는 리눅스 재단이 두번째로 공개한 모듈러 블록체인 플랫폼입니다. 분산원장을 유지하고 스마트 컨트랙트를 안전하게 유지하는 것을 목표로 삼고 있습니다. Core 시스템과 어플리케이션 도메인을 분리하여 블록체인 어플리케이션 개발을 단순화 합니다.

 

응용 프로그램 개발자는 Core 시스템의 내부 설계를 몰라도 선택한 언어를 사용하여 개발하고자 하는 응용프로그램에 적합한 비즈니스 규칙을 정할 수 있습니다. 이를 위해 sawtooth는 체인 설정 유지, 체인 권한 저장, 성능 분석과 블록 정보 저장을 위한 특정 응용 프로그램과 같은 low-level 모델을 위한 몇 가지 예제 트랜잭션을 제공합니다.

 

대부분의 블록체인은 네트워크의 일관성을 유지하기 위해 직렬로 트랜잭션을 실행해야 하지만 sawtooth는 고급 병렬 스케줄러를 통해 트랜잭션을 병렬로 처리할 수 있습니다. 트랜잭션에 의해 액세스 되는 상태 위치를 기반으로 상황을 고려하여 트랜잭션을 여러 병렬적인 흐름으로 분리합니다.

 

sawtooth와 이더리움의 통합 프로젝트 seth를 통해 두 플랫폼 간의 상호 운용성을 가지고 있어 이더리움의 스마트 컨트랙트가 sawtooth에 배포될 수 있습니다.

 

높은 모듈성을 통해 기업과 컨소시엄이 가장 잘 갖추어진 정책 결정을 가능하게 합니다.

 

동일한 블록체인에 대해 서로 다른 유형의 합의를 허용합니다. 초기 네트워크 설정 당시 합의 알고리즘이 선택되며, 실행 중인 블록체인 상에서도 변경될 수 있습니다.

 

Sawtooth에서는 PoET(Proof of Elapsed Time)라고 하는 PoW의 전력 소비 문제를 없애면서 스케일링이 가능한 새로운 합의 알고리즘을 도입했습니다. 이 알고리즘을 통해 대규모의 Validator 노드가 최소한의 자원만을 사용하여 검증 합의할 수 있습니다.

 

Hyperledger Sawtooth는 허가형과 비허가형 블록체인 네트워크를 지원하지만 Hyperledger Fabric은 허가형 블록체인 네트워크만 지원합니다.

 

4. Hyperledger Burrow

하이퍼레저 Burrow는 권한 승인 기반의 스마트 컨트랙트 실행 프레임워크로, 스마트 컨트랙트 구현을 위해 가장 많은 기술을 보유하고 있는 이더리움을 비즈니스에 활용하려는 목적을 가지고 있습니다. 즉, 하이퍼레저 프로젝트 최초의 이더리움 기반 스마트 컨트랙트 플랫폼입니다.

 

BURROW는 PBFT 기반의 Tendermint 합의 알고리즘을 사용합니다. 3분의 2 이상의 사용자가 동의하면 블록 생성을 확정하는 알고리즘으로, 높은 트랜잭션 처리량을 제공하고 블록체인의 분기를 방지합니다.

 

Application Blockchain Interface를 통해 여러 프로그래밍 언어로 개발된 스마트 컨트랙트를 실행할 수 있습니다.

그리고 EVM 기반의 스마트 컨트랙트 인터프리터가 빌트인 된 블록체인 클라이언트를 제공합니다. REST 및 JSON-RPC 앤드 포인트를 노출 하여 블록체인 네트워크와 상호작용 하거나 응용 프로그램의 현재 상태를 쿼리합니다.

5. Hyperledger Indy

하이퍼레져 INDY는 소브린이라는 재단이 주도적으로 개발하는 분산 원장 프레임워크로, 특정 국가나 조직에 의존하지 않고 전 세계적으로 적용되는 신원 확인 기능을 구현하는 것을 목표로 합니다. 하이퍼레저 INDY는 ID 시스템이 추가된 하이퍼레저 패브릭과 같은 시스템입니다.

INDY는 블록체인이나, 다른 분산 원장을 기반으로 하여 독립적인 디지털 신원을 만들고 사용할 수 있도록 툴, 라이브러리, 컴포넌트들을 제공합니다. 분산 원장은 이후에 변경될 수 없으므로 신원을 다룰 때에는 굉장히 신중해야 합니다. 이러한 하이퍼레저 INDY는 다른 하이퍼 레저 프로젝트에 ID 시스템을 추가하기 위한 도구 및 라이브러리를 제공하는데 사용될 수 있습니다.

INDY는 합의 알고리즘으로 Redundant Byzantine Fault Tolerant (RBFT)라는 알고리즘을 사용합니다. RBFT 알고리즘에는 블록을 생성하는 마스터 노드와 블록 생성 요청을 순서대로 정렬하는 백업 노드가 있습니다. 마스터 노드는 다른 백업 노드보다 성능이 좋아야 블록을 생성할 수 있습니다. 모든 노드는 마스터 노드와 백업 노드의 성능을 비교하여 마스터 노드의 성능이 좋지 않으면 시스템에 악영향을 미치는 노드라고 판단하고 블록을 생성하지 않습니다.

 

 

##Tool

1. Hyperledger Cello

하이퍼레저 첼로는 블록체인 생성, 관리, 중단을 위해 필요한 과정을 감소시킬 수 있는 blockchain-as-a-service 구현을 위한 툴킷입니다. 블록체인 네트워크의 생성, 시작,중단, 삭제, 유지 등 블록체인의 라이프 사이클을 관리하는 역할을 하며 이를 위해 소요되는 노력을 최소화 할 수 있습니다.

첼로는 가상머신 및 기타 컨테이너 플랫폼과 같은 다양한 인프라 위에 효율적이고 자동적으로 멀티 테넌트 체인 서비스를 제공합니다. 운영자는 이를 활용하여 대시보드(Dashboard)를 통해 풀(Pool) 내 여러 블록 체인을 생성하고 관리할 수 있으며 유저는 블록체인을 한 번의 요청으로 빠르게 불러올 수 있습니다. 현재는 하이퍼레저 패브릭을 지원 하지만 향후에 다른 블록체인도 지원할 예정입니다.

2. Hyperledger Composer

3. Hyperledger Quilt

하이퍼레저 퀼트는 Inter-Ledger Protocol (ILP) 구현을 통해 블록체인 간 레저 간의 상호 운용성을 극대화합니다. 기존 원장과 분산 원장을 포함한 네트워크 상의 가치 이전을 지원합니다. 퀼트 툴을 통해 기존 원장과 일반 원장 간의 가치 전송이 가능해집니다.

4. Hyperledger Explorer

하이퍼레저 익스플로러는 블록체인 어플리케이션 모니터링을 위한 오픈소스 브라우저입니다. 블록, 트랜잭션, 체인코드, 노드, 채널 등에 대한 모니터링을 하여 여러 정보를 쉽고 빠르게 조회할 수 있도록 하는 툴입니다.

익스플로러 툴은 사용자 친화적인 웹 응용 프로그램을 개발을 목표로 합니다. 또한 블록 거래 관련 데이터 네트워크 정보 원장에 저장된 관련 정보를 열람, 호출, 배포 또는 쿼리할 수 있습니다.

 

5. Hyperledger Caliper

하이퍼레저 캘리퍼는 블록체인 의 성능을 측정하기 위한 테스트 툴으로, 사용자가 사전에 정의된 use case들로 특정 블록체인의 성능을 측정할 수 있게 합니다. 캘리퍼를 통해 제공되는 정보는 TPS, 성공률, 처리량, 트랜잭션 지연 시간, CPU, memory 사용량 등 입니다. 이러한 성능 지표는 다른 하이퍼레저 프로젝트에서 프레임워크 를 구축할 때 사용될 수 있으며, 사용자의 특정 요구에 적합한 블록체인을 구현하기 위해 참조될 수 있습니다.

2018년 기준으로 하이퍼레저 패브릭 1.0 버전, 하이퍼레저 sawtooth 1.0 버전 하이퍼레저 이로하 프레임워크의 블록체인 솔루션을 지원합니다. 또한 하이퍼레저 컴포저 툴의 성능 측정도 가능합니다.