SlideShare a Scribd company logo
1 of 51
© 2018 IBM Corporation
성균관대학교
이동건
문과생의
‘한 달 만에 Composer로
해커톤 입상까지’ 일대기
© 2018 IBM Corporation 2Page
소개
§ 성균관대학교 글로벌경제학과 재학
SCSC 연계전공
§ 성균관대학교 멋쟁이사자차럼 5기
§ KblockResearch 케블리 2기
TES 2기
§ Hyperledger Fabric, Composer
독학 중
문과생의 Composer 해커톤 입상기
이동건
© 2018 IBM Corporation 3Page
목차
1. 해커톤 입상 당시 아이디어
2. Dev Environment Setting
3. Composer CLI 활용법
- BNA파일 설계
- REST-server
4. 유의점
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 4Page
2018. 8.29
경기도블록체인해커톤
사회혁신 분야 최우수상
1. 해커톤 입상 아이디어
© 2018 IBM Corporation 5Page
© 2018 IBM Corporation 6Page
© 2018 IBM Corporation 7Page
© 2018 IBM Corporation 8Page
© 2018 IBM Corporation 9Page
© 2018 IBM Corporation 10Page
© 2018 IBM Corporation 11Page
© 2018 IBM Corporation 12Page
© 2018 IBM Corporation 13Page
* For Toy Project
2. Dev Environment
Setting
© 2018 IBM Corporation 14Page
Dev
Environment
https://github.com/acloudfan/HLF-Vagrant-Dev-Setup
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 15Page
문과생의 Composer 해커톤 입상기
Single Orderer (Solo)
Single Peer
© 2018 IBM Corporation 16Page
Yeoman
Hyperledger composer template
yo hyperledger-composer
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 17Page
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 18Page
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 19Page
BNA 파일부터 REST Server까지
3. Composer 활용하기
© 2018 IBM Corporation 20Page
Composer?
§ Hyperledger Fabric 기반 블록체인
네트워크 위에
Business Network Application을 쉽게
만들기 위한 Tool.
§ Modeling,
ChainCode Logic (Smart Contract),
Access Permission,
Queries
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 21Page
Modeling ­ Model/.cto
§ Business Model에 필요한
유무형 자산(Asset),
거래당사자(Participant),
거래(Transaction) 및 이벤트(Event)
모델링 파일
§ Organizing Model
abstraction
Relation(M:N),
extend(inherit),
concept
enum
§ Field Valuation
regexp, range
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 22Page
Modeling ­ Model/.cto
§ Asset과 Participant는 Primary
key값이 반드시 필요하며,
‘identified by’로 설정할 수 있음.
§ 지원하는 자료형
String ­ UTF8 인코딩
Double ­ 64bit 실수형.
Integer, Long ­ 32bit, 64bit 정수형
Datetime ­ ISO 8601 기준 시간
Boolean ­ T/F
§ Array선언은 자료형[ ]으로 가능.
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 23Page
Modeling ­ Model/.cto
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 24Page
© 2018 IBM Corporation 25Page
Logic.js – ChainCode
§ Hyperledger의 Smart Contract
§ v1.0에서는 GoLang 지원,
v1.1에서는 Nodejs 지원,
조만간 Java로도 컴파일 가능할
예정이라고 함.
§ Asset, Participant의 상태변화를
프로그래밍으로 지정 / Event
발생여부 결정 가능
§ 본 템플릿은 Nodejs를 지원함.
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 26Page
Logic.js – ChainCode
문과생의 Composer 해커톤 입상기
§ getFactory() :
새 Entity 생성을 위한 명령어
§ get[Object]Registry(Name) :
이름이 Name인 Asset / Participant
Registry(Database)를 불러온다.
§ newResource(namespace, Object, Id) :
namespace.cto파일에 정의된 Object를
Primary key = Id로 지정해 새로 생성한다.
§ add(NewObject) : newResource로
생성한 데이터를 Registry에 저장한다.
Composer의 Runtime API 활용.
§ Runtime API에서 제공되는 함수는
return값이 Promise로 주어지는
경우가 많다.
§ 따라서 Logic.js에서 API를 사용하려면
Javascript ES6 또는 ES8의 Promise
문법을 사용하는 것이 좋다.
© 2018 IBM Corporation 27Page
Logic.js – ChainCode
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 28Page
Logic.js – ChainCode
문과생의 Composer 해커톤 입상기
§ getAssetRegistry로 EventData Asset을 불러온 다음
§ 생성한 newEvent 값을 저장한다.
기타 Runtime-api
https://hyperledger.github.io/composer/v0.19/api/runtime-api
© 2018 IBM Corporation 29Page
Queries.qry
문과생의 Composer 해커톤 입상기
§ 특정 조건을 만족하는 Asset / Participant를
Query 형태로 조회할 수 있다.
§ SQL과 유사한 형태의 문법으로 작성 가능하며,
REST API에서 Request ­ Response 형태로
값을 제공받는다.
§ SELECT FROM WHERE 형태의 기초 형식만
차용했을 뿐, sum(), avg() 와 같은 연산은
구현하지 못한다.
© 2018 IBM Corporation 30Page
Queries.qry
문과생의 Composer 해커톤 입상기
§ 지원하는 명령어: SELECT, FROM, WHERE, AND, OR, CONTAINS, ORDER BY.
§ Query Language Reference
https://hyperledger.github.io/composer/v0.19/reference/query-language
© 2018 IBM Corporation 31Page
Permissions.acl
문과생의 Composer 해커톤 입상기
§ Participant가 실행할 수 있는 Transaction
또는 접근할 수 있는 Asset 등을 제한할 수 있는
기능을 제공함.
§ Permissioned Network 내에서
사용자에게 허용된 Rule을 지정하는 것.
§ Permissions.acl 파일이 없을 경우 default =
모든 참여자가 어떤 행동을 수행해도 제약 없음.
© 2018 IBM Corporation 32Page
Permissions.acl
문과생의 Composer 해커톤 입상기
§ Operation : CRUD 설정 가능. (Create Read Update Delete)
§ Action : Allow or Denied
© 2018 IBM Corporation 33Page
Composer CLI 활용하기
§ BNA 파일 생성
Composer archive create ­t dir ­n ../
-t : bna 파일이 생성될 위치, -n : bna 파일의 속성이 정의된 위치
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 34Page
Bluemix Playground로 로컬 디버깅
문과생의 Composer 해커톤 입상기
https://composer-playground.mybluemix.net/
© 2018 IBM Corporation 35Page
Bluemix Playground로 로컬 디버깅
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 36Page
Bluemix Playground로 로컬 디버깅
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 37Page
Bluemix Playground로 로컬 디버깅
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 38Page
Bluemix Playground로 로컬 디버깅
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 39Page
Composer CLI 활용하기
§ BNA 파일을 바탕으로 Business Network를 로컬에 설치하기
Composer network install ­a [bna 파일 이름] ­c PeerAdmin@hlfv1
-c : 네트워크를 설치하기 위한 Certificate.
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 40Page
Composer CLI 활용하기
§ Composer network start
­c PeerAdmin@hlfv1 ­n hlf_kisa ­V 0.0.1 ­A admin ­S adminpw
문과생의 Composer 해커톤 입상기
§ 실행이 완료되면, admin 권한으로 network를 시작했으므로
Admin의 Certificate에 해당하는 admin@hlf_kisa.card 파일이 생성된다.
© 2018 IBM Corporation 41Page
Composer CLI 활용하기
§ Composer card list
현재 로컬에 등록된 Certificate(Card)가 어떤 것들이 있는지 확인한다.
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 42Page
Composer CLI 활용하기
§ Composer card import ­f admin@hlf_kisa.card
composer network start 명령어로 만들어진 card파일을 네트워크에
등록한다.
문과생의 Composer 해커톤 입상기
§ 카드를 삭제하려면
Composer card delete ­c admin@hlf_kisa 명령어를 사용한다.
© 2018 IBM Corporation 43Page
Composer-rest-server
문과생의 Composer 해커톤 입상기
§ Composer-rest-server
- Business network에 접근할 Card 입력.
© 2018 IBM Corporation 44Page
Composer-rest-server
문과생의 Composer 해커톤 입상기
§ Localhost:3000/explorer로 Composer-rest-server 확인 가능
© 2018 IBM Corporation 45Page
Composer-rest-server
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 46Page
Composer-rest-server
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 47Page
Composer-rest-server
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 48Page
Composer-rest-server
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 49Page
4. 유의점
© 2018 IBM Corporation 50Page
FOR TOY PROJECT ONLY
§ Hyperledger Fabric이 Single Orderer이고 Ordering Method가 Solo이므로
txn의 순서를 결정하는 주체가 하나밖에 없음.
§ Composer-rest-server에 접근한 Certificate가
admin@hlf_kisa.card 하나뿐임. Multi User setup을 위해서는 Certificate을
관리하는 Wallet이 필요하다.
§ Card만 가지고 있다면 누구라도 API에 접근해 값을 변경할 수 있는 구조.
보안을 강화하려면 Composer-rest-server에서 TLS 보안을 적용하거나,
ChainCode 자체적으로 보안을 위한 Javascript 코드가 추가되어야 함.
§ Multi Orderer / Peer 설정 및 Docker Container로 구현하는 것…
문과생의 Composer 해커톤 입상기
© 2018 IBM Corporation 51Page
감사합니다.
이동건
https://www.facebook.com/inspirit941
https://github.com/inspirit941
http://inspirit941.tistory.com

More Related Content

Similar to IBM developer day 2018 - hyperledger composer

Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsminseok kim
 
consumer_driven_contract with spring cloud contract at spring camp 2018
consumer_driven_contract with spring cloud contract at spring camp 2018consumer_driven_contract with spring cloud contract at spring camp 2018
consumer_driven_contract with spring cloud contract at spring camp 2018minseok kim
 
[GDG DevFest Seoul 2017] JAMstack이 GitHub와 CloudFlare를 만날 때 고성능 웹 어플리케이션 호스팅은...
[GDG DevFest Seoul 2017] JAMstack이 GitHub와 CloudFlare를 만날 때 고성능 웹 어플리케이션 호스팅은...[GDG DevFest Seoul 2017] JAMstack이 GitHub와 CloudFlare를 만날 때 고성능 웹 어플리케이션 호스팅은...
[GDG DevFest Seoul 2017] JAMstack이 GitHub와 CloudFlare를 만날 때 고성능 웹 어플리케이션 호스팅은...Byungjin Park
 
Datadog을 활용한 Elastic Kubernetes Service(EKS)에서의 마이크로서비스 통합 가시성 - 정영석 시니어 세일즈 ...
Datadog을 활용한 Elastic Kubernetes Service(EKS)에서의 마이크로서비스 통합 가시성 - 정영석 시니어 세일즈 ...Datadog을 활용한 Elastic Kubernetes Service(EKS)에서의 마이크로서비스 통합 가시성 - 정영석 시니어 세일즈 ...
Datadog을 활용한 Elastic Kubernetes Service(EKS)에서의 마이크로서비스 통합 가시성 - 정영석 시니어 세일즈 ...Amazon Web Services Korea
 
딥러닝 서비스에 쓰이는 GPU 인스턴스 비용 효율을 위한 스팟(Spot) 활용기 - 손은주, 매스프레소 :: AWS DevDay 2018
딥러닝 서비스에 쓰이는 GPU 인스턴스 비용 효율을 위한 스팟(Spot) 활용기 - 손은주, 매스프레소 :: AWS DevDay 2018딥러닝 서비스에 쓰이는 GPU 인스턴스 비용 효율을 위한 스팟(Spot) 활용기 - 손은주, 매스프레소 :: AWS DevDay 2018
딥러닝 서비스에 쓰이는 GPU 인스턴스 비용 효율을 위한 스팟(Spot) 활용기 - 손은주, 매스프레소 :: AWS DevDay 2018Amazon Web Services Korea
 
AManaging Kong API Gateway with Terraform
AManaging Kong API Gateway with TerraformAManaging Kong API Gateway with Terraform
AManaging Kong API Gateway with TerraformByungjin Park
 
AWS 기반 블록체인 (1부) - 블록체인 환경 구성하기 (박혜영 & 유다니엘, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
AWS 기반 블록체인 (1부) - 블록체인 환경 구성하기 (박혜영 & 유다니엘, AWS 솔루션즈 아키텍트) :: AWS DevDay2018AWS 기반 블록체인 (1부) - 블록체인 환경 구성하기 (박혜영 & 유다니엘, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
AWS 기반 블록체인 (1부) - 블록체인 환경 구성하기 (박혜영 & 유다니엘, AWS 솔루션즈 아키텍트) :: AWS DevDay2018Amazon Web Services Korea
 
PHP Log Tracking with ELK & Filebeat part#2
PHP Log Tracking with ELK & Filebeat part#2PHP Log Tracking with ELK & Filebeat part#2
PHP Log Tracking with ELK & Filebeat part#2Juwon Kim
 
클라우드 프론트의 재발견::백본을 이용한 초고속 콘텐츠 전송::서호석 이사, 영우디지탈::AWS Summit Seoul 2018
클라우드 프론트의 재발견::백본을 이용한 초고속 콘텐츠 전송::서호석 이사, 영우디지탈::AWS Summit Seoul 2018클라우드 프론트의 재발견::백본을 이용한 초고속 콘텐츠 전송::서호석 이사, 영우디지탈::AWS Summit Seoul 2018
클라우드 프론트의 재발견::백본을 이용한 초고속 콘텐츠 전송::서호석 이사, 영우디지탈::AWS Summit Seoul 2018Amazon Web Services Korea
 
Amazon EC2 고급 활용 기법 및 모범 사례::이진욱::AWS Summit Seoul 2018
Amazon EC2 고급 활용 기법 및 모범 사례::이진욱::AWS Summit Seoul 2018Amazon EC2 고급 활용 기법 및 모범 사례::이진욱::AWS Summit Seoul 2018
Amazon EC2 고급 활용 기법 및 모범 사례::이진욱::AWS Summit Seoul 2018Amazon Web Services Korea
 
실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018
실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018
실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018Amazon Web Services Korea
 
모바일 게임을 만들기 위한 AWS 활용 고군분투기::최용호::AWS Summit Seoul 2018
모바일 게임을 만들기 위한 AWS 활용 고군분투기::최용호::AWS Summit Seoul 2018모바일 게임을 만들기 위한 AWS 활용 고군분투기::최용호::AWS Summit Seoul 2018
모바일 게임을 만들기 위한 AWS 활용 고군분투기::최용호::AWS Summit Seoul 2018Amazon Web Services Korea
 
EKS를 통한 차량 공유 서비스 '타다' 서비스 구축기 - 김태호, VCNC :: AWS Summit Seoul 2019
EKS를 통한 차량 공유 서비스 '타다' 서비스 구축기 - 김태호, VCNC :: AWS Summit Seoul 2019EKS를 통한 차량 공유 서비스 '타다' 서비스 구축기 - 김태호, VCNC :: AWS Summit Seoul 2019
EKS를 통한 차량 공유 서비스 '타다' 서비스 구축기 - 김태호, VCNC :: AWS Summit Seoul 2019Amazon Web Services Korea
 
락플레이스 OpenShift Q&A 토크쇼 발표자료
락플레이스 OpenShift Q&A 토크쇼 발표자료락플레이스 OpenShift Q&A 토크쇼 발표자료
락플레이스 OpenShift Q&A 토크쇼 발표자료rockplace
 
실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018
실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018
실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018Amazon Web Services Korea
 
if kakao dev 2019_Ground X_Session 01
if kakao dev 2019_Ground X_Session 01if kakao dev 2019_Ground X_Session 01
if kakao dev 2019_Ground X_Session 01Klaytn
 
[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-toJi-Woong Choi
 
7. 게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
7.	게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...7.	게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
7. 게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...Amazon Web Services Korea
 

Similar to IBM developer day 2018 - hyperledger composer (20)

Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vs
 
consumer_driven_contract with spring cloud contract at spring camp 2018
consumer_driven_contract with spring cloud contract at spring camp 2018consumer_driven_contract with spring cloud contract at spring camp 2018
consumer_driven_contract with spring cloud contract at spring camp 2018
 
[GDG DevFest Seoul 2017] JAMstack이 GitHub와 CloudFlare를 만날 때 고성능 웹 어플리케이션 호스팅은...
[GDG DevFest Seoul 2017] JAMstack이 GitHub와 CloudFlare를 만날 때 고성능 웹 어플리케이션 호스팅은...[GDG DevFest Seoul 2017] JAMstack이 GitHub와 CloudFlare를 만날 때 고성능 웹 어플리케이션 호스팅은...
[GDG DevFest Seoul 2017] JAMstack이 GitHub와 CloudFlare를 만날 때 고성능 웹 어플리케이션 호스팅은...
 
Datadog을 활용한 Elastic Kubernetes Service(EKS)에서의 마이크로서비스 통합 가시성 - 정영석 시니어 세일즈 ...
Datadog을 활용한 Elastic Kubernetes Service(EKS)에서의 마이크로서비스 통합 가시성 - 정영석 시니어 세일즈 ...Datadog을 활용한 Elastic Kubernetes Service(EKS)에서의 마이크로서비스 통합 가시성 - 정영석 시니어 세일즈 ...
Datadog을 활용한 Elastic Kubernetes Service(EKS)에서의 마이크로서비스 통합 가시성 - 정영석 시니어 세일즈 ...
 
딥러닝 서비스에 쓰이는 GPU 인스턴스 비용 효율을 위한 스팟(Spot) 활용기 - 손은주, 매스프레소 :: AWS DevDay 2018
딥러닝 서비스에 쓰이는 GPU 인스턴스 비용 효율을 위한 스팟(Spot) 활용기 - 손은주, 매스프레소 :: AWS DevDay 2018딥러닝 서비스에 쓰이는 GPU 인스턴스 비용 효율을 위한 스팟(Spot) 활용기 - 손은주, 매스프레소 :: AWS DevDay 2018
딥러닝 서비스에 쓰이는 GPU 인스턴스 비용 효율을 위한 스팟(Spot) 활용기 - 손은주, 매스프레소 :: AWS DevDay 2018
 
AManaging Kong API Gateway with Terraform
AManaging Kong API Gateway with TerraformAManaging Kong API Gateway with Terraform
AManaging Kong API Gateway with Terraform
 
AWS 기반 블록체인 (1부) - 블록체인 환경 구성하기 (박혜영 & 유다니엘, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
AWS 기반 블록체인 (1부) - 블록체인 환경 구성하기 (박혜영 & 유다니엘, AWS 솔루션즈 아키텍트) :: AWS DevDay2018AWS 기반 블록체인 (1부) - 블록체인 환경 구성하기 (박혜영 & 유다니엘, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
AWS 기반 블록체인 (1부) - 블록체인 환경 구성하기 (박혜영 & 유다니엘, AWS 솔루션즈 아키텍트) :: AWS DevDay2018
 
PHP Log Tracking with ELK & Filebeat part#2
PHP Log Tracking with ELK & Filebeat part#2PHP Log Tracking with ELK & Filebeat part#2
PHP Log Tracking with ELK & Filebeat part#2
 
클라우드 프론트의 재발견::백본을 이용한 초고속 콘텐츠 전송::서호석 이사, 영우디지탈::AWS Summit Seoul 2018
클라우드 프론트의 재발견::백본을 이용한 초고속 콘텐츠 전송::서호석 이사, 영우디지탈::AWS Summit Seoul 2018클라우드 프론트의 재발견::백본을 이용한 초고속 콘텐츠 전송::서호석 이사, 영우디지탈::AWS Summit Seoul 2018
클라우드 프론트의 재발견::백본을 이용한 초고속 콘텐츠 전송::서호석 이사, 영우디지탈::AWS Summit Seoul 2018
 
Amazon EC2 고급 활용 기법 및 모범 사례::이진욱::AWS Summit Seoul 2018
Amazon EC2 고급 활용 기법 및 모범 사례::이진욱::AWS Summit Seoul 2018Amazon EC2 고급 활용 기법 및 모범 사례::이진욱::AWS Summit Seoul 2018
Amazon EC2 고급 활용 기법 및 모범 사례::이진욱::AWS Summit Seoul 2018
 
실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018
실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018
실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018
 
모바일 게임을 만들기 위한 AWS 활용 고군분투기::최용호::AWS Summit Seoul 2018
모바일 게임을 만들기 위한 AWS 활용 고군분투기::최용호::AWS Summit Seoul 2018모바일 게임을 만들기 위한 AWS 활용 고군분투기::최용호::AWS Summit Seoul 2018
모바일 게임을 만들기 위한 AWS 활용 고군분투기::최용호::AWS Summit Seoul 2018
 
EKS를 통한 차량 공유 서비스 '타다' 서비스 구축기 - 김태호, VCNC :: AWS Summit Seoul 2019
EKS를 통한 차량 공유 서비스 '타다' 서비스 구축기 - 김태호, VCNC :: AWS Summit Seoul 2019EKS를 통한 차량 공유 서비스 '타다' 서비스 구축기 - 김태호, VCNC :: AWS Summit Seoul 2019
EKS를 통한 차량 공유 서비스 '타다' 서비스 구축기 - 김태호, VCNC :: AWS Summit Seoul 2019
 
락플레이스 OpenShift Q&A 토크쇼 발표자료
락플레이스 OpenShift Q&A 토크쇼 발표자료락플레이스 OpenShift Q&A 토크쇼 발표자료
락플레이스 OpenShift Q&A 토크쇼 발표자료
 
실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018
실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018
실전 프로젝트로 이야기하는 AWS IoT::김민성::AWS Summit Seoul 2018
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
if kakao dev 2019_Ground X_Session 01
if kakao dev 2019_Ground X_Session 01if kakao dev 2019_Ground X_Session 01
if kakao dev 2019_Ground X_Session 01
 
KAFKA 3.1.0.pdf
KAFKA 3.1.0.pdfKAFKA 3.1.0.pdf
KAFKA 3.1.0.pdf
 
[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to[오픈소스컨설팅] OpenShift PaaS Platform How-to
[오픈소스컨설팅] OpenShift PaaS Platform How-to
 
7. 게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
7.	게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...7.	게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
7. 게임 스트리밍 서비스를 위한 아키텍처 - 언리얼 엔진을 중심으로! [레벨 300] - 발표자: 하흥수, 솔루션즈 아키텍트, AWS :...
 

IBM developer day 2018 - hyperledger composer

  • 1. © 2018 IBM Corporation 성균관대학교 이동건 문과생의 ‘한 달 만에 Composer로 해커톤 입상까지’ 일대기
  • 2. © 2018 IBM Corporation 2Page 소개 § 성균관대학교 글로벌경제학과 재학 SCSC 연계전공 § 성균관대학교 멋쟁이사자차럼 5기 § KblockResearch 케블리 2기 TES 2기 § Hyperledger Fabric, Composer 독학 중 문과생의 Composer 해커톤 입상기 이동건
  • 3. © 2018 IBM Corporation 3Page 목차 1. 해커톤 입상 당시 아이디어 2. Dev Environment Setting 3. Composer CLI 활용법 - BNA파일 설계 - REST-server 4. 유의점 문과생의 Composer 해커톤 입상기
  • 4. © 2018 IBM Corporation 4Page 2018. 8.29 경기도블록체인해커톤 사회혁신 분야 최우수상 1. 해커톤 입상 아이디어
  • 5. © 2018 IBM Corporation 5Page
  • 6. © 2018 IBM Corporation 6Page
  • 7. © 2018 IBM Corporation 7Page
  • 8. © 2018 IBM Corporation 8Page
  • 9. © 2018 IBM Corporation 9Page
  • 10. © 2018 IBM Corporation 10Page
  • 11. © 2018 IBM Corporation 11Page
  • 12. © 2018 IBM Corporation 12Page
  • 13. © 2018 IBM Corporation 13Page * For Toy Project 2. Dev Environment Setting
  • 14. © 2018 IBM Corporation 14Page Dev Environment https://github.com/acloudfan/HLF-Vagrant-Dev-Setup 문과생의 Composer 해커톤 입상기
  • 15. © 2018 IBM Corporation 15Page 문과생의 Composer 해커톤 입상기 Single Orderer (Solo) Single Peer
  • 16. © 2018 IBM Corporation 16Page Yeoman Hyperledger composer template yo hyperledger-composer 문과생의 Composer 해커톤 입상기
  • 17. © 2018 IBM Corporation 17Page 문과생의 Composer 해커톤 입상기
  • 18. © 2018 IBM Corporation 18Page 문과생의 Composer 해커톤 입상기
  • 19. © 2018 IBM Corporation 19Page BNA 파일부터 REST Server까지 3. Composer 활용하기
  • 20. © 2018 IBM Corporation 20Page Composer? § Hyperledger Fabric 기반 블록체인 네트워크 위에 Business Network Application을 쉽게 만들기 위한 Tool. § Modeling, ChainCode Logic (Smart Contract), Access Permission, Queries 문과생의 Composer 해커톤 입상기
  • 21. © 2018 IBM Corporation 21Page Modeling ­ Model/.cto § Business Model에 필요한 유무형 자산(Asset), 거래당사자(Participant), 거래(Transaction) 및 이벤트(Event) 모델링 파일 § Organizing Model abstraction Relation(M:N), extend(inherit), concept enum § Field Valuation regexp, range 문과생의 Composer 해커톤 입상기
  • 22. © 2018 IBM Corporation 22Page Modeling ­ Model/.cto § Asset과 Participant는 Primary key값이 반드시 필요하며, ‘identified by’로 설정할 수 있음. § 지원하는 자료형 String ­ UTF8 인코딩 Double ­ 64bit 실수형. Integer, Long ­ 32bit, 64bit 정수형 Datetime ­ ISO 8601 기준 시간 Boolean ­ T/F § Array선언은 자료형[ ]으로 가능. 문과생의 Composer 해커톤 입상기
  • 23. © 2018 IBM Corporation 23Page Modeling ­ Model/.cto 문과생의 Composer 해커톤 입상기
  • 24. © 2018 IBM Corporation 24Page
  • 25. © 2018 IBM Corporation 25Page Logic.js – ChainCode § Hyperledger의 Smart Contract § v1.0에서는 GoLang 지원, v1.1에서는 Nodejs 지원, 조만간 Java로도 컴파일 가능할 예정이라고 함. § Asset, Participant의 상태변화를 프로그래밍으로 지정 / Event 발생여부 결정 가능 § 본 템플릿은 Nodejs를 지원함. 문과생의 Composer 해커톤 입상기
  • 26. © 2018 IBM Corporation 26Page Logic.js – ChainCode 문과생의 Composer 해커톤 입상기 § getFactory() : 새 Entity 생성을 위한 명령어 § get[Object]Registry(Name) : 이름이 Name인 Asset / Participant Registry(Database)를 불러온다. § newResource(namespace, Object, Id) : namespace.cto파일에 정의된 Object를 Primary key = Id로 지정해 새로 생성한다. § add(NewObject) : newResource로 생성한 데이터를 Registry에 저장한다. Composer의 Runtime API 활용. § Runtime API에서 제공되는 함수는 return값이 Promise로 주어지는 경우가 많다. § 따라서 Logic.js에서 API를 사용하려면 Javascript ES6 또는 ES8의 Promise 문법을 사용하는 것이 좋다.
  • 27. © 2018 IBM Corporation 27Page Logic.js – ChainCode 문과생의 Composer 해커톤 입상기
  • 28. © 2018 IBM Corporation 28Page Logic.js – ChainCode 문과생의 Composer 해커톤 입상기 § getAssetRegistry로 EventData Asset을 불러온 다음 § 생성한 newEvent 값을 저장한다. 기타 Runtime-api https://hyperledger.github.io/composer/v0.19/api/runtime-api
  • 29. © 2018 IBM Corporation 29Page Queries.qry 문과생의 Composer 해커톤 입상기 § 특정 조건을 만족하는 Asset / Participant를 Query 형태로 조회할 수 있다. § SQL과 유사한 형태의 문법으로 작성 가능하며, REST API에서 Request ­ Response 형태로 값을 제공받는다. § SELECT FROM WHERE 형태의 기초 형식만 차용했을 뿐, sum(), avg() 와 같은 연산은 구현하지 못한다.
  • 30. © 2018 IBM Corporation 30Page Queries.qry 문과생의 Composer 해커톤 입상기 § 지원하는 명령어: SELECT, FROM, WHERE, AND, OR, CONTAINS, ORDER BY. § Query Language Reference https://hyperledger.github.io/composer/v0.19/reference/query-language
  • 31. © 2018 IBM Corporation 31Page Permissions.acl 문과생의 Composer 해커톤 입상기 § Participant가 실행할 수 있는 Transaction 또는 접근할 수 있는 Asset 등을 제한할 수 있는 기능을 제공함. § Permissioned Network 내에서 사용자에게 허용된 Rule을 지정하는 것. § Permissions.acl 파일이 없을 경우 default = 모든 참여자가 어떤 행동을 수행해도 제약 없음.
  • 32. © 2018 IBM Corporation 32Page Permissions.acl 문과생의 Composer 해커톤 입상기 § Operation : CRUD 설정 가능. (Create Read Update Delete) § Action : Allow or Denied
  • 33. © 2018 IBM Corporation 33Page Composer CLI 활용하기 § BNA 파일 생성 Composer archive create ­t dir ­n ../ -t : bna 파일이 생성될 위치, -n : bna 파일의 속성이 정의된 위치 문과생의 Composer 해커톤 입상기
  • 34. © 2018 IBM Corporation 34Page Bluemix Playground로 로컬 디버깅 문과생의 Composer 해커톤 입상기 https://composer-playground.mybluemix.net/
  • 35. © 2018 IBM Corporation 35Page Bluemix Playground로 로컬 디버깅 문과생의 Composer 해커톤 입상기
  • 36. © 2018 IBM Corporation 36Page Bluemix Playground로 로컬 디버깅 문과생의 Composer 해커톤 입상기
  • 37. © 2018 IBM Corporation 37Page Bluemix Playground로 로컬 디버깅 문과생의 Composer 해커톤 입상기
  • 38. © 2018 IBM Corporation 38Page Bluemix Playground로 로컬 디버깅 문과생의 Composer 해커톤 입상기
  • 39. © 2018 IBM Corporation 39Page Composer CLI 활용하기 § BNA 파일을 바탕으로 Business Network를 로컬에 설치하기 Composer network install ­a [bna 파일 이름] ­c PeerAdmin@hlfv1 -c : 네트워크를 설치하기 위한 Certificate. 문과생의 Composer 해커톤 입상기
  • 40. © 2018 IBM Corporation 40Page Composer CLI 활용하기 § Composer network start ­c PeerAdmin@hlfv1 ­n hlf_kisa ­V 0.0.1 ­A admin ­S adminpw 문과생의 Composer 해커톤 입상기 § 실행이 완료되면, admin 권한으로 network를 시작했으므로 Admin의 Certificate에 해당하는 admin@hlf_kisa.card 파일이 생성된다.
  • 41. © 2018 IBM Corporation 41Page Composer CLI 활용하기 § Composer card list 현재 로컬에 등록된 Certificate(Card)가 어떤 것들이 있는지 확인한다. 문과생의 Composer 해커톤 입상기
  • 42. © 2018 IBM Corporation 42Page Composer CLI 활용하기 § Composer card import ­f admin@hlf_kisa.card composer network start 명령어로 만들어진 card파일을 네트워크에 등록한다. 문과생의 Composer 해커톤 입상기 § 카드를 삭제하려면 Composer card delete ­c admin@hlf_kisa 명령어를 사용한다.
  • 43. © 2018 IBM Corporation 43Page Composer-rest-server 문과생의 Composer 해커톤 입상기 § Composer-rest-server - Business network에 접근할 Card 입력.
  • 44. © 2018 IBM Corporation 44Page Composer-rest-server 문과생의 Composer 해커톤 입상기 § Localhost:3000/explorer로 Composer-rest-server 확인 가능
  • 45. © 2018 IBM Corporation 45Page Composer-rest-server 문과생의 Composer 해커톤 입상기
  • 46. © 2018 IBM Corporation 46Page Composer-rest-server 문과생의 Composer 해커톤 입상기
  • 47. © 2018 IBM Corporation 47Page Composer-rest-server 문과생의 Composer 해커톤 입상기
  • 48. © 2018 IBM Corporation 48Page Composer-rest-server 문과생의 Composer 해커톤 입상기
  • 49. © 2018 IBM Corporation 49Page 4. 유의점
  • 50. © 2018 IBM Corporation 50Page FOR TOY PROJECT ONLY § Hyperledger Fabric이 Single Orderer이고 Ordering Method가 Solo이므로 txn의 순서를 결정하는 주체가 하나밖에 없음. § Composer-rest-server에 접근한 Certificate가 admin@hlf_kisa.card 하나뿐임. Multi User setup을 위해서는 Certificate을 관리하는 Wallet이 필요하다. § Card만 가지고 있다면 누구라도 API에 접근해 값을 변경할 수 있는 구조. 보안을 강화하려면 Composer-rest-server에서 TLS 보안을 적용하거나, ChainCode 자체적으로 보안을 위한 Javascript 코드가 추가되어야 함. § Multi Orderer / Peer 설정 및 Docker Container로 구현하는 것… 문과생의 Composer 해커톤 입상기
  • 51. © 2018 IBM Corporation 51Page 감사합니다. 이동건 https://www.facebook.com/inspirit941 https://github.com/inspirit941 http://inspirit941.tistory.com