하이퍼레저 패브릭 구조 정리
참고 : 하이퍼레적 공식문서의 Key Concept을 참고
https://hyperledger-fabric.readthedocs.io/
※ 추가로, 기본적인 내용은 설명을 생략했습니다.
1) Ledger의 사실 및 상태
원장에 '비즈니스 객체'를 저장한다는 말은 데이터를 저장한는 것이 아니라 현재 상태에 대한 사실과 현재 상태로 이어진 트랜잭션 이력에 대한 사실을 기록한다는 것임
'비즈니스 객체'의 현재 상태에 대한 사실은 변경될 수 있지만(외부 데이터 저장소에서의 변경은 가능하지만?),
이에 대한 사실의 기록은 변경할 수가없음(블록체인 원장에 기록된 트랜잭션이력의 사실은 변경불가능)
* 비즈니스 객체 - 데이터 액세스 및 비즈니스 논리 계층과 함께 작동하여 데이터를 전송하는 다중 계층
소프트웨어 응용 프로그램 내의 엔터티
2) Ledger
World State - 데이터들의 현재 값의 집합을 Key-Value값으로 저장하고있음
World State를 통해서 트랜잭션 로그를 순회하여 계산하지 않고 상태의 현재 값에 빠르고 직접적으로 액세스함
Blockchain - 모든 변경 사항을 기록하는 트랜잭션 로그
블록체인 내부의 추가된 블록안에 트랜잭션이 수집되는데 World State의 결과의 변경 이력을 이해할 수 있음
위 그림에서 블록체인 B는 World State인 W를 결정함 / W는 블록체인 B에서 파생된다고 할 수 있음
3) World State
World State는 특정 비즈니스 개체에 대한 일련의 사실을 Key-Value형태로 기록
Application은 스마트 컨트랙트의 API를 사용해서 상태를 가져 오기, 넣기 , 삭제를 호출 할 수 있음
World-State는 DB로 구현되고 / 하이퍼래저 패브릭 네트워크의 각 채널마다 하나의 논리적 원장이 있다고 생각하면 도움이됨 / Peer는 처리된 블록에 포함 된 각 유효한 트랜잭션에 대해 원장의 world state에 최신 값을 커밋(commit).
채널의 모든 Peer는 자체적으로 원장의 사본을 유지 관리합니다. 이 사본은 consensus(합의) 라는 작업을 통해 다른 모든 피어의 사본과 일관성을 유지
State에는 Version이 있으며 위의 다이어그램에서 상태 CAR1 및 CAR2는 시작 버전인 0에 있음. 버전 번호는 Hyperledger Fabric에서 내부용이며 상태가 변경될 때마다 증가
현재 상태가 보증 시점의 버전과 일치하는지 확인하기 위해 상태가 업데이트될 때마다 버전확인
추가로, 원장이 처음 생성될 때 World State는 비어 있음 /
World State에 대한 유효한 변경을 나타내는
모든 트랜잭션이 블록체인에 기록되기 때문에 World State는 언제든지 블록체인에서 재생성될 수 있음
- World State DB옵션 -
LevelDB는 기본값이며 원장 상태가 단순한 키-값 쌍일 때 특히 적합합니다.
LevelDB 데이터베이스는 피어 노드와 함께 위치하며 동일한 운영 체제 프로세스에 포함됩니다.
CouchDB는 비즈니스 트랜잭션에서 흔히 볼 수 있는 풍부한 쿼리와 업데이트를 지원하기 때문에 원장 상태가 JSON 문서로 구조화될 때 특히 적절한 선택입니다
4) 블록체인 구조
생략
Block MetaData
이 섹션에는 네트워크 노드에서 블록을 확인하는 데 사용되는 블록 생성자의 인증서 및 서명이 포함
그 후, 블록 커미터는 상태 포크를 감지하기 위해 모든 트랜잭션에 대한 유효/무효 표시기를 블록 메타데이터에 있는 비트맵에 추가하고 해당 블록까지 누적 상태 업데이트의 해시를 추가
5) 샘플원장 예제
4개의 자산이 생성된 후 원장의 모습
W에는 ASSET1, ASSET2, ASSET3 및 ASSET4에 해당하는 상태가 포함 /
Blockchain인 B 에는 0과 1이라는 두 개의 블록이 포함 /
Block0은 제네시스 블록으로 초기 생성 블록, Block1과 관련된 트랜잭션은 포함안함 /
Block1에는 T1, T2, T3, T4라는 4개의 트랜잭션이 포함 /
'보안 및 블록체인 > 블록체인' 카테고리의 다른 글
하이퍼레저 패브릭(Hyperledger Fabric) CA, MSP #3 - Key Concept (0) | 2022.05.10 |
---|---|
하이퍼레저 패브릭(Hyperledger Fabric) 용어 정리 #0 - Key Concept (0) | 2022.05.09 |
하이퍼레저 패브릭(Hyperledger Fabric) 구성 정리 Peer #1 - Key Concept (2) | 2022.05.06 |
솔리디티(Solidity) 기본 언어/문법 정리 #3, 이더리움 Dapp개발을 위해 - [블록체인] (0) | 2022.01.21 |
블록체인 채굴 / 작업 증명 알고리즘 원리 및 개념정리- [블록체인] (0) | 2022.01.18 |