2. 2
1조 역할 분담
교육대상자 조창환 박준영 장인선 남상욱 주환석 임다미
세미나 발표 및 자료 준비
발표
2018-11-03 O
2018-11-24 O
2018-12-08 O
최종(사내 세미나) O O
역할 담당
기획 경매 서비스 O O O
개발 경매 서비스 Fabric Web Fabric Web Web
4. 4
블록체인의 정의
신뢰 기반의 분산 트랜잭션 관리 플랫폼
System A
System C System D
모든 시스템의 합의 필요
(모든 시스템이 동일한 원장 보유)
System A System B
이름 생년월일 …
안중근 1879.09.02 …
김구 1876.08.29 …
유관순 1902.12.16 …
Blockchain Network
이름 생년월일 …
안중근 1879.09.02 …
김구 1876.08.29 …
유관순 1902.12.16 …
이름 생년월일 …
안중근 1879.09.02 …
김구 1876.08.29 …
유관순 1902.12.16 …
이름 생년월일 …
안중근 1879.09.02 …
김구 1876.08.29 …
유관순 1902.12.16 …
김구 1876.08.29 출생
이름 생년월일 …
안중근 1879.09.02 …
김구 1876.08.29 …
유관순 1902.12.16 …
System B
이름 생년월일 …
안중근 1879.09.02 …
김구 1876.08.29 …
유관순 1902.12.16 …
김구
1876.
08.29
출생
시스템간 Integration
필요
[System call]
System B의 김구 정보
업데이트
김구
1876.
08.29
출생
• 상황에 따라 DB lock 등의 상황 발생
가능성 존재
• 다양한 상황에 따른 장애 및 에러
대응 로직 고려하여 개발 필요
• Integration 해야 할 대상 시스템이
많을 수록 어플리케이션 복잡도 증가
5. 5
블록체인 기반 기술 분류
공용(Public) 형
컨소시엄형
(여러 조직에서 운영)
개인(Private)형
(단일 조직에서 운영)
(마이닝)
노드형
제한 없음 제한 가능 제안 가능
블록체인 검색 제한 없음 제한 가능 제한 가능
블록 생성시 높은 난이도 필요 임의 임의
마이닝 보수 필요 임의 임의
6. 6
블록체인 기반 기술 비교
분류
하이퍼레저
(Hyperledger)
이더리움
(Ethereum)
리플
(Ripple)
비트코인
(Bitcoin)
소개
모든 산업에서 사용할 수 있는 Blockchain
기술의 표준화
일반적인 사용을 위한
Blockchain
페이먼트 Blockchain 페이먼트 Blockchain
거버넌스 리눅스 재단 이더리움 개발자 리플 랩(Ripple Labs) 비트코인 개발자
합의 네트워크
플러거블 : PBFT (Practical
Byzantine Fault Tolerance)
마이닝 리플 프로토콜 마이닝
네트워크 프라이빗 또는 퍼블릭 퍼블릭 또는 프라이빗 퍼블릭 퍼블릭
프라이버시
(Privacy)
오픈 원장 부터 사설 원장 지원 오픈 원장 오픈 원장 오픈 원장
스마트 컨트랙
(Smart Contracts)
멀티 프로그래밍 언어
(Go, Java, Node.js)
‘Solidity’ 프로그래밍 언어 없음 가능하지만 분명하지 않음
통화
통화기반이 아님(UTXO API 활용하여 구현
가능)
Ether XRP BTC
마이닝 보상 관련없음 있음 없음 있음
State 키-밸류 데이터베이스 계좌(Account) 데이터 없음 거래(Transaction) 데이터
7. 7
블록체인 장점 및 기대효과
시스템 측면
Privacy
(프라이버시)
Shared ledger
(공유원장)
Smart
Contract
(스마트 계약)
Consensus
(합의)
비즈니스 네트워크내에
모든 거래가 기록되고
공유됨
비즈니스 규칙 및 로직은
계약에 함축되어 트랜잭션
수행시 실행됨
원장은 공유되지만,
참여자의 개인정보는
암호화 기술을 통해서
보호되어야 함
검증된 트랜잭션에 대한
네트워크에 참여한
참여자의 동의가 필요함
구성요소
합의 (Consensus)
자산추적성 (Provenance)
불변성 (Immutability)
최종성 (Finality)
특징
8. 8
블록체인 적용가능 영역
2. Provenance(출자추적)
•비행기및 자동차 부품 등과 같이 출처를 추적하기 어려운 복잡한 시스템의 각 부품에 대한 출처
확보.
•제조자, 제조일, 제조 배치 및 제조 기계의 프로그램 등
•블록체인은 각 부품의 완전한 상세 출처 및 이력을 보관함
•생산과정의 각 제조사, 소유주, 정비사, 정부 감독기관등에서 접근 가능함
3. Immutability(불변성)
• 대기업 재무데이터는 기업내 부문 및 지역별 로 흩어져 있음
• 감사 및 준법 감시를 위해 보고 기간 이상 모든 거래기록이 유지하여야 함
• 블록체인은 재무시스템에 있는 다양한 거래 기록을 수집
• Append- only 및 위변조 불가 특징으로 높은 신뢰도의 재무 감사 증빙 생성.
• 권한 사용자의 접근을 보장하는 보안 기능
4. Finality(최종성)
• 신용장(L/C)을 개설하는 은행은 스타트업 기업을 포함한 다양한 고객에게 제공하고자 함.
• 현재는 비용 및 긴 소요 시간으로 인한 제약이 있음
• 블록체인은 L/C 공용 원장을 제공.
• 모든 거래 상대가 동일한 검증된 거래기록 및 거래이행 기록을 갖을 수 있도록 함
1. Consensus(합의)
• 경재사와 협력사들은 속한 비즈니스 네트워크내에서 참조데이터의 공유가 필요한 참조데이터 예)
자금을 주고 받기 위한 은행 브랜치 고유코드
• 현재는 각 은행 및 브랜치들이 자신의 코드를 유지관리하고, 수집및 배포를 위해 중앙기관에
변경내역을 보내야 함
• 정보의 일부는 조직에 소유됨
• 각 참여자가 각자의 자체 코드를 블록체인 네트워크 내에서 유지 관리
• 블록체인이 전체 데이터셋에 대한 싱글뷰(Single View)제공
• 중앙기관 없이도 방대한 부품들의 출처 추적이
가능하며 신뢰성 증가
• 유지보수 효율 향상을 통한 시스템 사용율 향상
• 정확한 부품단위의 리콜 가능
• 통합된고, 일관된 데이터 셋 유지로 에러 감소.
• 참조데이터의 준실시간 관리
• 자연스럽게 코드의 편집 및 참여자간의 고유 코드
전달을 지원함.
• 감사 및 규제 준수를 위한 감시 비용 절감
• 감사 및 규제감독 기관에게 검색 접근 제공
• 수동적인 준법감시 특성을 능동적 방식으로
변화시킴
• 수행속도 향상 (1일 이내)
• 엄청난 비용 절감
• 리스크 감소 예) 환율 변동
• 부가 서비스 제공
특 징 장 점
9. 9
항만 물류: TradeLens (Maersk-IBM)
개방적이고 중립적인 Supply chain platform
세계 무역 비용은 연간 1.8 조 달러로 추산되며,보다 효율적인 프로세스 적용시 10 %까지 절약할 수 있는
것으로 추정 됨.
현재 개선후
Consignee
Exporter Forwarder
CarrierTerminal
Open global trade digitization platform
Exporter
Terminal
Trucker Rail Forwarder
Carrier
Consignee
Authority AuthorityAuthority Authority
Authority
Authority Authority
• 기업의 경계와 공급망 전체의 "사각 지대"에서 정보의 불일치는 효
율적인 상품 흐름을 방해 함
• 복잡하고 번거롭고 비용이 많이 드는 peer-to-peer 메시징
• 수동방식의 시간 소모적인 종이 기반 업무 처리
• 불법적인 프로세스를 검출하기 위해서는 정보가 부족한 환경
• 컨테이너 선적을 처리하는 관리 비용은 실제 물리적 수송 비용과 비
슷합니다
• 종단 간 공급망 정보(원장)에 즉각적이고 안전하게 액세스 할 수
있음
• 디지털 문서의 신뢰성 및 불변성 보장
• 신뢰할 수있는 조직 간 워크 플로
• 더 나은 위험 평가 및 불필요한 개입 최소화
• 관리 비용을 크게 절감하고 국가간 관련 서류 전달에드는 비용
을 줄일 수 있음
12. 12
소개
Hyperledger Composer를 사용하여 상품 거래를 위한 비즈니스 프로세스를 구성
BNA (Business Network Archive) 파일 생성
생성된 파일을 Hyperledger Fabric을 통해 배포
https://github.com/IBM/BlockchainNetwork-CompositeJourney
13. 13
Application Workflow Diagram
구성요소 : Hyperledger Fabric, Hyperledger Composer, Docker
1. 네트워크 구성파일 설치하기
a) cryptogen
b) configtxgen
c) configtxlator
d) peer
2. 네트워크 설정하기
a) 네트워크 아티팩트 생성
b) 네트워크 시작
14. 14
사전 준비
환경구성
Docker : v1.13 or higher
Docker Compose : v1.8 or higher
NPM : v5.6.0 or higher
nvm : v8.11.3
Node.js : node v8.11.3
Git Client : v 2.9.x or higher
Python : 2.7.x
15. 15
하이퍼레저 컴포저 개발 툴 설치
하이퍼레저 컴포저는 패브릭 블록체인 애플리케이션 생성을 간소화, 가속화하는 애플리케이션 개발 프레임워크
npm uninstall -g composer-cli
pm install -g generator-hyperledger-composer@0.19.5
npm install -g composer-cli@0.19.5
npm install -g composer-rest-server@0.19.5
npm install -g yo@2.0.0
• composer-cli 최신버전 사용하기 위해 이전 버전이 설치되어 있다면, 아래 명령을 사용하여 제거
• composer-cli 설치 (비즈니스 네트워크 개발에 대한 모든 명령어 처리)
• generator-hyperledger-composer는 Yeoman 플러그인으로 비즈니스 네트워크용 애플리케이션을 구성 및 생성
Yeoman은 웹 애플리케이션을 개발 전에 필요한 디렉토리 구조 및 기본적인 파일을 생성해 주는 프레임워크
• composer-rest-server는 하이퍼레저 컴포저 루프백 커넥터를 사용하여 비즈니스 네트워크에 연결하고 모델을 추출한 다음,
모델용으로 생성된 REST API가 포함된 페이지 노출
• Yeoman을 generator-hyperledger-composer 구성 요소와 결합하게 되면, 비즈니스 네트워크를 해석하고 이를 기반으로
애플리케이션을 쉽게 생성 가능
16. 16
하이퍼레저 패브릭 시작
git clone https://github.com/IBM/BlockchainNetwork-CompositeJourney.git
cd BlockchainNetwork-CompositeJourney
• 하이퍼레저 컴포저는 Connection Profiles 사용하여 Runtime에 연결
• Connection Profiles을 사용하면 코드와 스크립트를 다른 런타임 인스턴스로 쉽게 이동 가능
• PeerAdmin ID 카드 : 로컬 하이퍼레저 패브릭 관리 (PeerAdmin@hlfv1)
• PeerAdmin의 기능
- 비즈니스 네트워크 배포하기
- 비즈니스 네트워크 관리자용 ID카드의 생성, 발급 및 해지하기
• 패브릭 시작 컴포저 프로파일 작성
• 아래 명령어로 패브릭 중단 또는 삭제
./downloadFabric.sh
./startFabric.sh
./createPeerAdminCard.sh
./stopFabric.sh
./teardownFabric.sh
17. 17
Business Network Archive (BNA) 생성 I
npm install
• 네트워크 정의 : 참가자 Trader, 자산 Commodity, 트랜잭션 Trade
• 역할 : Commodity는 Trader가 소유, Commodity의 소유주는 Trade 트랜젝션을 Submit을 통해 수정
• BNA 파일 : 배포 가능한 유닛으로, 실행을 위해 컴포저 런타임에 배포할 수 있는 파일
• 네트워크 아카이브 생성
Creating Business Network Archive
Looking for package.json of Business Network Definition
Input directory: /Users/ishan/Documents/git-demo/BlockchainNetwork-CompositeJourney
Found:
Description: Sample Trade Network
Name: my-network
Identifier: my-network@0.0.1
Written Business Network Definition Archive file to
Output file: ./dist/my-network.bna
Command succeeded
• 결과
18. 18
Business Network Archive (BNA) 생성 II
npm test
• Node.js에서 '블록체인' 인메모리 상태를 저장하는 임베디드 런타임에 대해 설계한 비즈니스 네트워크 테스트 가능
• 임베디드 런타임 : 전체 패브릭 네트워크 구성 없이도 비즈니스 로직 테스트에 집중할 수 있어 단위 테스트에 유용
• BlockchainNetwork-CompositeJourney에서 다음 명령 실행
> my-network@0.0.1 test /Users/laurabennett/2017-NewRole/Code/BlockchainNetwork-CompositeJourney
> mocha --recursive
Commodity Trading
#tradeCommodity
✓ should be able to trade a commodity (198ms)
1 passing (1s)
• 결과
19. 19
Business Network Archive 배포 I
컴포저 플레이그라운드를 사용하여 배포
• Composer Playground 여기 또는 로컬에서 설정
• 생성된 my-network.bna 파일을 하단의 버튼을 클릭하여 Deploy
24. 24
Business Network Archive 배포 VI
로컬에 있는 하이퍼레저 컴포저에 배포(1)
• 하이퍼레저 패브릭에 비즈니스 네트워크를 배포하려면 하이퍼레저 컴포저를 통해 생성한 비즈니스 네트워크 아카이브(BNA)를
피어로 배포해야 함
• 비즈니스 네트워크 관리자가 되려면 새 참가자, ID 및 이와 연관된 카드 작성 필요
• 네트워크 관리자 비즈니스 네트워크 카드 사용을 위해 생성한 카드 정보를 Import 해야 함
composer network start --networkName my-network --networkVersion 0.0.1 --networkAdminEnrollSecret
adminpw --card PeerAdmin@hlfv1 --file networkadmin.card
cd dist
composer network install --card PeerAdmin@hlfv1 --archiveFile my-network.bna
composer card import --file networkadmin.card
composer network ping --card admin@my-network
• 컴포저 네트워크를 설치
• composer network start 명령에는 비즈니스 네트워크 카드, 비즈니스 네트워크의 관리자 ID 이름, .bna 파일 경로 및
비즈니스 네트워크 카드로 가져올 파일명이 필요
• composer card import 명령을 사용하려면 composer network start에 지정된 파일 이름이 있어야 카드를 만들 수 있음.
사용 가능한 비즈니스 네트워크 카드로 네트워크 관리자 ID를 가져 오려면 다음을 실행
• 네트워크 확인
25. 25
Business Network Archive 배포 VII
로컬에 있는 하이퍼레저 컴포저에 배포(2)
The connection to the network was successfully tested: my-network
version: 0.19.1
participant:
org.hyperledger.composer.system.Identity#82c679fbcb1541eafeff1bc71edad4f2c980a0e17a5333a6a611124c2
addf4ba
Command succeeded
cd ..
composer-rest-server
카드 이름 : admin@bidding-service
네임스페이스 사용 여부 : never use namespaces
API의 보안 여부 : No
이벤트 게시 활성화 여부 : Yes
TLS 보안 사용 여부 : No
• 네트워크 확인 결과
• REST API를 만들려면 composer-rest-server를 시작하고 배포된 비즈니스 네트워크의 접속 정보를 설정 디렉토리를
프로젝트 작업 디렉토리와 타입으로 변경하고 다음을 입력하여 서버를 시작
• composer-rest-server를 하이퍼레저 패브릭에 연결한 후 REST API의 생성 방법을 설정
• 정상적인 실행이 확인되면, http://localhost:3000/explorer 이동
27. 27
경매 거래 시스템 아키텍처
HyberLedger Fabric을 이용한 경매 거래 시스템
Fabric
Orderer Peer CA
Key/Value
DB
Composer Outer
Web
Composer Rest
Server
Composer
Playground
Mobile/Web
Application
Rest
API
Backend
Test
Event
EmitInterface
28. 28
Online Bidding Process
Outline Bidding Process
Member Seller
Bidding List
Product
Offer
1
4
2 Add Product
3 Start Bidding
5 Close Bidding
1
29. 29
경매 거래 시스템 Components
Components
HyperLedger Fabric
Cloud / Local
Script File
.js
Access Control
.acl
Web Browser / Node.js
Online
Bisiness Network Architecture
.bna
Model File
.cto
Assets
Participants
Transaction
Query File
.qry
Transaction
Function
Access
Control
Rule
Query
Definitions
30. 30
Hyperledger Fabric을 이용한 경매시스템 개발 프로세스
개발 프로세스
• Planning
• Use-case
• Model Definition
Asset, Participant, Transaction
• Test-based development
Mocha
Cucumber
• Implements Business logic
• Adding ACL rules
34. 34
사전 작업 I
$ git clone https://github.com/hyperledger/composer-vscode-plugin.git
$ cd composer-vscode-plugin/server
$ npm install
$ npm run compile:server
$ cd ../client
$ npm install
$ npm run package:vsix
https://github.com/IBM/BlockchainNetwork-CompositeJourney
• Install Hyperledger Composer Development Tools
• VSCode 설치 및 Composer Extension 추가
Launch VSCode
View > Extensions
Press the ... and select "Install from VSIX"
Browse to the VSIX file
Install and restart VSCode
Open a .cto file
35. 35
사전 작업 II
$ yo hyperledger-composer:businessnetwork
• Creating a business network structure
36. 36
Model 정의 I
Business Network Definitions are
composed of:
1. A set of model files
• Asset definition
• Participant definition
• Transaction definition
2. A set of JavaScript files
• Transaction Function
3. Access Control File
• Access control rules
37. 37
Model 정의 II
<<Asset>>
Product progress
o productProgressId
o startDateTimeOfSale
o endDateTimeOfSale
o lowPurchasePrice
o maxPurchasePrice
o actualPurchasePrice
Product product
<<enum>>
product state
o FOR_SALE
o NOT_RESERVED
o SOLD
<<Asset>>
product listing
o productListingId
o description
Product product
<<Participants>>
user
o userId
o password
o username
o balance
Photo image
<<Participants>>
buyer
<<Participants>>
seller
<<Transaction>>
start bidding
o String productListingId
Product product
ProductProgress
progress
<<enum>>
product type
o FOOD
o ELECTRONICS
o KITCHENS
o PETS
o DINING
o FURNITURE
o LIGHTING
o EATING
<<Asset>>
photo
o photoId
o imageUrl
<<Asset>>
Product
o productid
o productName
o Description
o ProductState
User owner
Photo image
<<Transaction>>
close bidding
ProductListing listing
<<Transaction>>
offer
o bidPrice
ProductListing listing
User user
39. 39
로그인
기능 및 화면 기획 I
BiddingService
ID
로그인
로그인
PASSWORD
회원가입
40. 40
회원 가입
기능 및 화면 기획 II
BiddingService
ID
Seller 등록
회원가입
가입
PASSWORD
PASSWORD 확인
이름
수정
41. 41
경매상품 리스트
기능 및 화면 기획 III
BiddingService 상품 리스트경매 리스트 개인 정보 수정
00237 Product Name 19:00 ~ 21:00
00236 Product Name2 19:00 ~ 21:00
00235 Product Name 19:00 ~ 21:00
00234 Product Name 19:00 ~ 21:00
00233 Product Name2 19:00 ~ 21:00
대기
진행중
완료
완료
대기
00240 Product Name2 19:00 ~ 21:00
00239 ProductName2 19:00 ~ 21:00
00238 Product Name2 19:00 ~ 21:00
대기
대기
진행중
42. 42
상품등록
기능 및 화면 기획 IV
Category
상품명
부가설명
사진등록
BiddingService 상품등록
파일에서 찾아보기
선택
등록 수정
43. 43
상품리스트
기능 및 화면 기획 V
BiddingService 경매 리스트 상품 리스트 개인 정보 수정
NO 상품명 상세정보 상태
1 상품명 노출 상품 상세 정보 노출 경매완료
2 상품명 노출 상품 상세 정보 노출 경매완료
3 상품명 노출 상품 상세 정보 노출 경매완료
4 상품명 노출 상품 상세 정보 노출 경매완료
5 상품명 노출 상품 상세 정보 노출 경매취소
6 상품명 노출 상품 상세 정보 노출 경매완료
7 상품명 노출 상품 상세 정보 노출 경매중
8 상품명 노출 상품 상세 정보 노출 -
9 상품명 노출 상품 상세 정보 노출 -
상품 등록
경매등록
경매등록
경매등록
경매완료
경매완료
경매완료
경매완료
경매완료
경매중
상품 리스트
44. 44
경매 상품 등록
기능 및 화면 기획 VI
BiddingService 경매 리스트 상품 리스트 개인 정보 수정
경매 상품 등록
~경 매 시 간
경매시작가 55,000
200,000경매종료가
경매 시작
45. 45
경매 참여
기능 및 화면 기획 VII
BiddingService 경매 리스트 상품 리스트 개인 정보 수정
ID 시간 경매가 상태
ALSD-132132-ASD-FADS-ADSF 17:02 99,000 낙찰
ALSD-132132-ASD-FADS-ADSF 17:02 77,000 경매
ALSD-132132-ASD-FADS-ADSF 17:02 66,000 경매
ALSD-132132-ASD-FADS-ADSF 17:02 55,000 경매
ALSD-132132-ASD-FADS-ADSF 17:02 55,000 경매
ALSD-132132-ASD-FADS-ADSF 17:02 55,000 경매
ALSD-132132-ASD-FADS-ADSF 17:02 55,000 경매
ALSD-132132-ASD-FADS-ADSF 17:02 55,000 경매
ALSD-132132-ASD-FADS-ADSF 17:02 55,000 경매
상품 상세 정보
카테고리 : 자전거
상품명 : 전동 퀵보드
부가설명 : ………
경매 상태
99,000금 액
경매 종료
신청
58. 58
References
• Developing a Blockchain Business Network with Hyperledger Composer using the IBM Blockchain Platform Starter Plan
• http://www.redbooks.ibm.com/redpapers/pdfs/redp5492.pdf
• Developer tutorial for creating a Hyperledger Composer solution
• https://hyperledger.github.io/composer/latest/tutorials/developer-tutorial
• Hyperledger/composer-sample-networks
• https://github.com/hyperledger/composer-sample-networks/tree/master/packages/carauction-network
• Hyperledger Composer Modeling Language
• https://hyperledger.github.io/composer/v0.19/reference/cto_language
• Installing pre-requisites
• https://hyperledger.github.io/composer/latest/installing/installing-prereqs.html#macos