(57)【要約】ＩｏＴデバイス、ウェブアプリ、モバイルアプリ、および他のアプリケーションのブロックチェーントランザクションを妥当性検査するために、ブロックチェーンネットワークと同期していないクライアントを使用するためのシステムおよび方法が開示される。クライアントは、ブロックチェーンネットワークと同期しているノードのレジスタ（情報プロバイダまたはバリデータとして作動する）を検索し、レジスタからノードを選択して、選択したノードに情報要求を送信する。クライアントは、要求に対する応答、要求された情報および妥当性検査指標（たとえば、証明）を含む応答を受信し、妥当性検査指標に基づいて、応答が有効かどうかを決定する。クライアントは、応答が有効であるという決定に応答して、ＩｏＴデバイス、ウェブアプリ、モバイルアプリ、または他のアプリケーションに確認を送信する。
2021513300.tif 000002
【特許請求の範囲】
【請求項１】
ブロックチェーンネットワークと同期されていないクライアントにおいて、トランザクション要求を受信するステップであって、前記クライアントが、モノのインターネット（ＩｏＴ）デバイスによって実行される、ステップと、
前記クライアントによって、ノードのレジスタにアクセスするステップであって、前記ノードは、それぞれ前記ブロックチェーンネットワークと同期されている、ステップと、
前記クライアントによって、前記レジスタからノードを選択するステップと、
前記クライアントから前記ノードに、前記ブロックチェーンネットワーク上で前記トランザクション要求を処理するようにとのブロックチェーン要求を送信するステップと、
前記クライアントによって、前記ブロックチェーン要求への応答を受信するステップであって、前記応答は妥当性検査指標を含む、ステップと、
前記クライアントによって、前記妥当性検査指標に基づいて、前記応答が有効であるかどうかを検証するステップと、
前記クライアントによって、前記応答が有効であるという決定に応答して、前記トランザクション要求に対応するトランザクションを妥当性検査するように前記ＩｏＴデバイスに指示するステップと
を備える方法。
【請求項２】
前記クライアントによって、前記レジスタから前記ノードを選択するステップは、
前記クライアントによって、前記レジスタから候補ノードをランダムに識別するステップと、
前記クライアントによって、前記候補ノードが前記クライアントによって送信された最後のブロックチェーン要求を処理したかどうかを決定するステップと、
前記候補ノードが前記クライアントによって送信された前記最後のブロックチェーン要求を処理したという決定に応答して、
前記クライアントによって、前記レジスタから異なる候補ノードをランダムに識別するステップと、
前記クライアントによって、前記ノードとして前記異なる候補ノードを選択するステップと、
前記候補ノードが前記クライアントによって送信された前記最後のブロックチェーン要求を処理しなかったという決定に応答して、前記候補ノードを前記ノードとして選択するステップと、
を備える請求項１に記載の方法。
【請求項３】
前記妥当性検査指標は追加ノードからの署名されたブロックハッシュを備え、前記クライアントによって、前記妥当性検査指標に基づいて、前記応答が有効であるかどうかを検証するステップは、前記クライアントによって、前記ノードによる前記処理を補強する前記追加ノードからの前記署名されたブロックハッシュに基づいて前記応答が有効であることを決定するステップを備える請求項１に記載の方法。
【請求項４】
前記妥当性検査指標は証明を備え、前記クライアントによって、前記妥当性検査指標に基づいて、前記応答が有効であるかどうかを検証するステップは、
前記証明を通じてデータを供給することによって証明結果を決定するステップと、
前記証明結果が前記応答に示された結果と一致するかどうかを決定するステップと、
前記証明結果が前記応答に示された前記結果と一致するという決定に応答して、前記応答が有効であると決定するステップと
を備える請求項１に記載の方法。
【請求項５】
前記ノードは、前記ノードの動作時に追加ノードに署名を要求し、前記追加ノードは、前記追加ノードからの前記署名が無効であると決定し、前記ノードは、妥当性検査ノードの前記レジスタから前記追加ノードが削除されるように応答的に要求する請求項１に記載の方法。
【請求項６】
前記クライアントによって、前記応答が有効であるという検証にさらに応答して、前記クライアントのノードのローカルレジスタへのスコア増加更新を処理するステップをさらに備える請求項１に記載の方法。
【請求項７】
前記クライアントによって、前記レジスタから前記ノードを選択する前記ステップは、
前記ローカルレジスタの各候補ノードに、それらのスコアに基づいて重み付けするステップと、
各候補ノードの前記重みに基づいてバイアスがかけられたランダム選択によって前記ノードを選択するステップと
を備える請求項６に記載の方法。
【請求項８】
コンピュータプログラム命令を実行するためのプロセッサと、
ブロックチェーンネットワークと同期されていないクライアントを動作させるために前記プロセッサによって実行可能な記憶されたコンピュータプログラム命令を備える非一時的コンピュータ可読ストレージ媒体とを備え、前記命令が、実行されると、前記プロセッサに、
ブロックチェーンネットワークと同期されていないクライアントにおいて、トランザクション要求を受信することであって、前記クライアントが、モノのインターネット（ＩｏＴ）デバイスによって実行される、ことと、
前記クライアントによって、ノードのレジスタにアクセスすることであって、前記ノードは、それぞれ前記ブロックチェーンネットワークと同期されている、ことと、
前記クライアントによって、前記レジスタからノードを選択することと、
前記クライアントから前記ノードに、前記ブロックチェーンネットワーク上で前記トランザクション要求を処理するようにとのブロックチェーン要求を送信することと、
前記クライアントによって、前記ブロックチェーン要求への応答を受信することであって、前記応答は妥当性検査指標を含む、ことと、
前記クライアントによって、前記妥当性検査指標に基づいて、前記応答が有効であるかどうかを検証することと、
前記クライアントによって、前記応答が有効であるという決定に応答して、前記トランザクション要求に対応するトランザクションを妥当性検査するように前記ＩｏＴデバイスに指示することと
を行わせる、システム。
【請求項９】
前記クライアントによって、前記レジスタから前記ノードを選択するための前記命令は、
前記クライアントによって、前記レジスタから候補ノードをランダムに識別することと、
前記クライアントによって、前記候補ノードが前記クライアントによって送信された最後のブロックチェーン要求を処理したかどうかを決定することと、
前記候補ノードが前記クライアントによって送信された前記最後のブロックチェーン要求を処理したという決定に応答して、
前記クライアントによって、前記レジスタから異なる候補ノードをランダムに識別することと、
前記クライアントによって、前記ノードとして前記異なる候補ノードを選択することと、
前記候補ノードが前記クライアントによって送信された前記最後のブロックチェーン要求を処理しなかったという決定に応答して、前記候補ノードを前記ノードとして選択することと、
を行うための命令をさらに備える請求項８に記載のシステム。
【請求項１０】
前記妥当性検査指標は追加ノードからの署名されたブロックハッシュを備え、前記クライアントによって、前記妥当性検査指標に基づいて、前記応答が有効であるかどうかを検証することは、前記クライアントによって、前記ノードによる前記処理を補強する前記追加ノードからの前記署名されたブロックハッシュに基づいて前記応答が有効であることを決定することを備える請求項８に記載のシステム。
【請求項１１】
前記妥当性検査指標は証明を備え、前記クライアントによって、前記妥当性検査指標に基づいて、前記応答が有効であるかどうかを決定するための前記命令は、
前記証明を通じてデータを供給することによって証明結果を決定することと、
前記証明結果が前記応答に示された結果と一致するかどうかを決定することと、
前記証明結果が前記応答に示された前記結果と一致するという決定に応答して、前記応答が有効であると決定することと
を行うための命令をさらに備える請求項８に記載のシステム。
【請求項１２】
前記ノードは、前記ノードの動作時に追加ノードに署名を要求し、前記追加ノードは、前記追加ノードからの前記署名が無効であると決定し、前記ノードは、妥当性検査ノードの前記レジスタから前記追加ノードが削除されるように応答的に要求する請求項８に記載のシステム。
【請求項１３】
前記動作は、さらに、前記クライアントによって、前記応答が有効であるという検証にさらに応答して、前記クライアントのノードのローカルレジスタへのスコア増加更新を処理することをさらに備える請求項８に記載のシステム。
【請求項１４】
前記クライアントによって、前記レジスタから前記ノードを選択するための前記命令は、
前記ローカルレジスタの各候補ノードに、それらのスコアに基づいて重み付けすることと、
各候補ノードの前記重みに基づいてバイアスがかけられたランダム選択によって前記ノードを選択することと
を行うための命令を備える請求項１３に記載のシステム。
【請求項１５】
記憶された命令を備える非一時的コンピュータ可読媒体であって、前記命令はプロセッサによって実行されると、前記プロセッサに、ブロックチェーンネットワークと同期されていないクライアントを、
ブロックチェーンネットワークと同期されていないクライアントにおいて、トランザクション要求を受信することであって、前記クライアントが、モノのインターネット（ＩｏＴ）デバイスによって実行される、ことと、
前記クライアントによって、ノードのレジスタにアクセスすることであって、前記ノードは、それぞれ前記ブロックチェーンネットワークと同期されている、ことと、
前記クライアントによって、前記レジスタからノードを選択することと、
前記クライアントから前記ノードに、前記ブロックチェーンネットワーク上で前記トランザクション要求を処理するようにとのブロックチェーン要求を送信することと、
前記クライアントによって、前記ブロックチェーン要求への応答を受信することであって、前記応答は妥当性検査指標を含む、ことと、
前記クライアントによって、前記妥当性検査指標に基づいて、前記応答が有効であるかどうかを検証することと、
前記クライアントによって、前記応答が有効であるという決定に応答して、前記トランザクション要求に対応するトランザクションを妥当性検査するように前記ＩｏＴデバイスに指示することと
を行うように動作させる非一時的コンピュータ可読媒体。
【請求項１６】
前記クライアントによって、前記レジスタから前記妥当性検査ノードを選択するための前記命令は、
前記クライアントによって、前記レジスタから候補ノードをランダムに識別することと、
前記クライアントによって、前記候補ノードが前記クライアントによって送信された最後のブロックチェーン要求を処理したかどうかを決定することと、
前記候補ノードが前記クライアントによって送信された前記最後のブロックチェーン要求を処理したという決定に応答して、
前記クライアントによって、前記レジスタから異なる候補ノードをランダムに識別することと、
前記クライアントによって、前記ノードとして前記異なる候補ノードを選択することと、
前記候補ノードが前記クライアントによって送信された前記最後のブロックチェーン要求を処理しなかったという決定に応答して、前記候補ノードを前記ノードとして選択することと、
を行うための命令を備える請求項１５に記載の非一時的コンピュータ可読媒体。
【請求項１７】
前記妥当性検査指標は追加ノードからの署名されたブロックハッシュを備え、前記クライアントによって、前記妥当性検査指標に基づいて、前記応答が有効であるかどうかを検証することは、前記クライアントによって、前記ノードによる前記処理を補強する前記追加ノードからの前記署名されたブロックハッシュに基づいて前記応答が有効であることを決定することを備える請求項１５に記載の非一時的コンピュータ可読媒体。
【請求項１８】
前記妥当性検査指標は証明を備え、前記クライアントによって、前記妥当性検査指標に基づいて、前記応答が有効であるかどうかを決定するための前記命令は、
前記証明を通じてデータを供給することによって証明結果を決定することと、
前記証明結果が前記応答に示された結果と一致するかどうかを決定することと、
前記証明結果が前記応答に示された前記結果と一致するという決定に応答して、前記応答が有効であると決定することと
を行うための命令をさらに備える請求項１５に記載の非一時的コンピュータ可読媒体。
【請求項１９】
前記ノードは、前記ノードの動作時に追加ノードに署名を要求し、前記追加ノードは、前記追加ノードからの前記署名が無効であると決定し、前記ノードは、妥当性検査ノードの前記レジスタから前記追加ノードが削除されるように応答的に要求する請求項１５に記載の非一時的コンピュータ可読媒体。
【請求項２０】
前記命令は、さらに、前記クライアントによって、前記応答が有効であるという検証にさらに応答して、前記クライアントのノードのローカルレジスタへのスコア増加更新を送信するための命令をさらに備え、前記クライアントによって、前記レジスタから前記ノードを選択するための前記命令は、
各候補ノードに、それらのスコアに基づいて重み付けすることと、
各候補ノードの前記重みに基づいてバイアスがかけられたランダム選択によって前記ノードを選択することと
を行うための命令を備える請求項１５に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、モノのインターネット（ＩｏＴ）デバイスなどの軽量デバイスの分野に関し、より詳細には、ブロックチェーン技術の分散化され、トラストレスな側面に妥協することのない、軽量デバイスのブロックチェーン相互作用のリモート処理に関する。本開示は、ウェブアプリおよびモバイルアプリなどのアプリケーションの文脈における同様の処理に関する。
【背景技術】
【０００２】
関連出願の相互参照
本出願は、２０１８年４月１６日に出願された米国特許仮出願第６２／６５８，４９６号の利益を主張し、その開示は、参照によりその全体が本明細書に組み込まれる。
【０００３】
ＩｏＴデバイスなどの、低処理能力、低帯域幅容量（たとえば、インターネットへの接続が制限されている）、および／または低電力容量（本明細書では総称して「軽量デバイス」と呼ぶ）のデバイスの展開は、どこにでも存在するようになっている。軽量デバイスの処理、帯域幅、および／または電力制約により、これらの軽量デバイスのブロックチェーン相互作用を処理および妥当性検査するには、関連技術の実装形態において何らかの形の妥協が必要である。たとえば、ブロックチェーンまたは他のＤＬＴ（分散型台帳技術）ネットワークと相互作用するための多くの関連技術の実装形態では、ブロックチェーンまたはＤＬＴネットワークと相互作用しようとしているデバイスにクライアントがインストールされる必要がある。いくつかのデバイスには容量の制約があることを認識し、関連技術システムは、それらのクライアントのプルーニングバージョンと軽量バージョンを開発した（たとえば、データ容量要件を２００ＧＢから４０ＧＢ、さらには５０ＭＢに削減する）。
【発明の概要】
【０００４】
しかしながら、軽量デバイスには、ブロックチェーンまたはＤＬＴの相互作用を促進するためのクライアントの最も軽量なバージョンでさえ処理する能力がないシナリオがある。そのようなシナリオでは、関連技術システムは、サーバにおいてリモートでインストールされたクライアント（本明細書では「リモートクライアント」と呼ぶ）を使用してブロックチェーンの相互作用を促進する。しかしながら、リモートクライアントの実装形態は、特定の中央サーバを信頼するためにリモートクライアントと相互作用する軽量デバイスが必要であるため、ブロックチェーンまたはＤＬＴの相互作用の中心的な信条に妥協し、ブロックチェーンまたはＤＬＴの使用を普及させてきた分散化の側面を阻むものになる。さらに、リモートクライアントの実装形態により、単一障害点が形成され、リモートクライアントをホストしているサーバに障害が発生すると、ブロックチェーンまたはＤＬＴの相互作用を処理するためにリモートクライアントに依存する軽量デバイスは、相互作用を処理できなくなる。
【図面の簡単な説明】
【０００５】
開示された実施形態は、発明を実施するための形態、添付の特許請求の範囲、および添付の図（または図面）からより容易に明らかになる他の利点および特徴を有する。図の簡単な紹介は以下の通りである。
【図１】軽量デバイスまたはアプリケーションによってブロックチェーン相互作用を促進するためのトラストレスステートレスリモートクライアントを実装するシステムの一実施形態を示す図である。
【図２】マシン可読媒体から命令を読み取り、それらをプロセッサ（または、コントローラ）において実行することができる例示的なマシンの構成要素を示すブロック図である。
【図３】本開示のいくつかの実施形態による、トラストレスでステートレスなリモートクライアントによるブロックチェーントランザクションを妥当性検査するためのデータフロー図である。
【図４】本開示のいくつかの実施形態による、ＩｏＴデバイスのブロックチェーントランザクションを妥当性検査するためのフローチャートである。
【発明を実施するための形態】
【０００６】
図面および以下の説明は、例示としてのみ好ましい実施形態に関する。以下の議論から、本明細書に開示される構造および方法の代替的実施形態は、主張されるものの原理から逸脱することなしに採用され得る実行可能な代替として容易に認識される点に留意されたい。
【０００７】
ここで、いくつかの実施形態を詳細に参照し、その例を添付の図面に示す。実行可能な場合はいつでも、類似または同様の参照番号が図面において使用され得、類似または同様の機能を示し得る点に留意されたい。これらの図面は、例示のみを目的として、開示されたシステム（または、方法）の実施形態を示している。当業者は、以下の説明から、本明細書に記載の原理から逸脱することなしに、本明細書に例示される構造および方法の代替的実施形態が採用され得ることを容易に認識するであろう。
【０００８】
構成の概要
分散型台帳の相互作用の分散型、トラストレスおよびステートレスの利点を維持しながら、分散型台帳の相互作用を処理するために、ＩｏＴデバイスなどの軽量デバイスによるリモートクライアントの使用を可能にする、開示されたシステム、方法、およびコンピュータ可読ストレージ媒体の一実施形態が開示される。この目的のために、クライアント（たとえば、以下に説明するような最小限の検証クライアント）が軽量デバイス内にインストールされ得る。クライアントが分散型台帳ネットワークと同期されておらず、モノのインターネット（ＩｏＴ）デバイスからトランザクション要求を受信する可能性がある。クライアントは、各ノードが分散型台帳ネットワークと同期されているノードのレジスタ（情報プロバイダおよび／またはバリデータとして作動する）を検索し、レジスタから情報プロバイダノードを選択する。クライアントは、分散型台帳ネットワーク上で情報（トランザクション情報、アカウントからの情報、スマートコントラクトなど）の要求を送信し、要求に対する応答であって、情報自体と妥当性検査指標（たとえば、署名されたブロックハッシュ、証明（たとえば、マークル証明）など）を含む応答を受信する。クライアントは、妥当性検査指標に基づいて応答が有効かどうかを決定し、応答が有効であるという決定に応答して、ＩｏＴデバイスに確認を送信する。分散型台帳の一例はブロックチェーンである。議論を容易にするために、本明細書に開示される実施形態は、ブロックチェーンの文脈にある。しかしながら、本明細書に開示される原理は、他の形態の電子分散型台帳に適用され得る点に留意されたい。本明細書に開示されるシステムおよび方法は、アプリケーションとしてＩｏＴを使用して説明されているが、同じメカニズムが、特にリソースが制限されているウェブアプリ、モバイルアプリ、および他のソフトウェアにも適用される。
【０００９】
システムアーキテクチャ
図１は、軽量デバイスによってブロックチェーン相互作用を促進するためのトラストレスステートレスリモートクライアントを実装するシステムの一実施形態を示している。システム１００は、ＩｏＴデバイス１１０、クライアント１３０、１つまたは複数のノード１４０、およびレジストリ１５０を含む。本システムはまた、ＩｏＴデバイス１１０（およびＩｏＴデバイス１１０によって実行されるクライアント１３０）が通過するネットワーク１２０、およびノード１４０を含む。１つのＩｏＴデバイス１１０のみが示されているが、これは単に便宜のためであり、任意の数のＩｏＴデバイスがシステム１００内にあり得る。さらに、「ＩｏＴデバイス」という用語の使用も便宜のために使用されており、本明細書に記載されるような任意の軽量デバイスまたはアプリケーションは、ＩｏＴデバイスまたはＩｏＴデバイス１１０という用語が言及されている場合はいつでも使用され得る。上述のように、ＩｏＴという用語は「モノのインターネット」の略であり、従来はインターネットに接続されていなかったデバイスを含む、インターネット対応のデバイスを指すために使用される分野の用語である（たとえば、インターネット接続を備えた自転車ロックなど）。ＩｏＴデバイスは、インターネットに直接接続されていない場合があり、インターネットに間接的にアクセスするように構成されている場合（たとえば、インターネットに直接接続されている別のデバイスとの短距離通信を介して）、依然としてＩｏＴデバイスであり得る。従来のコンピューティングデバイスとは異なり、ＩｏＴデバイス（および、一般的に軽量デバイス）は通常、処理能力、メモリ、ストレージ容量、および接続帯域幅を含む、処理リソースおよび能力が非常に限られている。したがって、それらの機能的能力はかなり制限されている。
【００１０】
ある実施形態では、ＩｏＴデバイス１１０は、ＩｏＴデバイス１１０が、ピアツーピアブロックチェーンネットワークのメンバーとしてブロックチェーン相互作用を実行し、完全に検証するために（上述のような）ローカルのフルまたは軽量クライアントを実行することを妨げる、上述のような制約を有する軽量デバイスである。本明細書で使用されるブロックチェーン相互作用という用語は、一般的なブロックチェーン情報の獲得、アカウントとの相互作用、またはブロックチェーンスマートコントラクトの使用によって記念されるブロックチェーントランザクションを指す場合がある。ブロックチェーン相互作用が処理される方法は、図３に関して以下でさらに詳細に説明される。ネットワークに同期されることによってブロックチェーン相互作用を完全に処理することができるＩｏＴデバイス１１０上のローカルのフルまたは軽量クライアントの欠如を考えると、ＩｏＴデバイス１１０のクライアント１３０は、ブロックチェーン相互作用を実行するためにネットワーク１２０を通じて要求を送信する。クライアント１３０は、ブロックチェーンネットワークと同期されていないクライアントである。ネットワーク１２０は、図２に関して以下でさらに詳細に説明される。
【００１１】
クライアント１３０は、トランザクションに関するノードからの応答を妥当性検査する。応答を取得するために、クライアント１３０は、要求を処理するためにノード１４０のノードを選択し、ノード１４０は、ブロックチェーンネットワークと同期される。選択されたノードが要求を処理する方法は、図３および図４に関して以下でさらに詳細に説明される。以下でさらに詳細に説明するように、ノードは、相互作用を処理するときに、ノード１４０の他のノードからのさらなる妥当性検査を要求し得る。
【００１２】
クライアント１３０は、ＩｏＴデバイス１１０のストレージからノード１４０のリストを検索することによって、ノード１４０のどれがブロックチェーン相互作用を処理するかを選択し得、そこからクライアント１３０は、ランダムまたは疑似ランダムにノードを選択し得る。最初に、クライアント１３０は、デフォルトのノードのセットに接触するように構成され得、デフォルトのノードのセットのノードから、ノードの最新のレジスタを要求し得る。ノードは、レジストリ１５０からノード１４０の最新のレジスタを検索し、最新のレジスタをクライアント１３０に送信し得る。レジストリ１５０は、ノード１４０をカタログ化するブロックチェーン上のスマートコントラクトである。ノード１４０は、レジストリ１５０にサブスクライブする要求をレジストリ１５０に送信するノード１４０に基づいて、レジストリ１５０内にリストされ得る。クライアント１３０がノード１４０のどれがブロックチェーン相互作用を処理するかを選択する方法は、図３および図４に関して以下でさらに詳細に説明される。３つのノード、ノード１４０Ａ、ノード１４０Ｂ、およびノード１４０Ｃは、ノード１４０を形成するものとして示されているが、任意の数のノードがノード１４０を形成し得る。
【００１３】
コンピューティングマシンアーキテクチャ
図２は、マシン可読媒体から命令を読み取り、それらをプロセッサ（または、コントローラ）において実行することができる例示的なマシンの構成要素を示すブロック図である。具体的には、図２は、本明細書で論じられる方法論のうちの任意の１つまたは複数をマシンに実行させるためのプログラムコード（たとえば、ソフトウェア）が実行され得るコンピュータシステム２００の例示的な形態のマシンの概略図を示している。コンピュータシステム２００の構成要素のうちのいくつかまたはすべては、本明細書で論じられるように、ＩｏＴデバイス１１０あるいは他の軽量デバイスまたはアプリケーションのコンピュータシステムを代表し得る。しかしながら、前述のように、そのような構成要素は、より堅牢なコンピューティングシステムに関して限られた容量しか提供しない場合がある。コンピュータシステム２００の構成要素のうちのいくつかまたはすべてはまた、クライアント１３０を実行するコンピューティングデバイス、レジストリ１５０をホストするコンピューティングデバイス、およびノード１４０のいずれかを実行するコンピューティングデバイスを表し得る。プログラムコードは、１つまたは複数のプロセッサ２０２によって実行可能な命令２２４から構成され得る。ＩｏＴデバイス１１０および他の軽量デバイスは、単純なプロセッサまたはコントローラを有し得るが、クライアントデバイス１３０は、スマートフォンまたはパーソナルコンピュータ（ＰＣ）にしばしば見られる従来のコンピュータプロセッサを有するメイ点に留意されたい。代替的実施形態では、マシンは、スタンドアロンデバイスとして動作するか、または他のマシンに接続（たとえば、ネットワーク化）され得る。ネットワーク展開において、マシンは、サーバ−クライアントネットワーク環境においてサーバマシンまたはクライアントマシンの容量で動作してもよく、あるいはピアツーピア（または、分散）ネットワーク環境においてピアマシンとして動作してもよい。
【００１４】
クライアント１３０またはレジストリ１５０を実行するシステムなどの複雑なコンピューティングシステムの場合、マシンは、たとえば、サーバコンピュータ、クライアントコンピュータ、パーソナルコンピュータ（ＰＣ）、タブレットＰＣ、セットトップボックス（ＳＴＢ）、携帯情報端末（ＰＤＡ）、セルラー電話、スマートフォン、ウェブアプライアンス、ネットワークルータ、スイッチ、またはブリッジであり得る。ＩｏＴデバイス（または、他の軽量デバイス）は、ドアベル、サーモスタット、冷蔵庫、自転車ロックなどであり得る。いずれのマシンも、そのマシンによって実行されるべきアクションを指定する命令２２４（順次またはその他）を実行することが可能であり得る。さらに、単一のマシンのみが示されているが、「マシン（ｍａｃｈｉｎｅ）」という用語はまた、本明細書で論じられる方法論のうちの任意の１つまたは複数を実行するために命令１２４を個別にまたは共同で実行するマシンの任意の集合を含むと解釈されるべきである。
【００１５】
例示的なコンピュータシステム２００は、バス２０８を介して互いに通信するように構成された、プロセッサ２０２（たとえば、中央処理装置（ＣＰＵ）、グラフィックス処理装置（ＧＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、１つまたは複数の特定用途向け集積回路（ＡＳＩＣ）、１つまたは複数の無線周波数集積回路（ＲＦＩＣ）、および／またはこれらの任意の組合せ）、メインメモリ２０４、およびスタティックメモリ２０６を含む。コンピュータシステム２００は、視覚的表示インターフェース２１０をさらに含み得る。ＩｏＴデバイス１１０などの軽量デバイスは、専用機能を実行する能力が限られている可能性があるため、上述のように、これらの構成要素のいくつかを除外し得る。ＩｏＴデバイス１１０のクライアント１３０は、最小限の検証クライアントであり得る。
【００１６】
本明細書で使用される最小限の検証クライアントという用語は、ピアツーピアネットワーク（たとえば、ブロックチェーンネットワーク）の一部ではないが、それにもかかわらず、分散型の方法で（たとえば、ＲＰＣインターフェースを使用して）、ブロックチェーンまたはＤＬＴの情報を獲得するように構成されているブロックチェーンまたはＤＬＴクライアントを指す場合がある。最小限の検証クライアントは、ブロックチェーンの状態に関する情報を記憶しない。最小限の検証クライアントは、ブロックチェーンまたはＤＬＴからのデータを（１）検証する、および（２）妥当性検査するように構成されている。
【００１７】
検証を実行するために、最小限の検証クライアントは、（たとえば、この情報のマークル証明を使用して）返された情報が配信されたブロックに属していることを評価および確認するためにクライアントが使用できる付随する証明などの妥当性検査指標を使用する。妥当性検査を実行するために、最小限の検証クライアントは、他のノード（バリデータ）（たとえば、ノード１４０）からこの情報を要求することによって、配信されたブロックがブロックチェーンまたはＤＬＴに属することをそれ自体で妥当性検査するように構成される。これらの特性により、最小限の検証クライアントはブロックチェーンに依存せず、複数のブロックチェーン、ＤＬＴ、およびそのような証明と妥当性検査情報を提供することができる他の任意のデータサービスと相互作用し得る。
【００１８】
視覚的インターフェースは、画面（または、ディスプレイ）上にユーザインターフェースを表示することを可能にするソフトウェアドライバを含み得る。視覚的インターフェースは、ユーザインターフェースを直接（たとえば、画面上に）または間接的に（たとえば、視覚的投影ユニットを介して）表面、窓などに表示し得る。議論を容易にするために、視覚的インターフェースは画面として説明され得る。視覚的インターフェース２１０は、タッチ対応画面を含み得るか、またはそれとインターフェースし得る。コンピュータシステム２００はまた、やはりバス２０８を介して通信するように構成された、英数字入力デバイス２１２（たとえば、キーボードまたはタッチスクリーンキーボード）、カーソル制御デバイス２１４（たとえば、マウス、トラックボール、ジョイスティック、モーションセンサ、または他のポインティング機器）、ストレージユニット２１６、信号生成デバイス２１８（たとえば、スピーカ）、およびネットワークインターフェースデバイス２２０を含み得る。
【００１９】
ストレージユニット２１６は、本明細書に記載の方法論または機能のうちの任意の１つまたは複数を具体化する命令２２４（たとえば、ソフトウェア）が記憶されているマシン可読媒体２２２を含む。命令２２４（たとえば、ソフトウェア）はまた、コンピュータシステム２００によるそれの実行中に、完全にまたは少なくとも部分的に、メインメモリ２０４内またはプロセッサ２０２内（たとえば、プロセッサのキャッシュメモリ内）に存在し得、メインメモリ２０４およびプロセッサ２０２はまた、マシン可読媒体を構成する。ＩｏＴデバイス１１０などの軽量デバイスの場合、ストレージは専用機能を実行するために必要なものに制限される場合がある。命令２２４（たとえば、ソフトウェア）は、ネットワークインターフェースデバイス２２０を介して、ネットワーク２２６（たとえば、インターネット、ローカルエリアネットワーク、短距離ネットワーク、または任意の他の通信ネットワークなどのブロードバンドネットワーク）を介して送信または受信され得る。
【００２０】
例示的な実施形態では、マシン可読媒体２２２は単一媒体であると示されているが、「マシン可読媒体（ｍａｃｈｉｎｅ−ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）」という用語は、命令（たとえば、命令２２４）を記憶することができる単一の媒体または複数の媒体（たとえば、集中型もしくは分散型データベース、または関連付けられるキャッシュおよびサーバ）を含むと解釈されるべきである。「マシン可読媒体」という用語はまた、マシンによって実行するための命令（たとえば、命令２２４）を記憶することができ、マシンに本明細書に開示される方法論のうちの任意の１つまたは複数を実行させる任意の媒体を含むと解釈されるべきである。「マシン可読媒体」という用語は、固体メモリ、光学媒体、および磁気媒体の形態のデータリポジトリを含むが、これらに限定されない。
【００２１】
例示的なブロックチェーン相互作用処理
図３は、本開示のいくつかの例示的実施形態による、最小限の検証クライアントによるブロックチェーントランザクションを妥当性検査するためのデータフロー図である。図示された通信は、示されたマシン（たとえば、ＩｏＴデバイス１１０および１つまたは複数のノード１４０）との間のネットワーク（たとえば、ネットワーク１２０）を通じて発生し得る。図３に示されるように、クライアント（たとえば、クライアント１３０）は、ノードリストにアクセスし（たとえば、ノードリスト要求にアクセスすること（３０１）を介して、（たとえば、ＩｏＴデバイス１１０の）メモリにノードリストを返させる（３０２）。要求３０１は、ブロックチェーン相互作用を処理する要求を受信したＩｏＴデバイス１１０に基づいてトリガされ得る。たとえば、ＩｏＴデバイス１１０は、公衆によって（たとえば、小額の料金の支払いと引き換えに）アクセスされ得る（または、そのデータセットがアクセスされ得る）大気質を記述する環境センサであり得る。誰かがデータを要求していることを検出することに応答して、ＩｏＴデバイス１１０のクライアント１３０は、ブロックチェーン相互作用を処理するためのノードリストを検索するようにトリガされ得る。
【００２２】
別の例として、ＩｏＴデバイス１１０は、自転車の共有を可能にするスマート自転車ロックであり得る。自転車ロックの制御ユニットの計算能力は、ロックの制御に制限される場合があり、したがって、エネルギーを節約するために必要な場合にのみ実行される。そのようなロックは、自転車ロックのロックを解除するためのブロックチェーン相互作用を処理する能力を持たず、したがって、たとえば、ロック上で実行される最小限の検証クライアントを使用してトランザクション要求３０１を送信し、これにより、インターネット接続で限られた帯域幅しか使用できない場合でも、クライアント１３０を介して必要な時間にブロックチェーンへの安全な接続が確立されることができる。
【００２３】
クライアント１３０は、トランザクション要求を処理するためにノードのリストからノード１４０のノードを選択し続ける。選択は、本質的にランダムまたは疑似ランダムである。ノードのリストからノード（たとえば、ノード１４０Ｂ）を選択した後、クライアント１３０は、クライアント１３０が最後に選択したノード、またはいくつかのノードをチェックし得る。選択されたノードが最後に選択されたノード、または最近選択されたノード（たとえば、選択された最後の１０個のノードのうちの１つ）と一致する場合、クライアント１３０は選択されたノードの使用を控え、代わりに別のノードを選択する。ある実施形態では、クライアント１３０は、トランザクション要求を処理するために、ノードのリストからノード１４０の複数のノードを選択する。たとえば、ノードからの無効な応答の取得をヘッジするために、クライアント１３０は複数のノードを選択し得、応答が一致するかどうかを決定するためにそれらのノードからの複数の応答を評価し得る。したがって、ノード１４０Ｂの選択のみが図３に示されているが、並列処理を実行する複数のノード（ノードＡおよびＣのいずれかを含む）は、本開示の範囲内である。
【００２４】
ノード１４０のノードを選択すると、クライアント１３０は、要求（たとえば、リモートプロシージャコール（ＲＰＣ）要求、ＪＳＯＮ−ＲＰＣ要求、または任意の他の構造要求）をそのノードに送信する。たとえば、図３に示されるように、クライアント１３０はノード１４０Ｂを選択し、ＲＰＣ要求３０３をノード１４０Ｂに送信する。ある実施形態では、ＲＰＣ要求３０３を受信すると、ノード１４０Ｂは、ブロックチェーントランザクションを処理し（たとえば、トランザクションを反映するようにブロックチェーンを更新することによって）、ＲＰＣ応答３０９をクライアント１３０に送信する。ブロックチェーントランザクション要求は、トランザクションを検証するためのＲＰＣ要求として本明細書で一般的に説明されているが、本明細書で説明するブロックチェーントランザクション要求は、スマートコントラクトにおける関数呼出しの検証結果を返す要求、あるいはアカウントの残高またはブロックチェーンに記憶されている任意の他のタイプのデータの単純な要求など、他の目的のためでもあり得る。クライアント１３０は、ＲＰＣ応答３０９を受信し、ＲＰＣ応答３０９を検証する。クライアント１３０は、ＲＰＣ応答３０９の内容に基づいて、ＲＰＣ応答３０９をそれ自体で検証することができる。ある実施形態では、ＲＰＣ応答３０９は証明を含む。クライアント１３０は、結果（「結果の証明」）を取得するために証明を解決し、その結果をＲＰＣ応答３０９において示される結果と比較する。クライアント１３０は、証明の結果がＲＰＣ応答３０９において示される結果と一致するという決定に応答して、ＲＰＣ応答３０９が有効な結果を含むと決定し、したがって、検証時にトランザクションを妥当性検査する。ある実施形態では、ＲＰＣ応答３０９は、ブロックヘッダを含む。クライアント１３０は、ブロックチェーン台帳を参照し、トランザクションを妥当性検査するために、ブロックヘッダを使用する。
【００２５】
ＲＰＣ応答３０９はまた、ノード１４０の１つまたは複数の他のノードからの、証明の結果を比較するために使用されることができる署名されたブロックハッシュまたは任意の他の検証されたデータなどの署名を含み得る。たとえば、ＲＰＣ要求３０３は、有効な応答を受信する可能性を改善するために、ノード１４０Ｂがノード１４０の他の１つまたは複数のノードでその結果を妥当性検査することを要求し得る。したがって、ＲＰＣ応答３０９をクライアント１３０に送信する前に、ノード１４０Ｂは、ノード１４０Ａからの署名を要求し得（３０４）、および／またはノード１４０Ｃからの署名の要求を送信し得る（３０５）。ノード１４０Ｃは、ＲＰＣ応答３０９に含めるために、戻り署名（３０６）をノード１４０Ｂに送信し得る。同様に、ノード１４０Ａは、ＲＰＣ応答３０９に含めるために、戻り署名（３０７）をノード１４０Ｂに送信し得る。ノード１４０Ａおよび１４０Ｃからの戻り署名は、署名されたブロックハッシュ、またはクライアント１３０が妥当性検査指標を確認するために必要な任意の他のデータ（たとえば、証明データ）を含み得る。ある実施形態では、戻り署名を受信すると、ノード１４０Ｂは、署名されたブロックハッシュが有効であるかどうかを妥当性検査する。署名されたブロックハッシュ（たとえば、３０６または３０７において受信されたもの）が無効である場合、ノード１４０Ｂは不正をレジストリ１５０に報告し得（３０８）、レジストリ１５０は問題のあるノードをレジストリ１５０から削除するなどの是正措置を講じ得る（上と下で説明されているように）。
【００２６】
クライアント１３０は、ＲＰＣ応答を検証し得（３１０）、検証が成功した場合、クライアント１３０は、ＲＰＣ応答内で受信されたノード１４０Ｂからの結果を妥当性検査し得る（たとえば、上記の証明の解決に基づいて、ブロックヘッダを利用して、あるいは１つまたは複数の追加ノードからの署名されたブロックハッシュから派生した１つまたは複数のブロックヘッダに基づいて）。ノード１４０Ｂからの結果の妥当性検査に応答して、クライアントデバイス１３０は、トランザクションの正常な処理を確認し得、結果として生じるアクション（たとえば、スマート自転車ロックのロック解除、または要求しているユーザへのセンサ情報の送信）を行うようにＩｏＴデバイス１１０に信号を送ることができる。ＲＰＣ応答が無効であるという決定に応答して、クライアント１３０は不正をレジストリ１５０に報告し得（３１１）（たとえば、ノード１４０Ｂに報告するためにノード１４０Ａに要求を送信することによって）、レジストリ１５０は是正措置（たとえば、レジストリからのノードＢの削除）をとり得る。
【００２７】
ウォッチドッグの実装形態
開示された実施形態は、ノード１４０のノードが不正にまたは悪意を持って作動するのを防ぐウォッチドッグ実装形態を有益に可能にする。ウォッチドッグ実装形態は、不正または悪意のある活動などの不正行為がレジストリ１５０に報告されたときに、ノード１４０のノードをレジストリ１５０から削除する。ある実施形態では、不正行為は、ノード自体（仮想ウォッチドッグ）によって、または他のノードの行為をチェックするために実行されている特別なノード（ウォッチドッグノード）によって検出および報告される。たとえば、ＲＰＣ応答３０９の受信に応答して、クライアント１３０は、（たとえば、証明またはブロックヘッダに基づいて）ノード１４０Ｂから受信された結果が不正確であると決定し得る。ウォッチドッグとして作動するノードは、不正行為を報告するために、代わりに、通信をレジストリ１５０に送信し得る（３１０−２）。レジストリ１５０は、将来のトランザクションを処理するためにクライアント１３０（または、任意の他のクライアント）によって使用されるノード１４０のリストからノード１４０Ｂを応答的に削除し得る。
【００２８】
あるいは、クライアント１３０は、（ノードを介して）レジストリに不正を報告する（３１１）ことを控えながら、ノード１４０Ｂをブラックリストに載せることができる。たとえば、クライアント１３０は、「使用しない」フラグに関連してノード１４０Ｂのアイデンティティをデータ構造に記憶し得、ＲＰＣ要求３０３を処理するためにノードが選択されると、クライアント１３０は、「使用しない」フラグが存在するかどうかを決定するために、それらのノードをブラックリストに対してダブルチェックし、これは別のノードの選択を促す。さらに別の代替案として、クライアント１３０は、ノード１４０Ｂから受信した結果が不正確であると決定すると、不正確な結果を文書化し得る（たとえば、ノード１４０Ｂからの不正確な結果に対応するカウンタをインクリメントすることによって、あるいは、ノード１４０Ｂからの不正確な結果の頻度および／または最新性を反映する何らかの他の関数を操作することによって）。クライアントは、ノード１４０Ｂからの不正確な結果のしきい値量またはしきい値頻度が検出された場合、不正をブラックリストに載せるか、または報告し得る。このそれほど厳しくない実装形態が使用され得る理由は、ノードが意図せずに一貫性のない応答を提供する可能性があるためである（たとえば、ノードが現在のブロックとまだ同期していない、またはマイクロフォーク上で実行されているシナリオにおいて）。
【００２９】
さらに、クライアント１３０と同様に、ノード１４０自体は、ブラックリスト（または、同様のもの）を維持し得る。たとえば、ノード１４０Ｂは、「使用しない」フラグに関連してノード１４０Ａのアイデンティティをデータ構造に記憶し得、結果に署名するためにノードが選択されると、ノード１４０Ｂは、「使用しない」フラグが存在するかどうかを決定するためにそれらのノードをブラックリストに対してダブルチェックし、これは別のノードの選択を促す。さらに別の代替案として、ノード１４０Ｂ（または、任意の他のノード）は、たとえば、ノード１４０Ｃから受信した署名が不正確であると決定すると、不正確な結果を文書化し得る（たとえば、ノード１４０Ｃからの不正確な結果に対応するカウンタをインクリメントすることによって、あるいは、ノード１４０Ｃからの不正確な結果の頻度および／または最新性を反映する何らかの他の関数を操作することによって）。ノードは、ノード１４０Ｃからの不正確な結果のしきい値量またはしきい値頻度が検出された場合、不正をブラックリストに載せるか、または報告し得る。このそれほど厳しくない実装形態が使用され得る理由は、ノードが意図せずに一貫性のない応答を提供する可能性があるためである（たとえば、ノードが現在のブロックとまだ同期していない、またはマイクロフォーク上で実行されているシナリオにおいて）。
【００３０】
ある実施形態では、ノード１４０のノードのである不正行為は、別のノードによって報告される。たとえば、上述のように、ノード１４０Ｂは、要求をノード１４０Ａに送信し得（３０４）、ノード１４０Ａは、応答的に署名をノード１４０Ｂに返し得る（３０７）。署名が無効であるという決定に応答して、ノード１４０Ｂは、通信をレジストリ１５０に送信し得る（３０８）。レジストリ１５０は、クライアントによる要求を妥当性検査するために選択されることができるノード１４０のリストからノード１４０Ａへの参照を応答的に削除してもよく、あるいは上述したものと同様の他の是正措置をとってもよい（たとえば、ノード１４０Ａに対応するカウンタをインクリメントし、カウンタがしきい値を超える場合はノード１４０Ａを削除する）。それがクライアント１３０であろうと、不正行為を報告するノード１４０のノードであろうと、レジストリ１５０は、ノードのリストからノードを削除することに応答して、ノードの更新されたリストをクライアント１３０（および、任意の他のクライアント）に伝播し得る。
【００３１】
クライアントとノードによるインセンティブ付け行為
ある実施形態では、ノードは、レジストリ１５０にリストされる資格を得る前に、ステークを預けることを要求され得る。ノードは、要求が適切に妥当性検査されたときに、要求が妥当性検査されたクライアントから報酬を受け取ることができる。しかしながら、ノードは、将来の要求を妥当性検査する資格がなくなるだけでなく（たとえば、上述のようにレジストリ１５０から削除することによって）、預け入れられたステークを没収することによって、不正に要求を妥当性検査するふりをするとペナルティを科される場合がある。
【００３２】
同様に、クライアントは、正しい応答を受信した後、ノード１４０への報酬の送信を拒否し得る。応答的に、ノードがそのクライアントからの追加の要求を処理することを防ぐために、ノードはクライアントをブラックリストに載せるかダウングレードし得る。ノードは他のノードにも不正行為を通知する可能性があるため、クライアントが将来のトランザクションを処理するのは現実的ではない。
【００３３】
ノード１４０による良好な行為を促進するための追加または代替的インセンティブとして、クライアントは、様々なパラメータに基づいてノードに重みを付けることができ、良好な行為に対応するスコアに基づいてトランザクションを処理するために、レジストリ１５０にリストされたノードのランダムな選択にバイアスをかけるために、これらの重み付けを使用し得る。たとえば、重み付けは、所与のノードによる預金額に基づき得る（たとえば、ノードがより多くを失う場合、ノードが不正行為をする可能性が低いため）。重み付けは、追加的または代替的に、過去のパフォーマンスに基づく場合があり、ノードによってクライアントに配信される正しい結果ごとにスコアが増加し（たとえば、小さい単位で）、またノードによってクライアントに配信される不正確な結果ごとにスコアが減少する（たとえば、小さい単位よりも大きな大きい単位で）。
【００３４】
クライアント（たとえば、クライアント１３０および他のクライアント）は、グループ化され、ノード１４０の１つまたは複数のノードに割り当てられ得る。そのようなグループ化を形成するために、各クライアントは、関連付けられるノードからの承認を提供し得る。これにより、クライアント（たとえば、クライアント１３０）から要求を受信するノードは、ノード１４０の他のノードを選択する際に（たとえば、署名されたブロックハッシュを提供するために）、そのクライアントによって決定およびカタログ化された重みを基準として使用することが可能になる。これは、ノード１４０がそのクライアントの応答の品質を保証するために正確かつ高速な応答を配信するための強力なインセンティブ付けを形成する。
【００３５】
実例となるブロックチェーン相互作用処理
図４は、本開示のいくつかの実施形態による、ＩｏＴデバイスからのブロックチェーントランザクションを検証するためのフローチャートである。プロセス４００は、クライアント（たとえば、クライアント１３０）がトランザクション要求（たとえば、トランザクション要求３０１）を受信すること（４０２）から始まり、クライアントは、ＩｏＴデバイス（たとえば、ＩｏＴデバイス１１０）によって実行される。プロセス４００は、クライアントが妥当性検査ノードのレジスタ（たとえば、クライアント１３０へのローカルレジスタに記憶され、要素３０１および３０２を通じてアクセスされるノード１４０のリスト）にアクセスすること（４０４）に続く。クライアントは、レジスタからノード（たとえば、ノード１４０Ｂ）を選択し続ける（４０６）（たとえば、ノード１４０Ｂを生成するランダムまたは加重ランダムプロセスに基づいて）。
【００３６】
クライアントは、ブロックチェーンネットワーク上でトランザクション要求を処理するために、妥当性検査要求（たとえば、ノード１４０Ｂに送信されるＲＰＣ要求３０３）を送信する（４０８）。クライアントは、（たとえば、ノード１４０Ｂから）要求への応答（たとえば、ＲＰＣ応答３０９）であって、妥当性検査指標を含む応答（たとえば、証明、ブロックヘッダ、ノード１４０Ａまたはノード１４０Ｃからの署名されたブロックハッシュなど）を受信する（４１０）。クライアントは、妥当性検査指標に基づいて（たとえば、証明を解くことによって）、応答が有効であるかどうかを検証する（４１２）。クライアントは、応答が有効であるという決定に応答して、トランザクション要求に対応するトランザクションを妥当性検査する（たとえば、スマート自転車ロックのロックを解除するか、要求されたセンサデータを送信する）ようにＩｏＴデバイスに指示する（４１４）。
【００３７】
追加の構成に関する考慮事項
本明細書全体を通して、複数のインスタンスは、単一のインスタンスとして記述された構成要素、動作、または構造を実装し得る。１つまたは複数の方法の個々の動作は、別個の動作として図示および説明されているが、個々の動作のうちの１つまたは複数は同時に実行されてよく、動作を図示された順序で実行する必要はない。例示的な構成において別個の構成要素として提示されている構造および機能は、組み合わせた構造または構成要素として実装され得る。同様に、単一の構成要素として提示されている構造および機能は、別個の構成要素として実装され得る。これらおよび他の変形、修正、追加、および改善は、本明細書の主題の範囲内にある。
【００３８】
特定の実施形態は、ロジックまたはいくつかの構成要素、モジュール、またはメカニズムを含むものとして本明細書に記載されている。モジュールは、ソフトウェアモジュール（たとえば、マシン可読媒体上で、または送信信号において具体化されたコード）またはハードウェアモジュールのいずれかを構成し得る。ハードウェアモジュールは、特定の動作を実行することができる有形のユニットであり、特定の方法で構成または配置され得る。例示的な実施形態では、１つまたは複数のコンピュータシステム（たとえば、スタンドアロン、クライアント、またはサーバコンピュータシステム）、あるいはコンピュータシステムの１つまたは複数のハードウェアモジュール（たとえば、プロセッサまたはプロセッサのグループ）は、本明細書に記載される特定の動作を実行するように動作するハードウェアモジュールとして、ソフトウェア（たとえば、アプリケーションまたはアプリケーション部分）によって構成され得る。
【００３９】
様々な実施形態において、ハードウェアモジュールは、機械的または電子的に実装され得る。たとえば、ハードウェアモジュール（たとえば、コンピュータシステム２００によって表される軽量デバイスまたは非軽量デバイスの）は、特定の動作を実行するために恒久的に構成された（たとえば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または特定用途向け集積回路（ＡＳＩＣ）などの専用プロセッサとして）専用の回路またはロジックを備え得る。ハードウェアモジュールはまた、特定の動作を実行するためにソフトウェアによって一時的に構成されるプログラム可能なロジックまたは回路（たとえば、汎用プロセッサまたは他のプログラム可能なプロセッサ内に包含される）を備え得る。ハードウェアモジュールを機械的に、専用の恒久的に構成された回路に、または一時的に構成された回路（たとえば、ソフトウェアによって構成された）に実装する決定は、コストおよび時間の考慮によって行われ得ることが理解されよう。
【００４０】
したがって、「ハードウェアモジュール（ｈａｒｄｗａｒｅ  ｍｏｄｕｌｅ）」という用語は、特定の方法で動作するように、または本明細書で説明する特定の動作を実行するために物理的に構築された、恒久的に構成された（たとえば、ハードワイヤード）、または一時的に構成された（たとえば、プログラムされた）エンティティである有形のエンティティを包含すると理解されるべきである。本明細書で使用される場合、「ハードウェア実装モジュール（ｈａｒｄｗａｒｅ−ｉｍｐｌｅｍｅｎｔｅｄ  ｍｏｄｕｌｅ）」は、ハードウェアモジュールを指す。ハードウェアモジュールが一時的に構成される（たとえば、プログラムされる）実施形態を考慮すると、ハードウェアモジュールの各々は、任意の一時点において構成またはインスタンス化される必要はない。たとえば、ハードウェアモジュールがソフトウェアを使用して構成された汎用プロセッサを備える場合、汎用プロセッサは、異なる時間にそれぞれの異なるハードウェアモジュールとして構成され得る。したがって、ソフトウェアは、たとえば、ある時点で特定のハードウェアモジュールを構成し、異なる時点で異なるハードウェアモジュールを構成するようにプロセッサを構成し得る。
【００４１】
ハードウェアモジュールは、他のハードウェアモジュールに情報を提供したり、他のハードウェアモジュールから情報を受信したりすることができる。したがって、説明されたハードウェアモジュールは、通信可能に結合されていると見なされ得る。そのようなハードウェアモジュールの複数が同時に存在する場合、通信は、ハードウェアモジュールを接続する信号送信（たとえば、適切な回路およびバスを介して）を通じて達成され得る。複数のハードウェアモジュールが異なる時間に構成またはインスタンス化される実施形態では、そのようなハードウェアモジュール間の通信は、たとえば、複数のハードウェアモジュールがアクセスできるメモリ構造内の情報の記憶および検索を通じて達成され得る。たとえば、１つのハードウェアモジュールが動作を実行し、その動作の出力を、通信可能に結合されているメモリデバイスに記憶し得る。その後、さらなるハードウェアモジュールが、記憶された出力を検索および処理するためにメモリデバイスにアクセスし得る。ハードウェアモジュールは、入力デバイスまたは出力デバイスとの通信を開始し得、リソース上で動作（たとえば、情報の収集）することができる。
【００４２】
本明細書に記載の例示的な方法の様々な動作は、少なくとも部分的に、関連する動作を実行するように一時的に構成された（たとえば、ソフトウェアによって）または恒久的に構成された１つまたは複数のプロセッサによって実行され得る。一時的であろうと恒久的に構成されていようと、そのようなプロセッサは、１つまたは複数の動作または機能を実行するように動作するプロセッサ実装モジュールを構成し得る。本明細書で言及されるモジュールは、いくつかの例示的な実施形態では、プロセッサ実装モジュールを備え得る。
【００４３】
同様に、本明細書に記載の方法は、少なくとも部分的にプロセッサで実装され得る。たとえば、方法の動作のうちの少なくともいくつかは、１つまたは複数のプロセッサあるいはプロセッサ実装ハードウェアモジュールによって実行され得る。動作のうちのいくつかの動作のパフォーマンスは、１台のマシン内に存在するだけでなく、複数のマシンに展開される１つまたは複数のプロセッサの間で分散され得る。いくつかの例示的な実施形態では、１つまたは複数のプロセッサは、単一の場所に配置され得（たとえば、家庭環境内、オフィス環境内、またはサーバファームとして）、他の実施形態では、プロセッサは、いくつかの場所に分散され得る。
【００４４】
１つまたは複数のプロセッサは、「クラウドコンピューティング」環境において、または「サービスとしてのソフトウェア」（ＳａａＳ）として関連する動作のパフォーマンスをサポートするように動作する場合もある。たとえば、動作のうちの少なくともいくつかは、（プロセッサを含むマシンの例として）コンピュータのグループによって実行され得、これらの動作は、ネットワーク（たとえば、インターネット）および１つまたは複数の適切なインターフェース（たとえば、アプリケーションプログラムインターフェース（ＡＰＩ））を介してアクセス可能である。
【００４５】
特定の動作のパフォーマンスは、１台のマシン内に存在するだけでなく、複数のマシンに展開される１つまたは複数のプロセッサの間で分散され得る。いくつかの例示的な実施形態では、１つまたは複数のプロセッサ、あるいはプロセッサ実装モジュールは、単一の地理的位置（たとえば、家庭環境、オフィス環境、またはサーバファーム内）に配置され得る。他の例示的な実施形態では、１つまたは複数のプロセッサ、あるいはプロセッサ実装モジュールは、いくつかの地理的位置に分散され得る。
【００４６】
本明細書の一部は、マシンメモリ（たとえば、コンピュータメモリ）内にビットまたはバイナリデジタル信号として記憶されたデータに対するアルゴリズムまたは動作の記号表現の観点から提示されている。これらのアルゴリズムまたは記号表現は、データ処理技術の当業者によって、彼らの仕事の実体を他の当業者に伝えるために使用される技法の例である。本明細書で使用される場合、「アルゴリズム」は、所望の結果につながる自己無撞着な一連の動作または同様の処理である。この文脈では、アルゴリズムと動作は物理量の物理的操作を含む。通常、必ずしもそうとは限らないが、そのような量は、マシンによって記憶、アクセス、転送、結合、比較、または他の方法で操作することができる電気、磁気、または光信号の形をとり得る。主に一般的な使用法の理由から、「データ（ｄａｔａ）」、「コンテンツ（ｃｏｎｔｅｎｔ）」、「ビット（ｂｉｔｓ）」、「値（ｖａｌｕｅｓ）」、「要素（ｅｌｅｍｅｎｔｓ）」、「記号（ｓｙｍｂｏｌｓ）」、「文字（ｃｈａｒａｃｔｅｒｓ）」、「用語（ｔｅｒｍｓ）」、「数字（ｎｕｍｂｅｒｓ）」、「数値（ｎｕｍｅｒａｌｓ）」などの単語を使用してそのような信号を参照すると便利な場合がある。しかしながら、これらの単語は単に便利なラベルであり、適切な物理量に関連付けられる必要がある。
【００４７】
特に明記しない限り、「処理（ｐｒｏｃｅｓｓｉｎｇ）」、「コンピューティング（ｃｏｍｐｕｔｉｎｇ）」、「計算（ｃａｌｃｕｌａｔｉｎｇ）」、「決定（ｄｅｔｅｒｍｉｎｉｎｇ）」、「提示（ｐｒｅｓｅｎｔｉｎｇ）」、「表示（ｄｉｓｐｌａｙｉｎｇ）」などの単語を使用する本明細書の説明は、１つもしくは複数のメモリ（たとえば、揮発性メモリ、不揮発性メモリ、もしくはそれらの組合せ）、レジスタ、または情報を受信、記憶、送信もしくは表示する他のマシン構成要素内の物理的（たとえば、電子的、磁気的、または光学的）量として表されるデータを操作または転送するマシン（たとえば、コンピュータ）のアクションまたはプロセスを指す場合がある。
【００４８】
本明細書で使用される場合、「一実施形態（ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ）」または「ある実施形態（ａｎ  ｅｍｂｏｄｉｍｅｎｔ）」への言及は、実施形態に関連して説明される特定の要素、特徴、構造、または特性が少なくとも１つの実施形態に含まれることを意味する。本明細書の様々な場所における「一実施形態では（ｉｎ  ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ）」という句の出現は、必ずしもすべてが同じ実施形態を指すとは限らない。
【００４９】
いくつかの実施形態は、それらの派生物とともに「結合された（ｃｏｕｐｌｅｄ）」および「接続された（ｃｏｎｎｅｃｔｅｄ）」という表現を使用して説明され得る。これらの用語は、相互の同義語として意図されたものではないことが理解されるべきである。たとえば、いくつかの実施形態は、２つ以上の要素が互いに直接物理的または電気的に接触していることを示すために「接続された」という用語を使用して説明され得る。別の例では、いくつかの実施形態は、２つ以上の要素が直接物理的または電気的に接触していることを示すために「結合された」という用語を使用して説明され得る。しかしながら、「結合された」という用語は、２つ以上の要素が互いに直接接触していないが、依然として互いに協力または相互作用していることを意味する場合もある。実施形態は、この文脈に限定されない。
【００５０】
本明細書で使用される場合、「備える（ｃｏｍｐｒｉｓｅｓ）」、「備えている（ｃｏｍｐｒｉｓｉｎｇ）」、「含む（ｉｎｃｌｕｄｅｓ）」、「含んでいる（ｉｎｃｌｕｄｉｎｇ）」、「有する（ｈａｓ）」、「有している（ｈａｖｉｎｇ）」という用語、またはそれらの任意の他の変形は、非排他的な包含をカバーすることを意図している。たとえば、要素のリストを備えるプロセス、方法、物品、または装置は、必ずしもそれらの要素のみに限定されるわけではなく、そのようなプロセス、方法、物品、または装置に明示的にリストされていない、または固有ではない他の要素を含み得る。さらに、明示的に反対の記載がない限り、「または（ｏｒ）」は包括的論理和を指し、排他的論理和を指さない。たとえば、条件ＡまたはＢは、Ａが真（または、存在する）およびＢが偽（または、存在しない）、Ａが偽（または、存在しない）およびＢが真（または、存在する）、ならびにＡとＢの両方が真（または、存在する）のいずれかによって満たされる。
【００５１】
さらに、「ａ」または「ａｎ」の使用は、本明細書の実施形態の要素および構成要素を説明するために採用される。これは、単に便宜上、そして本発明の一般的な意味を与えるために行われる。この説明は、１つまたは少なくとも１つを含むように読まれるべきであり、別の意味であることが明らかでない限り、単数形には複数形も含まれる。
【００５２】
本開示を読むと、当業者は、本明細書に開示された原理を通じて、ＩｏＴデバイスのブロックチェーン相互作用を処理するためのシステムおよびプロセスのためのさらに追加の代替の構造的および機能的設計を理解するであろう。したがって、特定の実施形態および用途が例示および説明されてきたが、開示された実施形態は、本明細書に開示された正確な構造および構成要素に限定されないことが理解されるべきである。当業者に明らかである様々な修正、変更、および変形は、添付の特許請求の範囲において定義される趣旨および範囲から逸脱することなしに、本明細書に開示される方法および装置の配置、動作、および詳細において行われ得る。
【図１】
2021513300.tif 000003
【図２】
2021513300.tif 000004
【図３】
2021513300.tif 000005
【図４】
2021513300.tif 000006
【手続補正書】
【提出日】令和3年1月13日(2021.1.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ブロックチェーンネットワークと同期されていないクライアントにおいて、トランザクション要求を受信するステップであって、前記クライアントが、モノのインターネット（ＩｏＴ）デバイスによって実行される、ステップと、
前記クライアントによって、ノードのレジスタにアクセスするステップであって、前記ノードは、それぞれ前記ブロックチェーンネットワークと同期されている、ステップと、
前記クライアントによって、前記レジスタからノードを選択するステップと、
前記クライアントから前記ノードに、前記ブロックチェーンネットワーク上で前記トランザクション要求を処理するようにとのブロックチェーン要求を送信するステップと、
前記クライアントによって、前記ブロックチェーン要求への応答を受信するステップであって、前記応答は妥当性検査指標を含む、ステップと、
前記クライアントによって、前記妥当性検査指標に基づいて、前記応答が有効であるかどうかを検証するステップと、
前記クライアントによって、前記応答が有効であるという決定に応答して、前記トランザクション要求に対応するトランザクションを妥当性検査するように前記ＩｏＴデバイスに指示するステップと
を備える方法。
【請求項２】
前記クライアントによって、前記レジスタから前記ノードを選択するステップは、
前記クライアントによって、前記レジスタから候補ノードをランダムに識別するステップと、
前記クライアントによって、前記候補ノードが前記クライアントによって送信された最後のブロックチェーン要求を処理したかどうかを決定するステップと、
前記候補ノードが前記クライアントによって送信された前記最後のブロックチェーン要求を処理したという決定に応答して、
前記クライアントによって、前記レジスタから異なる候補ノードをランダムに識別するステップと、
前記クライアントによって、前記ノードとして前記異なる候補ノードを選択するステップと、
前記候補ノードが前記クライアントによって送信された前記最後のブロックチェーン要求を処理しなかったという決定に応答して、前記候補ノードを前記ノードとして選択するステップと、
を備える請求項１に記載の方法。
【請求項３】
前記妥当性検査指標は追加ノードからの署名されたブロックハッシュを備え、前記クライアントによって、前記妥当性検査指標に基づいて、前記応答が有効であるかどうかを検証するステップは、前記クライアントによって、前記ノードによる前記処理を補強する前記追加ノードからの前記署名されたブロックハッシュに基づいて前記応答が有効であることを決定するステップを備える請求項１に記載の方法。
【請求項４】
前記妥当性検査指標は証明を備え、前記クライアントによって、前記妥当性検査指標に基づいて、前記応答が有効であるかどうかを検証するステップは、
前記証明を通じてデータを供給することによって証明結果を決定するステップと、
前記証明結果が前記応答に示された結果と一致するかどうかを決定するステップと、
前記証明結果が前記応答に示された前記結果と一致するという決定に応答して、前記応答が有効であると決定するステップと
を備える請求項１に記載の方法。
【請求項５】
前記クライアントによって、前記応答が有効であるという検証にさらに応答して、前記クライアントのノードのローカルレジスタへのスコア増加更新を処理するステップをさらに備える請求項１に記載の方法。
【請求項６】
前記クライアントによって、前記レジスタから前記ノードを選択する前記ステップは、
前記ローカルレジスタの各候補ノードに、それらのスコアに基づいて重み付けするステップと、
各候補ノードの前記重みに基づいてバイアスがかけられたランダム選択によって前記ノードを選択するステップと
を備える請求項５に記載の方法。
【請求項７】
コンピュータプログラム命令を実行するためのプロセッサと、
ブロックチェーンネットワークと同期されていないクライアントを動作させるために前記プロセッサによって実行可能な記憶されたコンピュータプログラム命令を備える非一時的コンピュータ可読ストレージ媒体とを備え、前記命令が、実行されると、前記プロセッサに、
ブロックチェーンネットワークと同期されていないクライアントにおいて、トランザクション要求を受信することであって、前記クライアントが、モノのインターネット（ＩｏＴ）デバイスによって実行される、ことと、
前記クライアントによって、ノードのレジスタにアクセスすることであって、前記ノードは、それぞれ前記ブロックチェーンネットワークと同期されている、ことと、
前記クライアントによって、前記レジスタからノードを選択することと、
前記クライアントから前記ノードに、前記ブロックチェーンネットワーク上で前記トランザクション要求を処理するようにとのブロックチェーン要求を送信することと、
前記クライアントによって、前記ブロックチェーン要求への応答を受信することであって、前記応答は妥当性検査指標を含む、ことと、
前記クライアントによって、前記妥当性検査指標に基づいて、前記応答が有効であるかどうかを検証することと、
前記クライアントによって、前記応答が有効であるという決定に応答して、前記トランザクション要求に対応するトランザクションを妥当性検査するように前記ＩｏＴデバイスに指示することと
を行わせる、システム。
【請求項８】
前記クライアントによって、前記レジスタから前記ノードを選択するための前記命令は、
前記クライアントによって、前記レジスタから候補ノードをランダムに識別することと、
前記クライアントによって、前記候補ノードが前記クライアントによって送信された最後のブロックチェーン要求を処理したかどうかを決定することと、
前記候補ノードが前記クライアントによって送信された前記最後のブロックチェーン要求を処理したという決定に応答して、
前記クライアントによって、前記レジスタから異なる候補ノードをランダムに識別することと、
前記クライアントによって、前記ノードとして前記異なる候補ノードを選択することと、
前記候補ノードが前記クライアントによって送信された前記最後のブロックチェーン要求を処理しなかったという決定に応答して、前記候補ノードを前記ノードとして選択することと、
を行うための命令をさらに備える請求項７に記載のシステム。
【請求項９】
前記妥当性検査指標は追加ノードからの署名されたブロックハッシュを備え、前記クライアントによって、前記妥当性検査指標に基づいて、前記応答が有効であるかどうかを検証することは、前記クライアントによって、前記ノードによる前記処理を補強する前記追加ノードからの前記署名されたブロックハッシュに基づいて前記応答が有効であることを決定することを備える請求項７に記載のシステム。
【請求項１０】
前記妥当性検査指標は証明を備え、前記クライアントによって、前記妥当性検査指標に基づいて、前記応答が有効であるかどうかを決定するための前記命令は、
前記証明を通じてデータを供給することによって証明結果を決定することと、
前記証明結果が前記応答に示された結果と一致するかどうかを決定することと、
前記証明結果が前記応答に示された前記結果と一致するという決定に応答して、前記応答が有効であると決定することと
を行うための命令をさらに備える請求項７に記載のシステム。
【請求項１１】
前記動作は、さらに、前記クライアントによって、前記応答が有効であるという検証にさらに応答して、前記クライアントのノードのローカルレジスタへのスコア増加更新を処理することをさらに備える請求項７に記載のシステム。
【請求項１２】
前記クライアントによって、前記レジスタから前記ノードを選択するための前記命令は、
前記ローカルレジスタの各候補ノードに、それらのスコアに基づいて重み付けすることと、
各候補ノードの前記重みに基づいてバイアスがかけられたランダム選択によって前記ノードを選択することと
を行うための命令を備える請求項１１に記載のシステム。
【請求項１３】
記憶された命令を備える非一時的コンピュータ可読媒体であって、前記命令はプロセッサによって実行されると、前記プロセッサに、ブロックチェーンネットワークと同期されていないクライアントを、
ブロックチェーンネットワークと同期されていないクライアントにおいて、トランザクション要求を受信することであって、前記クライアントが、モノのインターネット（ＩｏＴ）デバイスによって実行される、ことと、
前記クライアントによって、ノードのレジスタにアクセスすることであって、前記ノードは、それぞれ前記ブロックチェーンネットワークと同期されている、ことと、
前記クライアントによって、前記レジスタからノードを選択することと、
前記クライアントから前記ノードに、前記ブロックチェーンネットワーク上で前記トランザクション要求を処理するようにとのブロックチェーン要求を送信することと、
前記クライアントによって、前記ブロックチェーン要求への応答を受信することであって、前記応答は妥当性検査指標を含む、ことと、
前記クライアントによって、前記妥当性検査指標に基づいて、前記応答が有効であるかどうかを検証することと、
前記クライアントによって、前記応答が有効であるという決定に応答して、前記トランザクション要求に対応するトランザクションを妥当性検査するように前記ＩｏＴデバイスに指示することと
を行うように動作させる非一時的コンピュータ可読媒体。
【請求項１４】
前記クライアントによって、前記レジスタから前記妥当性検査ノードを選択するための前記命令は、
前記クライアントによって、前記レジスタから候補ノードをランダムに識別することと、
前記クライアントによって、前記候補ノードが前記クライアントによって送信された最後のブロックチェーン要求を処理したかどうかを決定することと、
前記候補ノードが前記クライアントによって送信された前記最後のブロックチェーン要求を処理したという決定に応答して、
前記クライアントによって、前記レジスタから異なる候補ノードをランダムに識別することと、
前記クライアントによって、前記ノードとして前記異なる候補ノードを選択することと、
前記候補ノードが前記クライアントによって送信された前記最後のブロックチェーン要求を処理しなかったという決定に応答して、前記候補ノードを前記ノードとして選択することと、
を行うための命令を備える請求項１３に記載の非一時的コンピュータ可読媒体。
【請求項１５】
前記妥当性検査指標は追加ノードからの署名されたブロックハッシュを備え、前記クライアントによって、前記妥当性検査指標に基づいて、前記応答が有効であるかどうかを検証することは、前記クライアントによって、前記ノードによる前記処理を補強する前記追加ノードからの前記署名されたブロックハッシュに基づいて前記応答が有効であることを決定することを備える請求項１３に記載の非一時的コンピュータ可読媒体。
【請求項１６】
前記妥当性検査指標は証明を備え、前記クライアントによって、前記妥当性検査指標に基づいて、前記応答が有効であるかどうかを決定するための前記命令は、
前記証明を通じてデータを供給することによって証明結果を決定することと、
前記証明結果が前記応答に示された結果と一致するかどうかを決定することと、
前記証明結果が前記応答に示された前記結果と一致するという決定に応答して、前記応答が有効であると決定することと
を行うための命令をさらに備える請求項１３に記載の非一時的コンピュータ可読媒体。
【請求項１７】
前記命令は、さらに、前記クライアントによって、前記応答が有効であるという検証にさらに応答して、前記クライアントのノードのローカルレジスタへのスコア増加更新を送信するための命令をさらに備え、前記クライアントによって、前記レジスタから前記ノードを選択するための前記命令は、
各候補ノードに、それらのスコアに基づいて重み付けすることと、
各候補ノードの前記重みに基づいてバイアスがかけられたランダム選択によって前記ノードを選択することと
を行うための命令を備える請求項１３に記載の非一時的コンピュータ可読媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
コンピューティングマシンアーキテクチャ
図２は、マシン可読媒体から命令を読み取り、それらをプロセッサ（または、コントローラ）において実行することができる例示的なマシンの構成要素を示すブロック図である。具体的には、図２は、本明細書で論じられる方法論のうちの任意の１つまたは複数をマシンに実行させるためのプログラムコード（たとえば、ソフトウェア）が実行され得るコンピュータシステム２００の例示的な形態のマシンの概略図を示している。コンピュータシステム２００の構成要素のうちのいくつかまたはすべては、本明細書で論じられるように、ＩｏＴデバイス１１０あるいは他の軽量デバイスまたはアプリケーションのコンピュータシステムを代表し得る。しかしながら、前述のように、そのような構成要素は、より堅牢なコンピューティングシステムに関して限られた容量しか提供しない場合がある。コンピュータシステム２００の構成要素のうちのいくつかまたはすべてはまた、クライアント１３０を実行するコンピューティングデバイス、レジストリ１５０をホストするコンピューティングデバイス、およびノード１４０のいずれかを実行するコンピューティングデバイスを表し得る。プログラムコードは、１つまたは複数のプロセッサ２０２によって実行可能な命令２２４から構成され得る。ＩｏＴデバイス１１０および他の軽量デバイスは、単純なプロセッサまたはコントローラを有し得るが、クライアントデバイス１３０は、スマートフォンまたはパーソナルコンピュータ（ＰＣ）にしばしば見られる従来のコンピュータプロセッサを有し得る点に留意されたい。代替的実施形態では、マシンは、スタンドアロンデバイスとして動作するか、または他のマシンに接続（たとえば、ネットワーク化）され得る。ネットワーク展開において、マシンは、サーバ−クライアントネットワーク環境においてサーバマシンまたはクライアントマシンの容量で動作してもよく、あるいはピアツーピア（または、分散）ネットワーク環境においてピアマシンとして動作してもよい。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
クライアント１３０またはレジストリ１５０を実行するシステムなどの複雑なコンピューティングシステムの場合、マシンは、たとえば、サーバコンピュータ、クライアントコンピュータ、パーソナルコンピュータ（ＰＣ）、タブレットＰＣ、セットトップボックス（ＳＴＢ）、携帯情報端末（ＰＤＡ）、セルラー電話、スマートフォン、ウェブアプライアンス、ネットワークルータ、スイッチ、またはブリッジであり得る。ＩｏＴデバイス（または、他の軽量デバイス）は、ドアベル、サーモスタット、冷蔵庫、自転車ロックなどであり得る。いずれのマシンも、そのマシンによって実行されるべきアクションを指定する命令２２４（順次またはその他）を実行することが可能であり得る。さらに、単一のマシンのみが示されているが、「マシン（ｍａｃｈｉｎｅ）」という用語はまた、本明細書で論じられる方法論のうちの任意の１つまたは複数を実行するために命令２２４を個別にまたは共同で実行するマシンの任意の集合を含むと解釈されるべきである。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２１
【補正方法】変更
【補正の内容】
【００２１】
例示的なブロックチェーン相互作用処理
図３は、本開示のいくつかの例示的実施形態による、最小限の検証クライアントによるブロックチェーントランザクションを妥当性検査するためのデータフロー図である。図示された通信は、示されたマシン（たとえば、ＩｏＴデバイス１１０および１つまたは複数のノード１４０）との間のネットワーク（たとえば、ネットワーク１２０）を通じて発生し得る。図３に示されるように、クライアント（たとえば、クライアント１３０）は、ノードリストにアクセスし（たとえば、ノードリスト要求にアクセスすること（３０１））を介して、（たとえば、ＩｏＴデバイス１１０の）メモリにノードリストを返させる（３０２）。要求３０１は、ブロックチェーン相互作用を処理する要求を受信したＩｏＴデバイス１１０に基づいてトリガされ得る。たとえば、ＩｏＴデバイス１１０は、公衆によって（たとえば、小額の料金の支払いと引き換えに）アクセスされ得る（または、そのデータセットがアクセスされ得る）大気質を記述する環境センサであり得る。誰かがデータを要求していることを検出することに応答して、ＩｏＴデバイス１１０のクライアント１３０は、ブロックチェーン相互作用を処理するためのノードリストを検索するようにトリガされ得る。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００３０
【補正方法】変更
【補正の内容】
【００３０】
ある実施形態では、ノード１４０のノードの不正行為は、別のノードによって報告される。たとえば、上述のように、ノード１４０Ｂは、要求をノード１４０Ａに送信し得（３０４）、ノード１４０Ａは、応答的に署名をノード１４０Ｂに返し得る（３０７）。署名が無効であるという決定に応答して、ノード１４０Ｂは、通信をレジストリ１５０に送信し得る（３０８）。レジストリ１５０は、クライアントによる要求を妥当性検査するために選択されることができるノード１４０のリストからノード１４０Ａへの参照を応答的に削除してもよく、あるいは上述したものと同様の他の是正措置をとってもよい（たとえば、ノード１４０Ａに対応するカウンタをインクリメントし、カウンタがしきい値を超える場合はノード１４０Ａを削除する）。それがクライアント１３０であろうと、不正行為を報告するノード１４０のノードであろうと、レジストリ１５０は、ノードのリストからノードを削除することに応答して、ノードの更新されたリストをクライアント１３０（および、任意の他のクライアント）に伝播し得る。
【国際調査報告】
2021513300.tif 000007
2021513300.tif 000008