(57)【特許請求の範囲】
【請求項１】
ブロックチェーンネットワークによって維持されるブロックチェーンに記憶された機密データを保護するためのコンピュータで実行される方法であって、
前記ブロックチェーンネットワーク内のブロックチェーンノードによって、前記ブロックチェーンの特定のブロックを読み取ることの要求を受信するステップであって、前記要求が、前記ブロックチェーンネットワークの軽量ノードから受信され、前記軽量ノードの識別IDを含み、前記特定のブロックが、前記特定のブロックに関連付けられた複数のトランザクションを含む元のマークルツリーを含む、ステップと、
前記ブロックチェーンノードによって、前記軽量ノードの前記識別IDに関連付けられた許可を識別するステップと、
前記ブロックチェーンノードによって、前記特定のブロックに含まれる前記元のマークルツリーに基づいて、分離されたマークルツリーを生成するステップであって、前記分離されたマークルツリーが、前記識別された許可に基づいて前記軽量ノードによってアクセス可能であると判断された、前記元のマークルツリーからのトランザクションのみを含み、前記分離されたマークルツリーが、前記元のマークルツリーと一致する、ステップと、
前記ブロックチェーンノードによって、前記分離されたマークルツリーを含む応答を前記軽量ノードに送信するステップとを含む、
コンピュータで実行される方法。
【請求項２】
前記特定のブロックに含まれる前記元のマークルツリーに基づいて前記分離されたマークルツリーを生成するステップが、
前記分離されたマークルツリーを生成するように、前記元のマークルツリーを変更するステップを含み、前記元のマークルツリーを変更するステップが、
前記元のマークルツリーから、前記軽量ノードによってアクセスできないと判断されたすべてのトランザクションを削除するステップと、
ブランチの各々のルートハッシュのみをそのまま残して、すべてのトランザクションが削除された前記元のマークルツリーの前記ブランチを削除するステップとを含む、
請求項1に記載のコンピュータで実行される方法。
【請求項３】
前記軽量ノードがトランザクションの読取りアクセス権を持たないことを前記許可が示す場合、前記トランザクションは前記軽量ノードによってアクセス可能でないと判断される、
請求項2に記載のコンピュータで実行される方法。
【請求項４】
前記複数のトランザクションの各々が、前記トランザクションの1人または複数人の参加者に関連付けられた1つまたは複数の識別IDを含む、
請求項1に記載のコンピュータで実行される方法。
【請求項５】
前記識別IDが識別クラスに関連付けられ、前記許可が前記識別クラスに関連付けられ、前記ブロックチェーンノードが、前記識別クラスに関連付けられた識別IDに対して前記識別クラスに関連付けられた許可を実施するように構成される、
請求項4に記載のコンピュータで実行される方法。
【請求項６】
前記識別クラスがレギュレータクラスであり、前記レギュレータクラスに関連付けられた前記許可が、前記ブロックチェーンネットワーク内のすべてのトランザクションが前記レギュレータクラスに関連付けられた識別IDにとってアクセス可能であることを示す、
請求項5に記載のコンピュータで実行される方法。
【請求項７】
前記識別クラスが一般クラスであり、前記一般クラスに関連付けられた前記許可が、前記識別IDが参加者である前記ブロックチェーンネットワーク内のトランザクションのみが前記識別IDにとってアクセス可能であることを示す、
請求項5に記載のコンピュータで実行される方法。
【請求項８】
前記軽量ノードが前記分離されたマークルツリーに基づいて前記ブロックの完全性を検証できるようにするのに十分な場合にのみ、前記分離されたマークルツリーは前記元のマークルツリーと一致する、
請求項1に記載のコンピュータで実行される方法。
【請求項９】
1つまたは複数のプロセッサに結合され、かつ前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに請求項1〜8のいずれか一項に記載の方法を実行させる命令を記憶する、
非一時的コンピュータ可読記憶媒体。
【請求項１０】
コンピューティングデバイスと、
前記コンピューティングデバイスに結合され、かつ前記コンピューティングデバイスによって実行されると、前記コンピューティングデバイスに請求項1〜8のいずれか一項に記載の方法を実行させる命令を記憶するコンピュータ可読記憶デバイスとを含む、
システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ブロックチェーンネットワークにおけるデータ分離に関する。
【背景技術】
【０００２】
コンセンサスネットワークおよび/またはブロックチェーンネットワークと呼ばれることもある分散型台帳システム(Distributed ledger system: DLS)によって、参加しているエンティティは安全かつ不変にデータを記憶できる。DLSは、一般に、任意の特定の使用事例(たとえば暗号通貨など)を参照せずにブロックチェーンネットワークと呼ばれる。ブロックチェーンネットワークのタイプの例には、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、およびコンソーシアムブロックチェーンネットワークがあり得る。パブリックブロックチェーンネットワークは、すべてのエンティティがDLSを使用し、コンセンサスプロセスに参加するためにオープンである。特定のエンティティに対してプライベートブロックチェーンネットワークが提供されており、読取りおよび書込み許可を中央で制御する。コンソーシアムブロックチェーンネットワークは、コンセンサスプロセスを制御するエンティティの選択グループに提供され、アクセス制御層を含む。
【０００３】
ブロックチェーンネットワークは、様々なタイプのノードを含み得る。完全参加ノード(fully-participating node)(以下「ブロックチェーンノード」と呼ぶ)は、ブロックチェーンに追加するためにトランザクションの新しいブロックを構築し、検証しようとすることによって、ブロックチェーンネットワークのコンセンサスプロセスに参加する。軽量ノードは、ブロックチェーンネットワークのコンセンサスプロセスに参加せず、ブロックチェーンのそれら自体の内部表現を完全には同期しない場合がある。たとえば、軽量ノードは、ブロックチェーン内の特定のブロックのすべてのトランザクションデータではなく、ブロックヘッダ情報のみを同期し得る。
【０００４】
プライベートまたはコンソーシアムのブロックチェーンネットワークでは、ノード(軽量ノードなど)は、たとえば、軽量ノードに関連付けられた識別ID(identity)が参加したトランザクションなど、ブロックチェーンからいくつかのトランザクションを読み取る許可のみを有し得る。そのような場合、軽量ノードは、特定のブロックのブロックチェーンノードを照会し、アクセスできないトランザクションが削除されたブロックの表現(マークルツリーなど)が返され得る。このようにして構築されたマークルツリーは、ブロック内のトランザクションを表すマークルツリー全体と一致しない場合があり、これは、ノードがブロックの正確な表現を持たないため、軽量ノードでエラーが発生する可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００５】
本明細書の実装形態は、ブロックチェーンネットワーク内のすべてのノードにブロックチェーン内のブロックの一貫した表現を依然として提供しながら、ブロックチェーンネットワークにおいてデータ分離を実施するためのコンピュータで実行される方法を含む。より詳細には、本明細書の実装形態は、要求側ノードが分離されるデータを含まず、要求されたブロックを表すマークルツリー全体と依然として一致するマークルツリーを生成することを対象とする。
【０００６】
いくつかの実装形態では、アクションは、ブロックチェーンネットワーク内のブロックチェーンノードによって、ブロックチェーンの特定のブロックを読み取ることの要求を受信することであり、要求は、ブロックチェーンネットワークの軽量ノードから受信され、軽量ノードの識別IDを含み、特定のブロックは、特定のブロックに関連付けられた複数のトランザクションを含む元のマークルツリーを含む、ことと、ブロックチェーンノードによって、軽量ノードの識別IDに関連付けられた許可を識別することと、ブロックチェーンノードによって、ブロックに含まれる元のマークルツリーに基づいて、分離されたマークルツリーを生成することであり、分離されたマークルツリーは、識別された許可に基づいて軽量ノードによってアクセス可能であると判断された、元のマークルツリーからのトランザクションのみを含み、分離されたマークルツリーは、元のマークルツリーと一致する、ことと、ブロックチェーンノードによって、分離されたマークルツリーを含む応答を軽量ノードに送信することとを含む。他の実装形態は、コンピュータ記憶デバイス上に符号化された方法のアクションを実行するように構成された対応するシステム、装置、およびコンピュータプログラムを含む。
【０００７】
これらおよび他の実装形態は各々、以下の特徴のうちの1つまたは複数を随意に含み得る。
【０００８】
いくつかの実装形態では、特定のブロックに含まれる元のマークルツリーに基づいて、分離されたマークルツリーを生成することは、元のマークルツリーから軽量ノードによってアクセスできないと判断されたすべてのトランザクションを削除することと、ブランチの各々のルートハッシュのみをそのまま残して、すべてのトランザクションが削除された元のマークルツリーのブランチを削除することとを含む、分離されたマークルツリーを生成するように、元のマークルツリーを変更することを含み得る。
【０００９】
いくつかの実装形態では、軽量ノードがトランザクションの読取りアクセス権を持たないことを許可が示す場合、トランザクションは軽量ノードによってアクセス可能でないと判断される。
【００１０】
いくつかの場合には、複数のトランザクションの各々は、トランザクションの1人または複数人の参加者に関連付けられた1つまたは複数の識別IDを含む。
【００１１】
いくつかの実装形態では、識別IDはある識別クラスに関連付けられ、許可はその識別クラスに関連付けられ、ブロックチェーンノードは、その識別クラスに関連付けられた識別IDに対してその識別クラスに関連付けられた許可を実施するように構成される。
【００１２】
いくつかの場合には、識別クラスはレギュレータクラスであり、レギュレータクラスに関連付けられた許可は、ブロックチェーンネットワーク内のすべてのトランザクションがレギュレータクラスに関連付けられた識別IDにとってアクセス可能であることを示す。
【００１３】
いくつかの実装形態では、識別クラスは一般クラスであり、一般クラスに関連付けられた許可は、識別IDが参加者であるブロックチェーンネットワーク内のトランザクションのみが識別IDにとってアクセス可能であることを示す。
【００１４】
いくつかの場合には、軽量ノードが分離されたマークルツリー内のハッシュに基づいて分離されたマークルツリーのトランザクションを検証できるようにするのに十分な場合にのみ、分離されたマークルツリーは元のマークルツリーと一致する。
【００１５】
本明細書は、1つまたは複数のプロセッサに結合され、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、本明細書で提供される方法の実装形態に従って動作を実行させる命令を記憶する1つまたは複数の非一時的コンピュータ可読記憶媒体も提供する。
【００１６】
本明細書は、本明細書で提供される方法を実装するためのシステムをさらに提供する。システムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、本明細書で提供される方法の実装形態に従って動作を実行させる命令を記憶する1つまたは複数のプロセッサに結合されたコンピュータ可読記憶媒体とを含む。
【００１７】
本明細書による方法は、本明細書で説明される態様および特徴の任意の組合せを含み得ることが諒解される。すなわち、本明細書による方法は、本明細書で具体的に説明した態様および特徴の組合せに限定されず、提供される態様および特徴の任意の組合せも含む。
【００１８】
本明細書の1つまたは複数の実装形態の詳細は、添付の図面および以下の説明に記載されている。本明細書の他の特徴および利点は、説明および図面、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１９】
【図１】本明細書の実装形態を実行するために使用できる例示的な環境を示す図である。
【図２】本明細書の実装形態による例示的な概念的アーキテクチャを示す図である。
【図３Ａ】本明細書の実装形態によるブロックチェーン内のブロックの例示的なマークルツリーを示す図である。
【図３Ｂ】本明細書の実装形態による分離されたトランザクションを含むブランチを含む図3Aの例示的なマークルツリーを示す図である。
【図３Ｃ】本明細書の実装形態による図3Aのマークルツリーに基づいて生成された例示的な分離されたマークルツリーを示す図である。
【図４】本明細書の実装形態に従って実行できる例示的なプロセスを示す図である。
【発明を実施するための形態】
【００２０】
様々な図面における同様の参照符号は、同様の要素を示す。
【００２１】
本明細書の実装形態は、ブロックチェーンネットワーク内のすべてのノードにブロックチェーン内のブロックの一貫した表現を依然として提供しながら、ブロックチェーンネットワークにおいてデータ分離を実施するためのコンピュータで実行される方法を含む。より詳細には、本明細書の実装形態は、要求側ノードが分離されるデータを含まず、要求されたブロックを表すマークルツリー全体と依然として一致するマークルツリーを生成することを対象とする。
【００２２】
いくつかの実装形態では、アクションは、ブロックチェーンネットワーク内のブロックチェーンノードによって、ブロックチェーンの特定のブロックを読み取ることの要求を受信することであり、要求は、ブロックチェーンネットワークの軽量ノードから受信され、軽量ノードの識別IDを含み、特定のブロックは、特定のブロックに関連付けられた複数のトランザクションを含む元のマークルツリーを含む、ことと、ブロックチェーンノードによって、軽量ノードの識別IDに関連付けられた許可を識別することと、ブロックチェーンノードによって、ブロックに含まれる元のマークルツリーに基づいて、分離されたマークルツリーを生成することであり、分離されたマークルツリーは、識別された許可に基づいて軽量ノードによってアクセス可能であると判断された、元のマークルツリーからのトランザクションのみを含み、分離されたマークルツリーは、元のマークルツリーと一致する、ことと、ブロックチェーンノードによって、分離されたマークルツリーを含む応答を軽量ノードに送信することとを含む。
【００２３】
本明細書の実装形態のさらなる内容を提供するために、上記で紹介したように、コンセンサスネットワーク(たとえば、ピアツーピアノードで構成される)およびブロックチェーンネットワークとも呼ばれる分散型台帳システム(DLS)によって、参加しているエンティティは、安全かつ不変にトランザクションを実行し、データを記憶できる。ブロックチェーンという用語は一般に、様々な暗号通貨ネットワークに関連付けられているが、任意の特定の使用事例を参照せずにDLSを一般的に指すために、本明細書ではブロックチェーンが使用される。上記で紹介したように、ブロックチェーンネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、またはコンソーシアムブロックチェーンネットワークとして提供できる。
【００２４】
パブリックブロックチェーンネットワークでは、コンセンサスプロセスは、コンセンサスネットワークのノードによって制御される。たとえば、数百、数千、さらには数百万ものエンティティがパブリックブロックチェーンネットワークに協働し、各々がパブリックブロックチェーンネットワーク内の少なくとも1つのノードを動作させる。したがって、パブリックブロックチェーンネットワークは、参加しているエンティティに関してパブリックネットワークと見なすことができる。いくつかの例では、ブロックが有効となり、ブロックチェーンネットワークのブロックチェーン(分散型台帳)に追加されるために、エンティティ(ノード)の大部分がすべてのブロックに署名しなければならない。パブリックブロックチェーンネットワークの例には、ピアツーピア支払いネットワークである様々な暗号通貨ネットワークがある。暗号通貨ネットワークは、ブロックチェーンと呼ばれる分散型台帳を活用することができる。しかしながら、上記のように、ブロックチェーンという用語は、任意の特定の暗号通貨ネットワークを特に参照せずに分散型台帳を一般的に指すために使用される。
【００２５】
一般に、パブリックブロックチェーンネットワークは、パブリックトランザクションをサポートする。パブリックトランザクションは、パブリックブロックチェーンネットワーク内のすべてのノードと共有され、グローバルブロックチェーンに記憶される。グローバルブロックチェーンは、すべてのノードにわたって複製されるブロックチェーンである。すなわち、すべてのノードは、グローバルブロックチェーンに関して完全な状態のコンセンサスにある。コンセンサスを達成するために(ブロックチェーンへのブロックの追加の合意など)、パブリックブロックチェーンネットワーク内にコンセンサスプロトコルが実装される。例示的なコンセンサスプロトコルは、限定はしないが、暗号通貨ネットワークに実装されたプルーフオブワーク(POW)を含む。
【００２６】
一般に、特定のエンティティに対してプライベートブロックチェーンネットワークが提供されており、読取りおよび書込み許可を中央で制御する。エンティティはどのノードが、ブロックチェーンネットワークに参加できるかを制御する。結果として、プライベートブロックチェーンネットワークは一般に、許可されたネットワークと呼ばれ、誰がネットワークに参加できるか、および参加のレベル(たとえば、いくつかのトランザクションのみへの参加など)を制限する。様々なタイプのアクセス制御機構を使用できる(たとえば、既存の参加者が新しいエンティティの追加に投票する、規制当局が入場を制御できる)。
【００２７】
一般に、コンソーシアムブロックチェーンネットワークは、参加しているエンティティの間でプライベートである。コンソーシアムブロックチェーンネットワークでは、コンセンサスプロセスは、認可されたノードのセットによって制御され、1つまたは複数のノードはそれぞれのエンティティ(たとえば、金融機関、保険会社など)によって動作される。たとえば、10のエンティティ(たとえば、金融機関、保険会社など)のコンソーシアムは、コンソーシアムブロックチェーンネットワークを動作させることができ、その各々は、コンソーシアムブロックチェーンネットワーク内の少なくとも1つのノードを動作させる。したがって、コンソーシアムブロックチェーンネットワークは、参加しているエンティティに関してプライベートネットワークと見なすことができる。いくつかの例では、ブロックが有効となり、ブロックチェーンに追加されるために、各エンティティ(ノード)がすべてのブロックに署名しなければならない。いくつかの例では、ブロックが有効となり、ブロックチェーンに追加されるために、少なくともエンティティ(ノード)のサブセット(たとえば、少なくとも7つのエンティティ)がすべてのブロックに署名しなければならない。
【００２８】
本明細書の実装形態は、ブロックチェーンネットワークの構成に基づいて特定のデータがいくつかの参加エンティティから分離され得るプライベートブロックチェーンネットワークを参照して本明細書でさらに詳細に説明される。しかしながら、本明細書の実装形態は、任意の適切なタイプのブロックチェーンネットワークで実現できると企図される。
【００２９】
本明細書の実装形態は、上記の文脈を考慮して本明細書でさらに詳細に説明される。より詳細には、上記で紹介したように、本明細書の実装形態は、要求側ノードが分離されるデータを含まず、要求されたブロックを表すマークルツリー全体と依然として一致するマークルツリーを生成することを対象とする。
【００３０】
いくつかの実装形態では、軽量ノードは、ネットワークに参加しているブロックチェーンノードに特定のブロックを要求することができる。ブロックチェーンノードは、軽量ノードが、ブロック内のいくつかのトランザクションを読み取る許可を有していないと判断できる。ブロックチェーンノードは、要求されたブロックを表すマークルツリー全体のコピーから、これらのトランザクションを削除できるが、削除されたトランザクションのみを含むツリーの任意のブランチのルートハッシュのみを残すことができる。そうすることで、軽量ノードを読取りが許可されていないトランザクションデータから効果的に分離でき、ブロックのマークルツリー全体と一致するブロックの表現を軽量ノードに提示することもできる。これによって、軽量ノードは、そこから分離されたトランザクションデータへのアクセス権を持っていなくても、ブロックの完全性を(マークルツリー内のハッシュを調べることで)検証できる。
【００３１】
図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は、3つのエンティティ、Entity_1(E1)、Entity_2(E2)、およびEntity_3(E3)を含み、各エンティティは、それぞれのトランザクション管理システム208を有する。
【００３４】
図示された例では、ホストサービス層204は、各トランザクション管理システム208のためのインターフェース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つ以上のエンティティ間で実行されるトランザクションに関連付けられた情報を記憶する。
【００３６】
図3Aは、本明細書の実装形態によるブロックチェーン内のブロック310の例示的なマークルツリー300を示す。図示のように、マークルツリー300は、ブロック内のすべてのデータのハッシュ値、ならびにブロックチェーン内の前のブロックのハッシュおよびナンス値を含むブロックヘッダを含む。ブロックヘッダは、マークルツリーにおいてそのすぐ下にある2つのハッシュ(325a、b)の連結であるルートハッシュも含む。
【００３７】
マークルツリー300のリーフノードは、ブロックチェーンのこの特定のブロック310に記録されたトランザクションを表すトランザクション305a〜dを含む。マークルツリー300は、ハッシュ315a〜dも含む。これらのハッシュ315a〜dの各々は、それぞれトランザクション305a〜dのトランザクションデータに基づいて生成されたハッシュ値である。たとえば、ハッシュ315aは、トランザクション305aのデータをSHA256ハッシュアルゴリズムへの入力として提供して、ハッシュ値315aを生成することによって生成され得る。いくつかの実装形態では、一意性が保証された任意のハッシュ関数を使用して、ハッシュ315a〜dを生成することができる。
【００３８】
マークルツリー300は、ハッシュ325a(「ハッシュ01」)および325b(「ハッシュ23」)も含む。ハッシュ325a〜bは、マークルツリーにおいてすぐ下にある2つのハッシュを連結することによって生成される。たとえば、ハッシュ325a(「Hash01」)は、ハッシュ315a(「Hash0」)および315b(「Hash1」)を連結することによって生成される。同様に、上記のように、ブロックヘッダ内のルートハッシュは、ハッシュ325aとハッシュ325bとを連結することによって構築される。
【００３９】
図3Aにグレーで陰影を付けて示されているトランザクション305a〜cは、ブロック310を要求するエンティティ(たとえば、軽量ノード)がアクセスする許可を持っていないトランザクションを表す。図3Bは、例示的なマークルツリー350を示しており、要求側エンティティがそこから分離されるトランザクションのみを含むマークルツリー300のブランチ335a、bは、ブランチを囲む破線のボックスによって示されている。
【００４０】
図3Cは、本明細書の実装形態による図3Aのマークルツリーに基づいて生成された例示的な分離されたマークルツリー390を示す。図示のように、前の図3Bで識別されたブランチ335aおよび335bは、分離されたマークルツリー390において削除されている。
【００４１】
いくつかの実装形態では、例390のような分離されたマークルツリーは、図3Aに示されるものなど、ソフトウェアアルゴリズムをマークルツリー全体に適用することによって生成することができる。1つの例示的なアルゴリズムでは、ブロックチェーンノードは、軽量ノードから、あるブロックを読み取ることの要求を受信する。ブロックチェーンノードは、要求されたブロック内のトランザクションをスキャンし、要求に含まれる識別属性および識別IDに関連付けられた許可に基づいて、軽量ノードが各トランザクションを読み取る許可を有するかどうかを判断する。
【００４２】
例示的なアルゴリズムでは、ブロックチェーンノードは、定義上はマークルツリーのリーフノードに記憶されるブロック内のトランザクションを順次スキャンする。トランザクションごとに、軽量ノードがトランザクションを読み取る許可を有する場合、ブロックチェーンノードは、次のトランザクションに移動する。ブロックチェーンノードが、軽量ノードが読み取る許可を有していないトランザクションTx_iを見つけた場合、ブロックチェーンノードは、軽量ノードが読み取る許可を有するトランザクションTx_jを再び見つけるまで、後続のトランザクションをスキャンし続ける。次いで、ブロックチェーンノードは、Tx_iからTx_(j-1)までのトランザクションのグループを削除し、軽量ノードは、そのすべてを読み取る許可を有していない。さらに、ブロックチェーンノードは、現在トランザクションを含まない任意のブランチをマークルツリーから削除し、その特定のブランチのルートハッシュのみを残す。図3Bおよび図3Cに示すように、このブランチ削除プロセスは、ブランチ335aおよび335bに適用される。
【００４３】
トランザクションのこのスキャンおよび処理は、マークルツリー内の最後のトランザクションが処理されるまで継続され、軽量ノードが読み取る許可を有するトランザクションを含むマークルツリーが取得される。この分離されたマークルツリーは、軽量ノードに返される。
【００４４】
図4は、本明細書の実装形態に従って実行できる例示的なプロセス400を示す。いくつかの実装形態では、例示的なプロセス400は、1つまたは複数のコンピューティングデバイスを使用して実行される1つまたは複数のコンピュータ実行可能プログラムを使用して実行され得る。
【００４５】
402で、ブロックチェーンノードは、ブロックチェーンネットワークの軽量ノードからブロックチェーンの特定のブロックを読み取ることの要求を受信する。要求は、軽量ノードの識別ID、および特定のブロックに関連付けられた複数のトランザクションを含む元のマークルツリーを含む特定のブロックを含む。いくつかの場合には、複数のトランザクションの各々は、トランザクションの1人または複数人の参加者に関連付けられた1つまたは複数の識別IDを含む。402から、方法400は404に進む。
【００４６】
404で、ブロックチェーンノードは、軽量ノードの識別IDに関連付けられた許可を識別する。いくつかの場合には、識別IDはある識別クラスに関連付けられ、許可はその識別クラスに関連付けられ、ブロックチェーンノードは、その識別クラスに関連付けられた識別IDに対してその識別クラスに関連付けられた許可を実施するように構成される。いくつかの実装形態では、識別クラスはレギュレータクラスであり、レギュレータクラスに関連付けられた許可は、ブロックチェーンネットワーク内のすべてのトランザクションがレギュレータクラスに関連付けられた識別IDにとってアクセス可能であることを示す。いくつかの場合では、識別クラスは一般クラスであり、一般クラスに関連付けられた許可は、識別IDが参加者であるブロックチェーンネットワーク内のトランザクションのみが識別IDにとってアクセス可能であることを示す。404から、方法400は406に進む。
【００４７】
406で、ブロックチェーンノードは、特定のブロックに含まれる元のマークルツリーに基づいて、分離されたマークルツリーを生成する。分離されたマークルツリーは、識別された許可に基づいて、軽量ノードによってアクセスできると判断される元のマークルツリーからのトランザクションのみを含む。いくつかの実装形態では、軽量ノードがトランザクションの読取りアクセス権を持たないことを許可が示す場合、トランザクションは軽量ノードによってアクセス可能でないと判断される。分離されたマークルツリーは、元のマークルツリーと一致する。いくつかの実装形態では、軽量ノードが分離されたマークルツリー内のハッシュに基づいて分離されたマークルツリーのトランザクションを検証できるようにするのに十分な場合にのみ、分離されたマークルツリーは元のマークルツリーと一致する。いくつかの場合には、分離されたマークルツリーを生成することは、元のマークルツリーから軽量ノードによってアクセスできないと判断されたすべてのトランザクションを削除することと、ブランチの各々のルートハッシュをそのまま残して、すべてのトランザクションが削除された元のマークルツリーのブランチを削除することを含む、分離されたマークルツリーを生成するように、元のマークルツリーを変更することを含む。406から、方法400は408に進む。
【００４８】
408で、ブロックチェーンノードは、分離されたマークルツリーを含む応答を軽量ノードに送信する。408から、方法400は停止する。
【００４９】
本明細書に記載された主題およびアクションおよび動作の実装形態は、デジタル電子回路、有形に具現化されたコンピュータソフトウェアまたはファームウェア、本明細書に開示される構造およびそれらの構造的均等物を含むコンピュータハードウェア、またはそれらの1つもしくは複数の組合せに実装することができる。本明細書に記載される主題の実装形態は、1つまたは複数のコンピュータプログラム、たとえば、データ処理装置によって実行される、またはデータ処理装置の動作を制御するためのコンピュータプログラムキャリア上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装することができる。キャリアは、有形の非一時的コンピュータ記憶媒体であってもよい。代替的にまたは追加として、キャリアは、人工的に生成された伝搬信号、たとえば、データ処理装置によって実行するための適切な受信機装置への送信のために情報を符号化するために生成された機械生成電気、光学、または電磁信号とすることができる。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムまたはシリアルアクセスメモリデバイス、またはそれらの1つもしくは複数の組合せとすることができ、またはその一部とすることができる。コンピュータ記憶媒体は、伝搬信号ではない。
【００５０】
「データ処理装置」という用語は、例として、プログラム可能プロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイスおよび機械を包含する。データ処理装置は、FPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)、またはGPU(グラフィックス処理ユニット)などの専用論理回路を含むことができる。装置は、ハードウェアに加えて、コンピュータプログラムの実行環境を生成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの1つまたは複数の組合せを構成するコードを含むこともできる。
【００５１】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、エンジン、スクリプト、またはコードとも呼ばれるまたは記述されることもあるコンピュータプログラムは、コンパイルもしくはインタープリタ型言語、宣言型言語もしくは手続き型言語を含む、任意の形式のプログラミング言語で記述することができ、それは、スタンドアロンプログラムとして、またはモジュール、コンポーネント、エンジン、サブルーチン、もしくはコンピューティング環境での実行に適した他のユニットとしてなど、あらゆる形式で展開でき、環境は、1つまたは複数の場所にデータ通信ネットワークによって相互接続された1つまたは複数のコンピュータを含む場合がある。
【００５２】
コンピュータプログラムは、必ずしも必要はないが、ファイルシステム内のファイルに対応し得る。コンピュータプログラムは、問題のプログラム専用の単一のファイル、あるいは、たとえば、1つもしくは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイルなど、複数のコーディネートされたファイルに、たとえば、マークアップ言語文書に記憶された1つもしくは複数のスクリプトなど、他のプログラムまたはデータを保持するファイルの一部に記憶することができる。
【００５３】
本明細書で記述されたプロセスおよび論理フローは、入力データ上で動作し、出力を生成することによって動作を実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のコンピュータによって実行することができる。プロセスおよび論理フローは、たとえばFPGAまたはASICまたはGPUなどの専用論理回路によって、または専用論理回路と1つまたは複数のプログラムされたコンピュータとの組合せによっても実行することができる。
【００５４】
コンピュータプログラムの実行に適したコンピュータは、汎用マイクロプロセッサもしくは専用マイクロプロセッサ、またはその両方、あるいは任意の他の種類の中央処理装置に基づき得る。一般に、中央処理装置は、読取り専用メモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受信する。コンピュータの要素は、命令を実行するための中央処理装置、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスを含むことができる。中央処理装置およびメモリは、専用論理回路によって補うまたはそれに組み込むことができる。
【００５５】
一般に、コンピュータは、少なくとも1つの非一時的コンピュータ可読記憶媒体(コンピュータ可読メモリとも呼ばれる)に結合される。コンピュータに結合された記憶媒体は、コンピュータの内部構成要素(たとえば、統合されたハードドライブ)または外部構成要素(たとえば、ユニバーサルシリアルバス(USB)ハードドライブもしくはネットワーク経由でアクセスされるストレージシステム)とすることができる。記憶媒体の例には、たとえば、磁気、磁気光学、または光ディスク、半導体ドライブ、クラウド記憶システムなどのネットワーク記憶リソース、または他のタイプの記憶媒体などがある。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、たとえば、ほんのいくつかの例を挙げれば、携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはユニバーサルシリアルバス(USB)フラッシュドライブなどのポータブルストレージデバイス中に組み込むことができる。
【００５６】
ユーザとの対話を提供するために、本明細書で説明する主題の実装は、情報をユーザに表示するためのディスプレイデバイス、たとえばLCD(液晶ディスプレイ)モニタ、およびユーザがコンピュータに入力を提供できる入力デバイス、たとえばキーボード、およびマウス、トラックボールまたはタッチパッドなどのポインティングデバイスを有するコンピュータ上に実装され、またはそれと通信するように構成され得る。他の種類のデバイスを使用して、ユーザとの対話を提供することもでき、たとえば、ユーザに提供されるフィードバックは、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックなど、任意の形態の感覚フィードバックとすることができ、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受信することができる。さらに、コンピュータは、たとえば、ウェブブラウザから受信された要求に応答して、ユーザのデバイス上のウェブブラウザにウェブページを送信することによってなど、ユーザによって使用されるデバイスとの間でドキュメントを送受信することによって、またはスマートフォンや電子タブレットなどのユーザデバイスで実行されているアプリと対話することによってユーザと対話することができる。また、コンピュータは、テキストメッセージまたは他の形態のメッセージをパーソナルデバイス、たとえば、メッセージングアプリケーションを実行しているスマートフォンに送信し、代わりに、ユーザから応答メッセージを受信することによって、ユーザと対話することができる。
【００５７】
本明細書は、システム、装置、およびコンピュータプログラム構成要素に関して「構成される」という用語を使用する。1つまたは複数のコンピュータのシステムが特定の動作またはアクションを実行するように構成されるとは、システムが、動作中、システムに動作またはアクションを実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをインストールしていることを意味する。1つまたは複数のコンピュータプログラムが特定の動作またはアクションを実行するように構成されるとは、1つまたは複数のプログラムが、データ処理装置によって実行されると、装置に動作またはアクションを実行させる命令を含むことを意味する。専用ロジック回路が特定の動作またはアクションを実行するように構成されるとは、その回路が動作またはアクションを実行する電子ロジックを有することを意味する。
【００５８】
本明細書は、多くの具体的な実装の詳細を含むが、これらは、特許請求の範囲自体によって定義される特許請求される範囲に対する限定ではなく、むしろ特定の実装形態に固有であり得る特徴の説明として解釈されるものとする。別個の実装形態の文脈において本明細書で説明されるいくつかの特徴は、単一の実装形態において組み合わせて実現することもできる。逆に、単一の実装形態の文脈で記載されている様々な特徴は、複数の実装形態で別々にまたは任意の適切な部分組合せで実現することもできる。さらに、特徴は、いくつかの組合せで作用するものとして上述され、当初はそのように特許請求され得るが、いくつかの場合、特許請求された組合せからの1つまたは複数の特徴を、組合せから削除することができ、特許請求の範囲は、部分組合せ、または部分組合せの変形を対象とし得る。
【００５９】
同様に、動作が図面に示され、特許請求の範囲に特定の順序で記載されているが、これは、そのような動作が、示された特定の順序で、または逐次的な順序で実行されること、あるいは望ましい結果を達成するために、図示されたすべての動作が実行されることを必要とするものとして理解されないものとする。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。さらに、上述した実装形態における様々なシステムモジュールおよび構成要素の分離は、すべての実装形態においてそのような分離を必要とするものと理解されないものとし、記述されたプログラム構成要素およびシステムを、一般に、単一のソフトウェア製品に一緒に組み入れることができ、または複数のソフトウェア製品にパッケージ化することができることを理解されたい。
【００６０】
主題の特定の実装形態が記載されている。他の実装形態は、以下の特許請求の範囲内にある。たとえば、特許請求の範囲に列挙されたアクションは、異なる順序で実行され、依然として望ましい結果を達成することができる。一例として、添付の図面に示されるプロセスは、望ましい結果を達成するために、示された特定の順序または逐次的な順序を必ずしも必要としない。いくつかの場合には、マルチタスキングおよび並列処理が有利であり得る。
【符号の説明】
【００６１】
100  環境
102  プライベートブロックチェーンネットワーク
106  コンピューティングデバイス
108  コンピューティングデバイス
110  ネットワーク
200  アーキテクチャ
202  エンティティ層
204  ホストサービス層
206  ブロックチェーンネットワーク層
208  トランザクション管理システム
210  インターフェース
212  ブロックチェーンネットワーク
214  ノード
216  ブロックチェーン
300  マークルツリー
305  トランザクション
310  ブロック
315  ハッシュ
325  ハッシュ
335  ブランチ
390  分離されたマークルツリー
400  プロセス
【図１】
0006816297.tif 000002
【図２】
0006816297.tif 000003
【図３Ａ】
0006816297.tif 000004
【図３Ｂ】
0006816297.tif 000005
【図３Ｃ】
0006816297.tif 000006
【図４】
0006816297.tif 000007