일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- #C++ 연산자함수오버로딩
- border-box
- #binary
- #CallByAddress
- #다차원포인터
- html video
- html multimedia
- #1차원배열
- html id
- #3차원배열
- html plug-in
- 토큰경제
- html object
- #2차원배열
- #android activity
- 하이퍼레저패브릭
- #C++ has~a
- #JAVASCRIPT
- #성적관리프로그램
- mac terminal command
- git flow
- html code
- relative path
- #자바상속#자바이즈어#is~a
- html5 new tag
- docker example
- #bubbleSort
- html charset
- html youtube
- hyperledger transaction
- Today
- Total
A sentimental robot
Hyperledger fabric 주요 개념 본문
- Ledger
블록체인에서 장부는 매우 중요한 개념으로 거래 내역이 저장된 데이터 베이스이다.
패브릭 네트워크에서 한 채널이 하나의 장부를 가진다. 하나의 채널에 속한 피어들은 자신이 속한 채널의 장부 복사본을 가진다.
원장은 현재상태를 나타내는 World state, 원장의 생성 시점부터 현재까지의 사용기록을 저장하는 Blockchain 두 가지로 구분된다. World state는 데이터베이스 형태로 Blockchain과 분리되어 있다.
Blockchain
합의에 의해 결정된 블록들은 절대 수정할 수 없다. ( 잘못된 데이터가 발견되었을 경우에도 수정이 불가 ->결과 값을 맞추기 위해 world state 값을 조작해야 한다. )
append-only 방식의 저장이 목적이기 때문에 파일시스템 형태로 저장되어있다.
World state
World state에 저장된 데이터는 합의 과정을 통과하여 블록체인에 append되기 전의 데이터이다. 그렇기 때문에 체인코드를 통한 조회, 변경,삭제가 빈번히 발생하여 데이터 베이스 형태로 구축되어있다.
- Peer
피어는 장부를 물리적으로 호스팅하고 장부를 업데이트하는 Chaincode 를 저장하고 있는 entity이다. (분산원장과 체인코드는 물리적으로 피어에 저장되고 설치된다.)
공식문서에는 하나의 피어에서 최소 한 개 이상의 분산원장과 체인코드 호스팅을 권장한다.
각 피어는 CA로부터 id를 배정 받고 채널에 참여할 수 있다.
- Chaincode (Smart contract)
체인코드는 장부를 업데이트하는 비즈니스 로직이다.( 이더리움에서는 smart contract라고 불린다. )
패브릭은 체인코드 언어로 Go와 node.js를 지원한다.
주로 비즈니스 모델에 맞는 분산 애플리케이션(DApp;Decentralized Application)과 함께 개발되어 사용된다.
jello피어가 체인코드를 설치했다고 가정하자.
jello피어가 호스팅하는 채널에 연결된 다른 피어들에는 어떤 체인코드가 설치됬는지 알 수 없기 때문에 jello 피어의 체인코드를 바로 실행할 수는 없다.
jello 가 구현한 체인코드를 사용하기 위해선 구현 로직이 아니라 jello 피어의 체인코드 인터페이스를 다른 피어들에게 알리는 인스턴스화(instantiated)가 필요하다. jello피어는 체인코드를 채널에 인스턴스화한다. 그리고 피어들은 채널에 인스턴스화가 된 체인코드를 설치한다.
이렇게 채널에 연결된 피어들에 jello가 구현한 체인코드가 설치되고 인스턴스화가 이루어지면 네트워크 외부의 클라이언트 어플리케이션에 의해서 체인코드가 호출(invoke)되어 결과값을 전송 받을 수있다.
smart contract을 모든 노드가 실행하는 퍼블릭 블록체인과 달리,
패브릭에서는 트랜잭션 요청을 받은 Endorsing peer만 체인코드를 실행하고 결과 값을 네트워크에 전파한다.
그러므로 병렬적으로 트랜잭션을 처리할 수 있다는 장점을 갖는다.
일부 노드만 체인코드를 실행한 결과 값을 신뢰할 수 있어? 의심하는 분!
패브릭의 Endorsement policy은 Endorsing peer가 네트워크에 전달한 트랜잭션 결과 값을 채널 내 Committing peer가 검증한다.
(보증 정책에는 어떤 체인코드가 장부를 업데이트하기 위해서 몇 개의 서명이 필요한지 명시되어 있다.)
- DApp(Decentralized Application)
분산 애플리케이션은 사용자가 분산원장에 접근하는 방식을 정의하는 프로그램이다.
패브릭은 분산 애플리케이션 개발을 위해 다양한 종류의 SDK(Software Development Kit)를 제공한다.
각 조직의 비즈니스 모델에 맞게 개발이 가능하다.
- Gossip
채널을 공유하는 피어들은 Gossip protocol을 통해 서로에게 자신이 살아있음을 알리는 heartbeat 메세지를 브로드캐스트 한다.
채널에 소속된 피어들 중 특정 피어로부터 일정 시간동안 메세지가 수신되지 않으면 해당 피어는 오프라인 상태로 인식된다.
채널 내 피어들은 Gossip protocol을 통해 분산 원장을 전송하고 비교 업데이트를 한다.
- CA (Certificate Authority)
디지털 인증서를 관리하는 기관으로 사용자의 디지털 인증서를 발급,저장,삭제해주는 역할을 한다.( MSP를 발급한다. )
*PKI(public key infrastructure) 기반의 디지털 인증서
패브릭에서는 Fabric-CA 노드가 CA역할을 한다.
- MSP(Membership Service Provider)
하이버레저 패브릭 멤버쉽 관리 기술로 peer, orderer, Fabric-CA, Admin 등의 역할과 소속,권한 등을 정의한다.
local MSP
패브릭 네트워크 노드들의 역할을 부여할 때 사용한다.
peer, orderer, client 노드를 정의하고 노드 별 권한도 정의할 수 있다. 패브릭 네트워크의 모든 노드들은 모두 하나 이상의 local MSP가 정의되어야 한다.
channel MSP
채널 구성원들에 대한 멤버십 정의 및 권한 부여
채널을 이루는 구성원들은 각자의 local MSP를 이용해 하나의 channel MSP를 생성한다.
- Orderer
DApp에게 전달받은 트랜잭션들을 정렬한 후 블록을 생성한다.( ordering service 수행 )
그리고 Committing peer에게 블록을 전파하는 역할을 한다. Orderer는 블록을 검증하는 역할을 하진 않는다.
오더링 서비스는 카프카(Kafka) 분산 메세징 시스템을 이용해 구현되었다.
Reference
- 하이퍼레저 패브릭으로 배우는 블록체인, 윤대근
'Hyperledger fabric' 카테고리의 다른 글
Docker (0) | 2019.07.12 |
---|---|
Mac OS 기본적인 터미널 명령어 (0) | 2019.07.12 |
Transaction Process (0) | 2019.07.11 |
Hyperledger fabric 구조 (0) | 2019.07.10 |
Token economics (0) | 2019.07.10 |