SlideShare a Scribd company logo
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

Similar to Fabric High-throughtput

딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
WON JOON YOO
 
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
WON JOON YOO
 
Webservice cache strategy
Webservice cache strategyWebservice cache strategy
Webservice cache strategyDaeMyung Kang
 
Scalable webservice
Scalable webserviceScalable webservice
Scalable webservice
DaeMyung Kang
 
Internet Scale Service Arichitecture
Internet Scale Service ArichitectureInternet Scale Service Arichitecture
Internet Scale Service Arichitecture
DaeMyung Kang
 
안드로이드 오픈소스 어플리케이션 블록
안드로이드 오픈소스 어플리케이션 블록안드로이드 오픈소스 어플리케이션 블록
안드로이드 오픈소스 어플리케이션 블록
YoungSu Son
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
Chris Ohk
 
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
Yi-kwon Hwang
 
블록체인 한 번에 이해하기
블록체인 한 번에 이해하기블록체인 한 번에 이해하기
블록체인 한 번에 이해하기
Myung Woon Oh
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABC
Ho Gyu Lee
 
Cocos2dx와 c++11를 이용한 게임 개발
Cocos2dx와 c++11를 이용한 게임 개발Cocos2dx와 c++11를 이용한 게임 개발
Cocos2dx와 c++11를 이용한 게임 개발
권 태혁
 
2021년 3월 20일 개발자 이야기
2021년 3월 20일 개발자 이야기2021년 3월 20일 개발자 이야기
2021년 3월 20일 개발자 이야기
Jay Park
 
B1 최신분산시스템이해결하고있는오래된이슈들
B1 최신분산시스템이해결하고있는오래된이슈들B1 최신분산시스템이해결하고있는오래된이슈들
B1 최신분산시스템이해결하고있는오래된이슈들NAVER D2
 
Blockchain
BlockchainBlockchain
Blockchain
Sungkyun Kim
 
Apache Hive: for business intelligence use and real-time I/O use (Korean)
Apache Hive: for business intelligence use and real-time I/O use (Korean)Apache Hive: for business intelligence use and real-time I/O use (Korean)
Apache Hive: for business intelligence use and real-time I/O use (Korean)
Teddy Choi
 
what is_tabs_share
what is_tabs_sharewhat is_tabs_share
what is_tabs_share
NAVER D2
 
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이
GangSeok Lee
 
Meteor IoT
Meteor IoTMeteor IoT
Meteor IoT
Jaeho Lee
 
Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발
Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발 Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발
Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발
Clova Platform
 
[OpenTRS-001] Hotel California
[OpenTRS-001] Hotel California[OpenTRS-001] Hotel California
[OpenTRS-001] Hotel California
Theori
 

Similar to Fabric High-throughtput (20)

딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
 
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
 
Webservice cache strategy
Webservice cache strategyWebservice cache strategy
Webservice cache strategy
 
Scalable webservice
Scalable webserviceScalable webservice
Scalable webservice
 
Internet Scale Service Arichitecture
Internet Scale Service ArichitectureInternet Scale Service Arichitecture
Internet Scale Service Arichitecture
 
안드로이드 오픈소스 어플리케이션 블록
안드로이드 오픈소스 어플리케이션 블록안드로이드 오픈소스 어플리케이션 블록
안드로이드 오픈소스 어플리케이션 블록
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
 
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
 
블록체인 한 번에 이해하기
블록체인 한 번에 이해하기블록체인 한 번에 이해하기
블록체인 한 번에 이해하기
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABC
 
Cocos2dx와 c++11를 이용한 게임 개발
Cocos2dx와 c++11를 이용한 게임 개발Cocos2dx와 c++11를 이용한 게임 개발
Cocos2dx와 c++11를 이용한 게임 개발
 
2021년 3월 20일 개발자 이야기
2021년 3월 20일 개발자 이야기2021년 3월 20일 개발자 이야기
2021년 3월 20일 개발자 이야기
 
B1 최신분산시스템이해결하고있는오래된이슈들
B1 최신분산시스템이해결하고있는오래된이슈들B1 최신분산시스템이해결하고있는오래된이슈들
B1 최신분산시스템이해결하고있는오래된이슈들
 
Blockchain
BlockchainBlockchain
Blockchain
 
Apache Hive: for business intelligence use and real-time I/O use (Korean)
Apache Hive: for business intelligence use and real-time I/O use (Korean)Apache Hive: for business intelligence use and real-time I/O use (Korean)
Apache Hive: for business intelligence use and real-time I/O use (Korean)
 
what is_tabs_share
what is_tabs_sharewhat is_tabs_share
what is_tabs_share
 
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이
 
Meteor IoT
Meteor IoTMeteor IoT
Meteor IoT
 
Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발
Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발 Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발
Clova Extension 음성기반 게임 기획 및 설계 / FaaS를 이용한 개발
 
[OpenTRS-001] Hotel California
[OpenTRS-001] Hotel California[OpenTRS-001] Hotel California
[OpenTRS-001] Hotel California
 

Fabric High-throughtput