20. 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
…
33. 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
35. 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)
37. 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)
41. 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 부터
기록을 조회
43. 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 !!
45. 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
기록은 블록체인에서
관리 가능
47. 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 ??
61. 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 를 가져오는 메서드
63. 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. 64
※ 주의: Phantom Read
3 4~ Consensus 단계
Orderer
Block
Make
…
Plus Event
Plus Event
65. 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. 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
67. 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