(57)【要約】分散された台帳たとえばブロックチェーンに対応した動作環境は、非集中型ブロックチェーンを利用することによってサービス装置のサービスにアクセスするユーザ装置を含む。たとえば、ユーザ装置は、非集中型ブロックチェーンに格納されたスマートコントラクトとインターフェースすることによって、ドア（たとえばサービス装置）をロックする／ロック解除することができる。ユーザ装置は、ユーザ装置がサービス装置にアクセスできるように、スマートコントラクトの変数を満たす支払いなどのパラメータを提供する。サービス装置は、非集中型ブロックチェーン上のスマートコントラクトに格納された情報を定期的に取り寄せる。たとえば、取り寄せられる情報は、ユーザ装置がサービス装置にアクセスすることを認証されていること、またはサービス装置がサービスを提供するべきことを指定することができる。したがって、取り寄せられた情報が与えられると、サービス装置はユーザ装置に対してサービスを提供する。
2020507869.tif 000002
【特許請求の範囲】
【請求項１】
ユーザクライアント装置からサービス装置にアクセスするための電子署名された要求を受け取るステップであって、前記電子署名された要求は、
前記ユーザ装置のユーザに割り当てられたユーザ識別子と、
前記サービス装置によって提供されるサービスに関係付けられた１つまたは複数のパラメータと
を含む、該ステップと、
前記電子署名された要求の前記１つまたは複数のパラメータが、アクセスのための条件を満たすことを検証するステップと、
非集中型台帳に格納された前記サービス装置に固有の許可データ構造を更新するステップであって、前記許可データ構造は、複数のユーザ識別子と、各ユーザ識別子が前記サービス装置にアクセスすることを認証されているかどうかのインジケーションとを含む、該ステップと、
前記非集中型台帳に格納された前記許可データ構造に対する変更を提供するステップであって、前記提供された変更はローカルに格納された許可データ構造を更新するために使用される、該ステップと
を含むことを特徴とする方法。
【請求項２】
前記サービスが前記サービス装置によって提供されるように要求する電子署名されたメッセージを、前記ユーザ装置から受け取るステップであって、前記署名されたメッセージは、前記ユーザ装置の前記ユーザに割り当てられた前記ユーザ識別子を含む、該ステップと、
前記署名されたメッセージに含まれた前記ユーザ識別子に基づいて、前記ユーザ装置が前記サービス装置にアクセスすることを認証されていることを検証するステップと、
前記検証に応答して、前記サービス装置に対するサービス装置要求を生成するステップであって、前記サービス装置に対して提供される前記変更は、前記サービス装置が前記サービスを提供するようにする前記サービス装置要求を含む、該ステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記サービス装置によって提供された複数のサービスに対する支払いを決済する要求を受け取るステップであって、前記要求は前記サービス装置によって提供され、前記サービス装置を通じて前記要求を受け取った状態チャネルの閉鎖に応答して、前記複数のサービスを提供する、該ステップをさらに含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記署名されたメッセージに含まれた前記ユーザ識別子に基づいて、前記ユーザ装置が前記サービス装置にアクセスすることを認証されていることを検証するステップは、
前記署名された要求から前記ユーザ装置の前記ユーザに割り当てられた前記ユーザ識別子を抽出するステップと、
前記サービス装置に固有の前記更新された許可データ構造に、アクセスするステップと、
前記抽出されたユーザ識別子を、前記許可データ構造に格納された前記複数のユーザ識別子と比較するステップと
を含むことを特徴とする請求項２に記載の方法。
【請求項５】
前記ユーザ識別子を抽出するステップは、
前記ユーザ装置の前記ユーザ識別子に割り当てられた公開キーを使用して前記署名された要求を復号するステップを含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記署名された要求の前記１つまたは複数のパラメータがアクセスのための条件を満たすことを検証するステップは、
前記非集中型台帳に格納されたコントラクトにアクセスするステップであって、前記コントラクトは前記サービス装置に固有である、ステップと、
前記アクセスされたコントラクトの変数を、前記署名された要求の前記１つまたは複数のパラメータと比較するステップと
を含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記署名された要求の前記１つまたは複数のパラメータは、支払い、利用可能日付、または利用可能時間のうちの１つを含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記許可データ構造に対する前記変更は、ユーザ装置、サービス装置、またはプロキシ装置のうちの１つに対して提供されて、前記ローカルに格納された許可データ構造を更新することを特徴とする請求項１に記載の方法。
【請求項９】
命令を含む非一時的コンピュータ可読記憶媒体であって、前記命令は、プロセッサによって実行されたときに、
ユーザクライアント装置からサービス装置にアクセスするための電子署名された要求を受け取ることであって、前記電子署名された要求は、
前記ユーザ装置のユーザに割り当てられたユーザ識別子と、
前記サービス装置によって提供されるサービスに関係付けられた１つまたは複数のパラメータと
を含む、該受け取ることと、
前記電子署名された要求の前記１つまたは複数のパラメータがアクセスのための条件を満たすことを検証することと、
非集中型台帳に格納された前記サービス装置に固有の許可データ構造を更新することであって、前記許可データ構造は、複数のユーザ識別子と、各ユーザ識別子が前記サービス装置にアクセスすることを認証されているかどうかのインジケーションとを含む、該更新することと、
前記非集中型台帳に格納された前記許可データ構造に対する変更を提供することであって、前記提供された変更はローカルに格納された許可データ構造を更新するために使用される、該提供することと
を前記プロセッサに行わせることを特徴とする非一時的コンピュータ可読記憶媒体。
【請求項１０】
前記プロセッサによって実行されたときに、
前記サービスが前記サービス装置によって提供されるように要求する電子署名されたメッセージを、前記ユーザ装置から受け取ることであって、前記署名されたメッセージは、前記ユーザ装置の前記ユーザに割り当てられた前記ユーザ識別子を含む、該受け取ることと、
前記署名されたメッセージに含まれた前記ユーザ識別子に基づいて、前記ユーザ装置が前記サービス装置にアクセスすることを認証されていることを検証することと、
前記検証に応答して、前記サービス装置に対するサービス装置要求を生成することであって、前記サービス装置に対して提供される前記変更は、前記サービス装置が前記サービスを提供するようにする前記サービス装置要求を含む、該生成することと
を前記プロセッサに行わせる命令をさらに含むことを特徴とする請求項９に記載の非一時的コンピュータ可読記憶媒体。
【請求項１１】
前記プロセッサによって実行されたときに、
前記サービス装置によって提供された複数のサービスに対する支払いを決済する要求を受け取ることであって、前記要求は前記サービス装置によって提供され、前記サービス装置を通じて前記要求を受け取った状態チャネルの閉鎖に応答して、前記複数のサービスを提供する、該受け取ること
を前記プロセッサに行わせる命令をさらに含むことを特徴とする請求項１０に記載の非一時的コンピュータ可読記憶媒体。
【請求項１２】
前記署名されたメッセージに含まれた前記ユーザ識別子に基づいて、前記ユーザ装置が前記サービス装置にアクセスすることを認証されていることを検証することを前記プロセッサに行わせる前記命令は、前記プロセッサによって実行されたときに、
前記署名された要求から前記ユーザ装置の前記ユーザに割り当てられた前記ユーザ識別子を抽出することと、
前記サービス装置に固有の前記更新された許可データ構造に、アクセスすることと、
前記抽出されたユーザ識別子を、前記許可データ構造に格納された前記複数のユーザ識別子と比較することと
を前記プロセッサに行わせる命令をさらに含むことを特徴とする請求項１０に記載の非一時的コンピュータ可読記憶媒体。
【請求項１３】
前記署名された要求の前記１つまたは複数のパラメータがアクセスのための条件を満たすことを検証することを前記プロセッサに行わせるコードは、前記プロセッサによって実行されたときに、
前記非集中型台帳に格納されたコントラクトにアクセスすることであって、前記コントラクトは前記サービス装置に固有である、アクセスすることと、
前記アクセスされたコントラクトの変数を、前記署名された要求の前記１つまたは複数のパラメータと比較することと
を前記プロセッサに行わせる命令をさらに含むことを特徴とする請求項９に記載の非一時的コンピュータ可読記憶媒体。
【請求項１４】
サービスを要求するユーザ装置からの署名されたメッセージを受け取るステップであって、前記署名されたメッセージは、前記ユーザ装置のユーザに割り当てられたユーザ識別子を含む、ステップと、
前記ユーザ装置の前記ユーザに割り当てられた前記ユーザ識別子を抽出するステップと、
分散された台帳からポーリングされたローカルに格納された許可データ構造に照会することによって、前記ユーザ装置の前記ユーザに割り当てられた前記ユーザ識別子が前記サービス装置にアクセスすることを認証されていることを検証するステップと、
前記サービスを提供する、または提供させるステップと
を含むことを特徴とする方法。
【請求項１５】
前記サービスを提供させるステップは、
複数のサービス装置と通信するプロキシ装置によって、前記サービスを提供するように前記サービス装置に命令を送るステップと、
前記サービス装置から前記プロキシ装置によって、前記サービスが提供されたことを示す応答を受け取るステップと
を含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記分散された台帳に格納された許可データ構造に対する変更を受け取るステップであって、前記許可データ構造は前記サービス装置に固有である、該ステップと、
前記受け取られた変更を使って、前記ローカルに格納された許可データ構造を更新するステップであって、前記更新された許可データ構造は、複数のユーザ識別子と、各ユーザ識別子が前記サービス装置にアクセスするのが可能であるかどうかのインジケーションとを含む、該ステップと
をさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１７】
前記ユーザ識別子を検証するステップは、
前記ローカルに格納された許可データ構造に照会するステップであって、前記許可データ構造は、複数のユーザ識別子と、各ユーザ識別子が前記サービス装置にアクセスすることを認証されているかどうかのインジケーションとを含む、該ステップと、
前記抽出されたユーザ識別子を、前記ローカルに格納された許可データ構造に格納された前記複数のユーザ識別子と比較するステップと
を含むことを特徴とする請求項１４に記載の方法。
【請求項１８】
前記ユーザ識別子が前記サービス装置にアクセスすることを認証されていることを検証することに応答して、前記ユーザ装置との状態チャネルを開くステップであって、前記状態チャネルは、前記ユーザ装置が、前記サービス装置によって提供される追加のサービスを受け取ることを可能にする、該ステップをさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１９】
前記サービスについて前記状態チャネルを通じて前記ユーザ装置から複数の要求を受け取るステップと、
前記複数の要求のそれぞれについて、前記サービスを前記ユーザ装置の前記ユーザに対して提供するステップと
をさらに含むことを特徴とする請求項１８に記載の方法。
【請求項２０】
前記状態チャネルの予め定められた期限切れが発生したことを検出するステップと、
前記状態チャネルを通じて受け取られた前記複数の要求に対して提供されたサービスの総数を示す要求を提供するステップと
をさらに含むことを特徴とする請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に交換に関し、より詳細には、非集中型台帳、たとえばブロックチェーンにおいて交換を行うことによって、サービス装置、たとえばハードウェアコンポーネントを制御することに関する。
【背景技術】
【０００２】
関連出願の相互参照
本出願は、その内容全体が参照によって組み込まれている、２０１６年１２月３０日に出願された米国特許仮出願第６２／４４１，０１３号明細書の利益を主張するものである。
【０００３】
コンピューティングシステムを使用する交換は、しばしば安全においてなく、望ましくない変更を生じやすい。特定の交換が危険にさらされている場合、その固有のトランザクションが危険にさらされていることを検出するのは難しいことがある。これは、リソース（たとえば、金銭、人的労力、時間など）に関して重大な損失につながる。
【０００４】
多くのシナリオにおいて、ハッキングの発生源は、交換を取り扱う仲介者に起因することがある。例として、個人はホテルルームを予約した後、係員と対話してホテルルームのキーを受け取る必要がある。ここで、係員は、ホテルルームを、予約されたものよりも小さいかまたは望ましくないホテルルームに容易に切り替えることができる。そのような切り替えは、個人には容易に分からないことがある。したがって、交換を取り扱う仲介者を除去することを通じて、安全な取引を保証する必要がある。
【図面の簡単な説明】
【０００５】
開示される実施形態は、添付の図面と併せて以下の詳細な説明および添付の特許請求の範囲からより容易に明らかになる、他の利点および特徴を有する。
【０００６】
【図１Ａ】第１の実施形態に従う、例示的なブロックチェーン対応動作環境を示す図である。
【図１Ｂ】実施形態に従う、サービス装置からのサービスの提供を可能にするブロックチェーン上の基礎的プロセスを示す図である。
【図１Ｃ】実施形態に従う、ブロックチェーン対応動作環境内の例示的コンピューティング装置の例示的コンポーネントを示すブロック図である。
【図２】実施形態に従う、予約プロセスを示す例示的相互作用図である。
【図３】第１の実施形態に従う、アクセスプロセスを示す例示的相互作用図である。
【図４Ａ】第２の実施形態に従う、例示的ブロックチェーン対応動作環境を示す図である。
【図４Ｂ】図４Ａに示された第２の実施形態に従う、アクセスプロセスを示す例示的相互作用図である。
【図５Ａ】実施形態に従う、プロキシ装置を使用するアクセスプロセスを示す例示的相互作用図である。
【図５Ｂ】実施形態に従う、プロキシ装置のハードウェア層およびソフトウェア層の例を示す図である。
【図６】実施形態に従う、状態チャネルの使用を示す相互作用図である。
【図７Ａ】実施形態に従う、ユーザ装置を通じてブロックチェーンにアクセスするサービス装置を示す図である。
【図７Ｂ】図７Ａに示された実施形態に従う、サービス装置、ユーザ装置、および信頼されたクライアントの間の相互作用を示す相互作用図である。
【発明を実施するための形態】
【０００７】
図面および以下の説明は、単に例示のために好ましい実施形態に関する。以下の説明から、本明細書に開示される構造および方法の代替的実施形態が、特許請求される原理から逸脱することなく利用されてよい実施可能な代替形態として容易に認識されることに留意されたい。
【０００８】
ここで、いくつかの実施形態の詳細を参照するが、それらの例は添付の図面に示される。可能な限り、同様または類似の参照番号が図面で使用されてよく、同様または類似の機能性を示してよいことに留意されたい。図面は、単に例示を目的として開示されるシステム（または方法）の実施形態を示す。当業者は、本明細書で示される構造および方法の代替的実施形態が本明細書で説明される原理から逸脱することなく利用されてよいことを、以下の説明から容易に認識するであろう。
【０００９】
例示的な非集中型台帳対応動作環境
本開示は、支払いを提供することによって開かれることが可能なロックなどのサービス装置を制御するための方法およびシステムを説明し、支払いは、中央エンティティ／サーバを通じてではなく、非集中型台帳（たとえばブロックチェーン）上で実行するコードを通じて処理される。説明を容易にするために、開示される構成はブロックチェーンの文脈で説明されるが、示される原理は他の非集中型台帳に適用可能であってよい。
【００１０】
図１Ａは、本明細書に説明される構成に従う例示的ブロックチェーン対応動作環境１００を示す。例示的動作環境１００は、ユーザ装置１０５およびサービス装置１１０を含む。さらに、例示的動作環境１００は、ユーザ装置１０５とサービス装置１１０の両方と通信する非集中型ブロックチェーン１２０上のスマートコントラクト１１５を含む。ユーザ装置１０５およびサービス装置１１０は、例示的動作環境１００における動作用のブロックチェーン対応コンピューティング装置の例となる種類である。
【００１１】
ユーザ装置
ユーザ装置１０５は、ブロックチェーンと相互作用するための固有のまたは媒介される機能を有する装置とすることができる。例として、ユーザ装置１０５は、スマートフォン、タブレット、携帯電話、ラップトップ、またはデスクトップコンピューティングデバイなどのクライアント装置である。様々な実施形態において、ユーザ装置１０５は、特定の通信プロトコルを含むユーザ装置１０５上にインストールされたアプリケーションを通して、ブロックチェーン１２０と通信する。ユーザ装置１０５からのトランザクションは、サービス装置１１０に対する価値転送を実行するとともに、アクセス制御を管理する（たとえば、サービス装置１１０によって場所に対するアクセスが制御される、場所についての予約の登録をする）。
【００１２】
ユーザ装置１０５はまた、本明細書でさらに説明されるように、ブロックチェーン１２０からサービス装置１１０のパラメータを読み取ってもよい。パラメータは、たとえば、デポジット、レンタルもしくは販売の費用、利用可能日付および／もしくは時間、またはトランザクションの完了および／もしくは実行に関連する他の情報を含んでよい。情報は、スマートコントラクト１１５の形態でコードに構造化された共有されたブロックチェーン状態から読み取られる。スマートコントラクト１５５は、ルール（例として、たとえば認証を含むコンピュータプログラムコード）を提供して、ブロックチェーン対応動作環境内で実行するためにサービス装置１１０を構成する。
【００１３】
様々な例示的実施形態において、ユーザ装置１０５は、任意の与えられた無線通信層を通じてサービス装置１１０と直接通信してもよい。たとえば、通信は、特定の通信プロトコルを含むユーザ装置１０５にインストールされたアプリケーションを使用してＢｌｕｅｔｏｏｔｈまたは近距離無線通信（ＮＦＣ）技術を通じて行われてよい。
【００１４】
サービス装置
サービス装置１１０は、ブロックチェーンと相互作用するための固有のまたは媒介される機能を有するオブジェクトを表してよい。サービス装置１１０は、操作コマンドに基づいてサービスを提供することができる。たとえば、サービス装置１１０は、アクセス制御を提供するように構築されてよい。アクセス制御は、たとえば、「開く」および／もしくは「閉じる」（たとえば、ロックもしくはロック機構）、許可を経る（たとえば門）、または「開始する」および／もしくは「停止する」および／もしくは「上がる／下がる」および／もしくは「左／右に曲がる」（たとえば操作機能）を含んでよい。より具体的な例として、サービス装置１１０は、（たとえば、ドアをロック解除することによって）ホテルルームおよび／もしくはその設備（たとえば、ミニバー、テレビ、ルームサービス）または大学寮建物（たとえば、認証された立ち入り）に対するアクセスをユーザ装置１０５のユーザに提供してよい。あるいは、サービス装置は、（たとえば、門を開くことによって）道のような対象の場所へのアクセスをユーザ装置１０５のユーザに提供してよい。
【００１５】
別の例として、サービス装置１１０は、（たとえば、単純な２値の「開／閉」オプションを超えて）様々なオプションの間で特定のオプションを指定するアクションを提供するように構築されてよい。たとえば、サービス装置１１０は、コーヒーマシンとすることができ、様々な量（たとえば、小、中、大、および／または他のオプション）のカフェイン入り飲料を、ユーザ装置１０５のユーザに提供することができる。別の例として、サービス装置１１０は、天井ファンをオンにし、天井ファンの速度を特定の毎分回転数に設定するように構成されてよい。サービス装置１１０によって提供できるサービスは、上述の例に限定されず、医療機器に対するオンデマンドアクセス、ドローン／車両の制御、出荷用コンテナの制御、および自律させることができる任意のプロセスをさらに含んでよいが、これらに限定されない。
【００１６】
サービス装置１１０は、ユーザ装置１０５によってレンタル、販売、および／または相互作用されるように搭載された必要なハードウェアおよびソフトウェアを有することができる。たとえば、サービス装置１１０は、ブロックチェーン１２０と通信するために特有の通信プロトコルを含んでよい。別の実施形態において、サービス装置１１０は、ブロックチェーン１２０に対して直接アクセスを有することがなく、ブロックチェーン１２０と通信するための適切なプロトコルを含むプロキシ装置を利用してよい。一例として、プロキシ装置は、ラックサーバまたはクラウドサーバ（たとえば、ＳＡＭＵＮＧ  ＡＲＴＩＫ  Ｃｌｏｕｄ、またはサービス装置の製造者によって提供されるクラウドサービス）である。言い換えれば、プロキシ装置によって実行される機能は、複数のプロセッサおよび／または電子装置にわたって分散されてよい。様々な実施形態において、１つまたは複数のプロセッサまたはプロセッサが実装されたモジュールは、複数の地理的位置にわたって分散されてよい。いくつかの実施形態において、プロキシ装置の１つまたは複数のプロセッサは、単一の地理的位置（たとえば、家庭環境、オフィス環境、またはサーバファーム内）に配置されてよい。一実施形態において、プロキシ装置は、１つまたは複数のサービス装置と通信するために必要なソフトウェアを動作させ、トランザクションをブロックチェーン１２０に対して送る、ホームサーバ（たとえばコンピューティング装置）とすることができる。プロキシ装置の例は、図５Ａを参照して後でさらに詳細に説明される。
【００１７】
１つの例示的実施形態において、サービス装置１１０は、（ユーザ装置１０５が実際にサービス装置１０５にアクセスすることを許可されることを検証するために、）ブロックチェーンに対する読み取り要求が後続するユーザ装置１０５からの電子署名されたメッセージを通じて直接サービスを提供することができる。このシナリオは、図３に関係して後でさらに詳細に説明される。一実施形態において、サービス装置１１０は、ブロックチェーンを定期的に「ポーリング」し、スマートコントラクト１１５によって格納された値に対する修正の形態で関連する状態変化のあったときにサービスを提供することによって、サービスを提供することができる。スマートコントラクト１１５によって格納された値の修正は、ユーザ装置１０５によって開始されることが可能である。このシナリオは、図４Ｂに関係して後でさらに詳細に説明される。
【００１８】
サービス装置１１０は、２つの異なる方法で発見されることが可能である。第１には、スマートコントラクトそれ自体として実装されたスマートコントラクトレジストリを通じてされる。第２には、特定のスマートコントラクト方法（機能）署名についてのブロックチェーン分析を介しての自動発見を通じてされる。
【００１９】
スマートコントラクト
各サービス装置１１０は、プログラムコード（またはコード）の形態で、（それがコードを非集中的に実行してよい限り、実装形態にかかわらず、パブリックまたはプライベートである）ブロックチェーン１２０上で表されてよい。コードは、たとえば、プロセッサ、コントローラ、または状態機械を含んでよいコンピュータ（またはコンピュータ装置）によって実行可能である命令を含む。コードは、ブロックチェーン対応動作環境内の特定のコンピュータ装置を特定の方法で動作するように構成するためのルールを含んでよい。いくつかの例示的実施形態におけるコードは、スマートコントラクト１１５と呼ばれることがある。ユーザ装置１０５からのトランザクションによってトリガされるサービス装置１１０の動作の条件は、スマートコントラクト１１５に格納され執行される。スマートコントラクト１１５はまた、サービス装置１１０の所有者に対する参照、および／またはサービス装置１１０の動作のための条件を支配するパラメータ（たとえば、デポジット、レンタルもしくは販売の費用、利用可能日付および／もしくは時間など）のような、任意選択の変数を保持してよい。当業者には容易に理解されるように、スマートコントラクト１１５という語句の使用はブロックチェーン技術の分野に特有であるが、さらに、合意を執行する任意の形態のコードを指すことができる。この場合、スマートコントラクト１１５は、（支払いを提供する）ユーザ装置１０５と（サービスを提供する）所有者のサービス装置１１０との間の合意を執行する。
【００２０】
動作の例として、スマートコントラクトはサービス装置１１０に対するアクセス権を管理してよい。図１Ｂを参照すると、ブロックチェーン１２０上で動作するスマートコントラクト１１５は、サービス装置の所有者１３０に属するサービス装置１１０にサービスを要求しているユーザ装置１０５からの支払い／資金の転送を可能にする。スマートコントラクト１１５は、支払い、たとえば、電子形態の従来の通貨支払いおよび／または暗号通貨支払いの受け取りおよび／または払い出しに応答して、その格納されている値を継続的に更新してよい。暗号通貨は、たとえば、電子コイン提供、電子報酬、物々交換入札、または他の何らかの形式の電子フォーマットの値であってよいことに留意されたい。
【００２１】
例として、サービス装置の所有者１３０がサービスを提供するためにサービス装置１１０を利用可能にすることを望むとき、所有者１３０は、スマートコントラクト内の変数として記録されるサービス装置１１０にアクセスするためのデポジット量および価格を提供することができる。ユーザ装置１０５が、サービス装置１１０を表すスマートコントラクト１１５によって格納された変数を満たす充分な資金を送った（たとえば、デポジットを提供した）とき、ユーザ装置１０５は、応答して、特定のアクションを行うようにサービス装置１１０内で実行されてよい（たとえば、命令を含むプログラムコードの形態の）操作コマンドを、サービス装置１１０に対して送信してよい。様々な実施形態において、ユーザ装置１０５とサービス装置１１０は、ユーザ装置１０５がサービス装置１１０に対して複数の操作コマンドを送信することを可能にする状態チャネルを確立する。スマートコントラクト１１５およびサービス装置１１０に対するアクセスの背後の論理に伴うさらなる詳細は、以下に説明される。
【００２２】
ブロックチェーン対応環境で動作することによって、スマートコントラクト１１５は、ユーザ装置１０５とサービス装置の所有者１３０との間の価値転送を仲介してよい（これは、仮想通貨および／もしくはトークンまたは同等物などの通貨を使用して行うことができる）。したがって、サービス装置の所有者１３０は、支払い（たとえば、電子フォーマットの従来の通貨または暗号通貨）を受け取ってよく、ユーザ装置１０５は、デポジットを逆に受け取り、および／または支払いから任意の未処理のクレジットを受け取る。
【００２３】
ブロックチェーン
図１Ａを参照すると、スマートコントラクト１１５をホストする基礎となるブロックチェーン１２０は、パブリックまたはプライベートであることが可能である。ブロックチェーン１２０は、スマートコントラクト１１５に加えて台帳を含んでよい。本明細書に説明されている解決策は、設計によってブロックチェーン１２０に非依存である。例として、ブロックチェーン１２０は、非集中的にコードを実行する、ブロックチェーン１２０と通信する１つまたは複数の装置（たとえば、ユーザ装置１０５またはサービス装置１１０）の間の、有線通信または無線通信を容易化する非集中型ネットワークを指す。
【００２４】
様々な実施形態において、非集中型ブロックチェーン１２０のネットワークは、標準通信技術および／またはプロトコルを使用する。ネットワークによって使用される技術の例は、イーサネット、８０２．１１、３Ｇ、４Ｇ、８０２．１６、または他の任意の適切な通信技術を含む。ネットワークによって使用されるプロトコルの例は、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、ハイパーテキスト伝送プロトコル（ＨＴＴＰ）、簡易メール転送プロトコル（ＳＭＴＰ）、ファイル転送プロトコル（ＦＴＰ）、または他の任意の適切な通信プロトコルを含む。
【００２５】
例示的なユーザ装置、サービス装置、および／またはブロックチェーンと通信する装置
図１Ｃは、ブロックチェーン対応動作環境１００内の例示的コンピューティング装置２００の例示的コンポーネントを示すブロック図である。説明される例示的コンピューティング装置コンポーネントの一部または全部は、たとえば、ユーザ装置１０５、サービス装置１１０、および／またはブロックチェーン１２０と通信するためのプロキシとしてユーザ装置１０５もしくはサービス装置１１０によって使用されてよい任意の装置内にあってよい。言い換えれば、コンピューティング装置２００は、ブロックチェーン１２０上のノードである。コンピューティング装置２００は、機械可読媒体から命令を読み取り、少なくとも１つのプロセッサ（またはコントローラ）においてそれらを実行するように構成されてよい。具体的には、図１Ｃは、本明細書で論じられる方法論のいずれか１つまたは複数をコンピューティング装置２００に実行させるための１つまたは複数の命令２２４（たとえば、ソフトウェアまたはプログラムまたはプログラム製品）が実行されてよい、例示的形態のコンピューティング装置２００の概略図を示す。
【００２６】
例示的コンピューティング装置２００は、少なくとも１つのプロセッサ２０２（たとえば、中央処理ユニット（ＣＰＵ）、グラフィック処理ユニット（ＧＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、１つもしくは複数の特定用途向け集積回路（ＡＳＩＣ）、１つもしくは複数の無線周波数集積回路（ＲＦＩＣ）、コントローラ、状態機械、またはこれらの任意の組み合わせ）、メインメモリ２０４、および静的メモリ２０６を含んでよく、それらは、バス２０８を介して互いに通信するように構成される。コンピューティング装置２００は、グラフィックディスプレイユニット２１０（たとえば、プラズマディスプレイパネル（ＰＤＰ）、液晶ディスプレイ（ＬＣＤ）、またはプロジェクタ）をさらに含んでよい。コンピューティング装置２００はまた、入力装置、たとえば、英数字入力装置２１２（たとえば、キーボード）、カーソル制御装置２１４（たとえば、マウス、トラックボール、ジョイスティック、モーションセンサ、タッチセンシティブインターフェース、または他のポインティング機器）を含んでよい。コンピューティング装置２００はまた、たとえば、ストレージユニット２１６（たとえば、ソリッドステートディスク、磁気ディスク、光ディスク）、信号生成装置２１８（たとえば、スピーカ）、およびネットワークインターフェース装置２２０を含んでよく、それらは、やはりバス２０８を介して通信するように構成される。コンピューティング装置２００は、コンピューティング装置２００の図示および説明されたコンポーネントの全ては含む必要がないことに留意されたい。
【００２７】
ストレージユニット２１６は、本明細書で説明されている方法論または機能のいずれか１つまたは複数を具体化する命令２２４（たとえばソフトウェア）が格納された機械可読媒体２２２を含む。命令２２４（たとえば、プログラムコードまたはソフトウェア）は、機械可読媒体も構成するコンピューティング装置２００、メインメモリ２０４、およびプロセッサ２０２によってその実行中に、メインメモリ２０４内またはプロセッサ２０２内（たとえば、プロセッサのキャッシュメモリ内）に完全にまたは少なくとも部分的に存在してもよい。命令２２４（たとえばソフトウェア）は、ネットワークインターフェース装置２２０を介してネットワーク２２６を通じて送信または受信されてよい。
【００２８】
機械可読媒体２２２は例示的実施形態において単一の媒体として示されているが、用語「機械可読媒体」は、命令（たとえば命令２２４）を格納することができる単一の媒体または複数の媒体（たとえば、集中化もしくは分散されたデータベース、または関連付けられたキャッシュおよびサーバ）を含むと解釈されるべきである。また、用語「機械可読媒体」は、機械による実行のために命令（たとえば命令２２４）を格納することができ、本明細書に開示されている方法論のいずれか１つまたは複数を機械に実行させることができる任意の媒体を含むと解釈されるべきである。用語「機械可読媒体」は、ソリッドステートメモリ、光媒体、および磁気媒体の形態のデータレポジトリを含むが、これらに限定されない。
【００２９】
ブロックチェーン対応システムを通じたサービスのための動作例
図２は、例示的実施形態に従う、予約プロセスを示す例示的相互作用図である。一実施形態において、予約プロセスは、ユーザ装置１０５がサービス装置１１０に対するアクセスを得ることを可能にする。より具体的には、ユーザ装置１０５は、予約プロセス中にサービス装置１１０に対するアクセスを得るために、ブロックチェーン１２０上のサービス装置１１０を表すスマートコントラクト１１５と通信する。アクセスを得た後、ユーザ装置１０５は、サービス装置１１０によって提供されるサービスを受け取るために、アクセスプロセスを通じて進行する。後述される様々な実施形態において、予約プロセスは同じままであるが、アクセスプロセスは異なることがある。
【００３０】
ユーザ装置とスマートコントラクトとの間の予約プロセスの例
ユーザ装置１０５は、サービス装置１１０を表すブロックチェーン１２０上のスマートコントラクト１１５を調べる（２５０）。一例として、ユーザ装置１０５は、動的レジストリにアクセスすることができ、スマートコントラクト１１５および対応するサービス装置１１０を識別する。動的レジストリは、サードパーティシステム（たとえば、アプリケーション／ウェブサイト、ホテル予約プロバイダ、または自動車レンタル予約プロバイダ）からアクセスされてよい。
【００３１】
ユーザ装置１０５は、支払いデポジット、サービス装置の利用可能日付、および／または他の情報のようなサービス装置１１０のパラメータを指定するサービス装置１１０に対応するスマートコントラクト１１５の変数に対するアクセスを得る。
【００３２】
ユーザは、自身のユーザ装置１０５を使用して、電子署名された要求をブロックチェーン１２０上のスマートコントラクト１１５に対して送り（２５５）、サービス装置１１０（たとえば、ロック、洗濯機、自動車充電ポート、レンタルサービス、およびサービスを提供できる任意の装置）にアクセスする許可を購入する。ユーザ装置１０５は、ユーザに割り当てられたユーザ識別子を含む要求を生成する。たとえば、ユーザ識別子は、ユーザがブロックチェーンのメンバーとして登録したときにユーザに割り当てられた識別子を表すことができる。加えて、生成された要求は、支払い、およびサービスの望ましいパラメータを指定する変数を含む。
【００３３】
ユーザ装置１０５は、ユーザに割り当てられたキー（たとえば、プライベートキー／公開キー）を使用して要求に電子署名する。たとえば、ユーザ装置１０５は、ユーザに割り当てられたプライベートキーを使用して要求を暗号化することによって、要求に電子署名してよい。様々な実施形態において、ユーザ装置１０５は、ユーザに割り当てられた公開キーを電子署名された要求にさらに含めてよい。このようにして、ユーザ装置１０５は電子署名された要求を送る。
【００３４】
ブロックチェーン１２０上のスマートコントラクト１１５は、ユーザ装置１０５によって提供された要求を処理する。ブロックチェーン１２０上のスマートコントラクト１１５は、電子署名された要求を受け取って復号する。たとえば、電子署名された要求は、含まれているユーザの公開キーを使用して復号されて、要求の内容（たとえば、ユーザのユーザ識別子、支払い、および指定されたパラメータ）が得られる。
【００３５】
スマートコントラクト１１５は、アクセスを提供するための条件が満たされているかどうかを決定する（２６０）。たとえば、ブロックチェーン１２０上のスマートコントラクト１１５は、スマートコントラクト１１５の変数を満たす適切な資金が電子署名された要求に含まれているかどうかを調べる。別の例として、ユーザ装置が時間の期間中にホテルルームを借りるための電子署名された要求を送っている場合、スマートコントラクト１１５は、ユーザによって要求された滞在の日付を指定する要求に含まれたパラメータを調べ、その日付を、サービス装置１３０の所有者によって事前に設定されたスマートコントラクト１１５の変数に格納された利用可能な日付と比較する。指定された日付が利用可能である（たとえば、その時間に誰もホテルルームを借りていない）場合、スマートコントラクト１１５は、条件が満足されているとみなす。
【００３６】
スマートコントラクト１１５は、支払いがユーザ装置１０５から受け取られていること、およびサービス装置１１０に対するアクセスが現在付与されていることを反映するように、その許可データ構造を更新する（２６５）。例として、許可データ構造は、対応するサービス装置１１０に対するアクセスを付与されたユーザ識別子を含むキー値ペアデータベースであってよい。したがって、スマートコントラクト１１５は、電子署名された要求に含まれたユーザ識別子を用いて許可データ構造を更新することができ、それによって、ユーザ識別子がサービス装置１１０に対するアクセスを付与されたことを示す。
【００３７】
ユーザ装置１０５がブロックチェーン１２０に対するアクセスを有する（たとえば、ユーザ装置１０５がブロックチェーン１２０上のノードである）とすると、ユーザ装置１０５は、ブロックチェーン１２０からのデータを継続的にポーリングし、サービス装置１１０に対するアクセス権がユーザ識別子に認められていることを検証する（２７０）。このようにして、予約プロセスが完了する。
【００３８】
ユーザ装置とスマートコントラクトとの間のアクセスプロセスの例
図３は、第１の実施形態に従う、アクセスプロセスを示す例示的相互作用図である。アクセスプロセスは、ユーザ装置１０５がサービス装置１１０に対する要求を開始し、サービス装置１１０によって提供されるサービスを受け取るプロセスを指す。図３に示されている実施形態において、ユーザ装置１０５は、サービス装置１１０に対して要求を直接送る。次いで、サービス装置は、ユーザ装置１０５がサービス装置１１０を動作させる権限を有するかどうかを検証することができる。この実施形態において、サービス装置１１０は、ブロックチェーン１２０に対するアクセスを有し（たとえば、ブロックチェーン１２０におけるノードであり）、したがって、ブロックチェーン１２０からのデータを継続的にポーリングして、スマートコントラクト１１５のローカルに同期されたコピーを更新する。
【００３９】
図３に示されるように、ユーザ装置１０５は、サービスを要求するために、電子署名されたメッセージをサービス装置１１０に対して送る（３０５）。そうするために、ユーザ装置１０５はメッセージを生成する。様々な実施形態において、メッセージは、サービス装置１１０と、要求されるサービスを記述する追加の情報とを識別する。加えて、メッセージは、ユーザに割り当てられたユーザ識別子を含むことができる。ユーザ装置１０５は、ユーザに割り当てられたプライベートキーを使用してメッセージを暗号化することによって、メッセージを電子署名する。ユーザ装置１０５は、ユーザに割り当てられた公開キーを、電子署名されたメッセージにさらに含めることができる。
【００４０】
電子署名されたメッセージは、様々なユーザ入力に応答して送られることが可能である。たとえば、ユーザは、ブロックチェーン１２０およびサービス装置１１０との通信プロトコルを含むユーザ装置１０５上のインストールされたアプリケーションを開いてよく、それにより、電子署名されたメッセージをトリガする。サービス装置１１０が複数のサービスを提供することができる場合、ユーザは、望ましいサービスを指定する入力をさらに提供することができる。電子署名されたメッセージの送信は、通信プロトコル（ＥＴＨＥＲＥＵＭのＷＨＩＳＰＥＲ、ＴＥＬＡＨＡＳＨ、または任意の類似の技術）を使用して、無線技術規格（Ｂｌｕｅｔｏｏｔｈ／ＮＦＣ／ＷｉＦｉ、それらの全ての変形および派生形態または類似の技術）上で行うことができる。
【００４１】
サービス装置１１０は、電子署名されたメッセージを受け取り、電子署名されたメッセージの署名を検証する（３１０）。たとえば、サービス装置１１０は、暗号署名検証を通じて署名を検証してよい。加えて、サービス装置１１０は、ユーザ識別子を、署名されたメッセージからそれを導出することによって抽出してよい。ここで、サービス装置１１０は、電子署名されたメッセージを公開キーを使用して復号し、ユーザ識別子を得ることができる。サービス装置１１０は、ユーザ装置１０５がサービス装置１１０に対するアクセスを付与されていることを検証する（３１５）。たとえば、サービス装置１１０は、ブロックチェーン１２０から継続的にポーリングされたスマートコントラクト１１５のローカルの同期されたコピーを取り寄せる。そして、サービス装置１０５は、電子署名されたメッセージから抽出されたユーザ識別子を、スマートコントラクトのそのローカルコピーの許可データ構造においてリストされたユーザ識別子と比較する。
【００４２】
ユーザ装置１０５に対応するユーザ識別子がサービス装置１１０に対するアクセスを有することが検証されると、サービス装置１１０は、要求されたサービスを提供する（３２０）。加えて、サービス装置１１０は、サービスがサービス装置１１０によって提供されたことを示す情報をユーザ装置１０５に提供してよい。任意選択で、ユーザ装置は、要求が成功しサービスが提供されたというインジケーションなど、プロセスの結果を（たとえば、ユーザ装置１０５のユーザインターフェース２３０上に）表示する（３２５）。
【００４３】
ブロックチェーンのみの動作（たとえば、図４Ａおよび図４Ｂ）の動作例
図４Ａは、第２の実施形態に従う、例示的ブロックチェーン対応動作環境を示す。ここで、図４Ａは、サービスがサービス装置１１０によって提供されるように、ユーザ装置１０５およびサービス装置１１０が各々ブロックチェーン１２０と通信するという点で、図１Ａとは異なる。言い換えれば、この動作モードにおいて、ユーザは、自身のユーザクライアント装置１５０を使用して、サービス装置１１０によって提供されるサービスを、ブロックチェーン１２０上のスマートコントラクト１１５に対して送られたトランザクションだけを用いて受け取る。
【００４４】
ユーザ装置１０５は、図２に前述されたように予約プロセスを通じて進行する。アクセスプロセス中に、ユーザ装置１０５は、電子署名されたメッセージを通じて要求をブロックチェーン１２０に対して送出する。サービス装置１１０は、ブロックチェーン１２０からのデータを定期的にポーリングして、一致するスマートコントラクト１１５の状態の変更のためにブロックチェーン１２０のそのローカルの同期されたコピーを更新し、ユーザ識別子が要求の一部として要求された動作を行うことを認証されていることを検証した後に相応に動作する。
【００４５】
より具体的には、図４Ａに示された第２の実施形態に従うアクセスプロセスを示す例示的相互作用図である図４Ｂが参照される。ユーザ装置１０５は、サービス装置１１０にサービスを要求するメッセージを生成することができる。メッセージは、ユーザ装置１０５のユーザに割り当てられたユーザ識別子と、サービス装置１１０の識別情報と、サービス装置１１０によって提供されるべきサービスを記述する情報とを含むことができる。ユーザ装置１０５は、ユーザに割り当てられたプライベートキーを使用してメッセージを暗号化することによってメッセージを電子署名し、ユーザに割り当てられた公開キーをさらに含める。
【００４６】
ユーザ装置１０５は、その公開キーを含む電子署名されたメッセージを、サービス装置１１０を表すブロックチェーン１２０上のスマートコントラクト１１５に対して送る（４５０）。ブロックチェーン１２０上のスマートコントラクト１１５は、電子署名されたメッセージを受け取り、電子署名されたメッセージを（たとえば、暗号署名検証方法を通じて）検証し、公開キーを使用して電子署名されたメッセージを復号し、ユーザ識別子を抽出する。スマートコントラクト１１５は、抽出されたユーザ識別子がサービス装置１１０に対するアクセス権を有することを検証する（４５５）。たとえば、スマートコントラクト１１５は、そのストレージの一部としてその許可データ構造にアクセスし、抽出されたユーザ識別子を許可データ構造にリストされたユーザ識別子と比較する。スマートコントラクト１１５は、その内部データストアの一部としてサービス装置要求をキューイングする。
【００４７】
サービス装置１１０は、ブロックチェーン１２０に対するアクセスを有し（たとえば、ブロックチェーンにおけるノード）、したがって、スマートコントラクト１１５のローカルの継続的に同期されたコピーを格納する。サービス装置は、ブロックチェーン１２０上の対応するスマートコントラクト１１５において発生した任意の状態変化を用いて、ローカルに同期されたコピーを更新するために、ブロックチェーン１２０をポーリングする（４６０）。たとえば、状態変化は、新しいユーザ装置がサービス装置１１０に対するアクセスを今や有することを示してよい。また、状態変化は、ブロックチェーン１２０上のスマートコントラクト１１５によってキューに入れられた未処理のサービス装置要求を示してよい。
【００４８】
サービス装置１１０が未処理のサービス装置要求を検出した場合、サービス装置１１０は、要求されたサービスを提供する。任意選択で、ユーザ装置は、サービスが提供されたというインジケーションなど、要求の結果を表示する（４７０）。ユーザ装置は、ブロックチェーン１２０のそれ自体のコピーの定期的ポーリングを通じて、この情報を得てよく、以前にキューに入れられたサービス装置要求が今や完了していることが分かる。
【００４９】
１つまたは複数のサービス装置と通信するプロキシ装置の動作例
図５Ａは、例示的実施形態に従う、プロキシ装置を使用するアクセスプロセスを示す例示的相互作用図である。この例示的実施形態において、プロキシ装置５５０は、１つまたは複数のサービス装置１１０に代わって通信する。たとえば、プロキシ装置５５０は、サービス装置１１０（およびさらに他の１つまたは複数のサービス装置１１０）と通信することを事前に登録され予め認証されていてよい。そのような例示的実施形態において、プロキシ装置５５０の実装形態は、ブロックチェーン１２０と直接通信することができないサービス装置１１０にとって有益な可能性がある。前述されたように、プロキシ装置５５０は、ユーザ装置１０５およびブロックチェーン１２０上のスマートコントラクト１１５と通信するように構成されたコンピューティング装置２００であってよく、したがって、ユーザ装置１０５は、サービスを要求することができ、プロキシ装置５５０は、サービス装置１１０が要求されたサービスを提供するようにする適切なロジックを実行することができる。
【００５０】
ユーザ装置１０５は、図２において前述されたように予約プロセスを通じて進行する。図５Ａに示されて相互作用図を特に参照すると、アクセスプロセス中に、ユーザ装置１０５は、その公開キーを含む電子署名されたメッセージをプロキシ装置５５０に対して送信する（または送る）（５０５）。そのような電子署名されたメッセージは、図４Ｂのステップ４５０に関係する上記の説明に従って、ユーザ装置１０５によって生成されることができる。プロキシ装置５５０は、電子署名されたメッセージを受け取り、ユーザ識別子を抽出し、抽出されたユーザ識別子がサービス装置１１０に対するアクセス権を有することを検証する（５１０）。ここで、プロキシ装置は、ブロックチェーン１２０に対するアクセスを有し（たとえば、ブロックチェーン１２０におけるノード）、したがって、ブロックチェーン１２０のローカルの同期されたコピーを格納する。プロキシ装置は、抽出されたユーザ識別子を、ユーザ識別子を含むスマートコントラクトのローカルの同期されたコピーと比較することによって、抽出されたユーザ識別子がアクセス権を有することを検証する（５１５）。
【００５１】
プロキシ装置５５０が、ユーザ装置１０５がサービス装置１１０に対するアクセスを有することを検証すると、プロキシ装置５５０は、操作要求をサービス装置１１０に対して送信する。操作要求に応答して、サービス装置がサービスを提供する（５２０）。サービス装置１１０は、サービスが提供されたことを示す操作要求に対する応答を、プロキシ装置５５０に対して返送する。さらに、プロキシ装置５５０が、ユーザ装置１０５に対して応答を送信してよい。ユーザ装置１０５は、任意選択で、動作の結果を表示（５２５）するために提供することができる。
【００５２】
図５Ｂは、例示的実施形態に従う、プロキシ装置のハードウェア層およびソフトウェア層の例を示す。上述されたように、様々な実施形態において、プロキシ装置はクラウドサーバである。したがって、プロキシ装置のプロセッサを含むことができるプロキシ装置のハードウェア層は、複数の地理的位置にわたって分散されることができる。一般に、ハードウェア層および／またはソフトウェア層は、プロキシ装置５５０がブロックチェーン１２０と通信することを可能にする。ブロックチェーン１２０は、１つまたは複数の分散されたコンピューティング装置上で実行してよく、１つまたは複数のスマートコントラクト１１５、および分散された台帳（たとえばブロックチェーン１２０）を含んでよい。
【００５３】
例として、プロキシ装置５５０は、ハードウェア（たとえば、ＲＡＳＰＢＥＲＲＹ  ＰＩ、ＩＮＴＥＬ  ＥＤＩＳＯＮ、ＳＡＭＳＵＮＧ  ＡＲＴＩＫなどのような組み込みボードプロセッサ）、ならびに／または、ブロックチェーン１２０と、ブロックチェーン２１０に対する直接アクセスを有しても有しなくてもよいサービス装置１１０との通信を可能にするように構成された、プロセッサ２０２、グラフィックディスプレイユニット２１０、および機械可読媒体２２２のような図２Ａに説明された様々な装置を含んでよい。プロキシ装置５５０はまた、オペレーティングシステムを含む。たとえば、プロキシ装置５５０によって使用される動作システムの例は、ＵＢＵＮＴＵ  Ｓｎａｐｐｙ  ｃｏｒｅである。別の例において、プロキシ装置５５０によって使用されるオペレーティングシステムは、ＧＯＯＧＬＥ  ＡＮＤＲＯＩＤまたはＡＰＰＬＥ  ＩＯＳであってよい。オペレーティングシステムを通じて、プロキシ装置５５０は、１つまたは複数の異なるサービス装置１１０と通信することができる。たとえば、プロキシ装置５５０は、アプリケーションまたは通信プロトコルを通じて（たとえば、家庭、ホテルにおいて）利用可能である全ての適合するサービス装置１１０を検出し、それらと通信することができる。したがって、プロキシ装置５５０の所有者は、プロキシ装置５５０と通信するサービス装置１１０の各々についてパラメータ（たとえば、デポジット、レンタルの費用、利用可能時間）を設定することができる。
【００５４】
加えて、プロキシ装置５５０は、ブロックチェーン１２０との通信を可能にするソフトウェアフレームワークを含む。たとえば、プロキシ装置５５０は、１つまたは複数のサードパーティアプリケーションの間の通信を可能にしてよいコントローラアプリケーションと通信するソフトウェアフレームワーク、およびブロックチェーン１２０と通信するソフトウェアフレームワークを含んでよい。加えて、プロキシ装置５５０は、ユーザ入力を受け取ることができるユーザインターフェースを含んでよい。
【００５５】
状態チャネルの利用を含む動作例
図６は、状態チャネルの使用を含む実施形態を詳細に示すアクセスプロセスフローチャートを示す。状態チャネルは、ユーザ装置１０５が、サービス装置１１０（または同じ所有者に属する複数のサービス装置）からの複数の異なるサービス（または反復されるサービス）のための複数のトランザクションを送ることができるように、通信を可能にする。したがって、ユーザ装置１０５およびサービス装置１１０は、状態チャネル上で提供されたサービスに関連付けられた費用を集計し、状態チャネルが閉じられたときに、ブロックチェーン１２０上のスマートコントラクト１１５を介して単一支払いを通じて複数のトランザクションを決済することができる。
【００５６】
一例として、サービス装置１１０は、時間期間にわたって複数回のロック／ロック解除を必要とすることがあるロックであってよい。したがって、各ロック／ロック解除の後にブロックチェーン１２０上のスマートコントラクト１１５によって支払いを決済する代わりに、サービス装置１１０は、状態チャネルが閉じられた後に決済することができる。様々な実施形態において、状態チャネルは、予め定められた量の時間の後または予め定められた数のロック／ロック解除の後に閉じられることが可能である。
【００５７】
図６ではユーザ装置１０５と単一のサービス装置１１０との間の状態チャネル通信を示しているが、（たとえば、図５Ａで説明されたような）プロキシ装置５５０と関係して状態チャネルが利用されるのが可能であることも、当業者は理解してよい。したがって、ユーザ装置１０５は、ユーザ装置１０５とプロキシ装置５５０との間で開いた状態チャネルを介して複数の要求をプロキシ装置５５０に対して提供してよい。したがって、プロキシ装置５５０は、複数の要求を検証し、要求されたサービスを提供するようにサービス装置１１０に適切に命令してよい。ユーザ装置１０５およびプロキシ装置５５０は、状態チャネルが閉じられた後に、提供されたサービスに対する支払いを決済してよい。
【００５８】
具体的な例として、プロキシ装置５５０はホテルルームに配置されてよい。ホテルルームが提供できるサービスは、以下に限定されないが、ルームへのアクセスを提供するためにドアをロック解除すること、ホテルルームの小型冷蔵庫内の飲み物へのアクセスを提供すること、ホテルルームのテレビの映画へのアクセスを提供すること、および／または宿泊後にホテルルームをチェックアウトすることを含んでよい。各サービスは、ホテルルームのプロキシ装置５５０と通信するホテルルーム内のサービス装置１１０に対応する。このシナリオにおいて、ユーザ装置１０５は、ユーザ装置１０５と、複数のサービス装置１１０と通信するプロキシ装置５５０との間の通信を可能にする、状態チャネルを利用することができる。したがって、ブロックチェーン１２０上のスマートコントラクト１１５は、状態チャネルが閉じられたときに、プロキシ装置５５０と通信するサービス装置１１０によって提供された複数のサービスに対する単一の支払いを受け取る。
【００５９】
図６に示された相互作用図を参照すると、ユーザ装置は、電子署名されたメッセージをサービス装置１１０（またはプロキシ装置５５０）に対して送信する（６０５）。ここで、ユーザ装置１０５は、状態チャネルを開くようにサービス装置１１０に要求するメッセージを生成する。様々な実施形態において、メッセージは、ユーザ装置１０５のユーザに割り当てられたユーザ識別子を含むことができる。加えて、メッセージは、状態チャネルがどれだけ長く開いたままとなるか（たとえば、持続時間または最大費用または提供されるサービスの数）などの詳細を含んでよい。ユーザ装置１０５は、ユーザに割り当てられたプライベートキーを使用してメッセージを暗号化することによってメッセージを電子署名し、ユーザに割り当てられた公開キーをさらに含める。
【００６０】
サービス装置１１０は、電子署名されたメッセージを受け取り、メッセージ要求の署名を検証し（６１０）、ユーザ識別子を抽出する。たとえば、サービス装置１１０は、暗号署名認証を行って、電子署名されたメッセージを検証する。サービス装置１１０は、署名されたメッセージを公開キーを使用して復号し、ユーザ識別子を抽出する。サービス装置１１０は、ブロックチェーンのローカルに格納された同期されたコピーを照会することによって、抽出されたユーザ識別子がサービス装置に対するアクセス権を有することを検証する（６１５）。
【００６１】
サービス装置１１０が、ユーザ装置１０５がサービス装置に対するアクセスを有することを検証すると、サービス装置は、状態チャネルを開く（６２０）。任意選択で、ユーザ装置１０５は、状態チャネルの開放の結果を表示（６２５）のために提供してユーザに通知してよい。ユーザ装置１０５とサービス装置１１０との間で状態チャネルが開いたままの間、ユーザ装置１０５は、１つまたは複数の署名されたメッセージを送ることによってサービス装置１１０の１つまたは複数のサービスを要求することができる（６３０）。サービス装置１１０は、署名された要求が状態チャネルを通じて受け取られたという事実に基づいて、ユーザ装置１０５からの要求に応答して、要求された１つまたは複数のサービスを提供することができる（６３５）。この時間の間、ユーザ装置１０５およびサービス装置１１０は、チャネルが開かれてから提供されたサービスの集計を管理する。ステップ６３０および６３５は、状態チャネルが閉じられるまで継続してよい。状態チャネルの閉鎖は、時間（たとえば、日の終わり）に基づくまたはサービスの総数（たとえば、１０回のサービスを提供した後の閉じる）に基づく状態チャネルの予め定められた期限切れに起因してよいが、サービスを稼働する予め定められた総費用に到達した場合などにあってもよい。いくつかの実施形態において、状態チャネルの遮断があると、提供されたサービスの費用が、ブロックチェーン１２０上のスマートコントラクト１１５を介して決済される。他の例示的実施形態において、ユーザ装置１０５またはサービス装置１１０は、状態チャネルが閉じられるまで待機する必要がなく、提供されたサービスの費用を予め定められた間隔で決済することができる。
【００６２】
ゲートウェイクライアント装置の動作例
図７Ａおよび７Ｂを参照すると、別の実施形態において、サービス装置１１０は、ブロックチェーン１２０と直接通信する能力を有しなくてよい。たとえば、サービス装置１１０は、インターネット接続性を有しなくてよい。したがって、図７ＡにおいてＩｏＴ装置とも呼ばれるサービス装置１１０が、図７Ａにおいてゲートウェイとも呼ばれるインターネット対応ユーザ装置１０５を利用して、ブロックチェーン１２０に対するアクセスを有する図７Ａにおける信頼されたクライアント７０４と通信する。
【００６３】
サービス装置１１０それ自体は、インターネット接続を可能にされる必要はない。それは、他の通信媒体を介してユーザ装置１０５と通信することができる。たとえば、通信は、この通信チャネルがメッセージの双方向送信を可能にする限り、Ｂｌｕｅｔｏｏｔｈ、近距離無線通信（ＮＦＣ）、または他の任意の類似の技術を介して確立されてよい。サービス装置１１０は、信頼されたクライアント７１０の情報を含むホワイトリストを格納するメモリをさらに含むことができる。加えて、サービス装置１１０は、ユーザ装置１０５からの要求の一部として含まれる暗号署名のような暗号書名を認証することができる。
【００６４】
ゲートウェイ７０２は、任意の装置であってよく、サービス装置１１０との通信チャネル（たとえば、Ｂｌｕｅｔｏｏｔｈ、ＮＦＣ）をサポートすることができる。ゲートウェイ７０２の例はユーザ装置１０５とすることができる。いくつかの実施形態において、ゲートウェイ７０２は、公開／プライベートキーペアを保持し、公開キーを用いてメッセージに署名することができる。したがって、ゲートウェイ７０２は、署名されたメッセージをサービス装置１１０に対して送ることによって認証プロセスを開始することができる。ゲートウェイ７０２は、信頼されたクライアント７１０を使用してブロックチェーン１２０に接続するために、サービス装置１１０に対するインターネット接続を提供する。
【００６５】
信頼されたクライアント７１０は、ブロックチェーン１２０に対するアクセスを与える多くの異なるホストによって提供されるサービスであってよい。各信頼されたクライアント７０４は、（ｇｅｔｈ、ｅｔｈ、ｐａｒｉｔｙなどと同様のクライアントを使用して）常に同期されたブロックチェーン１２０におけるノードとして動作することができる。加えて、各信頼されたクライアント７０４は、プライベートキーに対するアクセスを有し、要求に署名することができる。
【００６６】
セットアップ中、サービス装置１１０の所有者は、サービス装置１１０のためにブロックチェーン１２０上のスマートコントラクト１１５を配置する。ここで、値がサービス装置１１０のストレージ（たとえばメモリ）に書き込まれることができる。値は、サービス装置の所有者によって設定されるように、信頼されたクライアント７０４の初期のホワイトリストを含むことができる。
【００６７】
図７Ｂを参照すると、それは、例示的実施形態に従う、ユーザ装置１０５および信頼されたクライアント７０４を通じてサービス装置１１０によってブロックチェーンアクセスを可能にするプロセスを示す。具体的には、図７Ｂに示されるように、サービス装置１１０（ＩｏＴ装置）が、安全とみなされる信頼されたクライアントのリストを管理する証明書のホワイトリストを保持する（７０５）。ホワイトリストは、信頼されたクライアント７０４のインターネットプロトコルアドレス、および信頼されたクライアント７０４のポート／公開キーのような、信頼されたクライアント７１０の情報を含むことができる。ホワイトリストそれ自体は、ブロックチェーン１２０上のスマートコントラクト１１５として格納されてよい。このホワイトリストは、各ノードインスタンスに関して決定するためにマルチシグを使用するユーザの基礎もしくはグループのいずれかによって、またはノードのリストを集中的に制御するためにそれを使用してよい企業によって管理されてよい。ホワイトリストが常に最新であり、故障または非存在ノードを含まないことを確実にするために、ｃｒｏｎｊｏｂまたは同様のものが、リスト内のエントリを観測し、結果を独立したクライアントと比較するテスト要求を実行してよい。結果が一致しない場合、このクライアントはリストから除去される。
【００６８】
まず、サービス装置１１０がゲートウェイ７０２装置を検証する（ステップ７１０ないし７３０）。ゲートウェイ７０２は、サービス装置との接続を確立する（７１０）。サービス装置は、乱数（たとえばランダムシード）を生成し（７１５）、ランダムシードをゲートウェイに対して送る（７２０）。このシードは、メッセージが再使用できないことを確実にし、中間者攻撃を防止する。
【００６９】
ゲートウェイ７０２によって送られる接続を確立する（たとえばステップ７１０）要求の例は、以下のようであってよい。
{
“jsonrpc”: “2.0”,
“method”: “request”,
“params”: []
“id”:”1”
}
ランダムシードを含むサービス装置からの応答（たとえばステップ７２０）は、次のように表現されてよい。
{
“jsonrpc”: “2.0”,
“result”: { “seed” : “12AE3B6F3AD76E5B2” }
“id”:”1”
}
【００７０】
ゲートウェイがシードを受け取ると、ゲートウェイは署名されたメッセージを送る（７２５）。これは、Ｂｌｕｅｔｏｏｔｈ、ＮＦＣ、または任意の類似の技術を通じて行うことができる。そのようなメッセージは以下の形式をとってよい。
var msgHash = seed + sender + method;
ethUtil. ecsign (msgHash, privateKey)
これは、以下の署名されたメッセージの作成につながる。
{
“jsonrpc”: “2.0”,
“method”: “open”,
“params”: {
“sender” : “5e1d3a76fbf824220eafc8c79ad578ad2b67d01b0c2425eb1f1347e8f50882ab”,
“v”: “1c”,
“r”: “5e1d3a76fbf824220eafc8c79ad578ad2b67d01b0c2425eb1f1347e8f50882ab”,
s”: “5bd428537f05f9830e93792f90ea6a3e2d1ee84952dd96edbae9f658f831ab13”
}
“id”:”1”
}
【００７１】
サービス装置１１０は、ゲートウェイ７０２からの署名されたメッセージを検証してよい（７３０）。たとえば、サービス装置１１０は、ゲートウェイの署名されたメッセージから公開キーを導出することができる。この検証は、以下の擬似コードの形式をとってよい。
senderPubKey=ethUtil.ecrecover(msgHash,v,r,s)
【００７２】
上記から導出された公開キーがメッセージの一部として渡されたキーと一致する場合、サービス装置は、メッセージで指定されたゲートウェイ７０２によってメッセージが実際に送られたことを確認する。
【００７３】
ゲートウェイのアイデンティティを検証した後、サービス装置１１０は、この公開キーの所有者がサービス装置１１０を使用することも認証されているかどうかを決定する。サービス装置１１０は、そのホワイトリスト上に保持されている信頼されたクライアント７０４を選択し（７３５）、ゲートウェイ７０２に対して送られる（７４５）要求を生成する（７４０）。ここで、ゲートウェイ７０２に対して送られる要求は、状態変更が存在するかどうかを調べるために、ブロックチェーン１２０に格納されたスマートコントラクト１１５をポーリングする（たとえば、ステップ４６０参照）要求とすることができる。
【００７４】
そのような要求の生成は以下の形式をとってよい。
function hasPermission (address user, uint commandCode) constant returns(boolean is-allowed)
要求（たとえば、ステップ７４５で送られる要求）それ自体は、以下の擬似コードによって表されてよい。
{
“jsonrpc”: “2.0”,
“method”: “eth_call”,
“params”: [{
// address of the smart contract controlling the device
“to” : “5e1d3a76fbf824220eafc8c79ad578ad2b67d01b0c2425eb1f1347e8f50882ab”,
// Hash of the method signature and encoded parameters (user, commandCode).
“data”: “220eafc8c79ad578ad2b67d01b0c24255e1d3a76fbf82423BAF9eb1f1347e8f50882ab”
}]
“id”:”2”,
“client” : “10.25.125.196:8555”,
“seed” : “8c79ad578ad2b67d01b0c24255e1d”
} 
【００７５】
ゲートウェイ７０２がクライアントおよびシードパラメータを含むそのような要求を受け取ったとき、それは、指定された信頼されたクライアント７０４に対するＨＴＴＰ（またはｈｔｔｐｓ）接続を確立し、要求を転送する（７５０）。要求は、信頼されたクライアント７０４をホストするサーバに対するＰＯＳＴ要求の形式をとってよい。この要求は、信頼されたクライアント７０４によって受け取られ、次いで、信頼されたクライアント７０４は、信頼されたクライアント７５２上でサービス装置の照会を実行する。信頼されたクライアント７０４は、信頼されたクライアントのプライベートキーを使用して署名されたメッセージの形式で署名された応答を生成する（７５５）。そのような応答の生成は以下の形式をとってよい。
var msgHash = crypto.SHA256( request. method + JSON.stringify( request. params) + request. seed
+ JSON.stringify( response. result));
ethUtil. ecsign (msgHash, privateKey)
【００７６】
（たとえば、ステップ７５５で生成される）応答メッセージは、照会の結果を含んでよく、署名されたフィールドを追加してよく、以下の擬似コードによって表されてよい。
{
“jsonrpc”: “2.0”,
“result”: “0x1”,
“sign”: {
“v”:“1c”,
“r”:“5e1d3a76fbf824220eafc8c79ad578ad2b67d01b0c2425eb1f1347e8f50882ab”,
“s”: “5bd428537f05f9830e93792f90ea6a3e2d1ee84952dd96edbae9f658f831ab13”
},
“id”:”2”
} 
例として、（たとえば、ステップ７５５で生成される）応答メッセージは、スマートコントラクト１１５に対する変更を含んでよく、またはキューに入れられたサービス装置要求を含むことができる。したがって、この情報がサービス装置１１０によって受け取られたとき、サービス装置１１０は、そのローカルに格納されたスマートコントラクト１１５を、スマートコントラクト１１５に対する変更によって更新し、またはキューに入れられたサービス装置要求に応答してサービスを提供することができる。
【００７７】
信頼されたクライアントが、この署名されたメッセージをゲートウェイ７０２に対して送り（または送信し）（７６０）、次いで、ゲートウェイ７０２がこの応答をサービス装置１１０に対して転送する（７６５）。サービス装置１１０は、受け取られたデータパッケージにおける信頼されたクライアント７０４の署名を検証する（７７０）。これは、メッセージから信頼されたクライアント７０４の公開キーを抽出し、それをサービス装置１１０のホワイトリストに格納されたものと比較することによって行われてよい。
【００７８】
一実施形態において、サービス装置１１０は、メッセージの署名が有効である場合、ゲートウェイ７０２に対してメッセージを返す。ゲートウェイ７０２に対して返されたメッセージは、信頼されたクライアント７０４による照会が成功したかどうかに応じて成功または失敗結果を含んでよく、以下の疑似コードの形式をとってよい。
{
“jsonrpc”: “2.0”,
“result”: true
“id”:”1”
}
【００７９】
追加の考慮事項
ブロックチェーン対応環境の開示されている実施形態は、非集中型ブロックチェーンを利用しながら、様々なサービス装置のサービスのアクセスを可能にする。開示された実施形態の利益は数倍になる。
【００８０】
例として、特定のサービス装置を管理する非集中型ブロックチェーン上のスマートコントラクトの実装は、サービスと支払いの安全な交換を確実にする。たとえば、分散された台帳として、ブロックチェーンは、分散された台帳に支払いが変わりなく記録されることを確実にすることができる。
【００８１】
また例として、ユーザ装置が非集中型ブロックチェーンを利用する能力は、ユーザ装置のユーザが仲介者を必要とすることなくサービス装置に容易にアクセスできることを確実にする。特定の例として、ユーザ装置のユーザは、ブロックチェーン上のホテルルームに対応するスマートコントラクトに支払いを提供することができる。したがって、ユーザは、特定の日付の範囲でホテルルームを予約することができる。ユーザがホテルルームに到着したとき、ホテルルームのキーを取得するためにフロントデスクでチェックインする代わりに、ユーザは、ユーザ装置を使用して、ホテルルームのロック（たとえばサービス装置）をロック解除することによってホテルルームに対するアクセスを得ることができる。
【００８２】
本発明の実施形態に関する上述の説明は、例示の目的で提示されたものであり、網羅的であること、または開示された正確な形態に本発明を限定することは意図されていない。当業者は、上記の開示に照らして多くの修正および変形が可能であることを理解することができる。
【００８３】
この説明のいくつかの部分は、情報に対する操作のアルゴリズムおよび記号表現の観点で本発明の実施形態を記述する。これらのアルゴリズムの記述および表現は、データ処理技術分野の当業者によって一般的に使用され、その成果の実体を他の当業者に効果的に伝える。これらの動作は、機能的、計算的、または論理的に説明されているが、コンピュータプログラムまたは同等の電気回路もしくはマイクロコードなどによって実装されることが理解される。さらに、一般性を失うことなく、これらの動作の配置をモジュールと呼ぶことが時として便利であることも判明している。説明された動作およびそれらの関連付けられたモジュールは、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせで具現化されてよい。
【００８４】
本明細書で説明された任意のステップ、動作、またはプロセスが、単独でまたは他の装置と組み合わせて１つまたは複数のハードウェアまたはソフトウェアモジュールを用いて実行または実装されてよい。一実施形態において、ソフトウェアモジュールは、コンピュータプログラムコードを含むコンピュータ可読媒体を備えるコンピュータプログラム製品によって実装され、これは、説明されたステップ、動作、またはプロセスのいずれかまたは全てを実行するためにコンピュータプロセッサによって実行されることが可能である。
【００８５】
本発明の実施形態はまた、本明細書における動作を行うための装置に関することがある。この装置は、必要とされる目的のために特に構成されてよく、および／または、コンピュータに格納されたコンピュータプログラムによって選択的にアクティブ化もしくは再構成される汎用コンピューティング装置を含んでよい。そのようなコンピュータプログラムは、非一時的な有形のコンピュータ可読記憶媒体、またはコンピュータシステムバスに結合されてよい電子命令を格納するのに適した任意の種類の媒体に格納されてよい。さらに、本明細書で言及される任意のコンピューティングシステムは、単一のプロセッサを含んでよく、または増大されるコンピューティング能力のために複数のプロセッサ設計を利用するアーキテクチャであってよい。
【００８６】
本発明の実施形態はまた、本明細書に説明されたコンピューティングプロセスによって作られる製品に関することがある。そのような製品は、コンピューティングプロセスからもたらされる情報を含んでよく、その情報は、非一時的で有形のコンピュータ可読記憶媒体に格納され、本明細書に説明されたコンピュータプログラム製品または他のデータ組み合わせの任意の実施形態を含んでよい。
【００８７】
最後に、本明細書で使用される言葉は、主に可読性および教育目的で選択されており、本発明の主題を線引きまたは限定するように選択されていないことがある。したがって、本発明の範囲は、この詳細な説明によって限定されず、本明細書に基づく出願において発行される任意の請求項によって限定されることが意図される。したがって、本発明の実施形態の開示は、添付の特許請求の範囲に記載される本発明の範囲を限定することなく例示することが意図される。
【図１Ａ】
2020507869.tif 000003
【図１Ｂ】
2020507869.tif 000004
【図１Ｃ】
2020507869.tif 000005
【図２】
2020507869.tif 000006
【図３】
2020507869.tif 000007
【図４Ａ】
2020507869.tif 000008
【図４Ｂ】
2020507869.tif 000009
【図５Ａ】
2020507869.tif 000010
【図５Ｂ】
2020507869.tif 000011
【図６】
2020507869.tif 000012
【図７Ａ】
2020507869.tif 000013
【図７Ｂ】
2020507869.tif 000014
【国際調査報告】
2020507869.tif 000015