본문 바로가기
Block Chain/블록체인으로 구현하는 사이버 보안

[블록체인] 4장, 하이퍼레저: 비즈니스용 블록체인

by Y06 2021. 3. 21.

블록체인은 분산 네트워크에서 제3의 조정자 없이 작동한다. 그것은 이제 반드시 고려해야 할 구성요소가 됐으며, 차세대 금융 기술 및 거버넌스 모델을 형상화할 것이다. 그러나 비트코인과 이더리움 같이 암호화폐에 사용되는 블록체인들은 보상과 인센티브 제공에 중점을 둔다. 이 도전을 극복하기 위해 리눅스 재단과 선도 기업들이 협력해서 분산 원장 기반 프로젝트인 하이퍼레저(Hyperledger) 프로젝트를 게시했다.

 

하이퍼레저 개요

하이퍼레저는 분산 원장 기술을 가지고 핵심 산업 요구를 해결하는 데 중점을 둔 오픈소스 프로젝트다.

 

블록체인은 안전한 비즈니스 운영과 관리 기술의 열쇠로 채택되고 있다. 비트코인은 경직되고 정적인 특성 때문에 비즈니스 애플리케이션 목적으로 사용할 수 없다.

 

하이퍼레저는 전체 시스템에 대한 더 나은 통제를 구현하기 위한 허가형 블록체인의 요구에 의해 비즈니스를 위해 섬세하게 구축된 유일한 원장 기술 프레임워크다. 하이퍼레저는 주요한 비즈니스 문제를 해결하기 위한 것이므로 암호화폐 플랫폼 및 관련 시스템을 지원하지 않는다.

 

또한 하이퍼레저 프로젝트는 분산 원장 애플리케이션을 구축하는 단일하고 완전한 표준을 제정하기 위해 모든 블록체인 지지자, 블록체인 커뮤니티, 기업, 비영리 조직과의 협력을 계획하고 있다. 워드프레스가 웹사이트 구축 방법과 시간에 혁신을 가져온 것과 같은 방식으로 하이퍼레저는 분산 원장 애플리케이션을 구축하는 데 드는 비용과 시간을 절감하려 한다.

 

블록체인 서비스

하이퍼레저는 분산 원장 기술과 비슷하다. 블록체인 기술을 생태계에 특별히 중점을 둬왔다.

 

마이크로소프트는 2015년 애저 블록체인 서비스를 개시함으로써 BaaS(Blockchain-as-a-Service)를 처음으로 시작한 소프트웨어 업체가 됐다. SAP는 자체적인 BaaS 플랫폼인 레오나드로(Leonardo)를 시작했으며, 이는 하이퍼레저 기반 클라우드 서비스다.

 

프로그램 목표

[ 하이퍼레저 프로젝트의 목표와 발전방향 ]

  • 커뮤니티 주도 기반구조: 하이퍼레저 프로젝트는 여러 사설 및 정부 연구소의 지원을 받으므로 고효율의 개방된 커뮤니티 기반 환경을 표방한다.
  • 엔터프라이즈급 프레임워크: 암호화폐 블록체인과 달리, 하이퍼레저는 분산 원장 네트워크에서 안전하고 신뢰성 있는 거래를 수행함으로써 비즈니스를 지원하기 위해 개발됐다.
  • 기술 커뮤니티 구축: 이 프로젝트는 블록체인 스마트 계약 및 관련 코드의 혁신과 개발을 위해 더욱 효과적이고 큰 기술 커뮤니티를 구축하는 것도 목표로 한다.
  • 인식 개선: 이것은 비즈니스 및 블록체인 기술에 관련된 다른 기관의 인식을 고취하고 비즈니스 사례를 퍼뜨리는 훌륭한 방식이다.

아키텍처와 핵심 구성요소

하이퍼레저는 분산 원장 기술을 기반으로 엔터프라이즈급 솔루션을 구축할 수 있는 오픈소스 프레임워크다.

 

[ 프레임워크 구성 요소]

  • 공유 원장: 추가만 가능한 원장으로, 블록을 생성 순서대로 저장한다.
  • 합의 알고리즘: 분산 원장에서 일어난 변경에 대해 공통의 합의를 이루는 방법이다.
  • 프라이버시: 하이퍼레저를 개발한 주목적은 미션 크리티컬(mission-critical)한 비즈니스 환경에서 사용할 수 있는 안전하고 신뢰성 있는 거래를 위한 허가형 네트워크를 구현하는 것이다.
  • 스마트 계약: 거래 요청을 세부적으로 계획 및 처리할 수 있는 방법이다.

[ 하이퍼레저의 아키텍처 ]

  • 합의 계층: 각 오더에 대한 합의를 도출하고 사전에 정의된 규칙에 따라 거래를 검증한다.
  • 스마트 계약 계층: 거래 요청을 처리하고 비즈니스 로직에 적용한다.
  • 통신 계층: 피어 투 피어 트랜스포트를 기반으로 노드 간의 통신을 제공한다.
  • 데이터 저장 추상화: 다른 모듈에서 다양한 데이터 소스를 사용할 수 있게 한다.
  • 암호 추상화: 다른 모듈에 영향을 끼치지 않으면서 암호 알고리즘을 사용할 수 있게 한다.
  • 신원 서비스: 추가적 인증 및 인가 범위를 통해 블록체인 설정 시 신뢰를 확보할 수 있게 한다.
  • 정책 서비스: 합의 정책, 엔도즈먼트(endorsement) 정책, 그룹 관리 정책 같은 여러 정책을 관리한다.
  • API: 클라이언트 및 애플리케이션 블록체인 모듈과 대화하게 해준다.
  • 상호운용: 서로 다른 블록체인 인스턴스들이 연동되게 한다.

[ 하이퍼레저 프레임워크 ]

  • 이로하(Iroha): 하이퍼레저 이로하는 소라미추(Soramitsu), 히타치, NTT 데이터, 콜루(Colu) 등이 기여한 블록체인 프레임워크다. 그것은 모바일 애플리케이션 개발자들이 안드로이드 및 iOS 패키지를 가지고 사용할 수 있게 설계됐다. 그것은 C++ 프로그래밍 패키지와 YAC 합의 알고리즘으로 단순하게 설계됐다.
  • 소투스(Sawtooth): 이것은 인텔에서 기여했으며, 네트워크의 규모에 따라 여러 가지 합의 알고리즘을 사용하도록 구축됐다. 하이퍼레저 소투스에서는 경과시간증명(Proof of Elapsed Time, PoET)을 사용해 노드 간의 합의를 구현하는 것을 기본으로 한다. 그것은 허가형 및 비허가형 구현을 모두 지원하는 융통성을 갖도록 설계했다.
  • 인디(Indy): 하이퍼레저 인디는 탈중앙화된 신원 증명 및 지원되는 여러 가지 분산 원장 기술(Distributed Ledger Technologies, DLT) 사이의 상호운용성 제공을 위한 비즈니스 솔루션을 구축하기 위한 분산 원장이다. 이것은 노드와 전체 거래에 있어 프라이버시를 구현하도록 설계됐다.
  • 버로우(Burrow): 하이퍼레저 버로우는 모듈화된 블록체인 클라이언트를 제공하는 허가형 스마트 계약으로, 이더리움 가상 버신(EVM)과 함께 구축된 허가형 스마트 계약 인터프리터를 포함한다.

하이퍼레저 패브릭 모형

하이퍼레저 패브릭 프로젝트는 IBM 블록체인 플랫폼의 지원을 받아 리눅스 재단에서 주관한다. 기밀 거래에 대한 핵심 기능은 허가형 네트워크, 프로그램 가능한 비즈니스 로그인, 함호화폐 채굴이 불필요한 점 등이다.

 

하이퍼레저 패브릭 핵심 구성요소

네트워크의 여러 노드 사이에 통신이 어떻게 수립되고 유지되는지 이해하는 것이 중요하다.

 

노드: 하이퍼에저 네트워크에서 세 가지 역할이 있다.

  • 클라이언트: 클라이언트는 네트워크에 거래 요청을 제안한다. 블록체인에 참가하기 위해서는 피어에 연결돼야 한다. 클라이언트는 원하는 피어를 네트워크에 연결할 권리를 갖는다.
  • 피어(peer): 피어는 원장 갱신을 리스닝하고 그 사본을 유지한다. 피러는 다음 두 유형이 있다
    - 엔도징(endorsing) 피어: 엔도저(endorser)들은 거래를 시뮬레이션하고 엔도즈(endorse)한다.
    - 커미팅(committing) 피어: 커미터는 거래를 검증하고 네트워크에 커밋한다.
  • 오더링 서비스(ordering service): 오더링 서비스는 엔도즈된 거래를 받아들이고, 순서대로 배열해서 블록으로 만들고, 최종적으로는 커미팅 피어에 전달한다. 오더링 서비스는 클라이언트와 피어를 위해 공유되고 안전한 통신 채널도 제공한다. 그것은 거래를 브로드캐스트하는 매체로서 동작해 거래를 피어에 전달하도록 돕는다.

원장(ledger): 비트코인 및 이더리움과 마찬가지로 하이퍼레저의 원장은 유효 또는 무효인 모든 거래의 검증된 목록을 시스템의 운영을 통해 제공한다. 오더링 서비스에 의해 생성되며, 네트워크의 모든 피어에 보관된다.

 

채널(channel): 하이퍼레저 패브릭 채널은 노드들이 비밀 거래를 수행할 수 있게 해주는 제한적 통신 매체다. 채널은 멤버, 공유 원장, 체인코드 애플리케이션, 오더링 서비스 노드에 따라 다르다. 각 피어는 관련 채널 피어와 서비스에 대해 각 피어를 검증하는 멤버십 서비스 제공자(Membership Service Provider, MSP)로부터 허락을 받아 채널에 가입한다.

 

전체 상태(world state): 이것은 네트워크의 모든 자산에 대한 데이터의 현재 상태를 반영한다. 데이터는 다음과 같은 형식으로 안전하게 저장된다.

  • 레벨DB(LevelDB): 하이퍼레저 패브릭의 기본 데이터베이스로, 키/값 쌍을 저장한다.
  • 카우치DB(CouchDB): 이것은 웹과 네이티브 애플리케이션에 잘 맞으며 JSON을 네이티브하게 구사한다. 이것은 모든 데이터 저장 요구에 대해 바이너리를 지원한다.

체인코드(Chaincode): 체인코드는 네트워크의 구성원들이 동의 및 생성한 업무 로직을 관리하는 것으로, GO와 Node.js로 작성된 프로그램이다.

  • 레벨DB: 안전한 도커(Docker) 컨테이너에서 구동되며 원장의 상태를 관리하는 기본 프로그래밍 언어다.
  • 카우치DB: JSON 개체를 저장하는 또 다른 데이터베이스 프로그래밍 언어다. 또한 키 범위, 복합, 전체 데이터 도달 질의를 지원한다.

합의: 합의는 원장에 추가될 거래 세트에 대한 동의를 얻는 과정이다. 하이퍼레저 패브릭에서는 다음 세 단계를 거쳐 합의에 이른다.

  • 거래를 엔도즈
  • 오더
  • 검증 및 커밋

하이퍼레저와 거래 처리 작업

  1. 거래 제안: 하이퍼레저 패브릭에서는 클라이언트 애플리케이션이 거래 제안을 보냄으로써 프로세스가 시작된다.
  2. 엔도저들이 RW 세트를 클라이언트에 보냄: 각 엔도징 피어는 제안된 거래를 시뮬레이트하고 RW 세트(RW set)라는 읽기 쓰기 데이터를 저장한다. 엔도징 피어의 서명을 받은 RW 세트는 클라이언트 애플리케이션으로 반환된다.

    거래 엔도즈먼트: 이것은 시뮬레이트된 거래로부터 도출된 서명된 응답이다. 스마트 계약과 비슷하게 정책 체인코드에 의해 거래 엔도즈먼트가 정의될 수 있는 여러 방법이 있다. 하나의 거래 엔도즈먼트 정책은 정의된 체인코드 하나와 닮았다.
  3. 클라이언트 애플리케이션 서비스: 클라이언트 애플리케이션 서비스가 RW 세트를 수신하고 거래를 엔도즈하면 그것은 이것들을 오더링 서비스에 제출해야 한다. 이 방법은 다른 클라이언트 애플리케이션에서 제출한 거래 엔도즈먼트와 RW 세트에 관계없이 계속 동작한다.
  4. 오더링 서비스가 블록에 거래를 담아 커미팅 피어에 보냄: 오더링 서비스는 RW 세트와 엔도즈된 거래를 받아 그것들을 블록에 집어넣고, 순서를 정해 커미팅 피어에게 전달한다.
  5. 커미팅 피어들이 블록의 각 거래를 검증: 커미팅 피어는 RW 세트가 현재의 전체 상태와 일치하는지 확인하기 위해 거래를 검증한다. 커미팅 피어가 거래를 검증하면 그 거래는 원장에 갱신되며 전체 상태는 RW 세트로부터 기록된 데이터를 가지고 자동적으로 갱신된다.
  6. 신원 검증: 엔도즈먼트에서 버전 확인, 신원 검증까지의 거래 흐름의 각 단계는 연속적인 과정으로 이뤄진다.

비트코인, 이더리움, 하이퍼레저

블록체인 기술은 네이티브 형태에서 매끈하게 동작하기는 하지만 비즈니스적 요구에 바로 들어맞지 않는 경우가 많다. 그에 따라 여러 종류의 블록체인 네트워크가 생겨났다. 대표적인 블록체인 모형 몇 가지의 특징을 자세히 비교해보자.

 

  • 권한 제약: 새로운 블록을 생성하고 원장에 추가하는 거래 처리자의 자격과 관련해 두 가지 방식이 존재한다.

    - 허가형 블록체인: 미리 선정된 사용자에 의해서만 거래 처리가 이뤄지는 방식으로, 하이퍼에저 패브릭이 그 예다.
    - 비허가형 블록체인: 새로운 블록을 생성 및 추가하는 거래 처리자를 제한하지 않는 방식이다. 이더리움과 비트코인이 가장 대표적인 예다.
  • 데이터 접근 제한: 블록체인 네트워크의 읽기 권한에 따라 두 가지 방식이 존재한다.

    - 공중 블록체인: 진행 중인 거래를 읽는 데 제약이 없다. 누구나 블록체인 노드 클라이언트를 설치해 최신 블록체인 원장을 다운로드할 수 있다.
    - 사설 블록체인: 미리 선정된 사용자만 블록체인 원장에 접근할 수 있다.
  • 합의 방식: 분산 네트워크에서는 무신뢰(trustless) 네트워크를 구현하고 모든 거래에 대한 합의를 구하는 것이 매우 중요하다. 이는 유효하고 정당한 거래만 블록체인에 추가되도록 해준다. 합의 알고리즘에는 작업 증명, 지분 증명, PBFT 등이 있다.
  • 확장성: 확장성은 노드와 성능의 두 가지 요인에 의존한다. 노드 확장성은 전반적 성능에 영향 없이 네트워크에 노드를 추가할 수 있는지를 가리키며, 성능 확장성은 초당 거래량에 의존한다.
  • 익명성: 블록체인 사용자의 신원이 공개되는지, 비밀로 취급되는지를 가리킨다.
  • 권력 집중도: 블록체인 커뮤니티네서 의사결정의 권력이 얼마나 집중돼 있는지를 나타내는 척도다. 블록체인 플랫폼은 핵심 개발자 팀 또는 기타 이해관계자에 의해 유지돼야 한다.
  • 자체 통화: 블록체인 내에서 유효한 통화를 가리킨다. 예: 비트코인(블록체인)에는 비트코인(통화)이 있다.
  • 스크립팅: 탈중앙화된 애플리케이션(dApp)에 의해 지원되는 프로그래밍 수준을 가리킨다.
구분 비트코인 이더리움 하이퍼레저
권한 제약 비허가형 비허가형 허가형
데이터 접근 제한 공중 공중 또는 사설 사설
합의 방식 작업증명 작업증명 PBFT
확장성 노드 확장성이 높으나 성능 확장성 낮음 노드 확정성이 높으나 성능 확장성 낮음 노드 확장성과 성능 확장성 모두 높음
권력 집중도 낮음
커뮤니티와 채굴자에 의해 분권화된 의사결정
보통
핵심 개발자 그룹이 존자하지만 EIP 프로세스를 따름
낮음
리눅스 모델에 따라 개방된 지배구조를 가짐
익명성 익명성 제공
거래 데이터 암호화 없음
익명성 제공
거래 데이터 암호화 없음
익명성 제공
거래 데이터 암호화
자체 통화 비트코인 이더 없음
스크립팅 스택 기반 스크립팅이 제한적으로 가능 가능성 높음
튜링 완전 가상 머신
고급언어 지원(솔리디티)
가능성 높음
체인코드를 통한 튜링 완전 스크립팅
고급 언어 지원(Go)

 

하이퍼레저 패브릭의 기능

하이퍼레저는 안전하고 확장성 있으며 보안성, 기밀성, 성능까지 겸비한 풀스택 엔터프라이즈급 비즈니스 솔루션이다. 

 

[ 하이퍼레저 패브릭의 핵심 기능 ]

  • 신원 관리: 하이퍼레저 패브릭은 사용자 ID를 관리하고 네트워크에서 그것을 인증하는 멤버십 신원 식별 서비스를 제공함으로써 허가형 네트워크를 지원한다. 하나의 사용자 ID는 하나의 체인코드 애플리케이션을 호출할 수 있으나 새로운 체인코드를 실행하는 것은 차단될 수 있다.
  • 효율적인 처리: 하이퍼레저에서는 거래 오더와 커밋을 담당하는 노드를 구분해서 동시에 실행하므로 오더를 거 빨리 처리해서 전반적인 성능 향상을 꾀한다.
  • 프라이버시 및 기밀성: 특정 네트워크 멤버에 거래의 프라이버시와 기밀성을 제공하기 위해 개인적 채널의 메시지 전송 경로를 제한한다. 다른 네트워크 멤버는 멤버 정보를 포함한 전체 데이터, 거래, 채널 상세 정보를 열람 또는 수정할 수 없다.
  • 체인코드 기능: 체인코드 애플리케이션 및 하이퍼레저 패브릭의 비즈니스 로직에 관련된 것이다. 체인코드는 소유권을 이전하는 모든 거래가 규칙과 요구사항을 따를 것을 보증한다. 채널의 운영 파라미터는 일반적으로 시스템 체인코드에 의해 정의되며, 검증 시스템 체인코드는 엔도징 및 검증 트랜잭션의 요구사항을 정의한다.

출처: 블록체인으로 구현하는 사이버 보안, 라즈니쉬 굽타 지음