Hyperledger Fabric(이하 패브릭)은 높은 수준의 보안성을 가지고 있으며 모듈식 아키텍처를 제공하는 분산원장 솔류션 플렛폼이다. 다양한 요소들을 추가 할 수 있도록 플러그인 방식 설계를 가지고 있다. 플러그인 방식은 복잡한 경제 생태계가 가지는 복잡성을 수용 할 수 있도록 한다.
패브릭을 처음 사용하는 개발자라면 이 문서가 도움이 될 것이다. 이미 패브릭에 익숙한 사용자라면 패브릭 시작, 데모, 기술사양, API 문서등을 살펴보도록 하자.
블록체인이란 ?
분산원장
블록체인 네트워크의 핵심은 네트워크에서 발생하는 모든 거래를 기록하는 분산원장에 있다.
불록체인 원장은 종종 여러 네트워크 참여자에게 분산되는 것으로 묘사되는데, 이를 위해서 각 네트워크 참여자는 원장의 유지보수 작업에 협력 할 수 있어야 한다. 우리는 탈 중앙화와 협업이 기업이 현실에서 상품과 서비스를 교환하기 위한 효율적이고 강력한 속성임을 알고 있다.
블록체인을 이용한 원장의 저장은 상호협력하며 분산될 뿐만 아니라 한번 추가되면 수정할 수 없도록 하는 암호화 기술을 사용할 수 있다. 이러한 "불변성"은 참가자들이 원장이 저장된 이후에 변경되지 않았음을 확신 할 수 있기 때문에 정보에 대한 신뢰도를 높일 수 있다. 이러한 특성으로 블록체인은 때때로 증거 시스템(System of proof)로 사용되기도 한다.
스마트 컨트랙트
블록체인 네트워크는 스마트 컨터랙트를 사용해서 원장에 대한 일관성 있는 접근 기능(거래와 질의)을 제공한다.
스마트 컨트랙트는 정보를 캡슐화해서 블록체인네트워크에서 정보를 간단하게 유지 할 수 있는 핵심 메커니즘을 제공 할 뿐만 아니라, 트랜잭션의 특정 기능을 자동으로 실행 하도록 작성 할 수 있다.
예를 들어, 물품의 도착 시간에 따라서 변하하는 운송비용을 스마트 컨트랙트에 작성 할 수 있다. 양 당사자가 스마트 컨트랙트에 동의하면 이 조건에 따라서 품목을 수령 할 때, 운송비용이 자동으로 책정된다.
컨센서스
원장은 블록체인 네트워크에 참여한 모든 참가자의 승인을 받아야 하며, 서로간에 동일한 순서로 거래가 업데이트되야 한다. 이러한 프로세스를 컨센서스(합의)라고 한다.
나중에 원장과 스마트 컨트랙트(Smart contract)에 대해서 더 많이 배울 것이다. 지금은 블록 체인인을 스마트계약을 통해서 업데이트되고 합의(컨센서스)라는 협업 프로세스를 통해서 지속적으로 동기화 되는 "공유 복제 트랜잭션 시스템"으로 생각해도 충분하다.
왜 블록체인을 사용하는가 ?
오늘날의 기록 시스템
오늘날의 거래 네트워크는 비지니스 기록이 만들어진 이후 존재했던 업데이트 정보의 네트워크에 지나지 않는다. 비지니스 네트워크의 구성원은 서로 거래를 하지만 거래에 대해서 별도의 기록을 유지한다. 16세기 Flemish tapestries이든 오늘날의 유가 증권이든 여기에는 물건을 판매 할 때마다 품목을 판매하는 사업체와 소유권을 이전&확인하기 위해서 각 과정을 기록으로 남겨야 한다.
결과적으로 남는 것은 아래와 같은 비지니스 네트워크다.
현대 기술은 이 과정을 석판이나 종이대신 하드디스크와 클라우드 플랫폼으로 기록하고 있지만 기본 구조는 동일하다. 네트워크 참여자의 신원을 관리하기 위한 통합 시스템은 존재하지 않으며, 거래의 성립을 확립하기 위해서 며칠에 걸쳐서 증권거래를 정리하고 계약서에 서명하고 수동으로 실행해야 한다. 시스템의 모든 데이터베이스는 고유한 정보를 포함하기 때문에 단일 장애지점을 가지게 된다.
가시성과 신뢰가 분명히 필요하다고 하더라도 오늘날의 (공유되지 않고)분리된 시스템에서는 비지니스 네트워크를 포괄하는 레코드 시스템을 구축 할 수 없다.
블록체인은 무엇이 다른가
서로 공유되지 않고 독립적으로 작동하는 비효율적인 트랜잭션 시스템대신 비지니스 네트워크에서 참여자를 식별 할 수 있는 ID를 부여하고, 트랜잭션을 실행하고, 데이터를 저장하는 표준적인 방법이 있다면 어떨까. 한번 작성되면 변경이 불가능하며, 신뢰할 수 있는 거래 목록을 통해서 자산의 출처를 설정하는 방법이 있다면 어떨까.
이 비지니스 네트워크는 아래와 같이 묘사할 수 있을 것이다.
위 그림은 모든 비지니스 참가자가 자신의 원장 사본을 가지고 있는 블록체인 네트워크를 묘사하고 있다. 원장 정보가 공유 될뿐만 아니라 원장을 업데이트하는 프로세스도 공유된다. 참가자의 개인 프로그램이 개인 원장을 업데이트하는 오늘날의 시스템과 달리 블록체인 시스템은 공유 원장을 업데이트하는 프로그램을 공유한다.
블록체인 네트워크는 공유원장을 통해 비지니스 네트워크를 조정할 수 있으므로 개인 정보의 처리와 관련된 시간,비용,위험을 줄이면서 신뢰와 가시성을 향상시킬 수 있다.
이제 블록체인이 무엇이고 왜 유용한지 알게 됐다. 중요한 많은 세부사항들이 있지만 핵심은 정보 프로세스의 공유에 있다.
Hyperledger Fabric에 대해서
리눅스 파운데이션(Linux Foundation)은 2015년 각 산업을 아우르는 블록체인 기술을 발전시키기 위해서 하이퍼레저 프로젝트를 설립했다. 단일한 블록체인 표준을 만드는 대신 커뮤니티를 통해서 공동으로 블록체인 기술을 개발하는 방식을 선택했다.
하이퍼레저 패브릭은 하이퍼레저에서 추진하고 있는 여러 프로젝트들 중 하나다. 다른 블록체인 기술들과 마찬가지로 원장을 보유하고 스마트 컨트랙트를 사용하여 참가자의 거래를 관리하는 시스템이다.
하이퍼레저 패브릭이 다른 블록체인 시스템과 다른 점은 프라이빗(private)하며 권한(permissioned)을 가지고 있다는 점이다. 하이퍼레저 패브릭은 네트워크의 구성원을 알 수 없는 개방형 무허가 시스템(구성원을 알 수 없기 때문에 "작업증명(proof of work)와 같은 프로토콜이 필요하다) 대신 신뢰 할 수 있는 MSP(Membership Service Provider)를 사용한다.
하이퍼레저 패브릭은 플러그인 모델을 제공한다. 원장은 여러 형식으로 저장될 수 있으며, 목적에 맞는 합의 메커니즘을 만들 수 있다.
또한 하이퍼레저가 제공하는 채널(Channel)기능을 이용해서 참가자들을 그룹으로 묶어서 독립된 거래 원장을 작성할 수 있다. 이는 일부 참가자가 경쟁자이거나 모든 참가자에게 거래를 알려주고 싶지 않는(일부 참가자에게 제공하는 가격혜택 등) 네트워크에 특히 중요한 옵션이다. 두 명의 참가자가 채널을 구성하면 채널의 참가자들은 원장사본을 가지게 된다.
Shared Ledger
패브릭은 world state와 transaction log로 구성된 공유 원장 시스템을 가지고 있다. 각 참가자는 자신이 속한 패브릭 네트워크의 원장 사본을 보유한다.
world state는 특정 시점의 원장 상태를 설명한다. 원장 데이터베이스인 셈이다. 트랜잭션 로그는 world state의 현재 상태가 있게한 모든 트랜잭션을 기록한다. 즉 패브릭에서 원장은 world state와 transaction log의 조합이다. World state와 transaction log가 생소한 개념으로 보일 수 있으나, 다른 데이터베이스도 이러한 조합으로 구성된다. 예를 들어 MySQL 데이터베이스는 "데이터베이스"와 "Binary Log"로 구성되는데 Binary Log가 트랜잭션 로그다.
원장은 world state를 저장하기 위한 데이터 저장소를 가지고 있다. 기본으로 Key-Value 데이터베이스인 LevelDB를 사용하고 있다. 이 데이터베이스는 교체 할 수 있다.
Smart Contracts
패브릭의 스마트 컨트랙트(Smart Contract)는 체인코드(Chaincode)로 작성이되며 블록체인의 외부 응용 프로그램에 의해서 호출된다. 체인코드는 원장과 상호작용하기 위한 코드를 포함한다. 체인코드는 여러 언어로 개발 할 수 있다. 현재 Go와 Node를 지원한다.
Privacy
B2B(Business-to-Business)네트워크 참여자의 경우 공유하는 정보의 공유에 매우 민감할 수 있다. 어떤 네트워크는 중요 개인 정보를 다룰 수 있고, 어떤 네트워크는 그렇지 않을 수 있다. 패브릭은 채널별로 보안을 다르게 설정할 수 있다.
Consensus
거래는 서로 다른 참여자들 사이에서 발생할 수 있는데, 이 경우에도 (당연하다 거래순서가 서로 다르면 안되니까.)발생한 순서대로 원장에 작성되야 한다. 이를 위해서는 트랜잭션 순서를 설정해야 하며, 오류로 인해서 잘못 삽입된 트랜잭션을 거부하는 장치를 마련해야 한다.
이것은 철저하게 연구된 컴퓨터 과학 분야로 (장단점을 가진)다양한 방식으로 달성 할 수 있다. 예를들어 PBFT(Practical Byzantine Fault Tolerance)는 파일 복제본이 서로 통신을해서 손상이 발생한 경우에도 각 사본의 일관성을 유지하는 매커니즘을 제공한다. 하이퍼레저 패브릭은 네트워크 참여자 사이에 존재하는 다양한 형태를 지원하도록 "합의 알고리즘을 선택"하도록 설계됐다.
현재 SOLO,Kafka 및 Raft가 포함된 하이퍼레저 패브릭 합의 매커니즘을 사용 할 수 있다.
앞으로 살펴봐야 할 것들
아래 문서들은 차근 차근 번역해야겠다.
Identity : 패브릭 네트워크내에서의 역할과 권한을 부여하기 위한 PKI 구조와 x.509등에 대한 개념적 내용
Membership : 맴버쉽 서비스를 운영하기 위한 아키텍처를 제공한다. 인증서 발급 및 유효성 검사, 사용자 인증에 대한 모든 암호화 메커니즘과 프로토콜을 추상화 한다.
Peers : 조직은 peer를 소유한다. 이 peer는 스마트 컨트랙트를 호스팅하기 위해서 패브릭 네트워크에서 물리적 구조를 구성한다.
Contents
소개
블록체인이란 ?
분산원장
스마트 컨트랙트
컨센서스
왜 블록체인을 사용하는가 ?
오늘날의 기록 시스템
블록체인은 무엇이 다른가
Hyperledger Fabric에 대해서
Shared Ledger
Smart Contracts
Privacy
Consensus
앞으로 살펴봐야 할 것들
Recent Posts
Archive Posts
Tags