Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Blockchain Engineer Night #4

270 views

Published on

11/20開催Blockchain Engineer Night#4の投影資料

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Blockchain Engineer Night #4

  1. 1. IBM Blockchain / © 2018 IBM Corporation Blockchain Engineer Night #4 Hyperledger Fabric /
  2. 2. 2 n n FC b dc a D n d P d H n d P d I IBM Blockchain / © 2018 IBM Corporation
  3. 3. 3 • • C C C C B A C C C C C C C B A C
  4. 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. 5. 5IBM Blockchain / © 2018 IBM Corporation ( ) • ü r • ü h • E r t ü m • ) / • e / u • ) ( r ) • • m ü
  6. 6. 6IBM Blockchain / © 2018 IBM Corporation Intel, IoT Soraitsu, mobile IBM, Enterprise EVM Sovrin, DistributedID Appl Framework Deployment GUI Dashboard Benchmark Tool ILP
  7. 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 (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. 9 ) 60 0/10 ( 820 0 IBM Blockchain / © 2018 IBM Corporation . 6 .: 0 - - 0 - .: 0 - / 2 68 6 . 81
  10. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 23 n n FC b dc a D n d P d H n d P d I IBM Blockchain / © 2018 IBM Corporation
  24. 24. Hyperleger Fabric 機能紹介 Private Data Collection FSS & Blockchain Solutions, IBM Research – Tokyo 岩間 太 / Futoshi Iwama
  25. 25. Hyperledger Blockchain アプリ作成で困ること p セットアップが大変 (昔?) p 全てのPeerが 全てのEventを補足 p... p 全データが全ての Peerで共有されてしまう p...
  26. 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日に面会
  27. 27. Blockchainでデータプライバシーを確保 • 所有者を匿名化 • データは共有 • (アドレス等の)所有者を特定困難に • 暗号を使用 • データ自体を暗号化して共有 • 所有者は複合化してデータ閲覧 • マルチチャネルを使用 • ブロックチェーンネットワーク をデータ共有単位で分ける
  28. 28. • 所有者を匿名化 • アドレスと所有者の紐付けが手間 • 分析されると特定される可能性あり • 暗号を使用 • データの暗号化・複合化が手間 • 管理の機能が必要 • マルチチャネルを使用 • チャネルをまたがった処理を実装し 運用・保守する必要あり • チャネル間処理の安全な実装が必要 既存プライバシー確保方法 ⇨ 直観的でなく実装/運用/保守などが色々面倒
  29. 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. 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. 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. 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. 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. 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. 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 ]
  36. 36. Private Data Collectionの適用例 特定部門間での承認フローの管理 peer Org1 peer peer Org2 peer peer Org4 peer Org3Org5 C2D • , O • 1 23 • 23 • O 1 , 1 2 O 4 P peer Org1 peer peer Org2 peer peer Org3 peer 企業間での取引情報の管理 C2 3 • • 1 • / 1 • / O 1 • / O 1 , 1 2 O 4 2 2 4 P
  37. 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. 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. 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
  40. 40. Hyperleger Fabric で新たに導入された Private Data Collection の概要を紹介いたしました • • • •
  41. 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. 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. 43 ./ : :? / G IBM Blockchain / © 2018 IBM Corporation U I I M ) ) Issuer Verifier User Issuer ./ : :? / :: === ? : / = : : =
  44. 44. 0 2 44 - IBM Blockchain / © 2018 IBM Corporation 3 11 15 3 - -
  45. 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. 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
  47. 47. 47IBM Blockchain / © 2018 IBM Corporation 92 21 2 . 40 F - A 92 21 2 . 40H 2 AO B
  48. 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. 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. 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. 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. 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
  53. 53. 53IBM Blockchain / © 2018 IBM Corporation p p p / p
  54. 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

×