Slide 1

Slide 1 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Blockchain GIG #4 クイックスタートHyperledger Fabric 日本オラクル株式会社 中村 岳 2019年9月4日 1

Slide 2

Slide 2 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, timing, and pricing of any features or functionality described for Oracle’s products may change and remains at the sole discretion of Oracle Corporation. 2

Slide 3

Slide 3 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 自己紹介 •中村 岳 @gakumura • はてなブログ書いてます:空谷に吠える 主にHyperledger Fabric関連 • 現職:ソリューションエンジニア@日本オラクル • 前職:金融決済系SIer • 好きなOS:AIX • 好きなスタンド:クレイジー・D 3

Slide 4

Slide 4 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Hyperledger Fabric キホンのキ 4

Slide 5

Slide 5 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Hyperledger Fabric • Hyperledger : Linux財団がホストするオープンなコミュニティ – 世界で最も成功したOSS=Linuxでの成功実績に基づいた運営 – さまざまな業種の企業およびIT企業、研究機関が240以上参加 – Fabricをはじめ、複数ブロックチェーン/DLT基盤およびツール等をOSSとして開発 • Fabric : 汎用ビジネス利用のためのブロックチェーン基盤 – メンバー管理サービスを備えたパーミッションドブロックチェーンを実装 – セキュリティ、機密性/プライバシーを強化するための多様な機能 – スマートコントラクトによって業務を自動化 – 大量処理をサポートするためのスケーラブル、プラガブルな設計 – マイニングなどの大規模コンピューターパワー投入は不要&ファイナリティ有 5 エンタープライズ用途を目的として開発されたブロックチェーン

Slide 6

Slide 6 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Hyperledgerのラインナップ 6 The Hyperledger Greenhouse From:https://www.hyperledger.org/ 覚えておくと使いどころあるかも、なFabricと組み合わせ可能なツール Caliper:ベンチマークツール Cello:構築ツール Explorer:ネットワーク可視化ツール Composerは2019/8/29付でdeprecated

Slide 7

Slide 7 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | v1.0からの歩み 7 v1.0リリース(2017年7月)以来 おおよそ3,4ヶ月ごとにバージョンアップリリース ・さまざまな新機能追加&性能、信頼性、運用性向上 v1.4をLTS版として2019年1月にリリース ・1年間サポート、安定版として本番活用拡大に期待 V2.x系で更なる機能拡張を予定 ・FabToken…UTXO Token/ZKAT with IdeMIX ・SBFT Consensus

Slide 8

Slide 8 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | • Organization • Peer – Endorser / Committer – Gossip • Anchor / Leader • Intra Org / Inter Org • Ordering Service – Type: Solo / Kafka / RAFT – Block Generation Settings • MSP • Ledger – State DB / Blockchain • Endorsement Policy – Chaincode Level / Key Level • Transaction Flow • Channel – Capability Requirements • Private Data – Auto Purge / Delete • Identity Mixer • Peer Event Service – Transaction/Network/ Channel /Custom • Service Discovery 8 • Chaincode Lifecycle • Chaincode Techniques – Get State / Put State – Ranged Query / Rich Query – Transient Map – Custom Event – Attribute-based AC – Key History / Transaction History – Inner CC Invocation • Intra / Inter Channel – Ethereum VM (Burrow) • Fabric SDK お勉強要素 赤字:理解が必須の基礎知識 青字:知ってると便利、応用編 それ以外:必要に応じて学ぶ

Slide 9

Slide 9 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Peer 9 ネットワークの概観 Peer Ledger Chain code App MSP Peer Peer Ledger Chain code App MSP Peer Peer Ledger Chain code App MSP O O O O Ordering

Slide 10

Slide 10 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Peer 10 ネットワークの概観 Peer Ledger Chain code App MSP Peer Peer Ledger Chain code App MSP Peer Peer Ledger Chain code App MSP O O O O f Ordering Fabricで言う「ネットワーク」は ひとつのOrdering Serviceを 共有する範囲

Slide 11

Slide 11 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Peer 11 ネットワークの概観 Peer Ledger Chain code App MSP Peer Peer Ledger Chain code App MSP Peer Peer Ledger Chain code App MSP O O O O Ordering ノードやMSP、クライアントアプリケーション のネットワーク構成要素を管理する (責任を持つ)単位として Organizationがある 通常、企業などのコンソーシアムに 参加する組織と対応する

Slide 12

Slide 12 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | • Peerノード – 台帳(State DBとブロック)を保持 – 依頼されたChaincodeを実行 – トランザクションを検証して台帳に反映 • Ordering Service – ひとつ~複数のOrdererノードで構成 – 受け取ったトランザクションの 順序を確定してブロックを生成 (決定論-性の順序付け) – 生成したブロックをPeerノードに配布 • Chaincode(スマートコントラクト) – 台帳の更新、照会のビジネスロジック • MSP(Membership Service Provider) – 証明書を管理する – 署名を検証する • クライアントアプリケーション – PeerノードにChaincode実行を依頼 – Ordering Serviceにトランザクション受付を 依頼 – Fabric SDKを用いて実装 12 ネットワークの構成要素

Slide 13

Slide 13 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Peer 台帳(分散台帳の1コピー) 13 Peerノードはそれぞれ台帳を保持している 追記型かつバージョン管理されたKey-Valueストア になっており、以下ふたつの要素から構成される + ブロックチェーン: 最新/過去のバージョンの値を格納 &トランザクションの履歴を格納 State DB(World State): 最新バージョンの値を格納するデータベース Peer Peer Peer

Slide 14

Slide 14 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | State DB • StateDBはKey-Valueストアで、Valueには任意の文字 列やバイナリを格納可能 • State DBにはLevelDBかCouchDBを選択可能 • LevelDB:シンプルなValueを扱う場合向け • CouchDB:複数の属性を持つValueを扱いやすい – JSON形式でValueを格納すると、Attributeを条件に指定して クエリできる(リッチクエリ) – LevelDBに比べて低速 – Phantom Read問題に注意が必要 • 台帳に更新をかけるトランザクションでリッチクエリを使うな、の制約あり 14 Key: marble1234567 Value: { “color”:”red”, “size”:12, “price”:200, “owner”:”Bob” }

Slide 15

Slide 15 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Channel • ネットワークをサブネットワークに分割し、 データ(台帳)の共有範囲を限定 Private Data • Channel内で共有されるデータのうち、 さらに項目を限定して共有できる 15 データ共有範囲制御(データ・プライバシー) L1 L2 L3 【お客様情報レコード】 “ID : 1234567890” “生年月日 : 1987年1月1日” “性別 : 男性” “名前 : 鈴木太郎” “住所 : 東京都千代田区X-X-X” “電話番号 : 080XXXXXXXX” “契約コース : 従量制A” “契約日時 : 2019/1/21” 一部参加者のみで 共有し、 他参加者には秘匿

Slide 16

Slide 16 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | トランザクションフロー • Endorsement: – クライアントアプリケーションからPeerにTransaction Proposalを送付 – PeerノードがChaincodeを実行し署名を付けて結果(Endorsement)を返却 • Ordering: – Endorsementを集め終えたクライアントアプリケーションがトランザクションを送付 – 受け取ったOrdering Serviceがブロックを生成、Peerノードに配布 • Validation: – Peerがブロック内のトランザクションを検証し台帳に反映(コミット)…ここでFinality発生 16 Endorsement・Ordering・Validationの3フェーズ

Slide 17

Slide 17 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | トランザクションフロー:図 17 クライアントアプリ Fabric SDK Keys MSP Peerノード(複数) Endorser StateDB Committer Ordering Service Certificate Authority 2.1 –ブロックの配布 署名の検証、認証 トランザクションの 順序を確定し バッチ(ブロック) を生成 2.0 – Transactionの送付 (Endorsementを含む) ブロック チェーン 3.0 – Validation 4.0 – 結果通知(Event) Chaincode 1.1 – Chaincodeの実行 3.1 – 台帳に書き込み

Slide 18

Slide 18 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 18 From: https://hyperledger-fabric.readthedocs.io/en/latest/arch-deep-dive.html Peerへの Transaction Proposal送付 Chaincode実行 Endorsement返却 Endorsement収集 Transaction送信 ブロック生成 →配布 Validation →Commit Tx Event通知 (Validation後)

Slide 19

Slide 19 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Getting Started with Hyperledger Fabric 19

Slide 20

Slide 20 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | ノード、コンポーネントおよびネットワーク構築 • Orderer、PeerおよびMSP(Fabric-CA)はそれぞれ Dockerコンテナとして稼働する • 選択肢: – 自前で手組み・・・公式ドキュメントなどを参照しつつ公式 Dockerイメージを利用して構築していく。 – クラウドテンプレート・・・テンプレートをIaaS上に展開。管理は 自前かつ手作業。 – BaaS/マネージドサービス・・・テンプレートやGUIなどで構築。 管理ツールなども統合されて提供、ある範囲までサービス提供 者がマネージ。 20 MSP O O O O Peer Peer MSP Peer Peer

Slide 21

Slide 21 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Chaincodeの開発 • 多くの場合、Chaincodeはそれほど複雑にも大規模にもならない点に留意 – 認証認可やプライバシーを主にChannel(およびクライアントアプリケーション)などの Chaincode外部の仕組みで担当するため、Ethereumなどと比べると小規模になる – 過度に大きくChaincodeの開発ボリュームを見積もらない – クライアントアプリケーション側のほうが開発ボリュームは大きい • Chaincodeに独特のAPI(Shim/Contract API)はそれほど多くないので 習得自体は難しくない • 開発言語の選択肢:Node.js、Go、Java – Q.で、どれがいいの?→ A.お好みで 21 Peer Ledger Chain code

Slide 22

Slide 22 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | クライアントアプリケーションの開発 • 基本的にはクライアントアプリケーションにFabric SDKの 組み込んでの開発が必要 • Fabric SDKはNode.js版とJava版が正式リリース ⇨クライアントアプリケーション開発言語の選択肢 – Q. で、どっちがいいの? → A. お好みで。。。 • ただし現状Node.jsのほうが機能追加が早いので、アプリケーション開発 言語に対してニュートラルならNode.jsのがいいかも • v1.4からはNode.jsのSDKではより抽象化された新しいプログラミングモデ ルが使えるようになっている – 非-正式リリースとしてPython版、Go版、REST版も一応ある • 多機能なのでSDKの習熟はそこそこ大変 22 Fabric Peerノード Ledger Chaincode アプリケーション Fabric SDK gRPC

Slide 23

Slide 23 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Fabric SDKの概覧(Node.js版ベースで説明 • fabric-ca-client:証明書の登録、EnrollなどのFabric CA操作に関わる機能 • fabric-client:その他全ての機能 – Channelの作成、更新 – Chaincodeのinstall、instantiate – Chaincodeの実行(クエリ/トランザクション) – イベントへの登録、利用 – 署名鍵の管理、利用 などなど… • fabric-network:fabric-clientの機能のうち、Chaincodeの実行に関わるもの (クエリ、トランザクションとイベントへの登録、利用)をより抽象化した高レベル なAPIとして提供 23

Slide 24

Slide 24 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | SDK以外の重要なツール • configtxgen / configtxlator – config transaction generator / translator の意 – Channelの作成や設定の更新(参加Org追加など)のためのトランザクションを作成できる – 現状、Fabric SDKだけではこれらを実行できないのでこのツールを利用する • cryptogen – 簡易にFabricネットワークで利用するための証明書を発行できる – 利用はテストやプロトタイピングなどのセキュリティが問題にならない場合に限定 (本番利用は厳禁) 24

Slide 25

Slide 25 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | サンプルアプリケーション github( https://github.com/hyperledger/fabric-samples )にいくつかサンプル アプリケーションおよびChaincodeが公開されており、中でも以下ふたつは有用 • balance-transfer(Node.js SDKを利用) – 単純な口座間の残高移動のサンプルだが、Channelの作成~トランザクションの実行、クエ リまでひととおりをシェルで実行しているため、シェルとアプリの中身を参考にできる • commercial-paper(Node.js版とJava版両方アリ) – 企業の短期無担保約束手形の発行と取引、償還を想定したサンプル – Fabricの公式ドキュメントで想定ユースケースから設計への落とし込みが 詳しく解説されており、アプリケーションとChaincodeのつくりもサンプルの中では複雑 – 稼働環境に依存するネットワークの構成情報関連と署名鍵関連を それぞれGateway、Walletとして分離しているところがやや実践的 25

Slide 26

Slide 26 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | とりあえず読んでおきたい資料 • OCHaCafe#4 Hyperledger Fabric アプリケーション設計入門ガイド: Hyperledger Fabricの基本やTipsなどのまとめ(長編)。 https://speakerdeck.com/gakumura/ochacafe-number-4-hyperledger-fabric • Web連載「Hyperledger Fabric入門」シリーズ(by IBM): 特にMSPについて詳細を説明した第4回、 Chaincodeの書き方を具体的に説明する第5回、第6回はオススメ – 第4回:https://www.ibm.com/developerworks/jp/cloud/library/cl-hyperledger-fabric-basic-4/index.html – 第5回:https://www.ibm.com/developerworks/jp/cloud/library/cl-hyperledger-fabric-basic-5/ – 第6回:https://www.ibm.com/developerworks/jp/cloud/library/cl-hyperledger-fabric-basic-6/index.html • ↑を読んでから公式ドキュメントを読むと理解しやすいと思う https://hyperledger-fabric.readthedocs.io/en/latest/ 26

Slide 27

Slide 27 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 27 Oracle Digitalは、オラクル製品の導入をご検討いただく際の総合窓口。 電話とインターネットによるダイレクトなコニュニケーションで、どんなお問い合わせにもすばやく対応します。 もちろん、無償。どんなことでも、ご相談ください。

Slide 28

Slide 28 text

No content