(57)【特許請求の範囲】
【請求項１】
対象データベースのデータ動作オブジェクト上で実行される状態遷移動作を、デバイスの第1の決定ユニットによって決定するステップと、
前記状態遷移動作および前記対象データベースの前状態値であり前記状態遷移動作の実行前に存在する前状態値に基づいて、前記対象データベースの状態値であり前記状態遷移動作の実行後に存在する状態値を、前記デバイスの第2の決定ユニットによって決定するステップとを含み、
前記状態値は前記対象データベースの状態を表わすために用いられ、
前記状態遷移動作は、複数のデータ動作オブジェクトに対応し、
前記対象データベースの前記状態値であり前記状態遷移動作の実行後に存在する前記状態値を決定するステップは、
前記第2の決定ユニットの第1のハッシュ値決定サブユニットによって、前記複数のデータ動作オブジェクトの各々をシリアル化して、複数のシリアル化されたデータを得るステップと、
前記第2の決定ユニットによって、前記複数のデータ動作オブジェクトによって前記状態遷移動作を実行するシーケンスが固定されているかどうかを判定するステップと、
前記第1のハッシュ値決定サブユニットのシリアル化されたデータ決定サブユニットの第1の接合化サブユニットによって、前記複数のデータ動作オブジェクトによって前記状態遷移動作を実行する前記シーケンスが固定されている場合、前記状態遷移動作を実行するシーケンスに基づいて前記複数のシリアル化されたデータを接合して、接合されシリアル化されたデータを得るステップと、
前記シリアル化されたデータ決定サブユニットの第2の接合化サブユニットによって、前記複数のデータ動作オブジェクトによって前記状態遷移動作を実行する前記シーケンスが固定されていない場合、第1の所定のシーケンスに基づいて前記複数のシリアル化されたデータを接合して、接合されシリアル化されたデータを得るステップと、
前記第2の決定ユニットの第1の状態値決定サブユニットによって、前記接合されシリアル化されたデータのハッシュ値を決定し、該ハッシュ値を前記状態遷移動作に対応するハッシュ値として用いるステップとを含み、
前記対象データベースの状態値であり前記状態遷移動作の実行後に存在する状態値を決定するステップは、前記状態遷移動作に対応するハッシュ値および前記状態遷移動作の実行前に存在する前記対象データベースのハッシュ値に基づいて、前記対象データベースの状態値であり前記状態遷移動作の実行後に存在する状態値を、前記第1の状態値決定サブユニットによって決定するステップを含む、
データベース状態を決定する方法。
【請求項２】
前記データ動作オブジェクトは、そのクラスが前記対象データベースのメモリにロードされ、かつ関連するメンバー変数およびメンバー関数を有するインスタンスを含む、請求項1に記載の方法。
【請求項３】
前記対象データベースの前記状態値であり前記状態遷移動作の実行後に存在する前記状態値を決定するステップは、
前記データ動作オブジェクトおよび前記対象データベースの前記状態値であり前記状態遷移動作の実行前に存在する前記状態値に基づいて、前記対象データベースの前記状態値であり前記状態遷移動作の実行後に存在する前記状態値を、前記第2の決定ユニットによって決定するステップを含む、請求項2に記載の方法。
【請求項４】
前記対象データベースはブロックチェーンデータベースである、請求項3に記載の方法。
【請求項５】
前記対象データベースの前記状態値であり前記状態遷移動作の実行後に存在する前記状態値を決定するステップは、
前記データ動作オブジェクトのハッシュ値を、前記第1のハッシュ値決定サブユニットによって決定するステップと、
前記データ動作オブジェクトの前記ハッシュ値および前記対象データベースの前記状態値であり前記状態遷移動作の実行前に存在する前記状態値に基づいて、前記対象データベースの前記状態値であり前記状態遷移動作の実行後に存在する前記状態値を、前記第1の状態値決定サブユニットによって決定するステップとを含む、請求項4に記載の方法。
【請求項６】
前記接合されシリアル化されたデータを得る前記ステップは、
前記第2の接合化サブユニットによって、少なくとも2つの前記シリアル化されたデータの間に所定のセパレータを配置するステップと、
前記第2の接合化サブユニットによって、前記所定のセパレータが配置された後に得られるすべての前記シリアル化されたデータを接合して、前記接合されシリアル化されたデータを得るステップとを含む、請求項1に記載の方法。
【請求項７】
前記対象データベースの前記状態値であり前記状態遷移動作の実行後に存在する前記状態値を決定するステップは、
前記第1の状態値決定サブユニットによって、第2の所定のシーケンスに基づいて、前記データ動作オブジェクトの前記ハッシュ値と前記対象データベースの前記状態値であり前記状態遷移動作の実行前に存在する前記状態値とを接合して、接合されたデータを得るステップと、
前記第1の状態値決定サブユニットによって、前記接合されたデータのハッシュ値を決定し、かつ前記接合されたデータの前記ハッシュ値を前記対象データベースの前記状態値であり前記状態遷移動作の実行後に存在する前記状態値として用いるステップとを含む、請求項5に記載の方法。
【請求項８】
前記対象データベースは、ブロックチェーン内の任意のノードに対応するデータベースである、請求項1から5のいずれか一項に記載の方法。
【請求項９】
前記状態値は前記対象データベースに格納されたデータの特性を一意的に表わすために用いられる、請求項1に記載の方法。
【請求項１０】
照合されるべき前記対象データベースの前記前状態値が前記状態値と同一である否かを、前記デバイスの判定ユニットによって判定するステップと、
前記前状態値が前記対象データベースの前記状態値と同一であるとの判定に応じて、前記対象データベースの前状態と前記状態は整合していると、前記デバイスの整合性判定ユニットによって判定するステップとをさらに含む、請求項1に記載の方法。
【請求項１１】
請求項1から10のいずれか一項に記載の方法を実行するように構成された複数のモジュールを含む、データベース状態を決定するデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願はコンピュータ技術の分野に関し、詳細には、データベース状態決定方法およびデバイスならびにデータベース整合性検証方法およびデバイスに関する。
【背景技術】
【０００２】
データを格納するとき、コンピュータは複数の異なるデータベースに同一のデータを格納する場合がある。これらの異なるデータベースに格納されたデータは通常サービス要件に基づいて同期される必要があり、すなわち、データベースに格納されたデータは通常整合していることを要する。一例として、ブロックチェーン技術が用いられる。検証が実行された後、ブロックチェーンデータを格納するすべてのノード(ノードに対応するデータベース)に複数のトランザクション記録が書き込まれる。すべてのノードに受け入れられる新たなブロックが生成されることを確実にするために、すべてのノードに対応するすべてのデータベースに格納されたデータは整合していなければならない。別の例として、分散型ストレージ内のプライマリ/セカンダリデータベースの場合、プライマリデータベース内のデータにエラーが生じたときに別のデータベース(セカンダリデータベース)からデータを復元するのを助けるために、プライマリデータベースに格納されたデータとセカンダリデータベースに格納されたデータとが整合していることも通常必要である。
【０００３】
複数のデータベースに格納されたデータが整合していることを確実にするために、複数のデータベース内のデータ上で整合性の照合が行われ得、データが整合していないと分かったときに時宜を得て改善策が講じられ得る。データベースは通常多くのデータを含むので、データベースの整合性の照合は、複数のデータベース内のすべてのデータを一つ一つ比較するのではなく、データベース内のデータの状態を表わすために用いられる状態値を比較することによって実行されるのが通常である。説明しやすくするために、データベース内のデータの状態はデータベース状態と呼ばれ得る。
【０００４】
既存技術では、データベース内のデータが変化した後毎回、データベースの状態値は再決定されることを要する。この状態値が決定されるとき、状態値は通常データベース内のすべてのデータを用いて算出される。たとえば、状態値はデータベース内のデータのハッシュ値であってよい。この場合、ハッシュ値が決定されるとき、ストリングを得るためにデータベース内のすべてのデータが接合されることを要する。次に、このストリングはハッシュ関数の入力として用いられ、このハッシュ関数を用いることによってハッシュ値が算出される。この場合、データベースが比較的大量のデータを含むと、データベース状態値が決定されるときに比較的多くのコンピューティングリソースが消費される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本出願の実施形態は、データベース状態値が決定されるときに比較的多くのコンピューティングリソースが消費されるという既存技術の問題点を改善するために、データベース状態決定方法を提供する。
【０００６】
本出願の実施形態において、以下の技術的解決法が用いられる。
【課題を解決するための手段】
【０００７】
データベース状態決定方法が提供される。この方法は、対象データベース上で実行される状態遷移動作を決定するステップと、この決定された状態遷移動作および対象データベースの状態値であり状態遷移動作の実行前に存在する状態値に基づいて、対象データベースの状態値であり状態遷移動作の実行後に存在する状態値を決定するステップとを含み、ここで、状態値は対象データベースの状態を表わすために用いられる。
【０００８】
本出願の実施形態は、データベース状態値が決定されるときに比較的多くのコンピューティングリソースが消費されるという既存技術の問題点を改善するために、データベース状態決定デバイスをさらに提供する。
【０００９】
データベース状態決定デバイスが提供される。このデバイスは、対象データベース上で実行される状態遷移動作を決定するように構成された第1の決定ユニットと、この決定された状態遷移動作および対象データベースの状態値であり状態遷移動作の実行前に存在する状態値に基づいて、対象データベースの状態値であり状態遷移動作の実行後に存在する状態値を決定するように構成された第2の決定ユニットとを含み、ここで、状態値は対象データベースの状態を表わすために用いられる。
【００１０】
データベース整合性検証方法が提供される。この方法は、照合されるべき第1のデータベースの状態値と照合されるべき第2のデータベースの状態値とが同一であるか否かを判定するステップを含み、ここで、第1のデータベースの状態値および第2のデータベースの状態値は本出願において提供されるデータベース状態決定方法を用いて決定され、また、第1のデータベースの状態値と第2のデータベースの状態値とが同一である場合、第1のデータベースの状態と第2のデータベースの状態は整合していると判定するステップを含む。
【００１１】
データベース整合性検証デバイスが提供される。このデバイスは、照合されるべき第1のデータベースの状態値と照合されるべき第2のデータベースの状態値とが同一であるか否かを判定するように構成された状態判定ユニットを含み、ここで、第1のデータベースの状態値および第2のデータベースの状態値は本出願において提供されるデータベース状態決定デバイスを用いて決定され、また、第1のデータベースの状態値と第2のデータベースの状態値とが同一であると判定されたとき、第1のデータベースの状態と第2のデータベースの状態は整合していると判定するように構成された整合性判定ユニットを含む。
【発明の効果】
【００１２】
本出願の実施形態において用いられる前述の技術的解決法の少なくとも1つは、以下の有益な効果をもたらすことができる。
【００１３】
状態遷移動作に起因してそのデータが変化するデータベースの状態値が決定されるとき、対象データベース上で実行される状態遷移動作が決定され、次に、この決定された状態遷移動作およびデータベースの状態値であり状態遷移動作の実行前に存在する状態値に基づいて、データベースの状態値であり状態遷移動作の実行後に存在する状態値が決定される。既存技術と比較して、データベース全体のすべてのデータ上で動作を実行する必要はなく、それによって、過度のコンピューティングリソースの消費を低減させる。
【００１４】
本明細書において示される添付の図面は、本出願に対するさらなる理解を与え、また、本出願の一部分を成すことを意図する。本出願の例示の実施形態および実施形態に関する記述は、本出願について説明することを意図し、本出願に対する制限となるものではない。
【図面の簡単な説明】
【００１５】
【図１】本出願による、ハッシュツリーのデータ構造を示す概略図である。
【図２】本出願による、データベース状態決定方法を示す概略的な実施形態の流れ図である。
【図３】本出願による、データベース整合性検証方法を示す概略的な実施形態の流れ図である。
【図４】本出願による、データベース状態決定方法を示す概略的な実施形態の流れ図である。
【図５】本出願による、データベース状態決定デバイスの特定の構造を示す概略図である。
【図６】本出願による、データベース整合性検証デバイスの特定の構造を示す概略図である。
【発明を実施するための形態】
【００１６】
本出願の目的、技術的解決法および利点をより明確にするため、以下は、本出願の特定の実施形態および対応する添付の図面を参照して本出願の技術的解決法について明確かつ包括的に記述するものである。記述される実施形態は、本出願の実施形態の全部ではなく一部にすぎないことは明らかである。創造的な努力を要することなく本出願の実施形態に基づいて当業者によって得られる他のすべての実施形態は、本出願の保護の範囲内にあるものとする。
【００１７】
添付の図面を参照して、本出願の実施形態において提供される技術的解決法が以下で詳細に記述される。
【００１８】
コンピュータ技術の発展に伴って、すべてのデータベース内のデータが整合しているか否かを検証することがますます一般的になっている。一例として、ブロックチェーンが用いられる。このブロックチェーンは分散型データベースであり、ブロックチェーン内の各データの変化はネットワーク全体の各ブロックチェーンノードに送られ、すべてのノードは完全かつ整合性のあるデータを有する必要がある。データは通常、各ノード上の複数のデータユニットに格納される。データユニットはブロックチェーン内のブロックであってよく、または、複数のブロックを含むデータユニットであってよい。ノードの状態値が決定されるとき、マークルツリー等のハッシュツリーはリーフノードとしての各データユニット内のデータのハッシュ値を用いることによって構築され、次にハッシュツリーのルートノードのハッシュ値がデータベースの状態値として用いられ、その結果、状態値はデータベースの状態を一意的に表わすために用いられる。
【００１９】
図1は、あるデータベースのために構築されたハッシュツリーのデータ構造を示す概略図である。ハッシュツリーのルートノードのハッシュ値が算出されるとき、まず各データユニット内のデータのハッシュ値が算出され、次にこの得られたハッシュ値がハッシュツリーのリーフノードの値として用いられ、各リーフノードの親ノードのハッシュ値が算出され、そして最後にハッシュツリーのルートノードのハッシュ値が得られる。データベース内のデータが変化すると、データベースの状態値は再決定される必要がある。このようにして、ハッシュツリーのルートノードのハッシュ値を算出する前述のプロセスが繰り返されることを要する。データベース内に大量のデータがある場合、ハッシュ動作は大量のデータ上で実行される必要がある。このことは、多くのコンピューティングリソースを消費する。
【００２０】
いくつかの同様のシナリオでは、データベースの状態値が決定されるとき、比較的多くのコンピューティングリソースもまた消費される。簡潔にするため、ここでは詳細を省略する。問題点を改善するために、本出願はデータベース状態決定方法を提供し、これによって、対象データベース上で実行される状態遷移動作に基づいて対象データベースの状態が決定される。
【００２１】
以下は、本出願において提供されるデータベース状態決定方法について詳細に記述するものである。この方法は、たとえば分散型データベース内のデータベースノードまたはブロックチェーン内のノード等のコンピューティングデバイスによって実行され得る。さらに、この方法は、本出願において提供されるデータベース状態決定方法を実施するアプリケーションプログラムによって実行されてもよい。説明しやすくするために、方法の一実施形態は、この方法がコンピューティングデバイスによって実行される例を用いて以下に記述される。この方法がコンピューティングデバイスによって実行されるということは説明するための一例にすぎず、この方法に対する制限であると考えられるべきではないことが理解されるであろう。
【００２２】
図2は、本出願によるデータベース状態決定方法を示す概略的な実施形態の流れ図である。この方法は、以下のステップを含む。
【００２３】
ステップS101：対象データベース上で実行される状態遷移動作を決定する。
【００２４】
ここで、状態遷移動作はデータベースの状態変化を生じさせるデータベース動作であり得、また、具体的にはデータ書込み動作、データ更新動作またはデータ削除動作等の動作であり得る。この状態遷移動作は、処理データ、およびデータを処理する方法を含むことができる。たとえば、データ書込み動作は書き込まれる予定のデータ、およびこのデータが書き込まれるべきデータベース内の特定の場所を含む。ここで、対象データベースは状態遷移動作が実行されるデータベースであり得、また、対象データベースはその状態値が決定されることになる任意のデータベースであり得る。
【００２５】
実際の適用において、状態遷移動作を決定する方法は多数あり得る。たとえば、オブジェクト指向アプリケーションプログラムでは、オブジェクトによって状態遷移動作が実施される場合、状態遷移動作は状態遷移動作に対応するデータ動作オブジェクトを決定することによって決定され得、または、状態遷移動作は状態遷移動作に対応するデータベース動作命令文に基づいて決定され得る。ここで、データ動作オブジェクトは、オブジェクト指向アプリケーションプログラム内のデータオブジェクトでありデータベース動作を実行するために用いられるデータオブジェクトである。オブジェクト指向アプリケーションプログラムにおいては、「オブジェクト」はそのクラスがメモリにロードされるインスタンスであるのが一般的であり、関連するメンバー変数およびメンバー関数を有する。
【００２６】
状態遷移動作はデータベース内のデータの変化を生じさせるので、状態遷移動作が決定された後、データベースの状態であり状態遷移動作の実行後に存在する状態が決定され得る。
【００２７】
ステップS102：決定された状態遷移動作および対象データベースの状態値であり状態遷移動作の実行前に存在する状態値に基づいて、対象データベースの状態値であり状態遷移動作の実行後に存在する状態値を決定する。
【００２８】
ここで、状態値は対象データベースの状態を表わすために用いられる。状態値は対象データベース上で整合性の照合を行うために用いられ得るので、状態値は対象データベースに格納されたデータの特性を一意的に表わすために用いられ得る。たとえば、状態値はハッシュ値であってよく、またはグローバル一意識別子であってよい。ハッシュ値は、ハッシュ関数を用いて入力パラメータ上でハッシュ動作を実行することによって得られる。グローバル一意識別子は、システムによって割り当てられ、かつこのシステムにおいてデータベース状態を一意的に識別するために用いられる識別子であり得る。
【００２９】
当業者であれば、「一意的に表わす」とは完全な一意性という意味に解釈されるべきではなく、許容される誤差範囲内の一意性を意味すると知っているべきであるということに留意されたい。今日最も広く用いられているハッシュアルゴリズムに関しては、理論上、異なる入力データが同一の出力ハッシュ値を有する、いわゆるハッシュの衝突が存在する。
【００３０】
データベース内のデータが変化した後に存在する状態は、データが変化する前に存在する状態および状態遷移動作と関連している。そのため、対象データベース上で実行される状態遷移動作が決定された後、この決定された状態遷移動作および対象データベースの状態値であり動作実行前に存在する状態値に基づいて、対象データベースの状態値であり状態遷移動作の実行後に存在する状態値は決定され得る。
【００３１】
実際の適用において、ステップS101で記述したように、オブジェクト指向アプリケーションプログラムでは、状態遷移動作は状態遷移動作に対応するデータ動作オブジェクトを決定することによって決定され得る。続いて、この決定されたデータ動作オブジェクトおよび対象データベースの状態値であり状態遷移動作の実行前に存在する状態値に基づいて、対象データベースの状態値であり状態遷移動作の実行後に存在する状態値は決定され得る。
【００３２】
短い識別子を用いて異なる状態遷移動作を区別するのを助けるために、状態遷移動作は一定の特性値を用いて一意的に表わされてもよい。この状態遷移動作の特性値はハッシュ値であってよく、または、状態遷移動作を一意的に識別するために用いられるグローバル一意識別子であってよい。簡潔にするため、ここでは詳細を省略する。状態遷移動作の特性値および対象データベースの状態値を算出して、対象データベースの状態値であり状態遷移動作の実行後に存在する状態値を得るのを助けるために、特性値のデータ形式は、対象データベースの状態値のデータ形式と同一または類似するものであってよい。
【００３３】
実際の適用において、オブジェクト指向アプリケーションプログラムについては、データ動作オブジェクトのハッシュ値が決定され得、次にこのデータ動作オブジェクトの決定されたハッシュ値および対象データベースの状態値であり状態遷移動作の実行前に存在する状態値に基づいて、対象データベースの状態値であり状態遷移動作の実行後に存在する状態値が決定される。
【００３４】
以下は、本出願のこの実施形態においてデータ動作オブジェクトのハッシュ値を決定するプロセスについて具体的に記述するものである。
【００３５】
データ動作オブジェクトのハッシュ値が決定されるとき、このデータ動作オブジェクトのデータ形式をハッシュアルゴリズムの入力にサポートされる形式に変換するために、データ動作オブジェクト上でシリアル化動作が実行され得る。このシリアル化動作は、オブジェクトの状態情報を格納または送信可能な形式に変換することができる。データ動作オブジェクト上でシリアル化動作が実行された後、データ動作オブジェクトに対応するシリアル化されたデータが得られ得る。たとえば、シリアル化されたデータのデータ形式はバイナリ形式であってよく、このバイナリ形式のデータはハッシュアルゴリズムの入力として用いられてよい。
【００３６】
データ動作オブジェクトに対応するシリアル化されたデータが得られた後、シリアル化されたデータ上でハッシュ動作が実行されてシリアル化されたデータのハッシュ値を得ることができ、このシリアル化されたデータのハッシュ値はデータ動作オブジェクトのハッシュ値として用いられてよい。
【００３７】
単一の状態遷移動作は複数のデータ動作オブジェクトに対応するのが通常であり、たとえば、ブロックチェーン内のノードに対して実行される各状態遷移動作は、通常複数のデータ動作オブジェクトに対応することに留意されたい。そのため、状態遷移動作に対応するデータ動作オブジェクトがシリアル化されるとき、すべてのデータ動作オブジェクトは別々にシリアル化され得、次に、すべての得られたシリアル化されたデータは順次接合され、最後に、得られた接合されシリアル化されたデータは状態遷移動作に対応するシリアル化されたデータとして用いられる。
【００３８】
すべての得られたシリアル化されたデータが順次接合されるとき、すべてのデータ動作オブジェクトによって状態遷移動作を実行するシーケンスが固定されている場合、すべてのデータ動作オブジェクトに対応するシリアル化されたデータは状態遷移動作を実行するシーケンスに基づいて接合されて、接合されシリアル化されたデータを得る。別法として、すべてのデータ動作オブジェクトによって状態遷移動作を実行するシーケンスが固定されていない場合、すべてのデータ動作オブジェクトに対応するシリアル化されたデータは第1の所定のシーケンスに基づいて接合されて、接合されシリアル化されたデータを得る。次に、接合されシリアル化されたデータのハッシュ値はハッシュ関数を用いて算出され得、この接合されシリアル化されたデータのハッシュ値は状態遷移動作に対応するデータ動作オブジェクトのハッシュ値として用いられる。
【００３９】
第1の所定のシーケンスは所定の接合化シーケンスであってよい。たとえば、各データ動作オブジェクトのデータの形式がキー/値形式である場合、すべてのデータ動作オブジェクトに対応するシリアル化されたデータは、キー値の降順で接合され得る。
【００４０】
状態遷移動作に対応するデータ動作オブジェクトのハッシュ値が決定された後、このデータ動作オブジェクトの決定されたハッシュ値および対象データベースの状態値であり状態遷移動作の実行前に存在する状態値に基づいて、対象データベースの状態値であり状態遷移動作の実行後に存在する状態値が決定され得る。具体的には、データ動作オブジェクトのハッシュ値および対象データベースの状態値であり状態遷移動作の実行前に存在する状態値が第2の所定のシーケンスに基づいて接合されて、接合されたデータを得ることができる。接合されたデータのハッシュ値が決定される。この接合されたデータのハッシュ値は、対象データベースの状態値であり状態遷移動作の実行後に存在する状態値として用いられる。
【００４１】
ここで、第1の所定のシーケンスおよび第2の所定のシーケンスは、それぞれ所定の接合化シーケンスであってよい。すべてのデータベースの状態値が算出されるとき、データが接合されるときに同一の接合化シーケンスが用いられるべきである。そうでなければ、たとえすべてのデータベース内のデータが整合していても、算出される状態値は異なり、データベース間の整合性は正確に照合され得ない。
【００４２】
場合によっては、異なるデータを持つ2つのグループが、接合化が実行された後に同一の接合されたデータとなる可能性があることに留意されたい。たとえば、データ「hello」と「world」とが接合されて、接合されたデータ「helloworld」を得ることができ、同様に、データ「he」と「lloworld」とが接合されて「helloworld」が得られる。接合化が実行される前は2つのグループのデータが異なるデータであることは明らかである。この場合、接合化が実行された後に異なるデータが同一のデータになるのを防止するために、接合化動作が実行されるとき、接合されたデータの一意性を確保するためにセパレータが用いられてよい。具体的には、データを接合する箇所に所定のセパレータが配置され得る。この所定のセパレータは、開発者によって予め定められてよい。たとえば、セパレータは123である。この場合、データ「hello」と「world」とが接合されて「hello123world」を得ることができ、データ「he」と「lloworld」とが接合されて「he123lloworld」を得ることができる。このようにして、接合化が実行された後に2つのデータが異なるデータであることを確保することができる。
【００４３】
セパレータを用いてデータを接合する前述の方法に基づいて、すべてのデータ動作オブジェクトに対応するシリアル化されたデータが接合されるとき、所定のセパレータは、接合されることになる少なくとも2つのシリアル化されたデータの間に配置され得、所定のセパレータが配置された後に得られるすべてのシリアル化されたデータは接合されて、接合されシリアル化されたデータを得る。セパレータを用いてデータが接合される前に、まず、接合化が実行された後に異なるグループのデータが同一のデータであるかどうかについて判定され得ることは確かである。接合されたデータは同一であるという判定結果のとき、各グループのデータはセパレータを用いて接合されて、接合されシリアル化されたデータを得る。
【００４４】
本出願のこの実施形態において提供されるデータベース状態決定方法によれば、そのデータが変化するデータベースの状態値が決定されるとき、対象データベース上で実行される状態遷移動作が決定され、次に、この決定された状態遷移動作およびデータベースの状態値であり状態遷移動作の実行前に存在する状態値に基づいて、データベースの状態値であり状態遷移動作の実行後に存在する状態値が決定され得る。既存技術と比較して、データベース全体のすべてのデータ上で動作を実行する必要はなく、それによって、過度のコンピューティングリソースの消費を低減させる。加えて、既存のブロックチェーン技術においてハッシュツリーのようなツリー構造を用いてノードのハッシュ値が算出されることと比較して、本出願のこの実施形態においては、ツリー構造は構築される必要がなく、また、ツリー構造内の各ノードのハッシュ値は算出される必要がなく、それによって、過度のコンピューティングリソースの整合性照合消費を低減させる。
【００４５】
本出願のこの実施形態において提供されるいくつかの好ましい解決法では、データ動作オブジェクト上でシリアル化動作が実行され、シリアル化されたデータ上でハッシュ動作が実行され、このことはかなりの量のコンピューティングリソースを消費する。しかしながら、分散型データベース、とりわけブロックチェーンにおいては、データベースは通常非常に多くの量のデータを格納し、データベース内のデータ上でハッシュ動作を実行することによって消費されるコンピューティングリソースは、本出願のこの実施形態における前述の動作によって消費されるコンピューティングリソースに比べてはるかに大きい。
【００４６】
前述のデータベース状態決定方法によれば、データベースの状態値が決定され得る。続いて、この決定された状態値に基づいて、データベース上で整合性の照合が行われ得る。以下は、本出願において提供されるデータベース整合性検証方法について詳細に記述するものである。
【００４７】
図3は、データベース整合性検証方法を示す概略的な実施形態の流れ図である。この方法は、以下のステップを含む。
【００４８】
ステップS201：照合されるべき第1のデータベースの状態値と照合されるべき第2のデータベースの状態値とが同一であるか否かを判定する。
【００４９】
ここで、第1のデータベースと第2のデータベースとは、照合されるべきデータベースである。この場合、第1のデータベースの状態値と第2のデータベースの状態値は、本出願のこの実施形態において提供されるデータベース状態決定方法に基づいて別々に決定され得る。特定の決定プロセスについては、本出願中の関連する記述を参照することができる。簡潔にするため、ここでは詳細を省略する。
【００５０】
ステップS202：第1のデータベースの状態値と第2のデータベースの状態値とが同一である場合、第1のデータベースの状態と第2のデータベースの状態は整合していると判定する。
【００５１】
第1のデータベースの状態値と第2のデータベースの状態値とが異なる場合、第1のデータベースの状態と第2のデータベースの状態は整合していないと判定される。
【００５２】
本出願の前述の発明概念に基づいて、本出願の技術的特徴、手段および効果をより理解しやすくするために、以下は、対象データベースがブロックチェーン技術においてノードのデータベースとして用いられる例を挙げて、本出願のデータベース状態決定方法についてさらに記述するものである。
【００５３】
本出願のこの実施形態においては、ブロックチェーンアプリケーションは構造ブロックチェーンアプリケーションであり、対象データベースはLevelDBデータベースであり、データベース状態値はハッシュ値である例が説明のために用いられる。状態遷移動作は、データ動作オブジェクトを用いてLevelDBデータベース上で実行され得る。データ動作オブジェクトは、キー/値形式のデータをLevelDBデータベースに書き込むことができる。ブロックチェーンにおいて状態遷移動作が実行されるとき、状態遷移動作がすべてのノード間で整合していて、かつ状態遷移が同じ順序で実行されることを確実にするためにコンセンサスアルゴリズムが用いられる。
【００５４】
各ブロックチェーンノードについて、データベースに書き込まれるデータがないとき、各データベースの初期状態Sinitは空である。この場合、ハッシュ値が与えられ得る。ここで、データベースの初期状態のハッシュ値はHinitで表される。
【００５５】
この場合、ith状態遷移動作Transitioniが対象データベース上で実行されると決定されるとき、対象データベースのハッシュ値はこの動作に基づいて再算出され得る。図4は、プロセスを示す概略的な実施形態の流れ図であり、このプロセスは以下のステップを含む。
【００５６】
ステップS301：状態遷移動作に対応するデータ動作オブジェクトを決定する。
【００５７】
単一の状態遷移動作は複数のデータ動作オブジェクトに対応するのが通常であり、ノードに対するith  状態遷移動作Transitioniは{op1, op2... opN}の組で表され得、ここで「op」は「動作(operation)」の略であり、単一のデータ動作オブジェクトを指し、単一のキー/値のペアに関する一つの書込み動作を意味する。各opの形式は、Key := NewValである。このように、{op1, op2... opN}は、ith  状態遷移動作の間のN個のキー/値のペアに関する書込み動作を指す。
【００５８】
ステップS302：各データ動作オブジェクトをバイナリ形式のシリアル化されたデータにシリアル化する。
【００５９】
ステップS303：すべてのデータ動作オブジェクトによって状態遷移動作を実行するシーケンスが固定されているか否かを判定し、固定されている場合(yesの場合)はステップS304を実行し、固定されていない場合(noの場合)はステップS305を実行する。
【００６０】
ステップS304：すべてのデータ動作オブジェクトによって状態遷移動作を実行するシーケンスが固定されている場合、この状態遷移動作を実行するシーケンスに基づいてすべてのデータ動作オブジェクトに対応するシリアル化されたデータを接合して、接合されシリアル化されたデータを得、ステップS306を実行する。
【００６１】
ステップS305：すべてのデータ動作オブジェクトによって状態遷移動作を実行するシーケンスが固定されていない場合、第1の所定のシーケンスに基づいてすべてのデータ動作オブジェクトに対応するシリアル化されたデータを接合して、接合されシリアル化されたデータを得る。
【００６２】
ここで、第1の所定のシーケンスはキー値の降順であってよい。
【００６３】
ステップS306：接合されシリアル化されたデータのハッシュ値を決定し、このハッシュ値を状態遷移動作に対応するハッシュ値として用いる。
【００６４】
接合されシリアル化されたデータはハッシュアルゴリズムの入力として用いられてハッシュ動作を実行し、その結果、接合されシリアル化されたデータのハッシュ値、すなわち状態遷移動作Transitioniのハッシュ値Hash(Transitioni)を得る。
【００６５】
ステップS307：第2の所定のシーケンスに基づいて、状態遷移動作に対応するハッシュ値と対象データベースのハッシュ値Hi-1であり状態遷移動作の実行前に存在するハッシュ値Hi-1とを接合して、接合されたデータを得る。
【００６６】
ステップS308：接合されたデータのハッシュ値を決定し、この接合されたデータのハッシュ値を、対象データベースのハッシュ値Hiであり状態遷移動作Transitioni実行後に存在するハッシュ値Hiとして用いる。
【００６７】
対象データベースの最終的に得られたハッシュ値Hiであり状態遷移動作Transitioni実行後に存在する最終的に得られたハッシュ値Hiは、次の等式すなわちHi := Hash(Hi-1 || Hash (Transitioni))で表わすことができる。
【００６８】
H0=Hinit、ここで、||は接合化動作を意味し、Hash(x)はハッシュ関数であり、ハッシュ動作が入力データx上で実行されることを示し、ハッシュ関数はたとえばSHA3であってよい。
【００６９】
本出願のこの実施形態において提供されるデータベース状態決定方法によれば、そのデータが変化するデータベースのハッシュ値が決定されるとき、対象データベース上で実行される状態遷移動作Transitioniが決定され、次に、状態遷移動作に対応するハッシュ値Hash (Transitioni)が決定され、データベースのハッシュ値Hi-1であり状態遷移動作の実行前に存在するハッシュ値Hi-1に基づいて、データベースの状態値Hiであり状態遷移動作の実行後に存在する状態値Hiが決定され得る。既存技術と比較して、ハッシュ値を得るためにノード全体のデータベース内のすべてのデータ上で動作を実行する必要はなく、それによって、過度のコンピューティングリソースの消費を低減させる。加えて、既存のブロックチェーン技術においてハッシュツリーのようなツリー構造を用いてノードのハッシュ値が算出されることと比較して、本出願のこの実施形態においては、ツリー構造は構築される必要がなく、また、ツリー構造内の各ノードのハッシュ値は算出される必要がなく、そのため、コンピューティングリソースの消費はさらに低減される。
【００７０】
本出願の実施形態において提供されるデータベース状態決定方法が上記に記述される。図5に示されるように、同じ考えに基づき、本出願の一実施形態は対応するデータベース状態決定デバイスをさらに提供する。このデバイスは、対象データベース上で実行される状態遷移動作を決定するように構成された第1の決定ユニット401と、この決定された状態遷移動作および対象データベースの状態値であり状態遷移動作の実行前に存在する状態値に基づいて、対象データベースの状態値であり状態遷移動作の実行後に存在する状態値を決定するように構成された第2の決定ユニット402とを特に含み、ここで、状態値は対象データベースの状態を表わすために用いられる。
【００７１】
本出願のこの実施形態において、データベース状態を決定する特定の実施形態はまだ多数ある。一実施形態において、第1の決定ユニット401は対象データベース上で状態遷移動作を実行するために用いられるデータ動作オブジェクトを決定するように構成される。
【００７２】
第2の決定ユニット402は、決定されたデータ動作オブジェクトおよび対象データベースの状態値であり状態遷移動作の実行前に存在する状態値に基づいて、対象データベースの状態値であり状態遷移動作の実行後に存在する状態値を決定するように構成される。
【００７３】
一実施形態において、第2の決定ユニット402は、第1のハッシュ値決定サブユニット403および第1の状態値決定サブユニット404を特に含む。
【００７４】
第1のハッシュ値決定サブユニット403は、データ動作オブジェクトのハッシュ値を決定するように構成される。
【００７５】
第1の状態値決定サブユニット404は、データ動作オブジェクトの決定されたハッシュ値および対象データベースの状態値であり状態遷移動作の実行前に存在する状態値に基づいて、対象データベースの状態値であり状態遷移動作の実行後に存在する状態値を決定するように構成される。
【００７６】
一実施形態において、第1のハッシュ値決定サブユニット403は、シリアル化されたデータ決定サブユニット405および第2のハッシュ値決定サブユニット406を特に含む。
【００７７】
シリアル化されたデータ決定サブユニット405は、データ動作オブジェクトをシリアル化してシリアル化されたデータを得るように構成される。
【００７８】
第2のハッシュ値決定サブユニット406は、シリアル化されたデータのハッシュ値を決定し、かつこのシリアル化されたデータのハッシュ値をデータ動作オブジェクトのハッシュ値として用いるように構成される。
【００７９】
一実施形態において、シリアル化されたデータ決定サブユニット405は、第1の接合化サブユニット407および第2の接合化サブユニット408を特に含む。
【００８０】
一実施形態において、第1の接合化サブユニット407は、対象データベース上で状態遷移動作を実行するために用いられるデータ動作オブジェクトが複数であり、かつすべてのデータ動作オブジェクトによって状態遷移動作を実行するシーケンスが固定されているとき、この状態遷移動作を実行するシーケンスに基づいてすべてのデータ動作オブジェクトに対応するシリアル化されたデータを接合して、接合されシリアル化されたデータを得るように構成される。
【００８１】
第2の接合化サブユニット408は、対象データベース上で状態遷移動作を実行するために用いられるデータ動作オブジェクトが複数であり、かつすべてのデータ動作オブジェクトによって状態遷移動作を実行するシーケンスが固定されていないとき、第1の所定のシーケンスに基づいてすべてのデータ動作オブジェクトに対応するシリアル化されたデータを接合して、接合されシリアル化されたデータを得るように構成される。
【００８２】
接合化が実行された後に異なるグループのデータが同一のデータになるのを防止するために、一実施形態において、第2の接合化サブユニット408は、少なくとも2つのシリアル化されたデータの間に所定のセパレータを配置し、所定のセパレータが配置された後に得られるすべてのシリアル化されたデータを接合して、接合されシリアル化されたデータを得るように構成される。
【００８３】
一実施形態において、第1の状態値決定サブユニット404は、第2の所定のシーケンスに基づいて、データ動作オブジェクトのハッシュ値と対象データベースの状態値であり状態遷移動作の実行前に存在する状態値とを接合して、接合されたデータを得、また、この接合されたデータのハッシュ値を決定し、かつこの接合されたデータのハッシュ値を対象データベースの状態値であり状態遷移動作の実行後に存在する状態値として用いるように構成される。
【００８４】
一実施形態において、対象データベースはブロックチェーン内の任意のノードに対応するデータベースである。
【００８５】
一実施形態において、状態値は、対象データベースに格納されたデータの特性を一意的に表わすために用いられる。
【００８６】
本出願のこの実施形態において提供されるデータベース状態決定デバイスによれば、そのデータが変化するデータベースの状態値が決定されるとき、対象データベース上で実行される状態遷移動作が決定され、ここで、状態遷移動作はデータの変化を生じさせる状態遷移動作である。次に、この決定された状態遷移動作およびデータベースの状態値であり状態遷移動作の実行前に存在する状態値に基づいて、データベースの状態値であり状態遷移動作の実行後に存在する状態値が決定される。既存技術と比較して、データベース全体のすべてのデータ上で動作を実行する必要はなく、それによって、過度のコンピューティングリソースの消費を低減させる。
【００８７】
本出願の一実施形態は対応するデータベース整合性検証デバイスをさらに提供する。図6に示されるように、このデバイスは、照合されるべき第1のデータベースの状態値と照合されるべき第2のデータベースの状態値とが同一であるか否かを判定するように構成された判定ユニット501であって、第1のデータベースの状態値と第2のデータベースの状態値とは本出願の前述の実施形態において提供されるデバイスを用いて決定されるユニットと、第1のデータベースの状態値と第2のデータベースの状態値とが同一であると判定されたとき、第1のデータベースの状態と第2のデータベースの状態は整合していると判定するように構成された整合性判定ユニット502とを特に含む。
【００８８】
1990年代、技術の改良は、ハードウェアの改良(たとえば、ダイオード、トランジスタ、スイッチ等の回路構造に対する改良)であるかソフトウェアの改良(方法手順に対する改良)であるかは明確に区別され得たことに留意されたい。しかしながら、技術の発展に伴って、多くの方法手順の今日における改良は、ハードウェア回路構造の直接的改良と考えることができる。設計者は通常、対応するハードウェア回路構造を得るために、改良された方法手順をハードウェア回路にプログラムする。それゆえ、方法手順は、ハードウェアエンティティモジュールを用いることによって改良され得る。たとえば、プログラマブル論理デバイス(PLD)(たとえば、フィールドプログラマブルゲートアレイ(FPGA))はそのような集積回路であり、PLDの論理機能は、ユーザによるデバイスのプログラミングを介して決まる。設計者は、特定用途向け集積回路チップを設計および製造するようチップ製造業者に要請することなく、プログラミングを行ってデジタルシステムをPLDに「統合」する。さらに、現在、集積回路チップを手動で製造する代わりに、このようなプログラミングはほとんどの場合「論理コンパイラ」ソフトウェアを用いて実施される。この論理コンパイラソフトウェアは、プログラムを開発し、書くために用いられるソフトウェアコンパイラに類似する。オリジナルのコードは、コンパイルのために特定のプログラミング言語で書き込まれることを要する。この言語はハードウェア記述言語(HDL)と呼ばれる。多数のHDLがあり、たとえば、Advanced Boolean Expression Language (ABEL)、Altera Hardware Description Language (AHDL)、  Confluence、  Cornell University Programming Language (CUPL)、  HDCal、  Java Hardware Description Language (JHDL)、  Lava、  Lola、  MyHDL、  PALASM、  Ruby Hardware Description Language (RHDL)等である。Very-high-speed integrated circuit hardware description langua
ge (VHDL)およびVerilogが最も一般的に用いられる。当業者であれば、一旦、いくつか述べられたハードウェア記述言語を用いて方法手順が論理的にプログラムされ、かつ集積回路にプログラムされると、論理的な方法手順を実施するハードウェア回路が容易に得られ得ることも理解するであろう。
【００８９】
コントローラは、任意の適切な方法を用いることによって実装され得る。たとえば、コントローラは、マイクロプロセッサもしくはプロセッサ、または、マイクロプロセッサもしくはプロセッサによって実行可能なコンピュータ可読プログラムコード(たとえば、ソフトウェアまたはファームウェア)を格納するコンピュータ可読媒体、論理ゲート、スイッチ、特定用途向け集積回路(ASIC)、プログラマブル論理コントローラもしくは内蔵マイクロプロセッサであってよい。コントローラの例として、以下のマイクロプロセッサ、すなわち、ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20およびSilicone Labs C8051F320を含むが、これらに限定されるわけではない。メモリコントローラはメモリの制御論理の一部として実装されてもよい。当業者はまた、コンピュータ可読プログラムコードを用いてコントローラを実装することに加えて、論理的なプログラミングは、コントローラが、論理ゲート、スイッチ、特定用途向け集積回路、プログラムマブル論理コントローラおよび内蔵マイクロコントローラの形式で同一の機能を実施することを可能にする方法のステップ上で実行され得ることも知っている。それゆえ、コントローラはハードウェアコンポーネントと見なされてよく、コントローラ内でさまざまな機能を実施するように構成された装置もまた、ハードウェアコンポーネント内の構造と見なされてよい。または、さまざまな機能を実施するように構成された装置は、方法を実施するソフトウェアモジュール、およびハードウェアコンポーネント内の構造の両方であると見なされることさえ可能である。
【００９０】
前述の実施形態において示されるシステム、装置、モジュールまたはユニットは、コンピュータチップまたはエンティティを用いて実装され得、または、一定の機能を備える製品を用いて実装され得る。典型的な実装デバイスはコンピュータである。コンピュータは、たとえば、パーソナルコンピュータ、ラップトップ型コンピュータ、携帯電話、カメラ付き携帯電話、スマートフォン、携帯端末、メディアプレイヤー、ナビゲーションデバイス、電子メールデバイス、ゲーム機、タブレット型コンピュータもしくはウェアラブルデバイス、またはこれらのデバイスの任意の組合せであってよい。
【００９１】
説明しやすくするために、上記の装置は、機能をさまざまなユニットに分割することによって説明される。本出願が実施されるとき、各ユニットの機能は1つまたは複数のソフトウェアおよび/またはハードウェアに実装され得ることは確かである。
【００９２】
当業者であれば、本開示の実施形態は、方法、システムまたはコンピュータプログラム製品として提供されてよいことを理解するであろう。それゆえ、本出願は、ハードウェアのみの実施形態、ソフトウェアのみの実施形態、またはソフトウェアとハードウェアとの組合せによる実施形態の形式を用いることができる。さらに、本出願は、コンピュータ使用可能なプログラムコードを含む1つまたは複数のコンピュータ使用可能な記憶媒体(ディスクメモリ、CD-ROM、光メモリ等を含むがこれらに限定されない)に実装されるコンピュータプログラム製品の形式を用いることができる。
【００９３】
本出願は、本開示の実施形態に基づく方法、デバイス(システム)およびコンピュータプログラム製品の流れ図および/またはブロック図を参照して記述される。コンピュータプログラム命令は、流れ図および/またはブロック図における各プロセスおよび/または各ブロック、ならびに、流れ図および/またはブロック図におけるプロセスおよび/またはブロックの組合せを実施するために用いられ得ることに留意されたい。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、埋込みプロセッサまたは他のプログラマブルデータ処理デバイスのプロセッサに対して提供されて機械を生成することができ、その結果、コンピュータまたは他のプログラマブルデータ処理デバイスのプロセッサによって実行される命令は、流れ図における1つまたは複数のプロセスにおいて、および/またはブロック図における1つまたは複数のブロックにおいて特定の機能を実施するためのデバイスを生成する。
【００９４】
これらのコンピュータプログラム命令は、コンピュータまたは他のプログラマブルデータ処理デバイスに特定の方法で動作するよう指示することができるコンピュータ可読メモリに格納され得、その結果、コンピュータ可読メモリに格納された命令は、命令デバイスを含むアーティファクトを生成する。この命令デバイスは、流れ図における1つまたは複数のプロセスにおいて、および/またはブロック図における1つまたは複数のブロックにおいて特定の機能を実施する。
【００９５】
これらのコンピュータプログラム命令は、コンピュータまたは他のプログラマブルデータ処理デバイスにロードされ得、その結果、一連の動作およびステップがコンピュータまたは他のプログラマブルデバイス上で実行され、それによってコンピュータ実施処理を生成する。それゆえ、コンピュータまたは他のプログラマブルデバイス上で実行される命令は、流れ図における1つまたは複数のプロセスにおいて、および/またはブロック図における1つまたは複数のブロックにおいて特定の機能を実施するためのステップを提供する。
【００９６】
典型的な構成では、算出デバイスは1つまたは複数のプロセッサ(CPU)、入力/出力インターフェース、ネットワークインターフェースおよびメモリを含む。
【００９７】
メモリは、コンピュータ可読媒体、たとえば、読出し専用メモリ(ROM)またはフラッシュメモリ(フラッシュRAM)内に、非永続型メモリ、ランダムアクセスメモリ(RAM)、不揮発性メモリおよび/または他の形式を含んでよい。メモリは、コンピュータ可読媒体の一例である。
【００９８】
コンピュータ可読媒体は、任意の方法または技術を用いて情報記憶装置を格納する永続的、非永続的、可動および非可動の媒体を含む。情報は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータであってよい。コンピュータ記憶媒体の例として、相変化メモリ(PRAM)、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、他の種類のランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM)、電気的消去可能プログラマブル読出し専用メモリ(EEPROM)、フラッシュメモリまたは他のメモリ技術、コンパクトディスク読出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)または他の光学式記憶装置、カセット磁気テープ、磁気テープ/磁気ディスク記憶装置または他の磁気記憶デバイスを含むが、これらに限定されるわけではない。コンピュータ記憶媒体は、算出デバイスによりアクセス可能な情報を格納するために用いられてよい。本明細書における定義に基づいて、コンピュータ可読媒体は、たとえば変調されたデータ信号および搬送波等の一時的媒体(一時的媒体)を含まない。
【００９９】
「含む(include)、「含む(comprise)」といった用語、またはこれらの任意の他の変形用語は非排他的な包含をカバーすることを意図し、そのため、要素の一覧を含むプロセス、方法、製品またはデバイスは、これらの要素だけでなく明示的に挙げられていない他の要素も含むこと、または、このようなプロセス、方法、製品またはデバイスに固有の要素をさらに含むことにさらに留意されたい。「〜を含む(include a ...)」で始まる要素は、さらなる制約がなければ、その要素を含むプロセス、方法、製品またはデバイスにおいて追加的同一要素が存在することを排除するものではない。
【０１００】
本出願は、コンピュータ、たとえばプログラムモジュールによって実行されるコンピュータ実行可能命令の一般的なコンテキスト内に記述されてよい。プログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実施するルーティン、プログラム、オブジェクト、コンポーネント、データ構造等を含むのが一般的である。本出願は、分散コンピューティング環境において実施されてもよい。分散コンピューティング環境において、タスクは、通信ネットワークを介して接続されるリモート処理デバイスによって実行される。分散コンピューティング環境において、プログラムモジュールは、記憶デバイスを含むローカルおよびリモートコンピュータ記憶媒体の両方に配置されてよい。
【０１０１】
本明細書における実施形態は、進歩的な方法で記述される。実施形態の同一または類似の部分に関しては、実施形態を参照することができる。それぞれの実施形態は、他の実施形態との違いに焦点を合わせる。特に、システムの実施形態は基本的に方法の実施形態に類似し、それゆえ簡潔に記述される。関連する部分に関しては、方法の実施形態における関連のある記述を参照することができる。
【０１０２】
前述の実施形態は単に本出願の実施形態であるにすぎず、本出願を限定するよう意図されるものではない。当業者は、本出願にさまざまな修正および変更を加えることができる。本出願の精神および原理から逸脱することなく加えられる任意の修正、等価的置換または改良は、本出願の特許請求の範囲の範囲内にあるものとする。
【符号の説明】
【０１０３】
401  第1の決定ユニット
402  第2の決定ユニット
403  第1のハッシュ値決定サブユニット
404  第1の状態値決定サブユニット
405  シリアル化されたデータ決定サブユニット
406  第2のハッシュ値決定サブユニット
407  第1の接合化サブユニット
408  第2の接合化サブユニット
501  判定ユニット
502  整合性判定ユニット
【図１】
0006921206.tif 000002
【図２】
0006921206.tif 000003
【図３】
0006921206.tif 000004
【図４】
0006921206.tif 000005
【図５】
0006921206.tif 000006
【図６】
0006921206.tif 000007