Hyperledger Fabric の概要とアプリケーション開発 システム構築の考え方 2018 年 9 月 28 日日本アイ ビー エム株式会社グローバル ビジネス サービス事業本部 IBM Distinguished Engineer( 技術理事 ) 早川勝 (Masaru Hayakawa) https://www.linkedin.com/in/masaru-hayakawa-502495148/ Hyperledger Fabric によるアプリケーション開発 ( 監修 )
自己紹介 2003 年から金融機関様を担当しており 現在は 複数プロジェクト 複数チームの全体統括として活動 並行して 某金融機関様のブロックチェーン本格展開プロジェクトにおいて リードアーキテクトを担当 一方で FinTech (API 公開 ) やブロックチェーンに関しては 日本 IBM 全体で技術推進を実施 FinTech やブロックチェーンに関して 講演 執筆などを実施 代表的なものとしては ブロックチェーンに関するインタビュー記事 IBM 出版誌 (Provision) 日経システムズ @IT のブロックチェーン関連記事 書籍 IT アーキテクチャー構築入門 書籍 Hyperledger Fabric によるアプリケーション開発 ( 監修 ) など 2
アジェンダ 1. Hyperledger Fabric の概要 2. Hyperledger Fabric のアプリケーション開発 スマートコントラクト ( サーバーサイド ) ユーザーアプリケーション ( クライアントサイド ) 3. Composer を利用したアプリケーション開発 4. システム環境の構築 3
Hyperledger Fabric の概要 ( 書籍執筆者 / 講演資料作成協力 ) 清水智則日本アイ ビー エム ( 株 )GBS ブロックチェーンコンサルタント 田町京子日本アイ ビー エム ( 株 ) GTS 金融担当 IT スペシャリスト
Hyperledger Fabric とは? Hyperledger Fabricとは? Hyperledger Fabricは ブロックチェーンを活用したさまざまな業務システムを構築 運用するためのソフトウェア基盤 分散台帳やコンセンサスをはじめ ユーザー ID の発行 認証 スマートコントラクトの開発 実行 機密性などの機能を備えている 正式版の Hyperledger Fabric v1.0 は2017 年 7 月に提供が開始それ以前は 実証実験向けに Hyperledger Fabric v0.x という暫定的なバージョンが提供されていた 開発の経緯 Hyperledger プロジェクトは 仮想通貨に限らない広範囲なビジネス用途のブロックチェーン基盤を提供することを目的としたオープンソースプロジェクト (2015 年 12 月に発足 ) 公式サイト :https://www.hyperledger.org/ 2018 年 9 月時点で 200 社以上が参加 Hyperledger プロジェクトには ブロックチェーン基盤の実装フレームワークが複数存在 2018 年 9 月時点 フレームワーク : Hyperledger Burrow Hyperledger Fabric Hyperledger Indy Hyperledger Iroha Hyperledger Sawtooth ツール : Hyperledger Caliper Hyperledger Cello Hyperledger Composer Hyperledger Explorer Hyperledger Quilt 5
Hyperledger Fabric の特徴 1. コンソーシアム型の参加方式 6 特定の組織間でのビジネスネットワークを実現するため コンソーシアム型 の参加方式を基本とする これにより 複数組織で共同運営する信頼性の高いブロックチェーンネットワークを形成 2. 軽量かつ迅速なコンセンサス方式 Hyperledger Fabric では コンソーシアム型の参加方式を基本とするため 各参加組織の同意を得ることで軽量かつ迅速にファイナリティを確保できるコンセンサスの方式を採用 3. さまざまな業務処理の実現 Hyperledger Fabric では スマートコントラクトを チェーンコード と呼ばれるプログラムにより実現 独自の業務ロジックを記述 実行することが可能 4. トランザクション実行後の最新状態 (state) を保持 Hyperledger Fabric では State DB というデータストアに トランザクションを実行した結果得られる最新の state( 送金の場合は残高など ) を保持する ユーザーは全ブロックを参照することなく その時点における状態を確認することが可能 5. チャネルによるブロックチェーンネットワークの論理的な分割 Hyperledger Fabric では 1 つのブロックチェーンネットワークを論理的に独立した複数のネットワークに分割することが可能 この分割したネットワークのことを チャネル といい 異なるチャネル間ではチェーンコードや分散台帳は共有されない
Hyperledger Fabric の構成要素 (1/4) Node.js 版が先行して提供され 2018 年 9 月現在 Java 版も提供されており Python 版や Go 版なども開発中 Organization Hyperledger Fabric ネットワークに参画する組織を表す論理的な単位で 各ピアやオーダラーは Organization に所属 ピア Organization 内のノードを表す論理的な単位であり ブロックチェーン State DB およびチェーンコードを保有 ピアは Endorser として アプリケーション ( クライアント ) からの要求にもとづいてトランザクションに Endorsement( 同意 ) する または Committer として トランザクションと実行結果の妥当性を確認してブロックチェーンと State DB を更新 オーダラー Endorsement されたトランザクションの結果を ブロックチェーンと State DB に書き込む順番を制御 オーダラーは Hyperledger Fabric ネットワーク上の全トランザクションを制御するため 単一障害点にならないように冗長構成 (*) が可能 (*) 冗長構成のために 分散メッセージングの仕組みであるApache Kafkaが利用可能 ( 公式サイト :https://kafka.apache.org/) なお オーダラーを各 Organization に分散配置した際に 特定のOrganizationでの不正な処理を除外するため ビザンチン障害耐性を備えた冗長化機能も今後提供予定ビザンチン障害耐性は P2Pネットワーク上で 全体として合意を形成する必要がある場合に 悪意を持った一部のノードが不正な回答しても正しい合意を形成できる特性 7
Hyperledger Fabric の構成要素 (2/4) チェーンコード チェーンコードは スマートコントラクトを実現するためのプログラムで 専用のコンテナ上で実行される 開発言語は Go 版が先行して提供され 2018 年 9 月現在 Node.js 版も提供され Java 版なども開発中 チェーンコードは トランザクションのリクエストにもとづいて実行され State DB に対する読み書きや 過去の State DB への書き込み履歴 (Block 内に格納 ) の照会を行うことが可能 用途に応じて複数のチェーンコードを作成でき あるチェーンコードから別のチェーンコードを呼び出して実行することも可能 あるチェーンコードが State DB に書き込んだデータは 別のチェーンコードからはアクセスできない (*) State DB で使用するデータストアは 標準ではLevelDBというKey-Value 形式のもの ( 公式サイト :http://leveldb.org/) JSON 形式のドキュメントをネイティブで格納するApache CouchDBも利用可 ( 公式サイト :http://couchdb.apache.org/) 8 分散台帳 Hyperledger Fabric ネットワーク内の参加者間で同一の情報を共有するための台帳 Hyperledger Fabric では通常 Blockchain と State DB を包含して指すことが多い Blockchain は 基本的には一般的なものと同様の構造だが 他と異なる主な点は チェーンコード実行時に State DB に書き込まれた内容 (RWSet) を Block の中に格納する点
Hyperledger Fabric の構成要素 (3/4) MSP(Membership Service Provider) Hyperledger Fabric が標準で提供する CA( 認証局 ) または外部の CA と連携して 主に ユーザーの登録および Ecert の発行を行う Ecert(Enrollment Certificate):Hyperledger Fabric ネットワーク上のユーザー証明書 MSP および CA は Organization 内での冗長構成が可能で 各 Organization でそれぞれ MSP を実装することが可能 9
Hyperledger Fabric の構成要素 (4/4) チャネル 1 つの Hyperledger Fabric ネットワークを論理的に分割したネットワーク ネットワーク内に複数の独立したチャネルが存在することが可能で 各チャネル内で同一の分散台帳 (State DB とブロックチェーン ) を保持する DB 10
Hyperledger Fabric のアプリケーション開発 ( 書籍執筆者 / 講演資料作成協力 ) 佐藤卓由日本アイ ビー エム ( 株 ) GBS 事業本部金融第三サービス齋藤新日本アイ ビー エム ( 株 ) 東京基礎研究所 FSS& ブロックチェーン ソリューションズ近藤仁日本アイ ビー エムシステムズ エンジニアリング ITスペシャリスト上ノ原勇人日本アイ ビー エム ( 株 ) 東京ソフトウェア開発研究所 11
Hyperledger Fabric のアプリケーション開発概要 アプリケーションの要素 チェーンコード チェーンコード (= スマートコントラクト ) は サーバー側の処理を実装するもの 初期から Go 言語をサポート (2018 年 9 月現在 Node.js での実装も可能 ) ユーザーアプリケーション (Hyperledger Fabric から見るとクライアントサイド ) State DB Hyperledger Fabric へアクセスのための SDK が提供されている 初期から Node.js 版が提供されている (2018 年 9 月現在 Java 版も提供されている ) 業務データやドキュメント等の最新状態を保存する DB(Blockchain とは別 ) Level DB か Couch DB を選択でき どちらも No SQL DB の一種で Couch DB は JSON をネイティブで格納できるため 項目レベルでの検索が可能 アプリケーションサーバー ( クライアントサイド ) Hyperledger Fabric( サーバーサイド ) ユーザーアプリケーション Hyperledger Fabric Client SDK チェーンコード State DB 12
システム環境の構築 ( 書籍執筆者 / 講演資料作成協力 ) 岩崎竜矢 ( 推進兼 ) 日本アイ ビー エム ( 株 ) GBS 銀行 FM 第 3 デリバリー IT アーキテクト PM 小笠原万値 ( 監修兼 ) 日本アイ ビー エムシステムズ エンジニアリング 第二ワトソンソリューションシニア IT スペシャリスト 13
Hyperledger Fabric のアーキテクチャー Hyperledger Fabric は Blockchain を実装した分散台帳技術である コンテナ技術を活用し Microservices に組み込むことができる UI Layer Controller Layer Business Logic Layer Persistence Layer API Gateway Load Balancer Microservice 1 Microservice 2 CouchDB DB File ピア 台帳 ブロックチェーン (Hyperledger Farbic) ネットワーク 台帳 ピア オーダラー Zookeeper Monolithic Application Microservices 14
Hyperledger Fabric の構築の流れ Hyperledger Fabric ネットワークの構築は 用意されたコマンドやコンテナ技術でコンソールで構築可 必要な証明書やチェーンコードの事前準備がされていること 必要な環境変数 環境設定ファイル (yaml) が決まっていること 準備が整っていれば Microservices や CI と組み合わせ オートメーション化へ 1. 暗号化証明書の準備 商用の電子証明書を取得 ( 開発向け ) 自己署名証明書の生成 4. ネットワークの起動 利用するコンテナの起動 ノード ( ピア オーダラー ) の起動 first-network のようにコンテナ技術を用いた構成とする場合 2. チャネル環境設定の生成 オーダラーの Genesis ブロックの生成 チャネルトランザクションの環境設定の生成 各メンバー向け Anchor Peer の生成 5. チャネルの作成 ネットワークにチャネルの生成 チャネルに参加 Anchor Peer の更新 3. 環境変数 環境設定ファイル生成 docker-compose.yaml ファイルの環境変数 Hyperledger Fabric ネットワーク暗号化証明書のパスや接続先 DB Kafka などを設定 6. チェーンコードの導入 チェーンコードのインストール インスタンス化 呼び出し 15
おわりに 本講演では Hyperledger Fabric によるアプリケーション開発 の書籍を元に Hyperledger Fabric の特徴やアーキテクチャ等の概要 アプリケーション開発方法 システム構築方法のアウトラインや考え方をご紹介させていただきました 本講演および書籍が 日本国内の Hyperledger Fabric を活用したビジネスが発展する一助となることを切にお願っております なお Hyperledger Fabric では 今後もさまざまな機能拡張が予定されています 更なるスケーラビリティーの向上 Chaincode Hyperledger Fabric Client SDK での Java などのさまざまな言語の対応 State DB としてのリレーショナル データベースのサポート ( 予定 ) Orderer でのビザンチン障害耐性 (Byzantine Fault Tolerance) を備えた冗長化機能 チャネルの機能ではなく ブロックチェーンの外部で機密情報を取り扱う機能 (V1.2 で実装済み ) その他さまざまな機能拡張 今後の Hyperledger Fabric の拡張を含めてさまざまな情報が 以下のサイト等に記載されていきますので ぜひとも注視していただけたら幸いと存じます Hyperledger の Wiki サイト : https://wiki.hyperledger.org/start Hyperledger プロジェクトの公式サイト : https://www.hyperledger.org/ Hyperledger プロジェクトの GitHub: https://github.com/hyperledger Hyperledger Fabric のオンラインドキュメント : http://hyperledger-fabric.readthedocs.io/en/latest/ ご清聴ありがとうございました 16