Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang...

22
Hyperledger Blockchain chaincode in Golang Go언어 기반의 블럭체인 서비스 개발 공무제 차장 한국IBM Lab

Transcript of Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang...

Page 1: Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang Go언어기반의블럭체인 서비스개발 공무제차장 한국IBM Lab

Hyperledger Blockchain chaincode in Golang

Go언어 기반의 블럭체인서비스 개발공무제 차장

한국IBM Lab

Page 2: Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang Go언어기반의블럭체인 서비스개발 공무제차장 한국IBM Lab

블럭체인?

비즈니스 네트워크(Business Network)의 모든참여자들이 원장(Ledger)을 볼 수 있도록 해주는

공유 원장 기술(shared ledger technology)

비즈니스 프로세스를 간소화하면서

신뢰와 투명성을 확립하는

차세대 트랜잭션 애플리케이션을

구축하기위한 토대

Page 3: Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang Go언어기반의블럭체인 서비스개발 공무제차장 한국IBM Lab

블럭체인 도입 전…

은행레코드

참여기관 A

레코드

참여기관 C

레코드

감독기관레코드

참여기관 B

레코드

참여기관 D

레코드

Page 4: Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang Go언어기반의블럭체인 서비스개발 공무제차장 한국IBM Lab

블럭체인 도입 후…

참여기관 C

레코드

감독기관

레코드

참여기관 B

레코드

참여기관 D

레코드은행레코드

참여기관 A

레코드

공유, 복제, 허가

Page 5: Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang Go언어기반의블럭체인 서비스개발 공무제차장 한국IBM Lab

블럭체인은 비트코인의 기반 기술

–규제되지않는, 검열저항적(censorship-resistant) 대체통화

–첫번째 블록체인 어플리케이션

• 블록체인 기술의 개척자

BUT

is not bitcoin

Page 6: Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang Go언어기반의블럭체인 서비스개발 공무제차장 한국IBM Lab

비즈니스를 위한 블럭체인

Append-only

distributed system of

record shared across

business network

Business terms

embedded in

transaction database

& executed with

transactions

All parties agree

to network verified

transaction

Ensuring appropriate

visibility; transactions are

secure, authenticated

& verifiablePrivacy

(프라이버시)

Shared

ledger

(공유원장)

… 참여확대, 비용절감, 효율성 증대

Smart

Contract

(스마트 계약)

Consensus

(합의)

Page 7: Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang Go언어기반의블럭체인 서비스개발 공무제차장 한국IBM Lab

블럭체인 적용 가능한 산업군 및 시나리오무역 금융Cross-Border

결제금융 시장

보험 공급망 관리 IoT

블록체인 기반의 분산크로스-보더 시스템은투명성, 속도, 예측성을증가시킴으로써 서비스를향상 시킴

LLOYD’S 는 블록체인 기술을사용하여 재보험 시장을 현대화

무역금융은 평균 12 참여자, 27개서류가 포함된 복잡한 프로세스로스마트 계약을 통한 공유원장 및자동화는 효율성,속도, 정확성을 높이고, 리스크를 완화시킴

복잡한 공급망 네트워크의트랜잭션은 프로비넌스레코드(provenance record) 를 위한엔드투엔드 프로세스의 가시성을확보하기 위하여 블록체인에 기록될수 있음

많은 증권 거래소들은 미래금융시장을 혁신하는 블록체인가능성을 검증하기 위해 PoC를시작했음

자율 IoT 디바이스는 분산방식으로 블록체인 환경에서통신함

자산 보관소

계약 관리

자산유형의 이해 당사자들이중개자를 거치지 않고 거래를개시하고 자산의 정보를획득하고 직접 자산에 대해접근함.

블록체인은 공정 진행에 따라갱신된 계약 상태의 공유기록을제공하고 감사를 위한 불변레코드 제공.

Page 8: Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang Go언어기반의블럭체인 서비스개발 공무제차장 한국IBM Lab

블럭체인의 장점

시간 절약 비용 절감 위험 감소 신뢰 확산

거래처리 시간이일(days)단위에서 준

실시간 처리

중개자의 오버헤드및 비용 감소

조작, 사기 및 사이버범죄 감소

공유 프로세스 및기록을 통해 신뢰

확보

Page 9: Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang Go언어기반의블럭체인 서비스개발 공무제차장 한국IBM Lab

블럭체인 개발 환경?

Hyperledger fabric on

Docker Hub

가장 빠르게 블럭체인 솔루션을 개발하기 위한 방법

다양한 플랫폼( Linux, Unix, Windows 등)에서 개발이 가능

High security business

blockchain on Bluemix

Dedicated compute power – isolated partition

Secure key management (FIPS 140-2 Level 4)

Tamper resistant service container

Performance optimized (Operating System & Privacy Services)

Bluemix blockchain

service

블럭체인 네크워크를 빠르게 체험할 수 있는 환경

다양한 샘플 제공함으로 쉽게 체험하거나 수정해서 사용 가능

Bluemix DevOps를 통해 개발환경과 배포 정책 지원

Page 10: Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang Go언어기반의블럭체인 서비스개발 공무제차장 한국IBM Lab

Linux Foundation’s Hyperledger Project

– 리눅스 재단의 Hyperleder 프로젝트는 2015년12월 17일에 17개 회원사로 시작되었으며,

현재 100개 회원사가 참여하고 있음. .

– Hyperledger 프로젝트는 전세계적으로비즈니스 거래가 수행되는 방식을 변혁할 수있는 분산 원장에 대한 산업 표준에 중요한기능들을 확인하고 적용하여 블록체인을발전시키기 위한 협력 프로젝트 임.

– 오픈 소스 및 오픈 표준 기반

Enable adoption of shared ledger technology at

a pace and depth not achievable by any one

company or industry

QUICK FACTS

Chairman Blythe Masters/DAH

Executive

DirectorBrian Behlendorf

Technical Chair Chris Ferris/IBM

Contribution44,000 lines of code

in February 2016

Sprint to one

codebase with

unified thinking

Staged releases

Page 11: Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang Go언어기반의블럭체인 서비스개발 공무제차장 한국IBM Lab

11Pag© 2016 IBM CorporationAs of 07 September 2016

Page 12: Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang Go언어기반의블럭체인 서비스개발 공무제차장 한국IBM Lab

Hyperledger Fabric 아키텍쳐

hyperledger/fabr

ic-membersrvc

hyperledger/f

abric-peer

Chaincode

(Go / Java)

Docker image

개발 영역

Page 13: Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang Go언어기반의블럭체인 서비스개발 공무제차장 한국IBM Lab

Hyperledger Fabric 토폴로지

Page 14: Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang Go언어기반의블럭체인 서비스개발 공무제차장 한국IBM Lab

Hyperledger project 범위

Shared

Ledger

Code execution environment

Ledger data structures

Modular consensus framework

Modular identity services

Network peers

Core APIs

API libraries and GUIs

Specialized extensions

Specialized consensus algos

Membership policies

Gateway

Operations dashboard

Custom Applications

Value

Added

Systems

App Layer

In-scope

Out of scope

Page 15: Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang Go언어기반의블럭체인 서비스개발 공무제차장 한국IBM Lab

블럭체인 어플리케이션 및 원장

* Smart Contract implemented using chain code 15

World/Ledger state

Blockchain

block

txn txn txn txn …

Blockchain developer

Smart Contract

invokesdevelops

develops

each ‘put’ or ’delete’ invoke recorded

*

Application

Accesses(Rest API)

event

emits

emits

D

Ledger

‘get’ ‘put, ‘delete’

Page 16: Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang Go언어기반의블럭체인 서비스개발 공무제차장 한국IBM Lab

스마트 계약

16

트랜잭션의 유효한 조건을 정의

code 와 data 로 구성

“Chaincode” 는 Hyperledger에서 Smart Contract를 표현하는 용어

Page 17: Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang Go언어기반의블럭체인 서비스개발 공무제차장 한국IBM Lab

스마트 계약

17

신뢰할 수 있는 참가자 정의(역할),

예:a) 생산자

b) 딜러

c) 임대업자

d) 감독기관 등

차량정의(자동차 리스 시나리오)

예:a) 자동차 등록 번호

b) 소유자 정보

c) 등록정보

d) 메이커

e) 모델

사전 정의된 기능

예: a) 자동차 생성

b) 자동차 이전

c) 자동차 정보 업데이트

d) 자동차 페기

”누가” “무엇”을 할 수 있는지 제한

Page 18: Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang Go언어기반의블럭체인 서비스개발 공무제차장 한국IBM Lab

스마트 계약 (Chaincode) 인터페이스

18

type Chaincode interface {Init(stub *ChaincodeStub, function string, args []string) ([]byte, error)Invoke(stub *ChaincodeStub, function string, args []string) ([]byte, error)Query(stub *ChaincodeStub, function string, args []string) ([]byte, error)

}

Chaincode interface

Chaincode State

PUT_STATE, GET_STATE, DEL_STATE

message PutStateInfo {string key = 1;bytes value = 2;

}

Page 19: Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang Go언어기반의블럭체인 서비스개발 공무제차장 한국IBM Lab

어플리케이션 인터페이스

19

Page 20: Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang Go언어기반의블럭체인 서비스개발 공무제차장 한국IBM Lab

Demo

20

Page 21: Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang Go언어기반의블럭체인 서비스개발 공무제차장 한국IBM Lab

Thank you

Page 22: Hyperledger Blockchain chaincode in Golang … · Hyperledger Blockchain chaincode in Golang Go언어기반의블럭체인 서비스개발 공무제차장 한국IBM Lab

참조 링크

22

IBM Blockchain : https://www.ibm.com/blockchain/

Blockchain @ developerWorks : https://developer.ibm.com/blockchain/

Hyperledger : https://www.hyperledger.org/

Hyperledger fabric 기술문서 : https://hyperledger-fabric.readthedocs.io/en/latest/

GitHub – hyperledger/fabric : https://github.com/hyperledger/fabric

Hyperledger project Wiki : https://wiki.hyperledger.org/community/fabric-design-docs