Hyperledger Fabric 백서 v1.1.0-rc1 한글 요약 (Chapter 4)

in #kr7 years ago (edited)

원본: http://hyperledger-fabric.readthedocs.io/en/v1.1.0-rc1/

Chapter 4. Introduction

What is a Blockchain?

A Distributed Ledger(분산 원장)

블록체인 네트워크의 핵심은 분산 원장이다.
분산 원장은 블록체인 네트워크상에서 이루어지는 모든 트랜잭션(Transaction)들을 기록해 놓은 것이다.

  • Decentralized: 다수의 네트워크 참여자(Participant)들은 원장을 복사하여 가지고있음
  • Collaborate: 네트워크 참여자들은 블록체인 네트워크의 유지를 위해 서로 협력
  • Append-only: 트랜잭션이 한 번 원장에 기록되면 수정 불가능

Smart Contracts(스마트 계약)

스마트 계약은 원장에 대한 접근제어를 뜻한다.

  • 업데이트되는 정보의 일관성 유지
  • 원장에 대한 모든 기능(Transacting, Querying 등) 제공

스마트 계약으로 참여자간의 트랜잭션이 자동으로 실행되도록 할 수 있다.

Consensus(합의)

합의는 네트워크 상에서 원장 트랜잭션들을 동기화 시키는 절차이다.

  • 적법한 참여자(Appropriate Participant)가 승인한 트랜잭션만 원장에 추가됨
  • 참여자들의 원장은 모두 같은 트랜잭션에 대하여 동일 순서로 업데이트됨

Why is a Blockchain useful?

Today's Systems of Record

  • Expensive: 중앙집중화된 데이터베이스 필요 -> 비싼 비용을 들여 보안 강화 필요
  • Inefficient: 각 참여자들이 원장을 각각 저장 -> 매 거래가 일어날 때마다 트랜잭션 생성자부터 일련의 과정을 모두 검증해야 함 -> 비효율
  • Vulnerable: 원장은 언제나 해킹과 조작 위협을 가지고 있음

The Blockchain Difference

  • Consensus: 모든 참여자들이 원장을 복사하여 공유 -> 중앙집중화 데이터베이스 불필요 -> 비용 절감
  • Provenance: 트랜잭션은 최초 생성자가 명확 -> 트랜잭션 검증 비용 감소
  • Immutability: 원장 내용은 수정/삭제 불가능 -> 해킹 위협으로부터 안전

이전까지는 Private 프로그램으로 Private 원장을 관리했다면,
블록체인 시스템에서는 shared 프로그램으로 shared 원장을 관리한다.

What is Hyperledger Fabric?

  • 리눅스 재단(Linux Foundation)이 2015년 Hyperledger를 설립
  • 커뮤니티 프로세스를 통하여 공동/공개 개발 후 시간이 지나면 주요 표준을 채택하는 방식
  • Hyperledger Fabric은 Hyperledger 프로젝트 중 하나임
  • 기존 블록체인 시스템과는 다르게 private, permissioned 블록체인을 표방하기 때문에 네트워크 보호와 트랜잭션 검증을 위해 PoW 같은 작업을 할 필요가 없음
  • Membership Service Provider(MSP)에서 등록한 사용자만 네트워크에 참가 가능함
  • 채널(Channel)을 통하여 민감한 원장 정보를 공개하지 않고 이해 당사자끼리만 공유 가능함

Shared Ledger

Hyperledger Fabric에서 원장은 world state와 transaction log 로 구분됨

  • World state: 특정 시점에서 원장의 상태. 즉, 원장 데이터베이스. 기본으로 LevelDB 사용(key-value 모델 NoSQL DB)
  • Transaction Log: 현재 world state 값을 만들어 낸 모든 트랜잭션의 기록. 즉, world state의 히스토리 로그

Smart Contracts

  • Hyperledger Fabric에서는 체인코드(Chaincode)로 스마트 계약을 작성
  • 블록체인 외부 어플리케이션이 원장과 상호작용해야 할 때 수행됨
  • 현재 체인코드는 Go와 Java 언어로 개발 가능

Privacy

  • 채널을 이용하여 민감 정보들은 이해 당사자끼리만 공유 가능

Consensus

  • 서로 다른 참여 그룹에서 각각 트랜잭션을 생성했을 때, 원장에는 트랜잭션 순서대로 기록되어야 함
  • 따라서 거래 순서 설정 기능과 불량 거래(실수 또는 악의적 의도로 생성)를 거부하는 기능 필요
  • Hyperledger Fabric에서는 관리자(네트워크 시작자)가 사용할 합의 알고리즘을 선택할 수 있음
  • SOLO, Kafka 등 사용 가능(SBFT는 곧 추가됨)