Hyperledger Fabric은 엔터프라이즈 컨텍스트에 사용하도록 설계된 오픈 소스 엔터프라이즈급 허가된 분산 원장 기술(DLT) 플랫폼으로 분산 원장과 합의(Consensus)를 비롯해 사용자 ID 발행과 인증, 스마트 계약의 개발과 실행, 기밀성 등의 기능을 제공한다.
하이퍼레저 프로젝트는 가상 화폐 뿐만이 아니라 광범위한 비즈니스 용도의 블록체인 플랫폼을 제공을 목적으로하는 오픈소스 프로젝트이다.
하이퍼레저 패브릭 네트워크에서 트랜잭션을 실행하기 위해서는 사용자 등록을 해야 한다. 체인코드나 전 단계의 응용 프로그램(웹 응용 프로그램 등) 설계에 따라 조직 단위로 할지 개인 단위로 할지 선택
1. Transaction Proposal
클라이언트로부터 체인 코드 실행 요청을 받는다(트랜잭션제안), 보증정책에 구현된 정책에 따라 대상이 되는 조직 내에서 임의의 보증인(피어)에게 보증요청을 한다.
2. 보증인이 체인 코드를 시뮬레이트 한다.
상태 DB에는 저장 내용이 없고 RWSet(read/write set)을 생성, RWSet은 키항목, 버전번호, 그 버전 정보, 쓸 값을 담고 있다.
3. 보증인이 서명한 RWSet을 클라이언트에게 돌려준다.
해당 트랜잭션은 대상 조직으로부터 보증된 것으로 취급
4. 클라이언트는 여러 조직 내 보증인으로부터 받은 서명된 RWSet을 통해 보증 정책이 충족된 것을 확인
그 정보를 바탕으로 트랜잭션 제어를 오더러에게 요청(제출)
5. 오더러는 트랜잭션 순서제어, 정렬된 트랜잭션(서명된 RWSet)은 커미터(피어)에게 배포
1 블록당 최대 트랜잭션 수 또는 시간 제한에 따라 이루어 지고 가십 Gossip 프로토콜이 이용
6. 커미터가 트랜잭션(서명된 RWSet)을 검증, 검증이 성공하면 블록체인 및 상태 DB를 갱신(Commit)
트랜잭션 검증은 보증 정책이 충족 되었는지 확인함과 동시에 RWSet에 저장돼 있는 키 항목의 버전 번호와 현재 상태 DB 내에 해당하는 키 항목 버전 번호가 일치하는가 검사, 이처럼 버전 번호를 검사해서 최신 데이터가 아닌 내용이 상태 DB에 저장되는 것을 방지하는 "낙관적 배타 제어"를 실현
7. 커미터는 이벤트를 발행해 클라이언트 측에 트랜잭션 검증의 성공과 실패를 통지
검증결과 배타제어 에러가 발생한 경우 이용자가 직접 처음부터 시도하거나 클라이언트(웹 브라우저 등) 자동으로 처음부터 재시도하게끔 해야 한다.
오더러가 트랜잭션을 커미터에 배포할 때나 피어에 장애가 발생해 지연된 분산원장을 복구하기 위한 동기화 처리에 사용
리더 : 오더러와 직접 연결, 타 티어에게 가십 프로토콜 데이터를 전달하는 기점이 되는 피어, 특별히 지정하지 않는다면 조직 내 자동 결정
비트코인, 이더리움과 하이퍼레저의 큰 차이점은
비트, 이더리움은 한 개의 노드라면 하이퍼레저의 노드는 피어(허락, 보증, 거래 시뮬레이팅)와 Orderer(보증을 확인하고 블록을 생성)로 역할이 나뉘어 있다.
User는 거래를 만들어서 peer들에게 허락을 맡는다. 허락된 거래를 order에서 peer가 보증한 내역을 확인하고 블록을 생성한다.