LTN Blog 〜 Lenovo Technology Network 〜

レノボのソリューション・サーバー製品に関する技術情報、お役立ち情報をお届けします

Blockchainに関して(その2)~Hyperledger Fabricおよびアーキテクチャについて~

皆さん、こんにちは レノボ・エンタープライズ・ソリューションズ 小宮です。本日はBlockchainのその2と題して、オープンソースのブロックチェーン技術のHyperledgerについての簡単なご紹介と、ソリューションにおけるアーキテクチャをご紹介したいと思います。

 

1.Hyperledger Fabricについて

Hyperledger Fabricはブロックチェーンフレームワークの実装であり、The Linux FoundationがホストするHyperledgerプロジェクトの1つです。モジュラーアーキテクチャを備えたアプリケーションまたはソリューションを開発するための基盤として、Hyperledger Fabricを使用すると、コンセンサスサービスやメンバーシップサービスなどのコンポーネントをプラグアンドプレイできます。Hyperledger Fabricはコンテナ技術を活用して、システムのアプリケーションロジックを構成する「チェーンコード」と呼ばれるスマートコントラクトをホストします。Hyperledger Fabricは、最初のハッカソンの結果として、当初はDigital AssetとIBMから提供されました。

f:id:t_komiya:20190812213727p:plain

オープンソース、エンタープライズグレード、許可された分散型台帳テクノロジープラットフォーム であり、高度なモジュール化および構成可能なアーキテクチャより、幅広いユースケースに対応した革新性、汎用性 最適化を実現します。

各メンバーが見ることができる台帳のトランザクションを制限するために、チャネルを持つ許可されたネットワークを作成する機能を有し、Goで記述され、Dockerコンテナで実行されるチェーン コード(スマートコントラクト) で構成されます。

 

2.Hyperledger Fabricのコンポーネント

f:id:t_komiya:20190812214020p:plain

Hyperledger Fabricのコンポーネントは以下の3つから構成されます。

 

CACertificate Authority:認証機関

  • IDの登録、証明書の発行、証明書の更新と取り消し

オーダーサービス

  • 承認されたトランザクションを受け入れ、ブロックに順序付けし、ブロックをコミットしているピア(対等者)に配信します

ピア(対等者):

  • 台帳インスタンスとチェーンコードのインスタンスをホストします
  • ピアの承認
  • トランザクションのシミュレーションと承認
  • ピアのコミット
  • トランザクションをブロックチェーンにコミットする前に、承認されたトランザクションを検証し、 トランザクション結果を検証します

それでは、ブロックチェーンにブロックが追加されるフローについて、イメージで紹介したいと思います。

 

2.ブロックチェーンにブロックを追加

f:id:t_komiya:20190812214300p:plain

認証機関とオーダーサービスおよびピアの承認とピアのコミットおよびクライアントアプリケーションをイメージのように配置されていたとします。

f:id:t_komiya:20190812214644p:plain

クライアントアプリケーションからトランザクションをブロックチェーンに送信します。

f:id:t_komiya:20190812214754p:plain

ピアの承認に関して、ブロックチェーンの現時点の状態からトランザクションをシミュレートして、Read/Writeのセットを生成してクライアントアプリケーションに応答を返します。

f:id:t_komiya:20190812214944p:plain

クライアントアプリケーションはRead/Writeのセットを取得して、その情報をオーダーサービスに転送します。

f:id:t_komiya:20190812215113p:plain

オーダーサービスは送信されたRead/Writeのセットをブロックに配置します。

f:id:t_komiya:20190812215255p:plain

オーダーサービスはピアに対してブロックの情報を送信します。

f:id:t_komiya:20190812215355p:plain

ピアのコミットからRead/Writeのセットを実行して、トランザクションがまだ有効かどうか確認し、有効な場合はブロックチェーンにコミットするか、無効なトランザクションを送り返します。

f:id:t_komiya:20190812215555p:plain

ブロックチェーンの状態の終わりがクライアントアプリケーションに返送されます。

 

これらの一連の動作がブロック追加時に行われます。

次にブロックチェーンのソリューションを利用するときに必要なアーキテクチャについてお話したいと思います。

f:id:t_komiya:20190812215833p:plain

ブロックチェーンを利用する際に利用するプラットフォームとして、主に利用されるのがKubernatesのコンテナになります。

Kubernetes(K8s)は、コンテナ化されたアプリケーションの展開、スケーリング、管理を自動化するためのオープンソースシステムであり、アプリケーションのグループ化、デプロイ、スケーリング、自己修復が可能です。

Kubernatesは以下のもので管理されています。

 

チャート

  • Kubernatesコンポーネントを定義するテンプレートのバンドル

Helm(パッケージマネージャ)

  • チャートをパッケージ化、検索、および展開を可能にします

 

3.ソリューションアーキテクチャ

f:id:t_komiya:20190812220352p:plain

Kubernatesレイヤにおけるアーキテクチャをお話します。

今回はThinkAgile HXにフォーカスしてお話したいと思います。

ThinkAgile HXで利用可能なコンテナプラットフォームとしては、Nutanix KarbonおよびRedhat Openshiftの2つになります。

こちらの二つに関しての特徴は以下の通りです。

Nutanix Karbon

  • 効率的なワンクリックKubernates
  • 高可用性な導入が可能
  • 永続的なストレージのサポート:Volumes / FilesをサポートしたCSI

Red Hat OpenShift

  • レノボのリファレンスアーキテクチャ
  • 高可用性な導入が可能
  • 永続的なストレージのサポート:NFS

Karbonについては、Nutanixプラットフォームの使いやすさの兼ね備えたコンテナプラットフォームであり、Redhat Openshiftについてはレノボのリファレンスアーキテクチャになっています。

こちらが揃ったら、次にアプリケーションを搭載していきます。

f:id:t_komiya:20190812221237p:plain

コンテナ上にブロックチェーンに必要なアプリケーションのPodsを作成し、その中で認証機関のパッケージをインストールしてIDを作成します。

f:id:t_komiya:20190813002127p:plain

次にオーダーサービスをインストールします。オーダーサービスに相当するものはApache Kafka(スケーラビリティに優れた分散メッセージキュー)およびFabric Orderer(クライアントから送付されたトランザクションの順序付けをし、ブロックチェーンネットワーク内の Peer に送信)になります。

インストール後はOrder IDをセットアップします。

f:id:t_komiya:20190812222042p:plain

最後にインストールするのが、Peerに関するアプリケーションになります。Apache CouchDB(ドキュメント指向のオープンソースデータベースNoSQLの分類に属します)とFabric Peerになります。

こちらをセットアップ後にChannelを作成して、Channelに参加することでブロックチェーンを利用できます。

 

最後にHyperledgerの画面をご紹介しておきます。

f:id:t_komiya:20190812223139p:plain

【メイン画面】

f:id:t_komiya:20190812223245p:plain

【Script File】

f:id:t_komiya:20190812223404p:plain

【Transaction Record】

 

以上、よろしくお願い致します。