(57)【特許請求の範囲】
【請求項１】
ブロックチェーンネットワークによって維持管理されるブロックチェーン上に記憶されるデータを隔離するためのコンピュータ実施方法であって、前記方法は、
前記ブロックチェーンネットワーク内のブロックチェーンノードによって、前記ブロックチェーンネットワークの軽量ノードから同期要求を受信するステップであって、前記同期要求は、前記軽量ノードの識別情報および前記同期要求に関連付けられたブロックの高さを含み、元の系全体状態構造は、前記ブロックの高さに基づいて決定され、前記ブロックの高さに関連付けられたブロックが前記ブロックチェーンに追加された時点における前記ブロックチェーンネットワークの状態を表す、ステップと、
前記ブロックチェーンノードによって、前記軽量ノードの前記識別情報に関連付けられた1つまたは複数のパーミッションを識別するステップと、
前記ブロックチェーンノードによって、複数のアカウントレコードを含む前記元の系全体状態構造を決定するステップであって、各アカウントレコードは、前記アカウントレコードに関連付けられたアカウントについての状態情報を記憶し、前記元の系全体状態構造は、元のMerkle Patricia Trie(MPT)である、ステップと、
前記ブロックチェーンノードによって、前記1つまたは複数のパーミッションに基づいて、前記軽量ノードによるアクセスについて権限を与えられている前記複数のアカウントレコードのサブセットを識別するステップと、
前記ブロックチェーンノードによって、前記元の系全体状態データ構造に基づいた隔離型系全体状態構造を生成するステップであって、前記隔離型系全体状態構造は、前記軽量ノードによるアクセスについて権限を与えられている前記複数のアカウントレコードの前記サブセットのみを含み、前記隔離型系全体状態構造は、隔離型MPTであり、前記隔離型MPTを生成するステップは、
前記軽量ノードに対してアクセス可能となっている前記元のMPT内のアカウントレコードを識別するステップであって、前記アカウントレコードは、前記元のMPTの特定のノードにあり、前記特定のノードは、ブランチノードまたはリーフノードである、ステップと、
前記アカウントレコードを記憶している前記特定のノードから前記MPTのルートノードまでの前記元のMPTにおける経路を識別するステップと、
前記アカウントレコードを記憶している前記特定のノードから前記MPTの前記ルートノードまでの前記経路に沿って前記元のMPTに位置する中間ノードを識別するステップと、
前記隔離型MPTに前記中間ノードを含めるステップと
を含む、生成するステップと、
前記ブロックチェーンノードによって、前記隔離型系全体状態構造を含む前記軽量ノードに応答を送信するステップと
を含む、コンピュータ実施方法。
【請求項２】
前記軽量ノードの前記識別情報に関連付けられた前記1つまたは複数のパーミッションを識別するステップは、
前記ブロックチェーンネットワークの複数の軽量ノードの複数の識別情報について1つまたは複数のパーミッションを指定するアクセス制御テーブルにアクセスするステップと、
前記軽量ノードの前記識別情報について前記アクセス制御テーブルにおいて指定された1つまたは複数のパーミッションを識別するステップと
を含む、請求項1に記載のコンピュータ実施方法。
【請求項３】
前記アクセス制御テーブルは、
前記ブロックチェーンネットワークの前記複数の軽量ノードの前記複数の識別情報の各々に関連付けられた識別情報クラスと、
前記アクセス制御テーブルに含まれる各識別情報クラスに関連付けられたパーミッションと
を含む、請求項2に記載のコンピュータ実施方法。
【請求項４】
前記1つまたは複数のパーミッションは、前記軽量ノードの前記識別情報がパーミッション設定されたアカウントアドレスのセットに関連付けられたアカウントレコードにアクセスする権限を与えられていることを指定するパーミッションを含む、請求項2に記載のコンピュータ実施方法。
【請求項５】
前記隔離型MPTを生成するステップは、前記隔離型MPTを作成するように前記元のMPTを修正するステップであって、
前記軽量ノードによってアクセス可能ではないと決定されたすべてのアカウントレコードを前記元のMPTから除去するステップと、
ブランチの各々のルートハッシュのみそのまま残してすべてのアカウントレコードが除去された前記元のMPTの前記ブランチを除去するステップと
を含む、修正するステップを含む、請求項1に記載のコンピュータ実施方法。
【請求項６】
アカウントレコードは、前記軽量ノードが前記アカウントレコードに対するリードアクセスを有していないことを前記1つまたは複数のパーミッションが示している場合には、前記軽量ノードによってアクセス可能ではないと決定される、請求項5に記載のコンピュータ実施方法。
【請求項７】
動作を行うようにコンピュータシステムによって実行可能な1つまたは複数の命令を記憶している、非一時的コンピュータ可読記憶媒体であって、前記動作は、
ブロックチェーンネットワーク内のブロックチェーンノードによって、前記ブロックチェーンネットワークの軽量ノードから同期要求を受信することであって、前記同期要求は、前記軽量ノードの識別情報および前記同期要求に関連付けられたブロックの高さを含み、元の系全体状態構造は、前記ブロックの高さに基づいて決定され、前記ブロックの高さに関連付けられたブロックが前記ブロックチェーンに追加された時点における前記ブロックチェーンネットワークの状態を表す、ことと、
前記ブロックチェーンノードによって、前記軽量ノードの前記識別情報に関連付けられた1つまたは複数のパーミッションを識別することと、
前記ブロックチェーンノードによって、複数のアカウントレコードを含む前記元の系全体状態構造を決定することであって、各アカウントレコードは、前記アカウントレコードに関連付けられたアカウントについての状態情報を記憶し、前記元の系全体状態構造は、元のMerkle Patricia Trie(MPT)である、ことと、
前記ブロックチェーンノードによって、前記1つまたは複数のパーミッションに基づいて、前記軽量ノードによるアクセスについて権限を与えられている前記複数のアカウントレコードのサブセットを識別することと、
前記ブロックチェーンノードによって、前記元の系全体状態データ構造に基づいた隔離型系全体状態構造を生成することであって、前記隔離型系全体状態構造は、前記軽量ノードによるアクセスについて権限を与えられている前記複数のアカウントレコードの前記サブセットのみを含み、前記隔離型系全体状態構造は、隔離型MPTであり、前記隔離型MPTを生成することは、
前記軽量ノードに対してアクセス可能となっている前記元のMPT内のアカウントレコードを識別することであって、前記アカウントレコードは、前記元のMPTの特定のノードにあり、前記特定のノードは、ブランチノードまたはリーフノードである、ことと、
前記アカウントレコードを記憶している前記特定のノードから前記MPTのルートノードまでの前記元のMPTにおける経路を識別することと、
前記アカウントレコードを記憶している前記特定のノードから前記MPTの前記ルートノードまでの前記経路に沿って前記元のMPTに位置する中間ノードを識別することと、
前記隔離型MPTに前記中間ノードを含めることと
を含む、生成することと、
前記ブロックチェーンノードによって、前記隔離型系全体状態構造を含む前記軽量ノードに応答を送信することと
を含む、非一時的コンピュータ可読記憶媒体。
【請求項８】
前記軽量ノードの前記識別情報に関連付けられた前記1つまたは複数のパーミッションを識別することは、
前記ブロックチェーンネットワークの複数の軽量ノードの複数の識別情報について1つまたは複数のパーミッションを指定するアクセス制御テーブルにアクセスすることと、
前記軽量ノードの前記識別情報について前記アクセス制御テーブルにおいて指定された1つまたは複数のパーミッションを識別することと
を含む、請求項7に記載の非一時的コンピュータ可読記憶媒体。
【請求項９】
前記アクセス制御テーブルは、
前記ブロックチェーンネットワークの前記複数の軽量ノードの前記複数の識別情報の各々に関連付けられた識別情報クラスと、
前記アクセス制御テーブルに含まれる各識別情報クラスに関連付けられたパーミッションと
を含む、請求項8に記載の非一時的コンピュータ可読記憶媒体。
【請求項１０】
前記1つまたは複数のパーミッションは、前記軽量ノードの前記識別情報がパーミッション設定されたアカウントアドレスのセットに関連付けられたアカウントレコードにアクセスする権限を与えられていることを指定するパーミッションを含む、請求項8に記載の非一時的コンピュータ可読記憶媒体。
【請求項１１】
前記隔離型MPTを生成することは、前記隔離型MPTを作成するように前記元のMPTを修正することであって、
前記軽量ノードによってアクセス可能ではないと決定されたすべてのアカウントレコードを前記元のMPTから除去することと、
ブランチの各々のルートハッシュのみそのまま残してすべてのアカウントレコードが除去された前記元のMPTの前記ブランチを除去することと
を含む、修正することを含む、請求項7に記載の非一時的コンピュータ可読記憶媒体。
【請求項１２】
アカウントレコードは、前記軽量ノードが前記アカウントレコードに対するリードアクセスを有していないことを前記1つまたは複数のパーミッションが示している場合には、前記軽量ノードによってアクセス可能ではないと決定される、請求項11に記載の非一時的コンピュータ可読記憶媒体。
【請求項１３】
1つまたは複数のプロセッサと、
前記1つまたは複数のプロセッサに結合されるとともに、前記1つまたは複数のプロセッサによって実行可能な命令を記憶している、1つまたは複数のコンピュータ可読メモリとを含み、前記命令は、
ブロックチェーンネットワーク内のブロックチェーンノードによって、前記ブロックチェーンネットワークの軽量ノードから同期要求を受信することであって、前記同期要求は、前記軽量ノードの識別情報および前記同期要求に関連付けられたブロックの高さを含み、元の系全体状態構造は、前記ブロックの高さに基づいて決定され、前記ブロックの高さに関連付けられたブロックが前記ブロックチェーンに追加された時点における前記ブロックチェーンネットワークの状態を表す、ことと、
前記ブロックチェーンノードによって、前記軽量ノードの前記識別情報に関連付けられた1つまたは複数のパーミッションを識別することと、
前記ブロックチェーンノードによって、複数のアカウントレコードを含む前記元の系全体状態構造を決定することであって、各アカウントレコードは、前記アカウントレコードに関連付けられたアカウントについての状態情報を記憶し、前記元の系全体状態構造は、元のMerkle Patricia Trie(MPT)である、ことと、
前記ブロックチェーンノードによって、前記1つまたは複数のパーミッションに基づいて、前記軽量ノードによるアクセスについて権限を与えられている前記複数のアカウントレコードのサブセットを識別することと、
前記ブロックチェーンノードによって、前記元の系全体状態データ構造に基づいた隔離型系全体状態構造を生成することであって、前記隔離型系全体状態構造は、前記軽量ノードによるアクセスについて権限を与えられている前記複数のアカウントレコードの前記サブセットのみを含み、前記隔離型系全体状態構造は、隔離型MPTであり、前記隔離型MPTを生成することは、
前記軽量ノードに対してアクセス可能となっている前記元のMPT内のアカウントレコードを識別することであって、前記アカウントレコードは、前記元のMPTの特定のノードにあり、前記特定のノードは、ブランチノードまたはリーフノードである、ことと、
前記アカウントレコードを記憶している前記特定のノードから前記MPTのルートノードまでの前記元のMPTにおける経路を識別することと、
前記アカウントレコードを記憶している前記特定のノードから前記MPTの前記ルートノードまでの前記経路に沿って前記元のMPTに位置する中間ノードを識別することと、
前記隔離型MPTに前記中間ノードを含めることと
を含む、生成することと、
前記ブロックチェーンノードによって、前記隔離型系全体状態構造を含む前記軽量ノードに応答を送信することと
をする、システム。
【請求項１４】
前記軽量ノードの前記識別情報に関連付けられた前記1つまたは複数のパーミッションを識別することは、
前記ブロックチェーンネットワークの複数の軽量ノードの複数の識別情報について1つまたは複数のパーミッションを指定するアクセス制御テーブルにアクセスすることと、
前記軽量ノードの前記識別情報について前記アクセス制御テーブルにおいて指定された1つまたは複数のパーミッションを識別することとを含む、請求項13に記載のシステム。
【請求項１５】
前記アクセス制御テーブルは、
前記ブロックチェーンネットワークの前記複数の軽量ノードの前記複数の識別情報の各々に関連付けられた識別情報クラスと、
前記アクセス制御テーブルに含まれる各識別情報クラスに関連付けられたパーミッションと
を含む、請求項14に記載のシステム。
【請求項１６】
前記1つまたは複数のパーミッションは、前記軽量ノードの前記識別情報がパーミッション設定されたアカウントアドレスのセットに関連付けられたアカウントレコードにアクセスする権限を与えられていることを指定するパーミッションを含む、請求項14に記載のシステム。
【請求項１７】
前記隔離型MPTを生成することは、前記隔離型MPTを作成するように前記元のMPTを修正することであって、
前記軽量ノードによってアクセス可能ではないと決定されたすべてのアカウントレコードを前記元のMPTから除去することと、
ブランチの各々のルートハッシュのみそのまま残してすべてのアカウントレコードが除去された前記元のMPTの前記ブランチを除去することと
を含む、修正することを含む、請求項13に記載のシステム。
【請求項１８】
アカウントレコードは、前記軽量ノードが前記アカウントレコードに対するリードアクセスを有していないことを前記1つまたは複数のパーミッションが示している場合には、前記軽量ノードによってアクセス可能ではないと決定される、請求項17に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
ブロックチェーンネットワークにおけるデータ隔離に関する。
【背景技術】
【０００２】
コンセンサスネットワークおよび/またはブロックチェーンネットワークとも称し得る、分散型台帳システム(DLS)は、関与エンティティが安全かつ変更不可能な形でデータを記憶することを可能にする。DLSは、任意の特定のユースケースを指すわけではなく、ブロックチェーンネットワークを一般には指す。タイプのブロックチェーンネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、およびコンソーシアムブロックチェーンネットワークを含み得る。パブリックブロックチェーンネットワークは、DLSを使用し、コンセンサスプロセスに関与するように、すべてのエンティティに対してオープンとなっている。プライベートブロックチェーンネットワークは、特定のエンティティに提供されており、読込みパーミッションおよび書込みパーミッションを中央集権的に制御する。コンソーシアムブロックチェーンネットワークは、コンセンサスプロセスを制御する、限定されたエンティティのグループに提供されており、アクセス制御レイヤを含む。
【０００３】
ブロックチェーンネットワークは、異なるタイプのノードを含み得る。フル関与ノード(以降、「ブロックチェーンノード」と称する)は、トランザクションの新規ブロックを構築し有効性を確認してブロックチェーンに追加することを試みることによって、ブロックチェーンネットワークに関するコンセンサスプロセスに関与する。軽量ノードは、ブロックチェーンネットワークに関するコンセンサスプロセスに関与しておらず、ブロックチェーンの軽量ノード自身の内部表現を完全に同期していない場合がある。例えば、軽量ノードは、ブロックチェーン内の特定のブロック内のトランザクションデータのすべてではなく、ブロックヘッダ情報のみ同期し得る。
【０００４】
プライベートまたはコンソーシアムブロックチェーンネットワークにおいては、ノード(軽量ノードなど)は、例えば、軽量ノードに関連付けられた識別情報が関与したトランザクションなどといった、あるトランザクションをブロックチェーンから読み込むパーミッションのみを有し得る。そのようなケースにおいては、軽量ノードは、特定のブロックについてブロックチェーンノードにクエリを行い得るし、それがブロック内でアクセスを有しているトランザクションだけについての表現(例えば、Merkle Tree)が返信され得る。このように構築されたMerkle Treeは、ブロック内のトランザクションを表すフルMerkle Treeと整合性を有していない場合があり、そのことが、ノードがブロックの正確な表現を所有していないことに起因して軽量ノードにおけるエラーの原因となり得る。
【０００５】
ブロックチェーンネットワークの「系全体状態(world state)」は、Merkle Patricia Trie(MPT)の構造でブロックチェーンノードに一般的に記憶されている、ブロックチェーンネットワーク上のすべての通常アカウントおよびコントラクトアカウントの状態のコレクションを指す。ブロックチェーンネットワークにおいては、いくつかの関与者がコンセンサスに関与しているブロックチェーンノードを維持管理する一方で、いくつかの関与者は1つの軽量ノードのみを維持管理する。これは、コストまたは権限、およびコンセンサスに関与していないがブロックチェーンノードからのデータと同期だけはしているノードが理由であり得る。
【０００６】
軽量ノードは、すべてのブロックのデータ全体、または単にブロックヘッダデータを記憶し得る。例えば、様々な例示的なブロックチェーンネットワークは、ブロックヘッダデータのみが同期されている軽量ノードを有する。軽量ノードは、検証されることになるトランザクションに従ってブロックチェーンノードからMPT上の対応するデータを取り出すが、ブロックチェーンノードは、軽量ノードがデータを取り出す範囲を制限していない。
【０００７】
いくつかのシナリオにおいては、特に、企業アプリケーションの連携チェーンシナリオにおいては、系全体状態データへのアクセスは制御され得る。例えば、特定のエンティティは、それが管理するアカウントについての系全体状態データにアクセスすることのみ権限を与えられ得る。しかしながら、エンティティによって制御される軽量ノードは、トランザクションを検証するためにMPT全体を受信し得る。それゆえ、軽量ノードがMPTに基づいてトランザクションを検証することはそのまま可能にしつつ、MPT内の情報に対する軽量ノードのアクセスを設定されたパーミッションに従って制御するようにすることが望ましいであろう。
【発明の概要】
【課題を解決するための手段】
【０００８】
本明細書の実施形態は、ブロックチェーンネットワークの軽量ノードについての隔離要件を満足する、ブロックチェーンネットワークの系全体状態データのための隔離スキームのためのコンピュータ実施方法を含む。より詳細には、本明細書の実施形態は、軽量ノードによるアクセスについて権限を与えられていないデータを含んでいないが、ブロックチェーンネットワークの系全体状態データと依然として整合性を有している、状態Merkle Patricia Trie(MPT)(または「隔離型MPT」)を生成することを目的としている。
【０００９】
本明細書による方法が本明細書に記載の態様と特徴との任意の組合せを含み得ることは諒解されよう。すなわち、本明細書による方法は、特に本明細書に記載の態様と特徴との組合せに限定されるわけではなく、提供した態様と特徴との任意の組合せも含む。
【００１０】
本明細書の1つまたは複数の実施形態の詳細を添付の図面および以下の説明に記載している。本明細書の他の特徴および利点が、説明および図面から、および特許請求の範囲から明らかとなるであろう。
【図面の簡単な説明】
【００１１】
【図１】本明細書の実施形態を実行するために使用され得る環境の例を図示している図である。
【図２】本明細書の実施形態による、概念的機構の例を図示している図である。
【図３】系全体状態同期プロセス中のブロックチェーンネットワークの軽量ノードとブロックチェーンノードとの間のインタラクションの例を図示している図である。
【図４Ａ】図3に図示したブロックチェーンノードについての系全体状態データ構造の例を図示している図である。
【図４Ｂ】図3に図示した軽量ノードについての隔離型系全体状態データ構造の例を図示している図である。
【図５】本明細書の実施形態により実行され得るプロセスの例を図示している図である。
【図６】本明細書の実施形態による、装置のモジュールの例を図示している図である。
【発明を実施するための形態】
【００１２】
様々な図面における類似の参照記号は類似の要素を示す。
【００１３】
本明細書の実施形態は、ブロックチェーンネットワークの軽量ノードについての隔離要件を満足する、ブロックチェーンネットワークの系全体状態データのための隔離スキームのためのコンピュータ実施方法を含む。より詳細には、本明細書の実施形態は、軽量ノードによるアクセスについて権限を与えられていないデータを含んでいないが、ブロックチェーンネットワークの系全体状態データと依然として整合性を有している、隔離型状態Merkle Patricia Trie(MPT)(または「隔離型MPT」)を生成することを目的としている。
【００１４】
方法のいくつかの実施形態においては、アクションは、ブロックチェーンネットワーク内のブロックチェーンノードによって、ブロックチェーンネットワークの軽量ノードから同期要求を受信するステップであって、同期要求は、軽量ノードの識別情報および同期要求に関連付けられたブロックの高さを含む、ステップと、ブロックチェーンノードによって、軽量ノードの識別情報に関連付けられた1つまたは複数のパーミッションを識別するステップと、ブロックチェーンノードによって、ブロックの高さに関連付けられた、複数のアカウントレコードを含む、元の系全体状態構造を決定するステップであって、各アカウントレコードは、アカウントレコードに関連付けられたアカウントについての状態情報を記憶し、元の系全体状態構造は、ブロックの高さに関連付けられたブロックがブロックチェーンに追加された時点におけるブロックチェーンネットワークの状態を表す、ステップと、ブロックチェーンノードによって、1つまたは複数のパーミッションに基づいて、軽量ノードによるアクセスについて権限を与えられている複数のアカウントレコードのサブセットを識別するステップと、ブロックチェーンノードによって、元の系全体状態データ構造に基づいた隔離型系全体状態構造を生成するステップであって、隔離型系全体状態構造は、軽量ノードによるアクセスについて権限を与えられている複数のアカウントレコードのサブセットのみを含む、ステップと、ブロックチェーンノードによって、隔離型系全体状態データ構造を含む軽量ノードに応答を送信するステップとを含む。
【００１５】
本明細書の実施形態についてのさらなる状況をあげるとすれば、上述したように、コンセンサスネットワーク(例えば、ピア・ツー・ピアノードで構成される)およびブロックチェーンネットワークとも称し得る、分散型台帳システム(DLS)は、関与エンティティが安全かつ変更不可能な形でトランザクションを実施しデータを記憶することを可能にする。ブロックチェーンという用語は、特定のネットワークおよび/またはユースケースに一般的に関連付けられているが、ブロックチェーンは、任意の特定のユースケースを指すわけではなくDLSを一般的に指すために本明細書では使用している。
【００１６】
ブロックチェーンは、トランザクションが変更不可能となる方法でトランザクションを記憶するデータ構造である。そのため、ブロックチェーン上に記録されるトランザクションは、信頼性のあるものおよび信頼できるものとなる。ブロックチェーンは、1つまたは複数のブロックを含む。チェーン内の各ブロックは、前のブロックの暗号ハッシュを含めることによって、チェーン内のその直前にある前のブロックに連結される。各ブロックはまた、タイムスタンプ、それ自身の暗号ハッシュ、および1つまたは複数のトランザクションを含む。ブロックチェーンネットワークのノードによって既に検証されているトランザクションは、ハッシュ化され、Merkleツリーに符号化される。Merkleツリーは、ツリーのリーフノードにおけるデータがハッシュ化され、ツリーの各ブランチにおけるすべてのハッシュがブランチのルートにおいて連結されるデータ構造である。このプロセスは、ツリー全体のルートまでツリーの上方へと進行し続け、ツリー全体のルートは、ツリー内のすべてのデータを表すハッシュを記憶している。ツリーに記憶されているトランザクションであることを意味するハッシュは、それがツリーの構造と整合性を有しているかどうかを決定することによって素早く検証され得る。
【００１７】
ブロックチェーンは、トランザクションを記憶するための分散化されたまたは少なくとも部分的に分散化されたデータ構造である一方で、ブロックチェーンネットワークは、トランザクションをブロードキャストすること、検証すること、および有効性を確認することなどによって、1つまたは複数のブロックチェーンを管理、更新、および維持管理するコンピューティングノードのネットワークである。上述したように、ブロックチェーンネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、またはコンソーシアムブロックチェーンネットワークとして提供され得る。コンソーシアムブロックチェーンネットワークを参照して、本明細書の実施形態をここではさらに詳細に説明している。しかしながら、本明細書の実施形態が任意の適切なタイプのブロックチェーンネットワークにおいて実現され得ることも考えられる。
【００１８】
一般に、コンソーシアムブロックチェーンネットワークは、関与エンティティの間でプライベートなものとなっている。コンソーシアムブロックチェーンネットワークにおいては、コンセンサスプロセスは、コンセンサスノードとも称し得る、権限を与えられたノードのセットによって制御され、1つまたは複数のコンセンサスノードがそれぞれのエンティティ(例えば、金融機関、保険会社)に管理される。例えば、十(10)のコンソーシアムエンティティ(例えば、金融機関、保険会社)がコンソーシアムブロックチェーンネットワークを管理してもよく、その各々がコンソーシアムブロックチェーンネットワーク内の少なくとも1つのノードを管理する。
【００１９】
いくつかの例においては、コンソーシアムブロックチェーンネットワーク内では、グローバルブロックチェーンが、すべてのノードにわたって複製されるブロックチェーンとして提供される。すなわち、すべてのコンセンサスノードは、グローバルブロックチェーンに関する完全状態コンセンサスにある。コンセンサス(例えば、ブロックチェーンへのブロックの追加に対する合意)を得るために、コンセンサスプロトコルがコンソーシアムブロックチェーンネットワークにおいて実施される。例えば、コンソーシアムブロックチェーンネットワークは、以下でさらに詳細に説明している、実用的Byzantineフォールトトレランス(PBFT)コンセンサスを実施し得る。
【００２０】
Merkle Patricia Trieまたは「MPT」は、記憶されているデータを素早く検索および検証することを可能にするデータ構造である。MPTは、MerkleツリーとPatriciaトライとの態様の組み合わせたものである。Merkleツリーは、データアイテムのハッシュが各リーフノードに記憶されているバイナリツリー構造である。各非リーフノードは、その2つの子ノードのハッシュの連結のハッシュを含む。本構造は、リーフノードにおいてハッシュ化されたデータアイテムのいずれかに対する変化(ノードハッシュを変更することになる)がツリーのルートハッシュにおける変化ももたらすことになることを保証している。そのため、Merkleツリーにおいてハッシュ化されたデータアイテムのアサートされた値は、アサートされた値のハッシュがツリーと整合性を有しているかどうか(すなわち、ルートハッシュが変化したかどうか)をチェックすることによって検証され得る。
【００２１】
Patriciaトライは、記憶されているデータを表すキー(例えば、ハッシュ)に基づいてリーフノードに記憶されているデータを体系化する構造である。ツリーの各非リーフノードは、キー値のプレフィックスに関連付けられる。各リーフノードは、最長一致プレフィックスを有するノードの子として記憶される。このことは、ルートから開始して特定のキー値と一致するプレフィックスノードの経路をたどるPatriciaトライを巡回することによって特定のキー値を有するノードを素早く発見することを可能にする。
【００２２】
MPTは、MerkleツリーとPatriciaトライとの概念を組み合わせたものであり、3つのタイプのノードを含む。リーフノードは、キー(例えば、ハッシュ)に関連付けられたデータを記憶する。ブランチノードは、多数の値(例えば、26文字の各々または16進数の16桁の各々)を子ノードにマッピングする「ルータ」として機能し、ここで終端となるキーに関連付けられたデータを記憶もする。子ノードは、その子ノードのすべてに共通しているキー部分を含むノードである、リーフノードか拡張ノードかであり得る。
【００２３】
いくつかのケースにおいては、MPTは、ブロックチェーンネットワーク内のアカウントの状態を記憶するために使用され得る。例えば、ブロックチェーン内の各ブロックは、ブロックがブロックチェーンに追加された時点におけるブロックチェーンネットワーク内の各アカウントのための残高を含むアカウントレコードを記憶しているMPTに対する参照を含み得る。アカウントレコードは、アカウントに関連付けられた公開鍵に基づいてMPTにおいて体系化され得る。そのようなMPTは、ブロックがチェーンに追加された時点におけるブロックチェーンネットワークの「系全体状態」のスナップショットを提供し得る。
【００２４】
上記の状況を考慮して、本明細書の実施形態をここではさらに詳細に説明している。より詳細には、上述したように、本明細書の実施形態は、軽量ネットワークによるアクセスについて権限を与えられていない系全体状態データ構造内にデータを含んでいないが、系全体状態データ構造を表すフルMPTと依然として整合性を有している、隔離型MPTを作成することを目的としている。隔離型MPTは、軽量ネットワーク上にローカルで記憶されているMPTのデータ構造が(軽量ノードによる制限されたデータへのアクセスを必要とすることなく)ブロックチェーンネットワークの系全体状態データ構造と整合性を有するようにするための系全体状態同期要求に応答して、軽量ノードに提供され得る。
【００２５】
いくつかの実施形態においては、ブロックチェーンネットワークの軽量ノードは、ブロックチェーンネットワークのブロックチェーンノードに同期要求を要求し得る。同期要求は、軽量ノードの識別情報、例えば、軽量ノードを管理するエンティティの識別情報と、同期要求に関連付けられたブロックの高さとを含み得る。ブロックチェーンノードは、軽量ノードの識別情報に関連付けられた1つまたは複数のパーミッションを識別し、ブロックチェーンネットワークの系全体状態データ構造を表すとともに同期要求によって指定されたブロックの高さ内にある複数のアカウントレコードを含む元のMPTを識別し得る。ブロックチェーンノードは、軽量ノードの識別情報に関連付けられた1つまたは複数のパーミッションに基づいて、軽量ノードによるアクセスについて権限を与えられている複数のアカウントレコードのサブセットを識別する。ブロックチェーンノードは、元のMPTに基づいた隔離型MPTを生成する。隔離型MPTは、軽量ノードによるアクセスについて権限を与えられているアカウントレコードのサブセットのみを含む。隔離型MPTは、その後、軽量ノードに送信され、軽量ノードにおいてローカルで記録され、ブロックチェーンネットワークとの系全体状態データ同期のために使用される。後述するように、隔離型MPTは、軽量ノードによるアクセスについてパーミッション設定されていないまたは権限を与えられていないデータを含むことなくブロックチェーンネットワークの系全体状態データ構造と整合性を有しているデータ構造を含み得る。
【００２６】
図1は、本明細書の実施形態を実行するために使用され得る環境100の例を図示している図である。いくつかの例においては、環境100は、エンティティがコンソーシアムブロックチェーンネットワーク102に関与することを可能にする。環境100は、コンピューティングデバイス106、108、およびネットワーク110を含む。いくつかの例においては、ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはその組合せを含み、ウェブサイト、ユーザデバイス(例えば、コンピューティングデバイス)、およびバックエンドシステムを接続する。いくつかの例においては、ネットワーク110は、有線および/または無線通信リンクを介してアクセスされ得る。
【００２７】
図示した例においては、コンピューティングシステム106、108の各々は、コンソーシアムブロックチェーンネットワーク102内のノードとしての参加を可能にする任意の適切なコンピューティングシステムを含み得る。コンピューティングデバイスの例は、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、およびスマートフォンを含むがこれらに限定されない。いくつかの例においては、コンピューティングシステム106、108は、コンソーシアムブロックチェーンネットワーク102とやりとりするための1つまたは複数のコンピュータ実施サービスをホストする。例えば、コンピューティングシステム106は、第1のエンティティが1つまたは複数の他のエンティティ(例えば、他のユーザ)とのトランザクションを管理するために使用するトランザクション管理システムなどといった、第1のエンティティ(例えば、ユーザA)のコンピュータ実施サービスをホストすることができる。コンピューティングシステム108は、第2のエンティティが1つまたは複数の他のエンティティ(例えば、他のユーザ)とのトランザクションを管理するために使用するトランザクション管理システムなどといった、第2のエンティティ(例えば、ユーザB)のコンピュータ実施サービスをホストすることができる。図1の例においては、コンソーシアムブロックチェーンネットワーク102を、ノードからなるピア・ツー・ピアネットワークとして表しており、コンピューティングシステム106、108は、コンソーシアムブロックチェーンネットワーク102に参加する、第1のエンティティおよび第2のエンティティのノードをそれぞれ提供する。
【００２８】
図2は、本明細書の実施形態による、概念的機構200の例を図示している。概念的機構200は、エンティティレイヤ202、ホステッドサービスレイヤ204、およびブロックチェーンネットワークレイヤ206を含む。図示した例においては、エンティティレイヤ202は、関与者A、関与者B、および関与者Cの3つの関与者を含み、各関与者は、それぞれのトランザクション管理システム208を有する。
【００２９】
図示した例においては、ホステッドサービスレイヤ204は、各トランザクション管理システム210のためのインターフェース210を含む。いくつかの例においては、それぞれのトランザクション管理システム208は、プロトコル(例えば、ハイパーテキスト・トランスファー・プロトコル・セキュア(HTTPS))を使用してネットワーク(例えば、図1のネットワーク110)を介してそれぞれのインターフェース210と通信する。いくつかの例においては、各インターフェース210は、それぞれのトランザクション管理システム208とブロックチェーンネットワークレイヤ206との間の通信接続を提供する。より詳細には、インターフェース210は、ブロックチェーンネットワークレイヤ206のブロックチェーンネットワーク212と通信する。いくつかの例においては、インターフェース210とブロックチェーンネットワークレイヤ206との間の通信は、リモートプロシージャコール(RPC)を使用して実施される。いくつかの例においては、インターフェース210は、それぞれのトランザクション管理システム208のためのブロックチェーンネットワークノードを「ホスト」する。例えば、インターフェース210は、ブロックチェーンネットワーク212へのアクセスのためのアプリケーションプログラミングインターフェース(API)を提供する。
【００３０】
本明細書に記載しているように、ブロックチェーンネットワーク212は、ブロックチェーン216に情報を変更不可能な形で記録する複数のノード214を含むピア・ツー・ピアネットワークとして提供される。単一のブロックチェーン216を概略的に図示しているが、ブロックチェーン216の複数のコピーが、提供され、ブロックチェーンネットワーク212にわたって維持管理される。例えば、各ノード214は、ブロックチェーンのコピーを記憶する。いくつかの実施形態においては、ブロックチェーン216は、コンソーシアムブロックチェーンネットワークに参加する2つ以上のエンティティの間で行われるトランザクションに関連付けられた情報を記憶する。
【００３１】
ブロックチェーン(例えば、図2のブロックチェーン216)は、各ブロックがデータを記憶しているブロックのチェーンで構成される。例えば、データは、2つ以上の関与者間のトランザクションを表すトランザクションデータを含み得る。トランザクションを非限定的な例として本明細書では使用しているが、任意の適切なデータがブロックチェーンに記憶され得ること(例えば、ドキュメント、画像、ビデオ、オーディオ)も考えられる。例示的なトランザクションは、価値のあるもの(例えば、資産、製品、サービス、および通貨)の交換を含み得るがこれに限定されない。トランザクションデータは、ブロックチェーン内に変更不可能な形で記憶される。すなわち、トランザクションデータを変更することはできない。
【００３２】
ブロックに記憶する前に、トランザクションデータはハッシュ化される。ハッシュ化は、トランザクションデータ(文字列データとして提供される)を固定長のハッシュ値(文字列データとしても提供される)に変換するプロセスである。ハッシュ値を逆ハッシュ化してトランザクションデータを取得することはできない。ハッシュ化は、トランザクションデータにおけるわずかな変化でさえも完全に異なるハッシュ値という結果になることを保証している。さらに、上述したように、ハッシュ値は固定長である。すなわち、トランザクションデータのサイズに関係なく、ハッシュ値の長さは固定される。ハッシュ化は、ハッシュ関数によってトランザクションデータを処理してハッシュ値を生成することを含む。ハッシュ関数の例は、256ビットハッシュ値を出力するセキュアなハッシュアルゴリズム(SHA)-256を含むがこれに限定されない。
【００３３】
複数のトランザクションのトランザクションデータがハッシュ化されブロックに記憶される。例えば、2つのトランザクションのハッシュ値が提供されると、それら自身がハッシュ化され別のハッシュを提供する。このプロセスは、すべてのトランザクションがブロックに記憶されるように、単一のハッシュ値が提供されるまで繰り返される。このようなハッシュ値は、Merkleルートハッシュと称され、ブロックのヘッダに記憶される。トランザクションについての何らかの変化は、そのハッシュ値における変化、最終的に、Merkleルートハッシュにおける変化をもたらすことになる。
【００３４】
ブロックは、コンセンサスプロトコルを介してブロックチェーンに追加される。ブロックチェーンネットワーク内の複数のノードは、コンセンサスプロトコルに関与し、ブロックがブロックチェーンに追加されるようにする作業を行う。そのようなノードをコンセンサスノードと称する。上述したように、PBFTは、コンセンサスプロトコルの非限定的な例として使用される。コンセンサスノードは、コンセンサスプロトコルを実行してトランザクションをブロックチェーンに追加し、ブロックチェーンネットワークの総合的な状態を更新する。
【００３５】
さらに詳細には、コンセンサスノードは、ブロックヘッダを生成し、ブロック内のトランザクションのすべてをハッシュ化し、単一のハッシュ値がブロック内のすべてのトランザクションに対して提供される(Merkleルートハッシュ)まで、ハッシュ値がペアになるように組み合わせてさらなるハッシュ値を生成する。このハッシュがブロックヘッダに追加される。コンセンサスノードはまた、ブロックチェーン内の最新ブロック(すなわち、ブロックチェーンに追加された最終ブロック)のハッシュ値を決定する。コンセンサスノードはまた、ノンス値およびタイムスタンプをブロックヘッダに追加する。
【００３６】
一般に、PBFTは、Byzantine障害(例えば、正常に動作していないノード、不正ノード)に耐性がある実用的Byzantineステートマシンの複製を提供する。このことは、障害が生じるであろうことを想定すること(例えば、独立したノードの故障の存在および/またはコンセンサスノードによって送信される操作メッセージを想定すること)によってPBFTでは実現される。PBFTでは、コンセンサスノードは、プライマリコンセンサスノードおよびバックアップコンセンサスノードを含むシーケンスにおいて提供される。プライマリコンセンサスノードは、周期的に変更され、トランザクションは、ブロックチェーンネットワークの系全体状態に関して合意に至ったブロックチェーンネットワーク内のすべてのコンセンサスノードによってブロックチェーンに追加される。このプロセスにおいては、メッセージは、コンセンサスノード間で送信され、各コンセンサスノードは、メッセージが指定のピアノードから受信されたことを証明し、メッセージが送信中に変更されなかったことを検証する。
【００３７】
PBFTでは、多様な局面において、コンセンサスプロトコルが、同じ状態で開始するすべてのコンセンサスノードに提供される。はじめに、クライアントは、サービス動作を発動する(例えば、ブロックチェーンネットワーク内のトランザクションを実行する)ためにプライマリコンセンサスノードに要求を送信する。要求を受信したことに応答して、プライマリコンセンサスノードは、バックアップコンセンサスノードに要求をマルチキャストする。バックアップコンセンサスノードが要求を実行し、各々がクライアントに応答を送信する。クライアントは、閾値数の応答が受信されるまで待機する。いくつかの例においては、クライアントは、f+1個の応答が受信されるまで待機する、ここで、fは、ブロックチェーンネットワーク内で許容され得る、障害のあるコンセンサスノードの最大数である。目標達成は、ブロックチェーンに追加されることになるレコードの順で十分な数のコンセンサスノードが合意に至ることであり、レコードは、受理されるか拒否される。
【００３８】
いくつかのブロックチェーンネットワークにおいては、暗号化がトランザクションのプライバシーを維持管理するために実施される。例えば、ブロックチェーンネットワーク内の他のノードがトランザクションの詳細を理解することができないように、2つのノードがトランザクションをプライベートな状態を維持することを望む場合には、ノードはトランザクションデータを暗号化し得る。暗号化方法の例は、対称暗号化および非対称暗号化を含むがこれらに限定されない。対称暗号化とは、暗号化(平文から暗号文を生成すること)および復号(暗号文から平文を生成すること)の両方に関して単一の鍵を使用する暗号化プロセスを指す。対称暗号化においては、同一の鍵が複数のノードで利用可能であるため、各ノードがトランザクションデータを暗号化/復号し得る。
【００３９】
非対称暗号化は、各々が秘密鍵と公開鍵とを含む鍵ペアを使用しており、秘密鍵はそれぞれのノードにのみに対して既知となっており、公開鍵はブロックチェーンネットワーク内の他のノードのいずれかまたはすべてに対して既知となっている。あるノードは、別のノードの公開鍵を使用してデータを暗号化し、暗号化されたデータは、他のノードの秘密鍵を使用して復号され得る。例えば、図2を再び参照すれば、関与者Aは、関与者Bの公開鍵を使用してデータを暗号化し、暗号化されたデータを関与者Bに送信し得る。関与者Bは、その秘密鍵を使用して、暗号化されたデータ(暗号文)を復号し、元のデータ(平文)を抽出し得る。ノードの公開鍵で暗号化されたメッセージのみが、ノードの秘密鍵を使用して復号され得る。
【００４０】
非対称暗号化は、トランザクション内の関与者がトランザクション内の他の関与者だけでなくトランザクションの有効性を確認することを可能にするデジタル署名を提供するために使用される。例えば、あるノードは、メッセージをデジタル的に署名し得るし、別のノードは、関与者Aのデジタル署名に基づいてメッセージがそのノードによって送信されたことを確認し得る。デジタル署名はまた、メッセージが送信中に改竄されていないことを保証するために使用され得る。例えば、図2を再び参照すれば、関与者Aは、メッセージを関与者Bに送信しようとしている。関与者Aは、メッセージのハッシュを生成し、その後、その秘密鍵を使用して、ハッシュを暗号化して、暗号化したハッシュとしてデジタル署名を提供する。関与者Aは、デジタル署名をメッセージに付け加え、デジタル署名付きのメッセージを関与者Bに送信する。関与者Bは、関与者Aの公開鍵を使用してデジタル署名を復号し、ハッシュを抽出する。関与者Bは、メッセージをハッシュ化し、ハッシュを比較する。ハッシュが同一である場合には、関与者Bは、メッセージが確かに関与者Aからのものであり改竄されていないことを確認することができる。
【００４１】
図3は、系全体状態同期プロセス中の、例えば図2のブロックチェーンネットワーク212といったブロックチェーンネットワークの軽量ノード310とブロックチェーンノード320との間のインタラクションの例を図示している。系全体状態同期プロセスは、図3に示したステップで進められる。305において、軽量ノード310は、初めに、同期トリガ条件を検出する。例えば、同期トリガ条件は、軽量ノード310が最新の同期ポイントからのブロックの数などといった最新の同期ポイントからの設定閾値を超過したことを示し得る。他の例では、同期トリガ条件は、軽量ノード310によって検出され同期プロセスを開始するために使用されるブロックチェーンノード320の指定のイベントであり得る。例として、軽量ノード310は、ブロックチェーンノード320からイベントメッセージを受信し、それに応じて、イベントメッセージを受信したことに基づいて同期プロセスを開始し得る。いくつかの他の例では、同期トリガ条件は、軽量ノード310によって提供されユーザまたはエンティティが能動的に例えば手動で同期プロセスをトリガすることを可能にするサービスインターフェースを介した外部呼出を表し得る。
【００４２】
310において、軽量ノード310は、ステップ305における同期トリガ条件の検出に基づいて系全体状態同期要求を生成する。特に、軽量ノード310は、範囲リスト、例えば、アカウントレコードが同期されることになるアドレスまたは識別子のリストを取り出し得る。同期要求はまた、同期のためのブロックの高さを識別し得る。本明細書に記載しているように、ブロックの高さは、同期されることになる第1のブロックと、ジェネシスブロック、すなわち、0であるブロックの高さを有するブロックとの間のチェーン内のブロックの数を表す。
【００４３】
315において、軽量ノード310は、同期要求をブロックチェーンノード320に送信する。同期要求は、軽量ノード310を管理するまたさもなければ軽量ノード310に関連付けられたエンティティの識別情報を表す、識別情報証明書を含み得る。下記で説明しているように、識別情報証明書は、軽量ノード310によるアクセスについて権限を与えられているブロックチェーン内のデータ、例えば、識別情報証明書に関連付けられたアドレスを有するアカウントレコード、および軽量ノード310によるアクセスについて権限を与えられていないブロックチェーン内のデータ、例えば、軽量ノード310を管理するエンティティ以外のエンティティに関するアドレスを有するアカウントレコードを決定するために使用され得る。
【００４４】
325において、ブロックチェーンノード320は、同期要求におけるブロックの高さに対応するブロックチェーンの系全体状態を表す元のMPTを識別する。例えば、ブロックチェーンノードは、ブロックの高さに対応するブロックチェーン内のブロックのブロックヘッダに記憶されているMPTを元のMPTとして識別し得る。ブロックチェーンネットワークの系全体状態構造を表す元のMPTの例を図4Aに図示している。
【００４５】
330において、ブロックチェーンノード320は、元のMPTの系全体状態構造に含まれるアドレスに対応するリーフブロックを識別する。ブロックチェーンノード320は、元のMPTを解析し、各アカウントレコードに関連付けられたアドレスが軽量ノード310によるアクセスについて権限を与えられているかどうかを決定し得る。例えば、ブロックチェーンノード320は、それが軽量ノード310のエンティティに関連付けられたアドレスを含んでいる場合には、軽量ノード310がアカウントレコードにアクセスする権限を与えられていると決定する。
【００４６】
335において、ブロックチェーンノード320は、元のMPTに基づいた隔離型MPTを生成する。隔離型MPTは、軽量ノード310によるアクセスについて権限を与えられている元のMPTからのアカウントレコードのサブセットのみを含む。
【００４７】
いくつかの実施形態においては、ブロックチェーンノード320は、ブロックチェーンノード320上に記憶されるアクセス制御テーブルにアクセスすることによって、隔離型MPTを生成する。アクセス制御テーブルは、軽量ノード310によるアクセスについて権限を与えられている元のMPTの系全体状態データ構造で表される個々のアカウントレコードを決定するために使用され得る。アクセス制御テーブルは、ブロックチェーンネットワークの軽量ノードに関連付けられたエンティティについてのパーミッションを指定し得る。例えば、アクセス制御テーブルは、異なる識別情報クラスに割り当てられたエンティティがセキュアなアカウントレコードにアクセスするために異なるパーミッションレベルを有することができるように、各エンティティに関連付けられた識別情報クラスを指定し得る。例として、識別情報クラスのための1つのパーミッションレベルは、エンティティが特定のエンティティに関連付けられたすべてのアカウントレコードにアクセスする権限を与えられていることを示し得る。
【００４８】
いくつかの事例においては、アクセス制御テーブルによって指定されたパーミッションは、軽量ノードがアカウントデータにアクセスする権限を与えられているパーミッション設定されたアカウントアドレスのセットを含み得る。そのような事例においては、ブロックチェーンノード320は、パーミッション設定されたアカウントアドレスのセットを使用して、軽量ノード310によるアクセスについてパーミッション設定されているアカウントレコード、例えば、パーミッション設定されたアカウントアドレスを含むアカウントレコード、および軽量ノード310によるアクセスについてパーミッション設定されていないアカウントレコード、例えば、パーミッション設定されたアカウントアドレスのセットに含まれていないアカウントアドレスを含むアカウントレコードを識別する。ブロックチェーンノード320は、アクセスについてパーミッション設定されていないアカウントレコードを元のMPTによって表される系全体状態データ構造から除外するように、隔離型MPTを生成する。
【００４９】
340において、ブロックチェーンノード320は、ステップ315において受信した同期要求に対する応答として軽量ノード310に隔離型MPTを送信する。345において、軽量ノード310は、隔離型MPTに基づいてローカルで維持管理されている系全体状態データおよび同期ポイントを更新する。例えば、軽量ノード310は、次の同期ポイントまで、ローカルで維持管理されている系全体状態として隔離型MPTにおいて指定された系全体状態データ構造を記憶し得る。
【００５０】
図4Aは、ブロックチェーンノードについてのMPT400によって表される系全体状態データ構造の例を図示している。この例においては、MPT400は、軽量ノード、例えば、軽量ノード310から系全体状態同期要求を受信したことに応答して、ブロックチェーンノード、例えば、ブロックチェーンノード320によって生成される。いくつかのケースにおいては、MPT400は、特定のブロックの高さのブロックがチェーンに追加された時点におけるブロックチェーンネットワークの系全体状態を表す。
【００５１】
いくつかのケースにおいては、MPT400の系全体状態データ構造は、各アカウントレコードによって表されるアカウントを識別する公開鍵に従って体系化される。上記で述べたように、MPTは、アカウントレコードを記憶する、リーフノード(例えば、422A、422B)と、多数の値(例えば、26文字の各々または16進数の16桁の各々)を子ノードにマッピングする「ルータ」として機能し、アカウントレコードを記憶もし得る、ブランチノード(例えば、416A、420)と、その子ノードのすべてに共通しているキー部分を含む、拡張ノード(例えば、406B、410A、418B)とを含む。上記で説明しているように、MPT(例えば、422A、422B)内のリーフノードの各々は、ブロックチェーンネットワーク内の特定のアカウントに関連付けられた公開鍵と、アカウント残高などといった特定のアカウントに関連付けられた状態データとを含む、アカウントレコードである。加えて、各ブランチノードはまた、MPT内のブランチノードの位置に対応するキーを用いてアカウントレコードを記憶し得る。
【００５２】
上述したように、MPT400は、軽量ノードによるアクセスについて権限を与えられているアカウントレコード、例えば、軽量ノードに関連付けられたエンティティのアドレスを含むアカウントレコード、および軽量ノードによるアクセスについて権限を与えられていないアカウントレコードを含む。
【００５３】
図4Aに図示した例では、MPT400の領域400Bに含まれるアカウントレコードは軽量ノード310によるアクセスについて権限を与えられていない一方で、領域400Aに含まれるアカウントレコードは軽量ノードによるアクセスについて権限を与えられている。
【００５４】
図4Bは、図3に図示した軽量ノードについての隔離型MPT405によって表される系全体状態データ構造の例を図示している。この例においては、隔離型MPT405は、図4Aに図示した元のMPT400に基づいて、ブロックチェーンノード、例えば、ブロックチェーンノード320によって生成される。隔離型MPT405は、軽量ノードがアクセスする権限を与えられていないアカウントレコードを除外する。例えば、MPT405は、アカウントレコード418Cおよび418Dを含むMPT400の領域400B内のすべてのノードを除外する。上述したように、これらのアカウントレコードは、軽量ノードによるアクセスについて権限を与えられていないため、したがって、隔離型MPT405から除外される。
【００５５】
図4Bに図示した例では、(上記で説明しているように、リーフおよびブランチノードにおける)各アカウントレコードならびに元のMPT400のそれらの親および子要素を解析し、アカウントレコードまたはデータ要素が軽量ノードによるアクセスについて権限を与えられているかどうかを決定することに基づいて、隔離型MPT405は生成される。いくつかの事例においては、本決定は、ブロックチェーンノード上に記憶されるアクセス制御テーブルにおいて識別されるパーミッション設定されたアドレスを識別することに基づく。例えば、アカウントレコード422Aおよび422Bに含まれるキー「0x3F06」および「0x313F」は、アクセス制御テーブルに含まれており、その結果、アカウントレコード422Aおよび422Bは隔離型MPT405に含まれる。その一方、アカウントレコード418Cおよび418Dに含まれるキー「0x4E06」および「0x4E3F」は、アクセス制御テーブルに含まれていないため、したがって、隔離型MPT405から除外される。
【００５６】
図4Bに示しているように、MPT400のアカウントレコード422Aおよび422Bからルートノード402まで経路上の中間ノードは、隔離型MPT405において保たれる。これらの中間ノードは、MPT400のブランチノード(例えば、416A、420)および拡張ノード(例えば、406B、410A、418B)を含む。
【００５７】
図5は、本明細書の実施形態により実行され得るプロセス500の例を図示している。いくつかの実施形態においては、プロセス500は、1つまたは複数のコンピューティングデバイスを使用して実行される1つまたは複数のコンピュータ実行可能プログラムを使用して行われ得る。
【００５８】
510において、ブロックチェーンノードは、軽量ノードから同期要求を受信する。例えば、ブロックチェーンネットワークのブロックチェーンノード320は、ブロックチェーンネットワークの系全体状態のための同期要求を受信する。同期要求は、軽量ノード310から受信され、軽量ノード310に関連付けられたエンティティについての識別子などの軽量ノード310の識別情報を含む。同期要求は、例えば、最新の以前の同期ポイントに関連付けられたブロックといった、ジェネシスブロックからのブロックの数を表すブロックの高さを含み得る。
【００５９】
上述したように、同期要求は、最終同期ポイント以後に閾値数のブロックがブロックチェーンネットワークに追加されたなどの同期トリガ条件を検出したことに基づいて、または軽量ノードと、ブロックチェーンノードと、ブロックチェーンネットワークとの間で系全体状態データ構造の同期が必要になったというブロックチェーンネットワークにおける指定のイベントの発生に基づいて、生成され得る。
【００６０】
520において、ブロックチェーンノードは、軽量ノードの識別情報に関連付けられた1つまたは複数のパーミッションを識別する。いくつかのケースにおいては、軽量ノードの識別情報に関連付けられた1つまたは複数のパーミッションを識別するステップは、ブロックチェーンネットワークの複数の軽量ノードの複数の識別情報について1つまたは複数のパーミッションを指定するアクセス制御テーブルにアクセスするステップと、軽量ノードの識別情報についてアクセス制御テーブルにおいて指定された1つまたは複数のパーミッションを識別するステップとを含む。いくつかの実施形態においては、アクセス制御テーブルは、ブロックチェーンネットワークの複数の軽量ノードの複数の識別情報の各々に関連付けられた識別情報クラスと、アクセス制御テーブルに含まれる各識別情報クラスに関連付けられたパーミッションとを含む。いくつかのケースにおいては、1つまたは複数のパーミッションは、軽量ノードの識別情報がパーミッション設定されたアカウントアドレスのセットに関連付けられたアカウントレコードにアクセスする権限を与えられていることを指定するパーミッションを含む。
【００６１】
530において、ブロックチェーンノードは、複数のアカウントレコードを含むとともにブロックの高さに関連付けられた元の系全体状態データ構造(例えば、MPT400)を決定する。例えば、ブロックチェーンノード320は、ブロックの高さに関連付けられたブロックがブロックチェーンに追加された時点におけるブロックチェーンネットワークの系全体状態データ構造を表す元のMPT400を決定する。上述したように、元のMPT400は、軽量ノード310によるアクセスについて権限を与えられているアカウントレコードを含む。
【００６２】
540において、ブロックチェーンノードは、軽量ノード310によるアクセスについて権限を与えられている複数のアカウントレコードのサブセットを識別する。例えば、ブロックチェーンノード320は、アクセス制御リスト内のパーミッション設定されたアドレスとして指定されたアドレスを含むとともにブロックチェーンノード320へのアクセスについて権限を与えられている、アカウントレコードを識別する。
【００６３】
550において、ブロックチェーンノードは、軽量ノードによるアクセスについて権限を与えられている複数のアカウントレコードのサブセットのみを含む隔離型系全体状態データ構造を生成する。例えば、ブロックチェーンノード320は、元のMPT400の領域400Bからアカウントレコードを除外した隔離型MPT405を生成する。いくつかのケースにおいては、隔離型MPTを生成するステップは、隔離型MPTを作成するように元のMPTを修正するステップであって、軽量ノードによってアクセス可能ではないと決定されたすべてのアカウントレコードを元のMPTから除去するステップと、ブランチの各々のルートハッシュのみそのまま残してすべてのアカウントレコードが除去された元のMPTのブランチを除去するステップとを含む、修正するステップを含む。いくつかの実施形態においては、アカウントレコードは、軽量ノードがアカウントレコードに対するリードアクセスを有していないことを1つまたは複数のパーミッションが示している場合には、軽量ノードによってアクセス可能ではないと決定される。いくつかのケースにおいては、隔離型MPTを生成するステップは、軽量ノードに対してアクセス可能となっている元のMPT内のアカウントレコードを識別するステップであって、アカウントレコードは、元のMPTの特定のノードにある、ステップと、アカウントレコードを記憶している特定のノードからMPTのルートノードまでの元のMPTにおける経路を識別するステップと、アカウントレコードを記憶している特定のノードからMPTのルートノードまでの経路に沿って元のMPTに位置する中間ノードを識別するステップと、隔離型MPTに中間ノードを含めるステップとを含む。
【００６４】
560において、ブロックチェーンノードは、隔離型系全体状態データ構造を含む軽量ノードに同期要求に対する応答を送信する。例えば、ブロックチェーンノード320は、ステップ510において受信した同期要求に対する応答として軽量ノード310に隔離型MPT405を送信する。軽量ノード310は、次の同期ステップまでブロックチェーンネットワークのローカルで記憶されている系全体状態として隔離型MPTを記憶し得る。図4Aおよび4Bによって説明するとともに示しているように、隔離型MPT405は、元のMPTと同一の系全体状態データ構造を指定しているが、あるアカウントレコードを除外して、軽量ノード310によるアクセスについて権限を与えられていないアカウントレコードに軽量ノード310がアクセスする必要なく軽量ノード310をブロックチェーンノード320と同期することを可能にしている。
【００６５】
いくつかの実施形態においては、隔離型MPT405を受信すると、軽量ノード310は、そのローカルバージョンの隔離型MPTをブロックチェーンノードから返信された更新バージョンの隔離型MPTと置換し得る。
【００６６】
図6は、本明細書の実施形態による、装置600のモジュールの例を図示している。装置600は、コンソーシアムブロックチェーンネットワークなどのブロックチェーンネットワークによって維持管理されるブロックチェーン上に記憶される慎重に扱うべきデータを保護するように構成されたブロックチェーンノードの実施形態であり得る。装置600は、上記で説明した実施形態に対応し得るし、装置600は、ブロックチェーンネットワークの軽量ノードから同期要求を受信するための受信部または受信モジュール610であって、同期要求は、軽量ノードの識別情報を含む、受信部または受信モジュール610と、軽量ノードの識別情報に関連付けられた1つまたは複数のパーミッションを識別するための第1の識別部または識別モジュール620と、複数のアカウントレコードを含む元の系全体状態構造を決定するための決定部または決定モジュール630であって、各アカウントレコードは、アカウントレコードに関連付けられたアカウントについての状態情報を記憶する、決定部または決定モジュール630と、1つまたは複数のパーミッションに基づいて、軽量ノードによるアクセスについて権限を与えられている複数のアカウントレコードのサブセットを識別するための第2の識別部または識別モジュール640と、元の系全体状態データ構造に基づいた隔離型系全体状態構造を生成するための生成部または生成モジュール650であって、隔離型系全体状態構造は、軽量ノードによるアクセスについて権限を与えられている複数のアカウントレコードのサブセットのみを含む、生成部または生成モジュール650と、隔離型系全体状態データ構造を含む軽量ノードに応答を送信するための送信部または送信モジュール660とを含む。
【００６７】
上記の実施形態において示したシステム、装置、モジュール、またはユニットは、コンピュータチップまたはエンティティを使用して実装され得る、または、ある機能を有する製品を使用して実装され得る。典型的な実施形態デバイスは、コンピュータであり、コンピュータは、パーソナルコンピュータ、ラップトップコンピュータ、セルラ電話、カメラ電話、スマートフォン、携帯情報端末、メディアプレーヤ、ナビゲーションデバイス、電子メール送受信デバイス、ゲームコンソール、タブレットコンピュータ、ウェアラブルデバイス、またはこれらのデバイスの任意の組合せであり得る。
【００６８】
装置内の各ユニットの機能および役割の実施プロセスについては、前回の方法における対応するステップの実施プロセスを参照することが可能である。簡潔にするために詳細はここでは省略する。
【００６９】
装置の実施形態が方法の実施形態に基本的に対応するため、関連する部分については、方法の実施形態における関連する説明を参照されたい。上記で説明した装置の実施形態は一例に過ぎない。別個の部分として説明したユニットは、物理的に分離され得るしまたはされ得ない。ユニットとして図示した部分は、物理ユニットであり得るしまたはあり得ないし、1つの位置にあり得るし、または多数のネットワークユニットに分散され得る。モジュールの一部またはすべては、本明細書のソリューションの目的を達成するための実際の要求に基づいて選択され得る。当業者は、創造的努力無しで本明細書の実施形態を理解および実施できよう。
【００７０】
図6に再び戻れば、それがブロックチェーンネットワークによって維持管理されるブロックチェーン上に記憶される慎重に扱うべきデータを保護するように構成されるブロックチェーンノードの内部機能モジュールおよび構造を図示しているものとして解釈できよう。本質的な実行の主体は、電子デバイスであり得るし、電子デバイスは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサの実行可能な命令を記憶しているメモリとを含む。
【００７１】
本明細書において説明した技法は、いくつかの技術的効果生み出す。例えば、隔離型系全体状態構造(例えば、MPT)を作成するための技法は、ブロックチェーンネットワーク内の軽量ノードがブロックチェーンネットワークのアクセス制御パーミッションに違反することなく系全体状態構造に基づいてトランザクションを検証することを可能にしている。このことは、ブロックチェーンネットワークにおけるデータアクセスのより効率的な制御を可能にしており、そのことがよりセキュアなネットワークをもたらし得る。加えて、隔離型系全体状態構造を作成する技法は、非隔離型系全体状態構造と整合性を有している構造をもたらす。このことは、軽量ノードが非隔離型系全体状態構造と同一のプロセスを使用して隔離型系全体状態構造に基づいてトランザクションを検証することを可能にし得るし、それによって、アクセス制御を実施するために軽量ノードを更新する必要性をいくらか軽減している。さらに他の実施形態においては、上記技法は、ブロックチェーンネットワークにおける透明性とデータ保護との間のバランスをとる。特に、ブロックチェーン設計者は、システム構築に直面すると、解決困難な問題に直面することになる。一方では、ブロックチェーンは、透過的な可監査性がすべてであり、共有分散型台帳によって信頼性を達成している。他方では、企業のトランザクションは、多数の理由によりすべての関与者の間で共有されるべきではない慎重に扱うべきデータを頻繁に取り扱う。上記技法は、関与者のデータを保護する一方で、同時に分散的な信頼性および透明性の利点を保持している。
【００７２】
発明特定事項の説明した実施形態は、単独または組合せで1つまたは複数の特徴を含み得る。
【００７３】
いくつかの実施形態においては、アクションは、ブロックチェーンネットワーク内のブロックチェーンノードによって、ブロックチェーンネットワークの軽量ノードから同期要求を受信するステップであって、同期要求は、軽量ノードの識別情報および同期要求に関連付けられたブロックの高さを含む、ステップと、ブロックチェーンノードによって、軽量ノードの識別情報に関連付けられた1つまたは複数のパーミッションを識別するステップと、ブロックチェーンノードによって、ブロックの高さに関連付けられた、複数のアカウントレコードを含む、元の系全体状態構造を決定するステップであって、各アカウントレコードは、アカウントレコードに関連付けられたアカウントについての状態情報を記憶し、元の系全体状態構造は、ブロックの高さに関連付けられたブロックがブロックチェーンに追加された時点におけるブロックチェーンネットワークの状態を表す、ステップと、ブロックチェーンノードによって、1つまたは複数のパーミッションに基づいて、軽量ノードによるアクセスについて権限を与えられている複数のアカウントレコードのサブセットを識別するステップと、ブロックチェーンノードによって、元の系全体状態データ構造に基づいた隔離型系全体状態構造を生成するステップであって、隔離型系全体状態構造は、軽量ノードによるアクセスについて権限を与えられている複数のアカウントレコードのサブセットのみを含む、ステップと、ブロックチェーンノードによって、隔離型系全体状態データ構造を含む軽量ノードに応答を送信するステップとを含む。
【００７４】
他の実施形態は、対応するシステムと、装置と、コンピュータ記憶デバイス上に符号化された、方法のアクションを行うように構成される、コンピュータプログラムとを含む。
【００７５】
これらの実施形態および他の実施形態の各々は、以下の特徴の1つまたは複数を必要に応じて含む。
【００７６】
いくつかのケースにおいては、軽量ノードの識別情報に関連付けられた1つまたは複数のパーミッションを識別するステップは、ブロックチェーンネットワークの複数の軽量ノードの複数の識別情報について1つまたは複数のパーミッションを指定するアクセス制御テーブルにアクセスするステップと、軽量ノードの識別情報についてアクセス制御テーブルにおいて指定された1つまたは複数のパーミッションを識別するステップとを含む。
【００７７】
いくつかの実施形態においては、アクセス制御テーブルは、ブロックチェーンネットワークの複数の軽量ノードの複数の識別情報の各々に関連付けられた識別情報クラスと、アクセス制御テーブルに含まれる各識別情報クラスに関連付けられたパーミッションとを含む。
【００７８】
いくつかの実施形態においては、1つまたは複数のパーミッションは、軽量ノードの識別情報がパーミッション設定されたアカウントアドレスのセットに関連付けられたアカウントレコードにアクセスする権限を与えられていることを指定するパーミッションを含む。
【００７９】
いくつかの実施形態においては、元の系全体状態構造は、元のMerkle Patricia Trie(MPT)であり、隔離型系全体状態構造は、隔離型MPTである。
【００８０】
いくつかの実施形態においては、隔離型MPTを生成するステップは、隔離型MPTを作成するように元のMPTを修正するステップであって、軽量ノードによってアクセス可能ではないと決定されたすべてのアカウントレコードを元のMPTから除去するステップと、ブランチの各々のルートハッシュのみそのまま残してすべてのアカウントレコードが除去された元のMPTのブランチを除去するステップとを含む、修正するステップを含む。
【００８１】
いくつかの実施形態においては、アカウントレコードは、軽量ノードがアカウントレコードに対するリードアクセスを有していないことを1つまたは複数のパーミッションが示している場合には、軽量ノードによってアクセス可能ではないと決定される。
【００８２】
いくつかの実施形態においては、隔離型MPTを生成するステップは、軽量ノードに対してアクセス可能となっている元のMPT内のアカウントレコードを識別するステップであって、アカウントレコードは、元のMPTの特定のノードにあり、特定のノードは、ブランチノードまたはリーフノードである、ステップと、アカウントレコードを記憶している特定のノードからMPTのルートノードまでの元のMPTにおける経路を識別するステップと、アカウントレコードを記憶している特定のノードからMPTのルートノードまでの経路に沿って元のMPTに位置する中間ノードを識別するステップと、隔離型MPTに中間ノードを含めるステップとを含む。
【００８３】
本明細書はまた、1つまたは複数のプロセッサに結合されるとともに命令を記憶している1つまたは複数の非一時的コンピュータ可読記憶媒体を提供しており、命令は、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに本明細書で提供した方法の実施形態による動作を行わせる。
【００８４】
本明細書は、本明細書で提供している方法を実施するためのシステムをさらに提供している。システムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合されるとともに命令を記憶しているコンピュータ可読記憶媒体とを含み、命令は、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに本明細書で提供した方法の実施形態による動作を行わせる。
【００８５】
発明特定事項の実施形態ならびに本明細書において説明したアクションおよび動作は、デジタル電子回路の形で、有形に具現化されたコンピュータソフトウェアまたはファームウェアの形で、本明細書において開示した構造およびそれらの構造的均等物を含むコンピュータハードウェアの形で、またはそれらの組合せのうちの1つまたは複数で実装され得る。本明細書において説明した発明特定事項の実施形態は、データ処理装置による実行のためにまたはデータ処理装置の処理を制御するために、コンピュータプログラムキャリア上に符号化された、例えばコンピュータプログラム命令の1つまたは複数のモジュールといった1つまたは複数のコンピュータプログラムとして実装され得る。例えば、コンピュータプログラムキャリアは、そこに符号化または記憶されている命令を有する1つまたは複数のコンピュータ可読記憶媒体を含み得る。キャリアは、磁気ディスク、光磁気ディスク、もしくは光ディスク、ソリッドステートドライブ、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、または他のタイプの媒体などといった、有形非一時的コンピュータ可読媒体であり得る。あるいはまたは加えて、キャリアは、データ処理装置による実行に適した受信機装置への伝送のために情報を符号化するために生成された、人為的に生成した伝搬信号、例えば、機械生成された電気信号、光信号、または電磁気信号であり得る。コンピュータ記憶媒体は、機械可読ストレージデバイス、機械可読ストレージ回路基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1つまたは複数の組合せであり得るもしくは一部であり得る。コンピュータ記憶媒体は伝搬信号ではない。
【００８６】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、エンジン、スクリプト、またはコードとも称し得るまたは記述し得る、コンピュータプログラムは、コンパイル型もしくはインタプリタ型言語、または宣言型もしくは手続き型言語を含む、任意の形式のプログラミング言語で書かれ得るし、スタンドアロンプログラムとして、またはモジュール、コンポーネント、エンジン、サブルーチン、もしくはコンピューティング環境における実行に適した他のユニットとして、といったことを含む任意の形式で、デプロイされ得る。環境は、1つまたは複数のロケーションにおいてデータ通信ネットワークによって相互接続される1つまたは複数のコンピュータを含み得る。
【００８７】
コンピュータプログラムは、ファイルシステム内のファイルに対応し得るが、必ずしも必要ではない。コンピュータプログラムは、例えば、マークアップ言語ドキュメントに記憶されている1つまたは複数のスクリプトといった、他のプログラムまたはデータを保持するファイルの一部に、当該プログラム専用の単一のファイルに、または、例えば、1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイルといった、複数の協調ファイルに、記憶され得る。
【００８８】
コンピュータプログラムの実行のためのプロセッサは、例として、汎用および特殊用途マイクロプロセッサの両方、ならびに任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般的に、プロセッサは、プロセッサに結合されている非一時的コンピュータ可読媒体からデータだけでなく実行のためのコンピュータプログラムの命令も受信することになる。
【００８９】
「データ処理装置」という用語は、例として、プログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイス、およびマシンを含む。データ処理装置は、特殊用途ロジック回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)、またはGPU(グラフィック処理ユニット)を含み得る。装置はまた、ハードウェアに加えて、コンピュータプログラムのための実行環境を作成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つまたは複数の組合せを構成するコードを含み得る。
【００９０】
本明細書において説明したプロセスおよびロジックフローは、1つまたは複数のコンピュータプログラムを実行し、入力データを処理して出力を生成することによって処理を行う、1つまたは複数のコンピュータもしくはプロセッサによって行われ得る。プロセスおよびロジックフローはまた、例えばFPGA、ASIC、またはGPUといった特殊用途ロジック回路によって、または、特殊用途ロジック回路と1つまたは複数のプログラマブルコンピュータとの組合せによって、実装され得る。
【００９１】
コンピュータプログラムの実行に適したコンピュータは、汎用もしくは特殊用途マイクロプロセッサもしくはその両方、または任意の他の種類の中央処理ユニットに基づき得る。一般的に、中央処理ユニットは、リードオンリーメモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受信することになる。コンピュータの要素は、命令を実行するための中央処理ユニットと、命令およびデータを記憶するための1つまたは複数のメモリデバイスとを含み得る。中央処理ユニットおよびメモリは、特殊用途ロジック回路によって補完され得る、またはそれに組み込まれ得る。
【００９２】
一般的に、コンピュータは、1つまたは複数の記憶デバイスを含むことになる、または、1つまたは複数の記憶デバイスからデータを受信もしくは1つまたは複数の記憶デバイスにデータを送信することが動作可能なように結合されることになる。記憶デバイスは、例えば、磁気ディスク、光磁気ディスク、もしくは光ディスク、ソリッドステートドライブ、または任意の他のタイプの非一時的コンピュータ可読媒体であり得る。しかしながら、コンピュータは、そのようなデバイスを必ずしも有する必要はない。そのため、コンピュータは、ローカルおよび/またはリモートにある1つまたは複数のメモリなどといった、1つまたは複数の記憶デバイスに結合され得る。例えば、コンピュータは、コンピュータの統合コンポーネントである1つまたは複数のローカルメモリを含み得る、または、コンピュータは、クラウドネットワークにある1つまたは複数のリモートメモリに結合され得る。さらに、コンピュータは、数例挙げるとすれば、例えば、モバイル電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、Global Positioning System(GPS)受信機、または例えばユニバーサルシリアルバス(USB)フラッシュドライブなどのポータブルストレージデバイスといった別のデバイスに組み込まれ得る。
【００９３】
コンポーネントは、直接または1つまたは複数の中間コンポーネントを介して互いに電気的または光学的などといった通信可能なように接続することによって互いに「結合」され得る。コンポーネントは、コンポーネントの1つが他のものに統合されている場合も互いに「結合」され得る。例えば、プロセッサ(例えば、L2キャッシュコンポーネント)に統合されている記憶コンポーネントは、プロセッサに「結合」される。
【００９４】
ユーザとのインタラクションを提供するために、本明細書において説明した発明特定事項の実施形態は、ユーザに情報を表示するための、例えば、LCD(液晶ディスプレイ)モニタといった、表示デバイスと、例えば、キーボード、および例えば、マウス、トラックボールまたはタッチパッドなどのポインティングデバイスといった、ユーザがコンピュータに入力を提供することができる、入力デバイスとを有するコンピュータ上で実装され得る、または、そのようなコンピュータと通信するように構成され得る。同様に、他の種類のデバイスがユーザとのインタラクションを提供するために使用され得る。例えば、ユーザに提供されるフィードバックは、例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックといった任意の形式の感覚フィードバックであり得るし、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形式で受信され得る。加えて、コンピュータは、ユーザによって使用されるデバイスにドキュメントを送信することおよびユーザによって使用されるデバイスからドキュメントを受信することによって、例えば、ユーザのデバイス上のウェブブラウザから受信した要求に応答してウェブブラウザにウェブページを送信することによって、または、例えばスマートフォンもしくは電子タブレットといったユーザデバイス上で動作するアプリとのインタラクションを行うことによって、ユーザとのインタラクションを行い得る。また、コンピュータは、メッセージングアプリケーションを動作する例えばスマートフォンといったパーソナルデバイスにテキストメッセージまたは他の形式のメッセージを送信し、その返信としてユーザから応答メッセージを受信することによって、ユーザとのインタラクションを行い得る。
【００９５】
本明細書は、システム、装置、およびコンピュータプログラムコンポーネントに関連して「ように構成される」という用語を使用している。特定の処理またはアクションを行うように構成される1つまたは複数のコンピュータのシステムとは、処理においてシステムに処理またはアクションを行わせるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せがインストールされているシステムを意味する。特定の処理またはアクションを行うように構成される1つまたは複数のコンピュータプログラムとは、データ処理装置によって実行されると装置に処理またはアクションを行わせる命令を含む1つまたは複数のプログラムを意味する。特定の処理またはアクションを行うように構成される特殊用途ロジック回路とは、処理またはアクションを行う電子ロジックを有する回路を意味する。
【００９６】
本明細書は多くの特定の実施形態の詳細を含んでいるが、これらを、特許請求の範囲そのものによって定義される、主張しているものについての範囲に対する限定として解釈すべきではなく、むしろ特定の実施形態に固有のものであり得る特徴の説明として解釈すべきである。別個の実施形態に即して本明細書において説明したある特徴もまた、組み合わせることで単一の実施形態で実現され得る。反対に、単一の実施形態に即して説明した様々な特徴もまた、別々に複数の実施形態でまたは任意の適切なサブコンビネーションで実現され得る。さらに、ある組合せで動作するものとして特徴を上記で説明している場合があるが、たとえ最初はそのように主張していたとしても、いくつかのケースにおいては、主張した組合せのうちの1つまたは複数の特徴をその組合せから削除し得るし、主張したものをサブコンビネーションまたはサブコンビネーションの変形とし得る。
【００９７】
同様に、処理を特定の順序で図面に図示するとともに特許請求の範囲に記載しているが、このことを、示した特定の順序でもしくは一連の順序でそのような処理を行う必要があると理解すべきではないし、または、望ましい結果を達成するために図示した処理のすべてを行う必要があると理解すべきではない。ある環境においては、マルチタスク処理および並行処理が有利となり得る。さらに、上記で説明した実施形態における様々なシステムモジュールおよびコンポーネントの分離がすべての実施形態においてそのような分離を必要とすると理解すべきではなく、説明したプログラムコンポーネントおよびシステムは一般的に単一のソフトウェア製品に一緒に統合され得るまたは複数のソフトウェア製品にパッケージ化され得ると理解されたい。
【００９８】
発明特定事項の特定の実施形態を説明してきた。他の実施形態も以下の特許請求の範囲の範囲内にある。例えば、特許請求の範囲に記載のアクションは、異なる順序で行われ得るし、それでも望ましい結果を達成し得る。一例として、添付の図面に図示したプロセスは、望ましい結果を達成するために示した特定の順序または一連の順序を必ずしも必要とするわけではない。いくつかのケースにおいては、マルチタスク処理およびパラレル処理が有利となり得る。
【符号の説明】
【００９９】
110  ネットワーク
208  トランザクション管理
210  インターフェース
310  軽量ノード
320  ブロックチェーンノード
610  受信部
620  第1の識別部
630  決定部
640  第2の識別部
650  生成部
660  送信部
【図１】
0006821053.tif 000002
【図２】
0006821053.tif 000003
【図３】
0006821053.tif 000004
【図４Ａ】
0006821053.tif 000005
【図４Ｂ】
0006821053.tif 000006
【図５】
0006821053.tif 000007
【図６】
0006821053.tif 000008