블록체인 이론 및 응용 - (7) 하이퍼레저

BLANC·2022년 1월 20일
2

블록체인

목록 보기
11/11
post-thumbnail

• 본 게시글은 K-MOOC 묶음강좌 '블록체인 암호화폐:입문부터 심화까지' 강의를 수강하고 공부하며 정리한 내용입니다.

하이퍼레저

하이퍼레저는 리눅스 재단에서 주관하고 2015년 12월에 시작된 블록체인 오픈소스 플랫폼입니다. 금융, IoT, 물류, 제도 등 여러 산업에 걸쳐 적용 가능한 블록체인 기술을 개발하는 것을 목표로 하고 있습니다. 총 16개의 오픈 소스 프로젝트로 구성되어 있으며 분산 원장 라이브러리와 툴로 나뉩니다. 블록체인 최대 오픈소스 커뮤니티를 기반으로 다른 영역으로의 확장에 영향을 미치고 있습니다. 또한, 툴을 통해서 블록체인 개발과 운영까지 모든 영역을 커버하고 있습니다.

하이퍼레저의 이점

  • 프라이빗 블록체인 기업 별도의 비즈니스 모델을 구현하기에 적합한 환경을 제공합니다.
  • 여러 산업에 범용적으로 도입 가능한 기술 표준을 제시함 금융 산업에 특화된 다른 플랫폼들과 달리 기업용 블록체인 기술 개발을 위해 노력하고 있습니다.

하이퍼레저 프로젝트

분산 원장을 가진 분산 응용 플랫폼 개발, 스마트 컨트랙트 엔진, 클라이언트 라이브러리, 그래픽 인터페이스, 유틸리티, 샘플 어플리케이션 등의 개발을 목표로 하고 있습니다.

하이퍼레저 패브릭

하이퍼레저 패브릭은 하이퍼레저 프로젝트 중 가장 널리 알려져 있고, 보통 하이퍼레저를 언급할 때 하이퍼레저 패브릭을 의미하는 경우가 많을 정도로 핵심이 되는 프로젝트입니다.

분산 어플리케이션 및 솔루션 개발을 위한 프로젝트로, 컨센서스나 멤버십 서비스 등의 핵심 기술 요소들이 Plug and Play 방식으로 구현될 수 있는 모듈 구조를 가집니다. 따라서 합의 알고리즘이 정해져 있는 비트코인, 이더리움과 달리 요구사항에 따라 합의 알고리즘을 교체할 수 있습니다. 또한 하이퍼레저 패브릭은 허가형 블록체인으로 허가된 참여자에게만 접근을 허용하며, 참여자의 블록체인 접근 권한을 제어할 수 있습니다.

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

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

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

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

하이퍼레저 sawtooth

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

특징

  • 응용 프로그램 개발자는 Core 시스템의 내부 설계를 몰라도 선택한 언어를 사용하여 개발하고자 하는 응용프로그램에 적합한 비즈니스 규칙을 정할 수 있습니다. 이를 위해 sawtooth는 체인 설정 유지, 체인 권한 저장, 성능 분석과 블록 정보 저장을 위한 특정 응용 프로그램과 같은 low-level 모델을 위한 몇 가지 예제 트랜잭션을 제공합니다.
  • 대부분의 블록체인은 네트워크의 일관성을 유지하기 위해 직렬로 트랜잭션을 실행해야 하지만 sawtooth는 고급 병렬 스케줄러를 통해 트랜잭션을 병렬로 처리할 수 있습니다. 트랜잭션에 의해 액세스 되는 상태 위치를 기반으로 상황을 고려하여 트랜잭션을 여러 병렬적인 흐름으로 분리합니다.
  • sawtooth와 이더리움의 통합 프로젝트 seth를 통해 두 플랫폼 간의 상호 운용성을 가지고 있어 이더리움의 스마트 컨트랙트가 sawtooth에 배포될 수 있습니다.
  • 높은 모듈성을 통해 기업과 컨소시엄이 가장 잘 갖추어진 정책 결정을 가능하게 합니다.
  • 동일한 블록체인에 대해 서로 다른 유형의 합의를 허용합니다. 초기 네트워크 설정 당시 합의 알고리즘이 선택되며, 실행 중인 블록체인 상에서도 변경될 수 있습니다.
  • Sawtooth에서는 PoET(Proof of Elapsed Time)라고 하는 PoW의 전력 소비 문제를 없애면서 스케일링이 가능한 새로운 합의 알고리즘을 도입했습니다. 이 알고리즘을 통해 대규모의 Validator 노드가 최소한의 자원만을 사용하여 검증 합의할 수 있습니다.
  • Hyperledger Sawtooth는 허가형과 비허가형 블록체인 네트워크를 지원하지만 Hyperledger Fabric은 허가형 블록체인 네트워크만 지원합니다.

하이퍼레저 이로하(IROHA)

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

특징

  • 명령어 – 쿼리 분리 원칙에 의한 모듈식 설계 방식을 따릅니다. 시스템에 미리 작성된 명령을 사용하여 자산 생성, 계정 등록, 자산 전송 등의 기능을 수행하여 스마트 컨트랙트를 신속하고 적은 위험으로 테스트할 수 있습니다.
  • 합의 알고리즘으로 BFT를 채택하였고, 일종의 투표를 거쳐 2/3 이상이 블록에 동의를 하면 해당 블록의 생성이 확정되는 방식으로 다른 알고리즘에 비해 더 높은 성능을 가집니다.
  • 이로하는 강력한 권한 시스템을 갖춘 유일한 원장으로서 모든 명령 쿼리 및 네트워크 참여 권한을 설정할 수 있습니다.

하이퍼레저 INDY

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

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

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

하이퍼레저 BURROW

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

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

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

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

하이퍼레저 CELLO

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

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

하이퍼레저 EXPLORER

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

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

하이퍼레저 CALIPER

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

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

하이퍼레저 ARIES

하이저레저 ARIES는 디지털 자격 증명을 생성하고 저장하기 위한 툴킷으로 안전한 키 관리 기능을 제공하는 라이브러리입니다. 블록체인 기반의 데이터 교환 을 가능하게 하고 피어 간 상호작용 비밀 관리, 정보 교환 등 다양한 분산 시스템을 위한 보안 기능을 제공합니다.

하이퍼레저 TRANSACT

하이퍼레져 트랜잭트는 스케줄링, 트랜잭션 디스패치 및 상태 관리 측면을 포함하여 스마트 컨트랙트 실행을 위한 라이브러리를 제공함으로써 분산 원장의 개발을 용이 하게 해주는 프로젝트입니다. 스마트 컨트랙트 실행을 위한 표준 인터페이스를 제공하여 스마트 컨트랙트의 실행을 분산 원장의 구현과 분리시키고자 했고, 스마트 컨트랙트 엔진을 통해서 스마트 컨트랙트 처리를 위한 가상 머신이나 인터프리터를 구현할 수 있도록 하였습니다.

트랜잭트는 기본적으로 상태 전환 을 위한 트랜잭션 처리 시스템으로써, 트랜잭션 실행과 state에 대한 것 이외에 컨센서스 블록 체이닝, 피어링과 같은 프레임 워크의 기능에 대해선 전혀 관여하지 않습니다. 스마트 컨트랙트의 실행에 초점을 맞춤으로써 다른 블록체인 플랫폼의 아키텍쳐 디자인에 무관하게 스마트 컨트랙트 실행이 가능하도록 해줍니다.

하이퍼레저 QUILT

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

하이퍼레저 패브릭

하이퍼레저 프로젝트 중에 가장 먼저 제안된 플랫폼으로, IBM이 개발을 주도하고 있으며 기업용 블록체인 플랫폼 개발을 위한 프로젝트입니다. 하이퍼레저 패브릭은 기존의 금융 서비스와 유사한 허가형 블록체인, 신원이 확인된 참여자들을 대상으로하는 비즈니스 응용 블록체인을 개발하는 것을 목표로 합니다. 또한 체인코드라는 스마트 컨트랙트 프로그램을 통해 여러 응용 개발을 효율적으로 지원합니다. 어플리케이션마다 다른 요구사항을 가질 수 있으므로 모듈 구조를 가집니다.

하이퍼레저 패브릭의 주요 특징

  • 허가형 블록체인
    하이퍼레저 패브릭은 대표적인 프라이빗 네트워크로 엔터프라이즈용 블록체인을 위해 개발된 플랫폼 입니다. 보상을 줌으로써 많은 노드의 참여를 유도하는 퍼블릭 블록체인과 달리 허가된 사람들만 네트워크에 참여할 수 있어 익명의 참가자가 아닌 신원이 확인된 참가자를 대상으로 하여 멤버십을 관리하는 모듈이 존재합니다.
    Membership Service Provider는 네트워크에 참여하려는 사용자가 등록된 사용자가 맞는지 확인 후 허가된 참가자에게만 접근을 허용합니다. 따라서 네트워크에 참여한 참여자간의 신뢰를 보장할 수 있고, 안정적으로 데이터를 활용할 수 있습니다. 또한 참여자에게 책임을 부여하거나 부인을 방지할 수 있습니다. 거래가 블록에 들어가 승인되는 즉시 추후에 수정할 수 없어 높은 거래의 완료성을 가집니다.
  • 모듈 구조
    전체 시스템을 모듈구조로 설계하여 개발하고자하는 어플리케이션의 요구사항에 따라 합의알고리즘, 멤버십 관리 기능 등을 선택할 수 있으며 다음과 같은 요소들을 지원합니다.
    - Pluggable ordering service
    - Pluggable consensus
    - Pluggable membership provider
    - Pluggable endorsement and validation policy enforcement
  • 체인 코드
    이더리움의 스마트 컨트랙트와 유사한 기능을 제공하는 체인코드가 존재하고, 이를 통해 블록체인 어플리케이션의 비즈니스 로직을 실행합니다. 체인코드에 포함된 거래를 처리하기 위해 Execute-order-validate 아키텍쳐를 제안하였습니다.
  • 일반 프로그래밍 언어를 사용하여 스마트 컨트랙트 프로그램을 설계
    이더리움에서는 solidity라는 특수한 언어를 사용하여 스마트 컨트랙트를 개발하지만, 패브릭에서는 VM만 갖춘다면 자바와 같은 일반적인 프로그래밍 언어를 사용하여 체인 코드를 개발할 수 있어 기존 프로그래머 들이 쉽게 개발에 참여할 수 있습니다.
    하지만 프로그램을 실행하는 시스템의 환경에 따라 시스템 의존적인 함수를 호출하게되면 동일한 결과를 출력하지 않을 수 있습니다. 이러한 특징을 non-deterministic이라고 하고 이러한 언어를 사용하는 하이퍼레저의 경우 시스템 별로 블록체인 내에 동일하지 않은 결과가 저장되는 consistency 문제가 발생할 수 있습니다. 따라서 이러한 문제를 해결하기 위해서 하이퍼레저 패브릭은 특정 매커니즘을 가지고 있습니다.
  • 내부 가상화폐가 존재하지 않음
    기존 블록체인 플랫폼에서는 많은 노드의 참여를 유도하기 위해 인센티브로 코인을 제공하며, DoS 공격을 방지하기 위해 거래 수수료로 일정량의 코인을 지불하도록 합니다.
    하지만 패브릭은 원하는 사용자만 네트워크에 참여하기 때문에 인센티브를 제공할 필요가 없고, endorsing peer의 개념을 도입하여 DoS 공격을 받을 시 해당 peer만 다운시켜 전체 시스템의 마비를 방지합니다.
  • 기존 블록체인 플랫폼과 달리 성능 문제를 해결함
    거래들을 동시에 병렬적으로 처리하여 성능을 높였습니다. Endorsing peer들이 거래를 동시에 처리하여 높은 성능을 유지할 수 있게 되며 초당 만개 이상의 트랜잭션 처리를 목표로 삼고 있습니다. 병렬적으로 거래를 실행하면 블록체인 내의 저장된 정보를 접근하는 순서에 따라 서로 다른 결과를 도출할 수 잇게 되어 이를 해결하기 위해 블록체인에 저장되는 정보를 키와 버전을 통해 관리합니다.
  • 채널 개념 도입을 통해 멀티 블록체인 지원
    전체 시스템을 다수의 채널로 구분하고 채널별로 독립적인 블록체인을 유지할 수 있습니다. 참여자는 특정 채널에 가입하여 블록체인을 선택할 수 있고, 다수의 채널에 가입하는 것 또한 가능하여 여러개의 블록체인에 동시에 접근할 수 있습니다.

하이퍼레저 패브릭의 시스템 구조

하이퍼레저 패브릭의 컴포넌트

  • Asset
    네트워크를 통해 교환되는 모든 가치로, 부동산 및 하드웨어에서 지적재산권까지 존재합니다. 체인코드의 거래를 통해 자산을 수정할 수 있으며, 키-값 쌍의 모음으로 표시되며 자산의 상태가 변경되면 변경사항이 원장에 트랜잭션으로 기록됩니다.
  • Chaincode
    자산을 정의하고 자산을 수정하기 위한 거래가 포함되어 있는 비즈니스 로직입니다. 블록체인에 저장된 키-값 쌍을 읽고 상태를 변경하기 위한 규칙을 시행합니다. 파라미터 및 시스템을 관리하는 특별한 체인코드인 시스템 체인코드가 존재합니다.
  • Ledger
    패브릭의 모든 상태 전이에 대한 기록입니다. 체인코드 호출 결과 자산의 상태전이가 일어나면 모든 상태 전이를 기록하여 변조를 방지합니다.
  • Channel
    하나의 채널당 하나의 Ledger(원장)가 존재하며 채널은 네트워크에서 공유되거나 특정 참여자 집합만 포함하도록 사유화 될 수 있습니다.
  • Transaction
    - Deploy Transaction
    새로운 체인코드를 생성하고 블록체인 네트워크에 배포하기 위한 트랜잭션입니다. 성공적으로 실행되면 체인코드가 블록체인 상에 설치되고 설치된 체인코드의 ID를 반환합니다.
    - Invoke Transaction
    Deploy transaction을 통해 배포된 체인코드를 실행하는 트랜잭션입니다. 특정 체인코드와 해당 체인코드의 특정 함수를 참조하며, 실행이 성공하면 블록체인 내에 저장된 정보를 수정할 수 있는 결과를 반환합니다.
  • Node
    - Client node
    실제 트랜잭션을 호출하는 노드로, end user 입장에서 특정 체인 코드를 호출하고 싶을 때 요청하는 노드입니다.
    - Peer node
    트랜잭션을 커밋하고 상태 정보와 원장의 복사본을 유지하는 노드입니다. endorsing peer는 클라이언트의 요청을 미리 검사하고 트랜잭션을 미리 시작하는 역할을 합니다.
    - Ordering Service node
    오더링 서비스를 위한 노드로 선택된 합의 알고리즘에 따라 트랜잭션의 순서를 정합니다.
    - vKVS(vesioned Key Value Store)
    vKVS를 통해 하이퍼레저 패브릭의 전체 상태를 저장하고 관리합니다.
    - MSP(Membership Service Provider)
    허가된 블록체인을 위해 하이퍼레저 패브릭에 접속하려는 참가자의 신원을 관리하는 역할을 합니다.

하이퍼레저 패브릭의 전체 구조

  • MSP는 시스템에 참여하는 멤버들의 신원을 확인하고 접근 권한을 관리합니다.
  • Client노드는 사용자를 대신해 거래를 생성하고 체인코드의 실행을 호출합니다. 거래를 생성하여 Endorser 피어노드에게 제출하여 거래 보증을 요청하고 거래 보증에 대한 응답을 수집합니다.
  • Endorser(보증 피어노드)는 클라이언트의 보증 요청에 따라 해당 체인코드를 실행하고 결과를 보증하는 역할을 수행합니다.
  • Endorser로부터 거래 보증 응답을 수집한 클라이언트는 거래 제안을 생성하여 Orderer(순서화 서비스 노드)에 전달합니다.
  • Orderer 노드는 합의 프로토콜을 통해 보증된 거래를 순서화하여 피어노드들에게 전달하는 역할을 합니다.
  • Orderer 노드로부터 블록 형태로 거래와 상태 갱신 정보를 수신 받은 Committer 피어 노드는 해당 거래를 확정합니다. 거래 정보를 저장하는 원장과 거래 실행 결과에 따른 상태 정보를 저장하는 상태 저장소를 블록체인 내에 유지하는 역할을 합니다.

World State

블록에 저장된 체인 코드를 실행하면 실행 결과에 따라 변경되는 상태 정보를 블록체인 내에 저장해야하는데 하이퍼레저 패브릭에서 상태정보를 저장하는 저장소가 world state입니다. 이는 이더리움이 상태정보를 저장하기 위해 머클 패트리샤 트리를 통해 관리하는 것과 유사합니다.

하지만 이더리움은 저장소에 account 정보를 저장하지만, 하이퍼레저 패브릭은 어떤 형태의 변수에 관한 정보라도 저장할 수 있습니다. 여러 정보를 저장하기 위해 저장하고자하는 정보의 이름인 key와 key에 대한 결과인 value쌍으로 관리하며, 거래를 실행할 때마다 key에 대한 value가 바뀔 수 있어 이를 버전을 통해 관리하여 모든 상태 전이를 블록체인 내에 유지합니다. 값이 갱신될 때마다 새로운 버전 번호가 부여되어 기존의 키-값과 상태를 구분합니다.

MSP (Membership Service Provider)

MSP는 CA(Cerification Authority)를 활용해 참여자의 신원을 확인합니다. 하이퍼레저 패브릭에는 세가지 타입의 공인인증기관(CA)이 존재합니다.

  • ECA (Enrollment Cerification Authority)
    네트워크에 참여하려는 참여자가 하이퍼레저 패브릭에 등록된 참여자가 맞는지 증명하기 위한 인증서를 발행하는 기관입니다. 허가된 사용자가 블록체인 네트워크로 거래를 브로드캐스팅할 때 동일한 인증서를 사용한다면, 해당 거래를 모니터링하고 있는 누군가에 의해 신원이 노출될 수 있습니다.
  • TCA (Transaction Cerification Authority)
    TCA는 ECA의 신원 노출 문제를 해결하기 위해, 거래를 실행할 때마다 그 거래를 위한 인증서를 별도로 발행해줍니다. 네트워크에 신원을 등록하기 위한 인증서는 참여자 당 하나를, 거래를 위한 인증서는 여러개를 가지게 되며 거래를 전송할 때마다 다른 인증서를 사용합니다. 이 때 등록을 위한 인증서와 거래를 위한 인증서는 서로 상관관계를 추론할 수 없게 생성되어 해당 거래가 누구에 의해 전송되었는지 추론할 수 없습니다.
  • TLS_CA (Transport Layer Secure Cerification Authority)
    Transport Layer Secure Protocol에서 사용되는 인증서를 발급하는 기관입니다. 신원이 확인된 참가자를 대상으로 보안 통신 프로토콜인 TLS 프로토콜이 사용할 수 있는 인증서를 발급합니다.

ECA는 블록체인에 접근하는 참가자의 신원을 검증한 후 등록 인증서를 발급하는 역할을 수행하며, 등록된 참가자를 확인하는데 필요한 공개키와 개인키 쌍을 생성하고 인증서에 포함합니다. 이를 RA(Registration Authority)에 위임할 수 있습니다.
TCA는 ECA에 의해 발급된 등록 인증서에 근거하여 확인된 참가자에게 등록 인증서를 유추할 수 없는 거래 인증서를 발급하는 역할을 합니다.
TLS_CA는 신원이 확인된 참가자를 대상으로 보안 통신 프로토콜인 TLS 프로토콜이 사용할 수 있는 인증서를 발급합니다.

클라이언트를 위한 인증서를 발급하는 과정

Execute-ordesr-validate 처리방식

  • order-execute 처리방식
    기존의 블록체인 시스템은 order-execute 방식으로 스마트 컨트랙트를 처리합니다.
    이 방식에서는 노드들이 거래를 생성하면, 채굴자들은 생성된 거래를 검증하고 블록 내에 그 거래를 저장하는 순서를 미리 정해 주변 노드들에게 전파합니다. 그 블록을 수신하는 모든 채굴자나 풀 노드들은 블록 내부의 거래들을 순서에 따라 실행하면서 거래를 검증합니다.
    거래 저장 순서를 먼저 결정한 후 거래가 실행되는 방식으로, 모든 블록에서 거래가 실행되는 순서가 동일하며 해당 거래를 순차적으로 실행시키기 때문에 성능 저하의 원인이 됩니다. 또한, 시스템이 deterministic 하지 않으면, 순서를 어떻게 정하냐에 따라 서로 다른 결과를 도출하여 합의에 도달할 수 없습니다.
  • Execute-order-validate 처리방식
    order-execute의 non-deterministic 문제를 해결하기 위하여 도입된 아키텍처입니다. 먼저, endorsing peer들이 새롭게 생성된 거래를 실행합니다. 이 때 실행 결과가 블록체인에는 저장되지 않습니다. 이 실행 결과가 포함된 거래들을 모드 Orderer peer들에게 전달하여 모든 블록이 동일한 순서의 트랜잭션을 가지도록 사전에 정의한 합의 알고리즘에 따라 순서를 매깁니다. 순서를 매긴 후 peer들은 실행 결과가 올바른지 검증하고, 검증이 완료되면 거래를 확정하고 블록체인 내에 기록합니다.
    이러한 아키텍처는 모든 노드가 거래를 모두 실행할 필요 없이, 특정노드들만 거래를 병렬적으로 실행하여 전체 블록체인 네트워크의 성능을 높일 수 있습니다.
profile
Frontend Engineer

0개의 댓글