SlideShare a Scribd company logo
1 of 58
Download to read offline
블록체인 서비스
하이퍼렛저 페브릭 Exercise
다우기술 | 1조
2019.01.04
2
1조 역할 분담
교육대상자 조창환 박준영 장인선 남상욱 주환석 임다미
세미나 발표 및 자료 준비
발표
2018-11-03 O
2018-11-24 O
2018-12-08 O
최종(사내 세미나) O O
역할 담당
기획 경매 서비스 O O O
개발 경매 서비스 Fabric Web Fabric Web Web
Part 1.
Blockchain &
Hyperledger Fabric
Introduction
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
블록체인 기반 기술 분류
공용(Public) 형
컨소시엄형
(여러 조직에서 운영)
개인(Private)형
(단일 조직에서 운영)
(마이닝)
노드형
제한 없음 제한 가능 제안 가능
블록체인 검색 제한 없음 제한 가능 제한 가능
블록 생성시 높은 난이도 필요 임의 임의
마이닝 보수 필요 임의 임의
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
블록체인 장점 및 기대효과
시스템 측면
Privacy
(프라이버시)
Shared ledger
(공유원장)
Smart
Contract
(스마트 계약)
Consensus
(합의)
비즈니스 네트워크내에
모든 거래가 기록되고
공유됨
비즈니스 규칙 및 로직은
계약에 함축되어 트랜잭션
수행시 실행됨
원장은 공유되지만,
참여자의 개인정보는
암호화 기술을 통해서
보호되어야 함
검증된 트랜잭션에 대한
네트워크에 참여한
참여자의 동의가 필요함
구성요소
합의 (Consensus)
자산추적성 (Provenance)
불변성 (Immutability)
최종성 (Finality)
특징
8
블록체인 적용가능 영역
2. Provenance(출자추적)
•비행기및 자동차 부품 등과 같이 출처를 추적하기 어려운 복잡한 시스템의 각 부품에 대한 출처
확보.
•제조자, 제조일, 제조 배치 및 제조 기계의 프로그램 등
•블록체인은 각 부품의 완전한 상세 출처 및 이력을 보관함
•생산과정의 각 제조사, 소유주, 정비사, 정부 감독기관등에서 접근 가능함
3. Immutability(불변성)
• 대기업 재무데이터는 기업내 부문 및 지역별 로 흩어져 있음
• 감사 및 준법 감시를 위해 보고 기간 이상 모든 거래기록이 유지하여야 함
• 블록체인은 재무시스템에 있는 다양한 거래 기록을 수집
• Append- only 및 위변조 불가 특징으로 높은 신뢰도의 재무 감사 증빙 생성.
• 권한 사용자의 접근을 보장하는 보안 기능
4. Finality(최종성)
• 신용장(L/C)을 개설하는 은행은 스타트업 기업을 포함한 다양한 고객에게 제공하고자 함.
• 현재는 비용 및 긴 소요 시간으로 인한 제약이 있음
• 블록체인은 L/C 공용 원장을 제공.
• 모든 거래 상대가 동일한 검증된 거래기록 및 거래이행 기록을 갖을 수 있도록 함
1. Consensus(합의)
• 경재사와 협력사들은 속한 비즈니스 네트워크내에서 참조데이터의 공유가 필요한 참조데이터 예)
자금을 주고 받기 위한 은행 브랜치 고유코드
• 현재는 각 은행 및 브랜치들이 자신의 코드를 유지관리하고, 수집및 배포를 위해 중앙기관에
변경내역을 보내야 함
• 정보의 일부는 조직에 소유됨
• 각 참여자가 각자의 자체 코드를 블록체인 네트워크 내에서 유지 관리
• 블록체인이 전체 데이터셋에 대한 싱글뷰(Single View)제공
• 중앙기관 없이도 방대한 부품들의 출처 추적이
가능하며 신뢰성 증가
• 유지보수 효율 향상을 통한 시스템 사용율 향상
• 정확한 부품단위의 리콜 가능
• 통합된고, 일관된 데이터 셋 유지로 에러 감소.
• 참조데이터의 준실시간 관리
• 자연스럽게 코드의 편집 및 참여자간의 고유 코드
전달을 지원함.
• 감사 및 규제 준수를 위한 감시 비용 절감
• 감사 및 규제감독 기관에게 검색 접근 제공
• 수동적인 준법감시 특성을 능동적 방식으로
변화시킴
• 수행속도 향상 (1일 이내)
• 엄청난 비용 절감
• 리스크 감소 예) 환율 변동
• 부가 서비스 제공
특 징 장 점
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 메시징
• 수동방식의 시간 소모적인 종이 기반 업무 처리
• 불법적인 프로세스를 검출하기 위해서는 정보가 부족한 환경
• 컨테이너 선적을 처리하는 관리 비용은 실제 물리적 수송 비용과 비
슷합니다
• 종단 간 공급망 정보(원장)에 즉각적이고 안전하게 액세스 할 수
있음
• 디지털 문서의 신뢰성 및 불변성 보장
• 신뢰할 수있는 조직 간 워크 플로
• 더 나은 위험 평가 및 불필요한 개입 최소화
• 관리 비용을 크게 절감하고 국가간 관련 서류 전달에드는 비용
을 줄일 수 있음
10
항만 물류: TradeLens (Maersk-IBM)
개방적이고 중립적인 Supply chain platform
https://docs.tradelens.com/learn/tradelens_overview/
Part 2.
Creating a Hyperledger
Composer Solution
12
소개
 Hyperledger Composer를 사용하여 상품 거래를 위한 비즈니스 프로세스를 구성
 BNA (Business Network Archive) 파일 생성
 생성된 파일을 Hyperledger Fabric을 통해 배포
https://github.com/IBM/BlockchainNetwork-CompositeJourney
13
Application Workflow Diagram
구성요소 : Hyperledger Fabric, Hyperledger Composer, Docker
1. 네트워크 구성파일 설치하기
a) cryptogen
b) configtxgen
c) configtxlator
d) peer
2. 네트워크 설정하기
a) 네트워크 아티팩트 생성
b) 네트워크 시작
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
하이퍼레저 컴포저 개발 툴 설치
하이퍼레저 컴포저는 패브릭 블록체인 애플리케이션 생성을 간소화, 가속화하는 애플리케이션 개발 프레임워크
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
하이퍼레저 패브릭 시작
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
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
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
Business Network Archive 배포 I
컴포저 플레이그라운드를 사용하여 배포
• Composer Playground 여기 또는 로컬에서 설정
• 생성된 my-network.bna 파일을 하단의 버튼을 클릭하여 Deploy
20
Business Network Archive 배포 II
컴포저 플레이그라운드를 사용하여 배포
• Composer Playground 여기 또는 로컬에서 설정
21
Business Network Archive 배포 III
컴포저 플레이그라운드를 사용하여 배포
• Create New Particypant 선택 후 Trader, Commodity 생성 및 Trade 트랜잭션 제출
22
Business Network Archive 배포 IV
컴포저 플레이그라운드를 사용하여 배포
{
"$class": "org.acme.mynetwork.Trader",
"tradeId": "traderA",
"firstName": "Tobias",
"lastName": "Funke"
}
{
"$class": "org.acme.mynetwork.Trader",
"tradeId": "traderB",
"firstName": "Simon",
"lastName": "Stone"
}
{
"$class": "org.acme.mynetwork.Commodity",
"tradingSymbol": "commodityA",
"description": "Sample Commodity",
"mainExchange": "Dollar",
"quantity": 100,
"owner": "resource:org.acme.mynetwork.Trader#traderA"
}
{
"$class": "org.acme.mynetwork.Trade",
"commodity": "resource:org.acme.mynetwork.Commodity#commodityA",
"newOwner": "resource:org.acme.mynetwork.Trader#traderB"
}
• Commodity
• Trade
• Trader
23
Business Network Archive 배포 V
컴포저 플레이그라운드를 사용하여 배포
• Transaction 체크
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
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 이동
Part 3.
Bidding Service
Business Model
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
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
경매 거래 시스템 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
Hyperledger Fabric을 이용한 경매시스템 개발 프로세스
개발 프로세스
• Planning
• Use-case
• Model Definition
 Asset, Participant, Transaction
• Test-based development
 Mocha
 Cucumber
• Implements Business logic
• Adding ACL rules
31
Hyperledger Fabric을 이용한 경매시스템 BM 스케치
BM 스케치
32
Buyer는?
Use Case I
Login
Registeration
View Products
View Bidding
Information
Offering of a
Possible PriceBuyer
33
Seller는?
Use Case II
Login
Registeration
View Bidding
Information
Regist Product
Start Bidding
View Products
Close Bidding
Seller
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
사전 작업 II
$ yo hyperledger-composer:businessnetwork
• Creating a business network structure
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
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
38
Bidding Service Model 정의 (*.cto)
Model 정의 III
39
로그인
기능 및 화면 기획 I
BiddingService
ID
로그인
로그인
PASSWORD
회원가입
40
회원 가입
기능 및 화면 기획 II
BiddingService
ID
Seller 등록
회원가입
가입
PASSWORD
PASSWORD 확인
이름
수정
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
상품등록
기능 및 화면 기획 IV
Category
상품명
부가설명
사진등록
BiddingService 상품등록
파일에서 찾아보기
선택
등록 수정
43
상품리스트
기능 및 화면 기획 V
BiddingService 경매 리스트 상품 리스트 개인 정보 수정
NO 상품명 상세정보 상태
1 상품명 노출 상품 상세 정보 노출 경매완료
2 상품명 노출 상품 상세 정보 노출 경매완료
3 상품명 노출 상품 상세 정보 노출 경매완료
4 상품명 노출 상품 상세 정보 노출 경매완료
5 상품명 노출 상품 상세 정보 노출 경매취소
6 상품명 노출 상품 상세 정보 노출 경매완료
7 상품명 노출 상품 상세 정보 노출 경매중
8 상품명 노출 상품 상세 정보 노출 -
9 상품명 노출 상품 상세 정보 노출 -
상품 등록
경매등록
경매등록
경매등록
경매완료
경매완료
경매완료
경매완료
경매완료
경매중
상품 리스트
44
경매 상품 등록
기능 및 화면 기획 VI
BiddingService 경매 리스트 상품 리스트 개인 정보 수정
경매 상품 등록
~경 매 시 간
경매시작가 55,000
200,000경매종료가
경매 시작
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금 액
경매 종료
신청
Part 4.
Hyperledger Composer
Bidding Service
47
https://github.com/DAOU-Technology/BiddingService
https://github.com/DAOU-Technology/AngularBiddingService
Bidding Service Repository
48
Hyperledger Fabric Install
$ npm install -g composer-cli@0.19
$ npm install -g composer-rest-server@0.19
$ npm install -g generator-hyperledger-composer@0.19
$ npm install -g yo
$ npm install -g composer-playground@0.19
$ mkdir ~/fabric-dev-servers && cd ~/fabric-dev-servers
$ curl -O https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev-
servers/fabric-dev-servers.tar.gz
$ tar -xvf fabric-dev-servers.tar.gz
$ cd ~/fabric-dev-servers
$ export FABRIC_VERSION=hlfv11
$ ./downloadFabric.sh
$ cd ~/fabric-dev-servers
$ export FABRIC_VERSION=hlfv11
$ ./startFabric.sh
$ ./createPeerAdminCard.sh
• Install Components
• Install Fabric
• Start Fabric
$ composer-playground
http://localhost:8080/login
• Start Playground
49
Business Network Archive Settings I
composer archive create -t dir -n .
$ composer network install --card PeerAdmin@hlfv1 --archiveFile bidding-service@0.0.1.bna
$ composer network start --card PeerAdmin@hlfv1 --networkName bidding-service --networkVersion 0.0.1 -
-networkAdmin admin --networkAdminEnrollSecret adminpw
$ composer card import --file admin@bidding-service.card
$ composer network ping --card admin@bidding-service
$ cd bidding-service
$ yo hyperledger-composer:angular
$ cd angular-bidding-service
$ npm start
• Generate Business Network Archive
• Deploying Business Network
• Start Angular Application
$ vi package.json
5 "name": "bidding-service",
6 "version": "0.0.2",
7 "description": "hyperledger bidding service",
$ composer network install --card PeerAdmin@hlfv1 --archiveFile bidding-service@0.0.2.bna
$ composer network upgrade --card PeerAdmin@hlfv1 --networkName bidding-service --networkVersion
0.0.2
• Upgrade Business Network Archive
$ composer-rest-server
• Start Rest API Server
50
Business Network Archive Settings II
$ vi package.json
5 "name": "bidding-service",
6 "version": "0.0.2",
7 "description": "hyperledger bidding service",
$ composer network install --card PeerAdmin@hlfv1 --archiveFile bidding-service@0.0.2.bna
$ composer network upgrade --card PeerAdmin@hlfv1 --networkName bidding-service --networkVersion
0.0.2
• Upgrade Business Network Archive
51
생성된 Angular 어플리케이션 디자인 변경
Angular application 디자인
52
생성된 Angular 어플리케이션 디자인 변경
Angular application 디자인
53
생성된 Angular 어플리케이션 디자인 변경
Angular application 디자인
54
생성된 Angular 어플리케이션 디자인 변경
Angular application 디자인
55
생성된 Angular 어플리케이션 디자인 변경
Angular application 디자인
56
생성된 Angular 어플리케이션 디자인 변경
Angular application 디자인
57
생성된 Angular 어플리케이션 디자인 변경
Angular application 디자인
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

More Related Content

What's hot

Hyperledger farbric build your first network install and analysis
Hyperledger farbric   build your first network install and analysisHyperledger farbric   build your first network install and analysis
Hyperledger farbric build your first network install and analysis병준 김
 
(131102) #fitalk get windows logon password in memory dump
(131102) #fitalk   get windows logon password in memory dump(131102) #fitalk   get windows logon password in memory dump
(131102) #fitalk get windows logon password in memory dumpINSIGHT FORENSIC
 
하이퍼레저 패브릭 실습자료
하이퍼레저 패브릭 실습자료하이퍼레저 패브릭 실습자료
하이퍼레저 패브릭 실습자료TIMEGATE
 
(Fios#03) 2. 네트워크 가상화 환경에서의 침해대응
(Fios#03) 2. 네트워크 가상화 환경에서의 침해대응(Fios#03) 2. 네트워크 가상화 환경에서의 침해대응
(Fios#03) 2. 네트워크 가상화 환경에서의 침해대응INSIGHT FORENSIC
 
하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요Seung-Woo Kang
 
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
 
20150511 jun lee_openstack neutron 분석 (최종)
20150511 jun lee_openstack neutron 분석 (최종)20150511 jun lee_openstack neutron 분석 (최종)
20150511 jun lee_openstack neutron 분석 (최종)rootfs32
 
Oracle Blockchain_JaeHo Park_CTO
Oracle Blockchain_JaeHo Park_CTOOracle Blockchain_JaeHo Park_CTO
Oracle Blockchain_JaeHo Park_CTOOracle Korea
 
확산되는 소프트웨어 정의 (SDx) 개념 및 동향
확산되는 소프트웨어 정의 (SDx) 개념 및 동향확산되는 소프트웨어 정의 (SDx) 개념 및 동향
확산되는 소프트웨어 정의 (SDx) 개념 및 동향Ian Choi
 
if kakao dev 2019_Ground X_Session 02
if kakao dev 2019_Ground X_Session 02if kakao dev 2019_Ground X_Session 02
if kakao dev 2019_Ground X_Session 02Klaytn
 
네트워크 가상화를 통한 효율적인 빅데이터 처리
네트워크 가상화를 통한 효율적인 빅데이터 처리네트워크 가상화를 통한 효율적인 빅데이터 처리
네트워크 가상화를 통한 효율적인 빅데이터 처리정명훈 Jerry Jeong
 
[TeamStudy-022] Docker
[TeamStudy-022] Docker[TeamStudy-022] Docker
[TeamStudy-022] DockerWonjun Hwang
 
NFV Architectural Framework
NFV Architectural FrameworkNFV Architectural Framework
NFV Architectural FrameworkSeung-Hoon Baek
 
TXGX 2019_Jesse_Klaytn API Service
TXGX 2019_Jesse_Klaytn API ServiceTXGX 2019_Jesse_Klaytn API Service
TXGX 2019_Jesse_Klaytn API ServiceKlaytn
 
1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기
1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기
1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기Hyperledger Korea User Group
 
Brocade Vyatta Controller Overview
Brocade Vyatta Controller OverviewBrocade Vyatta Controller Overview
Brocade Vyatta Controller OverviewSeung-Hoon Baek
 
Mqtt 소개
Mqtt 소개Mqtt 소개
Mqtt 소개Junho Lee
 

What's hot (19)

[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다
[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다
[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다
 
Hyperledger farbric build your first network install and analysis
Hyperledger farbric   build your first network install and analysisHyperledger farbric   build your first network install and analysis
Hyperledger farbric build your first network install and analysis
 
(131102) #fitalk get windows logon password in memory dump
(131102) #fitalk   get windows logon password in memory dump(131102) #fitalk   get windows logon password in memory dump
(131102) #fitalk get windows logon password in memory dump
 
하이퍼레저 패브릭 실습자료
하이퍼레저 패브릭 실습자료하이퍼레저 패브릭 실습자료
하이퍼레저 패브릭 실습자료
 
(Fios#03) 2. 네트워크 가상화 환경에서의 침해대응
(Fios#03) 2. 네트워크 가상화 환경에서의 침해대응(Fios#03) 2. 네트워크 가상화 환경에서의 침해대응
(Fios#03) 2. 네트워크 가상화 환경에서의 침해대응
 
하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요
 
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
 
20150511 jun lee_openstack neutron 분석 (최종)
20150511 jun lee_openstack neutron 분석 (최종)20150511 jun lee_openstack neutron 분석 (최종)
20150511 jun lee_openstack neutron 분석 (최종)
 
Oracle Blockchain_JaeHo Park_CTO
Oracle Blockchain_JaeHo Park_CTOOracle Blockchain_JaeHo Park_CTO
Oracle Blockchain_JaeHo Park_CTO
 
확산되는 소프트웨어 정의 (SDx) 개념 및 동향
확산되는 소프트웨어 정의 (SDx) 개념 및 동향확산되는 소프트웨어 정의 (SDx) 개념 및 동향
확산되는 소프트웨어 정의 (SDx) 개념 및 동향
 
if kakao dev 2019_Ground X_Session 02
if kakao dev 2019_Ground X_Session 02if kakao dev 2019_Ground X_Session 02
if kakao dev 2019_Ground X_Session 02
 
네트워크 가상화를 통한 효율적인 빅데이터 처리
네트워크 가상화를 통한 효율적인 빅데이터 처리네트워크 가상화를 통한 효율적인 빅데이터 처리
네트워크 가상화를 통한 효율적인 빅데이터 처리
 
[TeamStudy-022] Docker
[TeamStudy-022] Docker[TeamStudy-022] Docker
[TeamStudy-022] Docker
 
NFV Architectural Framework
NFV Architectural FrameworkNFV Architectural Framework
NFV Architectural Framework
 
TXGX 2019_Jesse_Klaytn API Service
TXGX 2019_Jesse_Klaytn API ServiceTXGX 2019_Jesse_Klaytn API Service
TXGX 2019_Jesse_Klaytn API Service
 
1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기
1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기
1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기
 
Brocade Vyatta Controller Overview
Brocade Vyatta Controller OverviewBrocade Vyatta Controller Overview
Brocade Vyatta Controller Overview
 
멀티·하이브리드 클라우드 구축 전략 - 네이버비즈니스플랫폼 박기은 CTO
멀티·하이브리드 클라우드 구축 전략 - 네이버비즈니스플랫폼 박기은 CTO멀티·하이브리드 클라우드 구축 전략 - 네이버비즈니스플랫폼 박기은 CTO
멀티·하이브리드 클라우드 구축 전략 - 네이버비즈니스플랫폼 박기은 CTO
 
Mqtt 소개
Mqtt 소개Mqtt 소개
Mqtt 소개
 

Similar to Block chain bidding_System

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
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트iFunFactory Inc.
 
애플리케이션 최적화를 위한 컨테이너 인프라 구축
애플리케이션 최적화를 위한 컨테이너 인프라 구축애플리케이션 최적화를 위한 컨테이너 인프라 구축
애플리케이션 최적화를 위한 컨테이너 인프라 구축rockplace
 
Introducing the safest security system, IBM LinuxONE
Introducing the safest security system, IBM LinuxONE Introducing the safest security system, IBM LinuxONE
Introducing the safest security system, IBM LinuxONE HyungSun(Sean) Kim
 
[IBM 서버] 가장 강력한 보안을 자랑하는 서버시스템 Linuxone 을 소개합니다.
[IBM 서버] 가장 강력한 보안을 자랑하는 서버시스템 Linuxone 을 소개합니다.[IBM 서버] 가장 강력한 보안을 자랑하는 서버시스템 Linuxone 을 소개합니다.
[IBM 서버] 가장 강력한 보안을 자랑하는 서버시스템 Linuxone 을 소개합니다.(Joe), Sanghun Kim
 
[ETHCon Korea 2019] Kim Taekgyun 김택균
[ETHCon Korea 2019] Kim Taekgyun 김택균[ETHCon Korea 2019] Kim Taekgyun 김택균
[ETHCon Korea 2019] Kim Taekgyun 김택균ethconkr
 
[Partner TechForum] 금융 서비스를 위한 블록체인 구축사례 소개
[Partner TechForum] 금융 서비스를 위한 블록체인 구축사례 소개[Partner TechForum] 금융 서비스를 위한 블록체인 구축사례 소개
[Partner TechForum] 금융 서비스를 위한 블록체인 구축사례 소개Amazon Web Services Korea
 
Bitcoin 2.0(blockchain technology 2)
Bitcoin 2.0(blockchain technology 2)Bitcoin 2.0(blockchain technology 2)
Bitcoin 2.0(blockchain technology 2)Wooseung Kim
 
Cross-Platfrom 기반 Agent 개발
 Cross-Platfrom 기반 Agent 개발 Cross-Platfrom 기반 Agent 개발
Cross-Platfrom 기반 Agent 개발ssuser2e5c461
 
한대희 Web proxy_개발_2006년11월_pas_ktf
한대희 Web proxy_개발_2006년11월_pas_ktf한대희 Web proxy_개발_2006년11월_pas_ktf
한대희 Web proxy_개발_2006년11월_pas_ktfDaehee Han
 
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdfOpen Source Consulting
 
Hyperconnect pycon 2019
Hyperconnect pycon 2019Hyperconnect pycon 2019
Hyperconnect pycon 2019Jun Young Lee
 
(130511) #fitalk utilization of ioc, ioaf and sig base
(130511) #fitalk   utilization of ioc, ioaf and sig base(130511) #fitalk   utilization of ioc, ioaf and sig base
(130511) #fitalk utilization of ioc, ioaf and sig baseINSIGHT FORENSIC
 
미디움 회사소개서
미디움 회사소개서미디움 회사소개서
미디움 회사소개서상민 박
 
Medium Company profile
Medium Company profileMedium Company profile
Medium Company profile상민 박
 
[Korean](주) 미디움 회사소개서
[Korean](주) 미디움 회사소개서[Korean](주) 미디움 회사소개서
[Korean](주) 미디움 회사소개서JaeKwon9
 
5G Cloud 기술
5G Cloud 기술5G Cloud 기술
5G Cloud 기술James Ahn
 
Private cloud network architecture (2018)
Private cloud network architecture (2018)Private cloud network architecture (2018)
Private cloud network architecture (2018)Gasida Seo
 
Spring cloud on kubernetes
Spring cloud on kubernetesSpring cloud on kubernetes
Spring cloud on kubernetesSangSun Park
 

Similar to Block chain bidding_System (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
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
 
애플리케이션 최적화를 위한 컨테이너 인프라 구축
애플리케이션 최적화를 위한 컨테이너 인프라 구축애플리케이션 최적화를 위한 컨테이너 인프라 구축
애플리케이션 최적화를 위한 컨테이너 인프라 구축
 
Introducing the safest security system, IBM LinuxONE
Introducing the safest security system, IBM LinuxONE Introducing the safest security system, IBM LinuxONE
Introducing the safest security system, IBM LinuxONE
 
[IBM 서버] 가장 강력한 보안을 자랑하는 서버시스템 Linuxone 을 소개합니다.
[IBM 서버] 가장 강력한 보안을 자랑하는 서버시스템 Linuxone 을 소개합니다.[IBM 서버] 가장 강력한 보안을 자랑하는 서버시스템 Linuxone 을 소개합니다.
[IBM 서버] 가장 강력한 보안을 자랑하는 서버시스템 Linuxone 을 소개합니다.
 
[ETHCon Korea 2019] Kim Taekgyun 김택균
[ETHCon Korea 2019] Kim Taekgyun 김택균[ETHCon Korea 2019] Kim Taekgyun 김택균
[ETHCon Korea 2019] Kim Taekgyun 김택균
 
[Partner TechForum] 금융 서비스를 위한 블록체인 구축사례 소개
[Partner TechForum] 금융 서비스를 위한 블록체인 구축사례 소개[Partner TechForum] 금융 서비스를 위한 블록체인 구축사례 소개
[Partner TechForum] 금융 서비스를 위한 블록체인 구축사례 소개
 
모바일을 위한 (AWS) 클라우드 기술 동향
모바일을 위한 (AWS) 클라우드 기술 동향 모바일을 위한 (AWS) 클라우드 기술 동향
모바일을 위한 (AWS) 클라우드 기술 동향
 
Bitcoin 2.0(blockchain technology 2)
Bitcoin 2.0(blockchain technology 2)Bitcoin 2.0(blockchain technology 2)
Bitcoin 2.0(blockchain technology 2)
 
Cross-Platfrom 기반 Agent 개발
 Cross-Platfrom 기반 Agent 개발 Cross-Platfrom 기반 Agent 개발
Cross-Platfrom 기반 Agent 개발
 
한대희 Web proxy_개발_2006년11월_pas_ktf
한대희 Web proxy_개발_2006년11월_pas_ktf한대희 Web proxy_개발_2006년11월_pas_ktf
한대희 Web proxy_개발_2006년11월_pas_ktf
 
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
[오픈테크넷서밋2022] 국내 PaaS(Kubernetes) Best Practice 및 DevOps 환경 구축 사례.pdf
 
Hyperconnect pycon 2019
Hyperconnect pycon 2019Hyperconnect pycon 2019
Hyperconnect pycon 2019
 
(130511) #fitalk utilization of ioc, ioaf and sig base
(130511) #fitalk   utilization of ioc, ioaf and sig base(130511) #fitalk   utilization of ioc, ioaf and sig base
(130511) #fitalk utilization of ioc, ioaf and sig base
 
미디움 회사소개서
미디움 회사소개서미디움 회사소개서
미디움 회사소개서
 
Medium Company profile
Medium Company profileMedium Company profile
Medium Company profile
 
[Korean](주) 미디움 회사소개서
[Korean](주) 미디움 회사소개서[Korean](주) 미디움 회사소개서
[Korean](주) 미디움 회사소개서
 
5G Cloud 기술
5G Cloud 기술5G Cloud 기술
5G Cloud 기술
 
Private cloud network architecture (2018)
Private cloud network architecture (2018)Private cloud network architecture (2018)
Private cloud network architecture (2018)
 
Spring cloud on kubernetes
Spring cloud on kubernetesSpring cloud on kubernetes
Spring cloud on kubernetes
 

Block chain bidding_System

  • 1. 블록체인 서비스 하이퍼렛저 페브릭 Exercise 다우기술 | 1조 2019.01.04
  • 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
  • 3. Part 1. Blockchain & Hyperledger Fabric Introduction
  • 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 메시징 • 수동방식의 시간 소모적인 종이 기반 업무 처리 • 불법적인 프로세스를 검출하기 위해서는 정보가 부족한 환경 • 컨테이너 선적을 처리하는 관리 비용은 실제 물리적 수송 비용과 비 슷합니다 • 종단 간 공급망 정보(원장)에 즉각적이고 안전하게 액세스 할 수 있음 • 디지털 문서의 신뢰성 및 불변성 보장 • 신뢰할 수있는 조직 간 워크 플로 • 더 나은 위험 평가 및 불필요한 개입 최소화 • 관리 비용을 크게 절감하고 국가간 관련 서류 전달에드는 비용 을 줄일 수 있음
  • 10. 10 항만 물류: TradeLens (Maersk-IBM) 개방적이고 중립적인 Supply chain platform https://docs.tradelens.com/learn/tradelens_overview/
  • 11. Part 2. Creating a Hyperledger Composer Solution
  • 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
  • 20. 20 Business Network Archive 배포 II 컴포저 플레이그라운드를 사용하여 배포 • Composer Playground 여기 또는 로컬에서 설정
  • 21. 21 Business Network Archive 배포 III 컴포저 플레이그라운드를 사용하여 배포 • Create New Particypant 선택 후 Trader, Commodity 생성 및 Trade 트랜잭션 제출
  • 22. 22 Business Network Archive 배포 IV 컴포저 플레이그라운드를 사용하여 배포 { "$class": "org.acme.mynetwork.Trader", "tradeId": "traderA", "firstName": "Tobias", "lastName": "Funke" } { "$class": "org.acme.mynetwork.Trader", "tradeId": "traderB", "firstName": "Simon", "lastName": "Stone" } { "$class": "org.acme.mynetwork.Commodity", "tradingSymbol": "commodityA", "description": "Sample Commodity", "mainExchange": "Dollar", "quantity": 100, "owner": "resource:org.acme.mynetwork.Trader#traderA" } { "$class": "org.acme.mynetwork.Trade", "commodity": "resource:org.acme.mynetwork.Commodity#commodityA", "newOwner": "resource:org.acme.mynetwork.Trader#traderB" } • Commodity • Trade • Trader
  • 23. 23 Business Network Archive 배포 V 컴포저 플레이그라운드를 사용하여 배포 • Transaction 체크
  • 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
  • 31. 31 Hyperledger Fabric을 이용한 경매시스템 BM 스케치 BM 스케치
  • 32. 32 Buyer는? Use Case I Login Registeration View Products View Bidding Information Offering of a Possible PriceBuyer
  • 33. 33 Seller는? Use Case II Login Registeration View Bidding Information Regist Product Start Bidding View Products Close Bidding Seller
  • 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
  • 38. 38 Bidding Service Model 정의 (*.cto) Model 정의 III
  • 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금 액 경매 종료 신청
  • 48. 48 Hyperledger Fabric Install $ npm install -g composer-cli@0.19 $ npm install -g composer-rest-server@0.19 $ npm install -g generator-hyperledger-composer@0.19 $ npm install -g yo $ npm install -g composer-playground@0.19 $ mkdir ~/fabric-dev-servers && cd ~/fabric-dev-servers $ curl -O https://raw.githubusercontent.com/hyperledger/composer-tools/master/packages/fabric-dev- servers/fabric-dev-servers.tar.gz $ tar -xvf fabric-dev-servers.tar.gz $ cd ~/fabric-dev-servers $ export FABRIC_VERSION=hlfv11 $ ./downloadFabric.sh $ cd ~/fabric-dev-servers $ export FABRIC_VERSION=hlfv11 $ ./startFabric.sh $ ./createPeerAdminCard.sh • Install Components • Install Fabric • Start Fabric $ composer-playground http://localhost:8080/login • Start Playground
  • 49. 49 Business Network Archive Settings I composer archive create -t dir -n . $ composer network install --card PeerAdmin@hlfv1 --archiveFile bidding-service@0.0.1.bna $ composer network start --card PeerAdmin@hlfv1 --networkName bidding-service --networkVersion 0.0.1 - -networkAdmin admin --networkAdminEnrollSecret adminpw $ composer card import --file admin@bidding-service.card $ composer network ping --card admin@bidding-service $ cd bidding-service $ yo hyperledger-composer:angular $ cd angular-bidding-service $ npm start • Generate Business Network Archive • Deploying Business Network • Start Angular Application $ vi package.json 5 "name": "bidding-service", 6 "version": "0.0.2", 7 "description": "hyperledger bidding service", $ composer network install --card PeerAdmin@hlfv1 --archiveFile bidding-service@0.0.2.bna $ composer network upgrade --card PeerAdmin@hlfv1 --networkName bidding-service --networkVersion 0.0.2 • Upgrade Business Network Archive $ composer-rest-server • Start Rest API Server
  • 50. 50 Business Network Archive Settings II $ vi package.json 5 "name": "bidding-service", 6 "version": "0.0.2", 7 "description": "hyperledger bidding service", $ composer network install --card PeerAdmin@hlfv1 --archiveFile bidding-service@0.0.2.bna $ composer network upgrade --card PeerAdmin@hlfv1 --networkName bidding-service --networkVersion 0.0.2 • Upgrade Business Network Archive
  • 51. 51 생성된 Angular 어플리케이션 디자인 변경 Angular application 디자인
  • 52. 52 생성된 Angular 어플리케이션 디자인 변경 Angular application 디자인
  • 53. 53 생성된 Angular 어플리케이션 디자인 변경 Angular application 디자인
  • 54. 54 생성된 Angular 어플리케이션 디자인 변경 Angular application 디자인
  • 55. 55 생성된 Angular 어플리케이션 디자인 변경 Angular application 디자인
  • 56. 56 생성된 Angular 어플리케이션 디자인 변경 Angular application 디자인
  • 57. 57 생성된 Angular 어플리케이션 디자인 변경 Angular application 디자인
  • 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