hyperledger blockchain chaincode in golang … · hyperledger blockchain chaincode in golang...
TRANSCRIPT
Hyperledger Blockchain chaincode in Golang
Go언어 기반의 블럭체인서비스 개발공무제 차장
한국IBM Lab
블럭체인?
비즈니스 네트워크(Business Network)의 모든참여자들이 원장(Ledger)을 볼 수 있도록 해주는
공유 원장 기술(shared ledger technology)
비즈니스 프로세스를 간소화하면서
신뢰와 투명성을 확립하는
차세대 트랜잭션 애플리케이션을
구축하기위한 토대
블럭체인 도입 전…
은행레코드
참여기관 A
레코드
참여기관 C
레코드
감독기관레코드
참여기관 B
레코드
참여기관 D
레코드
블럭체인 도입 후…
참여기관 C
레코드
감독기관
레코드
참여기관 B
레코드
참여기관 D
레코드은행레코드
참여기관 A
레코드
공유, 복제, 허가
블럭체인은 비트코인의 기반 기술
–규제되지않는, 검열저항적(censorship-resistant) 대체통화
–첫번째 블록체인 어플리케이션
• 블록체인 기술의 개척자
BUT
is not bitcoin
비즈니스를 위한 블럭체인
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
(합의)
블럭체인 적용 가능한 산업군 및 시나리오무역 금융Cross-Border
결제금융 시장
보험 공급망 관리 IoT
블록체인 기반의 분산크로스-보더 시스템은투명성, 속도, 예측성을증가시킴으로써 서비스를향상 시킴
LLOYD’S 는 블록체인 기술을사용하여 재보험 시장을 현대화
무역금융은 평균 12 참여자, 27개서류가 포함된 복잡한 프로세스로스마트 계약을 통한 공유원장 및자동화는 효율성,속도, 정확성을 높이고, 리스크를 완화시킴
복잡한 공급망 네트워크의트랜잭션은 프로비넌스레코드(provenance record) 를 위한엔드투엔드 프로세스의 가시성을확보하기 위하여 블록체인에 기록될수 있음
많은 증권 거래소들은 미래금융시장을 혁신하는 블록체인가능성을 검증하기 위해 PoC를시작했음
자율 IoT 디바이스는 분산방식으로 블록체인 환경에서통신함
자산 보관소
계약 관리
자산유형의 이해 당사자들이중개자를 거치지 않고 거래를개시하고 자산의 정보를획득하고 직접 자산에 대해접근함.
블록체인은 공정 진행에 따라갱신된 계약 상태의 공유기록을제공하고 감사를 위한 불변레코드 제공.
블럭체인의 장점
시간 절약 비용 절감 위험 감소 신뢰 확산
거래처리 시간이일(days)단위에서 준
실시간 처리
중개자의 오버헤드및 비용 감소
조작, 사기 및 사이버범죄 감소
공유 프로세스 및기록을 통해 신뢰
확보
블럭체인 개발 환경?
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를 통해 개발환경과 배포 정책 지원
✔
✔
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
11Pag© 2016 IBM CorporationAs of 07 September 2016
Hyperledger Fabric 아키텍쳐
hyperledger/fabr
ic-membersrvc
hyperledger/f
abric-peer
Chaincode
(Go / Java)
Docker image
개발 영역
Hyperledger Fabric 토폴로지
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
블럭체인 어플리케이션 및 원장
* 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’
스마트 계약
16
트랜잭션의 유효한 조건을 정의
code 와 data 로 구성
“Chaincode” 는 Hyperledger에서 Smart Contract를 표현하는 용어
스마트 계약
17
신뢰할 수 있는 참가자 정의(역할),
예:a) 생산자
b) 딜러
c) 임대업자
d) 감독기관 등
차량정의(자동차 리스 시나리오)
예:a) 자동차 등록 번호
b) 소유자 정보
c) 등록정보
d) 메이커
e) 모델
사전 정의된 기능
예: a) 자동차 생성
b) 자동차 이전
c) 자동차 정보 업데이트
d) 자동차 페기
”누가” “무엇”을 할 수 있는지 제한
스마트 계약 (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;
}
어플리케이션 인터페이스
19
Demo
20
Thank you
참조 링크
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