(57)【要約】      （修正有）【課題】パブリックサイドチェーンを使用してコンソーシアムブロックチェーンに記録されたデータの完全性を検証する。【解決手段】検証システムは、コンソーシアムブロックチェーンネットワークに初めに記録されたデータ項目に基づき生成された第１のデータダイジェストを検証ノードの各々に送信する。第１のデータダイジェストは、検証ノードにより署名されてパブリックブロックチェーンに記録される。検証システムは、コンソーシアムブロックチェーンネットワークからデータ項目を取得する要求を受信すると、データ項目に基づき第２のデータダイジェストを生成して検証ノードに送信する。検証ノードは、第２のデータダイジェストに署名して検証システムに返送する。検証システムは、記録された第１のデータダイジェストと返送された第２のデータダイジェストとを比較し、等しい場合はコンソーシアムブロックチェーンネットワークにそれを示す応答を送信する。【選択図】図５
2020145681.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実装方法であって、
コンソーシアムブロックチェーンネットワークに初めに記録されたデータ項目に基づき生成された第1のデータダイジェストを複数の検証ノードの各々に送信するステップであって、前記第1のデータダイジェストが、暗号で署名され、暗号署名済みの第1のデータダイジェストとしてパブリックブロックチェーンに記録される、ステップと、
前記データ項目を取得する要求を受信するステップと、
前記データ項目を取得する前記要求に基づき、前記データ項目に基づき第2のデータダイジェストを生成するステップと、
前記複数の検証ノードに前記第2のデータダイジェストを送信するステップであって、前記複数の検証ノードは、前記第2のデータダイジェストを暗号で署名し、暗号署名済みの第2のデータダイジェストを返す、ステップと、
前記記録された暗号署名済みの第1のデータダイジェストが、前記返された暗号署名済みの第2のデータダイジェストと一致することに基づき、前記データ項目を取得する要求に対する応答であって、前記データ項目が前記コンソーシアムブロックチェーンネットワークに初めに記録されてから前記データ項目が変更されていないことを示す応答を送信するステップを
を含む、コンピュータ実装方法。
【請求項２】
前記複数の検証ノードが、前記パブリックブロックチェーンに参加しているコンピューティングデバイスである、請求項1に記載のコンピュータ実装方法。
【請求項３】
前記パブリックブロックチェーンにスマートコントラクトを記録するステップをさらに含み、前記スマートコントラクトが、前記検証ノードから前記暗号署名済みの第2のデータダイジェストを受信することに応じて、前記検証ノードに金銭的報酬を提供するように構成される、請求項1に記載のコンピュータ実装方法。
【請求項４】
前記第1のデータダイジェストが、前記初めに記録されたデータ項目のハッシュを使用して生成される、請求項1に記載のコンピュータ実装方法。
【請求項５】
各検証ノードが、その検証ノードに関連付けられる秘密鍵を使用して、前記第1のデータダイジェストに暗号で署名するように構成される、請求項1に記載のコンピュータ実装方法。
【請求項６】
前記第1のデータダイジェストを前記複数の検証ノードに送信するステップが、前記パブリックブロックチェーンを管理するパブリックブロックチェーンネットワークに、前記第1のデータダイジェストをブロードキャストするステップを含む、請求項1に記載のコンピュータ実装方法。
【請求項７】
前記データ項目に関連付けられた識別子に基づき、前記パブリックブロックチェーンに記録された前記暗号署名済みの第1のデータダイジェストを識別するステップと、
前記パブリックブロックチェーンから前記暗号署名済みの第1のデータダイジェストを取得するステップと
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項８】
複数の動作を実行するようにコンピュータシステムによって実行可能な1つまたは複数の命令を記録するコンピュータ可読記録媒体であって、前記複数の動作が、
コンソーシアムブロックチェーンネットワークに初めに記録されたデータ項目に基づき生成された第1のデータダイジェストを複数の検証ノードの各々に送信する動作であって、前記第1のデータダイジェストが、暗号で署名され、暗号署名済みの第1のデータダイジェストとしてパブリックブロックチェーンに記録される、動作と、
前記データ項目を取得する要求を受信する動作と、
前記データ項目を取得する前記要求に基づき、前記データ項目に基づき第2のデータダイジェストを生成する動作と、
前記複数の検証ノードに前記第2のデータダイジェストを送信する動作であって、前記複数の検証ノードは、前記第2のデータダイジェストを暗号で署名し、暗号署名済みの第2のデータダイジェストを返す、動作と、
前記記録された暗号署名済みの第1のデータダイジェストが、前記返された暗号署名済みの第2のデータダイジェストと一致することに基づき、前記データ項目を取得する要求に対する応答であって、前記データ項目が前記コンソーシアムブロックチェーンネットワークに初めに記録されてから前記データ項目が変更されていないことを示す応答を送信する動作と
を含む、コンピュータ可読記録媒体。
【請求項９】
前記複数の検証ノードが、前記パブリックブロックチェーンに参加しているコンピューティングデバイスである、請求項8に記載のコンピュータ可読記録媒体。
【請求項１０】
前記複数の動作が、前記パブリックブロックチェーンにスマートコントラクトを記録する動作をさらに含み、前記スマートコントラクトが、前記検証ノードから前記暗号署名済みの第2のデータダイジェストを受信することに応じて、前記検証ノードに金銭的報酬を提供するように構成される、請求項8に記載のコンピュータ可読記録媒体。
【請求項１１】
前記第1のデータダイジェストが、前記初めに記録されたデータ項目のハッシュを使用して生成される、請求項8に記載のコンピュータ可読記録媒体。
【請求項１２】
各検証ノードが、その検証ノードに関連付けられる秘密鍵を使用して、前記第1のデータダイジェストに暗号で署名するように構成される、請求項8に記載のコンピュータ可読記録媒体。
【請求項１３】
前記第1のデータダイジェストを前記複数の検証ノードに送信する動作が、前記パブリックブロックチェーンを管理するパブリックブロックチェーンネットワークに、前記第1のデータダイジェストをブロードキャストする動作を含む、請求項8に記載のコンピュータ可読記録媒体。
【請求項１４】
前記複数の動作が、
前記データ項目に関連付けられた識別子に基づき、前記パブリックブロックチェーンに記録された前記暗号署名済みの第1のデータダイジェストを識別する動作と、
前記パブリックブロックチェーンから前記暗号署名済みの第1のデータダイジェストを取得する動作と
を含む、請求項8に記載のコンピュータ可読記録媒体。
【請求項１５】
システムであって、
1つまたは複数のコンピュータと、
前記1つまたは複数のコンピュータに相互に動作可能なように結合された1つまたは複数のコンピュータメモリデバイスであって、1つまたは複数の命令を記録した有形で、非一時的で、かつ機械可読な媒体を有する1つまたは複数のコンピュータメモリデバイスとを備え、
前記1つまたは複数の命令は、前記1つまたは複数のコンピュータによって実行されたときに複数の動作を実行し、前記複数の動作が、
コンソーシアムブロックチェーンネットワークに初めに記録されたデータ項目に基づき生成された第1のデータダイジェストを複数の検証ノードの各々に送信する動作であって、前記第1のデータダイジェストが、暗号で署名され、暗号署名済みの第1のデータダイジェストとしてパブリックブロックチェーンに記録される、動作と、
前記データ項目を取得する要求を受信する動作と、
前記データ項目を取得する前記要求に基づき、前記データ項目に基づき第2のデータダイジェストを生成する動作と、
前記複数の検証ノードに前記第2のデータダイジェストを送信する動作であって、前記複数の検証ノードは、前記第2のデータダイジェストを暗号で署名し、暗号署名済みの第2のデータダイジェストを返す、動作と、
前記記録された暗号署名済みの第1のデータダイジェストが、前記返された暗号署名済みの第2のデータダイジェストと一致することに基づき、前記データ項目を取得する要求に対する応答であって、前記データ項目が前記コンソーシアムブロックチェーンネットワークに初めに記録されてから前記データ項目が変更されていないことを示す応答を送信する動作と
を含む、システム。
【請求項１６】
前記複数の検証ノードが、前記パブリックブロックチェーンに参加しているコンピューティングデバイスである、請求項15に記載のシステム。
【請求項１７】
前記複数の動作が、前記パブリックブロックチェーンにスマートコントラクトを記録する動作をさらに含み、前記スマートコントラクトが、前記検証ノードから前記暗号署名済みの第2のデータダイジェストを受信することに応じて、前記検証ノードに金銭的報酬を提供するように構成される、請求項15に記載のシステム。
【請求項１８】
各検証ノードが、その検証ノードに関連付けられる秘密鍵を使用して、前記第1のデータダイジェストに暗号で署名するように構成される、請求項15に記載のシステム。
【請求項１９】
前記第1のデータダイジェストを前記複数の検証ノードに送信する動作が、前記パブリックブロックチェーンを管理するパブリックブロックチェーンネットワークに、前記第1のデータダイジェストをブロードキャストする動作を含む、請求項15に記載のシステム。
【請求項２０】
前記複数の動作が、
前記データ項目に関連付けられた識別子に基づき、前記パブリックブロックチェーンに記録された前記暗号署名済みの第1のデータダイジェストを識別する動作と、
前記パブリックブロックチェーンから前記暗号署名済みの第1のデータダイジェストを取得する動作と
をさらに含む、請求項15に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パブリックサイドチェーンを使用してコンソーシアムブロックチェーンに記憶されたデータの完全性を検証することに関する。
【背景技術】
【０００２】
コンセンサスネットワーク、および/またはブロックチェーンネットワークとも呼ばれる分散台帳システム(DLS)により、参加エンティティは安全に、および不変にデータを記憶することが可能になる。DLSは一般に、特定のユーザケースを参照せずに、ブロックチェーンネットワークと呼ばれる。ブロックチェーンネットワークのタイプの例は、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、およびコンソーシアムブロックチェーンネットワークを含むことができる。パブリックブロックチェーンネットワークは、すべてのエンティティがDLSを使用し、コンセンサスプロセスに参加するために公開されている。特定のエンティティに対してプライベートブロックチェーンネットワークが提供され、読取りおよび書込み許可を集中的に制御する。コンソーシアムブロックチェーンネットワークは、コンセンサスプロセスを制御するエンティティの選択グループに提供され、アクセス制御層を含む。
【０００３】
ブロックチェーンは、分散型で改ざん防止の分散データストレージ技術である。ユーザデータおよびコントラクトは論理的に動作され、パブリックな方法でチェーンに記憶される。多くのシナリオでは、ユーザはプライバシー保護の要件を満たす必要があり、彼らのデータおよびロジックが不正な第三者に漏洩されることを望まない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
暗号化はいくつかの特定のシナリオ設計のプライバシー保護を強化するために使用され得るが、ブロックチェーン動作の既存のプライバシー問題を解決するために、より汎用性の高い効率的な解決策が望まれる。
【課題を解決するための手段】
【０００５】
本明細書の実装形態は、ブロックチェーンネットワークのノードに関連付けられる、検証されるべきデータを記憶および取得するためのコンピュータ実装方法を含む。より具体的には、本明細書の実装形態は、いくつかの検証ノードを使用して1つまたは複数のコンソーシアムブロックチェーンネットワークノードに関連付けられる、検証されるべきデータのデータダイジェストを記憶することと、検証されるべきデータと記憶されたデータダイジェストを取得することとを対象とする。
【０００６】
いくつかの実装形態では、アクションは、コンソーシアムブロックチェーンネットワークによって維持されているコンソーシアムブロックチェーンにデータ項目(Data Item)を記憶するステップと、記憶されたデータ項目に基づいて第1のデータダイジェストを生成するステップと、各検証ノードが第1のデータダイジェストに暗号で署名し、その署名済の第1のデータダイジェストをパブリックブロックチェーンネットワークによって維持されるパブリックブロックチェーンに記憶するように、第1のデータダイジェストを検証ノードに送信するステップと、記憶されたデータ項目を取得する要求を受信するステップと、要求の受信に応じて、コンソーシアムブロックチェーンから要求されたデータ項目を取得するステップと、取得したデータ項目に基づいて、第2のデータダイジェストを生成するステップと、各検証ノードが第2のデータダイジェストに暗号で署名し、その署名済の第2のデータダイジェストを返すように、第2のデータダイジェストを検証ノードに送信するステップと、検証ノードから署名済の第2のデータダイジェストを受信するステップと、パブリックブロックチェーンから署名済の第1のデータダイジェストを取得するステップと、署名済の第1のデータダイジェストが署名済の第2のデータダイジェストと一致すると決定するステップと、決定に応じて、記憶されたデータ項目を取得する要求への応答を送信するステップであって、応答が、記憶されたデータ項目が記憶されてから変更されていないことを示す、ステップとを含む。他の実装形態は、本方法のアクションを実行するように構成され、コンピュータストレージデバイスに符号化された、対応するシステム、装置、およびコンピュータプログラムを含む。
【０００７】
いくつかの実装形態では、非一時的コンピュータ可読記録媒体可読記録媒体は、1つまたは複数のコンピュータに結合され、1つまたは複数のコンピュータによって実行可能な命令で、コンソーシアムブロックチェーンネットワークによって維持されているコンソーシアムブロックチェーンにデータ項目を記憶することと、記憶されたデータ項目に基づいて第1のデータダイジェストを生成することと、各検証ノードが第1のデータダイジェストに暗号で署名し、その署名済の第1のデータダイジェストをパブリックブロックチェーンネットワークによって維持されるパブリックブロックチェーンに記憶するように、第1のデータダイジェストを検証ノードに送信することと、記憶されたデータ項目を取得する要求を受信することと、要求の受信に応じて、コンソーシアムブロックチェーンから要求されたデータ項目を取得することと、取得したデータ項目に基づいて、第2のデータダイジェストを生成することと、各検証ノードが第2のデータダイジェストに暗号で署名し、その署名済の第2のデータダイジェストを返すように、第2のデータダイジェストを検証ノードに送信することと、検証ノードから署名済の第2のデータダイジェストを受信することと、パブリックブロックチェーンから署名済の第1のデータダイジェストを取得することと、署名済の第1のデータダイジェストが署名済の第2のデータダイジェストと一致すると決定することと、決定に応じて、記憶されたデータ項目を取得する要求への応答を送信することであって、応答が、記憶されたデータ項目が記憶されてから変更されていないことを示す、こととを行うように構成される。
【０００８】
いくつかの実装形態では、システムは1つまたは複数のコンピュータを含み、1つまたは複数のコンピュータ可読メモリは1つまたは複数のコンピュータに結合され、1つまたは複数のコンピュータによって実行可能な命令で、コンソーシアムブロックチェーンネットワークによって維持されているコンソーシアムブロックチェーンにデータ項目を記憶することと、記憶されたデータ項目に基づいて第1のデータダイジェストを生成することと、各検証ノードが第1のデータダイジェストに暗号で署名し、その署名済の第1のデータダイジェストをパブリックブロックチェーンネットワークによって維持されるパブリックブロックチェーンに記憶するように、第1のデータダイジェストを検証ノードに送信することと、記憶されたデータ項目を取得する要求を受信することと、要求の受信に応じて、コンソーシアムブロックチェーンから要求されたデータ項目を取得することと、取得したデータ項目に基づいて、第2のデータダイジェストを生成することと、各検証ノードが第2のデータダイジェストに暗号で署名し、その署名済の第2のデータダイジェストを返すように、第2のデータダイジェストを検証ノードに送信することと、検証ノードから署名済の第2のデータダイジェストを受信することと、パブリックブロックチェーンから署名済の第1のデータダイジェストを取得することと、署名済の第1のデータダイジェストが、受信された、署名済の第2のデータダイジェストと一致すると決定することと、決定に応じて、記憶されたデータ項目を取得する要求への応答を送信することであって、応答が、記憶されたデータ項目が記憶されてから変更されていないことを示す、こととを行うように構成される。これらおよび他の実装形態は、それぞれ任意で以下の特徴のうちの1つまたは複数を含み得る。
【０００９】
第1の特徴は、以下の特徴のいずれかと組合せ可能であり、検証ノードはパブリックブロックチェーンネットワークに参加しているコンピューティングデバイスである。
【００１０】
第2の特徴は、以下の特徴のいずれかと組合せ可能であり、パブリックブロックチェーンにスマートコントラクトを記憶するステップをさらに含み、スマートコントラクトは、要求された署名済の第2のデータダイジェストを検証ノードから受信することに応じて、検証ノードに金銭的報酬を提供するように構成される。
【００１１】
第3の特徴は、以下の特徴のいずれかと組合せ可能であり、第1のデータダイジェストを生成するステップは、記憶されたデータ項目のハッシュを計算するステップを含む。
【００１２】
第4の特徴は、以下の特徴のいずれかと組合せ可能であり、各検証ノードは、その検証ノードに関連付けられる秘密鍵を使用して、第1のデータダイジェストに暗号で署名するように構成される。
【００１３】
第5の特徴は、以下の特徴のいずれかと組合せ可能であり、第1のデータダイジェストを検証ノードに送信するステップは、第1のデータダイジェストをパブリックブロックチェーンネットワークにブロードキャストするステップを含む。
【００１４】
第6の特徴は、以下の特徴のいずれかと組合せ可能であり、パブリックブロックチェーンから署名済の第1のデータダイジェストを取得するステップが、記憶されたデータ項目に関連付けられ、かつパブリックブロックチェーンに記憶された識別子に基づいて、署名済の第1のデータダイジェストを識別するステップを含む。
【００１５】
本明細書はまた、1つまたは複数のプロセッサに結合され、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、本明細書で提供される方法の実装形態に従って動作を実行させる命令を記憶する1つまたは複数の非一時的コンピュータ可読記録媒体も提供する。
【００１６】
本明細書は、本明細書で提供される方法を実装するためのシステムをさらに提供する。本システムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、本明細書で提供される方法の実装形態に従って動作を実行させる命令を記憶する1つまたは複数のプロセッサに結合されるコンピュータ可読記録媒体とを提供する。
【００１７】
説明したブロックチェーンネットワークは、ブロックチェーンネットワークに記憶されているデータの完全性を検証するために使用することができる。コンセンサスプロセスに参加することができる多数のノードが関与するため、データの完全性が保証される。さらに、説明されている技法は、パブリックサイドチェーンにおけるノード参加を増やすために、スマートコントラクトに基づいてインセンティブメカニズムを提供する。
【００１８】
本明細書による方法は、本明細書で説明される態様および特徴の任意の組合せを含み得ることが理解される。すなわち、本明細書による方法は、本明細書で具体的に説明した態様および特徴の組合せに限定されず、提供される態様および特徴の任意の組合せも含む。
【００１９】
本明細書の1つまたは複数の実装形態の詳細は、添付の図面および以下の説明において記載されている。本明細書の他の特徴および利点は、説明および図面、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００２０】
【図１】本明細書の実装形態を実行するために使用することができる環境の例を示す図である。
【図２】本明細書の実装形態による概念的アーキテクチャの例を示す図である。
【図３】本明細書の実装形態による、本明細書の実装形態を実行するために使用することができるシステムの例を示す図である。
【図４】本明細書の態様による、コンソーシアムブロックチェーンネットワークおよび関連付けられるパブリックサイドチェーンネットワークにデータを記憶するプロセスの例を示す図である。
【図５】本明細書の態様による、コンソーシアムブロックチェーンネットワークからデータを取得し、パブリックサイドチェーンネットワークに基づいて取得したデータを検証するプロセスの例を示す図である。
【図６】本明細書の実装形態による、実行することができるプロセスの例を示す図である。
【図７】本明細書の実装形態による、装置のモジュールを示す図の例を示す図である。
【発明を実施するための形態】
【００２１】
様々な図面における同様の参照記号は、同様の要素を示す。
【００２２】
本明細書の実装形態は、ブロックチェーンネットワークのノードに関連付けられる、検証されるべきデータを記憶および取得するためのコンピュータ実装方法を含む。より具体的には、本明細書の実装形態は、いくつかの検証ノードを使用して1つまたは複数のコンソーシアムブロックチェーンネットワークノードに関連付けられる、検証されるべきデータのデータダイジェストを記憶することと、検証されるべきデータと記憶されたデータダイジェストを取得することとを対象とする。
【００２３】
本明細書の実装形態にさらなる文脈を提供するために、および上記で紹介したように、コンセンサスネットワーク(たとえば、ピアツーピアノードで構成される)およびブロックチェーンネットワークとも呼ばれることがある分散台帳システム(DLS)は、参加エンティティが安全に、および不変にトランザクションを実行し、データを記憶することを可能にする。ブロックチェーンという用語は、本明細書では、いかなる特定のユースケースも参照せずに、一般にDLSを指すために使用される。
【００２４】
ブロックチェーンは、トランザクションが不変であり、後で検証できるようにトランザクションを記憶するデータ構造である。ブロックチェーンは、1つまたは複数のブロックを含む。チェーン内の各ブロックは、前のブロックの暗号化ハッシュを含めることにより、チェーン内の直前のブロックにリンクされる。各ブロックは、タイムスタンプ、独自の暗号化ハッシュ、および1つまたは複数のトランザクションも含む。ブロックチェーンネットワークのノードによってすでに検証されたトランザクションは、ハッシュされ、マークルツリーに符号化される。マークルツリーは、ツリーのリーフノードのデータがハッシュされ、ツリーの各ブランチにおけるすべてのハッシュがブランチのルートにおいて連結されるデータ構造である。このプロセスはツリーをツリー全体のルートまで続け、ツリー内のすべてのデータを表すハッシュを記憶する。ツリーに記憶されているトランザクションであると見なされるハッシュは、ツリーの構造と一致しているかどうかを決定することによって、迅速に検証することができる。
【００２５】
ブロックチェーンはトランザクションを記憶するためのデータ構造であるが、ブロックチェーンネットワークは、1つまたは複数のブロックチェーンを管理、更新、維持するコンピューティングノードのネットワークである。上記で紹介したように、ブロックチェーンネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、またはコンソーシアムブロックチェーンネットワークとして提供することができる。
【００２６】
パブリックブロックチェーンネットワークでは、コンセンサスプロセスはコンセンサスネットワークのノードによって制御される。たとえば、数百、数千、さらには数百万ものエンティティがパブリックブロックチェーンネットワークに協力することができ、その各々が、パブリックブロックチェーンネットワーク内の少なくとも1つのノードを動作する。したがって、パブリックブロックチェーンネットワークは、参加エンティティに関してパブリックネットワークと見なすことができる。いくつかの例では、ブロックが検証され、ブロックチェーンネットワークのブロックチェーン(分散台帳)に追加されるために、エンティティ(ノード)の大半がすべてのブロックに署名する必要がある。例示的なパブリックブロックチェーンネットワークは、ブロックチェーンと呼ばれる分散台帳を活用する特定のピアツーピア決済ネットワークを含む。しかしながら、上述のように、ブロックチェーンという用語は、いかなる特定のブロックチェーンネットワークも特に参照することなく、一般に分散台帳を指すために使用される。
【００２７】
一般に、パブリックブロックチェーンネットワークはパブリックトランザクションをサポートする。パブリックトランザクションは、パブリックブロックチェーンネットワーク内のすべてのノードと共有され、グローバルブロックチェーンに記憶される。グローバルブロックチェーンは、すべてのノードにわたって複製されるブロックチェーンである。すなわち、すべてのノードは、グローバルブロックチェーンに関して完全な状態のコンセンサスにある。コンセンサス(たとえば、ブロックチェーンへのブロックの追加に関する合意)を達成するために、コンセンサスプロトコルがパブリックブロックチェーンネットワーク内に実装される。コンセンサスプロトコルの例は、これに限定されないが、プルーフオブワーク(POW)、プルーフオブステーク(POS)、およびプルーフオブオーソリティ(POA)を含む。POWは、本明細書において非限定的な例としてさらに参照される。
【００２８】
一般に、特定のエンティティに対してプライベートブロックチェーンネットワークが提供され、読取りおよび書込み許可を集中的に制御する。エンティティは、ブロックチェーンネットワークに参加することができるノードを制御する。その結果、プライベートブロックチェーンネットワークは、一般に、ネットワークに参加することを許可されるユーザと、彼らの参加レベル(たとえば、特定のトランザクションのみ)とを制限する、許可されたネットワークと呼ばれる。様々なタイプのアクセス制御メカニズムを使用することができる(たとえば、既存の参加者が新しいエンティティの追加に投票したり、規制当局が入場を制御したりすることができる)。
【００２９】
一般に、コンソーシアムブロックチェーンネットワークは、参加エンティティ間でプライベートである。コンソーシアムブロックチェーンネットワークでは、コンセンサスプロセスは承認されたノードのセットによって制御され、1つまたは複数のノードはそれぞれのエンティティ(たとえば、金融機関、保険会社など)によって動作される。たとえば、10のエンティティ(たとえば、金融機関、保険会社など)のコンソーシアムは、コンソーシアムブロックチェーンネットワークを動作することができ、その各々が、コンソーシアムブロックチェーンネットワーク内の少なくとも1つのノードを動作する。したがって、コンソーシアムブロックチェーンネットワークは、参加エンティティに関してプライベートネットワークと見なすことができる。いくつかの例では、ブロックが検証され、ブロックチェーンに追加されるために、各エンティティ(ノード)がすべてのブロックに署名する必要がある。いくつかの例では、ブロックが検証され、ブロックチェーンに追加されるために、少なくともエンティティ(ノード)のサブセット(たとえば、少なくとも7つのエンティティ)がすべてのブロックに署名する必要がある。
【００３０】
ブロックチェーンは、パブリックまたはプライベートのピアツーピアネットワークにおけるトランザクションを記録する、改ざん防止の共有デジタル台帳である。台帳はネットワーク内のすべてのメンバーノードに分散され、ネットワーク内で発生する資産取引の履歴はブロックに永続的に記録される。トランザクションに参加する前に、ブロックチェーン上のノードは様々な技法を使用して計算を実行する必要がある場合がある。現在の解決策では、各ブロックチェーンは独立しているため、1つのブロックチェーンのノードは他のチェーンと通信することができない。たとえば、ノードは他のブロックチェーンからデータを読み取ったり、他のブロックチェーンとデータを交換したりすることはできない。さらに、たとえノードが計算を実行するために他のブロックチェーンからのデータを必要としない場合でも、複雑な計算ロジックとプロトコルが必要な場合、そのような計算をブロックチェーン上で完全に実行すると、ブロックチェーンの多くの時間と計算リソースを消費する可能性がある。
【００３１】
本明細書の実装形態については、参加エンティティ間で公開されているコンソーシアムブロックチェーンネットワークを参照して、本明細書においてさらに詳しく説明される。しかしながら、本明細書の実装形態は、任意の適切なタイプのブロックチェーンネットワークにおいて実現することができると考えられる。
【００３２】
本明細書の実装形態は、上記の文脈を考慮して本明細書でさらに詳細に説明される。より具体的には、上記で紹介したように、本明細書の実装形態は、信頼できる実行環境においてクロスチェーンデータを動作できるオフチェーンスマートコントラクトサービスを提供することを対象とする。
【００３３】
具体的には、説明されている技法は、コンソーシアムブロックチェーンに記憶されるデータの完全性を検証するために使用されるパブリック補助ブロックチェーン(「サイドチェーン」とも呼ばれる)を導入する。サイドチェーンは公開であるため、多数のノードがコンセンサスプロセスに参加することができ、それによって、サイドチェーン内のデータの完全性が保証される。コンソーシアムブロックチェーン上の各トランザクションの表現は、サイドチェーンに記憶される。したがって、コンソーシアムブロックチェーンのデータを変更するために、攻撃者はパブリックサイドチェーンに対応する変更も行わなければならない。パブリックサイドチェーンのコンセンサスプロセスに関与するノードの数のため、パブリックサイドチェーンにおいてそのような変更を行うことは、コンソーシアムブロックチェーンにおいて行うよりもはるかに困難になる。このようにして、コンソーシアムブロックチェーン内のデータの完全性が保証され得る。さらに、説明されている技法は、パブリックサイドチェーンにおけるノード参加を増やすために、スマートコントラクトに基づいてインセンティブメカニズムを提供する。スマートコントラクトは、情報の方法でコントラクトを配布、検証、または実施するために設計されたコンピュータ契約であり得る。スマートコントラクトは、第三者の関与なしに、信頼できるトランザクションが実行されることを可能にする。これらのトランザクションは追跡可能であり、元に戻すことはできない。
【００３４】
説明した技法には、様々な用途があり得る。たとえば、著作権侵害訴訟の際、原告は、元の作品を作成した正確な時間を示すために、裁判所に何らかのタイプのデジタル証拠を提供する必要がある。原告によって提出されたデジタル証拠がコンソーシアムブロックチェーンに元々記憶されている場合、裁判所はデジタル証拠が改ざんされていないことを決定できないため、必要な証拠責任を果たせない可能性がある。裁判所によって受け入れられる証拠記録を確立するために、原告は、検証システムを通じて記述された技法を使用してデータ証拠を記憶することができる。証拠提出時に、原告は、検証ノードによって提出されたデジタル証拠のコピーとともに、コンソーシアムブロックチェーンに記憶されているデジタル証拠を提出することができる。このようにして、多数の検証ノードがデジタル証拠の真正性を証明しているため、裁判所はデジタル証拠の真正性を認識する可能性が高くなる。
【００３５】
上述の例とは別に、説明した技法は、ブロックチェーン技術を利用する他の多くのアプリケーションに役立つことができる。
【００３６】
図1は、本明細書の実装形態を実行するために使用することができる環境100の例を示す図である。いくつかの例では、環境100は、エンティティがブロックチェーンネットワーク102に参加することを可能にする。環境100は、コンピューティングデバイス106、108、およびネットワーク110を含む。いくつかの例では、ネットワーク110は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはそれらの組合せを含み、ウェブサイト、ユーザデバイス(たとえば、コンピューティングデバイス)、およびバックエンドシステムを接続する。いくつかの例では、ネットワーク110は、ワイヤードおよび/またはワイヤレス通信リンクを介してアクセスすることができる。いくつかの例では、ネットワーク110は、ブロックチェーンネットワーク102との、およびブロックチェーンネットワーク102内の通信を可能にする。一般に、ネットワーク110は、1つまたは複数の通信ネットワークを表す。場合によっては、コンピューティングデバイス106、108は、クラウドコンピューティングシステム(図示せず)のノードとすることができ、または各コンピューティングデバイス106、108は、ネットワークによって相互接続され、分散処理システムとして機能する複数のコンピュータを含む個別のクラウドコンピューティングシステムとすることができる。
【００３７】
図示される例では、コンピューティングシステム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の例は、参加者A、参加者B、および参加者Cにそれぞれ対応する参加者システム202、204、206を含む。各参加者(たとえば、ユーザ、企業)は、いくつかのノード214を含むピアツーピアネットワークとして提供されるブロックチェーンネットワーク212に参加し、そのうちの少なくともいくつかはブロックチェーン216に情報を不変に記録する。単一のブロックチェーン216がブロックチェーンネットワーク212内に概略的に示されているが、ブロックチェーン216の複数のコピーが提供され、本明細書でさらに詳細に説明されるように、ブロックチェーンネットワーク212にわたって維持される。
【００３９】
図示される例では、各参加者システム202、204、206は、それぞれ参加者A、参加者B、および参加者Cによって、またはそれらに代わって提供され、ブロックチェーンネットワーク内のそれぞれのノード214として機能する。本明細書で使用される場合、ノードは一般に、ブロックチェーンネットワーク212に接続され、それぞれの参加者がブロックチェーンネットワークに参加することを可能にする個々のシステム(たとえば、コンピュータ、サーバ)を指す。図2の例では、参加者は各ノード214に対応する。しかしながら、参加者はブロックチェーンネットワーク212内で複数のノード214を動作することができ、および/または複数の参加者がノード214を共有することができると考えられる。いくつかの例では、参加者システム202、204、206は、プロトコル(たとえば、ハイパーテキスト転送プロトコルセキュア(HTTPS))を使用して、および/またはリモートプロシージャコール(RPC)を使用して、ブロックチェーンネットワーク212と通信するか、またはブロックチェーンネットワーク212を通じて通信する。
【００４０】
ノード214は、ブロックチェーンネットワーク212内で様々な程度の参加をすることができる。たとえば、いくつかのノード214はコンセンサスプロセスに参加することができ(たとえば、ブロックチェーン216にブロックを追加するマインダノード(minder node)として)、他のノード214はコンセンサスプロセスに参加しない。別の例として、いくつかのノード214はブロックチェーン216の完全なコピーを記憶するが、他のノード214はブロックチェーン216の一部のコピーのみを記憶する。たとえば、データアクセス権限は、それぞれの参加者がそれぞれのシステム内に記憶するブロックチェーンデータを制限することができる。図2の例では、参加者システム202、204、206は、ブロックチェーン216のそれぞれの完全なコピー216'、216''、216'''を記憶する。
【００４１】
ブロックチェーン(たとえば、図2のブロックチェーン216)は、ブロックのチェーンで構成され、各ブロックはデータを記憶する。データの例は、2人以上の参加者間のトランザクションを表すトランザクションデータを含む。本明細書では、トランザクションは非限定的な例として使用されるが、任意の適切なデータ(たとえば、文書、画像、ビデオ、音声)をブロックチェーンに記憶することができると考えられる。トランザクションの例は、価値のあるもの(たとえば、資産、製品、サービス、および通貨)の交換を含むことができるが、これらに限定されない。トランザクションデータは、ブロックチェーン内に不変に記憶される。すなわち、トランザクションデータは変更することができない。
【００４２】
ブロックに記憶する前に、トランザクションデータはハッシュされる。ハッシュは、トランザクションデータ(文字列データとして提供される)を固定長のハッシュ値(やはり文字列データとして提供される)に変換するプロセスである。トランザクションデータを入手するためにハッシュ値をハッシュ解除することはできない。ハッシュにより、たとえトランザクションデータにおけるわずかな変更でも、まったく異なるハッシュ値が得られることを保証する。さらに、上記のように、ハッシュ値は固定長である。すなわち、トランザクションデータのサイズに関係なく、ハッシュ値の長さは固定されている。ハッシュは、ハッシュ値を生成するために、ハッシュ関数を通じてトランザクションデータを処理することを含む。ハッシュ関数の例は、256ビットのハッシュ値を出力するセキュアハッシュアルゴリズム(SHA)-256を含むが、これに限定されない。
【００４３】
複数のトランザクションのトランザクションデータはハッシュされ、ブロックに記憶される。たとえば、2つのトランザクションのハッシュ値が提供され、別のハッシュを提供するためにそれ自体がハッシュされる。このプロセスは、ブロックに記憶されるべきすべてのトランザクションにとって、単一のハッシュ値が提供されるまで繰り返される。このハッシュ値はマークルルートハッシュと呼ばれ、ブロックのヘッダに記憶される。トランザクションのいずれかが変更されると、そのハッシュ値が変更され、最終的にマークルルートハッシュが変更される。
【００４４】
コンセンサスプロトコルを通じてブロックがブロックチェーンに追加される。ブロックチェーンネットワーク内の複数のノードはコンセンサスプロトコルに参加し、ブロックをブロックチェーンに追加するために競合する。そのようなノードは、マイナー(または、マインダノード)と呼ばれる。上記で紹介したPOWは、非限定的な例として使用される。
【００４５】
マイナーノードは、トランザクションをブロックチェーンに追加するためにコンセンサスプロセスを実行する。複数のマイナーノードがコンセンサスプロセスに参加するが、ブロックチェーンにブロックを書き込むことができるマイナーノードは1つだけである。すなわち、マイナーノードは、それらのブロックをブロックチェーンに追加するために、コンセンサスプロセスにおいて競合する。さらに詳細には、マイナーノードは、トランザクションプールから保留中のトランザクションを定期的に収集する(たとえば、もしあれば、ブロックに含めることができるトランザクションの数のあらかじめ定義された制限まで)。トランザクションプールは、ブロックチェーンネットワーク内の参加者からのトランザクションメッセージを含む。マイナーノードはブロックを構築し、ブロックにトランザクションを追加する。トランザクションをブロックに追加する前に、マイナーノードは、トランザクションのうちのいずれかがブロックチェーンのブロックにすでに含まれているかどうかをチェックする。トランザクションがすでに別のブロックに含まれている場合、そのトランザクションは破棄される。
【００４６】
マイナーノードは、ブロック内のすべてのトランザクションに単一のハッシュ値が提供されるまでさらにハッシュ値(マークルルートハッシュ)を生成するために、ブロックヘッダを生成し、ブロック内のすべてのトランザクションをハッシュし、ハッシュ値をペアに組み合わせる。このハッシュはブロックヘッダに追加される。マイナーはまた、ブロックチェーン内の最新のブロック(すなわち、ブロックチェーンに追加された最後のブロック)のハッシュ値を決定する。マイナーノードはまた、ノンス値とタイムスタンプをブロックヘッダに追加する。マイニングプロセスでは、マイナーノードは必要なパラメータを満たすハッシュ値を見つけようとする。マイナーノードは、必要なパラメータを満たすハッシュ値が見つかるまで、ノンス値を変更し続ける。
【００４７】
ブロックチェーンネットワーク内のすべてのマイナーは、必要なパラメータを満たすハッシュ値を見つけようとし、このようにして、互いに競合する。最終的に、マイナーノードのうちの1つが必要なパラメータを満たすハッシュ値を見つけ、これをブロックチェーンネットワーク内の他のすべてのマイナーノードにアドバタイズする。他のマイナーノードはハッシュ値を検証し、正しいと決定された場合、ブロック内の各トランザクションを検証し、ブロックを受け入れ、ブロックチェーンのそれらのコピーにブロックを追加する。このように、ブロックチェーンのグローバルな状態は、ブロックチェーンネットワーク内のすべてのマイナーノードにわたって一致している。上述のプロセスはPOWコンセンサスプロトコルである。
【００４８】
非限定的な例は、図2を参照して提供される。この例では、参加者Aは参加者Bに一定額の資金を送りたいと考えている。参加者Aは、トランザクションメッセージ(たとえば、From、To、およびValueフィールドを含む)を生成し、トランザクションメッセージをブロックチェーンネットワークに送信し、ブロックチェーンネットワークは、トランザクションメッセージをトランザクションプールに追加する。ブロックチェーンネットワーク内の各マイナーノードはブロックを作成し、トランザクションプールからすべてのトランザクションを取得し(たとえば、もしあれば、ブロックに追加することができるトランザクションの数のあらかじめ定義された制限まで)、トランザクションをブロックに追加する。このようにして、参加者Aによって公開されたトランザクションがマイナーノードのブロックに追加される。
【００４９】
いくつかのブロックチェーンネットワークでは、トランザクションのプライバシーを維持するために暗号化が実装されている。たとえば、ブロックチェーンネットワーク内の他のノードがトランザクションの詳細を識別できないように、2つのノードがトランザクションをプライベートに維持したい場合、ノードはトランザクションデータを暗号化することができる。暗号化方法の例は、これらに限定されないが、対称暗号化、おおよび非対称暗号化を含む。対称暗号化とは、暗号化(平文から暗号文を生成)と復号化(暗号文から平文を生成)の両方に単一の鍵を使用する暗号化プロセスを指す。対称暗号化では、複数のノードに同じ鍵が使用可能であるため、各ノードはトランザクションデータを暗号化/復号化することができる。
【００５０】
非対称暗号化は、それぞれが秘密鍵と公開鍵を含む鍵ペアを使用し、秘密鍵はそれぞれのノードのみに知られ、公開鍵はブロックチェーンネットワーク内の任意のノードまたは他のすべてのノードに知られている。ノードはデータを暗号化するために別のノードの公開鍵を使用することができ、暗号化されたデータは他のノードの秘密鍵を使用して復号化することができる。たとえば、再び図2を参照すると、参加者Aはデータを暗号化するために参加者Bの公開鍵を使用することができ、暗号化されたデータを参加者Bに送信することができる。参加者Bは、暗号化されたデータ(暗号文)を復号化し、元のデータ(平文)を抽出するために、自身の秘密鍵を使用することができる。ノードの公開鍵で暗号化されたメッセージは、ノードの秘密鍵を使用してのみ復号化することができる。
【００５１】
非対称暗号化は、デジタル署名を提供するために使用され、これにより、トランザクションの参加者は、トランザクションの他の参加者、ならびにトランザクションの有効性を確認できるようになる。たとえば、ノードはメッセージにデジタル署名することができ、別のノードは、参加者Aのデジタル署名に基づいて、ノードによってメッセージが送信されたことを確認することができる。デジタル署名はまた、送信中にメッセージが改ざんされないようにするために使用することができる。たとえば、再び図2を参照すると、参加者Aは参加者Bにメッセージを送信する。参加者Aはメッセージのハッシュを生成し、次いで、自身の秘密鍵を使用して、暗号化されたハッシュとしてデジタル署名を提供するためにハッシュを暗号化する。参加者Aは、デジタル署名をメッセージに追加し、メッセージをデジタル署名付きで参加者Bに送信する。参加者Bは、参加者Aの公開鍵を使用してデジタル署名を復号化し、ハッシュを抽出する。参加者Bはメッセージをハッシュし、ハッシュを比較する。ハッシュが同じである場合、参加者Bは、メッセージが実際に参加者Aからのものであり、改ざんされていないことを確認することができる。
【００５２】
図3は、本明細書の実装形態による、本明細書の実装形態を実行するために使用することができるシステム300の例を示す図である。
【００５３】
図3に示されるように、システム300は、コンソーシアムブロックチェーン306を維持するノード304a〜304eを含むコンソーシアムブロックチェーンネットワーク302を含む。システム300は、検証システム316、インセンティブシステム320、およびパブリックサイドチェーンネットワーク352を含む。パブリックサイドチェーンネットワーク352は、複数の検証ノード330、パブリックブロックチェーン356、およびパブリックブロックチェーン356を維持するパブリックブロックチェーンノード(たとえば354)を含む。
【００５４】
動作中、コンソーシアムブロックチェーンネットワーク302(すなわち、ノード304a〜e)は、データを記憶する要求を受信する(360)。ノード304a〜eは、上述のメカニズムに従ってコンソーシアムブロックチェーン306にデータを記憶する。検証システム316は、ブロックチェーン306に追加されると、記憶されたデータを受信する(362において)。たとえば、検証システムは、コンソーシアムブロックチェーンネットワーク302を監視し、データを含むチェーン上のノード304a〜eによってコンセンサスに到達するとデータが記憶されたことを決定することができる。
【００５５】
いくつかの実装形態では、検証システム316は、コンソーシアムブロックチェーンネットワーク302とパブリックサイドチェーンネットワーク352との間の対話を担当する。動作中、検証システム316は、(366において)記憶されたデータのデータダイジェストを検証ノード330に送信する。いくつかの実装形態では、検証ノード330は、パブリックサイドチェーンネットワーク352に参加しているコンピューティングデバイスである。多数(たとえば、数千)の検証ノード330があり得る。場合によっては、検証システム316は、データダイジェストをパブリックサイドチェーンネットワーク352にブロードキャストし得る。検証ノード330は、データダイジェストを受信すると、それらの秘密鍵を使用してデータダイジェストに暗号で署名する。次いで、各検証ノードは、その署名済のデータダイジェストをパブリックブロックチェーン356に記憶しようとする。いくつかの実装形態では、検証ノード330によって生成されたすべての署名済のデータダイジェストは、パブリックブロックチェーン356に記憶される。場合によっては、特定の数の署名済のデータダイジェストがパブリックブロックチェーン356に記憶され、その他のダイジェストは破棄される。この数は、パブリックサイドチェーンネットワーク352において使用されるコンセンサスメカニズムの関数であり得る。
【００５６】
システム300はまた、インセンティブシステム320を含み得る。いくつかの実装形態では、インセンティブシステム320は、パブリックブロックチェーン356に記憶されるべきスマートコントラクトを生成し得る。スマートコントラクトは、パブリックサイドチェーンネットワークによって実行されると、記憶されたデータの検証に参加する検証ノード330に金銭的報酬を提供するように構成され得る。たとえば、パブリックブロックチェーン356にその署名済のデータダイジェストを首尾よく含む検証ノード330は、スマートコントラクトの実行を通じて金銭的報酬を自動的に受信し得る。場合によっては、コンソーシアムブロックチェーンから要求されたデータの検証に参加する検証ノード330(以下の図5を参照)は、スマートコントラクトの実行を通じて金銭的報酬を自動的に受信し得る。
【００５７】
図4は、本明細書の態様による、コンソーシアムブロックチェーンネットワークおよび関連付けられるパブリックサイドチェーンネットワークにデータを記憶する例示的なプロセス400を示す図である。
【００５８】
405において、データ項目(Data Item)がコンソーシアムブロックチェーンネットワーク302に記憶される。410において、検証システム316は、ネットワークに参加しているノードと通信することなどにより、コンソーシアムブロックチェーンネットワーク302から新しく記憶されたデータを受信する。415において、検証システム316は、新しく記憶されたデータ項目のデータダイジェストを作成する。たとえば、検証システム316は、たとえば、セキュアハッシュアルゴリズム1(SHA-1)、SHA-256、Rivest-Shamir-Adleman(RSA)、または他の知られているアルゴリズムなどのハッシュアルゴリズムを使用して、記憶されたデータ項目のハッシュを生成することによって、データダイジェストを作成し得る。
【００５９】
420において、検証システム316は、検証ノード330によるデータダイジェストの検証を要求する。それに応答して、425において、検証ノード330は、それらの秘密鍵を使用してデータダイジェストに暗号で署名する。430において、検証ノード330は、パブリックサイドチェーンネットワーク352によって管理されるパブリックブロックチェーン356に個々の署名済のデータダイジェストを記憶する。上述のように、いくつかの実装形態では、パブリックサイドチェーンネットワーク352によって採用されるコンセンサスメカニズムに応じて、特定の数のデータダイジェストのみがパブリックブロックチェーン356に記憶される。
【００６０】
図5は、コンソーシアムブロックチェーンネットワーク302からデータを取得し、パブリックサイドチェーンネットワーク352に基づいて取得したデータを検証する例示的なプロセスを示す図である。505において、コンソーシアムブロックチェーンネットワーク302によって(すなわち、コンソーシアムブロックチェーンネットワークに参加しているノードによって)データを取得する要求が受信される。いくつかの実装形態では、この要求は検証システム316によって受信され得る。
【００６１】
510において、検証システム316は、コンソーシアムブロックチェーン306のコンセンサスバージョンから要求されたデータを入手することなどにより、コンソーシアムブロックチェーンネットワーク302から要求されたデータを取得する。515において、検証システム316は、パブリックサイドチェーンネットワーク352から要求されたデータに関連付けられる署名済のデータダイジェストを取得する。場合によっては、署名済のダイジェストは、検証ノード330による署名済のデータダイジェストとともにパブリックブロックチェーン356に記憶されたタイムスタンプまたは他の識別子など、記憶されたデータに関連付けられる識別子に基づいて取得され得る。
【００６２】
520において、検証システム316は、取得したデータの署名済のデータダイジェストを検証ノード330に要求する。検証システム316は、上述のハッシュアルゴリズムを使用して、取得したデータのデータダイジェストを作成し得る。525において、検証システム316は、検証ノード330にデータダイジェストを送信し、検証ノード330がそれぞれ、取得したデータのデータダイジェストに暗号で署名し、530において、データダイジェストの署名済のバージョンを検証システム316に返すことができるようにする。
【００６３】
535において、検証システム316は、検証ノード330から受信した、取得したデータの署名済のデータダイジェストを、パブリックブロックチェーン356から取得した署名済のデータダイジェストと比較する(コンソーシアムブロックチェーンネットワークにデータが最初に記憶されたときに作成された、図4を参照)。検証ノード330から受信した取得したデータの署名済のデータダイジェストがパブリックブロックチェーン356から取得した署名済のデータダイジェストと一致する場合、コンソーシアムブロックチェーンネットワーク302に記憶されたデータは最初に記憶されてから変更されていない(540)。
【００６４】
要求されたデータが変更されていない場合、検証ノード330によって生成された取得したデータの署名済のデータダイジェストの値は、データが最初に記憶されたときに作成された以前に記憶されたデータダイジェストと一致するため、このプロセスは要求されたデータが変更されていないことを検証する。コンソーシアムブロックチェーンに記憶された後にデータが変更された場合、取得したデータの署名済のデータダイジェストは、データが最初に記憶されたときにパブリックブロックチェーン356に記憶されたものと一致しない。
【００６５】
場合によっては、検証システム316は、520において、署名済のデータダイジェストをパブリックブロックチェーン356に正常に挿入した検証ノードに対してのみ、署名済のデータダイジェストを要求し得る。たとえば、検証ノード330はそれぞれ、データダイジェストとともに特定のノードを識別する一意の識別子(たとえば、公開鍵)を記憶しようと試みることができる。したがって、パブリックブロックチェーン356のコンセンサスバージョンに含まれるエントリのみが照会される。
【００６６】
場合によっては、検証システム316は、コンソーシアムブロックチェーン306にデータを記憶するときに、検証ノード330の特定のセットからの検証のみを要求し得る。そのような場合、検証システム316は、コンソーシアムブロックチェーン306から取得されたデータが変更されていないことを検証するときに、署名済のデータダイジェストについて特定のノードのセットのみに照会し得る。
【００６７】
図6は、本明細書の実装形態による、実行することができるプロセス600の例を示す図である。いくつかの実装形態では、プロセス600の例は、1つまたは複数のコンピューティングデバイスを使用して実行される1つまたは複数のコンピュータ実行可能プログラムを使用して実行され得る。提示を明確にするために、以下の説明では、本明細書における他の図面の文脈においてプロセス600を一般的に説明する。しかしながら、プロセス600は、たとえば、任意の適切なシステム、環境、ソフトウェア、およびハードウェア、または、必要に応じてシステム、環境、ソフトウェア、およびハードウェアの組合せによって実行され得ることが理解されよう。いくつかの実装形態では、プロセス600の様々なステップは、並行して、組み合わせて、ループで、または任意の順序で実行することができる。
【００６８】
602において、データ項目は、コンソーシアムブロックチェーンネットワークによって維持されるコンソーシアムブロックチェーンに記憶される。
【００６９】
604において、第1のデータダイジェストは、記憶されたデータ項目に基づいて生成される。
【００７０】
606において、各検証ノードが第1のデータダイジェストに暗号で署名し、その署名済の第1のデータダイジェストをパブリックブロックチェーンネットワークによって維持されるパブリックブロックチェーンに記憶するように、第1のデータダイジェストが検証ノードに送信される。いくつかの実装形態では、検証ノードはパブリックブロックチェーンネットワークに参加しているコンピューティングデバイスである。いくつかの実装形態では、各検証ノードは、その検証ノードに関連付けられる秘密鍵を使用して、第1のデータダイジェストに暗号で署名するように構成される。いくつかの実装形態では、第1のデータダイジェストを検証ノードに送信するステップは、第1のデータダイジェストをパブリックブロックチェーンネットワークにブロードキャストするステップを含む。
【００７１】
608において、記憶されたデータ項目を取得する要求が受信される。
【００７２】
610において、要求の受信に応じて、要求されたデータ項目がコンソーシアムブロックチェーンから取得される。
【００７３】
612において、取得したデータ項目に基づいて、第2のデータダイジェストが生成される。いくつかの実装形態では、第1のデータダイジェストを生成するステップは、記憶されたデータ項目のハッシュを計算するステップを含む。
【００７４】
614において、各検証ノードが第2のデータダイジェストに暗号で署名し、その署名済の第2のデータダイジェストを返すことができるように、第2のデータダイジェストが検証ノードに送信される。
【００７５】
616において、署名済の第2のデータダイジェストが検証ノードから受信される。
【００７６】
618において、署名済の第1のデータダイジェストがパブリックブロックチェーンから取得される。いくつかの実装形態では、パブリックブロックチェーンから署名済の第1のデータダイジェストを取得するステップは、記憶されたデータ項目に関連付けられ、かつパブリックブロックチェーンに記憶された識別子に基づいて、署名済の第1のデータダイジェストを識別するステップを含む。
【００７７】
620において、署名済の第1のデータダイジェストが署名済の第2のデータダイジェストと一致すると決定される。
【００７８】
622において、決定に応じて、記憶されたデータ項目を取得するための応答が送信され、応答は、記憶されたデータ項目が記憶されてから変更されていないことを示す。
【００７９】
いくつかの実装形態では、プロセス600はパブリックブロックチェーンにスマートコントラクトを記憶するステップをさらに含み、スマートコントラクトは、要求された署名済の第2のデータダイジェストを検証ノードから受信することに応じて、検証ノードに金銭的報酬を提供するように構成される。
【００８０】
図7を参照すると、図7は、本明細書の実装形態による、装置700のモジュールを示す図の例を示している。装置700は、ブロックチェーンネットワークのノードに関連付けられる、検証されるべきデータを記憶および取得するための例示的な実装形態であり得る。装置700は、図3〜図5に示される実装形態に対応することができ、装置700は、コンソーシアムブロックチェーンネットワークによって維持されるコンソーシアムブロックチェーンにデータ項目を記憶するように構成されるストレージまたは記憶ユニット705と、記憶されたデータ項目に基づいて第1のデータダイジェストを生成するように構成される第1のジェネレータまたは生成ユニット710と、第1のデータダイジェストを検証ノードに送信するように構成される第1の送信機または送信ユニット715であって、各検証ノードが、その第1のデータダイジェストに暗号で署名し、その署名済の第1のデータダイジェストをパブリックブロックチェーンネットワークによって維持されるパブリックブロックチェーンに記憶するように構成される、第1の送信機または送信ユニット715と、記憶されたデータ項目を取得する要求を受信するように構成される受信機または受信ユニット720と、要求の受信に応じて、コンソーシアムブロックチェーンから要求されたデータ項目を取得するように構成される第1の取得ユニット725と、取得したデータ項目に基づいて、第2のデータダイジェストを生成するように構成される第2のジェネレータまたは生成ユニット730と、要求された署名済の第2のデータダイジェストを検証ノードから受信することに応じて、割り当てられた第2のデータダイジェストを検証ノードに要求するように構成される、リクエスタまたは要求ユニット735と、パブリックブロックチェーンから署名済の第1のデータダイジェストを取得するように構成される第2の取得ユニット740と、パブリックブロックチェーンからの署名済の第1のデータダイジェストが検証ノードから受信された署名済の第2のデータダイジェストと一致すると決定するように構成される決定ユニット745と、決定に応じて、記憶されたデータ項目を含む記憶されたデータを取得する要求への応答を送信するように構成され、応答が、記憶されたデータ項目が記憶されてから変更されていないことを示す、第2の送信機ま
たは送信ユニット750とを含む。
【００８１】
任意の実装形態では、検証ノードはパブリックブロックチェーンネットワークに参加しているコンピューティングデバイスである。
【００８２】
任意の実装形態では、装置700は、パブリックブロックチェーンにスマートコントラクトを記憶するように構成されるストレージまたは記憶サブユニットをさらに含み、スマートコントラクトは、要求された署名済の第2のデータダイジェストを検証ノードから受信することに応じて、検証ノードに金銭的報酬を提供するように構成される。
【００８３】
任意の実装形態では、装置700は、記憶されたデータ項目のハッシュを計算するように構成される計算機または計算サブユニットをさらに含む。
【００８４】
任意の実装形態では、各検証ノードは、その検証ノードに関連付けられる秘密鍵を使用して、第1のデータダイジェストに暗号で署名するように構成される。
【００８５】
任意の実装形態では、装置700は、第1のデータダイジェストをパブリックブロックチェーンネットワークにブロードキャストするように構成されるブロードキャストサブユニットをさらに含む。
【００８６】
任意の実装形態では、装置700は、記憶されたデータ項目に関連付けられ、パブリックブロックチェーンに記憶された識別子に基づいて署名済の第1のデータダイジェストを識別するように構成される識別子または識別サブユニットをさらに含む。
【００８７】
前の実装形態において示されたシステム、装置、モジュール、またはユニットは、コンピュータチップまたはエンティティを使用することによって実装することもでき、特定の機能を有する製品を使用することによって実装することもできる。典型的な実装形態デバイスはコンピュータであり、コンピュータはパーソナルコンピューター、ラップトップコンピュータ、セルラー電話、カメラ付き電話、スマートフォン、携帯情報端末、メディアプレーヤ、ナビゲーションデバイス、電子メール送受信デバイス、ゲームコンソール、タブレットコンピュータ、ウェアラブルデバイス、またはこれらのデバイスの任意の組合せであり得る。
【００８８】
装置内の各ユニットの機能および役割の実装形態プロセスについては、以前の方法の対応するステップの実装形態プロセスを参照することができる。簡単にするため、ここでは詳細は省略する。
【００８９】
装置の実装形態は基本的に方法の実装形態に対応するため、関連する部分については、方法の実装形態の関連する説明を参照することができる。前述の装置の実装形態は単なる例である。個別の部分として記述されたユニットは、物理的に分離されている場合とされていない場合があり、ユニットとして表示される部分は、物理ユニットである場合とそうでない場合があり、1つの位置に配置されることも、複数のネットワークユニットに分散されることもある。本明細書の解決策の目的を達成するために、モジュールの一部またはすべては、実際の需要に基づいて選択することができる。当業者は、創造的な努力なしに本出願の実装形態を理解し実装することができる。
【００９０】
図7は、内部機能モジュールと、コンソーシアムブロックチェーンネットワーク装置の構造を示す概略図である。本質的に実行主体は電子デバイスである場合があり、電子デバイスは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサの実行可能な命令を記憶するように構成されるメモリとを含む。
【００９１】
1つまたは複数のプロセッサは、コンソーシアムブロックチェーンネットワークによって維持されているコンソーシアムブロックチェーンにデータ項目を記憶することと、記憶されたデータ項目に基づいて第1のデータダイジェストを生成することと、第1のデータダイジェストを検証ノードに送信することであって、各検証ノードは、第1のデータダイジェストに暗号で署名することと、その署名済の第1のデータダイジェストをパブリックブロックチェーンネットワークによって維持されるパブリックブロックチェーンに記憶することとを行うように構成される、ことと、記憶されたデータ項目を取得する要求を受信することと、要求の受信に応じて、コンソーシアムブロックチェーンから要求されたデータ項目を取得することと、取得したデータ項目に基づいて、第2のデータダイジェストを生成することと、要求された署名済の第2のデータダイジェストを検証ノードから受信することに応じて、署名済の第2のデータダイジェストを検証ノードに要求することと、パブリックブロックチェーンから署名済の第1のデータダイジェストを取得することと、パブリックブロックチェーンからの署名済の第1のデータダイジェストが検証ノードから受信された署名済の第2のデータダイジェストと一致すると決定することと、決定に応じて、記憶されたデータ項目を含む記憶されたデータを取得する要求への応答を送信することであって、応答が、記憶されたデータ項目が記憶されてから変更されていないことを示す、こととを行うように構成される。
【００９２】
任意で、検証ノードはパブリックブロックチェーンネットワークに参加しているコンピューティングデバイスである。
【００９３】
任意で、1つまたは複数のプロセッサは、パブリックブロックチェーンにスマートコントラクトを記憶するように構成され、スマートコントラクトは、要求された署名済の第2のデータダイジェストを検証ノードから受信することに応じて、検証ノードに金銭的報酬を提供するように構成される。
【００９４】
任意で、1つまたは複数のプロセッサは、記憶されたデータ項目のハッシュを計算するように構成される。
【００９５】
任意で、各検証ノードは、その検証ノードに関連付けられる秘密鍵を使用して、第1のデータダイジェストに暗号で署名するように構成される。
【００９６】
任意で、1つまたは複数のプロセッサは、第1のデータダイジェストをパブリックブロックチェーンネットワークにブロードキャストするように構成される。
【００９７】
任意で、1つまたは複数のプロセッサは、記憶されたデータ項目に関連付けられ、パブリックブロックチェーンに記憶された識別子に基づいて署名済の第1のデータダイジェストを識別するように構成される。
【００９８】
本明細書に記載されている主題およびアクションならびに動作の実装形態は、デジタル電子回路に、明確に具体化されたコンピュータソフトウェアまたはファームウェアに、本明細書において開示されている構造およびそれらの構造上の同等物を含むコンピュータハードウェアに、あるいはそれらの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  参加者システム
212  ブロックチェーンネットワーク
214  ノード
216  ブロックチェーン
300  システム
302  コンソーシアムブロックチェーンネットワーク
304a〜304e  ノード
306  コンソーシアムブロックチェーン
316  検証システム
320  インセンティブシステム
330  検証ノード
352  パブリックサイドチェーンネットワーク
354  パブリックブロックチェーンノード
356  パブリックブロックチェーン
400  プロセス
600  プロセス
700  装置
705  ストレージまたは記憶ユニット
710  第1のジェネレータまたは生成ユニット
715  第1の送信機または送信ユニット
720  受信機または受信ユニット
725  第1の取得ユニット
730  第2のジェネレータまたは生成ユニット
735  リクエスタまたは要求ユニット
740  第2の取得ユニット
745  決定ユニット
750  第2の送信機または送信ユニット
【図１】
2020145681.tif 000003
【図２】
2020145681.tif 000004
【図３】
2020145681.tif 000005
【図４】
2020145681.tif 000006
【図５】
2020145681.tif 000007
【図６】
2020145681.tif 000008
【図７】
2020145681.tif 000009
【外国語明細書】
2020145681000001.pdf