Weitere ähnliche Inhalte Kürzlich hochgeladen (11) Blockchain Engineer Night #41. IBM Blockchain / © 2018 IBM Corporation
Blockchain
Engineer
Night #4
Hyperledger Fabric
/
2. 2
n
n FC b dc a D
n d P d H
n d P d I
IBM Blockchain / © 2018 IBM Corporation
4. 4IBM Blockchain / © 2018 IBM Corporation
ug AlB
(
/
3
/
3
srsr
Q m
L m
H RmAtibB
s rE nFxc S d s r
S Q
C / C
C
C( /
C
C C 3
C( A)
C 3
ohae
C 3 /
p
C
5. 5IBM Blockchain / © 2018 IBM Corporation
( )
•
ü r
•
ü h
• E r t
ü m
• )
/
• e / u
• ) (
r )
•
• m
ü
6. 6IBM Blockchain / © 2018 IBM Corporation
Intel, IoT
Soraitsu, mobile
IBM, Enterprise
EVM
Sovrin, DistributedID
Appl Framework
Deployment
GUI Dashboard
Benchmark Tool
ILP
7. 7IBM Blockchain / © 2018 IBM Corporation
1 20 . 2 2
p H b a d
ü :/
ü
ü
p .
ü
ü .
n H a b r 4 gp
c b 7 F5 i
e
n 4 l V
5
p 5
8. 8
(8 0 2 / 1 00/)2
A
IBM Blockchain / © 2018 IBM Corporation
: / 2 112 1 0 1 1 - 0 //- 1 1 : / 2 8 1
/2 / /2 . -1 -1 2 : 0
9. 9
) 60 0/10 ( 820 0
IBM Blockchain / © 2018 IBM Corporation
. 6 .: 0 - - 0 - .: 0 - / 2 68 6 . 81
10. 10
D E : E 8E G E H / gNa
IBM Blockchain / © 2018 IBM Corporation
/ . / - .
• ptM R mgNcma
• / 3F E B :
ü D E : E )HEE fN pt
ü hNa ma aV: D
• 8 8 DE
ü DDF 8 m NeYN
rs
• m m M 8E fN
• F(dNb Nb
• 1 2EH gNaTon
• iNa Wl U )6 0fN
FAB-6590 / FAB-8078 / FAB-10273
11. 11IBM Blockchain / © 2018 IBM Corporation
O
O O
O
SDK
(HFC)
F
Peer
Endorsement Peer
Committing Peer
!
ü
Fabric-CA
ü
CA
Hyperledger Fabric
HH
•
Certificate Authority (CA)
A
B
12. 12
C / n em d F
IBM Blockchain / © 2018 IBM Corporation
• F F MS
A A M / C
• c bpF s K h dF
gFZ /
• icos OP H u S I aF
A/ / /
• ) fF yxMDbm l r tvx u
( C B
13. 13IBM Blockchain / © 2018 IBM Corporation
A C
A C D D D
1
A C D D
go
c a
D
.
0 1
D
.
0 1
D
.
0 1
D
.
0 1
.
0 1
.
0 1
.
0 1
.
0 1
.
0 1
.
0 1
.
0 1
.
0 1
.
0 1
go c c a
D D D D
A C B
l cn a
1. go c
a L d b
V
b
F d b
F
h e F
1. rC c a
6 r
h i a
14. 14
n
n FC b dc a D
n d P d H
n d P d I
IBM Blockchain / © 2018 IBM Corporation
15. 15
( 1 . no h
IBM Blockchain / © 2018 IBM Corporation
( 1 . F 3 . P c
1 VI c P synhmf no hc
P I - )1 A c P ba P
1
C Ha vgpluc
a
i t o c a V C
a V MC c V
3 .
C c i t o ( 1
. . b Ia C c a
V
. hxed oF . . VP V
r F . VP c S
. c IC .
C c I
16. 16IBM Blockchain / © 2018 IBM Corporation
- - - gir c O P y
gir c -- - - HP
gc b s gir c coa si
1 2 1 -- - - E
--
--
- -
M asdesd gi
r c F H
--
- - - - H
l HP E n p
e E -- HP
S E - -
17. 17
g
IBM Blockchain / © 2018 IBM Corporation
O O
-
C e M P
2 - M S
) ( ) (
TLS
TLS
MSP
CA
CA
CA
Admin
g
18. 18
O
IBM Blockchain / © 2018 IBM Corporation
r L C D Ol O
dhowN O nt k
k N N l O N I k k N
O k N O r
r a O
k LN CO k N O O
k N k N M O ed O
k O N N O O
3 nt k N O O c k dnt N S
L nt k O O nt
k k N O O Ok
edO
NP r k LN
k LN 3 O N
19. 19IBM Blockchain / © 2018 IBM Corporation
P sDL 2 1 2 d D )
DS 2 1 2 L P 2 l
C S R c
l R 2 1 2 DI l C A M S
2 1 2 I M 2 1 2
C wm 2 1 2 M M S
C I R E 2 1 2 C
A M S
l C C S A ( )Po
A M DI l L ae P t C
A M S
r R S
nR l nR DI l M
20. 20
) 3 AS dS
IBM Blockchain / © 2018 IBM Corporation
4
c
(
. 4 . 5
oe
c
(
a
. 3 . 5
. 3 . 5 12 .
. 5
C) 55 3 ( a (
) 55 3 (
31 3 . 2 r
a wt n
a ) 55 3 (P 31 3
) 55 dD
) 55 3 ( )13
d rI
) 3 S d s I ( L I mP L I mE IE
l L m I ) 3 dI K g OI
21. 21
Q
IBM Blockchain / © 2018 IBM Corporation
: rdey c a D m MPaL I C
c S A / uD c aL I
C
h mn i orfyp oDntDm .- S I .- A.- c
aL C h mn i c .- A.- c
aL I Mb C
A / Mb a c aL I C
c a c c C
A / I Q
gsl H Mb C
L E A / / / : / F
22. 22
0 0 10 3 M
IBM Blockchain / © 2018 IBM Corporation
0 0
AF HC
1 00
1 00
E
2 0
1
0
O P
E 1 1
1
AF HC
1
0
O P
1
1 00
1 00
0 0
0 0
0 0
0 0
0 0
1
1
1
1
10 01
23. 23
n
n FC b dc a D
n d P d H
n d P d I
IBM Blockchain / © 2018 IBM Corporation
26. 約束管理アプリを作成... (企業間なら契約/請求管理システム)
Cid1 : AがBに10円返す
Cid2:AがBに本を千円で売却
Cid3 : CとBはx日に面会
Aさん
Bさん
Cさん
Peer
for A
Peer
for B
Peer
for C
Peer
• 全Peerが全約束
データを保持する
• A,B,Cさん(全員)が
全員の約束事を
把握できてしまう
(企業間なら契約書が関係者
以外に見えてしまう)
Blockchain
Network
Cid1 : AがBに10円返す
Cid2:AがBに本を千円で売却
Cid3 : CとBはx日に面会
Cid1 : AがBに10円返す
Cid2:AがBに本を千円で売却
Cid3 : CとBはx日に面会
Cid1 : AがBに10円返す
Cid2:AがBに本を千円で売却
Cid3 : CとBはx日に面会
28. • 所有者を匿名化
• アドレスと所有者の紐付けが手間
• 分析されると特定される可能性あり
• 暗号を使用
• データの暗号化・複合化が手間
• 管理の機能が必要
• マルチチャネルを使用
• チャネルをまたがった処理を実装し
運用・保守する必要あり
• チャネル間処理の安全な実装が必要
既存プライバシー確保方法
⇨ 直観的でなく実装/運用/保守などが色々面倒
29. Private Data Collection (PDC) の概要
• 各PDCは、特定の(複数)Peerのみが
アクセス可能なData collection
• 各PDCにアクセス可能なPeerは
対応するPrivate State DB を持つ
• Private State DBの値のハッシュ値を
Public State DBに保持 (全Peer共通)
• Private State DB の値のハッシュ値を
ブロックデータに保持 (全Peer共通)
30. 約束/契約管理アプリ(全データ共有)
Aさん
Bさん
Cさん
Peer A
(OrgA)
Peer B
(OrgB)
Peer C
(OrgC)
Peer Z
(OrgZ)
Blockchain
Network
Cid1 : AがBに10円返す
Cid2:AがBに本を千円で売却
Cid3 : CとBはx日に面会
Cid1 : AがBに10円返す
Cid2:AがBに本を千円で売却
Cid3 : CとBはx日に面会
Cid1 : AがBに10円返す
Cid2:AがBに本を千円で売却
Cid3 : CとBはx日に面会
Cid1 : AがBに10円返す
Cid2:AがBに本を千円で売却
Cid3 : CとBはx日に面会
• 全Peerが全約束
データを保持する
• A,B,Cさん(全員)が
全員の約束事を
把握できてしまう
(企業間なら契約書が関係者
以外に見えてしまう)
31. DBbc
DBca
DBbc
DBab
Private Data Collectionの定義
( DBxxは対応するprivate DB)
• PDC1 (DBab) OrgA, OrgB
• PDC2 OrgB, OrgC
• PDC3 OrgC,
OrogA
( Peer)
約束/契約管理アプリ(PDCを使用)
Aさん
Bさん
Cさん
Peer A
(OrgA)
Peer B
(OrgB)
Peer C
(OrgC)
Peer Z
(OrgZ)
Blockchain
Network
Private
DB
Shared
DB
凡例
• H(x) は
xのハッシュ値
.
..
.
..
.
..
DBca
Cid1 : AがBに10円返す
Cid2:AがBに本を千円で売却
Cid1 : AがBに10円返す
Cid2:AがBに本を千円で売却
Cid3 : CとBはx日に面会
Cid1 : H(AがBに10円返す)
Cid2:H(AがBに本を千円で売却)
Cid3 : H(CとBはx日に面会)
• 各自が関係する約束
のみ閲覧可能
• Hash値は全員で共有
されるため改竄は困
難
DBab
32. Private Tmp DB1 (Private
RWset
32
Orderer
Client
3. (
- State DB RWset (
- Private DB RWset (
)
Chaincode 2.
(Private DB
Private Tmp DB )
7.
P2P (gossip)
5. 4
private DB
)
8. Private Tmp DB
Private log
Private DB
(tmp DB
)
6.
State DB
Hyperledger Fabric V1.3でのPrivate Dataの処理の流れの概要
State DB
State DB
Private Tmp DB1 (Private RWset
State DB
1. ( )
( transient
)
args: transient:
4.
- RWset (state DB) ,
- RWset (privateDB)
Private DB1
Private DB1
33. Hyperledger Fabric でのPDCの定義
[
{
"name": "collectionMarblePrivateDetails",
"policy": "OR('Org1.member')",
"requiredPeerCount": 1,
"maxPeerCount": 1,
"blockToLive":100
},
{
"name": "collectionMarbles",
"policy": "OR('Org1.member', 'Org2.member')",
"requiredPeerCount": 1,
"maxPeerount": 2,
"blockToLive":0
},
]
peer0 peer1
Org1
Org2
(
(
( (
( (
(
( (
peer0 peer1
D
ac M b
((
P NM C
b ((
N
P NM
collections_config.json
プライベートコレクションを使用するには、この設定ファイルを
記載してchaincodeインストール時に指定する必要があります。
34. ChaincodeでのPDCへのアクセスプリミティブ (golang)
GetPrivateData(collection,key)
• collection key
• GetState(key)
PutPrivateData(collection,key,value)
• collection key value
• PutState(key, value)
// PDC collectionMarbles上で、MyMarbleのコピーMyMarbleCpを作成して登録するコードサンプル
import "github.com/hyperledger/fabric/core/chaincode/shim
stub shim.ChaincodeStubInterface
...
marbleBytes, err := stub.GetPrivateData("collectionMarbles” , “MyMarble” )
err = stub.PutPrivateData("collectionMarbles", “MyMarbleCp” , marbleBytes)
...
35. 権限のないPDCへアクセスしたらどうなるか?
//ruyx ʻndpPeerfo ColMarblePrivateDetails ntb marble1 n qusʼ
# SII G EM G HI T I [ 5 P[G E I PE F I S G _ 3 a1A IEH E F I M E I6I EM a PE F I(aC]
// g khp
H G [SI 1 PE F I M E I6I EM EPI 1 PE F I( S MGI 100]
//ruyx ʻnlePeerfo ColMarblePrivateDetails ntb marble1 n qusʼ
# SII G EM G HI T I [ 5 P[G E I PE F I S G _ 3 a1A IEH E F I M E I6I EM a PE F I(aC]
//s b yb ({ v} m ip glecq
7 1 I H IPI EM I H M T I [& I S I1 E 1,
PI E I1 B 7 B 1B 8EM IH I S M E I HI EM PE F I(1
97 D 3 7 EM IH1
E EG M 61 . EE ,,-FG E0* .HGI )GH)G- FFI ) )- 0E,**H(- -,E ,HI- 0 *I,1
S M E I HE E PE G M S F MG E I M M E EM EF I&
F MG E I M 2 I M &:IM 4 GN= P1 - = P1 ]
M E I HE E I M 2 I M &:IM " M "B ]
37. PDC: Lessons learned / Hints and
• PDCを細分化しすぎると処理が複雑に...
• 例えば、11月の全約束を知るために
複数のトランザクションの実行が必要
• PDC間データ移動ではどちらのPDCにも
アクセスできる人が必要 (single point of trust)
• 合意形成ためのPolicyとの兼合いに注意
• 合意形成のためTxをエンドースするPeerが
必要なPDCにアクセスできる必要があります
• その他
• Transient指定しないと引数値は共有されます
• Init関数でPDCを操作したらエラーになります
• PDCにrange queryの後updateするようなコードは書けない
• orgの中でAnchor peer を指定する必要がある(gossipのため)
-
38. Hyperleger Fabric Private Data Collection の今後
現状のPDC の問題点
• PDCを事前(チェインコードインストール時)に全て明示的に定義しておかなければならない
• 単純にデータ共有グループを考えると事前定義するPDCの数が膨大になる
• N人が参加する約束管理アプリで, 2N-1くらいのPDCを事前定義する必要がある
• しかし実際にはその大部分は無駄になりそう
• 新たな参加者が増えるたびにPDC定義を更新する必要がある
今後の予定 (v2.0; 2019/1Q)
• Local Collection [FAB-7593]
• Local collectionへの書き込みTxをエンドースした組織のピアのみアクセスが可能
• 具体例
• local collection “mycol”のキー”k1”への書込みTx を peer1@org1, peer2@org2がエンドース
(書込み後の”k1”のキーバージョン ver3 とする)
• org1, org2に属するpeerのみが “mycol”のバージョンver3の”k1”の値にアクセス可能
• Org-specific Collection [FAB-10889]
• クライアントが書き込むkeyごとにデータ共有グループを指定可能 (まだdesign段階で少し不明)
39. 参考リソース
• Using Private Data in Fabric
• https://hyperledger-fabric.readthedocs.io/en/release-1.3/private_data_tutorial.html
• Hyperleger fabric Architecture Reference » Private Data
• https://hyperledger-fabric.readthedocs.io/en/release-1.3/private-data-arch.html
• 今後の拡張
• Local collection
• https://jira.hyperledger.org/browse/FAB-7593
• org-specific collections
• https://jira.hyperledger.org/browse/FAB-10889
41. 41
n
n FC b dc a D
n d P d H
n d P d I
IBM Blockchain / © 2018 IBM Corporation
42. 42IBM Blockchain / © 2018 IBM Corporation
- C E D E D tr - Jcj yx y
hm M jP o re
- n v str E
j. vbil E QIq nwjv y
xtre
, E C Epu N q Vy M
j g yx j pre
B ySgu B v j m y
xtre
B B i v N q
yx d bil av y
xtre
. .: - / . 3 /3 . . 1
: - /
43. 43
./ : :? / G
IBM Blockchain / © 2018 IBM Corporation
U I
I M
) )
Issuer Verifier
User
Issuer
./ : :? / :: === ? : / = : : =
45. Peer
45
1. - 2
IBM Blockchain / © 2018 IBM Corporation
Issuer Verifier
User
Issuer
HF HF M
I M
Java
SDK
1. -
ü
Fabric-CA
Identity Mixer MSP
3
3
Credential
3
Proof3
3
46. 46IBM Blockchain / © 2018 IBM Corporation
Ownership change
Service transactions
atomic
Physical (or external digital)
Reader
Blockchain
Cash Mobility
Service
Vehicles PropertySecurity Trade
Document
Product
Batch
ProductData
Storage
Digital
Rights
•
•
• I
•
•
Digital Tokens
48. 48
) - )( ) ) - )
IBM Blockchain / © 2018 IBM Corporation
dM D
}
• p D
• D r
• v d u t t
• d x
• D y r
n
• l
• i I
• a e
49. 49IBM Blockchain / © 2018 IBM Corporation
BNKA: A 2
BNKB: A 3
BNKB: B 5
BNKC: C 8
BNKA : A 1
BNKB: A 4
BNKB: B 5
BNKC: C 8
BNKA : A 1
BNKB: A 3
BNKB: B 5
BNKC: C 8
BNKC: A 1
BNKB: A 3
BNKB: B 5
BNKC: C 8
BNKC: A 2
Import from Issuer
- 2 A to BNKA
- 3 A to BNKB
- 5 B to BNKB
- 8 C to BNKC
Transfer BNKA’s
1 A to BNKB
& 1 A to self
Transfer BNKB’s
1 A to BNKC
Transfer BNKA’s
1 A to BNKC
50. 50
I H
IBM Blockchain / © 2018 IBM Corporation
BNKA: LYYL 2
BNKB: LYYL3
BNKB: WTC 5
BNKC: MFG 8
Import from Issuer
- 2 LYYL to BNKA
- 3 LYYL to BNKB
- 5 WTC to BNKB
- 8 MFG to BNKC
Transfer BNKA’s
1 LYYL to BNKC
Transfer BNKA’s
1 LYYL to BNKB
& 1 LYYL to self
BNKA : LYYL 1
BNKB: LYYL 4
BNKB: WTC 5
BNKC: MFG 8
Transfer BNKB’s
1 LYYL to BNKC
BNKA : LYYL 1
BNKB: LYYL 3
BNKB: WTC 5
BNKC: MFG 8
BNKC: LYYL 1
BNKB: LYYL 3
BNKB: WTC 5
BNKC: MFG 8
BNKC: LYYL 2
F
H
BNKA: A 2
BNKB: A 3
BNKB: B 5
BNKC: C 8
BNKA : A 1
BNKB: A 4
BNKB: B 5
BNKC: C 8
BNKA : A 1
BNKB: A 3
BNKB: B 5
BNKC: C 8
BNKC: A 1
BNKB: A 3
BNKB: B 5
BNKC: C 8
BNKC: A 2
Import from Issuer
- 2 A to BNKA
- 3 A to BNKB
- 5 B to BNKB
- 8 C to BNKC
Transfer BNKA’s
1 A to BNKB
& 1 A to self
Transfer BNKB’s
1 A to BNKC
Transfer BNKA’s
1 A to BNKC
H
F
51. 51
HIMK FN
IBM Blockchain / © 2018 IBM Corporation
BNKA: LYYL 2
BNKB: LYYL3
BNKB: WTC 5
BNKC: MFG 8
Import from Issuer
- 2 LYYL to BNKA
- 3 LYYL to BNKB
- 5 WTC to BNKB
- 8 MFG to BNKC
Transfer BNKA’s
1 LYYL to BNKC
Transfer BNKA’s
1 LYYL to BNKB
& 1 LYYL to self
BNKA : LYYL 1
BNKB: LYYL 4
BNKB: WTC 5
BNKC: MFG 8
Transfer BNKB’s
1 LYYL to BNKC
BNKA : LYYL 1
BNKB: LYYL 3
BNKB: WTC 5
BNKC: MFG 8
BNKC: LYYL 1
BNKB: LYYL 3
BNKB: WTC 5
BNKC: MFG 8
BNKC: LYYL 2
M
BNKA: LYYL 2
BNKB: A 3
BNKB: B 5
BNKC: MFG 8
Import from Issuer
- 2 LYYL to BNKA
- 3 A to BNKB
- 5 B to BNKB
- 8 MFG to BNKC
Transfer BNKA’s
1 LYYL to BNKC
Transfer BNKA’s
1 A to BNKB
& 1 LYYL to self
BNKA : LYYL 1
BNKB: A 4
BNKB: B 5
BNKC: MFG 8
Transfer BNKB’s
1 A to BNKC
BNKA : LYYL 1
BNKB: A 3
BNKB: B 5
BNKC: MFG 8
BNKC: LYYL 1
BNKB: A 3
BNKB: B 5
BNKC: MFG 8
BNKC: LYYL 2
NK NK
BNKA: A 2
BNKB: A 3
BNKB: B 5
BNKC: C 8
BNKA : A 1
BNKB: A 4
BNKB: B 5
BNKC: C 8
BNKA : A 1
BNKB: A 3
BNKB: B 5
BNKC: C 8
BNKC: A 1
BNKB: A 3
BNKB: B 5
BNKC: C 8
BNKC: A 2
Import from Issuer
- 2 A to BNKA
- 3 A to BNKB
- 5 B to BNKB
- 8 C to BNKC
Transfer BNKA’s
1 A to BNKB
& 1 A to self
Transfer BNKB’s
1 A to BNKC
Transfer BNKA’s
1 A to BNKC
NK
M
52. 52
C / na fm e F OMP
IBM Blockchain / © 2018 IBM Corporation
• FZF M
A A M / C
• d cpF s KSh eF
/
• idos H u ISbF
A/ / /
• ) gF yxMDcm Z l r tvx u
( C B
54. 54IBM Blockchain / © 2018 IBM Corporation
H HF
cg p y
M
-B 3 01 72 o o do I
. / 3 r ndmb s e h I s olas
:: 0 au ov i
6 12 : 7: 2 :: 0 2 9 :
B