(58)【調査した分野】(Int.Cl.,DB名)
前記ブロックの前記状態値が取得された後、前記ブロックの前記識別子、前記ブロックの前記状態値、および前のブロックの識別子の間の第1のマッピング関係を確立するステップと、
前記第1のマッピング関係をブロックデータテーブルに保存するステップと、
をさらに含む、請求項3に記載の方法。
前記各サービスデータの前記識別子が取得された後、各サービスデータの前記識別子と前記各サービスデータを有する前記ブロックの前記識別子との間の第2のマッピング関係を確立するステップと、
前記第2のマッピング関係をサービスデータテーブルに保存するステップと、
をさらに含む、請求項5に記載の方法。
ブロックデータテーブルは、各ブロックのバージョン番号、各ブロックの生成時間、および各ブロックの高さ値をさらに含む、請求項4から8のいずれか一項に記載の方法。
非リレーショナルデータをリレーショナルデータに変換することは、ブロック識別子をブロックデータテーブル内のインデックスとして用いることを含む、請求項4から8のいずれか一項に記載の方法。
ブロックチェーンを基にしたデータを処理するための装置であって、請求項1から11のいずれか一項に記載の方法を実行するように構成された複数のモジュールを含む、装置。
【発明を実施するための形態】
【0016】
ブロックチェーンネットワークにはデータがキーバリュー形式で保存される。サービスデータが改ざんされないということは保証することができるが、ブロックチェーンネットワークにおいて、データ保存の信頼性は比較的低く、データ分析およびデータ計算など、トランザクション処理の実行の助けとなるものではない。
【0017】
データベース内のトランザクションは、そのデータベース内で実行される論理ユニットであり、原始性、一貫性、独立性、そして永続性がある。これはデータベース内のデータ処理能力を効果的に保証することができる。ここでの処理能力は、分析能力、計算能力、クエリ能力などを含む。
【0018】
上記を考慮して、本願の実施形態は、ブロックチェーンネットワークにおいて、データ分析およびデータ計算などのトランザクション処理能力を強化するためのブロックチェーンを基にしたデータ処理方法および装置を提供する。
【0019】
本願の目的、技術的解決策、および利点をより明確にするため、本願の具体的な実施形態および対応する添付の図面を参照して、本願の技術的解決策を以下に説明する。明らかに、記載の実施形態は、本願の実施形態のすべてではなく、単にいくつかに過ぎない。本願の実施形態に基づいて創造的な努力なしに当業者によって得られる他の実施形態は本願の保護範囲内に入るものとする。
【0020】
添付の図面を参照し、本願の実施形態によって提供される技術的解決策を以下に詳細に説明する。
【0021】
図1は、本願の一実施形態による、ブロックチェーンを基にしたデータ処理方法の一例を示すフローチャートである。この方法は以下のように説明することができる。本願のこの実施形態は、ブロックチェーンノードによって実行することができ、またはリレーショナルデータベースに対応するサーバによって実行することができる。ここで限定は課されない。
【0022】
ステップ101:ブロックチェーンネットワーク内の各ブロックの識別子を決定する。
【0023】
本願のこの実施形態において、ブロックチェーンネットワーク内の各ブロックは新たに生成されたブロックであってもよい。そのようなブロックの識別子が決定されるとき、サービスデータはそのブロックに保存されていてもいなくてもよい。あるいは、ブロックは以前に生成されたブロックであってもよく、サービスデータはそのようなブロックに保存されている。ここで限定は課されない。
【0024】
ブロックチェーンネットワーク内の各ブロックについて以下のステップが実行される。すなわち、ブロックのダイジェスト情報に基づいてブロックの識別子を取得するステップである。
【0025】
ブロックのダイジェスト情報は、難易値(数学的問題の難易度の目標)、ナンス(その数学的問題への回答を記録する値)などを含むことができるが、これらに限定されないということに留意されたい。
【0026】
ブロックのダイジェスト情報が取得された後、指定されたアルゴリズムを用いてダイジェスト情報を計算することができ、計算結果がブロックの識別子として決定される。
【0027】
ここでの指定されたアルゴリズムは、ハッシュアルゴリズムまたはSHA256アルゴリズムであってもよい。ここで限定は課されない。
【0028】
本願のこの実施形態において説明したブロック識別子はブロックを一意に識別することができ、すなわち、異なるブロック識別子は異なるブロックに対応するということに留意されたい。
【0029】
本願のこの実施形態において、この方法は、ブロックに保存されているサービスデータに基づいてブロックの状態値を取得するステップをさらに含む。ここで、ブロックの状態値はバケットツリーに基づいて取得することができる。
【0030】
まず、マークルツリーが構築され、ブロックに保存されているサービスデータはマークルツリーのリーフノードとみなされる。次に、各リーフノード(サービスデータ)のハッシュ値が決定される。最後に、マークルツリーのルートノードのハッシュ値を取得するための計算が実行される。マークルツリーのルートノードの取得されたハッシュ値がブロックの状態値として決定される。
【0031】
本願のこの実施形態において、この方法は以下をさらに含む。すなわち、ブロックの状態値が取得された後、ブロックの識別子、状態値、および前のブロックの識別子の間の第1のマッピング関係を確立するステップと、第1のマッピング関係をブロックデータテーブルに保存するステップと、である。
【0032】
図2は、本願の一実施形態による、ブロックデータテーブルに対応するテーブル構造の一例を示す図である。
【0033】
ブロックの識別子、状態値、および前のブロックの識別子に加え、ブロックデータテーブルは、ブロックのバージョン番号、ブロックの生成時間、およびブロックの高さ値を保存することができるということが
図2から分かる(高さ値は、ブロックチェーン全体におけるそのブロックの高さとして理解することができ、すなわち、ブロックチェーン全体におけるブロックの位置は高さ値に基づいて決定することができる)。このように、ブロックチェーンネットワーク内の各ブロックの属性情報はブロックデータテーブルを用いて迅速に取得することができる。
【0034】
ステップ103:各ブロックに保存されているサービスデータの識別子を決定する。
【0035】
本願のこの実施形態において、ブロックに保存されているサービスデータについて以下のステップが実行される。すなわち、サービスデータのハッシュ値に基づいてサービスデータの識別子を決定するステップである。
【0036】
サービスデータのハッシュ値は、サービスデータの識別子をハッシュ値とすることができるよう、サービスデータに対応する文字列に対してハッシュ計算を実行することによって取得することができる。
【0037】
サービスデータを一意に識別するための情報をサービスデータの識別子として用いることができるとすると、本願のこの実施形態において説明したデータ識別子はサービスデータを一意に識別することができるということに留意されたい。ここで限定は課されない。
【0038】
本願のこの実施形態において、この方法は、サービスデータの識別子が取得された後、サービスデータの識別子とサービスデータを有するブロックの識別子との間の第2のマッピング関係を確立するステップと、第2のマッピング関係をサービスデータテーブルに保存するステップと、をさらに含む。
【0039】
図3は、本願の一実施形態による、サービスデータテーブルに対応するテーブル構造の一例を示す図である。
【0040】
サービスデータの識別子およびサービスデータを有するブロックの識別子に加え、サービスデータテーブルは、サービスデータのバージョン番号、サービスデータのサービスタイプ、サービスデータにおけるイニシエータの公開鍵、サービスデータの発生時間、サービスデータにおけるデジタル署名(イニシエータによって秘密鍵で署名された)、サービスデータのデータ内容、サービスデータの保存状態(すなわち、サービスデータがブロックに保存されているかどうか)などを保存することができるということが
図3から分かる。
【0041】
ステップ103において説明したサービスデータは、ブロックに保存されているサービスデータであっても、ブロックに保存されていないサービスデータであってもよいということに留意されたい。サービスデータがブロックに保存される前に、サービスデータはサービスデータテーブルに保存することができる。この場合、サービスデータテーブル内のサービスデータの保存状態は、サービスデータはブロックに保存されていないとすることができる。
【0042】
サービスデータがブロックに保存されていれば、サービスデータがサービスデータテーブルに保存されているとき、サービスデータの保存状態は、サービスデータはブロックに保存されているとすることができる。
【0043】
本願のこの実施形態において説明した「第1のマッピング関係」および「第2のマッピング関係」に含まれる「第1の」および「第2の」は特別な意味を持たず、単に異なるマッピング関係を表すということに留意されたい。
【0044】
ステップ105:ブロックの識別子とブロックに保存されているサービスデータの識別子との間のマッピング関係を各ブロックについて確立し、このマッピング関係をリレーショナルデータベースに保存する。
【0045】
本願のこの実施形態において、ブロックの状態値がステップ101において取得されれば、ブロックの識別子、状態値、およびブロックに保存されているサービスデータの識別子の間のマッピング関係をさらに確立することができ、このマッピング関係はリレーショナルデータベースに保存される。
【0046】
図4は、本願の一実施形態による、リレーショナルデータベースに対応するテーブル構造の一例を示す図である。
【0047】
リレーショナルデータベースに対応するテーブル構造は、ブロックの識別子、ブロックの状態値、およびブロックに保存されているサービスデータの識別子を含むということが
図4から分かる。ブロックに保存されているサービスデータの識別子は、データ識別子セットまたはデータ識別子リストであってもよい。ここで限定は課されない。
【0048】
本願のこの実施形態において、ブロックの識別子とブロックに保存されているサービスデータの識別子との間のマッピング関係は、以下の方法を用いてさらに確立することができる。すなわち、ブロックデータテーブルに含まれる第1のマッピング関係とサービスデータテーブルに含まれる第2のマッピング関係とに基づいて、ブロックの識別子とブロックに保存されているサービスデータの識別子との間のマッピング関係を確立するステップである。
【0049】
たとえば、確立されたブロックデータテーブルを表1に示す。
【0051】
確立されたサービスデータテーブルを表2に示す。
【0053】
表1および表2を分析することによって、識別子がBXMEuqJfnhC7no8n5EPXPUzyiLw21YWxAMqW6fAMpxidであるサービスデータは、識別子が6XeQRg6Ajw3rTAZddefitnmfpAKA6NspnLhm8byuvJXMであるブロックに保存され、識別子がDnTg93xxdYiE88iRxkXrpUGfQemtL1uHs422J6RUizF1であるサービスデータおよび識別子がDkukkEqW4iirM7waHuRh258PCpYd54QwLL8v1ATjGSP6であるサービスデータは、識別子が5Gj5aYzepjcU3gPbFhh9VVcx9jMvsAeP2oCvzKZ4LC4Bであるブロックに保存されていると判断することができる。
【0054】
ブロック識別子に基づいて、ブロックの識別子とブロックに保存されているサービスデータの識別子との間のマッピング関係を表3に示す。
【0056】
本願のこの実施形態においては、新たなブロックまたは新たなサービスデータが生成されると、ブロックデータテーブル、サービスデータテーブル、およびリレーショナルデータベースを同期的に更新することができる。
【0057】
新たに生成されたブロックの識別子は、その新たなブロックが生成されたときに決定され、ブロックデータテーブルおよび/またはリレーショナルデータベースは、新たに生成されたブロックの識別子に基づいて同期的に更新される。
【0058】
本願の他の一実施形態において、この方法は以下をさらに含む。すなわち、新たなサービスデータが生成されると、その新たに生成されたサービスデータの識別子を決定するステップと、新たなサービスデータがブロックに保存されると、新たに生成されたサービスデータの識別子と新たなサービスデータを有するブロックの識別子との間のマッピング関係を確立するステップと、マッピング関係に基づいて、サービスデータテーブルおよび/またはリレーショナルデータベースを同期的に更新するステップと、である。
【0059】
たとえば、新たなサービスデータが生成されると、そのサービスデータはサービスデータテーブルに保存することができ、表2は表4に更新することができる。
【0061】
表4における内容に基づいて、識別子がDJu65XmCsLiS7QPWfLaQpboKg2eJZtP6ZYtAsJsSGFjbであるサービスデータはブロックに保存されていないと判断することができる。
【0062】
サービスデータがブロックに保存されれば、表4におけるサービスデータは表5におけるサービスデータに更新される。
【0064】
表5における内容に基づいて、識別子がDJu65XmCsLiS7QPWfLaQpboKg2eJZtP6ZYtAsJsSGFjbであるサービスデータは、識別子が6Un3dbeVx21HfqZwaAZ1DgLnjTFAA7KUokRqg7pkTqcvであるブロックに保存されていると判断することができる。
【0065】
明らかに、識別子が6Un3dbeVx21HfqZwaAZ1DgLnjTFAA7KUokRqg7pkTqcvであるブロックが新たに生成されたブロックであれば、本願のこの実施形態において、ブロックデータテーブル(表1)における内容は表6における内容にさらに更新される。
【0067】
新たなブロックと新たなサービスデータが生成された後、前述の方法を用いてリレーショナルデータベースをさらに更新することができ、これを表7に示す。
【0069】
ブロックチェーンネットワークに保存されたサービスデータが非リレーショナルデータからリレーショナルデータに変換されると、インデックスを作成してサービスデータの後続のクエリまたは分析を容易にすることもできる。たとえば、ブロック識別子をブロックデータテーブル内のインデックスとして用いることができる。データ識別子は、サービスデータテーブル内のインデックスとして用いることができる。リレーショナルデータベースにおいて、ブロック識別子をインデックスとして用いることができ、データ識別子をインデックスとして用いることができ、またブロック識別子とデータ識別子との両方をインデックスとして用いることができる。ここで限定は課されない。
【0070】
本願のこの実施形態において提供される解決策において、ブロックチェーンネットワーク内のブロックの識別子およびブロックに保存されたサービスデータの識別子が決定される。ブロックの識別子とブロックに保存されたサービスデータの識別子との間のマッピング関係が各ブロックについて確立され、マッピング関係はリレーショナルデータベースに保存される。このように、ブロックチェーンネットワークに保存されたサービスデータは非リレーショナルデータからリレーショナルデータに変換される。リレーショナルデータはリレーショナルデータベースに保存されるため、ブロックチェーンネットワークにおけるデータ保存の信頼性を高めることができ、ブロックチェーンネットワークにおけるデータ分析およびデータ計算などのトランザクション処理能力を強化することができ、そしてブロックチェーンネットワークのシステム能力を強化することができる。
【0071】
図5は、本願の一実施形態による、ブロックチェーンを基にしたデータ処理方法のシナリオの一例を示す図である。
【0072】
ブロックチェーンネットワークに保存されたサービスデータは、非リレーショナルデータからリレーショナルデータに変換されるということが
図5から分かる。リレーショナルデータはリレーショナルデータベースに保存されるため、ブロックチェーンネットワークにおけるデータ保存の信頼性を高めることができ、ブロックチェーンネットワークにおけるデータ分析およびデータ計算などのトランザクション処理能力を強化することができ、そしてブロックチェーンネットワークのシステム能力を強化することができる。
【0073】
図6は、本願の一実施形態による、ブロックチェーンを基にしたデータ処理装置の一例を示す構造図である。このデータ処理装置は決定ユニット601および処理ユニット602を含む。
【0074】
決定ユニット601は、ブロックチェーンネットワーク内の各ブロックの識別子を決定するとともに、各ブロックに保存されているサービスデータの識別子を決定するように構成されている。
【0075】
処理ユニット602は、ブロックの識別子とブロックに保存されているサービスデータの識別子との間のマッピング関係を各ブロックについて確立し、このマッピング関係をリレーショナルデータベースに保存するように構成されている。
【0076】
本願の他の一実施形態において、決定ユニット601は、ブロックチェーンネットワーク内の各ブロックの識別子を決定するように構成され、ブロックチェーンネットワーク内の各ブロックについて以下のステップを含む。すなわち、ブロックのダイジェスト情報に基づいてブロックの識別子を取得するステップである。
【0077】
本願の他の一実施形態において、データ処理装置は計算ユニット603をさらに含む。
【0078】
計算ユニット603は、ブロックに保存されているサービスデータに基づいてブロックの状態値を取得するように構成されている。
【0079】
処理ユニット602は、ブロックの識別子とブロックに保存されているサービスデータの識別子との間のマッピング関係を確立するように構成され、ブロックの識別子、状態値、およびブロックに保存されているサービスデータの識別子の間のマッピング関係を確立することを含む。
【0080】
本願の他の一実施形態において、データ処理装置は第1の確立ユニット604をさらに含む。
【0081】
第1の確立ユニット604は、ブロックの状態値が取得された後、ブロックの識別子、状態値、および前のブロックの識別子の間の第1のマッピング関係を確立し、第1のマッピング関係をブロックデータテーブルに保存するように構成されている。
【0082】
本願の他の一実施形態において、決定ユニット601は、各ブロックに保存されているサービスデータの識別子を決定するように構成され、ブロックに保存されているサービスデータについて以下のステップを含む。すなわち、サービスデータのハッシュ値に基づいてサービスデータの識別子を決定するステップである。
【0083】
本願の他の一実施形態において、データ処理装置は第2の確立ユニット605をさらに含む。
【0084】
第2の確立ユニット605は、サービスデータの識別子が取得された後、サービスデータの識別子とサービスデータを有するブロックの識別子との間の第2のマッピング関係を確立し、第2のマッピング関係をサービスデータテーブルに保存するように構成されている。
【0085】
本願の他の一実施形態において、処理ユニット602は、ブロックの識別子とブロックに保存されているサービスデータの識別子との間のマッピング関係を確立するように構成され、ブロックデータテーブルに含まれる第1のマッピング関係とサービスデータテーブルに含まれる第2のマッピング関係とに基づいて、ブロックの識別子とブロックに保存されているサービスデータの識別子との間のマッピング関係を確立することを含む。
【0086】
本願の他の一実施形態において、データ処理装置は同期ユニット606をさらに含む。
【0087】
同期ユニット606は、新たなブロックが生成されると、その新たに生成されたブロックの識別子を決定し、新たに生成されたブロックの識別子に基づいて、ブロックデータテーブルおよび/またはリレーショナルデータベースを同期的に更新するように構成されている。
【0088】
本願の他の一実施形態において、データ処理装置は更新ユニット607をさらに含む。
【0089】
更新ユニット607は以下のステップを実行するように構成されている。すなわち、新たなサービスデータが生成されると、その新たに生成されたサービスデータの識別子を決定するステップと、新たなサービスデータがブロックに保存されると、新たに生成されたサービスデータの識別子と新たなサービスデータを有するブロックの識別子との間のマッピング関係を確立するステップと、マッピング関係に基づいてサービスデータテーブルおよび/またはリレーショナルデータベースを同期的に更新するステップと、である。
【0090】
本願のこの実施形態において提供されるデータ処理装置は、ソフトウェアを用いて実現することができ、またはハードウェアを用いて実現することができるということに留意されたい。ここで限定は課されない。このデータ処理装置は、ブロックチェーンネットワークに保存されたサービスデータを非リレーショナルデータからリレーショナルデータに変換し、このリレーショナルデータをリレーショナルデータベースに保存する。したがって、ブロックチェーンネットワークにおけるデータ保存の信頼性を高めることができ、ブロックチェーンネットワークにおけるデータ分析およびデータ計算などのトランザクション処理能力を強化することができ、そしてブロックチェーンネットワークのシステム能力を強化することができる。
【0091】
同じ発明の概念に基づいて、本願の一実施形態は、1つまたは複数のメモリおよび1つまたは複数のプロセッサを含む、ブロックチェーンを基にしたデータ処理装置をさらに提供する。メモリはプログラムを格納し、プロセッサの少なくとも1つは以下のステップを実行するように構成されている。すなわち、ブロックチェーンネットワーク内の各ブロックの識別子を決定するステップと、各ブロックに保存されているサービスデータの識別子を決定するステップと、ブロックの識別子とブロックに保存されているサービスデータの識別子との間のマッピング関係を各ブロックについて確立するステップと、マッピング関係をリレーショナルデータベースに保存するステップと、である。
【0092】
本願のこの実施形態において、プロセッサは、前の実施形態において説明した解決策に基づく動作をさらに実行することができ、詳細はここでは再度説明しない。
【0093】
このように、本願の実施形態を上で説明してきた。添付の特許請求の範囲内には他の実施形態が含まれる。いくつかの場合において、特許請求の範囲に記載された動作は異なる順序で実行することができ、それでも所望の結果を得ることができる。加えて、添付の図面に描かれたプロセスは、所望の結果を達成するために必ずしも特定の順序で示されているとは限らない。いくつかの実施形態において、マルチタスク処理および並列処理が有利なことがある。
【0094】
1990年代においては、技術がハードウェアの観点から改善されている(たとえば、ダイオード、トランジスタ、またはスイッチの回路構造が改善されている)のか、ソフトウェアの観点から改善されている(方法手順が改善されている)のかは明らかに識別することができる。しかしながら、技術が発展するにつれて、多くの現在の方法手順における改良はハードウェア回路構造における直接的な改良とみなすことができる。ほとんどすべての設計者は、改良された方法手順をハードウェア回路にプログラムすることによって、対応するハードウェア回路構造を得る。したがって、方法手順における改善は、ハードウェアエンティティモジュールを用いて実現することができないということを意味しない。たとえば、フィールドプログラマブルゲートアレイ(FPGA)などのプログラマブルロジックデバイス(PLD)はそのような集積回路であり、その論理機能はユーザによってデバイスをプログラミングすることによって決定される。設計人員は、専用集積回路チップの設計および製造をチップ製造者に要求することなく、プログラミングを通してデジタルシステムを単一のPLDに「統合する」。加えて、現在のところ、集積回路チップを手作業で製造する代わりに、プログラミングはほとんど「論理コンパイラ」ソフトウェアによって実施され、これは、プログラムの開発および作成に用いられるソフトウェアコンパイラに似ている。元のコードも特定のプログラミング言語を用いて書かれており、これはハードウェア記述言語(HDL)と呼ばれている。アドバンストブール演算式言語(ABEL)、アルテラハードウェア記述言語(AHDL)、コンフルエンス、コーネル大学プログラミング言語(CUPL)、HDCal、Java(登録商標)ハードウェア記述言語(JHDL)、Lava、Lola、MyHDL、PALASM、およびRubyハードウェア記述言語(RHDL)など、多くのHDLがある。超高速集積回路ハードウェア記述言語(VHDL)およびヴェリログが現在最も一般的に用いられている。論理的方法手順のハードウェア回路は、いくつかの先に記載したハードウェア記述言語を通じてこの方法手順に論理的なプログラミングを実行し、この方法手順を集積回路にプログラムすることによって容易に得ることができるということも当業者にとって明らかのはずである。
【0095】
任意の適切な方法でコントローラを実装することができる。たとえば、コントローラは、マイクロプロセッサまたはプロセッサ、およびマイクロプロセッサもしくはプロセッサによって実行することができるコンピュータ可読プログラムコード(ソフトウェアまたはファームウェアなど)を格納するコンピュータ可読媒体、論理ゲート、スイッチ、特定用途向け集積回路(ASIC)、プログラマブルロジックコントローラ、および内蔵マイクロコントローラの形態を取ることができる。コントローラの例には、以下のマイクロコントローラが含まれるが、これらに限定されない。すなわち、ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20、およびSilicon Labs C8051F320である。メモリの制御ロジックの一部としてメモリコントローラを実装することもできる。当業者はまた、コンピュータ可読プログラムコードを用いてコントローラを実装することに加え、論理プログラミングを方法のステップに実行することができ、これにより論理ゲート、スイッチ、プログラマブルロジックコントローラ、内蔵マイクロコントローラなどの形態でコントローラが同じ機能を実現することが可能になるということを知っている。したがって、そのようなコントローラはハードウェアコンポーネントとみなすことができる。コントローラに含まれて様々な機能を実現するように構成された装置はハードウェアコンポーネントにおける構造とみなすことができる。あるいは、様々な機能を実現するように構成された装置は、方法を実行するソフトウェアモジュールと、ハードウェアコンポーネントにおける構造の両方とみなすことさえできる。
【0096】
上の実施形態において説明したシステム、装置、モジュールまたはユニットは、コンピュータチップまたはエンティティによって実現することができ、または特定の機能を備えた製品によって実現することができる。典型的な実施装置はコンピュータである。コンピュータは、たとえば、パーソナルコンピュータ、ラップトップコンピュータ、携帯電話、カメラ付き電話、インテリジェントフォン、携帯情報端末、メディアプレーヤ、ナビゲーションデバイス、電子メールデバイス、ゲームコンソール、タブレットコンピュータ、ウェアラブルデバイス、またはこれらの組み合わせであってもよい。
【0097】
説明を容易にするために、この装置は、様々なユニットに機能を分割することによって説明されている。もちろん、本願が実施されるとき、すべてのユニットの機能は1つまたは複数のソフトウェアおよび/またはハードウェアにおいて実現することができる。
【0098】
当業者は、本開示の実施形態は、方法、システム、またはコンピュータプログラム製品として提供することができるということを理解すべきである。したがって、本開示は、ハードウェアのみの実施形態、ソフトウェアのみの実施形態、またはソフトウェアとハードウェアとの組み合わせを用いた実施形態という形態を用いることができる。また、本開示は、コンピュータ使用可能プログラムコードを含む1つまたは複数のコンピュータ使用可能記憶媒体(磁気ディスクメモリ、CD-ROM、光メモリなどを含むがこれらに限定されない)上に実装されるコンピュータプログラム製品の形態を用いることができる。
【0099】
本開示は、本開示の実施形態に基づく方法、装置(システム)、およびコンピュータプログラム製品のフローチャートおよび/またはブロック図を参照して説明している。フローチャートおよび/またはブロック図中の各プロセスおよび/または各ブロック、ならびにフローチャートおよび/またはブロック図中のプロセスおよび/またはブロックの組み合わせを実現するためにコンピュータプログラム命令を用いることができるということが理解されるべきである。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、組み込みプロセッサ、または機械を生成するための任意の他のプログラム可能データ処理装置のプロセッサに提供することができるので、コンピュータまたは任意の他のプログラム可能データ処理装置のプロセッサによって実行される命令は、フローチャート中の1つまたは複数のプロセスおよび/またはブロック図中の1つまたは複数のブロックにおいて特定の機能を実現するための装置を生成する。
【0100】
これらのコンピュータプログラム命令は、コンピュータまたは任意の他のプログラム可能データ処理装置に特定の方法で動作するように命令することができるコンピュータ可読メモリに格納することができるので、コンピュータ可読メモリに格納された命令は、命令装置を含むアーチファクトを生成する。命令装置は、フローチャート中の1つまたは複数のプロセスおよび/またはブロック図中の1つまたは複数のブロックにおいて特定の機能を実現する。
【0101】
これらのコンピュータプログラム命令は、コンピュータまたは他のプログラム可能データ処理装置上で一連の動作およびステップが実行されるように、コンピュータまたは他のプログラム可能装置にロードすることができ、これによってコンピュータ実施処理が生成される。したがって、コンピュータまたは他のプログラム可能装置上で実行される命令は、フローチャート中の1つまたは複数のプロセスおよび/またはブロック図中の1つまたは複数のブロックにおいて特定の機能を実現するためのステップを提供する。
【0102】
典型的な構成において、コンピューティングデバイスが、1つまたは複数のプロセッサ(CPU)と、入力/出力インタフェースと、ネットワークインタフェースと、メモリと、を含む。
【0103】
メモリは、非永続メモリ、ランダムアクセスメモリ(RAM)、不揮発性メモリ、および/またはコンピュータ可読媒体、たとえば、リードオンリーメモリ(ROM)またはフラッシュメモリにおける他の形態を含むことができる。メモリはコンピュータ可読媒体の一例である。
【0104】
コンピュータ可読媒体は、任意の方法または技術を用いて情報を格納することができる永続、非永続、移動可能、および移動不能の媒体を含む。情報は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータであってもよい。コンピュータ記憶媒体の例には、パラメータランダムアクセスメモリ(PRAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、他のタイプのRAM、ROM、電気的消去可能プログラマブルROM(EEPROM)、フラッシュメモリまたは他のメモリ技術、コンパクトディスクROM(CD-ROM)、デジタル多用途ディスク(DVD)または他の光学記憶装置、磁気カセットテープ、磁気テープディスク記憶装置または他の磁気記憶装置、またはコンピューティングデバイスによってアクセスすることができる情報を格納するために用いることができる任意の他の非一時的媒体が含まれるが、これらに限定されない。本明細書における定義に基づいて、コンピュータ可読媒体は、変調データ信号および搬送波などのコンピュータ可読一時的媒体(一時的媒体)を含まない。
【0105】
「含む」、「有する」という用語、またはそれらの任意の他の変形は、非排他的な包含を網羅することを意図しているので、一連の要素を含むプロセス、方法、商品、または装置はこれらの要素を含むだけでなく、明示的に列挙されていない他の要素をも含み、またはそのようなプロセス、方法、商品、または装置に固有の要素をさらに含むということに留意されたい。より多くの制約がなければ、「・・・を含む」によって説明した要素は、その要素を含むプロセス、方法、商品、または装置におけるもう1つの同一の要素をさらに含む。
【0106】
本願は、コンピュータ、たとえば、プログラムモジュールによって実行される実行可能コンピュータ命令の一般的な文脈において説明することができる。一般に、プログラムモジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実装するためのルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本願は、分散コンピューティング環境においても実施することができる。これらの分散コンピューティング環境においては、通信ネットワークを通じて接続された遠隔処理装置によってタスクが実行される。分散コンピューティング環境において、プログラムモジュールは、記憶装置を含むローカルおよびリモートコンピュータ記憶媒体に配置することができる。
【0107】
本明細書における実施形態は漸進的な方法で記載されている。実施形態における同一または類似の部分については、これらの実施形態を参照することができる。各実施形態は他の実施形態との違いに焦点を当てている。特に、システムの実施形態は方法の実施形態と類似しており、したがって、簡単に説明している。関連部分について、方法の実施形態における部分的な説明を参照することができる。
【0108】
前の実施形態は単に本願の実施形態に過ぎず、本願を限定することを意図していない。当業者は本願に対して様々な修正および変更を行うことができる。本願の精神および原理から逸脱することなくなされたいかなる修正、均等な置換、または改良も、本願の特許請求の範囲内に含まれるものとする。
【0109】
図7は、本開示の一実施形態による、ブロックチェーンを基にしたデータ処理のためのコンピュータ実装方法700の一例を示すフローチャートである。提示を明確にするために、以下の説明は、この説明における他の図の文脈において方法700を一般的に説明している。しかしながら、方法700は、たとえば、必要に応じて、任意のシステム、環境、ソフトウェア、およびハードウェア、またはシステム、環境、ソフトウェア、およびハードウェアの組み合わせによって実行することができるということが理解されよう。いくつかの実施形態において、方法700の様々なステップを並行して、組み合わせて、ループで、または任意の順序で実行することができる。
【0110】
702で、本解決策が適用されるべきブロックチェーンネットワークが特定される。特定されたブロックチェーンネットワークはいくつかの例においては複数のブロックを含むが、いくつかのブロックチェーンネットワークにおいては単一のブロックが含まれていてもよい。ブロックチェーンネットワーク内のブロックは既存のブロックのセットであってもよく、いくつかの例においては、ブロックの1つまたは複数が新たに生成されてもよい。いくつかの例において、各ブロックはサービスデータを含む、または保存することができる。ブロックチェーンネットワークの特定は、自動または手動の特定に基づいていてもよく、任意の適切なソフトウェアアプリケーション、オペレーティングシステム、サービス、またはプラットフォームによって、またはこれらを用いて実行することができる。この解決策を実行する際に、これらの複数のブロックの中のブロックのそれぞれが動作704〜動作716に従って処理される。702から、方法700は704に進む。
【0111】
704で、特定のブロックの識別子が決定される。各特定のブロックは特定の一意の識別子に関連することができる。換言すれば、ブロックチェーンネットワーク内の各ブロックは他のすべてのブロック識別子と異なる識別子を有する。
【0112】
いくつかの例において、特定のブロックの識別子の決定は既存のブロック識別子を識別することによって実行される。他の例において、特定のブロックに関連したダイジェスト情報を取得することができる。ブロックのダイジェスト情報は、たとえば、難易値(数学的問題の難易度の目標など)、ナンス値(その数学的問題への回答を記録する値など)、またはこの開示と一致する他の情報を含むことができる。取得されたダイジェスト情報の少なくとも一部を用いて、識別子を生成することができる。たとえば、指定されたアルゴリズムを用いてダイジェスト情報の少なくとも一部に適用し、対応する識別子を計算することができる。計算の結果は、いくつかの例において、特定のブロックの識別子として用いることができる。指定されたアルゴリズムは、たとえば、とりわけ、ハッシュアルゴリズムまたはSHA256アルゴリズムであってもよい。704から、方法700は706に進む。
【0113】
706で、特定のブロックに保存されているサービスデータの識別子が決定される。いくつかの例において、特定のブロックはサービスデータに関連していないか、サービスデータを含まないことがある。いくつかの例において、サービスデータの識別子を決定することは、下にあるサービスデータのハッシュ値に基づいてサービスデータの識別子を決定することを含むことができる。サービスデータのハッシュ値は、サービスデータに対応する文字列に対してハッシュ計算を実行することによって取得することができ、結果のハッシュ値はサービスデータの識別子として用いられる。サービスデータ識別子は、いくつかの例において、サービスデータを一意に識別することができる。
【0114】
サービスデータは、特定のブロックに保存されているサービスデータであっても、現在のところブロックに保存されていないサービスデータであってもよい。サービスデータがブロックに保存される前に、サービスデータはサービスデータテーブルに保存することができる。いくつかの例において、サービスデータテーブルは各サービスデータ識別子について保存状態を含むことができ、ここで保存状態は、サービスデータが特定のブロックに保存されているかいないかを識別することができる。サービスデータが特定のブロックに保存されていれば、サービスデータテーブル内の保存状態はそのように示すことができる。706から、方法700は708に進む。
【0115】
708で、ブロックに保存されているサービスデータに基づいて特定のブロックの状態値を取得することができる。一例において、特定のブロックに保存されているサービスデータに基づいてブロックの状態値を取得するために、追加の動作を実行することができる。一例において、特定のブロックの状態値はバケットツリーに基づいて取得することができる。まず、マークルツリーを構築することができ、ブロックに保存されているサービスデータはマークルツリーのリーフノードとして用いることができる。次に、各リーフノード(すなわち、サービスデータ)のハッシュ値が決定される。マークルツリーのルートノードのハッシュ値を取得するための計算が次いで実行される。マークルツリーのルートノードの取得されたハッシュ値を特定のブロックの状態値として用いることができる。
【0116】
図7には示していないが、状態値が取得された後、特定のブロックの識別子、状態値、および前のブロックの識別子の間のマッピング関係を確立することができ、このマッピング関係はブロックデータテーブルに保存される。
図2は、前述したが、一実施形態におけるブロックデータテーブルに対応するテーブル構造の一例を示している。ブロックデータテーブルは、以下のいくつかまたはすべての追加情報を含むことができ、またはいずれも含まなくてもよい。すなわち、特定のブロックのバージョン番号、特定のブロックの生成時間、および特定のブロックの高さ値である。ブロックチェーンネットワーク内の各ブロックについての情報は、ブロックデータテーブルを用いて迅速かつ効率的に取得することができる。
【0117】
図7に戻ると、710で、特定のブロックの識別子とブロックに保存されているサービスデータの識別子との間の第1のマッピング関係を確立することができる。712で、確立された第1のマッピング関係をリレーショナルデータベースに保存することができる。いくつかの例において、708で状態値が取得された場合、状態値も、第1のマッピング関係に含められ、リレーショナルデータベースに保存されてもよい。
図4に示すように、リレーショナルデータベースは、特定のブロックの識別子、特定のブロックの状態値、およびブロックに保存されているサービスデータの識別子を保存することができる。さらに、
図5は、ブロックチェーンネットワークの非リレーショナルデータをデータのリレーショナルセットに変換するブロックチェーンを基にしたデータ処理方法の一例のシナリオを示している。712から、方法700は714に進む。
【0118】
714において、サービスデータの識別子が決定された後、サービスデータの識別子とサービスデータを有するまたは保存する特定のブロックの識別子との間の第2のマッピング関係を確立することができる。716で、第2のマッピング関係をサービスデータテーブルに保存することができる。
図3は、一実施形態におけるサービスデータテーブルの一例のテーブル構造を示している。サービスデータの識別子およびサービスデータを保存する特定のブロックの識別子に加え、サービスデータテーブルに、以下のいくつかまたはすべてを含むがこれらに限定されない追加情報が含まれてもよく、またはいずれも含まれなくてもよい。すなわち、とりわけ、サービスデータのバージョン番号、サービスデータのサービスタイプ、サービスデータにおけるイニシエータの公開鍵、サービスデータの発生時間、サービスデータにおけるデジタル署名(イニシエータの秘密鍵で署名されたものなど)、サービスデータのデータ内容、およびサービスデータの保存状態である。
【0119】
いくつかの実施形態において、特定のブロックの識別子とそれらのブロックに保存されているサービスデータの識別子との間のマッピング関係を、ブロックデータテーブルに含まれるマッピング関係とサービステーブルデータに含まれるマッピング関係とに基づいて確立することができる。
【0120】
ブロックチェーンネットワーク内の各ブロックについて説明したプロセスを用いて、ブロックチェーンネットワークに保存されているサービスデータは、
図5の図に示すように、非リレーショナルデータからリレーショナルデータに変換される。リレーショナルデータはリレーショナルデータベースに保存され、これにより、データ保存/回復(たとえば、データ保存/回復効率、セキュリティ、速度、または精度)、ブロックチェーンネットワークのトランザクション処理能力の向上(たとえば、データ分析/データ計算速度、精度、または効率)、およびブロックチェーンネットワークシステム能力(たとえば、全体的な計算/データ送信のセキュリティ、効率、または速度)を強化することができる。
【0121】
いくつかの例において、702〜716の動作は最初に実行することができる。しかしながら、ブロックチェーンネットワークに追加の新たなデータブロックを生成することができ、または新たなサービスデータを生成することができる。718で、ブロックチェーンネットワーク内に新たなブロックまたは新たなサービスデータが生成されたかどうかについての判断が行われる。新たなブロックが生成されたと判定されれば、方法700は720に進む。そうではなく、新たなサービスデータが生成されたと判定されれば、方法700は730に進む。新たなブロックも新たなサービスデータも生成されなければ、方法700は718で待機するか、終了することができる。
【0122】
720で、新たなブロックが生成されたとの判定に応じて、その新たに生成されたブロックの識別子が決定される。この識別子の決定は、いくつかの例において、704の決定と同様であってもよい。720から、方法700は722に進む。
【0123】
新たに生成されたブロックの識別子の決定に応じて、ブロックデータテーブルおよびリレーショナルデータベースの少なくとも1つが、決定された識別子に基づいて722で同期的に更新される。ブロックデータテーブルを更新するために、新たに決定された識別子についての新たなエントリを、ブロックチェーンネットワーク内の前のブロックの識別子とともに挿入することができる。新たに生成されたブロックの状態値などの追加情報を、ブロックの高さ値に関する情報と同様に、ブロックデータテーブルに追加することができる。ブロックデータテーブルには他の適切な情報を含めることができる。リレーショナルデータベースを更新するために、新たに生成されたブロックに関連するデータベース内の新たなエントリを追加することができる。いくつかの例において、新たに生成されたブロックはサービスデータに関連していてもよく、そのサービスデータの識別子はデータベースに含めることができる。他の例において、ブロック識別子のみをこの時点で追加することができる。更新が完了すると、方法700は終了するか、718に戻ることができる。
【0124】
730で、新たに生成されたサービスデータの識別子が決定される。730から、方法700は732に進む。732で、新たに生成されたサービスデータの決定された識別子と新たなサービスデータを保存するブロックの識別子との間のマッピング関係が確立される。734で、確立されたマッピング関係に基づいて、サービスデータテーブルまたはリレーショナルデータベースの少なくとも1つが同期的に更新される。いくつかの例において、新たに生成されたサービスデータはサービスデータテーブルに保存することができる。しかしながら、サービスデータが未連結であるか、そうでなければまだ対応するブロックに保存されていなければ、サービスデータテーブルのみを更新することができる。サービスデータが対応するブロックに保存されていれば、または一旦保存されると、サービスデータテーブルはそれに応じて更新される。サービスデータテーブル情報を用いて、またはサービスデータ自体についての情報を用いて、リレーショナルデータベースは、サービスデータの識別子と対応するブロックの識別子との間の関係に基づいて更新することができる。
【0125】
この明細書において説明した実施態様および動作は、デジタル電子回路において、またはこの明細書において開示された構造を含む、コンピュータソフトウェア、ファームウェア、もしくはハードウェアにおいて、またはそれらの1つまたは複数の組み合わせにおいて実施することができる。これらの動作は、1つまたは複数のコンピュータ可読記憶装置上に格納された、または他のソースから受信されたデータに関してデータ処理装置によって実行される動作として実施することができる。データ処理装置、コンピュータ、またはコンピューティングデバイスは、データを処理するための装置、デバイス、およびマシンを包含することができ、例としてプログラマブルプロセッサ、コンピュータ、チップ上のシステム、または前述のものの複数のもの、もしくは組み合わせを含む。この装置は、専用論理回路、たとえば、中央処理装置(CPU)、フィールドプログラマブルゲートアレイ(FPGA)または特定用途向け集積回路(ASIC)を含むことができる。この装置は、問題のコンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム(たとえばオペレーティングシステムまたはオペレーティングシステムの組み合わせ)、クロスプラットフォームランタイム環境、仮想マシン、またはそれらの1つまたは複数の組み合わせを構成するコードも含むことができる。この装置と実行環境は、ウェブサービス、分散コンピューティングおよびグリッドコンピューティングインフラストラクチャなど、様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
【0126】
コンピュータプログラム(たとえば、プログラム、ソフトウェア、ソフトウェアアプリケーション、ソフトウェアモジュール、ソフトウェアユニット、スクリプト、またはコードとしても知られている)は、コンパイルまたはインタプリタされた言語、宣言型または手続き型言語を含む任意の形態のプログラミング言語で記述することができ、スタンドアロンプログラムとして、またはモジュールとして、コンポーネント、サブルーチン、オブジェクト、またはコンピューティング環境における使用に適した他のユニットを含む任意の形態でデプロイすることができる。プログラムは、他のプログラムもしくはデータ(たとえば、マークアップ言語ドキュメントに格納された1つまたは複数のスクリプト)を保持するファイルの一部に、問題のプログラム専用の単一ファイルに、または複数の協調ファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの一部を格納するファイル)に格納することができる。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに配置された、もしくは複数のサイトにわたって分散されて通信ネットワークによって相互接続された複数のコンピュータ上で実行することができる。
【0127】
コンピュータプログラムを実行するためのプロセッサは、例として、汎用および専用の両方のマイクロプロセッサ、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは、リードオンリーメモリまたはランダムアクセスメモリまたは両方から命令およびデータを受信することになる。コンピュータの必須要素は、命令に従ってアクションを実行するためのプロセッサと、命令およびデータを格納するための1つまたは複数のメモリデバイスと、である。一般に、コンピュータはまた、データを格納するための1つまたは複数の大容量記憶装置を含むか、またはそこからデータを受信もしくはそこへデータを転送、もしくは両方をするように動作可能に結合されることになる。コンピュータは、他のデバイス、たとえば、モバイルデバイス、携帯情報端末(PDA)、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブルストレージデバイスに組み込むことができる。コンピュータプログラムの命令およびデータを格納するのに適したデバイスには、不揮発性メモリ、メディア、および、例として、半導体メモリデバイス、磁気ディスク、および光磁気ディスクを含むメモリデバイスが含まれる。プロセッサおよびメモリは、専用のロジック回路によって補完する、またはここに組み込むことができる。
【0128】
モバイルデバイスには、ハンドセット、ユーザ機器(UE)、携帯電話(たとえば、スマートフォン)、タブレット、ウェアラブルデバイス(たとえば、スマートウォッチおよびスマートメガネ)、人体に埋め込まれたデバイス(たとえば、バイオセンサ、人工内耳)、または他のタイプのモバイルデバイスが含まれる。これらのモバイルデバイスは、様々な通信ネットワーク(以下で説明)に対して無線で(たとえば、無線周波数(RF)信号を用いて)通信することができる。モバイルデバイスは、そのモバイルデバイスの現在の環境の特性を判断するためのセンサを含むことができる。センサには、カメラ、マイクロフォン、近接センサ、GPSセンサ、モーションセンサ、加速度計、環境光センサ、水分センサ、ジャイロスコープ、コンパス、気圧計、指紋センサ、顔認識システム、RFセンサ(たとえば、Wi-Fiおよび携帯無線)、温度センサ、または他のタイプのセンサが含まれる。たとえば、カメラは、可動または固定レンズ、フラッシュ、画像センサ、および画像プロセッサを備えた前方または後方カメラを含む。カメラは、顔および/または虹彩認識のための詳細をキャプチャすることができるメガピクセルカメラであってもよい。カメラは、データプロセッサ、およびメモリに格納された、または遠隔でアクセスされた認証情報とともに、顔認識システムを形成することができる。顔認識システムまたは1つまたは複数のセンサ、たとえば、マイクロフォン、モーションセンサ、加速度計、GPSセンサ、またはRFセンサは、ユーザ認証に用いることができる。
【0129】
ユーザとの相互作用を提供するために、実施態様は、ディスプレイデバイスおよび入力デバイス、たとえば、ユーザに情報を表示するための液晶ディスプレイ(LCD)または有機発光ダイオード(OLED)/仮想現実(VR)/拡張現実(AR)ディスプレイおよびタッチスクリーン、キーボード、およびユーザがコンピュータに入力を提供することができるポインティングデバイスを有するコンピュータ上で実施することができる。他の種類のデバイスを用いて、ユーザとの相互作用を提供することもできる。たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであってもよく、ユーザからの入力は、音響、音声、または触覚の入力を含む任意の形態で受信することができる。加えて、コンピュータは、ユーザによって用いられるデバイスとの間で文書を送受信することによって、たとえば、ユーザのクライアントデバイス上のウェブブラウザに、そのウェブブラウザから受信された要求に応じてウェブページを送信することによってユーザと相互作用することができる。
【0130】
実施態様は、有線または無線デジタルデータ通信(またはそれらの組み合わせ)の任意の形態または媒体、たとえば、通信ネットワークによって相互接続されたコンピューティングデバイスを用いて実施することができる。相互接続されたデバイスの例には、通常は通信ネットワークを介して相互作用する一般的に互いに遠隔なクライアントおよびサーバがある。クライアント、たとえば、モバイルデバイスは、自身で、サーバとともに、またはサーバを介してトランザクション、たとえば、購入、販売、支払い、贈与、送信、またはローン取引を実行、またはこれらを承認することができる。そのようなトランザクションは、アクションおよび応答が時間的に近接するように瞬時にできる。たとえばある人が、アクションおよび応答が実質的に同時に起こることを認め、その個人のアクションに続く応答の時間差が1ミリ秒(ms)未満または1秒(s)未満であり、または応答はシステムの処理制限を考慮して意図的な遅延がない。
【0131】
通信ネットワークの例には、ローカルエリアネットワーク(LAN)、無線アクセスネットワーク(RAN)、メトロポリタンエリアネットワーク(MAN)、およびワイドエリアネットワーク(WAN)が含まれる。通信ネットワークは、インターネットのすべてまたは一部、他の通信ネットワーク、または通信ネットワークの組み合わせを含むことができる。情報は、ロングタームエボリューション(LTE)、5G、IEEE 802、インターネットプロトコル(IP)、または他のプロトコルまたはプロトコルの組み合わせを含む、様々なプロトコルおよび規格に従って通信ネットワーク上で送信することができる。通信ネットワークは、接続されたコンピューティングデバイス間で音声、ビデオ、バイオメトリック、または認証データ、または他の情報を送信することができる。
【0132】
個別の実施形態として説明した特徴は、組み合わせて、単一の実施形態において、実施することができる一方、単一の実施形態として説明した特徴は、複数の実施形態において、個別で、または任意の適切なサブの組み合わせにおいて実施することができる。特定の順序で説明およびクレームした動作は、この特定の順序も、すべての図示した動作も実行しなければならないということが要求されるとして理解されるべきではない(いくつかの動作は任意選択することができる)。必要に応じて、マルチタスクまたは並列処理(またはマルチタスクと並列処理の組み合わせ)を実行することができる。