Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Hyperledger Fabric 1.0 概要

17.843 Aufrufe

Veröffentlicht am

日立製作所 山田仁志夫様 Hitachi America 大島訓様
第1回Hyperledger Tokyo Meetup 2017年3月16日講演

Veröffentlicht in: Technologie

Hyperledger Fabric 1.0 概要

  1. 1. © Hitachi, Ltd. 2017. All rights reserved. 日立製作所 研究開発グループ システムイノベーションセンタ 山田 仁志夫 Global Center for Social Innovation North America, R&D Division, Hitachi America, Ltd. 大島 訓 Hyperledger Fabric1.0 概要 2017/3/16
  2. 2. © Hitachi, Ltd. 2017. All rights reserved. 目次 1. Fabric1.0 設計コンセプト 2. システムアーキテクチャ 3. トランザクションの流れ 4. 各種機能 4.1 Ledger 4.2 Orderer 4.3 Multi-Channel と Sub-ledger 4.4 Chaincode (スマートコントラクト) 4.5 Data Privacy 4.6 SDK 5. アプリケーション開発 6. ロードマップ 7. まとめ Fabric1.0 は、現在開発中であり、設計や実装が日々変更されています。 本資料は、最新でない情報を含む可能性があります。
  3. 3. © Hitachi, Ltd. 2017. All rights reserved. 0.Hyperledger Fabric0.6まで(1) ❖ Hyperledger プロジェクトは,2016年2月から活動開始 ❖ ブロックチェーン基盤 ❖ Active : Fabric(IBM) ❖ Incubation : Iroha(Soramitsu),Sawtooth Lake(Intel)、CORDA(R3予定) ❖ Fabric v0.6アーキテクチャ API, SDK, CLI サービス群 メンバーシップ メンバーシップ サービス BCサービス BC トランザクション チェーンコード チェーンコード サービス 登録 ID管理 監査 イベントストリーム コンセンサス マネージャ 分散台帳 P2P プロトコル 台帳 ストレージ セキュア コンテナ セキュア レジストリ
  4. 4. © Hitachi, Ltd. 2017. All rights reserved. 0.Hyperledger Fabric0.6まで(2) クライアント 検証ノード#0 (プライマリー) 検証ノード#1 (バックアップ) 検証ノード#2 (バックアップ) 検証ノード#3 (バックアップ) リクエスト 前準備 準備 コミット リプライ シーケンス番号 割当て • PBFT:Castro等に提案された分散合意形成アルゴリズム • 検証ノードの総数n台に対して、(n-1)/3台までのノードが故障/悪意を持ったノードであっても 正常に合意形成可能 (最小構成4台) • 3フェーズコミット(前準備、準備、コミット) • 対PoW(Proof of Work): 大量の計算処理が不要、取引が確定するといった利点あり
  5. 5. © Hitachi, Ltd. 2017. All rights reserved. 1. Fabric1.0 設計コンセプト ❖ Hyperledger fabric v1.0 は、エンタプライズ領域への適用に向けた以下の3つの課題を 満たすべく設計・開発を推進 V0.6の課題 V1.0での対応 プライバシ プライバシ スケーラビリティ スケーラビリティ 全てのノードが、 全てのトランザクションの Chaincodeロジックを閲覧可能 Chaincodeを逐次実行しているため、 ボトルネックが発生 特定ノード間のみで Chaincodeを共有 1) ブロックチェーンのノードの役割を分割 Peer : Chaincode実行元帳を管理 Orderer: トランザクションの順序を整列 2) 複数のピア群で、トランザクションを並列して実行 開発容易性 開発容易性 Client Application側で、接続する全ての Peerの情報を管理する負荷あり Client ApplicationはSDK経由でPeerと通信 (REST APIは廃止)
  6. 6. © Hitachi, Ltd. 2017. All rights reserved. 2. システムアーキテクチャ コンポーネント 役割 SDK(データアクセスライブラリ) トランザクションを要求 Membership (fabric-ca) Peerのエンロール(登録・承認) ユーザのエンロール(登録・承認) Peer (Endorser) トランザクションをシミュレート実行する トランザクションを検証、元帳を管理 Chaincode トランザクションを実行するスマートコントラクトプログラム Ledger データを格納(Blockchain とState) Orderer トランザクションの順序を整列 [Figure Source] High level data flows (https://jira.hyperledger.org/browse/FAB-37), FabricNext-DevUpdate.pdf Peer Peer PeerApplication Orderer Membership (fabric-ca) Ledger Chaincode Register Enroll Install Instantiate Invoke Query User Broadcast DeliverSDK
  7. 7. © Hitachi, Ltd. 2017. All rights reserved. 3. Transaction Flow (Endorser-Orderer Model) ❖ 複数のコンポーネントが連携し合い、トランザクションを処理 (1) Application(SDK) は、1つ以上のPeerに、トランザクションの処理要求を送付 (2) 各Peer は、Chaincodeをシミュレート, 実行結果に署名 (エンドース) 後、Application へ返信 (3) Application(SDK) は、複数のPeerから受け取ったエンドースメントを集約し、Orderer へ送付 (4) Orderer は、トランザクション群内でのトランザクションを整列し、各Peer にトランザクション群を配信 (5) 各Peer は、トランザクション群を検証し、ブロックを生成してLedgerにコミット (1) (2) (3) (4) (5) 処理要求生成 処理要求送付 トランザクションのシミュレーション・ 実行結果(Read/Write-set)を収集 実行結果のエンドース レスポンス送付 トランザクションを送付 (レスポンス,エンドースメント) トランザクション群を送付 トランザクションのエンドースメントを検証 ブロック生成・コミット Application Peer Orderer トランザクション生成 トランザクションの順序を整列 MVCC (Multi Version Concurrency Check)
  8. 8. © Hitachi, Ltd. 2017. All rights reserved. ❖ Ledger は、2種類のデータストアで構成 1) Blockchain: トランザクションのハッシュチェーン 2) State Database: key/Valueで格納されるデータのステート 4.1 Ledger / Blockchain, Stateデータベース [Figure Source] Ledger (https://jira.hyperledger.org/browse/FAB-758), HyperledgerFabric_LedgerV1_20170308.pptx { "asset_name":"marble1", "owner":”jerry", "date":"9/6/2016", ”version":”2:1", } Txn Reads[] Writes[] Txn Reads[] Writes[] Txn Reads[] Writes[] Txn Reads[] Writes[] StateデータベースBlockchain (File system) トランザクションのシミュレーションに 利用される 最新状態のkey/Value 改竄不能なデータ blockHash  SegNo + offset blockNum  SegNo + offset txId  SegNo + offset Blockchainの 履歴検索高速化のためのイ ンデックス Blockインデックス LevelDB (embedded KV DB) Stateデータベースは以下の2つのオプションから選択可能 •LevelDB (デフォルトの Key/Value DB) :キー検索クエリをサポート •CouchDB(オプション) :全履歴データ検索などリッチクエリをサポート 1) 2)
  9. 9. © Hitachi, Ltd. 2017. All rights reserved. ❖ Orderer は、ブロードキャスト型のオーダーリングサービスを提供 ❖ Client Peer は、Ordererに、メッセージを通知し, 全てのClient Peerは、同一の整列済みブロックをレスポンスとして受け取る ❖ Fabric1.0 は、3種類のオーダリングサービスをサポート予定 4.2 Orderer # Orderer種類 概要 1 Solo 開発・テスト用のシングル・プロセスサービス 2 Kafka 整列のため、KafkaのPub-subを利用 3 SBFT (Simple BFT) 整列のため、BFTを利用 ※現状はα版レベル [Figure Source] Prototype ordering service based on Kafka (https://jira.hyperledger.org/browse/FAB-32) broadcast-client 1 broadcast(“one”) broadcast-client 2 broadcast(“two”) send Block() broadcast-client M-1 broadcast(“three”) broadcast-client M broadcast(“four”) send Block() deliver-cliant1 deliver(“seek=1”) create consumer for dc-1 @seek offset recv Block() stream of blocks starts w. block #1 deliver-client N delver (“seek=2”) recv Block() create consumer for dc-2 @seek offset stream of blocks starts w. block #2 Peer Orderer Kafkaブローカ Cut block #1 Cut block #2 Peer Orderer Kafkaブローカ
  10. 10. © Hitachi, Ltd. 2017. All rights reserved. Peer1 Peer2 Peer N Orderer channels 4.3 Multi-Channel/Sub-ledger ❖ Multi-Channel と Sub-ledger により、データを分離し、機密性を確保 ❖ Channelは、データ共有の範囲を定義するために生成 ❖ 1つのChannelは、1つのledgerを保持 ❖ Channelに紐付いたpeerのみChaincodeを実行し、ledgerにアクセス可能 ❖ Ordererは、全てのチャネルの全てのトランザクションを受け取る # Channel Channelに紐付くpeer Ledger 1 青 Peer1, Peer N 青 2 黒 Peer2, Peer N 黒 3 赤 Peer1, Peer2, Peer N 赤 [Figure Source] Multichannel (https://docs.google.com/document/d/1eRNxxQ0P8yp4Wh__Vi6ddaN_vhN2RQHP-IruHNUwyhc/edit?usp=sharing)
  11. 11. © Hitachi, Ltd. 2017. All rights reserved. 4.4 Chaincode (スマートコントラクト) ❖ Chaincode は、トランザクションを実行するスマートコントラクトプログラム ❖ Chaincode は、以下3種類のトランザクションをサポート • Install : ChaincodeをPeerに配布 • Instantiate : ChaincodeをChannelに紐付けて初期化 • Invoke : Chaincodeのデータ更新・参照機能を実行 ❖ 以下のChaincode API は、ユーザ独自のChaincodeを実装する際に利用 • GetArgs : トランザクションのメッセージから引数を取得 • PutState/GetState/DelState : Ledgerの読出/書込/削除 • InvokeChaincode : 他のChaincodeの呼び出し • (詳細未定) : アクセス制御 ❖ Chaincode開発言語 • Go • Java ❖ Chaincodeユーティリティ機能 • Life-cycle management : Chaincodeのアップデート • Naming : Chaincodeの名前を設定
  12. 12. © Hitachi, Ltd. 2017. All rights reserved. 4.5 Data Privacy 1. Permissioned network • Fabric-ca が認証局(Certificate Authority; CA)として機能 o Peerの登録・承認 o Userの登録・承認 o Cert(証明書)の発行・更新・破棄 • MSP (Membership Service Provider) は、認証局が発行した証明書を使ってトランザクションメッセー ジの署名・検証を行う 2. アクセス制御 • (a)プラットフォームと(b)アプリケーションの2レイヤでアクセス制御 a) Channel Access Control : Channel上のChaincode/Ledgerへのアクセスを制御 b) Invocation Access Control (*) : Chaincodeの関数へのアクセスを制御 • 権限のあるユーザ/Peerのみが上記リソースにアクセス可能 3. データ暗号化 (*) • トランザクションのペイロードを暗号化 • Ledgerに記録するトランザクションデータを暗号化 (*) Not supported yet
  13. 13. © Hitachi, Ltd. 2017. All rights reserved. 4.6 SDK ❖ SDK は、開発者によるクライアントアプリケーションの実装をサポート ❖ 以下のライブラリが提供されている • Membership Registration/Enrollment • Chain Construction • Request Transaction ❖ SDK は、以下の開発言語をサポート • Node.js • Python • Java • Go (新規提案あり)
  14. 14. © Hitachi, Ltd. 2017. All rights reserved. 5. アプリケーション開発 ❖ アプリケーション実行にあたり以下が必要 ❖ GUI (Web) ❖ Client (Node.js、Python、Java) ❖ Chaincode (Go、Java) ❖ 開発環境の構築方法 ❖ (Option 1) Docker(Mac/Linux/Windows用) : DockerHubからイメージ取得 ❖ (Option 2) Vagrant 開発環境 : ローカルな開発環境を構築 ❖ アプリケーション開発支援ツール ❖ アプリケーションのテストツールを未提供(現時点) ❖ サンプルアプリケーションを提供 ❖ Fabric Composer
  15. 15. © Hitachi, Ltd. 2017. All rights reserved. 6. ロードマップ アジャイルで開発を推進しており、3末リリースに向け開発中 [Figure Source] High level data flows (https://jira.hyperledger.org/browse/FAB-37), Hyperledger Fabric DevUpdate12052016.pdf Alpha Beta 1 Beta 2 Release 1.0 Continue tuning Exit incubator Performance Security code hardening Left-over items Endorsement model Multichain SDK specification Pluggable Identity (MPS) Pluggable Consensus Pluggable data-store Access control Upgradable chaincode 2016 Dec 2017 Jan Feb March予定 実績 3/16/2017 ?? ?? ??
  16. 16. © Hitachi, Ltd. 2017. All rights reserved. 7. まとめ 項目 v0.6 v1.0 分散合意形成 アルゴリズム PBFT エンドースメント+ オーダリングに分離 スケーラビリティ 全ノード間での合意形成 ノードの動的追加が不可 スループット向上 ノードの動的追加が可能 認証局 メンバシップサービスが 全証明書を管理 単一障害点 認証局を分散配置 単一障害点を排除 ❖ v0.6からv1.0に向けた主な機能アップデートは以下
  17. 17. © Hitachi, Ltd. 2017. All rights reserved. 出典 1) Overall architecture (https://github.com/hyperledger/fabric/blob/master/proposals/r1/Next-Consensus-Architecture- Proposal.md) 2) High level data flows (https://jira.hyperledger.org/browse/FAB-37) 3) Ledger (https://jira.hyperledger.org/browse/FAB-758) 4) SDK specification (https://docs.google.com/document/d/1R5RtIBMW9fZpli37E5Li5_Q9ve3BnQ4q3gWmGZj6Sv4/edit?usp=sharing) 5) Membership services (COP) (https://docs.google.com/document/d/1TRYHcaT8yMn8MZlDtreqzkDcXx0WI50AV2JpAcvAM5w/edit?usp=sharing) 6) Multichannel (https://docs.google.com/document/d/1eRNxxQ0P8yp4Wh__Vi6ddaN_vhN2RQHP- IruHNUwyhc/edit?usp=sharing) 7) Gossip based data Dissemination (https://docs.google.com/document/d/157AvKxVRqgeaCTSpN86ICa5x- XihZ67bOrNMc5xLvEU/edit?usp=sharing) 8) Hyperledger Ordering Service (https://github.com/hyperledger/fabric/tree/master/orderer) 9) MSP & ACL (https://docs.google.com/document/d/1Qg7ZEccOIsrShSHSNl4kBHOFvLYRhQ3903srJ6c_AZE/edit#heading=h.2rmho7iq stbu) 10) Ordering with Kafka (https://docs.google.com/document/d/1vNMaM7XhOlu9tB_10dKnlrhy5d7b1u8lSY8a- kVjCO4/edit?usp=sharing) 11) Hyperledger JIRA (https://jira.hyperledger.org/secure/Dashboard.jspa)
  18. 18. © Hitachi, Ltd. 2017. All rights reserved.

×