블로그 : https://blog.naver.com/scpark640303/221289061343
유튜브 : https://youtu.be/hh9NXQQRtx4
- 특징
- 1) 허가형 블록체인 : (X.509인증서 PKI기반) MSP를 통해, 허가된 사용자만 참여.
- 2) 일반 프로그래밍 언어
- : (이더리움의 Solidity와 달리~) 일반적인 언어를 사용함.
- : 블록체인의 분산컴퓨팅 환경에서는 동일한 처리결과를 보장해야 하기 떄문에...
- : Deterministic한 프로그램만을 하는 제약이 있는데...
- : 이를 해결 할 수 있는, Non-Deterministic한 메커니즘이 제공 됨. (실행시 항상 동일하게 리턴)
- 3) 내부 가상통화 부재
- : 장점? 수수료가 없다. 단점? 수수료가 없어서... DoS 공격 가능성. (그래서 방어로직구조)
- : 이더리움 경우, 작업증명(PoW) 방식의 합의로~ 채굴 전체 시스템이 D'App 버그에 영향을 받음.
- : 하레패 경우, 특정 chaincode는 일부 endorser-peer에서만 실행되고 보증 받음.
- 4) 높은 성능
- : 초당 1만 transaction 이상을 목표.
- : 병렬처리에 따른 Non-Deterministic함 -> 전체 Ledger 동기화를 위해, Key의 Version을 관리.
- 5) 교체 가능한 모듈 구조
- : 타 블록체인 경우, "합의 프로토콜" 등을 바꾸기 위해서, "하드포크"를 하곤 하는데...
- : 하레패 경우, 필요에 따라 교체 가능. (예 : SOLO, Kafka, BFT, Raft, ... )
- 6) 멀티 블록체인 지원 : channel 단위로 여러게 가능.
- 네트워크 구조
- client-node : transaction 및 proposal 제출
- peer-node(endorser,committer) : 선실행 보증 및 최종 반영.
- orderer-node : 합의 프로토콜 처리
- MSP : 신원확인(node identity) 및 네트워크 권한을 표식하는 자격증명 발급.
- 블록체인 구성
- world-state
- : 글로벌 현재상태의 정보.
- : Version으로 관리되는 Key-Value 구조. (transaction이 발생하면서, 특정 Key의 Value가 바뀌고~ Version기록 됨)
- : 즉, (transaction이 접근하는) Key와 그에대한 현재 Value 및 그동안의 Version.
- ledger
- : 전체 transaction 히스토리를 hash-chain 형태로 저장함.
- : 하나의 block은 여러게의 transaction으로 구성됨. (block크기 == transaction갯수. 조절 가능.)
- world-state
- 거래(transaction) 처리방식
- 타 블록체인 시스템
- : ORDER(순서화) -> EXECUTE(실행)
- : 예) "참가자들이 transaction발생" -> "채굴자들이 block에 transaction순서정함" -> "전체노드에서 block실행"
- : 모두 동일한 block을 Deterministic한 Solidity 프로그램으로, 순차적 처리를 하는식... (비효율적)
- 하이퍼레저 패브릭
- : EXECUTE(실행) -> ORDER(순서화) -> VALIDATE&COMMIT(검증&반영)
- : 예) "client서 transaction발생" -> "endoser서 보증실행" -> "orderer서 순서화" -> "committer서 검증 및 반영)
- : 보증실행은 '별도의 자료구조'(Read-Set,Write-Set)으로 리턴 함. (world-state의 특정 K:Ver의 V를 R/W함)
- : 보증실행 결과취합에서, 비결정적으로 값이 다를수있고~ 이는 client에서 정책적으로 결정하면 됨.
- : (시스템 timestamp를 찍는 chaincode은 -> 각기 다른 보증실행 값을 -> 취합하여 평균값으로 결정!)
- : 순서화는 "transaction과 + 그 실행 결과값"을 가지고, block에 '순서화 합의'하는 consensus!이다.
- : 각자가 받은 block을 Non-Deterministic한 프로그램으로, 병렬적 처리를 할 수 있는 구조. (각 단계가 독립적)
- 타 블록체인 시스템
- MSP 구조
- PKI 기반구조
- RootCA : 인증서를 발행하는 기관. (예 : 금융결제원 등)
- 인증서 : 어떤 public-key가 특정 사용자의 신원(identity)의 것이 맞다는 것을 공인된 문서로 인증 정리한 것.
- 하레패의 PKI 구성
- ECA(Enrollment CA)
- : '등록된 참여자'가 맞다는 인증서를 발행 하는 곳. (이 인증서로 참여한것이 맞다는 것을 증명)
- : 참가자의 신원(identity) 확인후, ECert를 발급. (public-key 및 private-key 생성)
- : 신원확인은 RA(Registretion Authority)에게 위임할수있음.
- TCA(Transaction CA)
- : 참가자가 매번 ECert를 기반으로 transaction을 이르키면, 그 활동이 모니터링되니~ 사용하지 않음.
- : 따라서, transaction 전용의 인증서 여러게를 발행 하는곳. (ECert에 근거하여, 충분한 TCert를 발급.)
- : 기밀성 유지를 위해서, 매 transaction 마다~ 다른 인증서를 사용할수있음.
- : 모든 transaction에 TCert를 기반으로 서명을 하게되고, 결과적으로 해당 참가자 신원까지 인증됨.
- : 당연히, TCert <-> ECert 간의 상관관계는 추론못하도록 해야 함.
- TLS CA
- 참가자들간 '보안통신' 용도의 인증서를 발행하는 곳.
- ECA(Enrollment CA)
- PKI 기반구조
- 거래(transaction) 유형
- 거래(transaction) : 블록체인에 chaincode를 설치하고, chaincode 실행을 위해 호출하는 동작.
- 유형
- deploy transaction : chaincode 및 보증정책을 설치함.
- invoke transaction : chaincode의 특정 함수를 호출함.
- 거래(transaction) 처리과정
- 1) endording 단계 : ...
- 보증정책 예시
- ...
- T1,T2,T3,T4,T5 으로 순서화된 block을 처리하는 과정에서, 동일한 Key에 R/W가 충돌하면~
- 순서에 따라 invalid transaction은 반영되지 않고 나가리 된다.
- (??? 나가리된 invalid transaction은 다시 도돌리 됨 ???) -> (물론이지, 다음 block에서 처리되지)
- (아마도 다음 block에서도 순서가 밀여서... 계속 지연됨을 방지하기 위해! priority 관리가 되겠지?)
- 보증정책 예시
- 2) ordering 단계 : transaction을 block에 순서화 합의하는 consensus.
- SOLO : 1개의 node만으로 구성. (테스트 개발용)
- Kafka : 2f+1개 이상의 node로 구성하여, f개의 node가 Crash Fault되어도, Tolerance을 가짐.
- PBFT : 3f+1개 이상의 node로 구성하여, f개의 node가 Byzantine Fault되어도, Tolerance을 가짐.
- Raft : ...
- 3) committing 단계 : ..
- 1) endording 단계 : ...
-끝-
'IT 서적 & 강좌' 카테고리의 다른 글
[웨비나] AWS AI/ML (0) | 2020.04.30 |
---|---|
[코테] 문제풀이 (0) | 2019.11.06 |
[강좌] IBM DevDay 2018 (0) | 2019.11.04 |
[서적] 하이퍼레저 패브릭으로 배우는 블록체인 (0) | 2019.09.14 |
[강좌] 박승철의 정보통신과블록체인 : 리플 (0) | 2019.09.14 |