【文献】
石黒尚久ほか,図解入門最新ブロックチェーンがよ〜くわかる本,株式会社秀和システム,2017年 8月 1日,第1版,p.183-188
(58)【調査した分野】(Int.Cl.,DB名)
前記ブロックチェーンにおける最初のブロックを生成する前記リーダノードは、所定の定数に基づく前記第1のハッシュ値により指定される請求項1又は請求項2に記載のデータ管理システム。
前記ブロック生成部は、前記順序付きデータに対する前記検証ノードによる署名に基づいて、前記第1のハッシュ値及び前記第2のハッシュ値を算出する請求項4に記載のデータ管理システム。
前記ブロックチェーンにおける最初のブロックを承認する前記検証ノードは、所定の定数に基づく前記第2のハッシュ値により指定される請求項4又は請求項5に記載のデータ管理システム。
前記ブロック生成部は、前記検証ノードによる承認が前記所定数に満たない場合、前記順序付きデータを含まないブロックを生成する請求項7に記載のデータ管理システム。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来のプルーフ・オブ・ワーク等のコンセンサスアルゴリズムは、報酬に関係する計算量の重さがネックとなり、最新のブロックが確定されるまで、すなわちデータの順序付けが確定するまでに長時間を要していた。
【0005】
本発明は、ブロックチェーンに格納されるデータの順序付けを、高速に確定できるデータ管理システム、データ管理方法及びデータ管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明に係るデータ管理システムは、分散ハッシュテーブルにより定義されたハッシュ関数の値域に対応付けられた複数のノードを備え、前記ノードは、1又は複数の順序付きデータを格納したブロックを生成するブロック生成部と、前記ブロックをブロックチェーンに登録するブロック登録部と、を備え、前記ブロック生成部は、前記ハッシュ関数を用いて前記順序付きデータに基づく第1のハッシュ値を算出し、前記ブロックチェーンにより順序付けられる次のブロックを生成するリーダノードを指定するIDとして、前記第1のハッシュ値を前記ブロックに格納し、前記複数のノードのうち、指定された前記リーダノードのみが前記次のブロックを生成する。
【0007】
前記ブロック生成部は、前記順序付きデータに対する自ノードによる署名に基づいて、前記第1のハッシュ値を算出してもよい。
【0008】
前記ブロックチェーンにおける最初のブロックを生成する前記リーダノードは、所定の定数に基づく前記第1のハッシュ値により指定されてもよい。
【0009】
前記ノードは、前記リーダノードにより生成された前記ブロックを承認するブロック承認部を備え、前記ブロック生成部は、前記ブロックを生成する際に、前記ハッシュ関数を用いて前記順序付きデータに基づく第2のハッシュ値を算出し、前記次のブロックを承認する検証ノードを指定するIDとして、当該第2のハッシュ値を前記ブロックに格納し、前記ブロック登録部は、前記ブロックチェーンにより順序付けられた前のブロックにより指定された検証ノードにより承認されたことを条件に、当該検証ノードの署名を付加した前記ブロックを前記ブロックチェーンに登録してもよい。
【0010】
前記ブロック生成部は、前記順序付きデータに対する前記検証ノードによる署名に基づいて、前記第1のハッシュ値及び前記第2のハッシュ値を算出してもよい。
【0011】
前記ブロックチェーンにおける最初のブロックを承認する前記検証ノードは、所定の定数に基づく前記第2のハッシュ値により指定されてもよい。
【0012】
前記検証ノードは、複数の前記第2のハッシュ値により複数指定され、前記ブロック登録部は、所定数以上の前記検証ノードにより承認されたことを条件に、当該所定数以上の前記検証ノードのグループ署名を付加した前記ブロックを前記ブロックチェーンに登録してもよい。
【0013】
前記ブロック生成部は、前記検証ノードによる承認が前記所定数に満たない場合、前記順序付きデータを含まないブロックを生成してもよい。
【0014】
本発明に係るデータ管理方法は、分散ハッシュテーブルにより定義されたハッシュ関数の値域に対応付けられた複数のノードが、1又は複数の順序付きデータを格納したブロックを生成するブロック生成ステップと、前記ブロックをブロックチェーンに登録するブロック登録ステップと、を実行し、前記ブロック生成ステップにおいて、前記ハッシュ関数を用いて前記順序付きデータに基づく第1のハッシュ値を算出し、前記ブロックチェーンにより順序付けられる次のブロックを生成するリーダノードを指定するIDとして、前記第1のハッシュ値を前記ブロックに格納し、前記複数のノードのうち、指定された前記リーダノードのみが前記次のブロックを生成する。
【0015】
本発明に係るデータ管理プログラムは、分散ハッシュテーブルにより定義されたハッシュ関数の値域に対応付けられた複数のノードに、1又は複数の順序付きデータを格納したブロックを生成するブロック生成ステップと、前記ブロックをブロックチェーンに登録するブロック登録ステップと、を実行させ、前記ブロック生成ステップにおいて、前記ハッシュ関数を用いて前記順序付きデータに基づく第1のハッシュ値を算出させ、前記ブロックチェーンにより順序付けられる次のブロックを生成するリーダノードを指定するIDとして、前記第1のハッシュ値を前記ブロックに格納させ、前記複数のノードのうち、指定された前記リーダノードのみに前記次のブロックを生成させるためのものである。
【発明の効果】
【0016】
本発明によれば、ブロックチェーンに格納されるデータの順序付けを、高速に確定できる。
【発明を実施するための形態】
【0018】
以下、本発明の実施形態の一例について説明する。
図1は、本実施形態に係るデータ管理システム1の構成を示す概要図である。
データ管理システム1は、ピアツーピア(P2P)のネットワークにより構成された複数のノード10によりブロックチェーン20を分散管理する。
【0019】
n個のノード10は、分散ハッシュテーブル(DHT)により定義されたハッシュ関数の値域H、すなわちN個のキー(ハッシュ値)のいずれかに対応付けられる(N>>n)。
DHTには、例えば、Chordが用いられてよい。Chordでは、各ノード10が有するルーティングテーブルを用いて、通常、O(logN)の経路長で任意のノード10に到達する。
【0020】
なお、複数のノード10は、負荷分散のための仮想ノードであってよく、この場合、実ノード(端末)は、それぞれが複数の仮想ノードに割り当てられる。
【0021】
ブロックチェーン20を構成する各ブロック21は、複数のノード10のうち指定された一つのリーダノードにより生成される。
このとき、各ブロック21には、次のブロック21の生成を担当するリーダノードのIDが格納される。このIDは、DHTのN個のキー(ハッシュ値)のいずれかであり、DHTにおいてこのキーを管理するノード10のみがリーダノードとして、次のブロック21を生成する。
【0022】
図1の例では、例えばノード10aがブロック21aを生成し、ブロック21aで指定されたノード10bがブロック21bを生成し、ブロック21bで指定されたノード10cがブロック21cを生成し、ブロック21cで指定されたノード10dがブロック21dを生成している。
【0023】
また、最新のブロック21dは、検証ノードにより承認されることでブロックチェーン20に登録される構成であってもよい。この場合、検証ノードも複数のノード10から指定され、次のブロック21を承認する検証ノードのIDが複数、ブロック21に格納される。
【0024】
各ノード10は、DHTによるルーティングを用いることにより、効率的にリーダノード及び検証ノードと通信し、また、リーダノードから最新のブロックを他のノード10へ配信できる。
また、一時的なネットワーク遮断又は遅延等の問題により一部のノード10で最新のブロックチェーン20の同期が取れなかった場合、又は新たなノード10が参加した場合であっても、これらのノード10は、ルーティングテーブルに記述された他のノード、又は現在保持しているブロック21から特定されるリーダノードから、ブロックチェーン20のローカルコピーを取得できる。
【0025】
なお、データ管理システム1を構成する全てのノード10がDHTに参加し、リーダノード又は検証ノードとして指定可能であってもよいが、これには限られない。例えば、一部のノード10にのみブロックの生成及び検証の権限が与えられ、他のノード10は、DHTにアクセスしてブロックチェーン20のローカルコピーを保持する構成であってもよい。
以下では、全てのノード10がDHTに参加しているものとして説明する。
【0026】
図2は、本実施形態に係るノード10の機能構成を示すブロック図である。
ノード10は、制御部11と記憶部12とを備えた情報処理装置(コンピュータ)であり、制御部11は、記憶部12に格納されたソフトウェアを実行することにより、ブロック生成部111、ブロック登録部112、及びブロック承認部113として機能する。
【0027】
ブロック生成部111は、1又は複数の順序付きデータを格納したブロック21を生成する。
このとき、ブロック生成部111は、所定のハッシュ関数h
dを用いて順序付きデータに基づく第1のハッシュ値μを算出し、ブロックチェーン20により順序付けられる次のブロック21を生成するためのリーダノードを指定するIDとして、この第1のハッシュ値μをブロック21に格納する。
【0028】
具体的には、ブロック生成部111は、t番目のリーダノードを指定する第1のハッシュ値μ
tを、例えば、
μ
t=h
d(sig(μ
t−1,T
t−1)‖id
t)
と計算する。ハッシュ関数への引数は、さらに追加されてもよい。
ここで、t−1番目のブロック21には、複数(2
λ個)のデータが、例えば、マークルツリーとして格納され、ルートハッシュT
t−1に対して、μ
t−1で示されるt−1番目のリーダノードの署名が付与される。t番目のリーダノードを示す第1のハッシュ値μ
tは、この署名sig(μ
t−1,T
t−1)とt番目のブロック21の識別子id
tとの連結に対するハッシュ演算により算出される。
【0029】
また、ブロック生成部111は、ブロック21を生成する際に、ハッシュ関数を用いて順序付きデータに基づく第2のハッシュ値vを算出し、次のブロック21を承認するための検証ノードを指定するIDとして、この第2のハッシュ値vをブロックに格納してもよい。
【0030】
具体的には、ブロック生成部111は、t番目のブロック21を承認するための検証ノードのグループを指定する第2のハッシュ値v
i∈V
tを、例えば、
v
i=h
d(sig(V
t−1,T
t−1)‖id
t‖i)
と計算する。ハッシュ関数への引数は、さらに追加されてもよい。
ここで、iは、同一のブロック21を検証する検証ノードのグループ内における識別番号であり、これにより複数の第2のハッシュ値v
iが算出される。ブロック21に格納される複数のデータには、第2のハッシュ値v
iで示される検証ノードのグループV
tによりグループ署名が付与される。
【0031】
また、検証ノードが設けられる場合、前述のリーダノードを示す第1のハッシュ値μ
tは、
μ
t=h
d(sig(V
t−1,T
t−1)‖id
t)
のように、検証ノードによるグループ署名に基づいて生成されてもよい。
【0032】
ここで、ブロックチェーン20に登録される最初のブロック21を担当するリーダノード及び検証ノードは、直前のブロック21が存在しないため、前述の式でIDを算出することはできない。
この場合、ブロック生成部111は、例えば、
μ
0=h
d(κ)
v
i=h
d(κ‖i)
のように、所定の定数κに基づいて、第1のハッシュ値及び第2のハッシュ値を算出してよい。
【0033】
図3は、本実施形態に係るブロックチェーン20に登録されるブロック21の構成を示す図である。
ブロック21には、複数のデータ(イベント1〜m)がマークルツリーとして格納される。すなわち、リーダノードがm個のデータを受信するまで、次のブロック21を担当するリーダノード及び検証ノードは決定されない。
【0034】
m個のデータによりマークルツリーが完成し、ルートハッシュに対して署名が付与されると、リーダノードは、DHTにより定義されたハッシュ関数h
dにより、次のブロック21のリーダノードのIDと検証ノードのIDとを算出し、ブロック21に格納する。
なお、データの数m=2
λ、及びブロック21毎の検証ノードの数は、適宜、設計されてよい。
【0035】
なお、リーダノードは、m個のデータを記録すると、これを超えるデータの登録要求は受け付けない。この場合、受信したデータを新たに指定したリーダノードへ転送してもよいし、要求元へ差し戻してもよい。
【0036】
また、ブロック21は、直前のブロック21へのポインタを有している。これにより、一連のブロック21の順序が規定され、ブロックチェーン20の全体で、格納されたデータの順序が確定する。
さらに、ブロック21には、ブロック全体の正当性を保証し改ざんを防止するために、リーダノードの署名が付与される。
【0037】
ブロック登録部112は、ブロックチェーン20により順序付けられた前のブロック21により指定された検証ノードが承認したことを条件に、これらの検証ノードの署名を付加したブロック21をブロックチェーン20に登録する。
【0038】
ここで、検証ノードは、複数の第2のハッシュ値により複数指定される。
したがって、ブロック登録部112は、所定数以上の検証ノードにより承認されたことを条件に、これら所定数以上の検証ノードのグループ署名を付加したブロック21をブロックチェーン20に登録する。なお、所定数は、固定値、又は検証ノードの数に応じた割合(例えば、半数)により適宜、設定されてよい。
【0039】
一方、検証ノードによる承認が所定数に満たない場合、ブロック登録部112は、生成されたブロック21を登録せず、順序付きデータ(イベント)を含まない空のブロック21をブロック生成部111に生成させる。
このとき、ブロック生成部111は、新たなリーダノード及び検証ノードを指定し、指定された新たなリーダノードが否認されたブロック21のデータを入れ替えて新たなブロック21を生成する。
【0040】
ブロック承認部113は、自ノードが検証ノードに指定された場合に、リーダノードにより生成されたブロック21を受け取り、署名を返信することで承認する。
【0041】
図4は、本実施形態に係るデータ管理システム1によるブロックの生成及び登録の処理を示すフローチャートである。
ステップS1において、リーダノードは、ブロック生成部111によりデータをブロック21に記録する。
ステップS2において、リーダノードは、マークルツリーの大きさ(m個)までデータを記録したか否かを判定する。この判定がYESの場合、処理は、ステップS3に移り、判定がNOの場合、処理はステップS1に戻る。
【0042】
ステップS3において、リーダノードは、生成したブロック21に対する検証ノードの署名を取得する。
ステップS4において、リーダノードは、所定数の署名が得られたか否かを判定する。この判定がYESの場合、処理はステップS7に移り、判定がNOの場合、処理はステップS5に移る。
【0043】
ステップS5において、リーダノードは、生成済みのブロック21が否認されたので、ブロック生成部111により、データを含まない空のブロック21を生成する。
ステップS6において、リーダノードは、全ての検証ノードから空のブロック21に対する署名を取得する。
【0044】
ステップS7において、リーダノードは、生成したブロック21を、ブロック登録部112によりブロックチェーン20に登録する。
ステップS8において、リーダノードは、最新のブロック21を他のノード10に対して配信しネットワーク内で同期させる。
【0045】
本実施形態によれば、データ管理システム1は、DHTにより定義されたハッシュ関数の値域に対応付けられた複数のノード10によりブロックチェーン20を管理し、ブロックチェーン20に登録するブロック21を、それぞれ複数のノード10の中から指定した一つのリーダノードに生成させる。このとき、ブロック21に格納された順序付きデータに基づく第1のハッシュ値により次のリーダノードを指定する。
【0046】
したがって、データ管理システム1は、ブロック21毎にDHTのハッシュ関数によりランダムに、かつ、一意に決定されるリーダノードに責任を負わせることで、ブロックチェーン20に格納されるデータの順序付けを、高速に確定できる。また、一つのリーダノードのみがブロック21を生成されることで、ブロックチェーン20の分岐が発生しないため、正当なブロック21が直ちに確定する。
この結果、データ管理システム1は、例えば、金融取引又はイベントログ等の即時性が要求される順序付きデータを遅滞なく確定させることができる。
【0047】
データ管理システム1は、ブロック21に格納された順序付きデータに基づく第2のハッシュ値により検証ノードを指定する。これにより、リーダノードとは異なる複数のノード10による承認を経てブロック21が登録されるため、順序付きデータの正当性がより確実に保証される。
【0048】
データ管理システム1は、リーダノードにおいて、格納した順序付きデータに対する自ノードの署名又は検証ノードの署名に基づいて、次のリーダノード及び検証ノードのIDであるハッシュ値を算出する。
したがって、データ管理システム1は、データの正当性を保証する署名に基づいてハッシュ値を算出することで、正当なリーダノード及び検証ノードを一意に決定できる。
【0049】
データ管理システム1は、ブロックチェーン20に登録する最初のブロック21について、リーダノード及び検証ノードを所定の定数に基づくハッシュ値により指定する。これにより、データ管理システム1は、ブロックチェーン20の運用開始時からDHTに基づくリーダノード及び検証ノードの指定が可能となる。
【0050】
データ管理システム1は、所定数以上の検証ノードにより承認されたことを条件に、グループ署名を付加したブロック21を登録する。
したがって、データ管理システム1は、署名を返信しない一部の検証ノードによりブロック21が登録されない事態を抑制でき、利便性を向上できる。
また、データ管理システム1は、検証ノードによる承認が所定数に満たない場合には、順序付きデータを含まない空のブロック21を生成してブロックチェーン20に登録することで、否認の実績を記録しつつ、新たなブロック21により正当な順序付きデータを格納できる。
【0051】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、前述した実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
【0052】
データ管理システム1によるデータ管理方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置(コンピュータ)にインストールされる。また、これらのプログラムは、CD−ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したWebサービスとしてユーザのコンピュータに提供されてもよい。