(57)【特許請求の範囲】
【請求項１】
ブロックデータを検証する方法であって、
複数のデータノードを含むブロックから、新たに追加されるデータを格納するように構成されたデータノードを選択するステップと、
前記データノードが前記新たに追加されるデータと関連するデータを含むか否かを決定するステップと、
前記データノードは前記新たに追加されるデータと関連するデータを含まないとの決定に応答して、前記新たに追加されるデータに対応する文字列を決定するステップと、
所定のアルゴリズムに基づいて前記文字列を算出することによって前記データノードについて前記新たに追加されるデータの検証値を決定するステップと、
前記新たに追加されるデータの前記検証値に基づいて前記データノードの更新検証値を算出するステップと、
前記データノードの前記更新検証値と、前記ブロックに含まれる他のデータノードの元の検証値と、に基づいて前記ブロックの検証値を取得するステップとを含み、
前記ブロックの前記検証値は、前記ブロックに格納されたデータがブロックチェーン内の他のブロックに格納されたデータと一致するか否かを検証するために用いられる、方法。
【請求項２】
前記データノードを選択するステップは、
前記新たに追加されるデータの受信に応答して、前記新たに追加されるデータを格納するために用いられるブロック情報を決定するステップであって、前記ブロック情報がブロック識別子およびデータノード識別子を含む、ステップと、
前記ブロック識別子に基づいて、かつ探し当てたブロックとして、前記ブロック識別子に対応するブロックを探して前記ブロックチェーンを検索するステップと、
前記探し当てたブロックから、かつ探し当てたデータノードとして、前記データノード識別子に対応するデータノードを決定するステップと、
前記探し当てたデータノードを、前記新たに追加されるデータを格納するように構成された前記データノードとして用いるステップとを含む、請求項1に記載の方法。
【請求項３】
前記ブロック情報を決定するステップは、
前記新たに追加されるデータに対応するデータ内容を算出して、前記決定されたブロック情報を取得するステップを含む、請求項2に記載の方法。
【請求項４】
前記所定のアルゴリズムは暗号化アルゴリズムを含み、前記検証値は前記新たに追加されるデータの暗号化された値を含む、請求項1に記載の方法。
【請求項５】
前記暗号化アルゴリズムはハッシュアルゴリズムを含み、前記暗号化された値は前記新たに追加されるデータのハッシュ値を含む、請求項4に記載の方法。
【請求項６】
前記検証値を決定するステップは、
前記データノードは前記新たに追加されるデータの関連データを含むとの決定に応答して、前記関連データに対応する第1の文字列と前記新たに追加されるデータに対応する第2の文字列とを別々に決定するステップと、
所定の方法を用いて前記第1の文字列および前記第2の文字列をソートするステップと、
所定のアルゴリズムに基づいてソートされた文字列を算出して、前記新たに追加されるデータの前記検証値を取得するステップとを含む、請求項1に記載の方法。
【請求項７】
前記所定のアルゴリズムに基づいて前記ソートされた文字列を算出するステップは、前記新たに追加されるデータの前記検証値に含まれる文字列群の算出を含む、請求項6に記載の方法。
【請求項８】
前記データノードの前記更新検証値を算出するステップは、
前記新たに追加されるデータが格納される前に取得された前記データノードの元の検証値を決定するステップと、
前記元の検証値と、前記新たに追加されるデータの前記検証値と、に基づいて前記データノードの前記更新検証値を算出するステップとを含む、請求項1に記載の方法。
【請求項９】
前記検証値を取得するステップは、
前記ブロックに含まれる前記複数のデータノードに対応するツリー構造を決定するステップと、
前記ブロックに含まれる前記他のデータノードの前記元の検証値を決定するステップと、
前記データノードの前記更新検証値と、前記ブロックに含まれる前記他のデータノードの前記元の検証値と、に基づいて前記ツリー構造をトラバースして、前記ツリー構造のルートノードの検証値を取得するステップと、
前記ルートノードの前記検証値を前記ブロックの前記検証値として決定するステップとを含む、請求項1に記載の方法。
【請求項１０】
請求項1から9のいずれか一項に記載の方法を実行するように構成された複数のモジュールを含む、ブロックデータを検証する装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、コンピュータ通信技術の分野に関し、より詳細には、ブロックチェーンにおいてブロックデータを検証する方法および装置に関する。
【背景技術】
【０００２】
ブロックチェーン技術は分散型台帳技術とも呼ばれる分散型インターネットデータベース技術である。このブロックチェーン技術は、非集中的で透明性があり、かつ信頼できるものであって、改竄され得ないものである。ブロックチェーンに格納された各データは、ブロックチェーン内の各ブロックに送られ、格納される。それゆえ、ブロックチェーン内の各ブロックには完全かつ整合性のあるデータが格納される。
【０００３】
実施に際して、すべてのブロックに格納されたデータがブロックチェーンにおいて整合性を保つことが必要である。データ検証方法は、通常、すべてのブロックに格納されたデータに整合性があるか否かを検証するために用いられる。
【０００４】
具体的には、ブロックデータの検証中、ブロックチェーン内のすべてのブロックに格納されたデータに整合性があるか否かを判定するために、すべてのブロックの検証値が決定されることを要し、また、すべてのブロックの検証値が比較されることを要する。
【０００５】
各ブロックの検証値が決定されるとき、ブロックに格納されたデータの量は比較的大きいため、そのブロックの検証値が決定されるときに、ブロックの検証値を算出するためにはそのブロックに格納されたすべてのデータが算出される必要があるということを、調査は示す。しかしながら、ブロックに格納されたデータの量が増大するにつれて検証値の算出の量は増大し、その結果として、データ検証の効率は低下する。
【０００６】
それゆえ、ブロックデータ検証の効率性をどのように向上させるかが、当技術分野において緊急に改善されるべき問題となる。
【０００７】
背景技術において開示される情報は単に本出願の一般的な背景技術に対する理解を高める意図であるにすぎず、この情報が当業者に知られている既存技術を構成すると承認または許容するものであると考えられるべきではない。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
この観点から、既存技術においてはブロックデータ検証の効率性が比較的低いという問題点を改善するために、本出願の実施形態はブロックデータを検証する方法および装置を提供する。
【課題を解決するための手段】
【０００９】
本出願の実施形態はブロックデータを検証する方法を提供する。この方法は、複数のデータノードを含むブロックから、新たに追加されるデータを格納するように構成されたデータノードを選択するステップと、データノードについて新たに追加されるデータの検証値を決定するステップと、新たに追加されるデータの検証値に基づいてデータノードの更新検証値を算出するステップと、データノードの更新検証値と、ブロックに含まれる他のデータノードの元の検証値と、に基づいてブロックの検証値を取得するステップとを含む。このブロックの検証値は、ブロックに格納されたデータがブロックチェーン内の他のブロックに格納されたデータと一致するか否かを検証するために用いられる。
【００１０】
本出願の実施形態はブロックデータを検証する装置をさらに提供する。この装置は、複数のデータノードを含むブロックから、新たに追加されるデータを格納するように構成されたデータノードを選択するように構成された選択モジュールと、データノードについて新たに追加されるデータの検証値を決定し、新たに追加されるデータの検証値に基づいてデータノードの更新検証値を算出するように構成された決定モジュールと、データノードの更新検証値と、ブロックに含まれる他のデータノードの元の検証値と、に基づいてブロックの検証値を取得するように構成された処理モジュールとを含む。このブロックの検証値は、ブロックに格納されたデータがブロックチェーン内の他のブロックに格納されたデータと一致するか否かを検証するために用いられる。
【００１１】
本出願の実施形態において用いられる前述の少なくとも1つの技術的解決法は、以下の有益な効果をもたらすことができる。
【００１２】
ブロックに新たなデータが追加されるとき、新たに追加されるデータを格納するように構成されたデータノードの更新検証値が新たに追加されるデータを用いて決定され、その結果、ブロックに新たなデータが追加されるときにブロック内のすべてのデータを用いて検証値が算出されるために多くの時間が費やされるという既存技術の問題点を改善する。これによって、新たなデータが追加されるブロックの検証値が算出されるとき、費やされる時間はブロック内のデータの量には関係なく、検証値を算出するための時間は効果的に短縮され、ブロックデータ検証の効率性を向上させる。
【００１３】
本明細書において示される添付の図面は、本出願に対するさらなる理解を与え、また、本出願の一部分を成すことを意図する。本出願の例示の実施形態および本出願の実施形態に関する記述は、本出願について説明することを意図し、本出願に対する制限となるものではない。
【図面の簡単な説明】
【００１４】
【図１】本出願の実施形態による、ブロックデータを検証する方法を示す概略フローチャートである。
【図２】本出願の実施形態による、マークルツリーを示す概略構造図である。
【図３】本出願の実施形態による、新たに追加されるデータの検証値を決定するステップを示す概略フローチャートである。
【図４】本出願の実施形態による、新たに追加されるデータの検証値を決定するステップを示す概略フローチャートである。
【図５】本出願の実施形態による、ブロックデータを検証する装置を示す概略構造図である。
【発明を実施するための形態】
【００１５】
本出願の目的を達成するため、本出願の実施形態は、ブロックデータを検証する方法および装置を提供する。新たに追加されるデータを格納するように構成されたデータノードは複数のデータノードを含むブロックから選択され、新たに追加されるデータの検証値はデータノードについて決定され、かつデータノードの更新検証値は新たに追加されるデータの検証値に基づいて算出され、ブロックの検証値はデータノードの更新検証値と、ブロックに含まれる他のデータノードの元の検証値と、に基づいて取得される。ブロックの検証値は、ブロックに格納されたデータがブロックチェーン内の他のブロックに格納されたデータと一致するか否かを検証するために用いられる。すべての履歴データを処理する既存技術と比較して、本出願の実施形態では、ブロックの新たに追加されるデータが主に考慮され、また、新たなデータが追加されるブロックについて検証値は増分法を用いて算出され、その結果、ブロックに新たなデータが追加されるときにブロック内のすべてのデータを用いて検証値が算出されるために多くの時間が費やされるという既存技術の問題点を改善する。これによって、新たなデータが追加されるブロックの検証値が算出されるとき、費やされる時間はブロック内のデータの量には関係なく、検証値を算出するための時間は効果的に短縮され、ブロックデータ検証の効率性を向上させる。
【００１６】
本出願の実施形態において記述される検出値を算出するために用いられる所定のアルゴリズムはさまざまな検証アルゴリズムであり得ること、またはさまざまな不可逆アルゴリズムであり得ること、および、特定のアルゴリズムの種類が本出願の実施形態において特に限定されるものではないことに留意されたい。
【００１７】
たとえば、必要とされる検証値はハッシュ（Hash）アルゴリズムを用いて算出されてもよい。ハッシュアルゴリズムは、ハッシュ関数と呼ばれることもある。ハッシュ関数は一方向暗号システムであり、言い換えれば、ハッシュ関数は平文から暗号文への不可逆マッピングであり、つまり、この関数は暗号化プロセスのみを含んで復号化プロセスは含まない。加えて、ハッシュ関数は、任意の長さの入力を変更した後固定長の出力を取得することができる。典型的なハッシュアルゴリズムは、MD2、MD4、MD5、SHA-1等を含む。
【００１８】
当業者であれば、本出願の実施形態の明細書において言及されるハッシュアルゴリズムは単に一例にすぎず、本開示に対する制限となるものではないことを理解するであろう。当業者は、実際の適用および必要性に基づいて検証に用いられる他のアルゴリズムを用いることができる。このことは、本明細書において特に限定されない。
【００１９】
本出願の目的、技術的解決法および利点をより明確にするため、以下は、本出願の特定の実施形態および対応する添付の図面を参照して本出願の技術的解決法について明確かつ包括的に記述するものである。記述される実施形態は、本出願の実施形態の全部ではなく一部のみであることは明らかである。創造的な努力を必要とせずに本出願の実施形態に基づいて当業者によって得られる他のすべての実施形態は、本出願の保護の範囲内にあるものとする。
【００２０】
以下は、添付の図面を参照して、本出願の実施形態において提供される技術的解決法について詳細に記述するものである。
【００２１】
図1は、本出願の実施形態による、ブロックデータを検証する方法を示す概略フローチャートである。ブロックデータを検証するこの方法は、以下のステップを含む。
【００２２】
ステップS110。複数のデータノードを含むブロックから、新たに追加されるデータを格納するように構成されたデータノードを選択する。
【００２３】
ブロックチェーンは、チェーンデータ構造を用いていくつかのブロックを連結することによって得られる。各ブロックは複数のデータノードを含む。ブロックに含まれるこのデータノードはマークルツリー（Markle Tree）の形式で構成され得、つまり、ルートノードおよび複数のリーフノードをそれぞれ含む。
【００２４】
マークルツリー構造では、ブロックに含まれるデータノードはマークルツリー構造の最下部のリーフノードとして用いられ、このことは図2に示される。
【００２５】
このマークルツリー構造では、A、B、C、DおよびEはブロックのデータノードに対応することが図2から分かる。
【００２６】
当業者であれば、マークルツリーはブロック内のデータノードに基づいて構成され、また、マークルツリーの深さは必要に応じて決定され得ることを理解するであろう。
【００２７】
ブロックチェーン内のすべてのブロックに格納されたデータ間の整合性を確実にするために、ブロックチェーン内のすべてのブロックに構成されたマークルツリーは同一の深さを備え、すべてのブロックに含まれるデータノードの数もまた同一であることに留意されたい。加えて、本明細書で挙げられるマークルツリーは単に説明するための一例にすぎず、当業者は他の適切なデータ構成形式を用いてよいことがさらに理解されるであろう。このことは、本明細書において特に限定されない。
【００２８】
格納されるデータ(ここでいうデータは、新たに追加されるデータと呼ばれることがある)に関しては、新たに追加されるデータを格納するために用いられるブロックがまず決定され、次に、新たに追加されるデータを格納するように構成されたブロックのデータノードが決定される。
【００２９】
それゆえ、新たに追加されるデータが受信されると、新たに追加されるデータを格納するために用いられるブロック情報がまず決定される。このブロック情報は、ブロック識別子およびデータノード識別子を含む。
【００３０】
具体的には、新たに追加されるデータに対応するデータ内容が算出されて、決定されたブロック情報を取得する。
【００３１】
本出願のこの実施形態では、新たに追加されるデータに対応するデータ内容は、新たに追加されるデータの種類に基づいて決定され得、または新たに追加されるデータに含まれるデータに基づいて決定され得る。このことは、本明細書において特に限定されない。
【００３２】
たとえば、新たに追加されるデータがテキストデータである場合、新たに追加されるデータに対応するデータ内容はテキストデータの内容要約として理解され得、またはテキストデータとして理解され得、新たに追加されるデータに対応するデータ内容(たとえば、内容要約またはテキストデータ)が所定のアルゴリズムに基づいて算出されて、算出結果を取得することができる。この場合、この算出結果に基づいてブロック情報が決定される。
【００３３】
別の例として、新たに追加されるデータが1つのトランザクションデータである場合、このトランザクションデータが所定のアルゴリズムに基づいて算出されて、算出結果を取得することができる。この場合、この算出結果に基づいてブロック情報が決定される。
【００３４】
本出願のこの実施形態において記述される所定のアルゴリズムでは、たとえば、剰余算出方法で、データ内容は整数データに変換され、ブロックチェーンに含まれるブロックの数は除数として用いられ、整数データはこの除数を用いて算出されて、商および剰余を得る。ここで商はブロック識別子と考えられ得、剰余はブロック内のデータノード識別子と考えられ得る。別法として、商はデータノード識別子と考えられ得、剰余はブロック識別子と考えられ得る。
【００３５】
確かに、新たに追加されるデータを適切なブロック、および必要に応じてデータノードに割り当てるために、当業者は、たとえばデータ内容でランダム計算を実行する等、データ内容を算出するための他の方法を用いてもよい。このことは、本明細書において限定されない。
【００３６】
次に、ブロックチェーンはブロック識別子に基づいてブロック識別子に対応するブロックを探して検索され、探し当てた(found)ブロックから、データノード識別子に対応するデータノードが決定される。
【００３７】
ブロックチェーンを得るプロセスにおいて、ブロックごとに1つのブロック識別子が決定される。それゆえ、ブロック情報が取得されるとき、ブロックチェーンはブロック情報のブロック識別子に基づいてブロック識別子に対応するブロックを探して検索され得る。
【００３８】
各ブロックは複数のデータノードを含み、データノードごとに1つのデータノード識別子が決定され得る。それゆえ、ブロック情報が取得されるとき、データノード識別子に対応するデータノードは、ブロック情報のデータノード識別子に基づいて、探し当てたブロックチェーンから決定され得る。
【００３９】
最後に、探し当てたデータノードは、新たに追加されるデータを格納するように構成されたデータノードとして用いられる。
【００４０】
ステップS120。データノードについて新たに追加されるデータの検証値を決定する。
【００４１】
本出願のこの実施形態においては、新たに追加されるデータがデータノードに格納される前にデータがデータノードに格納されていることがあり、かつ、これらのデータの中には新たに追加されるデータと関連するものがある可能性があるため、新たに追加されるデータと関連があるデータは関連データと呼ばれ得る。一方、データノードに格納されたデータは新たに追加されるデータと関連しない可能性があり、言い換えれば、このデータノードは新たに追加されるデータと関連する関連データを含まない。
【００４２】
本出願のこの実施形態において記述される関連関係は、ユーザアカウント、支払活動、トランザクション時間、トランザクション場所等、たとえば1ユーザの2つのトランザクションデータによって生成される関係であり得ることに留意されたい。この場合、これらの2つのトランザクションデータは同一のユーザアカウントによって関連付けられる。別法として、関連関係はトランザクション行動によって生成される関係であり得る。たとえば、一方のトランザクションデータに記録された内容はユーザAがユーザBに100元を送金することであり、他方のトランザクションデータに記録された内容はユーザBがユーザAに100元を送金することである。この場合、送金行動に含まれる対象および金額が同一であるため、2つのトランザクションデータは関連付けられる。関連関係の特定の内容は、本明細書において特に限定されない。
【００４３】
さらに、新たに追加されるデータがデータノードに格納される前にデータノードに格納されているデータがないことがある。この場合、データノードは新たに追加されるデータと関連する関連データを含まないと考えられ得る。
【００４４】
このように、新たに追加されるデータの検証値を決定することは以下の2つのケースを含み得るが、これらに限定されるわけではない。
【００４５】
ケース1。データノードは、新たに追加されるデータと関連する関連データを含まない。
【００４６】
新たに追加されるデータの検証値を決定するために、図3を参照することができる。図3は、本出願の実施形態による、新たに追加されるデータの検証値を決定するステップを示す概略フローチャートである。
【００４７】
S310。新たに追加されるデータに対応する文字列を決定する。
【００４８】
本出願のこの実施形態において、新たに追加されるデータに対応する文字列は、たとえば対応する伝達関数を用いて新たに追加されるデータを文字列に変換することによる等、データを文字列に変換する任意の適切な技術的方法を用いて決定されてよい。このことは、本明細書において特に限定されない。
【００４９】
S320。所定のアルゴリズムに基づいて文字列を算出して、新たに追加されるデータの検証値を取得する。
【００５０】
具体的には、文字列はハッシュアルゴリズムを用いて算出されて、新たに追加されるデータのハッシュ値を取得し、このハッシュ値を新たに追加されるデータの検証値として用いる。
【００５１】
当業者であれば、本明細書において言及されるハッシュアルゴリズムは単に一例にすぎず、本開示に対する制限となるものではないことを理解するであろう。
【００５２】
ケース2。データノードは、新たに追加されるデータと関連する関連データを含む。
【００５３】
新たに追加されるデータの検証値を決定するために、図4を参照することができる。図4は、本出願の実施形態による、新たに追加されるデータの検証値を決定するステップを示す概略フローチャートである。
【００５４】
S410。関連データに対応する第1の文字列と新たに追加されるデータに対応する第2の文字列とを別々に決定する。
【００５５】
同様に、関連データに対応する第1の文字列と新たに追加されるデータに対応する第2の文字列とは、たとえば対応する伝達関数を用いて新たに追加されるデータを文字列に変換することによる等、データを文字列に変換する任意の適切な技術的方法を用いて決定されてよい。このことは、本明細書において特に限定されない。
【００５６】
S420。所定の方法を用いて第1の文字列および第2の文字列をソートする。
【００５７】
このような所定の方法は実際の必要性に基づいて決定されてよく、または経験的結果に基づいて決定されてよいことに留意されたい。本出願のこの実施形態において用いられるソート方法は限定されない。たとえば、第1の文字列および第2の文字列は順次ソートされ、第1の文字列と第2の文字列とを組み合わせて算出に用いられる文字列群を取得する。第1の文字列が第2の文字列の前であるか、第2の文字列が第1の文字列の前であるかは、本出願のこの実施形態において限定されない。当業者は、他のソート方法を用いることもできる。
【００５８】
S430。所定のアルゴリズムに基づいてソートされた文字列を算出して、新たに追加されるデータの検証値を取得する。
【００５９】
具体的には、ソートされた文字列はハッシュアルゴリズムを用いて算出され、新たに追加されるデータのハッシュ値を取得して、このハッシュ値を新たに追加されるデータの検証値として用いる。
【００６０】
ステップS130。新たに追加されるデータの検証値に基づいてデータノードの更新検証値を算出する。
【００６１】
具体的には、新たに追加されるデータの前に取得されたデータノードの元の検証値が格納され、データノードの更新検証値は、元の検証値および新たに追加されるデータの検証値に基づいて算出される。
【００６２】
本出願のこの実施形態において、新たに追加されるデータがデータノードに格納される前に他のデータが格納されている場合、検証値は、他のデータが格納されるときにデータノードについて算出される。この検証値は、新たに追加されるデータに対する元の検証値と呼ばれ得る。
【００６３】
たとえば、データノードAに関して、1つのデータが格納される度に1つの検証値が算出され、言い換えれば、データノードの検証値はデータノード内のデータと共に変化する。新たに追加されるデータが格納される前にデータ11およびデータ12がデータノードAに格納されているとすれば、検証値aはデータ11がデータノードに格納されるときに算出され、データ12がデータノードに格納されるとき、aは元の検証値と呼ばれ得る。この場合、検証値bは元の検証値を用いて算出され、bは更新検証値と呼ばれ得る。
【００６４】
新たに追加されるデータをデータ13とすれば、データ13の検証値cはステップS120に従って取得される。この場合、データ13が格納される前に取得されたデータノードの検証値すなわち検証値bが決定されることを要し、検証値bは元の検証値と呼ばれる。データノードの更新検証値は、検証値cおよび検証値bを用いて所定のアルゴリズムに基づいて算出される。
【００６５】
データノードに格納されているデータが無く、新たに追加されるデータがデータノードの第1のデータとして用いられる場合、本出願のこの実施形態において、新たに追加されるデータの検証値はデータノードの検証値と考えられ得ることに留意されたい。
【００６６】
ステップS140。データノードの更新検証値およびブロックに含まれる他のデータノードの元の検証値に基づいてブロックの検証値を取得する。
【００６７】
本出願のこの実施形態において、ブロックに含まれる複数のデータノードに対応するツリー構造が決定され、また、ブロックに含まれる他のデータノードの元の検証値が決定される。また、データノードの更新検証値およびブロックに含まれる他のデータノードの元の検証値に基づいて、このツリー構造をたどり、ツリー構造のルートノードの検証値を取得して、このルートノードの検証値をブロックの検証値として用いる。
【００６８】
図2に示される内容は、一例として用いられる。図2に示されるブロックに格納される新たに追加されるデータが無いとすれば、図2に示されるデータノードAに対応する検証値はaであり、データノードBに対応する検証値はbであり、データノードCに対応する検証値はcであり、データノードDに対応する検証値はdであり、データノードEに対応する検証値はeである。
【００６９】
この場合、新たに追加されるデータはデータノードAに格納されることを要し、それゆえに、検証値a、検証値b、検証値c、検証値dおよび検証値eは元の検証値と呼ばれる。
【００７０】
新たに追加されるデータがデータノードAに格納された後、データノードAの検証値は変化する。データノードAの検証値が検証値aから検証値gに変化するとすれば、検証値gはデータノードAの更新検証値と呼ばれ得る。
【００７１】
この場合、ブロックの検証値はデータノードAの検証値g、データノードBの検証値b、データノードCの検証値c、データノードDの検証値dおよびデータノードEの検証値eを用いて所定のアルゴリズムに基づいて算出される。
【００７２】
たとえば、ブロックの検証値は、データノードA、データノードB、データノードC、データノードDおよびデータノードEに対応する、図2に示されるツリー構造に基づき、データノードAの検証値g、データノードBの検証値b、データノードCの検証値c、データノードDの検証値dおよびデータノードEの検証値eを用いて算出される。
【００７３】
ブロックの検証値が取得された後、この検証値はブロックチェーン内の他のブロックの検証値と比較され得る。これら2つの検証値が一致する場合、このことはブロックに格納されたデータが他のブロックに格納されたデータと一致することを示し、検証は成功する。これら2つの検証値が一致しない場合、このことはブロックに格納されたデータが他のブロックに格納されたデータと一致しないことを示す。たとえば、ブロック内のデータは失われているか改竄されている可能性があり、検証は成功し得ない。
【００７４】
本出願のこの実施形態において、新たに追加されるデータと共に変化するブロックの検証値は、増分算出方法を用いて迅速に決定され、その結果、検証値を算出するための時間を短縮し、システムコンピューティング性能を向上させる。
【００７５】
本出願の実施形態において提供される技術的解決法によれば、新たに追加されるデータを格納するように構成されたデータノードは複数のデータノードを含むブロックから選択され、新たに追加されるデータの検証値はデータノードについて決定され、かつデータノードの更新検証値は新たに追加されるデータの検証値に基づいて算出され、ブロックの検証値はデータノードの更新検証値およびブロックに含まれる他のデータノードの元の検証値に基づいて取得される。ブロックの検証値は、ブロックに格納されたデータがブロックチェーン内の他のブロックに格納されたデータと一致するか否かを検証するために用いられる。すべての履歴データを処理する既存技術と比較して、本出願の実施形態では、ブロックの新たに追加されるデータが主に考慮され、また、新たなデータが追加されるブロックについて検証値は増分法を用いて算出され、その結果、ブロックに新たなデータが追加されるときにブロック内のすべてのデータを用いて検証値が算出されるために多くの時間が費やされるという既存技術の問題点を改善する。これによって、新たなデータが追加されるブロックの検証値が算出されるとき、費やされる時間はブロック内のデータの量には関係なく、検証値を算出するための時間は効果的に短縮され、ブロックデータ検証の効率性を向上させる。
【００７６】
加えて、処理されていない原データが改竄された場合、本出願の実施形態において、たとえ新たに追加されるデータの検証値が算出されるときに改竄が発覚していないとしても、ブロックチェーンの各ブロック内でデータ更新が実行されるときに、ブロックチェーンの構造および特性によってデータ改竄は確実に発覚し得る。それゆえ、最終のブロックデータ検証は影響を受けない。
【００７７】
図5は、本出願の実施形態による、ブロックデータを検証する装置を示す概略構造図である。ブロックデータを検証するこの装置は、選択モジュール510、決定モジュール520および処理モジュール530を含む。
【００７８】
選択モジュール510は、複数のデータノードを含むブロックから、新たに追加されるデータを格納するように構成されたデータノードを選択するように構成される。
【００７９】
決定モジュール520は、データノードについて新たに追加されるデータの検証値を決定し、新たに追加されるデータの検証値に基づいてデータノードの更新検証値を算出するように構成される。
【００８０】
処理モジュール530は、データノードの更新検証値およびブロックに含まれる他のデータノードの元の検証値に基づいてブロックの検証値を取得するように構成される。
【００８１】
ブロックの検証値は、ブロックに格納されたデータがブロックチェーン内の他のブロックに格納されたデータと一致するか否かを検証するために用いられる。
【００８２】
本出願の別の実施形態では、選択モジュール510が複数のデータノードを含むブロックから、新たに追加されるデータを格納するように構成されたデータノードを選択することは、以下のことを含む。すなわち、新たに追加されるデータを受信するとき、新たに追加されるデータを格納するために用いられるブロック情報を決定することであって、ブロック情報がブロック識別子およびデータノード識別子を含む、決定すること、このブロック識別子に基づいて、ブロック識別子に対応するブロックを探してブロックチェーンを検索すること、探し当てたブロックからデータノード識別子に対応するデータノードを決定すること、および、この探し当てたデータノードを新たに追加されるデータを格納するように構成されたデータノードとして用いることである。
【００８３】
本出願の別の実施形態では、選択モジュール510が新たに追加されるデータを格納するために用いられるブロック情報を決定することは、以下のことを含む。すなわち、新たに追加されるデータに対応するデータ内容を算出して、決定されたブロック情報を取得することである。
【００８４】
本出願の別の実施形態では、決定モジュール520が新たに追加されるデータの検証値を決定することは、以下のことを含む。すなわち、データノードが新たに追加されるデータの関連データを含まないと判定されたとき、新たに追加されるデータに対応する文字列を決定すること、および、所定のアルゴリズムに基づいて文字列を算出して、新たに追加されるデータの検証値を取得することである。
【００８５】
本出願の別の実施形態では、決定モジュール520が新たに追加されるデータの検証値を決定することは、以下のこと含む。すなわち、データノードが新たに追加されるデータの関連データを含むと判定されたとき、関連データに対応する第1の文字列と新たに追加されるデータに対応する第2の文字列とを別々に決定すること、所定の方法を用いて第1の文字列および第2の文字列をソートすること、および、所定のアルゴリズムに基づいてソートされた文字列を算出して、新たに追加されるデータの検証値を取得することである。
【００８６】
本出願の別の実施形態では、決定モジュール520が新たに追加されるデータの検証値に基づいてデータノードの更新検証値を算出することは、以下のことを含む。すなわち、新たに追加されるデータが格納される前に取得されたデータノードの元の検証値を決定すること、および、元の検証値および新たに追加されるデータの検証値に基づいてデータノードの更新検証値を算出することである。
【００８７】
本出願の別の実施形態では、処理モジュール530がデータノードの更新検証値およびブロックに含まれる他のデータノードの元の検証値に基づいてブロックの検証値を取得することは、以下のことを含む。すなわち、ブロックに含まれる複数のデータノードに対応するツリー構造を決定し、ブロックに含まれる他のデータノードの元の検証値を決定すること、および、データノードの更新検証値およびブロックに含まれる他のデータノードの元の検証値に基づいてツリー構造をたどり、ツリー構造のルートノードの検証値を取得して、このルートノードの検証値をブロックの検証値として用いることである。
【００８８】
本出願のこの実施形態において記述されるブロックデータを検証する装置はソフトウェアを用いて実施され得、またはハードウェアを用いて実施され得ることに留意されたい。このことは、本明細書において特に限定されない。ブロックデータを検証する装置によれば、新たなデータが追加されるブロックについて検証値は増分法を用いて算出され、その結果、ブロックに新たなデータが追加されるときにブロック内のすべてのデータを用いて検証値が算出されるために多くの時間が費やされるという既存技術の問題点を改善する。これによって、新たなデータが追加されるブロックの検証値が算出されるとき、費やされる時間はブロック内のデータの量には関係なく、検証値を算出するための時間は効果的に短縮され、ブロックデータ検証の効率性を向上させる。
【００８９】
1990年代、技術の改良は、ハードウェアの改良(たとえば、ダイオード、トランジスタ、スイッチ等の回路構造に対する改良)とソフトウェアの改良(方法手順に対する改良)とが明確に区別されることが可能であった。しかしながら、技術の発展に伴って、多くの方法手順の改良はハードウェア回路構造の直接的改良と考えられ得る。設計者はほとんどすべて、対応するハードウェア回路構造を得るために、改良された方法手順をハードウェア回路にプログラムする。それゆえ、方法手順の改良はハードウェアエンティティモジュールを用いることによっては実施され得ないとは言い難い。たとえば、プログラマブルロジックデバイス(PLD)(たとえば、フィールドプログラマブルゲートアレイ(FPGA))はそのような集積回路である。プログラマブル論理デバイスの論理機能は、ユーザによって構成要素がプログラムされることによって決まる。設計者は、専用集積回路チップを設計および製造するようチップ製造業者に要請することなく、自発的にプログラムしてデジタルシステムを単一PLDに「統合」する。さらに、集積回路チップを手動で製造する代わりに、プログラミングはほとんどの場合「論理コンパイラ」ソフトウェアによって実施され、この「論理コンパイラ」ソフトウェアは、プログラム開発において用いられるソフトウェアコンパイラと同様である。コンパイルする前のオリジナルのコードもまた特定のプログラミング言語で書き込まれ、この特定のプログラミング言語はハードウェア記述言語(Hardware Description Language, HDL)と呼ばれ、たとえば、ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等、複数のタイプのHDLがある。今日では、VHDL(Very-High-Speed Integrated Ci
rcuit Hardware Description Language)およびVerilogが最も一般的に用いられる。当業者であれば、論理的な方法手順を実施するハードウェア回路が容易に得られるためには、方法手順が論理的にプログラムされること、および上記のハードウェア記述言語を用いて集積回路にプログラムされることのみを要するということも理解するであろう。
【００９０】
コントローラは、任意の適切な方法を用いることによって実装され得る。たとえば、コントローラは、マイクロプロセッサもしくはプロセッサ、または、マイクロプロセッサもしくはプロセッサによって実行可能なコンピュータ可読プログラムコード(たとえば、ソフトウェアまたはファームウェア)を格納するコンピュータ可読媒体、論理ゲート、スイッチ、特定用途向け集積回路(ASIC)、プログラマブル論理コントローラ、もしくは埋込みマイクロプロセッサであってよい。コントローラの例として、以下のマイクロプロセッサ、すなわち、ARC625D、Atmel AT91SAM、Microchip PIC18F26K20およびSilicone Labs C8051F320を含むが、これらに限定されるわけではない。メモリコントローラはメモリの制御論理の一部として実装されてもよい。当業者はまた、コントローラは純粋なコンピュータ可読プログラムコードを用いて実装され得、また、方法のステップは、コントローラが、論理ゲート、スイッチ、特定用途向け集積回路、プログラマブル論理コントローラ、埋込みマイクロコントローラ等の形式で同一の機能をさらに実施できるよう論理的にプログラムされ得ることも知っている。それゆえ、このようなコントローラはハードウェアコンポーネントと見なされてよく、コントローラに含まれ、さまざまな機能を実施するように構成された装置もまた、ハードウェアコンポーネント内の構造と見なされてよい。別法として、さまざまな機能を実施するように構成された装置は、方法を実施するためのソフトウェアモジュール、およびハードウェアコンポーネント内の構造の両方であると見なされてもよい。
【００９１】
記述された実施形態において述べられるシステム、装置、モジュールまたはユニットは、コンピュータチップまたはエンティティによって実装され得、または、一定の機能を備える製品によって実装され得る。典型的な実装デバイスはコンピュータである。コンピュータは、たとえば、パーソナルコンピュータ、ラップトップ型コンピュータ、携帯電話、カメラ付き携帯電話、スマートフォン、携帯端末、メディアプレイヤー、ナビゲーションデバイス、電子メールデバイス、ゲーム機、タブレット型コンピュータもしくはウェアラブルデバイス、またはこれらのデバイスの任意の組合せであってよい。
【００９２】
説明しやすくするために、記述された装置は、機能をさまざまなユニットに分割することによって説明される。確かに、本出願が実施されるとき、ユニットの機能は1つまたは複数のソフトウェアおよび/またはハードウェアに実装されてよい。
【００９３】
当業者であれば、本開示の実施形態は、方法、システムまたはコンピュータプログラム製品として提供されてよいことを理解するであろう。それゆえ、本開示は、ハードウェアのみの実施形態、ソフトウェアのみの実施形態、またはソフトウェアとハードウェアとの組合せによる実施形態の形式を用いることができる。加えて、本開示は、コンピュータ使用可能なプログラムコードを含む1つまたは複数のコンピュータ使用可能な記憶媒体(ディスクメモリ、CD-ROMおよび光メモリを含むがこれらに限定されない)に実装されるコンピュータプログラム製品の形式を用いることができる。
【００９４】
本開示は、本開示の実施形態による方法、デバイス(システム)およびコンピュータプログラム製品のフローチャートおよび/またはブロック図を参照して記述される。コンピュータプログラム命令は、フローチャートおよび/またはブロック図における各プロセスおよび/または各ブロック、ならびに、フローチャートおよび/またはブロック図におけるプロセスおよび/またはブロックの組合せを実装するために用いられ得ることが理解されるであろう。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、埋込みプロセッサ、または任意の他のプログラマブルデータ処理デバイスのプロセッサに対して提供されて機械を生成することができ、その結果、コンピュータまたは任意の他のプログラマブルデータ処理デバイスのプロセッサによって実行される命令は、フローチャートにおける1つまたは複数のプロセス、またはブロック図における1つまたは複数のブロックにおいて特定の機能を実施するための装置を生成する。
【００９５】
これらのコンピュータプログラム命令は、コンピュータまたは任意の他のプログラマブルデータ処理デバイスに特定の方法で動作するよう指示することができるコンピュータ可読メモリに格納され得、その結果、コンピュータ可読メモリに格納された命令は、命令装置を含むアーティファクトを生成する。この命令装置は、フローチャートにおける1つまたは複数のプロセス、および/またはブロック図における1つまたは複数のブロックにおいて特定の機能を実施する。
【００９６】
これらのコンピュータプログラム命令は、コンピュータまたは他のプログラマブルデータ処理デバイスにロードされ得、その結果、一連の動作およびステップがコンピュータまたは他のプログラマブルデバイス上で実行され、コンピュータ実施処理を生成する。それゆえ、コンピュータまたは他のプログラマブルデバイス上で実行される命令は、フローチャートにおける1つまたは複数のプロセス、またはブロック図における1つまたは複数のブロックにおいて特定の機能を実施するためのステップを提供する。
【００９７】
典型的な構成では、コンピューティングデバイスは1つまたは複数のプロセッサ(CPU)、1つまたは複数の入力/出力インターフェース、1つまたは複数のネットワークインターフェース、および1つまたは複数のメモリを含む。
【００９８】
メモリは、コンピュータ可読媒体、たとえば、読出し専用メモリ(ROM)またはフラッシュメモリ(フラッシュRAM)内に、非永続型メモリ、ランダムアクセスメモリ(RAM)、および/または不揮発性メモリを含んでよい。
【００９９】
コンピュータ可読媒体は、任意の方法または技術を用いて情報記憶装置を実装することができる永続的、非永続的、可動および非可動の媒体を含む。情報は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータであってよい。コンピュータ記憶媒体は、相変化ランダムアクセスメモリ(PRAM)、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、他の種類のランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM)、電気的消去可能プログラマブル読出し専用メモリ(EEPROM)、フラッシュメモリもしくは他のメモリ技術、コンパクトディスク読出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)もしくは他の光学式記憶装置、磁気テープ、磁気ディスク記憶装置、他の磁気記憶デバイス、またはコンピューティングデバイスによりアクセス可能な情報を格納するために用いられ得る任意の他の非伝送媒体を含むが、これらに限定されるわけではない。本明細書における定義に基づき、コンピュータ可読媒体は、たとえば変調されたデータ信号および搬送波等の一時的なコンピュータ可読媒体(一時的媒体)を含まない。
【０１００】
「含む(include)」、「含有する(contain)」といった用語、またはこれらの任意の他の変形用語は非排他的な包含をカバーすることが意図され、これによって、要素の一覧を含むプロセス、方法、製品またはデバイスは、これらの要素だけでなく明示的に挙げられていない他の要素も含むこと、または、そのプロセス、方法、製品またはデバイスに固有の要素をさらに含むことにさらに留意されたい。「〜を含む(include a…)」が後に続く要素は、さらなる制約がなければ、その要素を含むプロセス、方法、製品またはデバイスにおいて追加的同一要素が存在することを排除するものではない。
【０１０１】
当業者であれば、本出願の実施形態は、方法、システム、またはコンピュータプログラム製品として提供されてよいことを理解するであろう。それゆえ、本出願は、ハードウェアのみの実施形態、ソフトウェアのみの実施形態、またはソフトウェアとハードウェアとの組合せによる実施形態の形式を用いることができる。加えて、本出願は、コンピュータ使用可能なプログラムコードを含む1つまたは複数のコンピュータ使用可能な記憶媒体(ディスクメモリ、CD-ROMおよび光メモリを含むがこれらに限定されない)に実装されるコンピュータプログラム製品の形式を用いることができる。
【０１０２】
前述の説明は単に本出願の実施形態であるにすぎず、本出願を限定するよう意図されるものではない。当業者は、本出願にさまざまな修正および変更を加えることができる。本出願の精神および原理の範囲内で加えられる任意の修正、等価的置換、改良等は、本出願の特許請求の範囲の範囲内にあるものとする。
【符号の説明】
【０１０３】
11  データ
12  データ
13  データ
510  選択モジュール
520  決定モジュール
530  処理モジュール
【図１】
0006804668.tif 000002
【図２】
0006804668.tif 000003
【図３】
0006804668.tif 000004
【図４】
0006804668.tif 000005
【図５】
0006804668.tif 000006