(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-06
(45)【発行日】2023-07-14
(54)【発明の名称】ブロックチェーン対応サービスプロバイダシステム
(51)【国際特許分類】
G06F 21/62 20130101AFI20230707BHJP
G06F 21/31 20130101ALI20230707BHJP
G06F 21/64 20130101ALI20230707BHJP
G06Q 20/38 20120101ALI20230707BHJP
H04L 9/32 20060101ALI20230707BHJP
【FI】
G06F21/62 318
G06F21/31
G06F21/64
G06Q20/38 310
H04L9/32 200Z
(21)【出願番号】P 2019556552
(86)(22)【出願日】2017-12-28
(86)【国際出願番号】 US2017068798
(87)【国際公開番号】W WO2018126059
(87)【国際公開日】2018-07-05
【審査請求日】2020-11-11
(32)【優先日】2016-12-30
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】519238989
【氏名又は名称】ビーシー ディベロップメント ラボズ ゲーエムベーハー
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】クリストフ イェンチ
(72)【発明者】
【氏名】シモン イェンチ
(72)【発明者】
【氏名】ステファン トゥアル
【審査官】打出 義尚
(56)【参考文献】
【文献】Slock.it DAO demo at Devcon1: IoT +Blockchain,YouTube [online] [video],2015年11月14日,特に0:26-13:24,<URL: https://www.youtube.com/watch?v=49wHQoJxYPo>,[検索日:2021年9月21日]
【文献】update to new SampleOffer [online],2016年03月09日,<URL: https://github.com/blockchainsllc/smart-contract/commit/c70a2c9db6a4dfc41b5b4d20895d9b798a46171d>,[検索日:2021年9月21日]
【文献】ALLISON, Ian,Ethereum-based Slock.it reveals first everlock opened with money [online],2015年12月17日,<URL: https://www.ibtimes.co.uk/ethereum-based-slock-reveals-first-ever-lock-opened-money-1527014>,[検索日:2021年9月21日]
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/62
G06F 21/31
G06F 21/64
G06Q 20/38
H04L 9/32
(57)【特許請求の範囲】
【請求項1】
プロセッサによって実行される方法であって、
ユーザ装置からサービス装置にアクセスするための電子署名された要求を受け取るステップであって、前記電子署名された要求は、
前記ユーザ装置のユーザに割り当てられたユーザ識別子と、
前記サービス装置によって提供されるサービスに関係付けられた1つまたは複数のパラメータと
を含む、該ステップと、
前記電子署名された要求の前記1つまたは複数のパラメータが、アクセスのための条件を満たすことを検証するステップと、
非集中型台帳に格納された前記サービス装置に固有の許可データ構造を更新するステップであって、前記許可データ構造は、複数のユーザ識別子と、各ユーザ識別子が前記サービス装置にアクセスすることを認証されているかどうかのインジケーションとを含む、該ステップと、
前記非集中型台帳に格納された前記許可データ構造に対する変更を提供するステップであって、前記提供された変更はローカルに格納された許可データ構造を更新するために使用される、該ステップと、
前記サービスが前記サービス装置によって提供されるように要求する電子署名されたメッセージを、前記ユーザ装置から受け取るステップであって、前記署名されたメッセージは、前記ユーザ装置の前記ユーザに割り当てられた前記ユーザ識別子を含む、該ステップと、
前記更新された許可データ構造と前記署名されたメッセージに含まれた前記ユーザ識別子とに基づいて、前記ユーザ装置が前記サービス装置にアクセスすることを認証されていることを検証するステップと、
前記検証に応答して、前記サービス装置に対するサービス装置要求を生成するステップであって、前記サービス装置に対して提供される前記変更は、前記サービス装置が前記サービスを提供するようにする前記サービス装置要求を含む、該ステップと
を含むことを特徴とする方法。
【請求項2】
前記サービス装置によって提供された複数のサービスに対する支払いを決済する要求を受け取るステップであって、状態チャネルの閉鎖に応答して、前記複数のサービスに対する前記支払いが前記非集中型台帳を介して決済される、該ステップをさらに含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記署名されたメッセージに含まれた前記ユーザ識別子に基づいて、前記ユーザ装置が前記サービス装置にアクセスすることを認証されていることを検証するステップは、
前記署名された要求から前記ユーザ装置の前記ユーザに割り当てられた前記ユーザ識別子を抽出するステップと、
前記サービス装置に固有の前記更新された許可データ構造に、アクセスするステップと、
前記抽出されたユーザ識別子を、前記許可データ構造に格納された前記複数のユーザ識別子と比較するステップと
を含むことを特徴とする請求項1に記載の方法。
【請求項4】
前記ユーザ識別子を抽出するステップは、
前記ユーザ装置の前記ユーザ識別子に割り当てられた公開キーを使用して前記署名された要求を復号するステップを含むことを特徴とする請求項3に記載の方法。
【請求項5】
前記署名された要求の前記1つまたは複数のパラメータがアクセスのための条件を満たすことを検証するステップは、
前記非集中型台帳に格納されたコントラクトにアクセスするステップであって、前記コントラクトは前記サービス装置に固有である、ステップと、
前記アクセスされたコントラクトの変数を、前記署名された要求の前記1つまたは複数のパラメータと比較するステップと
を含むことを特徴とする請求項1に記載の方法。
【請求項6】
前記署名された要求の前記1つまたは複数のパラメータは、支払い、利用可能日付、または利用可能時間のうちの1つを含むことを特徴とする請求項1に記載の方法。
【請求項7】
前記許可データ構造に対する前記変更は、前記ユーザ装置、前記サービス装置、または前記サービス装置と通信するプロキシ装置のうちの1つに対して提供されて、前記ローカルに格納された許可データ構造を更新することを特徴とする請求項1に記載の方法。
【請求項8】
プロセッサによって実行される方法であって、
サービスがサービス装置によって提供されるように要求する電子署名されたメッセージを、ユーザ装置から受け取るステップであって、前記署名されたメッセージは、前記ユーザ装置のユーザに割り当てられたユーザ識別子を含む、該ステップと、
前記ユーザ装置の前記ユーザに割り当てられた前記ユーザ識別子を抽出するステップと、
分散された台帳に格納された許可データ構造に対する変更を、信頼されたクライアントを介して受け取るステップであって、前記許可データ構造は前記サービス装置に固有である、該ステップと、
前記受け取った変更に基づいて、ローカルに格納された許可データ構造を更新するステップと、
前記信頼されたクライアントを介して前記分散された台帳から受け取った前記変更に基づいて更新された前記ローカルに格納された許可データ構造を照会することによって、前記ユーザ装置の前記ユーザに割り当てられた前記ユーザ識別子が前記サービス装置にアクセスすることを認証されていることを検証するステップと、
成功した検証に応答して、前記サービス装置が、前記ユーザ装置に前記サービスを提供するステップと
を含むことを特徴とする方法。
【請求項9】
前記許可データ構造に対する変更を受け取るステップは、前記信頼されたクライアントと通信しているゲートウェイを介して前記変更を受け取ることを含むことを特徴とする請求項8に記載の方法。
【請求項10】
前記ユーザ識別子を検証するステップは、
前記ローカルに格納された許可データ構造に照会するステップであって、前記許可データ構造は、複数のユーザ識別子と、各ユーザ識別子が前記サービス装置にアクセスすることを認証されているかどうかのインジケーションとを含む、該ステップと、
前記抽出されたユーザ識別子を、前記ローカルに格納された許可データ構造に格納された前記複数のユーザ識別子と比較するステップと
を含むことを特徴とする請求項8に記載の方法。
【請求項11】
前記ユーザ識別子が前記サービス装置にアクセスすることを認証されていることを検証することに応答して、前記ユーザ装置との状態チャネルを開くステップであって、前記状態チャネルは、前記ユーザ装置が、前記サービス装置によって提供される追加のサービスを受け取ることを可能にする、該ステップをさらに含むことを特徴とする請求項8に記載の方法。
【請求項12】
前記サービスについて前記状態チャネルを通じて前記ユーザ装置から複数の要求を受け取るステップと、
前記複数の要求のそれぞれについて、前記サービスを前記ユーザ装置の前記ユーザに対して提供するステップと
をさらに含むことを特徴とする請求項
11に記載の方法。
【請求項13】
前記状態チャネルの予め定められた期限切れが発生したことを検出するステップと、
前記状態チャネルの前記期限切れの前記発生に応答して、前記状態チャネルを閉鎖するステップと
をさらに含むことを特徴とする請求項
12に記載の方法。
【請求項14】
コンピュータに、請求項1ないし
13のいずれか1つに記載の方法を実行させることを特徴とするコンピュータプログラム。
【請求項15】
請求項
14記載のコンピュータプログラムを記録したことを特徴とする非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に交換に関し、より詳細には、非集中型台帳、たとえばブロックチェーンにおいて交換を行うことによって、サービス装置、たとえばハードウェアコンポーネントを制御することに関する。
【背景技術】
【0002】
関連出願の相互参照
本出願は、その内容全体が参照によって組み込まれている、2016年12月30日に出願された米国特許仮出願第62/441,013号明細書の利益を主張するものである。
【0003】
コンピューティングシステムを使用する交換は、しばしば安全においてなく、望ましくない変更を生じやすい。特定の交換が危険にさらされている場合、その固有のトランザクションが危険にさらされていることを検出するのは難しいことがある。これは、リソース(たとえば、金銭、人的労力、時間など)に関して重大な損失につながる。
【0004】
多くのシナリオにおいて、ハッキングの発生源は、交換を取り扱う仲介者に起因することがある。例として、個人はホテルルームを予約した後、係員と対話してホテルルームのキーを受け取る必要がある。ここで、係員は、ホテルルームを、予約されたものよりも小さいかまたは望ましくないホテルルームに容易に切り替えることができる。そのような切り替えは、個人には容易に分からないことがある。したがって、交換を取り扱う仲介者を除去することを通じて、安全な取引を保証する必要がある。
【図面の簡単な説明】
【0005】
開示される実施形態は、添付の図面と併せて以下の詳細な説明および添付の特許請求の範囲からより容易に明らかになる、他の利点および特徴を有する。
【0006】
【
図1A】第1の実施形態に従う、例示的なブロックチェーン対応動作環境を示す図である。
【
図1B】実施形態に従う、サービス装置からのサービスの提供を可能にするブロックチェーン上の基礎的プロセスを示す図である。
【
図1C】実施形態に従う、ブロックチェーン対応動作環境内の例示的コンピューティング装置の例示的コンポーネントを示すブロック図である。
【
図2】実施形態に従う、予約プロセスを示す例示的相互作用図である。
【
図3】第1の実施形態に従う、アクセスプロセスを示す例示的相互作用図である。
【
図4A】第2の実施形態に従う、例示的ブロックチェーン対応動作環境を示す図である。
【
図4B】
図4Aに示された第2の実施形態に従う、アクセスプロセスを示す例示的相互作用図である。
【
図5A】実施形態に従う、プロキシ装置を使用するアクセスプロセスを示す例示的相互作用図である。
【
図5B】実施形態に従う、プロキシ装置のハードウェア層およびソフトウェア層の例を示す図である。
【
図6】実施形態に従う、状態チャネルの使用を示す相互作用図である。
【
図7A】実施形態に従う、ユーザ装置を通じてブロックチェーンにアクセスするサービス装置を示す図である。
【
図7B】
図7Aに示された実施形態に従う、サービス装置、ユーザ装置、および信頼されたクライアントの間の相互作用を示す相互作用図である。
【発明を実施するための形態】
【0007】
図面および以下の説明は、単に例示のために好ましい実施形態に関する。以下の説明から、本明細書に開示される構造および方法の代替的実施形態が、特許請求される原理から逸脱することなく利用されてよい実施可能な代替形態として容易に認識されることに留意されたい。
【0008】
ここで、いくつかの実施形態の詳細を参照するが、それらの例は添付の図面に示される。可能な限り、同様または類似の参照番号が図面で使用されてよく、同様または類似の機能性を示してよいことに留意されたい。図面は、単に例示を目的として開示されるシステム(または方法)の実施形態を示す。当業者は、本明細書で示される構造および方法の代替的実施形態が本明細書で説明される原理から逸脱することなく利用されてよいことを、以下の説明から容易に認識するであろう。
【0009】
例示的な非集中型台帳対応動作環境
本開示は、支払いを提供することによって開かれることが可能なロックなどのサービス装置を制御するための方法およびシステムを説明し、支払いは、中央エンティティ/サーバを通じてではなく、非集中型台帳(たとえばブロックチェーン)上で実行するコードを通じて処理される。説明を容易にするために、開示される構成はブロックチェーンの文脈で説明されるが、示される原理は他の非集中型台帳に適用可能であってよい。
【0010】
図1Aは、本明細書に説明される構成に従う例示的ブロックチェーン対応動作環境100を示す。例示的動作環境100は、ユーザ装置105およびサービス装置110を含む。さらに、例示的動作環境100は、ユーザ装置105とサービス装置110の両方と通信する非集中型ブロックチェーン120上のスマートコントラクト115を含む。ユーザ装置105およびサービス装置110は、例示的動作環境100における動作用のブロックチェーン対応コンピューティング装置の例となる種類である。
【0011】
ユーザ装置
ユーザ装置105は、ブロックチェーンと相互作用するための固有のまたは媒介される機能を有する装置とすることができる。例として、ユーザ装置105は、スマートフォン、タブレット、携帯電話、ラップトップ、またはデスクトップコンピューティングデバイなどのクライアント装置である。様々な実施形態において、ユーザ装置105は、特定の通信プロトコルを含むユーザ装置105上にインストールされたアプリケーションを通して、ブロックチェーン120と通信する。ユーザ装置105からのトランザクションは、サービス装置110に対する価値転送を実行するとともに、アクセス制御を管理する(たとえば、サービス装置110によって場所に対するアクセスが制御される、場所についての予約の登録をする)。
【0012】
ユーザ装置105はまた、本明細書でさらに説明されるように、ブロックチェーン120からサービス装置110のパラメータを読み取ってもよい。パラメータは、たとえば、デポジット、レンタルもしくは販売の費用、利用可能日付および/もしくは時間、またはトランザクションの完了および/もしくは実行に関連する他の情報を含んでよい。情報は、スマートコントラクト115の形態でコードに構造化された共有されたブロックチェーン状態から読み取られる。スマートコントラクト155は、ルール(例として、たとえば認証を含むコンピュータプログラムコード)を提供して、ブロックチェーン対応動作環境内で実行するためにサービス装置110を構成する。
【0013】
様々な例示的実施形態において、ユーザ装置105は、任意の与えられた無線通信層を通じてサービス装置110と直接通信してもよい。たとえば、通信は、特定の通信プロトコルを含むユーザ装置105にインストールされたアプリケーションを使用してBluetoothまたは近距離無線通信(NFC)技術を通じて行われてよい。
【0014】
サービス装置
サービス装置110は、ブロックチェーンと相互作用するための固有のまたは媒介される機能を有するオブジェクトを表してよい。サービス装置110は、操作コマンドに基づいてサービスを提供することができる。たとえば、サービス装置110は、アクセス制御を提供するように構築されてよい。アクセス制御は、たとえば、「開く」および/もしくは「閉じる」(たとえば、ロックもしくはロック機構)、許可を経る(たとえば門)、または「開始する」および/もしくは「停止する」および/もしくは「上がる/下がる」および/もしくは「左/右に曲がる」(たとえば操作機能)を含んでよい。より具体的な例として、サービス装置110は、(たとえば、ドアをロック解除することによって)ホテルルームおよび/もしくはその設備(たとえば、ミニバー、テレビ、ルームサービス)または大学寮建物(たとえば、認証された立ち入り)に対するアクセスをユーザ装置105のユーザに提供してよい。あるいは、サービス装置は、(たとえば、門を開くことによって)道のような対象の場所へのアクセスをユーザ装置105のユーザに提供してよい。
【0015】
別の例として、サービス装置110は、(たとえば、単純な2値の「開/閉」オプションを超えて)様々なオプションの間で特定のオプションを指定するアクションを提供するように構築されてよい。たとえば、サービス装置110は、コーヒーマシンとすることができ、様々な量(たとえば、小、中、大、および/または他のオプション)のカフェイン入り飲料を、ユーザ装置105のユーザに提供することができる。別の例として、サービス装置110は、天井ファンをオンにし、天井ファンの速度を特定の毎分回転数に設定するように構成されてよい。サービス装置110によって提供できるサービスは、上述の例に限定されず、医療機器に対するオンデマンドアクセス、ドローン/車両の制御、出荷用コンテナの制御、および自律させることができる任意のプロセスをさらに含んでよいが、これらに限定されない。
【0016】
サービス装置110は、ユーザ装置105によってレンタル、販売、および/または相互作用されるように搭載された必要なハードウェアおよびソフトウェアを有することができる。たとえば、サービス装置110は、ブロックチェーン120と通信するために特有の通信プロトコルを含んでよい。別の実施形態において、サービス装置110は、ブロックチェーン120に対して直接アクセスを有することがなく、ブロックチェーン120と通信するための適切なプロトコルを含むプロキシ装置を利用してよい。一例として、プロキシ装置は、ラックサーバまたはクラウドサーバ(たとえば、SAMUNG ARTIK Cloud、またはサービス装置の製造者によって提供されるクラウドサービス)である。言い換えれば、プロキシ装置によって実行される機能は、複数のプロセッサおよび/または電子装置にわたって分散されてよい。様々な実施形態において、1つまたは複数のプロセッサまたはプロセッサが実装されたモジュールは、複数の地理的位置にわたって分散されてよい。いくつかの実施形態において、プロキシ装置の1つまたは複数のプロセッサは、単一の地理的位置(たとえば、家庭環境、オフィス環境、またはサーバファーム内)に配置されてよい。一実施形態において、プロキシ装置は、1つまたは複数のサービス装置と通信するために必要なソフトウェアを動作させ、トランザクションをブロックチェーン120に対して送る、ホームサーバ(たとえばコンピューティング装置)とすることができる。プロキシ装置の例は、
図5Aを参照して後でさらに詳細に説明される。
【0017】
1つの例示的実施形態において、サービス装置110は、(ユーザ装置105が実際にサービス装置105にアクセスすることを許可されることを検証するために、)ブロックチェーンに対する読み取り要求が後続するユーザ装置105からの電子署名されたメッセージを通じて直接サービスを提供することができる。このシナリオは、
図3に関係して後でさらに詳細に説明される。一実施形態において、サービス装置110は、ブロックチェーンを定期的に「ポーリング」し、スマートコントラクト115によって格納された値に対する修正の形態で関連する状態変化のあったときにサービスを提供することによって、サービスを提供することができる。スマートコントラクト115によって格納された値の修正は、ユーザ装置105によって開始されることが可能である。このシナリオは、
図4Bに関係して後でさらに詳細に説明される。
【0018】
サービス装置110は、2つの異なる方法で発見されることが可能である。第1には、スマートコントラクトそれ自体として実装されたスマートコントラクトレジストリを通じてされる。第2には、特定のスマートコントラクト方法(機能)署名についてのブロックチェーン分析を介しての自動発見を通じてされる。
【0019】
スマートコントラクト
各サービス装置110は、プログラムコード(またはコード)の形態で、(それがコードを非集中的に実行してよい限り、実装形態にかかわらず、パブリックまたはプライベートである)ブロックチェーン120上で表されてよい。コードは、たとえば、プロセッサ、コントローラ、または状態機械を含んでよいコンピュータ(またはコンピュータ装置)によって実行可能である命令を含む。コードは、ブロックチェーン対応動作環境内の特定のコンピュータ装置を特定の方法で動作するように構成するためのルールを含んでよい。いくつかの例示的実施形態におけるコードは、スマートコントラクト115と呼ばれることがある。ユーザ装置105からのトランザクションによってトリガされるサービス装置110の動作の条件は、スマートコントラクト115に格納され執行される。スマートコントラクト115はまた、サービス装置110の所有者に対する参照、および/またはサービス装置110の動作のための条件を支配するパラメータ(たとえば、デポジット、レンタルもしくは販売の費用、利用可能日付および/もしくは時間など)のような、任意選択の変数を保持してよい。当業者には容易に理解されるように、スマートコントラクト115という語句の使用はブロックチェーン技術の分野に特有であるが、さらに、合意を執行する任意の形態のコードを指すことができる。この場合、スマートコントラクト115は、(支払いを提供する)ユーザ装置105と(サービスを提供する)所有者のサービス装置110との間の合意を執行する。
【0020】
動作の例として、スマートコントラクトはサービス装置110に対するアクセス権を管理してよい。
図1Bを参照すると、ブロックチェーン120上で動作するスマートコントラクト115は、サービス装置の所有者130に属するサービス装置110にサービスを要求しているユーザ装置105からの支払い/資金の転送を可能にする。スマートコントラクト115は、支払い、たとえば、電子形態の従来の通貨支払いおよび/または暗号通貨支払いの受け取りおよび/または払い出しに応答して、その格納されている値を継続的に更新してよい。暗号通貨は、たとえば、電子コイン提供、電子報酬、物々交換入札、または他の何らかの形式の電子フォーマットの値であってよいことに留意されたい。
【0021】
例として、サービス装置の所有者130がサービスを提供するためにサービス装置110を利用可能にすることを望むとき、所有者130は、スマートコントラクト内の変数として記録されるサービス装置110にアクセスするためのデポジット量および価格を提供することができる。ユーザ装置105が、サービス装置110を表すスマートコントラクト115によって格納された変数を満たす充分な資金を送った(たとえば、デポジットを提供した)とき、ユーザ装置105は、応答して、特定のアクションを行うようにサービス装置110内で実行されてよい(たとえば、命令を含むプログラムコードの形態の)操作コマンドを、サービス装置110に対して送信してよい。様々な実施形態において、ユーザ装置105とサービス装置110は、ユーザ装置105がサービス装置110に対して複数の操作コマンドを送信することを可能にする状態チャネルを確立する。スマートコントラクト115およびサービス装置110に対するアクセスの背後の論理に伴うさらなる詳細は、以下に説明される。
【0022】
ブロックチェーン対応環境で動作することによって、スマートコントラクト115は、ユーザ装置105とサービス装置の所有者130との間の価値転送を仲介してよい(これは、仮想通貨および/もしくはトークンまたは同等物などの通貨を使用して行うことができる)。したがって、サービス装置の所有者130は、支払い(たとえば、電子フォーマットの従来の通貨または暗号通貨)を受け取ってよく、ユーザ装置105は、デポジットを逆に受け取り、および/または支払いから任意の未処理のクレジットを受け取る。
【0023】
ブロックチェーン
図1Aを参照すると、スマートコントラクト115をホストする基礎となるブロックチェーン120は、パブリックまたはプライベートであることが可能である。ブロックチェーン120は、スマートコントラクト115に加えて台帳を含んでよい。本明細書に説明されている解決策は、設計によってブロックチェーン120に非依存である。例として、ブロックチェーン120は、非集中的にコードを実行する、ブロックチェーン120と通信する1つまたは複数の装置(たとえば、ユーザ装置105またはサービス装置110)の間の、有線通信または無線通信を容易化する非集中型ネットワークを指す。
【0024】
様々な実施形態において、非集中型ブロックチェーン120のネットワークは、標準通信技術および/またはプロトコルを使用する。ネットワークによって使用される技術の例は、イーサネット、802.11、3G、4G、802.16、または他の任意の適切な通信技術を含む。ネットワークによって使用されるプロトコルの例は、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、ハイパーテキスト伝送プロトコル(HTTP)、簡易メール転送プロトコル(SMTP)、ファイル転送プロトコル(FTP)、または他の任意の適切な通信プロトコルを含む。
【0025】
例示的なユーザ装置、サービス装置、および/またはブロックチェーンと通信する装置
図1Cは、ブロックチェーン対応動作環境100内の例示的コンピューティング装置200の例示的コンポーネントを示すブロック図である。説明される例示的コンピューティング装置コンポーネントの一部または全部は、たとえば、ユーザ装置105、サービス装置110、および/またはブロックチェーン120と通信するためのプロキシとしてユーザ装置105もしくはサービス装置110によって使用されてよい任意の装置内にあってよい。言い換えれば、コンピューティング装置200は、ブロックチェーン120上のノードである。コンピューティング装置200は、機械可読媒体から命令を読み取り、少なくとも1つのプロセッサ(またはコントローラ)においてそれらを実行するように構成されてよい。具体的には、
図1Cは、本明細書で論じられる方法論のいずれか1つまたは複数をコンピューティング装置200に実行させるための1つまたは複数の命令224(たとえば、ソフトウェアまたはプログラムまたはプログラム製品)が実行されてよい、例示的形態のコンピューティング装置200の概略図を示す。
【0026】
例示的コンピューティング装置200は、少なくとも1つのプロセッサ202(たとえば、中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、1つもしくは複数の特定用途向け集積回路(ASIC)、1つもしくは複数の無線周波数集積回路(RFIC)、コントローラ、状態機械、またはこれらの任意の組み合わせ)、メインメモリ204、および静的メモリ206を含んでよく、それらは、バス208を介して互いに通信するように構成される。コンピューティング装置200は、グラフィックディスプレイユニット210(たとえば、プラズマディスプレイパネル(PDP)、液晶ディスプレイ(LCD)、またはプロジェクタ)をさらに含んでよい。コンピューティング装置200はまた、入力装置、たとえば、英数字入力装置212(たとえば、キーボード)、カーソル制御装置214(たとえば、マウス、トラックボール、ジョイスティック、モーションセンサ、タッチセンシティブインターフェース、または他のポインティング機器)を含んでよい。コンピューティング装置200はまた、たとえば、ストレージユニット216(たとえば、ソリッドステートディスク、磁気ディスク、光ディスク)、信号生成装置218(たとえば、スピーカ)、およびネットワークインターフェース装置220を含んでよく、それらは、やはりバス208を介して通信するように構成される。コンピューティング装置200は、コンピューティング装置200の図示および説明されたコンポーネントの全ては含む必要がないことに留意されたい。
【0027】
ストレージユニット216は、本明細書で説明されている方法論または機能のいずれか1つまたは複数を具体化する命令224(たとえばソフトウェア)が格納された機械可読媒体222を含む。命令224(たとえば、プログラムコードまたはソフトウェア)は、機械可読媒体も構成するコンピューティング装置200、メインメモリ204、およびプロセッサ202によってその実行中に、メインメモリ204内またはプロセッサ202内(たとえば、プロセッサのキャッシュメモリ内)に完全にまたは少なくとも部分的に存在してもよい。命令224(たとえばソフトウェア)は、ネットワークインターフェース装置220を介してネットワーク226を通じて送信または受信されてよい。
【0028】
機械可読媒体222は例示的実施形態において単一の媒体として示されているが、用語「機械可読媒体」は、命令(たとえば命令224)を格納することができる単一の媒体または複数の媒体(たとえば、集中化もしくは分散されたデータベース、または関連付けられたキャッシュおよびサーバ)を含むと解釈されるべきである。また、用語「機械可読媒体」は、機械による実行のために命令(たとえば命令224)を格納することができ、本明細書に開示されている方法論のいずれか1つまたは複数を機械に実行させることができる任意の媒体を含むと解釈されるべきである。用語「機械可読媒体」は、ソリッドステートメモリ、光媒体、および磁気媒体の形態のデータレポジトリを含むが、これらに限定されない。
【0029】
ブロックチェーン対応システムを通じたサービスのための動作例
図2は、例示的実施形態に従う、予約プロセスを示す例示的相互作用図である。一実施形態において、予約プロセスは、ユーザ装置105がサービス装置110に対するアクセスを得ることを可能にする。より具体的には、ユーザ装置105は、予約プロセス中にサービス装置110に対するアクセスを得るために、ブロックチェーン120上のサービス装置110を表すスマートコントラクト115と通信する。アクセスを得た後、ユーザ装置105は、サービス装置110によって提供されるサービスを受け取るために、アクセスプロセスを通じて進行する。後述される様々な実施形態において、予約プロセスは同じままであるが、アクセスプロセスは異なることがある。
【0030】
ユーザ装置とスマートコントラクトとの間の予約プロセスの例
ユーザ装置105は、サービス装置110を表すブロックチェーン120上のスマートコントラクト115を調べる(250)。一例として、ユーザ装置105は、動的レジストリにアクセスすることができ、スマートコントラクト115および対応するサービス装置110を識別する。動的レジストリは、サードパーティシステム(たとえば、アプリケーション/ウェブサイト、ホテル予約プロバイダ、または自動車レンタル予約プロバイダ)からアクセスされてよい。
【0031】
ユーザ装置105は、支払いデポジット、サービス装置の利用可能日付、および/または他の情報のようなサービス装置110のパラメータを指定するサービス装置110に対応するスマートコントラクト115の変数に対するアクセスを得る。
【0032】
ユーザは、自身のユーザ装置105を使用して、電子署名された要求をブロックチェーン120上のスマートコントラクト115に対して送り(255)、サービス装置110(たとえば、ロック、洗濯機、自動車充電ポート、レンタルサービス、およびサービスを提供できる任意の装置)にアクセスする許可を購入する。ユーザ装置105は、ユーザに割り当てられたユーザ識別子を含む要求を生成する。たとえば、ユーザ識別子は、ユーザがブロックチェーンのメンバーとして登録したときにユーザに割り当てられた識別子を表すことができる。加えて、生成された要求は、支払い、およびサービスの望ましいパラメータを指定する変数を含む。
【0033】
ユーザ装置105は、ユーザに割り当てられたキー(たとえば、プライベートキー/公開キー)を使用して要求に電子署名する。たとえば、ユーザ装置105は、ユーザに割り当てられたプライベートキーを使用して要求を暗号化することによって、要求に電子署名してよい。様々な実施形態において、ユーザ装置105は、ユーザに割り当てられた公開キーを電子署名された要求にさらに含めてよい。このようにして、ユーザ装置105は電子署名された要求を送る。
【0034】
ブロックチェーン120上のスマートコントラクト115は、ユーザ装置105によって提供された要求を処理する。ブロックチェーン120上のスマートコントラクト115は、電子署名された要求を受け取って復号する。たとえば、電子署名された要求は、含まれているユーザの公開キーを使用して復号されて、要求の内容(たとえば、ユーザのユーザ識別子、支払い、および指定されたパラメータ)が得られる。
【0035】
スマートコントラクト115は、アクセスを提供するための条件が満たされているかどうかを決定する(260)。たとえば、ブロックチェーン120上のスマートコントラクト115は、スマートコントラクト115の変数を満たす適切な資金が電子署名された要求に含まれているかどうかを調べる。別の例として、ユーザ装置が時間の期間中にホテルルームを借りるための電子署名された要求を送っている場合、スマートコントラクト115は、ユーザによって要求された滞在の日付を指定する要求に含まれたパラメータを調べ、その日付を、サービス装置130の所有者によって事前に設定されたスマートコントラクト115の変数に格納された利用可能な日付と比較する。指定された日付が利用可能である(たとえば、その時間に誰もホテルルームを借りていない)場合、スマートコントラクト115は、条件が満足されているとみなす。
【0036】
スマートコントラクト115は、支払いがユーザ装置105から受け取られていること、およびサービス装置110に対するアクセスが現在付与されていることを反映するように、その許可データ構造を更新する(265)。例として、許可データ構造は、対応するサービス装置110に対するアクセスを付与されたユーザ識別子を含むキー値ペアデータベースであってよい。したがって、スマートコントラクト115は、電子署名された要求に含まれたユーザ識別子を用いて許可データ構造を更新することができ、それによって、ユーザ識別子がサービス装置110に対するアクセスを付与されたことを示す。
【0037】
ユーザ装置105がブロックチェーン120に対するアクセスを有する(たとえば、ユーザ装置105がブロックチェーン120上のノードである)とすると、ユーザ装置105は、ブロックチェーン120からのデータを継続的にポーリングし、サービス装置110に対するアクセス権がユーザ識別子に認められていることを検証する(270)。このようにして、予約プロセスが完了する。
【0038】
ユーザ装置とスマートコントラクトとの間のアクセスプロセスの例
図3は、第1の実施形態に従う、アクセスプロセスを示す例示的相互作用図である。アクセスプロセスは、ユーザ装置105がサービス装置110に対する要求を開始し、サービス装置110によって提供されるサービスを受け取るプロセスを指す。
図3に示されている実施形態において、ユーザ装置105は、サービス装置110に対して要求を直接送る。次いで、サービス装置は、ユーザ装置105がサービス装置110を動作させる権限を有するかどうかを検証することができる。この実施形態において、サービス装置110は、ブロックチェーン120に対するアクセスを有し(たとえば、ブロックチェーン120におけるノードであり)、したがって、ブロックチェーン120からのデータを継続的にポーリングして、スマートコントラクト115のローカルに同期されたコピーを更新する。
【0039】
図3に示されるように、ユーザ装置105は、サービスを要求するために、電子署名されたメッセージをサービス装置110に対して送る(305)。そうするために、ユーザ装置105はメッセージを生成する。様々な実施形態において、メッセージは、サービス装置110と、要求されるサービスを記述する追加の情報とを識別する。加えて、メッセージは、ユーザに割り当てられたユーザ識別子を含むことができる。ユーザ装置105は、ユーザに割り当てられたプライベートキーを使用してメッセージを暗号化することによって、メッセージを電子署名する。ユーザ装置105は、ユーザに割り当てられた公開キーを、電子署名されたメッセージにさらに含めることができる。
【0040】
電子署名されたメッセージは、様々なユーザ入力に応答して送られることが可能である。たとえば、ユーザは、ブロックチェーン120およびサービス装置110との通信プロトコルを含むユーザ装置105上のインストールされたアプリケーションを開いてよく、それにより、電子署名されたメッセージをトリガする。サービス装置110が複数のサービスを提供することができる場合、ユーザは、望ましいサービスを指定する入力をさらに提供することができる。電子署名されたメッセージの送信は、通信プロトコル(ETHEREUMのWHISPER、TELAHASH、または任意の類似の技術)を使用して、無線技術規格(Bluetooth/NFC/WiFi、それらの全ての変形および派生形態または類似の技術)上で行うことができる。
【0041】
サービス装置110は、電子署名されたメッセージを受け取り、電子署名されたメッセージの署名を検証する(310)。たとえば、サービス装置110は、暗号署名検証を通じて署名を検証してよい。加えて、サービス装置110は、ユーザ識別子を、署名されたメッセージからそれを導出することによって抽出してよい。ここで、サービス装置110は、電子署名されたメッセージを公開キーを使用して復号し、ユーザ識別子を得ることができる。サービス装置110は、ユーザ装置105がサービス装置110に対するアクセスを付与されていることを検証する(315)。たとえば、サービス装置110は、ブロックチェーン120から継続的にポーリングされたスマートコントラクト115のローカルの同期されたコピーを取り寄せる。そして、サービス装置105は、電子署名されたメッセージから抽出されたユーザ識別子を、スマートコントラクトのそのローカルコピーの許可データ構造においてリストされたユーザ識別子と比較する。
【0042】
ユーザ装置105に対応するユーザ識別子がサービス装置110に対するアクセスを有することが検証されると、サービス装置110は、要求されたサービスを提供する(320)。加えて、サービス装置110は、サービスがサービス装置110によって提供されたことを示す情報をユーザ装置105に提供してよい。任意選択で、ユーザ装置は、要求が成功しサービスが提供されたというインジケーションなど、プロセスの結果を(たとえば、ユーザ装置105のユーザインターフェース230上に)表示する(325)。
【0043】
ブロックチェーンのみの動作(たとえば、
図4Aおよび
図4B)の動作例
図4Aは、第2の実施形態に従う、例示的ブロックチェーン対応動作環境を示す。ここで、
図4Aは、サービスがサービス装置110によって提供されるように、ユーザ装置105およびサービス装置110が各々ブロックチェーン120と通信するという点で、
図1Aとは異なる。言い換えれば、この動作モードにおいて、ユーザは、自身のユーザクライアント装置150を使用して、サービス装置110によって提供されるサービスを、ブロックチェーン120上のスマートコントラクト115に対して送られたトランザクションだけを用いて受け取る。
【0044】
ユーザ装置105は、
図2に前述されたように予約プロセスを通じて進行する。アクセスプロセス中に、ユーザ装置105は、電子署名されたメッセージを通じて要求をブロックチェーン120に対して送出する。サービス装置110は、ブロックチェーン120からのデータを定期的にポーリングして、一致するスマートコントラクト115の状態の変更のためにブロックチェーン120のそのローカルの同期されたコピーを更新し、ユーザ識別子が要求の一部として要求された動作を行うことを認証されていることを検証した後に相応に動作する。
【0045】
より具体的には、
図4Aに示された第2の実施形態に従うアクセスプロセスを示す例示的相互作用図である
図4Bが参照される。ユーザ装置105は、サービス装置110にサービスを要求するメッセージを生成することができる。メッセージは、ユーザ装置105のユーザに割り当てられたユーザ識別子と、サービス装置110の識別情報と、サービス装置110によって提供されるべきサービスを記述する情報とを含むことができる。ユーザ装置105は、ユーザに割り当てられたプライベートキーを使用してメッセージを暗号化することによってメッセージを電子署名し、ユーザに割り当てられた公開キーをさらに含める。
【0046】
ユーザ装置105は、その公開キーを含む電子署名されたメッセージを、サービス装置110を表すブロックチェーン120上のスマートコントラクト115に対して送る(450)。ブロックチェーン120上のスマートコントラクト115は、電子署名されたメッセージを受け取り、電子署名されたメッセージを(たとえば、暗号署名検証方法を通じて)検証し、公開キーを使用して電子署名されたメッセージを復号し、ユーザ識別子を抽出する。スマートコントラクト115は、抽出されたユーザ識別子がサービス装置110に対するアクセス権を有することを検証する(455)。たとえば、スマートコントラクト115は、そのストレージの一部としてその許可データ構造にアクセスし、抽出されたユーザ識別子を許可データ構造にリストされたユーザ識別子と比較する。スマートコントラクト115は、その内部データストアの一部としてサービス装置要求をキューイングする。
【0047】
サービス装置110は、ブロックチェーン120に対するアクセスを有し(たとえば、ブロックチェーンにおけるノード)、したがって、スマートコントラクト115のローカルの継続的に同期されたコピーを格納する。サービス装置は、ブロックチェーン120上の対応するスマートコントラクト115において発生した任意の状態変化を用いて、ローカルに同期されたコピーを更新するために、ブロックチェーン120をポーリングする(460)。たとえば、状態変化は、新しいユーザ装置がサービス装置110に対するアクセスを今や有することを示してよい。また、状態変化は、ブロックチェーン120上のスマートコントラクト115によってキューに入れられた未処理のサービス装置要求を示してよい。
【0048】
サービス装置110が未処理のサービス装置要求を検出した場合、サービス装置110は、要求されたサービスを提供する。任意選択で、ユーザ装置は、サービスが提供されたというインジケーションなど、要求の結果を表示する(470)。ユーザ装置は、ブロックチェーン120のそれ自体のコピーの定期的ポーリングを通じて、この情報を得てよく、以前にキューに入れられたサービス装置要求が今や完了していることが分かる。
【0049】
1つまたは複数のサービス装置と通信するプロキシ装置の動作例
図5Aは、例示的実施形態に従う、プロキシ装置を使用するアクセスプロセスを示す例示的相互作用図である。この例示的実施形態において、プロキシ装置550は、1つまたは複数のサービス装置110に代わって通信する。たとえば、プロキシ装置550は、サービス装置110(およびさらに他の1つまたは複数のサービス装置110)と通信することを事前に登録され予め認証されていてよい。そのような例示的実施形態において、プロキシ装置550の実装形態は、ブロックチェーン120と直接通信することができないサービス装置110にとって有益な可能性がある。前述されたように、プロキシ装置550は、ユーザ装置105およびブロックチェーン120上のスマートコントラクト115と通信するように構成されたコンピューティング装置200であってよく、したがって、ユーザ装置105は、サービスを要求することができ、プロキシ装置550は、サービス装置110が要求されたサービスを提供するようにする適切なロジックを実行することができる。
【0050】
ユーザ装置105は、
図2において前述されたように予約プロセスを通じて進行する。
図5Aに示されて相互作用図を特に参照すると、アクセスプロセス中に、ユーザ装置105は、その公開キーを含む電子署名されたメッセージをプロキシ装置550に対して送信する(または送る)(505)。そのような電子署名されたメッセージは、
図4Bのステップ450に関係する上記の説明に従って、ユーザ装置105によって生成されることができる。プロキシ装置550は、電子署名されたメッセージを受け取り、ユーザ識別子を抽出し、抽出されたユーザ識別子がサービス装置110に対するアクセス権を有することを検証する(510)。ここで、プロキシ装置は、ブロックチェーン120に対するアクセスを有し(たとえば、ブロックチェーン120におけるノード)、したがって、ブロックチェーン120のローカルの同期されたコピーを格納する。プロキシ装置は、抽出されたユーザ識別子を、ユーザ識別子を含むスマートコントラクトのローカルの同期されたコピーと比較することによって、抽出されたユーザ識別子がアクセス権を有することを検証する(515)。
【0051】
プロキシ装置550が、ユーザ装置105がサービス装置110に対するアクセスを有することを検証すると、プロキシ装置550は、操作要求をサービス装置110に対して送信する。操作要求に応答して、サービス装置がサービスを提供する(520)。サービス装置110は、サービスが提供されたことを示す操作要求に対する応答を、プロキシ装置550に対して返送する。さらに、プロキシ装置550が、ユーザ装置105に対して応答を送信してよい。ユーザ装置105は、任意選択で、動作の結果を表示(525)するために提供することができる。
【0052】
図5Bは、例示的実施形態に従う、プロキシ装置のハードウェア層およびソフトウェア層の例を示す。上述されたように、様々な実施形態において、プロキシ装置はクラウドサーバである。したがって、プロキシ装置のプロセッサを含むことができるプロキシ装置のハードウェア層は、複数の地理的位置にわたって分散されることができる。一般に、ハードウェア層および/またはソフトウェア層は、プロキシ装置550がブロックチェーン120と通信することを可能にする。ブロックチェーン120は、1つまたは複数の分散されたコンピューティング装置上で実行してよく、1つまたは複数のスマートコントラクト115、および分散された台帳(たとえばブロックチェーン120)を含んでよい。
【0053】
例として、プロキシ装置550は、ハードウェア(たとえば、RASPBERRY PI、INTEL EDISON、SAMSUNG ARTIKなどのような組み込みボードプロセッサ)、ならびに/または、ブロックチェーン120と、ブロックチェーン210に対する直接アクセスを有しても有しなくてもよいサービス装置110との通信を可能にするように構成された、プロセッサ202、グラフィックディスプレイユニット210、および機械可読媒体222のような
図2Aに説明された様々な装置を含んでよい。プロキシ装置550はまた、オペレーティングシステムを含む。たとえば、プロキシ装置550によって使用される動作システムの例は、UBUNTU Snappy coreである。別の例において、プロキシ装置550によって使用されるオペレーティングシステムは、GOOGLE ANDROIDまたはAPPLE IOSであってよい。オペレーティングシステムを通じて、プロキシ装置550は、1つまたは複数の異なるサービス装置110と通信することができる。たとえば、プロキシ装置550は、アプリケーションまたは通信プロトコルを通じて(たとえば、家庭、ホテルにおいて)利用可能である全ての適合するサービス装置110を検出し、それらと通信することができる。したがって、プロキシ装置550の所有者は、プロキシ装置550と通信するサービス装置110の各々についてパラメータ(たとえば、デポジット、レンタルの費用、利用可能時間)を設定することができる。
【0054】
加えて、プロキシ装置550は、ブロックチェーン120との通信を可能にするソフトウェアフレームワークを含む。たとえば、プロキシ装置550は、1つまたは複数のサードパーティアプリケーションの間の通信を可能にしてよいコントローラアプリケーションと通信するソフトウェアフレームワーク、およびブロックチェーン120と通信するソフトウェアフレームワークを含んでよい。加えて、プロキシ装置550は、ユーザ入力を受け取ることができるユーザインターフェースを含んでよい。
【0055】
状態チャネルの利用を含む動作例
図6は、状態チャネルの使用を含む実施形態を詳細に示すアクセスプロセスフローチャートを示す。状態チャネルは、ユーザ装置105が、サービス装置110(または同じ所有者に属する複数のサービス装置)からの複数の異なるサービス(または反復されるサービス)のための複数のトランザクションを送ることができるように、通信を可能にする。したがって、ユーザ装置105およびサービス装置110は、状態チャネル上で提供されたサービスに関連付けられた費用を集計し、状態チャネルが閉じられたときに、ブロックチェーン120上のスマートコントラクト115を介して単一支払いを通じて複数のトランザクションを決済することができる。
【0056】
一例として、サービス装置110は、時間期間にわたって複数回のロック/ロック解除を必要とすることがあるロックであってよい。したがって、各ロック/ロック解除の後にブロックチェーン120上のスマートコントラクト115によって支払いを決済する代わりに、サービス装置110は、状態チャネルが閉じられた後に決済することができる。様々な実施形態において、状態チャネルは、予め定められた量の時間の後または予め定められた数のロック/ロック解除の後に閉じられることが可能である。
【0057】
図6ではユーザ装置105と単一のサービス装置110との間の状態チャネル通信を示しているが、(たとえば、
図5Aで説明されたような)プロキシ装置550と関係して状態チャネルが利用されるのが可能であることも、当業者は理解してよい。したがって、ユーザ装置105は、ユーザ装置105とプロキシ装置550との間で開いた状態チャネルを介して複数の要求をプロキシ装置550に対して提供してよい。したがって、プロキシ装置550は、複数の要求を検証し、要求されたサービスを提供するようにサービス装置110に適切に命令してよい。ユーザ装置105およびプロキシ装置550は、状態チャネルが閉じられた後に、提供されたサービスに対する支払いを決済してよい。
【0058】
具体的な例として、プロキシ装置550はホテルルームに配置されてよい。ホテルルームが提供できるサービスは、以下に限定されないが、ルームへのアクセスを提供するためにドアをロック解除すること、ホテルルームの小型冷蔵庫内の飲み物へのアクセスを提供すること、ホテルルームのテレビの映画へのアクセスを提供すること、および/または宿泊後にホテルルームをチェックアウトすることを含んでよい。各サービスは、ホテルルームのプロキシ装置550と通信するホテルルーム内のサービス装置110に対応する。このシナリオにおいて、ユーザ装置105は、ユーザ装置105と、複数のサービス装置110と通信するプロキシ装置550との間の通信を可能にする、状態チャネルを利用することができる。したがって、ブロックチェーン120上のスマートコントラクト115は、状態チャネルが閉じられたときに、プロキシ装置550と通信するサービス装置110によって提供された複数のサービスに対する単一の支払いを受け取る。
【0059】
図6に示された相互作用図を参照すると、ユーザ装置は、電子署名されたメッセージをサービス装置110(またはプロキシ装置550)に対して送信する(605)。ここで、ユーザ装置105は、状態チャネルを開くようにサービス装置110に要求するメッセージを生成する。様々な実施形態において、メッセージは、ユーザ装置105のユーザに割り当てられたユーザ識別子を含むことができる。加えて、メッセージは、状態チャネルがどれだけ長く開いたままとなるか(たとえば、持続時間または最大費用または提供されるサービスの数)などの詳細を含んでよい。ユーザ装置105は、ユーザに割り当てられたプライベートキーを使用してメッセージを暗号化することによってメッセージを電子署名し、ユーザに割り当てられた公開キーをさらに含める。
【0060】
サービス装置110は、電子署名されたメッセージを受け取り、メッセージ要求の署名を検証し(610)、ユーザ識別子を抽出する。たとえば、サービス装置110は、暗号署名認証を行って、電子署名されたメッセージを検証する。サービス装置110は、署名されたメッセージを公開キーを使用して復号し、ユーザ識別子を抽出する。サービス装置110は、ブロックチェーンのローカルに格納された同期されたコピーを照会することによって、抽出されたユーザ識別子がサービス装置に対するアクセス権を有することを検証する(615)。
【0061】
サービス装置110が、ユーザ装置105がサービス装置に対するアクセスを有することを検証すると、サービス装置は、状態チャネルを開く(620)。任意選択で、ユーザ装置105は、状態チャネルの開放の結果を表示(625)のために提供してユーザに通知してよい。ユーザ装置105とサービス装置110との間で状態チャネルが開いたままの間、ユーザ装置105は、1つまたは複数の署名されたメッセージを送ることによってサービス装置110の1つまたは複数のサービスを要求することができる(630)。サービス装置110は、署名された要求が状態チャネルを通じて受け取られたという事実に基づいて、ユーザ装置105からの要求に応答して、要求された1つまたは複数のサービスを提供することができる(635)。この時間の間、ユーザ装置105およびサービス装置110は、チャネルが開かれてから提供されたサービスの集計を管理する。ステップ630および635は、状態チャネルが閉じられるまで継続してよい。状態チャネルの閉鎖は、時間(たとえば、日の終わり)に基づくまたはサービスの総数(たとえば、10回のサービスを提供した後の閉じる)に基づく状態チャネルの予め定められた期限切れに起因してよいが、サービスを稼働する予め定められた総費用に到達した場合などにあってもよい。いくつかの実施形態において、状態チャネルの遮断があると、提供されたサービスの費用が、ブロックチェーン120上のスマートコントラクト115を介して決済される。他の例示的実施形態において、ユーザ装置105またはサービス装置110は、状態チャネルが閉じられるまで待機する必要がなく、提供されたサービスの費用を予め定められた間隔で決済することができる。
【0062】
ゲートウェイクライアント装置の動作例
図7Aおよび7Bを参照すると、別の実施形態において、サービス装置110は、ブロックチェーン120と直接通信する能力を有しなくてよい。たとえば、サービス装置110は、インターネット接続性を有しなくてよい。したがって、
図7AにおいてIoT装置とも呼ばれるサービス装置110が、
図7Aにおいてゲートウェイとも呼ばれるインターネット対応ユーザ装置105を利用して、ブロックチェーン120に対するアクセスを有する
図7Aにおける信頼されたクライアント704と通信する。
【0063】
サービス装置110それ自体は、インターネット接続を可能にされる必要はない。それは、他の通信媒体を介してユーザ装置105と通信することができる。たとえば、通信は、この通信チャネルがメッセージの双方向送信を可能にする限り、Bluetooth、近距離無線通信(NFC)、または他の任意の類似の技術を介して確立されてよい。サービス装置110は、信頼されたクライアント710の情報を含むホワイトリストを格納するメモリをさらに含むことができる。加えて、サービス装置110は、ユーザ装置105からの要求の一部として含まれる暗号署名のような暗号書名を認証することができる。
【0064】
ゲートウェイ702は、任意の装置であってよく、サービス装置110との通信チャネル(たとえば、Bluetooth、NFC)をサポートすることができる。ゲートウェイ702の例はユーザ装置105とすることができる。いくつかの実施形態において、ゲートウェイ702は、公開/プライベートキーペアを保持し、公開キーを用いてメッセージに署名することができる。したがって、ゲートウェイ702は、署名されたメッセージをサービス装置110に対して送ることによって認証プロセスを開始することができる。ゲートウェイ702は、信頼されたクライアント710を使用してブロックチェーン120に接続するために、サービス装置110に対するインターネット接続を提供する。
【0065】
信頼されたクライアント710は、ブロックチェーン120に対するアクセスを与える多くの異なるホストによって提供されるサービスであってよい。各信頼されたクライアント704は、(geth、eth、parityなどと同様のクライアントを使用して)常に同期されたブロックチェーン120におけるノードとして動作することができる。加えて、各信頼されたクライアント704は、プライベートキーに対するアクセスを有し、要求に署名することができる。
【0066】
セットアップ中、サービス装置110の所有者は、サービス装置110のためにブロックチェーン120上のスマートコントラクト115を配置する。ここで、値がサービス装置110のストレージ(たとえばメモリ)に書き込まれることができる。値は、サービス装置の所有者によって設定されるように、信頼されたクライアント704の初期のホワイトリストを含むことができる。
【0067】
図7Bを参照すると、それは、例示的実施形態に従う、ユーザ装置105および信頼されたクライアント704を通じてサービス装置110によってブロックチェーンアクセスを可能にするプロセスを示す。具体的には、
図7Bに示されるように、サービス装置110(IoT装置)が、安全とみなされる信頼されたクライアントのリストを管理する証明書のホワイトリストを保持する(705)。ホワイトリストは、信頼されたクライアント704のインターネットプロトコルアドレス、および信頼されたクライアント704のポート/公開キーのような、信頼されたクライアント710の情報を含むことができる。ホワイトリストそれ自体は、ブロックチェーン120上のスマートコントラクト115として格納されてよい。このホワイトリストは、各ノードインスタンスに関して決定するためにマルチシグを使用するユーザの基礎もしくはグループのいずれかによって、またはノードのリストを集中的に制御するためにそれを使用してよい企業によって管理されてよい。ホワイトリストが常に最新であり、故障または非存在ノードを含まないことを確実にするために、cronjobまたは同様のものが、リスト内のエントリを観測し、結果を独立したクライアントと比較するテスト要求を実行してよい。結果が一致しない場合、このクライアントはリストから除去される。
【0068】
まず、サービス装置110がゲートウェイ702装置を検証する(ステップ710ないし730)。ゲートウェイ702は、サービス装置との接続を確立する(710)。サービス装置は、乱数(たとえばランダムシード)を生成し(715)、ランダムシードをゲートウェイに対して送る(720)。このシードは、メッセージが再使用できないことを確実にし、中間者攻撃を防止する。
【0069】
ゲートウェイ702によって送られる接続を確立する(たとえばステップ710)要求の例は、以下のようであってよい。
{
“jsonrpc”: “2.0”,
“method”: “request”,
“params”: []
“id”:”1”
}
ランダムシードを含むサービス装置からの応答(たとえばステップ720)は、次のように表現されてよい。
{
“jsonrpc”: “2.0”,
“result”: { “seed” : “12AE3B6F3AD76E5B2” }
“id”:”1”
}
【0070】
ゲートウェイがシードを受け取ると、ゲートウェイは署名されたメッセージを送る(725)。これは、Bluetooth、NFC、または任意の類似の技術を通じて行うことができる。そのようなメッセージは以下の形式をとってよい。
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”
}
【0071】
サービス装置110は、ゲートウェイ702からの署名されたメッセージを検証してよい(730)。たとえば、サービス装置110は、ゲートウェイの署名されたメッセージから公開キーを導出することができる。この検証は、以下の擬似コードの形式をとってよい。
senderPubKey=ethUtil.ecrecover(msgHash,v,r,s)
【0072】
上記から導出された公開キーがメッセージの一部として渡されたキーと一致する場合、サービス装置は、メッセージで指定されたゲートウェイ702によってメッセージが実際に送られたことを確認する。
【0073】
ゲートウェイのアイデンティティを検証した後、サービス装置110は、この公開キーの所有者がサービス装置110を使用することも認証されているかどうかを決定する。サービス装置110は、そのホワイトリスト上に保持されている信頼されたクライアント704を選択し(735)、ゲートウェイ702に対して送られる(745)要求を生成する(740)。ここで、ゲートウェイ702に対して送られる要求は、状態変更が存在するかどうかを調べるために、ブロックチェーン120に格納されたスマートコントラクト115をポーリングする(たとえば、ステップ460参照)要求とすることができる。
【0074】
そのような要求の生成は以下の形式をとってよい。
function hasPermission (address user, uint commandCode) constant returns(boolean is-allowed)
要求(たとえば、ステップ745で送られる要求)それ自体は、以下の擬似コードによって表されてよい。
{
“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”
}
【0075】
ゲートウェイ702がクライアントおよびシードパラメータを含むそのような要求を受け取ったとき、それは、指定された信頼されたクライアント704に対するHTTP(またはhttps)接続を確立し、要求を転送する(750)。要求は、信頼されたクライアント704をホストするサーバに対するPOST要求の形式をとってよい。この要求は、信頼されたクライアント704によって受け取られ、次いで、信頼されたクライアント704は、信頼されたクライアント752上でサービス装置の照会を実行する。信頼されたクライアント704は、信頼されたクライアントのプライベートキーを使用して署名されたメッセージの形式で署名された応答を生成する(755)。そのような応答の生成は以下の形式をとってよい。
var msgHash = crypto.SHA256( request. method + JSON.stringify( request. params) + request. seed
+ JSON.stringify( response. result));
ethUtil. ecsign (msgHash, privateKey)
【0076】
(たとえば、ステップ755で生成される)応答メッセージは、照会の結果を含んでよく、署名されたフィールドを追加してよく、以下の擬似コードによって表されてよい。
{
“jsonrpc”: “2.0”,
“result”: “0x1”,
“sign”: {
“v”:“1c”,
“r”:“5e1d3a76fbf824220eafc8c79ad578ad2b67d01b0c2425eb1f1347e8f50882ab”,
“s”: “5bd428537f05f9830e93792f90ea6a3e2d1ee84952dd96edbae9f658f831ab13”
},
“id”:”2”
}
例として、(たとえば、ステップ755で生成される)応答メッセージは、スマートコントラクト115に対する変更を含んでよく、またはキューに入れられたサービス装置要求を含むことができる。したがって、この情報がサービス装置110によって受け取られたとき、サービス装置110は、そのローカルに格納されたスマートコントラクト115を、スマートコントラクト115に対する変更によって更新し、またはキューに入れられたサービス装置要求に応答してサービスを提供することができる。
【0077】
信頼されたクライアントが、この署名されたメッセージをゲートウェイ702に対して送り(または送信し)(760)、次いで、ゲートウェイ702がこの応答をサービス装置110に対して転送する(765)。サービス装置110は、受け取られたデータパッケージにおける信頼されたクライアント704の署名を検証する(770)。これは、メッセージから信頼されたクライアント704の公開キーを抽出し、それをサービス装置110のホワイトリストに格納されたものと比較することによって行われてよい。
【0078】
一実施形態において、サービス装置110は、メッセージの署名が有効である場合、ゲートウェイ702に対してメッセージを返す。ゲートウェイ702に対して返されたメッセージは、信頼されたクライアント704による照会が成功したかどうかに応じて成功または失敗結果を含んでよく、以下の疑似コードの形式をとってよい。
{
“jsonrpc”: “2.0”,
“result”: true
“id”:”1”
}
【0079】
追加の考慮事項
ブロックチェーン対応環境の開示されている実施形態は、非集中型ブロックチェーンを利用しながら、様々なサービス装置のサービスのアクセスを可能にする。開示された実施形態の利益は数倍になる。
【0080】
例として、特定のサービス装置を管理する非集中型ブロックチェーン上のスマートコントラクトの実装は、サービスと支払いの安全な交換を確実にする。たとえば、分散された台帳として、ブロックチェーンは、分散された台帳に支払いが変わりなく記録されることを確実にすることができる。
【0081】
また例として、ユーザ装置が非集中型ブロックチェーンを利用する能力は、ユーザ装置のユーザが仲介者を必要とすることなくサービス装置に容易にアクセスできることを確実にする。特定の例として、ユーザ装置のユーザは、ブロックチェーン上のホテルルームに対応するスマートコントラクトに支払いを提供することができる。したがって、ユーザは、特定の日付の範囲でホテルルームを予約することができる。ユーザがホテルルームに到着したとき、ホテルルームのキーを取得するためにフロントデスクでチェックインする代わりに、ユーザは、ユーザ装置を使用して、ホテルルームのロック(たとえばサービス装置)をロック解除することによってホテルルームに対するアクセスを得ることができる。
【0082】
本発明の実施形態に関する上述の説明は、例示の目的で提示されたものであり、網羅的であること、または開示された正確な形態に本発明を限定することは意図されていない。当業者は、上記の開示に照らして多くの修正および変形が可能であることを理解することができる。
【0083】
この説明のいくつかの部分は、情報に対する操作のアルゴリズムおよび記号表現の観点で本発明の実施形態を記述する。これらのアルゴリズムの記述および表現は、データ処理技術分野の当業者によって一般的に使用され、その成果の実体を他の当業者に効果的に伝える。これらの動作は、機能的、計算的、または論理的に説明されているが、コンピュータプログラムまたは同等の電気回路もしくはマイクロコードなどによって実装されることが理解される。さらに、一般性を失うことなく、これらの動作の配置をモジュールと呼ぶことが時として便利であることも判明している。説明された動作およびそれらの関連付けられたモジュールは、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせで具現化されてよい。
【0084】
本明細書で説明された任意のステップ、動作、またはプロセスが、単独でまたは他の装置と組み合わせて1つまたは複数のハードウェアまたはソフトウェアモジュールを用いて実行または実装されてよい。一実施形態において、ソフトウェアモジュールは、コンピュータプログラムコードを含むコンピュータ可読媒体を備えるコンピュータプログラム製品によって実装され、これは、説明されたステップ、動作、またはプロセスのいずれかまたは全てを実行するためにコンピュータプロセッサによって実行されることが可能である。
【0085】
本発明の実施形態はまた、本明細書における動作を行うための装置に関することがある。この装置は、必要とされる目的のために特に構成されてよく、および/または、コンピュータに格納されたコンピュータプログラムによって選択的にアクティブ化もしくは再構成される汎用コンピューティング装置を含んでよい。そのようなコンピュータプログラムは、非一時的な有形のコンピュータ可読記憶媒体、またはコンピュータシステムバスに結合されてよい電子命令を格納するのに適した任意の種類の媒体に格納されてよい。さらに、本明細書で言及される任意のコンピューティングシステムは、単一のプロセッサを含んでよく、または増大されるコンピューティング能力のために複数のプロセッサ設計を利用するアーキテクチャであってよい。
【0086】
本発明の実施形態はまた、本明細書に説明されたコンピューティングプロセスによって作られる製品に関することがある。そのような製品は、コンピューティングプロセスからもたらされる情報を含んでよく、その情報は、非一時的で有形のコンピュータ可読記憶媒体に格納され、本明細書に説明されたコンピュータプログラム製品または他のデータ組み合わせの任意の実施形態を含んでよい。
【0087】
最後に、本明細書で使用される言葉は、主に可読性および教育目的で選択されており、本発明の主題を線引きまたは限定するように選択されていないことがある。したがって、本発明の範囲は、この詳細な説明によって限定されず、本明細書に基づく出願において発行される任意の請求項によって限定されることが意図される。したがって、本発明の実施形態の開示は、添付の特許請求の範囲に記載される本発明の範囲を限定することなく例示することが意図される。