개요¶
Introduction
블록체인(Blockchain)은 피어 노드(Peer node)들의 분산 네트워크 안에서 유지되는 변경 불가능한 거래 장부(Immutable transaction ledger)다. 각각의 노드는 합의 규약(Consensus protocol)으로 검증된 거래를 통해 장부 사본을 유지 관리한다. 이때 거래들은 블록(block)에 담기고 이 각각의 블록은 이전 블록에 해시값으로 묶인다.
최초이자 가장 널리 알려진 블록체인은 바로 암호화폐(Cryptocurrency) 비트코인(Bitcoin)이다. 그리고 많은 이들이 비트코인의 발자취를 따랐다. 한편, 대안 암호화폐 이더리움(Ethereum)은 다른 방식을 택했다. 비트코인의 요소를 여럿 택하면서도 동시에 스마트계약(Smart contract)이라는 새로운 요소를 도입해 분산화된 응용프로그램(Application)을 구동할 수 있는 플랫폼을 만든 것이다. 비트코인과 이더리움은 모두 특정한 주체의 승인(permission) 없이 사용 가능한 공용(public) 블록체인 기술로 누구에게나 열려있으며 또한 익명으로 참여할 수 있는 네트워크다.
비트코인과 이더리움이 널리 알려지면서, 이런 블록체인들의 기저에 있는 분산 원장 기술과 분산 응용프로그램 플랫폼을 도입하고자 하는 혁신적인 기업들이 늘어났다. 그러나 대부분의 기업들에서 요구하는 성능(역: 거래 속도등)은 아직 공용 블록체인 네트워크에서는 불가능한 수준이며 기업이 금융 거래를 할 때 지켜야 하는 고객정보알기(KYC)와 자금세탁방지(AML)등의 규제를 적용하기 또한 어렵다.
기업의 사용에는 다음 항목들이 필요하다.
- 참여자들의 정보가 알려지거나/알 수 있어야 함.
- 네트워크 참여에 '승인' 필요.
- 빠른 거래 처리 속도.
- 거래 확정 지연이 적어야 함.
- 거래와 거래 관련 데이터의 개인정보보호 및 비밀보장.
현재 대부분의 초기 블록체인 플랫폼은 이러한 기업의 요구조건들에 '맞추어가는' 중인데 반해 하이퍼렛져 페브릭(Hyperledger Fabric)은 처음부터 기업의 사용을 위해 '설계'되었다. 앞으로 이어질 내용은 하이퍼렛져 페브릭이 다른 블록체인 플랫폼과 어떻게 다른지와 플랫폼 설계의 바탕이 된 동기(motivation)에 대해 설명할 것이다.
하이퍼렛져 페브릭¶
Hyperledger Fabric
하이퍼렛져 페브릭은 기업의 사용을 위해 디자인된 승인형 분산 장부 기술(DLT) 플랫폼으로, 오픈소스이며 다른 분산 장부 혹은 블록체인 기술과 차별화되는 몇가지 장점을 가지고 있다.
먼저 하이퍼렛져는 리눅스 재단(The Linux Foundation)에 의해 만들어졌다. 리눅스 재단은 오픈 소스와 열린 지배구조(Open Governance)로 강력하고도 오래 지속되는 생태계를 만든 바 있다. 이러한 바탕에서 하이퍼렛져 페브릭 프로젝트는 초기부터 35개 이상의 조직과 200명에 가까운 개발자들이 있었고, 현재도 다양한 조직들에서 온 관리자(maintainer)들이 운영중이다.
두번째로, 하이퍼렛져 페브릭은 설정이 쉽고 강력하게 모듈화된 구조다. 이를 통해 산업의 넓은 분야 - 은행, 금융, 보험, 건강, 인적 자원, 공급 사슬, 디지털 음원시장등 - 에서 혁신과 융통성, 그리고 최적화를 추구할 수 있다.
세번째로, 하이퍼렛져는 여타의 플랫폼 한정 언어(DSL)가 아닌 범용 프로그래밍 언어 - 자바, 고, 노드등 - 로 작성된 스마트 계약을 지원하는 최초의 분산 장부 플랫폼이다. 이것은 곧 대부분의 기업이 이미 스마트계약을 작성할 역량을 갖게된다는 것을 의미한다. 다른 플랫폼처럼 새로운 언어를 배우거나 할 필요가 없다.
또한 페브릭 플랫폼은 승인형이다. 참여자가 익명이라 완전히 믿을 수 없는 다른 비승인 플랫폼과는 다르게 하이퍼렛져 플랫폼의 참여자는 서로를 알 수 있다. 이것은 곧 참여자가 서로를 100% 믿을 수 없는 환경(경쟁사라던가)에서도 네트워크가 법적 동의 내지는 분쟁을 조정할 수 있는 틀과 같은 모델 하에 구동될 수 있다는 것이다.
그리고 가장 중요한 차이는 '합의 규약이 선택 가능'(Pluggable Consensus Protocols)하다는 점이다. 이러한 특성은 하이퍼렛져가 특정한 목적 혹은 신뢰 모델에 맞는 시스템을 효과적으로 구성할 수 있게 한다. 예를 들어, 하나의 기업체나 신뢰할 수 있는 권위에 의해 구동되는 시스템에서 완전한 BFT(Byzantine Fault Tolerant) 규약을 지키는 것은 불필요하다. 이런 상황에서는 CFT(Crash Fault-tolerant) 규약이 더 적절할 수 있다. 물론 다자간의 탈중앙화 사례에서는 전통적인 BFT가 필요할 것이다.
페브릭은 스마트 계약 실행이나 채굴 과정을 위해 암호화폐 체계를 필요로 하지 않는 합의 규약을 자아낼 수(leverage) 있다. 암호화폐를 사용하지 않는 것은 몇몇 강력한 공격 요소를 줄이며, 채굴이 없다는 것은 플랫폼이 다른 분산형 시스템과 큰 가격차이 없이 도입될 수 있음을 의미한다.
이러한 설계의 차이점들은 결국 페브릭이 거래 속도, 거래 확정, 개인정보 보호 및 비밀보장에서 더 나은 성능을 갖게 하며, 이러한 일들을 구현하는 스마트 계약(페브릭에선 '체인 코드'라고 부른다) 또한 현재 수준에서 가장 괜찮은 성능을 갖게 한다.
후술할 내용은 이런 다른 점들을 보다 상세하게 서술한 것이다.
모듈화¶
Modularity
하이퍼렛져 페브릭은 뿌리부터 모듈 구조를 갖도록 설계되었다. 합의 규약, LDAP와 OpenID Connect 같은 인증 관리 규약, 혹은 키 관리 규약이나 암호화 라이브러리등 어떤 규약이건 상관없이 기업의 목적에 맞게 사용할 수 있도록 만들어진 플랫폼이다.
페브릭은 다음과 같은 모듈 요소들로 구성되어 있다.
- 거래에 따라 합의 블록을 만들어 피어 노드에 전파하는 관리자 모듈(Pluggable Ordering Service)
- 네트워크 상의 객체들을 암호화된 식별정보로 분류하는 회원 관리 모듈(pluggable membership service provider)
- 관리자 모듈의 블록을 받아 다른 피어에게 전파할 수 있는 부가적인 P2P 서비스 모듈
- 외부와 독립된 작동을 위해 컨테이너 환경(Docker등)에서 실행되는 스마트 계약(체인 코드)
- 체인 코드는 보통의 프로그래밍 언어로 작성할 수 있지만 장부에 직접 접근할 수는 없다.
- 다양한 DBMS를 지원하는 장부 설정
- 각 어플리케이션마다 독립적으로 설정-집행할 수 있는 보증 및 검증 정책 모듈
“모든 것을 지배할 하나의 블록체인”은 없다는게 업계의 정설이다. 하지만 하이퍼렛져 페브릭은 다양한 상업적 요구에 맞추어 설정을 여러 방식으로 변경할 수 있다.
승인형 vs 자유형 블록체인¶
Permissioned vs Permisionless Blockchains
비승인형 블록체인은 어떤 사람도 참여할 수 있고, 모든 참여자는 익명이다. 모두가 익명인 상황에서 신뢰할 수 있는 것은 '일정 깊이 이상의 블록체인은 수정할 수 없다'뿐이다. 이런 신뢰의 부재를 완화하기 위해 비승인 블록체인들은 보통 작업증명(PoW)이라는 BFT 규약을 사용하고, 이 어마어마한 비용을 감당하기 위해 '채굴된' 암호화폐나 거래비용을 도입해 참여자에게 인센티브를 제공한다.
반면 승인형 블록체인의 참여자들은 알려져 있고, 식별 가능하며, 대부분 검증된 주체들이다. 또한 이 참여자들은 일정 수준의 신뢰를 이끌어내는 관리 구조 하에 움직인다. 이것은 동일한 목표를 갖고 있지만 서로 완전히 신뢰할 수 없는 객체들의 상호작용을 보장하는 하나의 방법을 제공한다. 참여자들의 식별정보를 바탕으로 하기 때문에 승인형 블록체인은 좀 더 전통적인 CFT나 BFT 합의 규약(값비싼 채굴이 없는)을 사용할 수 있다.
심지어 이런 승인 시스템에서는 참여자가 의도적으로 스마트계약을 통해 악성코드를 배포하는 일이 줄어든다. 참여자는 서로를 알고 서로가 한 일도 알고 있다. 어플리케이션 거래를 등록하든, 네트워크 설정을 수정하든, 아니면 스마트 계약을 배포하든 상관없이 모든 행동은 블록체인에 기록되기 때문이다. 이로 인해 악성 사용자는 쉽게 식별될 수 있으며 해당 행동은 관리 구조에 따라 처리된다.
스마트 계약¶
Smart Contracts
페브릭에선 “체인 코드”라 불리는 스마트 계약은 신뢰할 수 있는 분산화 어플리케이션이다. 스마트 계약은 간단히 말해 비즈니스 로직을 구현하는 블록체인 어플리케이션으로, 피어간 공유하는 합의와 블록체인으로부터 보안과 신뢰를 얻는다.
플랫폼에 도입할 스마트 계약의 핵심 3요소는 다음과 같다.
- 네트워크 상에선 여러 스마트 계약이 동시에 실행된다.
- 어떤 사람이던 언제나 스마트 계약을 배포할 수 있다.
- 어플리케이션 코드는 믿을 수 없거나 문제가 있는 것으로 간주되어야 한다.
현존하는 대부분의 스마트 계약 지원 블록체인 플랫폼은 호출-실행 합의 구조를 따른다.
- 거래를 검증하고 호출한 뒤 모든 피어 노드에게 전파한다.
- 각각의 피어가 거래를 순차적으로 실행한다.
호출-실행 구조는 거의 모든 블록체인 시스템에 있다. 이더리움과 같은 공용 비승인 플랫폼부터 텐더민트(Tendermint), 체인(Chain), 쿼럼(Quorom)같은 승인형 플랫폼까지 대부분의 플랫폼이 사용하는 방식이다.
호출-실행 구조로 작동하는 블록체인에서 실행되는 스마트 계약은, 합의에 도달하기 위해서 반드시 결정적(deterministic)이어야 한다. 많은 플랫폼들은 비결정적 이슈를 해결하기 위해서 스마트 계약에 표준에서 벗어난(non-standard) 혹은 한정적(domain-specific) 언어(예: Solidity)를 사용하도록 강제한다. 이것은 스마트 계약이 널리 사용되는 것에 방해가 된다. 왜냐하면 개발자들은 추가적으로 언어를 배워야 하고, 이로 인해 기존에 겪지 못한 프로그래밍 에러를 마주할 수 있기 때문이다.
더 나아가 모든 거래가 모든 노드에 의해 순차적으로 실행되기 때문에 성능과 확장이 한정된다. 시스템이 탄력성(Resiliency)를 유지할 수 있게 하려면 잠재적 위험을 가진 계약으로부터 시스템을 보호해야 하는데, 모든 노드에서 스마트 계약이 실행되는 구조는 대단히 복잡한 측정방법(complex measure)을 요구한다.
새로운 시도¶
A New Approach
페브릭은 거래를 위한 새로운 구조 - 실행-호출-검증 - 를 도입했다. 이것은 호출-실행 구조로 인해 발생할 수 있었던 탄력성, 유연성, 확장성, 성능 그리고 비밀 보장의 문제들을 세단계로 나누어 해결한 것이다.
- 실행: 거래를 실행해 제대로 되었는지 확인하고 보증한다.
- 호출: 합의 규약에 따라 거래를 호출한다.
- 검증: 거래를 장부에 기록하기 전에 구체적인 어플리케이션 보증 정책에 따라 검증한다.
이러한 방식은 최종 합의가 이루어지기 전에 거래를 실행하는 것이고, 이것은 기존의 호출-실행 패러다임에는 존재하지 않았던 방식이다.
페브릭에서는 구체적인 어플리케이션 보증 정책이 주어진 스마트 계약을 제대로 실행하기 위해 얼마나 많은, 혹은 어떤 노드가 필요한지를 구체화한다. 따라서, 각각의 거래는 정책의 요구치에 맞는 피어 노드의 부분집합에 의해 한번 실행되고 검증될 수 있다. 이것은 병렬 처리를 가능하게 해 시스템 전체의 성능향상과 확장을 도모할 수 있게 한다. 또 이런 방식은 호출전에 무결성을 해치는 결과를 걸러냄으로서 비결정성을 제거한다.
비결정성을 제거했기 때문에, 페브릭은 일반 프로그래밍 언어를 사용할 수 있는 최초의 블록체인 기술이 되었다. 1.1.0 배포판에서 스마트 계약은 고(Go)나 노드(Node.js)같은 언어로 작성할 수 있으며, 추후 자바를 비롯한 다른 인기있는 언어의 지원도 계획되어있다.
개인정보보호와 비밀보장¶
Privacy and Confidentiality
우리가 이야기했던 것처럼 작업증명을 사용하는 공용 비승인 블록체인 네트워크에서는 거래가 모든 노드에서 실행된다. 이것은 곧 계약과 계약 내용의 비밀보장이 불가능함을 의미한다. 모든 거래와 그것을 구현한 코드는 네트워크의 전원에게 노출되어있다. 여기서 우리는 계약과 그 내용의 비밀보장과 PoW에 의한 BFT를 교환한 것이다.
이런 비밀 보장의 부족은 여러 상업/기업적 사례에서 문제를 낳을 수 있다. 예를 들어, 소비-공급 네트워크에서 내부 선호도 정보는 소비자와 공급자 상호 관계를 견고히 하거나 추가적인 판매를 유도하는 수단으로 사용된다. 그런데 만약 모든 참가자가 모든 계약과 거래를 볼 수 있다면, 내부 선호도 정보를 제공함으로서 유지하던 관계는 불가능하다. 모든 사람이 그 정보를 볼 수 있기 때문이다.
금융 업계를 생각해보자. 어떤 트레이더가 포지션을 잡았을 때, 누구도 자신의 경쟁자가 아는 것을 원치 않는다. 만약 다른 사람이 알게되면 그것을 방해할 방법을 찾아낼 것이고, 트레이더의 수익은 줄어들기 때문이다.
이런 기업들의 요구치에 비해 부족한 개인정보 보호 및 비밀보장 문제를 해결하기 위해 블록체인 플랫폼들은 다양한 시도를 하지만, 각각 장단점이 있다.
하나의 방법으로 제시된 것은 데이터 암호화다. 그러나 작업증명 기반 비승인 네트워크에서는 암호화된 데이터가 모든 노드에 저장된다. 충분한 시간과 컴퓨터가 확보된다면, 암호를 파훼하는 것은 어려운 일이 아니다. 이때 기업 입장에서 자신들의 정보가 위험에 처할 수 있다는 것은 용납할 수 없는 일이다.
영 지식 증명(Zero Knowledge Proof, ZKP) 또한 이런 문제를 해결하기 위한 방법으로 제시되었다. 그러나 여기서의 문제는 영지식증명을 계산하는게 많은 시간과 컴퓨터를 필요로 한다는 것이다. 즉, 비밀보장을 위해 성능을 포기하는 방식이라고 할 수 있다.
다양한 합의를 이용할 수 있는 승인형 구조에서는 비밀 정보의 분산을 승인된 노드에게만 허락하는 방법을 고안해낼 수 있다.
승인형 플랫폼 하이퍼렛져 페브릭에서는 채널 구조를 통해 비밀을 보장할 수 있다. 간단히 말해, 네트워크의 참여자는 특정 거래의 집합을 열람할 수 있는 참여자 집단을 설정하는 '채널'을 만들 수 있다. 하나의 거름망을 만들 수 있다고 생각하면 된다. 즉, 채널에 참여중인 노드만이 스마트 계약(체인 코드)과 거래 데이터를 열람할 수 있고, 이를 통해 개인정보를 보호하고 비밀을 보장할 수 있다.
또한 이런 개인정보 보호와 비밀 보장을 위해서 페브릭은 두가지 방안을 추가적으로 개발하고 있다. 특히 개인적인 정보를 보호하기 위해서, 우리는 보조 데이터베이스(SideDB)와 영지식증명을 연구하고 있다. 만약 가능해지면, 추가적인 정보가 문서에 기록될 것이다.
합의 규약 선택 가능¶
Pluggable Consensus
거래의 관리는 거래를 실행하고 장부를 유지하는 피어들로부터 논리적으로 분리된 규약 모듈 - 정확히는 관리자 모듈 - 에 위임된다. 합의는 모듈화되어 있기 때문에 특정한 배치나 솔루션의 신뢰 가정에 맞추어 구현될 수 있고, 이러한 구조는 CFT나 BFT를 준수하는 좋은 도구상자를 사용할 수 있게 해준다.
현재의 배포판에서 페브릭은 카프카와 주키퍼로 구현된 CFT 관리 모듈을 제공한다. 추후 예정된 배포에서 페브릭은 etcd/Raft와 완전 탈중앙화 BFT 관리자 모듈로 구현된 래프트 관리 모듈을 지원할 것이다.
또한 이것들이 한정적이지 않다는 점에 유의하라. 페브릭 네트워크는 다양한 어플리케이션 및 그 필요에 맞추어 여러개의 관리자 모듈을 가질 수 있다.
성능과 확장성¶
Performance and Scalability
블록체인 플랫폼의 성능은 거래 크기, 블록 크기, 네트워크 크기, 하드웨어 한계 등 여러 변수에 의해 정해진다. 현재 하이퍼렛져 커뮤니티의 성능 및 확장성 연구 모임은 여러 실험적인 수단을 개발중이다. 그와 함께, 하이퍼렛져 칼리퍼(Hyperledger Caliper)라는 성능측정 도구의 개발도 이루어지고 있다.
이런 움직임이 블록체인 플랫폼 성능 및 확장성의 결정적 수단으로 보이던 중, IBM 연구팀에서는 하이퍼렛져 페브릭의 구조와 성능을 평가한 논문을 제출했다. 논문은 페브릭 구조에 대한 깊은 논의를 진행한 뒤 시험판 v1.1을 통해 플랫폼의 성능을 평가했다.
이런 연구 팀의 노력은 기존 v1.0.0 버전의 성능을 두배 이상 끌어올린 v1.1.0 버전을 낳았다.
결론¶
Conclusion
블록체인 플랫폼에 대한 진지한 평가라면 하이퍼렛져 페브릭을 반드시 포함해야 한다.
페브릭의 여러 요소는 페브릭을 넓은 범위의 산업 - 정부, 금융, 생산-공급, 건강관리, 그리고 수많은 다른 일들 - 에 각각 적합한 신뢰구조를 갖는, 높은 확장성의 승인형 블록체인으로 만든다.
더 중요한 것은 하이퍼렛져 페브릭이 현재 10개의 하이퍼렛져 프로젝트 중 가장 활발한 프로젝트라는 것이다. 플랫폼 주위의 커뮤니티도 꾸준히 성장하고 있으며, 한번의 성공적 배포판마다 일어나는 혁신은 다른 어떤 상업형 블록체인 플랫폼보다 우월하다.
감사의 말¶
Acknowldgement
앞선 내용은 Elli Androulaki, Artem Barger, Vita Bortnikov, Christian Cachin, Konstantinos Christidis, Angelo De Caro, David Enyeart, Christopher Ferris, Gennady Laventman, Yacov Manevich, Srinivasan Muralidharan, Chet Murthy, Binh Nguyen, Manish Sethi, Gari Singh, Keith Smith, Alessandro Sorniotti, Chrysoula Stathakopoulou, Marko Vukolic, Sharon Weed Cocco, Jason Yellick가 작성한 “Hyperledger Fabric: A Distributed Operating System for Permissioned Blockchains”을 바탕으로 작성되었다.
옮긴이의 말
본문의 내용은 https://hyperledger-fabric.readthedocs.io/en/master/whatis.html의 내용을 번역한 것이다. 적절한 한국어로 정립되지 않은 개념이 많아 옮긴이가 자의적으로 정의한 부분이 여럿 있다. 보다 나은 번역 제안은 언제든 환영한다. 옮긴이의 메일로 연락 주시라. resetarsi@gmail.com