Fabric High-Throughput
(부제: 당신의 TPS 는 안녕하십니까?)
겜퍼 이경석
2
발표자 소개
Co Founder
Blockchain Developer
Blockchain Yotube 운영
사업개발前)
現)
온라인과 오프라인이 하나되는 세상, 겜퍼
3
High-Throughput 그게 뭐야?
출처: https://github.com/hyperledger/fabric-samples/blob/release-1.4/high-throughput
4
속도를 높이는 방법!!
블록 생성 속도를 짧게?
5
속도를 높이는 방법!!
합의 과정을 빠르게?
6
속도를 높이는 방법!!
좋은 하드웨어 사용?
7
TPS 향상 방법
블록 사이즈를 크게?
블록 생성 속도를 짧게?
합의 과정을 빠르게?
좋은 하드웨어 사용?
8
TPS 향상 방법
블록 사이즈를 크게?
블록 생성 속도를 짧게?
합의 과정을 빠르게?
좋은 하드웨어 사용?
9
<Success Transaction>
늘리는 아이디어!!!
10
(수정된)Marbles 예제
1. 구슬 생성 (init)
2. 구슬 주고 받을 수 있음 (transfer)
11
MVCC 란?
12
Lock 방식
Alice Bob
Alice
10개
Bob
10개
Bob 10개구나 5개 줘야지 나 10개구나 5개 추가해야지
13
Lock 방식
Alice Bob
Alice
10개
Bob
10개
Bob 10개구나 5개 줘야지 나 10개구나 5개 추가해야지
5개 전송
5개 추가
DB Lock
Alice
5개
Bob
15개
Lock 해제
대기
14
Lock 방식
Alice Bob
Alice
10개
Bob
10개
Bob 10개구나 5개 줘야지 나 10개구나 5개 추가해야지
5개 전송
5개 추가
DB Lock
Alice
5개
Bob
15개
Lock 해제
대기
5개 추가 시작
Alice
5개
Bob
20개
10 + 5 = 20 ??????
15
MVCC 방식
Alice Bob
Alice
10개
Bob
10개
Bob 10개구나 5개 줘야지 나 10개구나 5개 추가해야지
V1
16
Alice Bob
Alice
10개
Bob
10개
Bob 10개구나 5개 줘야지 나 10개구나 5개 추가해야지
5개 전송
5개 추가
Alice
5개
Bob
15개
V1
V2
V2
V2
동일한 버전
MVCC 방식
17
MVCC 충돌 !
18
Block4
Block3
Block2
Block1
Block5
V1
V2
V3
V4
V5
19
Block4
Block3
Block2
Block1
Block5
Transaction (key: Bob, value: 0)
Transaction (key: Bob, value: 10)
Transaction (key: Bob, value: 20)
Transaction (key: Bob, value: 15)
V1
V2
V3
V3
Fail
V1
V2
World State
V3
20
Alice Bob Carol
10개 10개 10개
World State
Block3
(key: Alice, value 5), (key: Bob, value: 15)
(key: Carol, value: 8), (key: Bob, value: 12)
(key: Carol, value: 9), (key: Alice, value: 11)
(key: Bob, value: 5), (key: Alice, value: 15)
(key: Bob, value: 5), (key: Carol, value: 15)
(key: Alice, value: 2), (key: Carol, value: 12)
Alice Bob5
Alice Carol2
Bob Carol5
Bob Alice5
Carol Alice1
Carol Bob2
…
21
https://hyperledger-
fabric.readthedocs.io/en/release-
1.4/readwrite.html
잠깐! 조금 더 자세히 알고 싶다면?
1. Fabric ReadDoc 2. dappCampus 강의
https://youtu.be/FN2zoG3LRwU
Read-Write set semantics [Hyperledger Fabric 개념] 02. Fabric Read&Write Set
22
(key: Alice, value: 120000),
(key: A, value: 80000)
Alice
₩100,000 을 5명이
더치페이 하는 상황
₩20,000
A
₩100,000
- ₩20,000
23
Alice
₩100,000 을 5명이
더치페이 하는 상황
₩20,000
(key: Alice, value: 120000),
(key: A, value: 80000)
A
₩100,000
- ₩20,000
B
₩100,000
- ₩20,000
C
₩100,000
- ₩20,000
D
₩100,000
- ₩20,000
₩20,000
₩20,000
₩20,000
(key: Alice, value: 120000),
(key: B, value: 80000)
(key: Alice, value: 120000),
(key: C, value: 80000)
(key: Alice, value: 120000),
(key: D, value: 80000)
Fail
Fail
24
(부제: 당신의 TPS 는 안녕하십니까?)
25
(부제: 당신의 TPS 는 안녕하십니까?)
나?
10만 TPS
블록체인
26
(부제: 당신의 TPS 는 안녕하십니까?)
나?
10만 TPS
블록체인
Success
Fail
Fail
Fail
Fail
Fail
Fail
Fail
하지만 한개의
Transaction 만 성공
시킬 수 있지
27
(부제: 당신의 TPS 는 안녕하십니까?)
나?
10만 TPS
블록체인
Success
Fail
Fail
Fail
Fail
Fail
Fail
Fail
하지만 한개의
Transaction 만 성공
시킬 수 있지
?
28
나?
10만 TPS
블록체인
Success
Fail
Fail
Fail
Fail
Fail
Fail
Fail
하지만 한개의
Transaction 만 성공
시킬 수 있지
?<Success Transaction>
늘리는 아이디어
High-Throughput !!!!
29
What Idea???
30
1. Unique Key
31
2. Event Source와 비슷하게
32
Event Source ??
33
Event Source?
기존의 저장 방식 이벤트 소스
Alice
10개
Bob
0개
Alice
5개
Bob
5개
Alice
20개
Bob
0개
상태
변화
Alice deposit
20
Alice to Bob
15
Bob to Alice
5
이벤트
기록Alice
5개
Bob
15개
Bob exit 10
34
Chaincode 에 적용해보자
35
Alice Bob Carol
10개 10개 10개
World State
1. Alice 가 Bob 에게
구슬 5개를 보낸다.
Key: Transfer/Alice/Bob/5/txid
Value: 0x00
CompositeKey
이용
(key: Transfer/Alice/Bob/5/txid,
value: 0x00)
36
(key: Transfer/Alice/Carol/2/txid,
value: 0x00)
Alice Bob Carol
10개 10개 10개
World State
2. Alice 가 Carol 에게
구슬 2개를 보낸다.
Key: Transfer/Alice/Carol/2/txid
Value: 0x00
(key: Transfer/Alice/Bob/5/txid,
value: 0x00)
37
(key: Transfer/Bob/Alice/5/txid,
value: 0x00)
Alice Bob Carol
10개 10개 10개
World State
3. Bob 이 Carol 에게
구슬 5개를 보낸다.
Key: Transfer/Bob/Carol/5/txid
Value: 0x00
4. Bob 이 Alice 에게
구슬 5개를 보낸다.
Key: Transfer/Bob/Alice/5/txid
Value: 0x00
(key: Transfer/Alice/Carol/2/txid,
value: 0x00)
(key: Transfer/Alice/Bob/5/txid,
value: 0x00)
(key: Transfer/Bob/Carol/5/txid,
value: 0x00)
38
정보를 가져오고 싶다면?
39
Block4
Block3
Block2
Block1
Block5
모든 기록을
조회한다.
World State
?
40
조회해야 하는 데이터가
100만 개라면?
41
Snapshot !!
Alice deposit 40
Alice to Bob 30
Alice to Bob 5
Bob exit 10
Bob to Alice 5
Bob to Alice 5
Bob to Alice 5
Alice exit 10
Alice : 10
Bob : 20
Snapshot
Snapshot 부터
기록을 조회
42
Chaincode 에서는?
43
Alice deposit 40
Alice to Bob 30
Alice to Bob 5
Bob exit 10
Bob to Alice 5
Del
Bob to Alice 5
Bob to Alice 5
Alice exit 10
1. 특정 범위까지 값을 제거
2. 넣어야 하는 값 만큼
event 형식으로 넣음
‘’ to Alice 10
Put
‘’ to Bob 20
Pruning !!
44
Why Different ?
45
Alice deposit 40
Alice to Bob 30
Alice to Bob 5
Bob exit 10
Bob to Alice 5
Bob to Alice 5
Bob to Alice 5
Alice exit 10
Block4
Block3
Block2
Block1
Block5
Transaction
Transaction
Transaction
Transaction
Transaction
!
World State
기록은 블록체인에서
관리 가능
46
But…
47
Alice
₩100,000 을 가진 Alice 가
₩50,000 씩 네사람에게 보내면?
₩50,000
A B C D
₩50,000
₩50,000
₩50,000
(key: Transfer/Alice/C/50000/txid,
value: 0x00)
(key: Transfer/Alice/B/50000/txid,
value: 0x00)
(key: Transfer/Alice/A/50000/txid,
value: 0x00)
(key: Transfer/Alice/D/50000/txid,
value: 0x00)
100,000 – 4x(50,000)
= -100,000 ??
48
Solution !
출처: https://github.com/hyperledger/fabric-samples/blob/release-1.4/high-throughput
49
Server
polling
Alice
- 데이터를 polling 하다가 문제가 생기면 막아라
Solution 1
50
Server
polling
ProblemAlice
Stop Alice Account
- 데이터를 polling 하다가 문제가 생기면 막아라
Solution 1
51
Alice
Server
(SDK)
Total balance
2
4
1 3
5
- SDK 를 활용한 서버에서 먼저 체크해라
Solution 2 (실습 예정)
52
Problem
- SDK 를 활용한 서버에서 먼저 체크해라
Alice
Server
(SDK)
Total balance
2
1
Solution 2 (실습 예정)
Fail
3
53
Alice
Amount > $1,000
Fail
- $1,000 이상을 보내는 건 거절해라
Solution 3
54
$1000Alice
Server
(SDK)
- $1,000 이상을 보내는 건 거절해라
- (SDK 상에서 막아도 OK)
Fail
Solution 3
55
Fabric Design
Problem??
56
출처: https://wiki.hyperledger.org/display/LMDWG/Use+Cases
Coin
Token
Crypto
Currency
Balance
…
Fabric Purpose
57
ex> IOT?
key: Temperature/SensorA/24/txid
value: 0x00
key: Temperature/SensorA/22/txid
value: 0x00
key: Temperature/SensorA/25/txid
value: 0x00
변해도
무관
58
사용하는 목적에 맞게
블록체인을 선택하자
59
[실습]
1. High-Througput 적용 전
2. High-Througput 적용 후
3. Solution2 적용
※ 사전 작업
- fabric-samples 의 balance-transfer 예제를
띄울 수 있어야 함
60
[실습 코드 링크]
https://github.com/
Lee-KyungSeok/
meetup-high-throughput
61
※ 주의: Phantom Read
GetStateByPartialCompositeKey
Alice deposit 40
Alice to Bob 30
Alice to Bob 5
Bob exit 10
Bob to Alice 5
Bob to Alice 5
Bob to Alice 5
Alice exit 10
World State
State list 를 가져오는 메서드
62
※ 주의: Phantom Read
63
※ 주의: Phantom Read
1 2~ Endorsement 단계
Alice deposit 40
Alice to Bob 30
Alice to Bob 5
Bob exit 10
Bob to Alice 5
Bob to Alice 5
…
Alice exit 10
World State
Peer
GetStateByPartialCompositeKey
10 개
64
※ 주의: Phantom Read
3 4~ Consensus 단계
Orderer
Block
Make
…
Plus Event
Plus Event
65
※ 주의: Phantom Read
4 ~ Validation 단계
Alice deposit 40
Alice to Bob 30
Bob exit 10
Bob to Alice 5
World State
Peer
GetStateByPartialCompositeKey
10 개
첫번째 Transaction validaton
Plus Event
66
※ 주의: Phantom Read
4 ~ Validation 단계
두번째 Transaction validaton
Alice deposit 40
Alice to Bob 30
Bob exit 10
Bob to Alice 5
World State
Peer
GetStateByPartialCompositeKey
11 개
Plus Event
Alice deposit 40
Alice to Bob 30
Bob exit 10
Bob to Alice 5
World State
Plus Event
67
※ 주의: Phantom Read
4 ~ Validation 단계
두번째 Transaction validaton
Peer
GetStateByPartialCompositeKey
11 개
Endorsement 단계 갯수(10) ≠
Validation 단계 갯수(11)
Phantom Read !!!!! => Fail
68
※ 주의: Phantom Read
반드시 Read Query 에서만 사용 할 것 !!!
69
감사합니다
<QA>

More Related Content

PPTX
PPTX
Rate limits and all about
PPTX
Unix shell scripts
PPTX
Introduction to kafka connector
PPTX
Pros and Cons of Erasure Coding & Replication vs. RAID in Next-Gen Storage
PPTX
Implementing Lightweight Kubernetes(K3s) on Raspberry Pi Stack - Sangam Biradar
PPT
High Performance Mysql
Rate limits and all about
Unix shell scripts
Introduction to kafka connector
Pros and Cons of Erasure Coding & Replication vs. RAID in Next-Gen Storage
Implementing Lightweight Kubernetes(K3s) on Raspberry Pi Stack - Sangam Biradar
High Performance Mysql

What's hot (17)

PDF
Performance Monitoring: Understanding Your Scylla Cluster
PDF
The Google Chubby lock service for loosely-coupled distributed systems
PPT
Functions in C++
PDF
Pseudo Random Number Generators
PDF
A Tutorial on Linear and Differential Cryptanalysis by Howard M. Heys
PPTX
Linux Basic Networking Command
PPTX
Wireshark
PDF
[KubeConEU] Building images efficiently and securely on Kubernetes with BuildKit
PPTX
Data Structures used in Linux kernel
PPTX
Monolithic kernel vs. Microkernel
PDF
Linux Linux Traffic Control
PPTX
Spreadsheets and Database Packages
PDF
Mikrotik router os qos best practice
PDF
Making Linux do Hard Real-time
PPTX
Network automation (NetDevOps) with Ansible
PDF
Linux binary Exploitation - Basic knowledge
Performance Monitoring: Understanding Your Scylla Cluster
The Google Chubby lock service for loosely-coupled distributed systems
Functions in C++
Pseudo Random Number Generators
A Tutorial on Linear and Differential Cryptanalysis by Howard M. Heys
Linux Basic Networking Command
Wireshark
[KubeConEU] Building images efficiently and securely on Kubernetes with BuildKit
Data Structures used in Linux kernel
Monolithic kernel vs. Microkernel
Linux Linux Traffic Control
Spreadsheets and Database Packages
Mikrotik router os qos best practice
Making Linux do Hard Real-time
Network automation (NetDevOps) with Ansible
Linux binary Exploitation - Basic knowledge
Ad

Similar to Fabric High-throughtput (20)

PDF
[ETHCon Korea 2019] Park joohyung 박주형
PPTX
Block chain architecture and hyperledger fabric overview
PPTX
하이퍼레저 페이지 단위 블록 조회
PDF
하이퍼레저 패브릭 데이터 구조
PDF
ChainHero web application hyperledger fabric analysis v 1.0
PDF
하이퍼레저 패브릭 실습자료
PDF
Block chain bidding_System
PPTX
Block chain introduction slideshare
PPTX
Bitcoin transaction
PDF
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
PDF
Ethereum 스마트 컨트랙트 보안
PDF
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
PPTX
도메인 객체의 생명주기
PDF
Hyperledger fabric - tuna fishing analysis
PDF
코어 이더리움
PPTX
1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기
PDF
블록체인 개요
PDF
하이퍼레저 프로젝트 개요
PDF
하이퍼레저 프로젝트 개요
PDF
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[ETHCon Korea 2019] Park joohyung 박주형
Block chain architecture and hyperledger fabric overview
하이퍼레저 페이지 단위 블록 조회
하이퍼레저 패브릭 데이터 구조
ChainHero web application hyperledger fabric analysis v 1.0
하이퍼레저 패브릭 실습자료
Block chain bidding_System
Block chain introduction slideshare
Bitcoin transaction
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ethereum 스마트 컨트랙트 보안
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
도메인 객체의 생명주기
Hyperledger fabric - tuna fishing analysis
코어 이더리움
1908 Hyperledger Fabric 소개 및 첫 네트워크 구축하기
블록체인 개요
하이퍼레저 프로젝트 개요
하이퍼레저 프로젝트 개요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
Ad

Fabric High-throughtput