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