Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Blockchain GIG#4 クイックスタートHyperledger Fabric

gakumura
September 04, 2019

Blockchain GIG#4 クイックスタートHyperledger Fabric

2019/9/4 Blockchain GIG#4でしゃべった内容
Hyperledger Fabricの基礎知識&実際開発を始めるまでの道のりをざっくりと簡潔に紹介

gakumura

September 04, 2019
Tweet

More Decks by gakumura

Other Decks in Technology

Transcript

  1. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

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

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

    | Hyperledger Fabric • Hyperledger : Linux財団がホストするオープンなコミュニティ – 世界で最も成功したOSS=Linuxでの成功実績に基づいた運営 – さまざまな業種の企業およびIT企業、研究機関が240以上参加 – Fabricをはじめ、複数ブロックチェーン/DLT基盤およびツール等をOSSとして開発 • Fabric : 汎用ビジネス利用のためのブロックチェーン基盤 – メンバー管理サービスを備えたパーミッションドブロックチェーンを実装 – セキュリティ、機密性/プライバシーを強化するための多様な機能 – スマートコントラクトによって業務を自動化 – 大量処理をサポートするためのスケーラブル、プラガブルな設計 – マイニングなどの大規模コンピューターパワー投入は不要&ファイナリティ有 5 エンタープライズ用途を目的として開発されたブロックチェーン
  5. 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
  6. 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
  7. 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 お勉強要素 赤字:理解が必須の基礎知識 青字:知ってると便利、応用編 それ以外:必要に応じて学ぶ
  8. 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
  9. 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を 共有する範囲
  10. 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がある 通常、企業などのコンソーシアムに 参加する組織と対応する
  11. 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 ネットワークの構成要素
  12. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | Peer 台帳(分散台帳の1コピー) 13 Peerノードはそれぞれ台帳を保持している 追記型かつバージョン管理されたKey-Valueストア になっており、以下ふたつの要素から構成される + ブロックチェーン: 最新/過去のバージョンの値を格納 &トランザクションの履歴を格納 State DB(World State): 最新バージョンの値を格納するデータベース Peer Peer Peer
  13. 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” }
  14. 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” 一部参加者のみで 共有し、 他参加者には秘匿
  15. 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フェーズ
  16. 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 – 台帳に書き込み
  17. 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後)
  18. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

    | Getting Started with Hyperledger Fabric 19
  19. 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
  20. 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
  21. 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
  22. 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
  23. Copyright © 2019, Oracle and/or its affiliates. All rights reserved.

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

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