Hyperledger Fabric SDK

Hyperledger Fabric은 다양한 프로그래밍 언어를 지원하는 여러 SDK를 제공합니다. 

Node.js와 Java에는 공식적으로 출시 된 SDK가 두 가지 있습니다.

또한 공식적으로 아직 출시되지 않은 Python, Go 및 REST 용 SDK가 세 가지 더 있지만, 다음과 같이 다운로드하여 테스트 할 수 있습니다.


peer command


Description

이 peer 명령에는 다섯 가지 하위 부속 명령이 있습니다. 각 부속 명령은 관리자가 피어와 관련된 특정 작업 세트를 수행 할 수 있게 합니다. 예를 들어, peer channel 하위 명령을 사용하여 피어를 채널에 조인하거나 peer chaincode 명령을 사용하여 스마트 계약 체인코드를 피어에 배포할 수 있습니다 .

Syntax

peer 명령은 내부에 다섯 가지 하위 명령이 있습니다 :

peer chaincode [option] [flags]
peer channel   [option] [flags]
peer logging   [option] [flags]
peer node      [option] [flags]
peer version   [option] [flags]

각 부속 명령에는 사용 가능한 다른 옵션이 있으며 이것들은 전용 주제로 설명됩니다. 간결함을 위해, 우리는 단순히 명령 (peer), 하위 명령 (channel), 또는 하위 명령 옵션(fetch)을 명령으로 참조하기도 합니다.

하위 명령을 옵션없이 지정하면 아래의 --help 플래그에 설명된대로 상위 수준의 도움말 텍스트가 반환 됩니다.

Flags

각 peer 하위 명령에는 연관된 특정 플래그 세트가 있으며, 그 중 많은 플래그는 모든 하위 명령 옵션에서 사용될 수 있기 때문에 글로벌(global) 로 지정 됩니다. 이 플래그는 관련 peer 하위 명령으로 설명됩니다 .

최상위 레벨 peer 명령에는 다음과 같은 플래그가 있습니다.

  • --help 모든 peer 명령에 대한 간략한 도움말 텍스트를 얻는 데--help 플래그를 사용하십시오. --help 플래그는 매우 유용합니다 - 명령 도움말, 하위 명령에 도움, 심지어 옵션의 도움을 받을 수 있습니다. 예를 들어
peer --help
peer channel --help
peer channel list --help

자세한 내용은 개별 peer 하위 명령을 참조하십시오 .

  • --logging-level <string> 이 플래그는 시작할 때 피어의 로깅 수준을 설정합니다. <string>에는 여섯 개의 가능한 값이 있습니다 : debuginfonoticewarningerror, 그리고 critical. logging-level이 명시적으로 지정되지 않은 경우, CORE_LOGGING_LEVEL 환경 변수가 설정되면 이를 사용합니다. CORE_LOGGING_LEVEL이 설정되지 않은 경우에는 sampleconfig/core.yaml 파일을 사용하여 피어에 대한 로깅 수준을 결정합니다. peer logging getlevel <component-name>을 실행하여 피어의 특정 구성 요소에 대한 현재 로깅 수준을 찾을 수 있습니다 .
  • --version 이 플래그를 사용하여 피어가 어떻게 작성되었는지에 대한 자세한 정보를 표시하십시오. 이 플래그는 peer 하위 명령 또는 하위 옵션에 적용 할 수 없습니다.

Usage

다음은 peer 명령에서 사용 가능한 여러 플래그를 사용하는 몇 가지 예제 입니다.

  • peer channel join 명령에 --help 플래그 사용.
peer channel join --help

Joins the peer to a channel.

Usage:
  peer channel join [flags]

Flags:
  -b, --blockpath string   Path to file containing genesis block

Global Flags:
      --cafile string                       Path to file containing PEM-encoded trusted certificate(s) for the ordering endpoint
      --certfile string                     Path to file containing PEM-encoded X509 public key to use for mutual TLS communication with the orderer endpoint
      --clientauth                          Use mutual TLS when communicating with the orderer endpoint
      --keyfile string                      Path to file containing PEM-encoded private key to use for mutual TLS communication with the orderer endpoint
      --logging-level string                Default logging level and overrides, see core.yaml for full syntax
  -o, --orderer string                      Ordering service endpoint
      --ordererTLSHostnameOverride string   The hostname override to use when validating the TLS connection to the orderer.
      --tls                                 Use TLS when communicating with the orderer endpoint
  -v, --version                             Display current version of fabric peer server

여기에는 peer channel join 명령에 대한 간략한 도움말 구문이 표시됩니다.

  • peer 명령에 --version 플래그 사용.
peer --version

peer:
 Version: 1.1.0-alpha
 Go version: go1.9.2
 OS/Arch: linux/amd64
 Experimental features: false
 Chaincode:
  Base Image Version: 0.4.5
  Base Docker Namespace: hyperledger
  Base Docker Label: org.hyperledger.fabric
  Docker Namespace: hyperledger

이것은 이 피어가 GOLANG 1.9.2.로 컴파일된 Hyperledger Fabric version 1.1.0의 알파를 사용하여 제작되었음을 보여줍니다. AMD64 호환 명령 세트가 있는 Linux 운영체제에서 사용할 수 있습니다.



출처 : http://hyperledger-fabric.readthedocs.io/en/release-1.1/

API 문서

Hyperledger Fabric의 Golang API에 대한 문서는 godoc 사이트에서 찾을 수 있습니다 Fabric .

이러한 API를 사용하여 개발을 계획하고 있다면 지금 해당 링크를 북마크하세요.

바이너리 및 고정 이미지 설치

Hyperledger Fabric 바이너리 용 실제 설치 프로그램을 개발하는 동안 플랫폼 고유 바이너리를 시스템에 다운로드하는 스크립트를 제공합니다.

스크립트는 Docker 이미지를 로컬 레지스트리에 다운로드합니다.

Install Prerequisites

시작하기 전에 아직 수행하지 않은 경우, 블록 체인 응용 프로그램을 개발하거나 Hyperledger Fabric을 운영 할 플랫폼에 모든 필수 구성 요소가 설치되어 있는지 확인하십시오 .



출처 : https://hyperledger-fabric.readthedocs.io/en/release-1.1/getting_started.html#install-prerequisites

Hyperledger Fabric 샘플

* Windows에서 실행중인 경우 Docker Quickstart Terminal을 사용해서 terminal 명령어들을 입력하고 할 것 입니다. 이전에 설치하지 않은 경우 앞선 전제 조전을 방문하십시오.
Windows 7 또는 macOS에서 Docker Toolbox를 사용하는 경우 샘플을 설치하고 실행할 때 C:\Users(Windows 7) 또는 /Users(macOS) 위치를 사용해야합니다 .
Mac용 Docker를 사용하고 있다면, 당신은 /Users/Volumes/private, 또는 /tmp 위치를 사용해야합니다 . 다른 위치를 사용하려면 파일 공유에 대한 Docker 설명서를 참조하십시오 .
Docker for Windows를 사용하는 경우 공유 드라이브에 대한 Docker 설명서를 참조하고 공유 드라이브 중 하나에 위치를 사용하십시오.

Hyperledger Fabric 샘플 애플리케이션 저장소를 배치하고 터미널 창에서 열어 볼 위치를 기기에서 결정합니다. 그런 다음, 다음 명령을 실행하십시오.

git clone -b master https://github.com/hyperledger/fabric-samples.git
cd fabric-samples
git checkout {TAG}
샘플이 아래에서 다운로드하는 Fabric 바이너리 버전과 호환되는지 확인하려면 {TAG}Fabric 버전과 일치 하는 샘플 ( 예 : v1.1.0)을 확인하십시오. 모든 fabric-samples 태그의 목록을 보려면 "git tag"명령을 사용하십시오.

플랫폼 별 바이너리 다운로드 (Download Platform-specific Binaries)

다음으로 Hyperledger Fabric 플랫폼 별 바이너리를 설치합니다. 이 프로세스는 위의 Hyperledger 패브릭 샘플을 보완하도록 설계되었지만 독립적으로 사용할 수 있습니다. 위의 샘플을 설치하지 않으면 플랫폼 별 바이너리의 내용을 추출 할 디렉토리를 간단히 작성하고 입력하십시오.

플랫폼 특정 바이너리를 추출 할 디렉토리에서 다음 명령을 실행하십시오.

curl -sSL https://goo.gl/6wtTN5 | bash -s 1.1.0
* 위의 curl 명령을 실행하는 중에 오류가 발생하면 리디렉션이나 지원되지 않는 환경을 처리하지 못하는 너무 오래된 curl 버전이 있을 수 있습니다.
최신 버전의 curl을 찾고 올바른 환경을 얻을 수 있는 곳에 대한 추가 정보는 위의 전제 조건 탭을 참고하십시오 .
또는 축소되지 않은 URL을 https://github.com/hyperledger/fabric/blob/master/scripts/bootstrap.sh로 대체 할 수 있습니다.
Hyperledger Fabric의 게시 된 버전에 대해 위의 명령을 사용할 수 있습니다. '1.1.0'을 설치하려는 버전의 버전 식별자로 바꾸기 만하면됩니다.

위의 명령은 네트워크를 설정하고 위에 작성한 복제 된 레포에 배치해야하는 모든 플랫폼 관련 바이너리를 다운로드하고 추출하는 bash 스크립트를 다운로드하고 실행합니다. 4 개의 플랫폼 별 바이너리를 검색합니다.

  • cryptogen,
  • configtxgen,
  • configtxlator,
  • peer
  • orderer and
  • fabric-ca-client

그리고 bin현재 작업중인 디렉토리 의 하위 디렉토리에 저장합니다.

PATH 환경 변수에 추가하여 각 바이너리의 경로를 완전하게 한정하지 않고 선택할 수 있습니다. 예 :

export PATH = <다운로드 위치 경로> / bin : $ PATH

마지막으로, 스크립트는 Docker Hub 에서 로컬 Docker 레지스트리로 Hyperledger Fabric 도커 이미지를 다운로드하고 'latest' 태그를 지정합니다.

이 스크립트는 결론에 따라 설치된 Docker 이미지를 나열합니다.

각 이미지의 이름을보십시오. 이들은 궁극적으로 Hyperledger Fabric 네트워크를 구성하게 될 구성 요소입니다. 동일한 이미지 ID의 인스턴스가 두 개 있는데, 하나는 "x86_64-1.xx"이고 다른 하나는 "latest"로 태그가 붙어있는 것을 볼 수 있습니다.

다른 아키텍처에서는 x86_64가 아키텍처를 식별하는 문자열로 바뀝니다.

 

 

 

 

출처 : https://hyperledger-fabric.readthedocs.io/en/release-1.1/samples.html

전제 조건

cURL 설치

cURL 도구가 아직 설치되지 않았거나 문서에서 curl 명령을 실행하는 중에 오류가 발생하는 경우 최신 버전의 cURL 도구를 다운로드하십시오.

* Windows 사용자 인 경우 아래 Windows 관련 추가 정보를 참조하십시오.

도커와 도커 작성

Hyperledger Fabric을 운영하거나 개발할 플랫폼에 다음이 설치되어 있어야합니다.

  • MacOSX, *nix 또는 Windows 10 : Docker Docker 버전 17.06.2-ce 이상이 필요합니다.
  • 이전 버전의 Windows : Docker Toolbox - again, Docker 버전 Docker 17.06.2-ce 이상이 필요합니다.

참고 : docker 설치

curl -fsSL https://get.docker.com/ | sudo sh

Terminal Prompt에서 다음 명령을 사용하여 설치 한 Docker의 버전을 확인할 수 있습니다.

docker --version
Mac 또는 Windows 용 Docker 또는 Docker Toolbox를 설치하면 Docker Compose도 설치됩니다. Docker를 이미 설치했다면 Docker Compose 버전 1.14.0 이상이 설치되어 있는지 확인해야합니다. 그렇지 않은 경우 Docker의 최신 버전을 설치하는 것이 좋습니다.

Terminal Prompt에서 다음 명령을 사용하여 설치 한 Docker Compose의 버전을 확인할 수 있습니다.

참고 : docker-compose 설치 (https://www.digitalocean.com/community/tutorials/how-to-install-docker-compose-on-ubuntu-16-04)

docker-compose --version

Go 프로그래밍 언어

Hyperledger Fabirc은 많은 구성 요소에 대해 Go programming 언어 1.9.x를 사용합니다.

* Go 버전 1.8.x를 사용한 빌드는 지원되지 않습니다.
Go -version 1.9.x

Go에 체인 코드 프로그램을 작성하게되면 설정해야 할 두 가지 환경 변수가 있습니다. Linux ~/.bashrc에서 bash쉘을 사용하는 경우 개인 파일과 같은 적절한 시작 파일에 이러한 설정을 지정하여 영구적으로 정할 수 있습니다.

먼저, 다운로드 한 Fabric code base가 포함 된 Go 작업 영역을 가리키 도록 환경 변수 GOPATH를 다음과 같이 설정해야합니다 .

export GOPATH=$HOME/go
GOPATH 변수를 설정해야합니다.
Linux에서 Go의 GOPATH 변수는 colon으로 구분 된 디렉토리 목록이 될 수 있으며 설정되지 않은 경우$HOME/go의 기본값을 사용합니다. 현재 Fabric 빌드 프레임워크는 여전히 해당 변수를 설정하고 내보내도록 요구합니다. 이동 작업 공간에 대한 단일 디렉토리 이름만 포함해야합니다. 이 제한 사항은 이후 릴리스에서 제거 될 수 있습니다.

둘째로, 적절한 시작 파일에서 명령 검색 경로를 확장하여 Go bin디렉토리 를 포함시켜야합니다 ( 예 bash: Linux에서 의 다음 예제) .

export PATH = $ PATH : $ GOPATH / bin

이 디렉토리는 새로운 Go 작업 공간 설치에 존재하지 않을 수 있지만 나중에 빌드 시스템의 다른 부분에서 사용되는 Go 실행 파일 수가 적은 Fabric 빌드 시스템으로 채워집니다. 따라서 현재 디렉토리가없는 경우에도 위와 같이 쉘 검색 경로를 확장하십시오.

Node.js 런타임 및 NPM

Node.js 용 Hyperledger Fabric SDK를 활용하는 Hyperledger 패브릭 용 응용 프로그램을 개발하려면 Node.js 버전 8.9.x가 설치되어 있어야합니다.

Node.js 버전 9.x는 현재 지원되지 않습니다.
* Node.js - 버전 8.9.x 이상
Node.js를 설치하면 NPM도 설치되지만 설치된 NPM의 버전을 확인하는 것이 좋습니다. npm다음 명령을 사용 하여 도구를 업그레이드 할 수 있습니다 .
npm install npm@5.6.0 -g

파이썬

*다음은 우분투 16.04 사용자에게만 적용됩니다.

기본적으로 Ubuntu 16.04는 Python 3.5.1이 python3바이너리 로 설치되어 제공됩니다 . Fabric Node.js SDK는 npm install작업이 성공적으로 완료 될 수 있도록 Python 2.7이 요구됩니다. 다음 명령을 사용하여 2.7 버전을 검색하십시오.

sudo apt-get install python

버전 확인 :

python --version

Windows 관련 추가 정보

Windows 7에서 개발중인 경우 Git Bash 를 사용하는 Docker Quickstart 터미널에서 작업 하고 내장 Windows 셸에 대한 더 나은 대안을 제공 할 수 있습니다.

그러나 경험상 제한된 기능으로 인해 개발 환경이 열악한 것으로 나타났습니다. Getting Started 와 같은 Docker 기반 시나리오를 실행하는 것이 적합 하지만, makeand docker 명령 과 관련된 작업에는 어려움이있을 수 있습니다 .

Windows 10에서는 기본 Docker 배포를 사용해야하며 Windows PowerShell을 사용할 수 있습니다. 그러나 Download Platform-specific Binaries 명령이 성공하려면 여전히 uname명령을 사용할 수 있어야합니다 . Git의 일부로 얻을 수 있지만 64 비트 버전 만 지원된다는 점에 유의하십시오.

명령을 실행 하기 전에 git clone명령을 실행하십시오.

git config --global core.autocrlf false
git config --global core.longpaths true

다음 명령을 사용하여 이러한 매개 변수의 설정을 확인할 수 있습니다.

git config --get core.autocrlf
git config --get core.longpaths

이들은 각각 false 와 true여야합니다.

Git 및 Docker Toolbox와 함께 제공 되는curl 명령은 이전 버전이므로 Getting Started에서 사용한 리디렉션을 제대로 처리하지 못합니다 . cURL 다운로드 페이지 에서 최신 버전을 설치하여 사용 하십시오.

또한, Node.js를 사용하기 위해 Visual Studio C ++ 빌드 도구가 필요합니다.이 도구는 무료로 사용할 수 있으며 다음 명령을 사용하여 설치할 수 있습니다.

npm install --global windows-build-tools

자세한 내용은 NPM windows-build-tools 페이지 를 참조하십시오.

이 작업이 완료되면 다음 명령을 사용하여 NPM GRPC 모듈도 설치해야합니다.

npm install --global grpc

이제 시작 환경 샘플 및 자습서를 통해 환경을 준비해야합니다.


출처 : https://hyperledger-fabric.readthedocs.io/en/release-1.1/prereqs.html



Introduction

소개

Hyperledger Fabric은 높은 수준의 비밀성, 회복력, 유연성과 확장성을 가진 모듈러한 아키텍쳐가 기반이 된 분산 원장 플랫폼입니다.

각기 다른 컴포넌트의 pluggable 구현방식과 경제 생태계 속에 존재하는 복잡함에 적응하기 위해서 디자인 되었습니다.

Hyperledger Fabric은 다른 블록체인 솔루션과 차별화 되는 독특하게 유연하고 확장 가능한 아키텍쳐를 사용자에게 전달합니다.

Enterprise 블록체인의 미래를 위한 계획에서 필요한 것은 완벽하게 확인가능하고 오픈소스 아키텍쳐로 만들어지는 것입니다.

이러한 부분에서 Hyperledger Fabric은 사용자의 시작 지점입니다.

 

Hyperledger Fabric은 처음 사용자에게 남은 introduction 섹션을 훑어보며

블록체인이 어떠한 구성요소이 존재하며 이들이 어떻게 동작하는지에 대해 숙지하는 것을 추천합니다.

 

이미 이해하고 있거나 이해하셨다면 Getting Started로 이동하셔서 데모, 기술적 특징, API와 같은 것을 찾으시길 바랍니다.

 

 

블록체인이란 무엇인가?

분산원장

블록체인 네트워크의 핵심은 네트워크에서 발생하는 모든 트랜잭션을 기록하는 분산원장 시스템입니다.

블록체인 원장은 분권화된 시스템으로 표현되기도 합니다. 이는 많은 네트워크 참여자 사이에서 시스템 안에서 유지보수하며 쌓인 데이터를 복제하기 때문입니다.

아래의 사진은 분권과 공동 작업이 실제 기업환경에서 트랜잭션되는 재화와 서비스를 보여줄 수 있는 강력한 특징임을 보여줍니다.


분권과 공동 작업에 더하여, 블록체인 내의 데이터는 읽기 전용입니다. 한 번 발생한 트랜잭션을 원장에 기입하면 절때 수정될 수 없다는 점을 보장하기 위해서 암호화 기법을 사용합니다.

이러한 불변성은 정보의 출처를 증명하는 것을 쉽게 만듭니다. 이는 유저가 트랜잭션 발생 이후 데이터가 조작 또는 변동되지 않았다는 것을 증명할 수 있기 때문입니다.

이것이 블록체인이 증명의 시스템으로 표현되는 이유입니다.

스마트 컨트랙트

일관된 데이터 업데이트를 지원하는 것과 모든 원장 기능의 호스팅을 가능하게 하기 위해서 블록체인 네트워크는 원장으로의 접근을 조절할 수 있도록 하는 스마트 컨트랙트를 사용합니다.


스마트 컨트랙트는 정보 보호의 핵심 메커니즘과 네트워크에 간단히 보관할 수 있을 뿐만 아니라 사용자가 특정 관점의 트랜잭션을 자동으로 발생 시킬 수 있도록 합니다.

예를 들자면, 스마트 컨트랙트는 도착 시간에 따라서 배송 비용이 달라지는 규정으로 쓰일 수 있습니다.

두 이해관계 집단이 약관에 동의하고 원장에 쓰여진 후부턴 일정 금액이 상품이 도착하는 순간 전송됩니다.

합의

트랜잭션이 블록체인 참여자로부터 승인 되었을 떄만 원장을 업데이트 하는 것과 원장 스스로 업데이트 하는 것을 보장하기 위해서,

네트워크의 원장들이 일치되도록하는 프로세스를 합의라고 합니다.


이후 스마트 컨트랙트와 합의 알고리즘에 대해서 더욱 많이 배울 예정입니다. 지금은 블록체인이 공유되고 복제된 트랜잭션 시스템이라는 것을 아는 것으로 충분합니다.

이 시스템은 스마트 컨트랙트에 의해 업데이트 되고, 합의라는 협력 프로세스를 통해서 일관되게 일치함을 유지합니다.

 

왜 블록체인이 유용한가요?

오늘날의 기록 시스템

오늘날의 트랜잭션 네트워크는 이전 기업환경에서 유지해온 기록 네트워크에서 근소하게 업데이트된 버전입니다.

비즈니즈 네트워크의 구성원은 서로 트랜잭션을 합니다. 하지만 트랜잭션 기록을 각자 나누어 가지고 있습니다.

그리고 트랜잭션이 되는 모든 것들은 팔리는 순간에 출처를 기록해야만 합니다.

이를 위해 상품을 판 비즈니스 측에서 제품의 소유권을 확인할 수 있도록 항목들의 묶음을 보유하고 있어야 합니다.

이러한 비즈니스 네트워크는 아래와 같습니다.


현대 기술은 이러한 종이 기록과 돌 기록을 하드 드라이브와 클라우드 플랫폼으로 가져왔습니다.

네트워크 참여자들의 신원을 관리하기 위한 통합 시스템은 더 이상 존재하지 않습니다.

출처를 만드는 것 자체가 많은 노동력을 요구하고 트랜잭션 신뢰성을 명확히 하는 것에 오래 걸립니다.

트랜잭션을 직접 손으로 사인하고 트랜잭션을 진행하고, 모든 데이터베이스가 다른 정보를 가지고 있는 것이 결국 모든 것이 잘못되는 점으로 귀결됩니다.

가시성과 신뢰가 확실함에도, 비즈니스 네트워크에 걸치는 기록 시스템을 만드는 프로세스와 정보는 오늘날의 균열있는 접근 방식으로는 불가능합니다.

 

 

Hyperledger Fabric이란 무엇입니까?

Linux Foundation이 산업 전용 블록체인 기술로 2015년에 Hyperledger를 만들어 내었습니다.

하나의 블록체인 Standard라기 보다, 오랜 시간동안 오픈 개발과 핵심 기준 적용을 장려하는 지적 재산권을 가진 공동체 프로세스를 향한 블록체인 기술을 개발하는 방향으로 진행되고 있습니다.

Hyperledger Fabric은 Hyperledger 안에 블록체인 프로젝트 중 하나입니다.

다른 블록체인 기술과 마찬가지로 원장을 가지있고, 스마트 컨트랙트를 사용하며,  참여자들에 의해 Tx를 관리하는 시스템 입니다.

 

Hyperledger가 다른 블록체인과 가지고 있는 차별점은 Private하고 허가가 필요하다는 점입니다.

 

다른 공개 비허가형 시스템은 신원미상의 이용자들에게 네트워크 참여- Tx 검증을 위햔 PoW나 네트워크의 보안을 요구-를 허락하는데 비해

Hyperledger Fabric의 사용자는 신뢰된 MSP(Membership Service Provider)를 통해 사용자를 등록합니다.

 

Hyperledger Fabric은 또한 다양한 추가 옵션을 제공합니다.

원장의 데이터가 다양한 형식으로 보관되고, 합의 메커니즘을 교체 (swap in/out)할 수 있습니다.

또한 다른 방식의 MSP도 지원됩니다.

 

Hyperledger Fabric은 Channel생성 기능을 제공합니다. 만들 수 있습니다.

Channel은 트랜잭션별 각기 다른 분산 원장을 만들 수 있도록 합니다.

이는 특히 몇몇 사용자가 경쟁자이거나 모든 사용이 트랜잭션을 모든 사람들이 알기를 원치않는 네트워크를 위한 중요한 옵션입니다.

한 예로 특정 사용자에게만 할인을 제시하는 경우를 들 수 있습니다.

Channel에 두명의 참여로 형성되, 그 Channel을 위한 원장이 두명의 참여자에게만 복제 됩니다.  

 

원장 공유

Hyperledger Fabric은 'World State'와 'Transaction log' component로 구성된 ledger system 입니다.

각 참여자들은 그들이 속한 Hyperledger Fabric 네트워크의 모든 원장의 복사본을 가지고 있습니다.

World State는 특정시점에 ledger의State 입니다. 이는 원장의 데이터 베이스라고도 볼 수 있습니다.

 

Transaction Log는 현재 World State의 값을 만들어낸 모든 transaction을 기록하고 있습니다.

이는 World State를 위한  '업데이트 내역'이라고 볼 수 있습니다.

World State와 Transaction Log 기록, 이 두개의 컴포넌트를 합쳐서 원장 이라고 합니다.

 

원장에는 World State를 위한 대체 가능한 데이터 저장소가 있습니다.

World State는를 위한 데이터 저장소는 key-value 형태로 저장되는 데이터 베이스가 default 입니다.

Transaction Log는 추가될 필요가 없습니다.

단순히 이는 블록체인 내 원장 데이터베이스의 변경 이전과 이후 기록을 가지고 있습니다.

 

 

스마트 컨트랙트

Hyperledger Fabric의 스마트 컨트랙트는 chaincode로 작성되어 있고 

블록체인 외부에서 Ledger와 상호작용할 필요가 있는 application에 의해 원장이 실행된다. 

 

대부분의 경우에 chaincode는  Ledger의 Database, World State와 상호작용 하고, Transaction log와는 상호작용하지 않습니다.

 

Chaincode 작성을 위해 다양한 프로그래밍 언어를 지원합니다. 

현재는 Go언어와 Java를 지원하고 있으며, 추후 확대 지원할 예정입니다.  더욱 많은 언어를 지원할 계획입니다.

 

 

프라이버시

네트워크에 요구에 따라선 B2B 네트워크 내 참여자들은 공유하는 정보의 양에 대해 매우 민감 할 수 있습니다.

또다른 네트워크에서느 Privacy가 최우선 고려 사항이 아닐수 도 있습니다.

Hyperledger Fabric은 Privacy(Channel 사용)가 주요 운영 요구 사항 일뿐만 아니라 비교적 설정이 유연한 네트워크를 지원합니다.

 

 

합의

Transaction은 ledger에 발생한 순서대로 저장되어야 합니다.

네트워크 내의 다른 Set (Org를 이미하는 것으로 보여짐 - 코멘트: 까칠한마녀) 의 참여자들 사이에서 발생한 Transacton일지라도..

(원문: Transactions must be written to the ledger in the order in which they occur,  even though they might be between different sets of participants within the network. )

이것이 가능하도록 하기 위해서, 트랜잭션의 순서가 설정되어야하고 에러로(또는 악의적으로) 원장에 삽입되는 Bad Transaction을 거부하는 방법을 마련해야합니다.

 

이는 컴퓨터 공학에서 전체적으로 연구가 된 분야입니다.

따라서 이를 달성하기 위한 각자 다른 협정을 가진 다양한 방법도 가지고 있습니다.

예를 들자면, PBFT(Practical Byzantium Fault Tolerance)는 파일들이 문제 발생마저도 서로 확인하여 일치하도록 하는 복제 메커니즘을 가지고 있습니다.

비트 코인의 '순서 정렬'은 모든 프로세스 이후에 따라 구축하는 순서를 정의하는 암호화 퍼즐을 해결하기 위해 컴퓨터 경쟁을 경쟁하는 곳 mining이라는 과정을 통해 발생합니다.

 

Hyperledger Fabric은 네트워크 참여자가가 사용자 간에 관계를 가장 대표할 수 있는 합의 메커니즘을 선택할 수 있도록 설계되었습니다.

프라이버시와 함께, 관계 안에서 고도로 설계된 네트워크에서부터 더욱 Peer-to-Peer한 네트워크까지 포함하는 스펙트럼이 있습니다.

우리는 현재 SOLO, Kafka를 포함하는 Hyperledger Fabric 컨센서스 메커니즘에 대해 더 배우게 될 것이며

곧 다른 문서에서 SBFT (Simplified Byzantine Fault Tolerance)로 확장 될 것입니다.

 

어디서 더 배울 수 있을까요?

Getting Started

우리는 블록체인 안에서 가장 핵심적인 요소들을 소개할 다양한 튜토리얼을 제공합니다.

이를 통해서 어떻게 다른 유저와 상호작용 하는지 배우고, 또한 실제 코드를 사용해 구현해보면서 블록체인 네트워크 안에서 간단한 트랜잭션을 구동시켜 볼 것입니다.

또한 Hyperledger Fabric을 이용하여 블록체인 네트워크 구동에 관한 생각을 가지고 있는 사람들에게 해당되는 튜토리얼도 제공합니다.


 

 

출처 : http://hyperledger-fabric.readthedocs.io/en/release-1.1/key_concepts.html

 

[포스팅개정]

2018.06.08 2차 번역 까칠한마녀

+ Recent posts