Hyperledger Fabric, R3 Corda

이전 포스팅에서는 퍼블릭 블록체인의 한계에 대한 두 번째 글로서 사이드 체인과, 퍼블릭 블록체인 구현체의 한계에 대해 정리하였습니다.
이전 포스팅 바로 가기

이번 포스팅에서는 앞선 포스팅에서 논의했던 금융권 블록체인 요구사항에 대해서 정리하고 유명세를 얻고 있는 프라이빗 블록체인 솔루션인 Hyperledger Fabric과 R3 Corda에서는 어떤 방식을 통하여 이 러한 요구사항을 만족시키고 있는지 알아보겠습니다.

금융권 블록체인 요구사항

금융권에서는 금융서비스 특성과 관련 법률 및 규제로 인한 다양한 요구사항들이 있습니다. 이러한 요구사항을 비트코인, 이더리움이나 퍼블릭 블록체인 구현체를 기반으로 만족하기는 쉽지 않은 일입니다. 다음은 금융권 블록체인에서 요구하는 대표적인 요구사항입니다.

  • Private Channel
  • 권한이 다른 노드들
  • 빠른 속도
  • 스마트 컨트랙트
  • 커스터 마이징

Private Channel 거래 시 거래와 직접적인 관계가 있지 않은 참여자에게는 거래 내용을 공개해서는 안 된다는 조건입니다. 사실 당연한 이야기지만 전통적인 블록체인을 이용할 경우 어려울 수 있습니다. 또한, 블록체인 네트워크에 참여한 노드들이 전부 같은 권한을 가지면 안 됩니다. 금융업 특성상 거래에 대한 검증을 수행하는 기관, 향후 감사를 수행하는 감독 기관 등 다양한 권한의 노드가 블록체인 네트워크에 참여해야 할 가능성이 높습니다. 이때 감독 기관은 모든 Private Channel의 내용을 확인해야 합니다. 그러나 트랜잭션을 발생시키면 안 되겠죠.

빠른 속도는 이유를 설명할 필요 없을 정도로 당연한 요구사항입니다. 우리가 사용하는 금융서비스는 주식거래 등 촌각을 다투는 거래를 포함해서 실시간성 거래 비중이 높습니다. 서비스 속도가 느릴 경우 쾌적하지 못한 사용자 경험뿐 아니라 업무에 따라 금전적인 손해가 발생하는 등 실제 금융 사고로까지 이어질 수 있습니다.

또한, 금융서비스에서 거래 데이터에 대한 분산 저장을 통한 데이터 무결성 보장도 중요한 가치이긴 하지만 블록체인을 단순히 원장 정보를 복제하는 클러스터링 솔루션 정도로 바라보는 것은 아닙니다. 금융기관들은 블록체인을 통해 기존의 청산소(Clearing house)와 같은 중계자없이 금융거래를 수행하고자 하며 이를 위해 스마트 컨트랙트는 필수요소가 되었습니다. 스마트컨트랙트는 블록체인을 단순한 분산 원장이 아닌 분산 어플리케이션 서버로서 자리 잡게 한 요즘 블록체인에서 가장 뜨거운 기술입니다.

마지막으로 블록체인 엔진 자체를 커스터 마이징 하며 확장 가능해야 합니다. 금융권 블록체인이라고 카테고리를 지었지만, 금융권 자체에도 정말 다양한 서비스가 있습니다. 이러한 서비스마다 요구사항이 다르기 때문에 블록체인은 합의 엔진 부터 전체 스택을 커스터 마이징 할수 있어야 합니다.

Hyperledger Fabric와 R3 Corda 

Hyperledger Fabric과 R3 Corda에 대해서 간략하게 이야기해 보도록 하겠습니다. Fabric은 Linux foundation에서 주도하는 블록체인 프로젝트인 HyperLedger 소속의 프로젝트로 R3 Corda와 함께 가장 많은 관심을 받는 블록체인 프로젝트입니다. 금융권 뿐 아니라 범용 블록체인을 표방하고 있는 블록체인입니다.

스크린샷 2017-02-15 오후 5.31.32.png
HyperLedger Architecture(출처 HyperLedger)

Fabric의 가장 큰 특징은 네트워크 분리입니다. Fabric은 이해관계자와 응용프로그램의 종류에 따라 새로운 Channel(일종의 소규모 블록체인)을 구성합니다. 또한 권한 관리 모듈인 COP을 통하여 각 Channel에서 각 노드가 가지는 권한이 무엇인지 구분합니다.

R3는 분산 원장 기반의 스타트업으로 골드만 삭스 등 대형 금융업체의 투자를 받았으며 세계적인 대형 은행들과 협약을 맺고 컨소시움을 이뤘습니다. 현재 세계적으로 가장 많은 블록체인 은행들이 참여하고 있는 컨소시움을 주도하고 있습니다.

screen-shot-2016-04-26-at-2-56-34-pm
R3 Corda 합의 과정(출처 : R3 Cev)

R3의 분산원장 플랫폼 Corda의 가장 큰 특징은 탈 블록 체인화 입니다. 블록체인이 아니라 굳이 분산원장이라고 한 이유는 R3는 블록체인을 버렸습니다. R3는 블록체인의 여러 가지 한계를 극복하고자 모든 네트워크 참여 원들이 같은 데이터를 공유하는 블록체인을 버리고 이해 관계자들끼리만 같은 데이터를 공유하는 방식을 선택하였습니다. 하나의 스마트 계약을 실행하면 이때 이해관계자의 역할에 따라 스마트 컨트렉트 검증, 데이터 공유 일을 수행합니다.

Fabric과 Corda는 금융권 요구사항을 어떻게 해결하였을까?

Fabric은 범용 블록체인을 표방하고 있지만, 그 이야기가 금융권을 포함하지 않는다는 이야기가 아닙니다. 여전히 블록체인은 비금융권 보다는 금융권에서 관심이 있으므로 Fabric은 금융권 요구사항을 대부분 만족하고 있습니다. Corda는 금융업을 위해서 만들어진 분산원장 플랫폼이기 때문에 당연히 이러한 부분을 만족하고 있습니다. 이들은 어떤 식으로 해결할까요?

Private Channel는 두 플랫폼이 특이한 구조를 통해 해결합니다. 이해관계가 있는 노드만 합의하는 방식이죠. Fabric 같은 경우 이해관계가 있는 노드들만 채널을 구성합니다. 다른 Channel의 노드들은 해당 내용을 볼 수 없죠. Corda의 경우 애초에 스마트 컨트랙트 하나를 실행할 때 이해관계자들끼리만 내용을 공유하여 문제를 해결합니다.

노드 별로 다른 권한을 주는 이슈는 Fabric의 경우 COP이라 불리는 권한관리 모듈을 통해 내용 보관 노드, 순서 검증 노드, 트랜잭션 생성 노드, 내용 검사 노드 등의 권한을 나누어 처리합니다. 이러한 권한은 채널마다 다르죠. Corda의 경우 각 스마트 계약에 관계된 노드들의 역할과 권한이 명시되어 있습니다. 만약 거래에 판매자 A, 구매자 B, 감독기관 C가 필요하면 Corda는 스마트 컨트랙트 실행을 통해 이 이해관계자들이 얻어 스마트 컨트랙트를 실행하는 방식입니다.

성능 이슈 관련해서는 두 솔루션 전부 아직 언급이 없습니다. 그러나 네트워크를 가볍게 하는 작업을 기본적인 요구사항을 충족할 정도가 되지 않을까 생각합니다.

커스터 마이징에 관해서는 Fabric의 경우 분산합의 알고리즘 변경, 체인코드(스마트 컨트랙트) 변경 등이 가능할 것으로 보입니다. Corda의 경우 엔진 자체를 변경하는 것은 어렵고 스마트 컨트랙트 변경과 각 스마트 컨트랙트 합의 과정(Consensus Protocol) 커스터 마이징 가능할 것으로 보입니다. 두 프로젝트 다 엔진 자체의 커스터 마이징은 어렵지만 핵심 기능인 컨트랙트와 합의 알고리즘을 커스터 마이징 할 수 있었습니다.

본 포스팅에서는 대표적인 프라이빗 블록체인 프로젝트인 Hyperledger Fabric과 R3 Corda가 어떻게 금융권의 요구사항을 만족하였는지 알아보았습니다. 두 블록체인은 기존 블록체인에 없는 개념들을 많이 추가하여 전통적인 블록체인과 다른 완전히 새로운 블록체인을 만들었습니다. R3는 이제 블록체인 개념에서 완전히 벗어났죠. 하지만 두 블록체인 모두 아직은 개발 중인 프로젝트입니다. 아직 모자란 개념이 있을 수 있고 더욱 발전하는 프로젝트이죠. Hyperledger Fabric의 경우 올해 초 1.0 버전이 나왔고 R3의 경우 작년 말에 처음으로 소스를 공개하였습니다. 두 프로젝트 모두 현재까지 지속해서 발전하고 있으며 더루프도 이러한 공개 프로젝트를 통해 국내외의 다양한 요구사항에 대한 정보를 얻을 수 있었고 loopchain을 만드는 데 많은 도움이 되었습니다.

다음 포스팅에서는 드디어 loopchain의 특징과 금융권의 요구사항을 어떠한 방식으로 해결하였는지에 대해 글을 써보도록 하겠습니다.

3 thoughts on “Hyperledger Fabric, R3 Corda”

  1. Fabric의 블록은 N개의 트렌젝션으로 구성됩니다.
    기본 값은 1초 or 500 트렌젝션입니다. 즉, 1초 내의 500개의 트렌젝션이 발생하거나 블록의 첫 트렌젝션 이후 1초 경과 시 블록이 생성됩니다.
    Fabric은 블록 생성 시간과 개수를 변경할 수 있는 설정 파일을 제공하므로 용도에 맞게 수정해서 사용할 수 있습니다.

    좋아요

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중