目次


コグニティブ IoT アプリケーション対応のブロックチェーンを実装する、第 1 回

IBM Blockchain 内のスマート・コントラクトにデバイスのデータを統合する

IoT とブロックチェーンという 2 つのテクノロジーを使用して、完全にセキュアで自動化されたソリューションが構築されている仕組み

Comments

コンテンツシリーズ

このコンテンツは全2シリーズのパート#です: コグニティブ IoT アプリケーション対応のブロックチェーンを実装する、第 1 回

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:コグニティブ IoT アプリケーション対応のブロックチェーンを実装する、第 1 回

このシリーズの続きに乞うご期待。

医療業界、倉庫業、運送業、物流業をはじめとする多種多様な業界で、モノのインターネット (IoT) ソリューションが採用されて成功を収めています。けれども現在のクラウド・ベースの集中型 IoT ソリューションではスケーリングするのが難しく、大企業が直面するセキュリティーの課題に対処できない可能性があります。そのようなセキュリティー問題を解決する手段となるのが、参加ノード間のトランザクションおよびピア・ツー・ピア通信の分散型レジャーとしてのブロックチェーンです。この記事では、ブロックチェーン対応の IoT ソリューションの概要を説明し、マルチパートナー環境での IoT アプリケーションに IBM Blockchain プラットフォームを利用する方法をデモします。

ブロックチェーンの概要

ブロックチェーンとは、中央のトランザクション・サーバー上でトランザクションを一元管理するのではなく、トランザクションのリストをブロックチェーン・ネットワークに参加する複数のサーバー内で保管する分散型レジャーを意味します。ブロックチェーン・ネットワークの各参加者には、トランザクションを読み取り、書き込み、検証できるように、この暗号化されたレジャーの最新のコピーに対するアクセス権が付与されます。ブロックチェーンの詳細、および IBM がビジネス向けブロックチェーンの開発にどのように貢献しているかについては、「関連トピック」を参照してください。

ブロックチェーンは主に財務領域で使用されていますが、最近では IoT ソリューションにおいてもブロックチェーンへの注目が集まっています。分散型 IoT により、相互作用するデバイス間でのトランザクションと調整を容易にするという構想を達成するには、ブロックチェーンが大いに役立つ可能性があります。

IoT と IBM Watson IoT Platform

医療、倉庫、輸送、物流の分野で特に言えることですが、企業と消費者にとって、IoT は大きな可能性をもたらします。IoT ソリューションでは、機械から自動車、家庭用電化製品に至るまでのデバイスをインターネットに接続して複合ネットワークを構成します。IoT では、こうしたクラウド対応のスマート・デバイスを基に、新たなサービスを開発できるのです。IBM クラウドでサポートしている IoT ソリューションには主に 3 つの層があり、以下に説明するように、それぞれの層が固有の役割を果たします。

  • デバイス/ゲートウェイ: 例えば生鮮食品を輸送する冷蔵コンテナーの温度や、入院中の患者の医療データなど、物理世界に関するデータを収集するスマート・デバイスまたはセンサーのことです。これらのデバイスはインターネットに接続されて、デバイスから IBM Watson IoT Platform にセキュアにデータが送信されます。データはそこで分析、処理されて、データに基づくアクションがとられます。
  • IBM Watson IoT Platform: IBM の IoT Platform は、IoT デバイスからデータを収集し、それらのデバイス・データを各種のサービスで分析してから、特定のビジネス問題を解決するためのアクションを実行します。さまざまなインテリジェント・センサーから収集される非構造化データの処理能力を高めるために、Watson IoT Platform にはリッチな一連のコグニティブ・サービス (機械学習、機械推論、自然言語処理、画像分析など) が用意されています。
  • IBM Bluemix: Bluemix は、アプリケーションとサービスを構築、実行、管理するためのオープン・スタンダード・ベースのクラウド・プラットフォームです。Bluemix では IoT アプリケーションをサポートするために、複数のランタイムとサービスに基づく分析機能とコグニティブ機能を簡単にアプリケーションに組み込めるようになっています。

ブロックチェーンと IoT

IoT の採用は大いに広がっていますが、接続されたデバイスの需要に対応するために、デバイス数の増加に応じて IoT ソリューションをスケーリングできるようにするには、解決しなければならない重要な課題がいくつかあります。また、これらの接続されたデバイスとデバイスが収集するデータに関するセキュリティーとプライバシーの懸念にも、IoT ソリューションは対処しなければなりません。具体的には、IoT ソリューションには以下の課題があります。

  • スケーラビリティー: 現在のクラウドをベースとした集中型 IoT プラットフォームでは、メッセージを IoT プラットフォーム経由でルーティングすることが必須となります。この要件が、デバイス数の増加に応じて IoT ソリューションをスケーリングする際のボトルネックになります。
  • セキュリティー: 数百万台ものデバイスから膨大な量のデータが収集されるとなると、個人、企業、政府にとって、情報のセキュリティーとプライバシーに関する懸念が生じます。最近発生した、IoT デバイスに対するサービス妨害攻撃を受けてわかったことは、インターネットに接続された多数の低コストのデバイスが、IoT のセキュリティーを確保する上で大きな問題となるということです。
  • データ標準の欠如/不均一性: オープン・データ・イニシアティブに転向する傾向は世界的に広がっていますが、統一されたアプローチというものはありません。プロトコルは複数あり、あらゆる製造元のデバイスを接続できるプラットフォームは 1 つとしてありません。デバイスとプラットフォームの相互運用性は、IoT ソリューションの成長にとって大きな課題となります。
  • コスト: IoT ソリューションには、かなりの数のデバイスだけでなく、それらのデバイスのネットワーク装置も関連してきます。IoT ソリューションに伴うコストは非常に高くなることが証明されています。それは、IoT ソリューションでは膨大な量のメッセージに対応し (通信コスト)、デバイスから生成されるデータを保管し (ストレージ・コスト)、分析処理を行う (サーバー・コスト) 必要があるためです。ソリューションのその後の拡大は、これらのコストを増やすことにしかなりません。
  • アーキテクチャー: 集中型クラウド・プラットフォーム自体が、IoT ソリューション全体でのボトルネックとなります。集中型クラウド・プラットフォームで発生する障害は、どのような障害であってもネットワーク全体に影響を与えることになるからです。

分散型 IoT ネットワーク

ブロックチェーンと IoT を組み合わせると、約束された新しい世界が広がります。この 2 つのテクノロジーを利用することによって、上述の問題に対処できるためです。オープン・スタンダード・ベースの分散型 IoT ネットワークであれば、現在のクラウドをベースとした集中型 IoT ソリューションに伴うセキュリティー、スケーラビリティー、コストといった問題が解決されます。例えば、接続されたデバイスが分散型レジャーと直接やりとりできるようにするとします。その場合、デバイスから収集したデータをスマート・コントラクトによって更新および検証してから、ビジネス・ネットワーク内の関連するすべての参加者に配信できます。このようにすれば、人間が監視して対処する必要性が軽減されるだけでなく、デバイスによって生成されたデータに対する信頼性も高くなります。また、分散型ブロックチェーン・ネットワークによって、IoT ソリューションのセキュリティーを強化することもできます。それには、事前定義されたスマート・コントラクトを実行し、特定のコンセンサス・メカニズムを実装して、セキュリティーが侵害されたデバイスからはアクションを実行できないようにするという方法があります。

現在、IBM Watson IoT Platform では、IoT アプリケーション用の IBM Blockchain サービスの利用をサポートするようになったため、IoT デバイスからのデータをプライベート・ブロックチェーンのレジャーに送信し、共有トランザクションに統合することができます。このプラットフォームは高度なセキュリティーを確保するだけでなく、ブロックチェーンの分散レプリケーション・メカニズムにより、すべての IoT データを中央に集めて保管する必要を排除し、IoT データを分散した形で使用することを可能にします。

ブロックチェーンを使用した IoT の使用ケース

IoT とブロックチェーンの組み合わせにより、資産管理サイクル内でスマート・デバイスを利用するという新たな可能性が次々と作り出されています。資産がそのライフサイクルの各フェーズを通過する間、複数のデバイスで資産のさまざまな側面を監視して、その資産のデータをビジネス参加者のブロックチェーンに取り込めば、リアルタイムの信頼できるデータを提供することができます。また、ブロックチェーンのスマート・コントラクトを使用すれば、例えばビルの温度を監視して、ネットワークに参加するエネルギー・サプライヤーからのエネルギー消費量と価格の情報に応じてビルの温度を制御するためのルールを作成できます。同様に、輸送の分野で使用されるリアルタイムの冷却データに基づいて、食品の品質 (および価格) を判断することも可能です。IBM が (Samsung と共に) デモしたブロックチェーンを使用した自律型洗濯機では、洗剤と交換部品を再注文したり、スマート・コントラクトを使用してアフター・サービスを手配したりできます。

いくつかの共同事業体 (Chain of Things など) とスタートアップ企業 (Filament など) が、IoT ネットワーク内で分散型レジャーを賢く利用して、プロセス全体とビジネス参加者との統合を自動化する方法をデモしています。以下の表に、さまざまな業界でのブロックチェーン・ベースの IoT 使用ケースをいくつか記載します。

業界使用ケース
サプライ・チェーンサプライ・チェーンにおける重要な問題は、可視性が欠けていることです。プロセスに関するデータが利用できるとしても、具体的なアクションをトリガーするには信頼性が足りません。ブロックチェーンはサプライ・チェーン内での主な問題のうち、可視性、最適化、需要の問題を解決するのに役立ちます。ブロックチェーンであれば、サプライ・チェーンの参加者の間で共有されるデータへのアクセスを、適切に制御することができます。ブロックチェーン内の信頼できる共有データに常にリアルタイムでアクセスできるサプライ・チェーンは、従来のサプライ・チェーンよりも効果的に最適化できます。

ブロックチェーンと IoT に基づく具体的なサプライ・チェーンでの使用ケースには、以下があります。
  • 農場から出荷されてから梱包・出荷される段階まで食品を追跡する
  • 食品汚染を識別し、サプライ・チェーンでの食品廃棄物の量を削減する
これらの使用ケースでは、IoT ブロックチェーン内での場所、冷却、土、気象に関するデータ・ストリームを利用して、関連するすべてのデータを参加者がリアルタイムで入手できるようにします。
自動車自動車産業は、ブロックチェーン・ベースの IoT ソリューションの採用が最も盛んな業界の 1 つです。ブロックチェーン・ベースの IoT ソリューションは、リアルタイムの情報を提供するという目的、そして主要なビジネス・パートナー (製造元、自動車金融会社、保険会社、サービス・プロバイダー、規制機関、顧客) の間でトランザクションを実行するために使用されています。ブロックチェーンは自動車サプライ・チェーン内で採用されているだけではありません。ブロックチェーンには各種の自動車部品からのセンサー・データが統合されて、サービスと決済に関する意思決定およびトランザクションをリアルタイムで行うためにも採用されています。

例えばトヨタでは、1 台の自動車を製造するためにさまざまな国、工場、サプライヤーから取り寄せる数千個もの部品を追跡するために、ブロックチェーンを使用するようになっています。
エネルギーおよび公益事業ブロックチェーンは、エネルギー産業のあり方を抜本的に覆す可能性を秘めています。エネルギー供給網の IoT ネットワークを構築し、それをブロックチェーンでサポートすれば、エネルギーのピアツーピア・トランザクションが可能になります。あるアプリケーションでは、屋上太陽光エネルギーの余剰分が、エネルギーを必要とする他のユーザーに販売されるようになっていますが、その支払と記録のすべてはブロックチェーンを通じて行われています。

Filament のような新興企業でも、エネルギー供給網を監視するスマート・デバイスからなるメッシュ型ネットワークを構築し、発生した問題をできるだけ迅速に修正できるようにしています。
医療ブロックチェーンを利用することにより、医療用監視デバイスから送信される患者の個人データのセキュリティーを強化できます。データを分散型レジャーに安全に保管し、参加者にはブロックチェーン内に設定されたスマート・アクセス・ルールに基づいてアクセス権を与えます (例えば、3 名以上の参加者が承認した場合にアクセスを許可するなど)。

この仕組みでは、患者のデータを必要とする参加者 (保険会社やサード・パーティー管理者など) が、リアルタイムの信頼できるデータを入手できるようにもなるため、より正確なデータに基づいた決算を行うことができます。
Hホーム・オートメーションスマート・シティーやインテリジェント・ビル内では、運用、セキュリティー、そして居住エクスペリエンスの改善を目的として IoT 対応のテクノロジーが使用されています。これらの施設を監視および管理するために、かなりの数のデバイスとセンターが使用されています。

ブロックチェーン対応の IoT ネットワークでは、デバイスおよびデバイスから収集されるデータのセキュリティーを確保できます。すべての施設管理サプライヤーは、プライベート・ブロックチェーンに参加することで、タイムリーにサービスを提供し、実際に行われた作業やサービスの品質に基づいて決済プロセスを自動化できるようになります。
その他の業界/アプリケーションロックチェーン・テクノロジーは、デバイス管理の改善や、ネットワーク内のデータ・フローのセキュリティー強化にも役立ちます。

このテクノロジーは、さまざまな参加者に送信されるデータのアクセス制御を可能にし、参加者間でデータを交換できるようにします。さらに、必要な決済サービスをデータのフローに統合することもできます。

ブロックチェーン対応 IoT アプリケーションのアーキテクチャー

図 1 に、Bluemix の Hyperledger サービスを利用した IoT アプリケーションのアーキテクチャーの概要を示します。

図 1. ブロックチェーン対応 IoT アプリケーションのアーキテクチャー
ブロックチェーン対応 IoT アプリケーションのアーキテクチャー図e
ブロックチェーン対応 IoT アプリケーションのアーキテクチャー図e

デバイスからのデータは、MQTT プロトコルを使用して Watson IoT Platform に送信されます。Watson IoT Platform 内のブロックチェーン・プロキシーは受信したデータを、事前定義された構成に基づくチェーンコードに送信します。そしてデバイス・データに基づいて、Bluemix 内でスマート・トランザクションが実行されるという仕組みです。

個々のコンポーネントについて、次のセクションで説明します。

ソリューションのコンポーネント

Bluemix Blockchain サービス

IBM Blockchain は、ブロックチェーン対応のソリューションを開発するためのプライベート・ブロックチェーンのインフラストラクチャーとなります。Bluemix Blockchain サービスは Hyperledger Fabric の実装であり、以下の要素を提供します。

  • 4 つのピアからなるブロックチェーン・ネットワーク
  • 認証局サーバー
  • スマート・コントラクト・コード (Golang を使用して開発されたチェーンコード)
  • スマート・コントラクト・データの現在の値を保持するワールド/レジャー・ステート (Blockchain サービス内では、すべてのトランザクションの履歴も利用可能)

図 2 に、IBM Blockchain サービスを構成するさまざまなサブコンポーネントを示します。

図 2. IBM Blockchain サービスのサブコンポーネント
IBM Blockchain サービスのサブコンポーネントを示す図
IBM Blockchain サービスのサブコンポーネントを示す図

スマート・コントラクト - ビジネス・ロジックがカプセル化された複数のスマート・コントラクトがまとまって、ブロックチェーン・ベース・ソリューションのコアとなります。スマート・コントラクトを呼び出すたびに、その呼び出しがブロックチェーン・トランザクションとして記録されます。IBM Blockchain のコントラクト (チェーンコード) は Go 言語で開発し、Contracts API を実装する必要があります。また、スマート・コントラクトをブロックチェーン・サービスに登録するには、事前定義された API を使用する必要があります。

ontracts API - スマート・コントラクトの開発者は、この API を実装する必要があります。この API には主な関数として、Init()Invoke()Query() の 3 つがあります。Contracts API の詳細については、このリンク先の Bluemix の資料を参照してください。

Blockchain API - これは、ブロックチェーン・アプリケーションのクライアント API です。アプリケーション開発者がブロックチェーン・ネットワークとやりとりする Node.js アプリケーションを作成するには、Hyperledger Fabric Client (HFC) SDK を使用できます。アプリケーションでは Blockchain API を使用することで、セキュアな方法でユーザーを登録し、トランザクションをサブミットすることができます。

ブロックチェーンのクライアント・アプリケーションを開発する手段としては、いくつかの選択肢があります。

REST API

ブロックチェーン REST API を利用することで、ブロックチェーンのピアと HTTP インターフェースを使ってやりとりできるようになります。以下の表に、サポートされる処理を記載します。

メソッド処理説明
GET/chain/blocks/{Block}ブロックチェーン内の特定のブロックに関する情報を返します。
GET/chainこのチェーン・エンドポイントは、ブロックチェーンの現在の状態に関する情報を返します。
POST/chaincode/chaincode エンドポイントは、ターゲット・チェーンコードのデプロイ、呼び出し、クエリーのリクエストを受け取ります。
GET/network/peersこの API は、ターゲット・ピア・ノードの既存のネットワークをすべて記載したリストを返します。このリストには、検証ピアと非検証ピアの両方が含まれます。
POST/registrarユーザーを認証局に登録します。
DELETE/registrar/{enrollmentID}ローカル・ストレージから、既存のクライアント・ログイン・トークンをすべて削除します。このリクエストが完了した後は、ターゲット・ユーザーはトランザクションを実行できなくなります。
GET/registrar/{enrollmentID}指定されたユーザーが認証局に登録されているかどうかを確認します。
GET/registrar/{enrollmentID}/ecert認証局に登録済みの指定されたユーザーの登録証明書を取得します。
GET/registrar/{enrollmentID}/tcert認証局に登録済みの指定されたユーザーのトランザクション証明書を取得します。
GET/transactions/UUIDこのエンドポイントは、指定された UUID に一致するトランザクションを返します。

IBM-Blockchain-js

IBM-Blockchain-js は、Bluemix Blockchain サービスによって定義された REST API の Node.js ラッパー・ライブラリーです。このライブラリーは、REST API 内で利用できるものと同様の関数を、使いやすい Node.js API 内で提供します。

HFC SDK

Hyperledger Fabric Client (HFC) SDK for Node.js は、IBM Blockchain サービスをベースとしたアプリケーションを簡単に開発するためのインターフェースを提供する、gRPC ベースの API です。HFC は、Node.js JavaScript ランタイム内で使用するように設計されています。詳細については、以下の資料を参照してください。

クライアント・アプリケーション

クライアント・アプリケーションは、ビジネス・ニーズを満たし、リッチなユーザー・エクスペリエンスを実現するために、利害関係者に必要なデータを提供します。クライアント・アプリケーションがビジネス・レジャーとやりとりするには、スマート・コントラクトに規定されているブロックチェーン API を使用する必要があります。クライアント・アプリケーションは、ブロックチェーンのコンポーネントによって生成されたイベントを処理することもできます。

IBM Watson IoT Platform

IBM Watson IoT Platform は、すべての登録済みデバイスからデータを受信し、それらのデータを処理して、ブロックチェーンに登録するために必要なフォーマットに変換します。つまり、ブロックチェーンのコントラクト開発者はデータのソースに関する詳細を知る必要がないため、コントラクトのロジックを開発する作業に専念することができます。

ブロックチェーン対応 IoT アプリケーションを開発する

図 3 に、IBM Watson IoT Platform と Bluemix Blockchain サービスを利用してブロックチェーン対応の IoT アプリケーションを開発する際の主なステップを示します。これらのサービスを利用して完全な IoT アプリケーションを開発するには、開発者に必要となるスキルがいくつかあります。

図 3. ブロックチェーン対応 IoT アプリケーションの開発
ブロックチェーン対応 IoT アプリケーションの開発プロセスを示す図
ブロックチェーン対応 IoT アプリケーションの開発プロセスを示す図

以下に、このプロセスの各ステップを簡単にまとめます。

1. プライベート・ブロックチェーンのインフラストラクチャーをセットアップする

開発者は、IBM Blockchain サービスをベースにプライベート・ブロックチェーンをセットアップする必要があります。プライベート・ブロックチェーン・サービスのセットアップ方法については、このリンク先の Bluemix の資料を参照してください。

ブロックチェーン内でデバイスのデータに基づいてスマート・コントラクトを開発し、デプロイします。例えば、(センサーによって測定された) コンテナーの温度が特定のしきい値を超えた場合は出荷を拒否するか、または価格を下げるよう、コントラクトをセットアップできます。

2. デバイスを IBM Watson IoT Platform に接続する

センサー/ゲートウェイを Watson IoT Platform に接続します。これによって、デバイスからデータを送信して、そのデータをフィルタリング/集約してからブロックチェーンに転送することが可能になります。このリンク先の資料に従って、デバイスを Watson IoT Platform に追加してください。デバイスが正常に追加されると、Watson IoT ダッシュボード上の「Devices (デバイス)」ページに以下のように表示されます。

図 4. Watson IoT ダッシュボード上の「Devices (デバイス)」ページ
Watson IoT ダッシュボード上の「Devices (デバイス)」ページを示すスクリーンショット
Watson IoT ダッシュボード上の「Devices (デバイス)」ページを示すスクリーンショット

3.デバイスのデータをブロックチェーンの分散型レジャーに統合する

デバイスのデータを受信したら、着信したロー・データか、フィルタリング/分析したデータを Bluemix 内で稼働する Blockchain サービスに送信する必要があります。Blockchain のスマート・コントラクトは、Node-RED ワークフローから HFC REST API を使用してトリガーできます。Node-RED を使用して、デバイスのイベントを集約/フィルタリングし、必要なパラメーターを渡してスマート・コントラクトを呼び出すこともできます。

4. エンド・ユーザー向けのクライアント・アプリケーションを開発する

最後のステップは、エンド・ユーザーがトランザクションの出力/イベントを利用できるようにすることです。クライアント・アプリケーションを開発するには、(前のセクションで説明した) ブロックチェーン API を使用することも、Bluemix でサポートされている複数の言語/プラットフォームを使用した他の分析サービスを使用することもできます。

まとめ

このチュートリアルの説明からわかるように、IoT ソリューション内でブロックチェーンを使用すると、さまざまなアプリケーションを開発できる可能性が生まれます。また、IoT とブロックチェーンの組み合わせによって、セキュリティーやスケーラビリティーなど、IoT の採用を制限する主要な問題のいくつかを解決することもできます。スマート・コントラクトを組み込んだ分散型レジャーは、セキュリティーを強化し、信頼性を高めると共に、複数のビジネス・パートナーが関わるプロセス全体の自動化を可能にします。IBM Watson IoT Platform を Bluemix ベースの Blockchain サービスと組み合わせることで、ブロックチェーン (およびオープン・スタンダード) をベースとした IoT アプリケーションを簡単にデプロイできるプラットフォームを実現することができます。

ただし、克服しなければならない課題もいくつかあります。ブロックチェーン・ベースの IoT アプリケーションに伴う重要な課題の 1 つは、IoT デバイスの多くには、限られた計算能力しかないことです。ブロックチェーン・トランザクションの暗号化および検証には、かなりの処理能力が必要になることが考えられますが、ローエンドのデバイスには、それだけの計算能力がありません。また、使用する処理能力が増えれば増えるほど、エネルギー消費量とソリューションのコストの両方が高くなります。

この記事の第 2 回では、IBM Watson IoT Platform に IBM Blockchain サービスを統合し、(シミュレーションした) 自動車と V2V センサーのデータを使って IBM Blockchain 内でスマート・トランザクションを実行するアプリケーションを作成する方法を紹介します。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cloud computing
ArticleID=1050522
ArticleTitle=コグニティブ IoT アプリケーション対応のブロックチェーンを実装する、第 1 回: IBM Blockchain 内のスマート・コントラクトにデバイスのデータを統合する
publish-date=10052017