소개

일반적으로 블록체인은 분산된 피어 노드 네트워크로 관리되는 변경 불가능한 트랜잭션 원장입니다. 이들 노드는 각각 각 블록을 앞쪽 블록과 엮는 해시를 포함하는 블록으로 그룹지어 합의 프로토콜 로 검증한 트랜잭션들을 적용함으로써 원장 사본을 관리합니다.

다른 것들이 그 뒤를 따르긴 합니다만, 최초의 그리고 가장 널리 알려진 블록체인 애플리케이션은 비트코인(Bitcoin) 암호화폐입니다. 또 다른 암호화폐 이더리움은 많은 비트코인과 동일한 특성을 통합하지만, 분산 애플리케이션을 위한 플랫폼을 만들기 위해 스마트 컨트랙트 를 추가하는 다른 방식을 취합니다. 비트코인과 이더리움은 퍼블릭 비허가형 블록체인 기술로 그 범주를 분류할 수 있습니다. 기본적으로 이들은 참여자들이 익명으로 소통하는 누구에게나 공개된 퍼블릭 네트워크입니다.

비트코인의 인기에 따라, 블록체인, 분산 원장과 분산 애플리케이션 플랫폼의 기반 기술을 더 혁신적으로 적용하는데 관심이 있는 이더리움과 몇몇 다른 파생 기술들이 성장했고, 엔터프라이즈 유스 케이스 또한 커졌습니다. 그러나 많은 엔터프라이즈 유스 케이스는 비허가형 블록체인 기술이 (현재) 달성할 수 없는 성능 특성을 요구합니다. 게다가 많은 경우에 고객 인증(KYC: Know-Your-Customer)과 자금 세탁 방지 (AML: Anti-Money Laundering) 규정을 반드시 따라야 하는 금융 트랜잭션과 같은 경우, 참여자들의 신원 식별은 어려운 요구 사항입니다.

엔터프라이즈 용도에 우리는 다음 요구사항을 고려해야 합니다:

  • 참여자들이 식별/식별 가능해야 함
  • 허가형이어야 하는 네트워크
  • 높은 트랜잭션 처리 성능
  • 낮은 트랜잭션 확정 지연 시간
  • 트랜잭션의 개인정보 보호와 기밀성, 그리고 비지니스 트랜잭션에 담긴 데이터

많은 초기 블록체인 플랫폼이 현재 엔터프라이즈 용도를 맞추려고 하는 반면, 하이퍼레저 패브릭은 그 시작부터 엔터프라이즈 용도로 디자인 되었습니다. 다음 섹션에서는 하이퍼레저 패브릭(줄여서 패브릭)이 그 자체로 다른 블록체인 플랫폼과 어떻게 다른지, 그리고 그 아키텍처 결정 사항의 이유에 대해 설명합니다.

하이퍼레저 패브릭

하이퍼레저 패브릭은 다른 유명한 분산 원장이나 블록체인 플랫폼을 넘는 차별화된 핵심 능력을 전달하는, 엔터프라이즈 용도로 디자인된, 오픈 소스 엔터프라이즈급 허가형 분산 원장 기술 (DLT: Distributed Ledger Technology)입니다.

차별화된 핵심 요소 중 하나는 하이퍼레저가 리눅스 재단 아래에서 설립됐다는 겁니다. 강력히 지속되는 커뮤니티와 잘 자란 에코 시스템으로 성장시키는 오픈 거버넌스 하에서 리눅스 재단 그 자체가 오픈 소스 프로젝트를 키우는데 성공해 온 오랜 역사를 갖습니다. 하이퍼레저는 다양한 기술 운영 위원회가, 하이퍼레저 패브릭 프로젝트는 여러 조직의 다양한 메인테이너들이 관리합니다. 초기 커밋 이후로 35개 이상의 조직과 200명 가까운 개발자로 성장한 개발 커뮤니티를 갖고 있습니다.

패브릭은 은행, 금융, 보험, 의료, 인사, 공급망과 디지털 음원 유통에 이르기까지 다양한 범위의 산업 유스 케이스에 혁신, 유연성과 최적화를 가능케 하는 높은 모듈성설정 가능한 아키텍처를 가집니다.

패브릭은 제한이 있는 도메인 전용 언어(DSL: Domain-specific languages)보다는 Java, Go 그리고 Node.js 같은 범용 목적의 프로그래밍 언어로 작성한 스마트 컨트랙트를 지원하는 최초의 분산 원장 플랫폼입니다. 이는 대부분의 기업이 스마트 컨트랙트 개발에 필요한 스킬 셋을 이미 갖고 있고, 새로운 언어 또는 DSL을 배울 필요가 없다는 뜻입니다.

패브릭 플랫폼은 또한 허가형입니다. 즉, 퍼블릭 비허가형 네트워크와 달리 익명이라서 완전히 신뢰가 없다기보다는 참여자들이 서로 알고 있다는 뜻입니다. 이는 참여자들이 다른 누군가(예를 들어, 같은 업계 내의 경쟁자)를 완전히 믿을 수 없더라도, 법적 동의 혹은 분쟁 조절의 틀 같은 참여자 간 어떤 형태로 존재하는 신뢰를 바탕으로 만들어진 거버넌스 모델 하에서 네트워크를 운영할 수 있다는 뜻입니다.

가장 중요한 플렛픔의 차이점 중 하나는 플렛폼을 특정 유스 케이스와 신뢰 모델에 맞춰 더 효율적으로 커스터마이즈할 수 있도록 하는 플러그인 가능한 합의 프로토콜의 지원입니다. 예를 들어, 하나의 기업 내에 배포할 때 혹은 신뢰 기구에 의해 운영될 때, 완전 비잔틴 장애 허용 합의(Fully byzantine fault telerant consensus)는 블필요하고, 성능과 처리량을 저하시킨다고 여겨질 수 있습니다. 그와 같은 상황에서는, 크래시 장애 허용(CFT: Crash Fault-Tolerant) 합의 프로토콜이 더 적절하지만, 여러 단체의 탈중앙화된 유스 케이스에서는 더 전통적인 비잔틴 장애 허용(BFT: Byzantine Fault Tolerant) 합의 프로토콜이 요구될 수 있습니다.

패브릭은 고비용의 채굴에 인센티브를 주거나 스마트 컨트랙트 실행의 연료로 쓰일 네이티브 암호화폐가 필요하지 않은 합의 프로토콜에 힘을 실을 수 있습니다. 암호화폐를 피하는 것은 중대한 리스크/공격 경로를 줄이고, 암호학적 채굴 운영의 부재는 그 플랫폼이 다른 분산 시스템과 거의 같은 운영 비용으로 배포될 수 있음을 뜻합니다.

이들 차별화된 디자인 기능의 조합은 패브릭을 오늘날 트랜잭션 처리와 트랜잭션 확정 지연 시간 모두에서 사용 가능한 더 나은 성능의 플랫폼 중 하나로 만들고, 트랜잭션의 개인 정보 보호와 기밀성 그리고 그를 구현하는 (패브릭이 “체인코드”라고 부르는) 스마트 컨트랙트를 가능하게 합니다.

이들 차별화된 기능을 더 자세히 탐험해 봅시다.

모듈성

하이퍼레저 패브릭은 모듈화 아키텍처를 갖도록 특별히 디자인되었습니다. 플러그인 가능한 합의, LDAP나 OpenID 연결 같은 플러그인 가능한 ID 관리 프로토콜, 키 관리 프로토콜 또는 암호화 라이브러리 등 모두 플랫폼은 그 코어에서 다양한 엔터프라이즈 유스 케이스 요구사항을 만족하도록 설정되게 디자인 되었습니다.

하이 레벨에서 패브릭은 다음 모듈화 요소로 구성됩니다:

  • 플러그인 가능한 정렬 서비스 는 트랜잭션의 순서 상에 합의를 이룬 후, 블록을 피어로 브로드캐스트합니다.
  • 플러그인 가능한 멤버십 서비스 제공자 는 네트워크 내의 개체들과 암호학적 ID를 연결지을 책임이 있습니다.
  • 옵션으로 피어-투-피어 가십 서비스 는 정렬 서비스로부터 다른 피어로 블록 결과를 퍼뜨립니다.
  • 스마트 컨트랙트 (”체인코드”) 는 격리를 위한 컨테이너 환경 (예를 들어, 도커) 내에서 실행합니다. 이들은 원장 상태에 직접 접근할 수 없는 표준 프로그래밍 언어로 작성될 수 있습니다.
  • 원장은 다양한 DMBS를 지원하도록 설정할 수 있습니다.
  • 플러그인 가능한 애플리케이션 당 독립적으로 설정 가능한 승인과 유효성 검증 정책 시행

업계 내에는 “모두를 지배하는 하나의 블록체인”은 없다는 공평한 합의가 있습니다. 하이퍼레저 패브릭은 여러 산업 유스 케이스에 대한 다양한 해결책의 요구 사항을 만족시키기 위해 여러 방법으로 설정될 수 있습니다.

허가형 vs 비허가형 블록체인

비허가형 블록체인에서는 사실상 누구나 참여할 수 있고 모든 참여자가 익명입니다. 이런 맥락에서, 어느 정도 그 깊이가 깊어진 블록체인의 상태가 불변하다는 것 외에는 어떤 믿음도 있을 수 없습니다. 이런 믿음의 부재를 줄이기 위해서, 비허가형 블록체인은 “작업 증명(PoW: proof of work)”에 기초한 비잔틴 장애 허용 합의의 형식으로 참여하는 엄청난 비용을 줄이기 위해 일반적으로 “채굴된” 네이티브 암호화폐나 경제적인 인센티브를 제공하기 위한 트랜잭션 수수료를 도입합니다.

허가형 블록체인은 한편 어느 정도 신뢰를 인정하는 거버넌스 모델 하에서 운영하는 서로 알고 있는, 신원 확인된, 그리고 대개 심사를 거친 참여자 사이에서 블록체인을 운영합니다. 허가형 블록체인은 같은 목표를 갖지만 서로를 완전히 믿을 수는 없는 개체들의 그룹 내에서의 상호 소통을 안전하게 하기 위한 방법을 제공합니다. 참여자들의 신원에 기대서 허가형 블록체인은 값비싼 채굴이 필요하지 않은 이전에 더 많이 쓰던 크래시 장애 내성(CFT: Crash fault tolerant) 또는 비잔틴 장애 내성 (BFT: byzantine fault tolerant) 합의 포로토콜을 사용할 수 있습니다.

추가로 이런 허가형 맥락에서 참여자가 스마트 컨트랙트를 통해 고의로 악성 코드를 가져올 위험은 낮아집니다. 먼저 해당 참여자는 다른 참여자들이 알고 있고, 애플리케이션 트랜잭션의 제출. 네트워크의 설정 변경 또는 스마트 컨트랙트의 배포 같은 모든 동작은 네트워크, 그리고 그 연관된 트랜잭션 타입을 위해 세워진 승인 정책에 따라 블록체인 상에 기록됩니다. 완전히 익명인 것보다는 잘못된 단체가 쉽게 가려질 수 있고, 거버넌스 모델의 규정에 따라 사고가 처리됩니다.

스마트 컨트랙트

스마트 컨트랙트 또는 패브릭이 “체인코드”라고 부르는 것은 그 보안/신용을 블록체인과 피어들 간의 합의 하에서 얻는 신뢰되는 분산 애플리케이션으로 기능합니다. 이는 블록체인 애플리케이션의 비지니스 로직입니다.

특별히 하나의 플랫폼에 적용될 때 스마트 컨트랙트에 적용되는 세가지 키 포인트가 있습니다:

  • 많은 스마트 컨트랙트가 동시에 네트워크 내에서 실행되고,
  • 그들은 (누구나 많은 경우에) 동적으로 배포될 수 있고,
  • 애플리케이션 코드는 신뢰하지 않는 것처럼, 잠재적으로는 악성인 것처럼 처리되어야 합니다.

대부분의 스마트-컨트랙트를 사용 가능한 블록체인 플랫폼은 합의 프로토콜 내에 정렬-실행(order-execute) 아키텍처를 따릅니다:

  • 트랜잭션의 유효성을 검사하고, 순서를 정한 후, 모든 피어 노드에 그들을 전파하고,
  • 각 피어들은 그럼 트랜잭션을 순서대로 실행합니다.

정렬-실행 아키텍처는 (PoW 기반 합의의) 이더리움 같은 퍼블릭/비허가형 플랫폼에서부터 텐더민트, 체인, 그리고 쿼럼(Quorum) 같은 제한형 플랫폼에 이르기까지 사실상 모든 기존 블록체인 시스템에서 찾아 볼 수 있습니다.

정렬-실행 아키텍처로 운영하는 블록체인 내에서 실행하는 스마트 컨트랙트는 반드시 결정적(deterministic)해야 합니다; 아니면 합의에 이르지 못할 수 있습니다. 비결정성(non-deteminism) 문제를 해결하기 위해서 많은 플랫폼들이 비결정적(non-deterministic) 동작을 제거할 수 있는 비표준 또는 (솔리디티(Solidity) 같은) 도메인 특정 언어로 작성된 스마트 컨트랙트를 필요로 합니다. 이는 스마트 컨트랙트를 작성하는 개발자들이 새로운 언어를 배워야 하고, 프로그래밍 에러로 이끌 수 있어서 광범위한 도입을 가로막습니다.

게다가, 모든 트랜잭션을 모든 노드가 순서대로 실행해야 하기 때문에 성능과 확장이 제한됩니다. 스마트 컨트랙트 코드가 시스템 내의 모든 노드에서 실행된다는 사실은 전체 시스템의 복구성를 보장하기 위해 잠재적 악성 컨트랙트로부터 전체 시스템을 막기 위해 복잡한 조치를 취해야 함을 필요로 합니다.

새로운 접근법

패브릭은 우리가 **실행-정렬-유효성 검증(execute-order-validate)**라고 부르는 트랜잭션을 위한 새로운 아키텍처를 도입합니다. 정렬-실행 모델이 직면하는 복구성, 유연성, 확장성, 성능과 보안 문제를 트랜잭션 흐름을 세가지 단계로 나누는 방법으로 처리합니다:

  • 실행 트랜잭션을 실행하고, 그 정확성을 검사해서 승인하고,
  • 정렬 트랜잭션을 (플러그인 가능한) 합의 프로토콜을 통해 정렬하고,
  • 유효성 검증 원장에 트랜잭션들을 커밋하기 전에 그들의 유효성을 애플리케이션에 특정하는 승인 정책에 맞게 검증합니다.

이 디자인은 패브릭이 그들의 순서대로 마지막 합의에 이르기 전에 트랜잭션을 실행한다는 점에서 근본적으로 정렬-실행 패러다임으로부터 출발합니다.

패브릭에서 애플리케이션에 특정하는 승인 정책은 주어진 스마트 컨트랙트의 정확한 실행을 위해 피어 노드 중 어느 것이, 또는 얼마나 많이, 보장할 필요가 있는지를 정합니다. 그래서 각 트랜잭션은 그 트랜잭션의 승인 정책에 만족하기 위해 필요한 피어 노드의 일부에 의해 실행(승인)만 돼야 합니다. 이는 전체 성능과 시스템의 확장을 늘리기 위해 병렬 실행할 수 있습니다. 이 첫번째 단계는 또한 정렬 전에 일치하지 않는 결과를 제거할 수 있어서 비결정성을 제거합니다.

비결정성을 제거하므로 패브릭은 표준 프로그래밍 언어를 사용할 수 있도록 하는 최초의 블록체인 기술 입니다.

개인 정보 보호와 기밀 유지

우리가 논의한대로, 그 합의 모델로 PoW를 이용하는 퍼블릭 비허가형 블록체인 네트워크에서는 트랜잭션을 모든 노드가 실행합니다. 이는 컨트랙트 자체도 그리고 그들이 처리하는 트랜잭션 데이터 모두 기밀성을 줄 수 없음을 뜻합니다. 모든 트랜잭션 그리고 그를 구현하는 코드는 네트워크 내의 모든 노드가 볼 수 있습니다. 이 경우, 우리는 컨트랙트와 데이터의 기밀성을 PoW에 의해 달성되는 비잔틴 장애 허용 합의 와 맞바꾼 겁니다.

기밀성의 부족은 많은 비지니스/엔터프라이즈 유스 케이스에 문제가 될 수 있습니다. 예를 들어, 공급망 협력사의 네트워크 내에서 어떤 소비자는 관계를 강화하거나 추가 매출을 올리는 수단으로 우대 가격을 받을 수 있습니다. 모든 참여자가 모든 컨트랙트와 트랜잭션을 볼 수 있다면, 완전히 투명한 네트워크 내에서의 이런 비지니스 관계를 유지할 수 없게 될 겁니다 — 모두가 우대 가격을 원할 겁니다!

두번째 예로, 포지션을 가지려는 (또는 처분하려고 하는) 트레이더가 다른 경쟁자들이 이를 알 수 없길 원하는, 안그러면 그들이 그 게임에 뛰어들어 그 트레이더의 수를 약화시키려는 상황의 증권업을 생각해 봅시다.

엔터프라이즈 유스 케이스 요구사항을 만족시킬 목적으로 개인 정보 보호와 기밀성의 부재를 해결하기 위해서 블록체인 플랫폼은 다양한 접근 방식을 도입했습니다. 모두 그들만의 장단점이 있습니다.

데이터 암호화는 기밀성을 제공하는 한 방법입니다; 그러나 그 합의로 PoW를 사용하는 비허가형 네트워크 내에서 암호화된 데이터는 모든 노드에 상주합니다. 충분한 시간과 컴퓨팅 자원이 주어지면, 그 암호화는 깨질 수 있습니다. 많은 엔터프라이즈 유스 케이스들에서 그들의 정보가 위태롭게 될 위험은 용납할 수 없습니다.

영지식 증명(ZKP: Zero knowledge proofs)은 이 문제를 해결하기 위해 탐구되고 있는 또다른 연구 영역입니다. 영지식 증명의 현재 트레이드 오프는 영지식 증명의 계산이 상당한 시간과 컴퓨팅 자원을 요구한다는 겁니다. 그래서 이런 경우에 기밀성에 대해 성능울 맞바꾸게 됩니다.

다른 대안의 합의 형식을 사용하는 허가형 블록체인의 맥락에서 누군가는 기밀 정보의 분산을 공인된 노드에게만 제한하는 방식을 살펴 볼 수도 있습니다.

허가형 플랫폼인 하이퍼레저 패브릭은 그 채널 아키텍처와 전용 데이터(private data) 기능을 통해 기밀성을 제공합니다. 채널 내에서 패브릭 네트워크 상의 참여자들은 그 모든 멤버가 특정 트랜잭션만 볼 수 있는 서브 네트워크를 만듭니다. 그래서 채널 내에 참여한 그들 노드만 그 스마트 컨트랙트(체인코드)와 트랜잭션되는 데이터에 대해 개인 정보 보호와 기밀성 모두를 지키는 접근 권한을 갖습니다. 전용 데이터는 채널 상의 멤버들 간에 분리 채널을 만들거나 관리하는 오버해드 없이 매우 채널의 경우와 가깝게 보호할 수 있는 컬렉션을 만들 수 있습니다.

플러그인 가능한 합의

트랜잭션의 정렬은 트랜잭션을 실행하고 원장을 관리하는 피어로부터 논리적으로 결합되지 않은 합의를 위해 모듈화된 요소, 명확히는 정렬 서비스에게 위임됩니다. 합의가 모듈화되어 있기 때문에, 그 구현은 특정 배포 혹은 해결책의 신뢰 가정에 맞춰질 수 있습니다. 이 모듈화 아키텍처는 플랫폼이 크래시 장애 허용 (CFT: crash fault-tolerant) 또는 비잔틴 장애 허용(BFT: byzantine fault-tolerant) 정렬을 위한 안정적인 툴킷에 의존할 수 있게 합니다.

패브릭은 현재 Raft 프로토콜etcd 라이브러리에 기반한 CFT 정렬 구현을 제공합니다. 현재 사용 가능한 정렬 서비스에 대한 정보는 정렬에 대한 개념 문서 를 확인하세요.

또한 이들이 상호 배타적이 아님에 주의하세요. 패브릭 네트워크는 다른 애플리케이션이나 애플리케이션 요구사항을 지원하는 여러개의 정렬 서비스를 가질 수 있습니다.

성능과 확장성

블록체인 플랫폼의 성능은 트랜잭션 크기, 블록 크기, 네트워크 크기 뿐만 아니라 하드웨어의 제약 등과 같은 여러 가변요소에 영향을 받을 수 있습니다. 하이퍼레저 패브릭 성능과 확장 작업 그룹은 현재 하이퍼레저 캘리퍼(Hyperledger Caliper)라 불리는 벤치마킹 프레임워크 상에서 작업합니다.

하이퍼레저 패브릭의 성능 한계를 연구하고 테스트하는 여러 연구 논문이 발표되었습니다. 최신은 패브릭을 초당 20,000 트랜잭션으로 확장했습니다.

결론

블록체인 플랫폼의 본격적인 평가에는 그 짧은 목록에 하이퍼레저 패브릭을 넣어야 합니다.

패브릭의 차별화되는 능력의 조합은 플랫폼이 정부로부터, 금융, 공급망 물류, 의료, 그리고 그 이상의 광범위한 산업계의 유스 케이스를 지원하도록 유연한 신뢰의 가정을 지원하는 허가형 블록체인의 높은 확장 가능 시스템을 만듭니다.

하이퍼레저 패브릭은 가장 활동적인 하이퍼레저 프로젝트입니다. 이 플랫폼을 둘러싼 커뮤니티는 꾸준히 성장하고 있고, 각 성공적인 릴리즈로 달성하는 혁신은 다른 엔터프라이즈 블록체인 플랫폼을 멀리 앞지르고 있습니다.

감사의 말

앞선 내용은 피어 리뷰된 다음 논문으로부터 나왔습니다.

“Hyperledger Fabric: A Distributed Operating System for Permissioned Blockchains” - 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