Hyperledger (작성중)
Hyperledger란?
스마트 컨트랙트(smart contract)을 구현할 수 있는 오픈소스 기반의 프라이빗 블록체인 프로젝트
암호화폐보다는 데이터베이스 관점에서 접근
공유 데이터베이스의 새로운 형태 로써 기업형 비즈니스 환경에서 사용할 수 있도록 블록체인 솔루션을 발전시킨 것
- 2015년, Linux Foundation
- IBM, Inter, SAP 등 약 230개의 기업에서 사용
- 기업 친화적 license (Apache 2.0 license)
- 모듈화된 디자인, 상호운용성, 보안, API제공
Distributed and Shared Database
공유 데이터베이스에서 고려할 사항
- 신뢰 : 데이터에 접근할 수 있는 사용자에 대한 신뢰
- 충돌 해결 : 동일한 데이터를 수정하는 충돌에 대한 해결
- 권한 및 접근 관리 : 접근할 수 있는 사용자와 권한
Public Blockchain
기업형 블록체인에 적합하지 않은 기존의 Public Blockchain
- 보안 (Confidentiality and privacy)
- 공개된 블록체인, 공개된 데이터
- 확장성(Scalability)
- 참여하는 모든 노드가 트랜잭션을 처리
- 지속 불가능한 합의 알고리즘(Unsustainable consensus algorithm)
- PoW 알고리즘이 불필요하게 연산 리소스를 낭비함
- 거버넌스 부족(Lack of governance)
- 완전한 탈중앙화 시스템
Private Blockchain
- Trust building
- 서로 다른 기업들 간의 비즈니스에서의 신뢰 구축 가능
- Transparency, Security, Privacy
- 투명성, 보안, 프라이버시
- Programmable business logic
- 스마트 컨트랙트 실행 가능, 소프트웨어적 자동화
- ex. 과거에는 생각하지 못했던 기능을 전자적으로 구현
- 스마트 컨트랙트 실행 가능, 소프트웨어적 자동화
- Traceability
- 모든 기록을 무결성을 가지면서 추적 가능
- Tradability
- 자산들의 거래를 가능하게 함
Hyperledger 구성
프레임워크와 도구
- Frameworks : PABRIC, INDY 등…
- Tools : CALIPER, CELLO 등…
Hyperledger Fabric
- linux foundation open source project
Peer
블록체인의 노드와 비슷한 개념
- ledger와 chaincode(smart contract)를 실행하는 참여자
- 관리자나 응용프로그램이 액세스할 수 있도록 API제공
- peer의 물리적 위치는 제한이 없음(cloud, data center, local machine)
- peer는 개념적으로 특정 채널에 속해있음
Orderer peer
- consensus 담당 peer
채널내에서 여러개의 트랜잭션이 발생할 때 모든 peer들의 ledger가 동일하게 유지되도록 하는 역할
주로 쓰기작업에서 요청들의 순서를 결정한 후 각 peer들에게 전달
Application
- 응용프로그램은 peer에 API형태로 접근, ledger에 접근하거나 chaincode를 실행
- 블록체인 외부에 존재 (Peer, ledger 및 chaincode는 블록체인 내부)
- Ledger query : read 기능
- peer와 연결
- Ledger의 정보를 요청하는 chaincode 호출
- peer는 chaincode를 통해서 응용프로그램이 원하는 결과 반환
- Ledger update : write 기능
- orderer peer에게 요청
- orderer는 consensus작업 수행 후 쓰기 작업 결과 반환
Channel
블록체인 네트워크 하부에 존재하는 일종의 sub 네트워크
각 채널마다 별도의 Ledger운영 가능 -> 기업내의 업무별 블록체인 분리 (ex. 영업용, 개발용)
Ledger
Fact와 State를 기록하는 원장
- Fact : 블록체인에서 발생한 트랜잭션 정보
- State : 트랜잭션을 통해서 변경된 블록체인 정보 (key, value로 구성되는 데이터베이스 사용)
블록체인의 트랜잭션 정보가 데이터베이스의 상태를 결정
이론적으로 데이터베이스가 없어도 블록체인으로부터 복원 가능
Operation
- Query (read)
- Update (create, update, delete) : Orderer를 거쳐서 수행
Ledger: Blockchain + World State
- Blockchain (facts) : 트랜잭션들의 대한 로그, 변경 불가능
- World state (states) : key-value 쌍 데이터베이스, 상태에 따라 변경됨
World State
Key-Value를 저장하는 DB형태
동일한 key에 대해서 동시에 쓰기작업이 발생할 때 쓰기 시점의 version 확인이 필요함 (concurrent update 방지)
version : 각 key-value별 버전 유지, value가 업데이트 될 때마다 증가 (일종의 counter)
MVCC기법 : 다중 트랜잭션의 상호간섭 작용으로부터 Database를 보호
- LevelDB : simple key-value pairs
- couchDB : LevelDB보다 기능이 풍부하고 Json데이터 지원