(57)【要約】【課題】並列した処理でブロックチェーンを作成するシステムを提供する。【解決手段】上位チェーンのオープン状態である第１ブロックに対するナンス値を複数の端末の何れかが見つけると、第１ブロックをクローズして、次のオープン状態である第２ブロックに、第１ブロックの所定データの第１ハッシュ値を設定する上位チェーン管理手段と、第ｋ下位チェーンのオープン状態である第３ブロックに対するナンス値を複数の端末の何れかが見つけると、第３ブロックをクローズして、次のオープン状態である第４ブロックに、第３ブロックの所定データの第２ハッシュ値を設定する下位チェーン管理手段と、を備えており、上位チェーンのブロックに対するナンス値の数は、第ｋ下位チェーンのブロックに対するナンス値の数より少ない。【選択図】図８
2018018348.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続する複数の端末の間における取引の正当性を保証するためブロックチェーンを作成するシステムであって、
前記ネットワークには、第１〜第Ｎ（Ｎは２以上の整数）オーバレイネットワークが構築され、前記複数の端末の各端末はいずれかのオーバレイネットワークに参加し、
前記ブロックチェーンは、上位チェーンと、第１〜第Ｎオーバレイネットワークそれぞれに対応する第１〜第Ｎ下位チェーンとに分けられ、
前記システムは、
前記上位チェーンのオープン状態である第１ブロックに対するナンス値を前記ネットワークに接続する複数の端末の何れかが見つけると、前記第１ブロックをクローズして、前記第１ブロックの次のオープン状態である第２ブロックに、前記第１ブロックの所定データのハッシュ値である第１ハッシュ値を設定する上位チェーン管理手段と、
第ｋ(ｋは１からＮの整数)オーバレイネットワークに接続する端末が行う取引に関する情報を第ｋ下位チェーンのオープン状態であるブロックに記録し、当該第ｋ下位チェーンのオープン状態である第３ブロックに対するナンス値を前記複数の端末の何れかが見つけると、前記第３ブロックをクローズして、前記第３ブロックの次のオープン状態である第４ブロックに、前記第３ブロックの所定データのハッシュ値である第２ハッシュ値を設定する下位チェーン管理手段と、
を備えており、
前記上位チェーン管理手段は、前記第１ブロックをクローズすると前記第１ハッシュ値を前記下位チェーン管理手段に通知し、
前記下位チェーン管理手段は、前記上位チェーン管理手段から前記第１ハッシュ値が通知されると、オープン状態である第ｋ下位チェーンのブロックに通知された前記第１ハッシュ値を設定し、
前記上位チェーンのブロックに対するナンス値の数は、前記第ｋ下位チェーンのブロックに対するナンス値の数より少ないことを特徴とするシステム。
【請求項２】
前記上位チェーンのブロックに対するナンス値は、当該ブロックのデータに対して第１条件を満たす値であり、
前記第ｋ下位チェーンのブロックに対するナンス値は、当該ブロックのデータに対して第２条件を満たす値であり、
前記第１条件を満たすナンス値の数は、前記第２条件を満たすナンス値の数より少ないことを特徴とする請求項１に記載のシステム。
【請求項３】
前記下位チェーン管理手段は、前記上位チェーン管理手段から前記第１ハッシュ値が通知されると、オープン状態である第ｋ下位チェーンのブロックに設定された前記第２ハッシュ値を前記第１ハッシュ値に置換することを特徴とする請求項１又は２に記載のシステム。
【請求項４】
前記下位チェーン管理手段は、第ｋ下位チェーンのオープン状態のブロックをクローズする度に当該クローズしたブロックの前記第２ハッシュ値を前記上位チェーン管理手段に通知し、
前記上位チェーン管理手段は、前記下位チェーン管理手段から通知される第ｋチェーンの最新の前記第２ハッシュ値を前記上位チェーンのオープン状態であるブロックに設定することを特徴とする請求項１から３のいずれか１項に記載のシステム。
【請求項５】
前記下位チェーン管理手段は、第ｋ下位チェーンのオープン状態のブロックをクローズする度に当該クローズしたブロックの前記第２ハッシュ値を前記上位チェーン管理手段に通知し、
前記上位チェーン管理手段は、前記第１ブロックをクローズすると前記第２ブロックに前記下位チェーン管理手段から通知された第ｋチェーンの最新の前記第２ハッシュ値を設定することを特徴とする請求項１から３のいずれか１項に記載のシステム。
【請求項６】
前記上位チェーン管理手段は、前記第１ブロックをクローズすると、各下位チェーンについて、前記第１ブロックの１つ前の前記上位チェーンのブロックである第５ブロックをクローズしてから前記第１ブロックをクローズするまでにクローズ又は生成されたブロック数と閾値を比較し、当該ブロック数が閾値未満である下位チェーンの前記第２ハッシュ値については、前記第２ブロックに設定しないことを特徴とする請求項５に記載のシステム。
【請求項７】
前記下位チェーン管理手段は、前記上位チェーン管理手段から前記第１ハッシュ値が通知されると、各下位チェーンについて、前記第５ブロックがクローズされてから前記第１ブロックがクローズされるまでにクローズ又は生成したブロック数と前記閾値を比較し、当該ブロック数が閾値未満である下位チェーンについては、当該下位チェーンのブロックの内、前記第５ブロックがクローズされてからクローズしたブロック及びオープン状態のブロックを削除することを特徴とする請求項６に記載のシステム。
【請求項８】
前記第ｋオーバレイネットワークに接続する端末が行う取引に関する前記情報は、当該取引を示す情報のハッシュ値であることを特徴とする請求項１から７のいずれか１項に記載のシステム。
【請求項９】
請求項１から８のいずれか１項に記載のシステムとしてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、仮想通貨システム等において使用され、取引の正当性を保証するためのブロックチェーンの作成技術に関する。
【背景技術】
【０００２】
非特許文献１は、仮想通貨システムにおいて取引の正当性を保証するため、所謂、ブロックチェーンを作成することを開示している。まず、図１を用いてブロックチェーンの概要について述べる。図１において直前ブロック５１は、既に閉じられており（クローズ）、現在ブロック５２がオープンの状態である。なお、本例においては説明の簡略化のため、図１のブロックチェーンは所定の管理サーバが管理・作成しているものとする。しかしながら、実際には、ブロックチェーンは、複数の装置により管理される。管理サーバは、直前ブロック５１をクローズすると、現在ブロック５２を作成するが、その際、現在ブロック５２に、直前ブロック５１のデータの内の所定データのハッシュ値を、ブロック５１のハッシュ値５２１として現在ブロック５２に書込む。仮想通貨の受け渡しを行う複数の端末は、ピア・トゥ・ピア・ネットワークを構成しており、仮想通貨の受け渡し（以下、個々の仮想通貨の受け渡しを取引と呼ぶ。）が行われると、その取引を示す情報は管理サーバに通知される。なお、この情報は、認証技術により改竄できない様になっている。管理サーバは、現在ブロック５２に、各取引を示す情報のハッシュ値を、取引のハッシュ値５２２として追記してゆく。
【０００３】
また、ピア・トゥ・ピア・ネットワークに参加している各端末は、現在ブロック５２が作成されると、現在ブロック５２のナンス（Ｎｏｎｃｅ）値５２３を見つける作業を行う。ナンス値５２３は、ハッシュ値５２１と、ハッシュ値５２２と、ナンス値５２３とを連結したデータのハッシュ値が、所定の条件、例えば、最初の所定数のビットが総て"０"になるといった条件を満足させる値である。ハッシュ関数は一方向関数であるため、ナンス値５２３を見つける作業は、適当に生成した値と、ハッシュ値５２１と、その時点におけるハッシュ値５２２とを連結したデータのハッシュ値を求め、その値が所定の条件を満たしているか否かを判定することを順次繰り返す必要がある。しかしながら、多数の端末がこの作業に参加しているため、当該所定の条件を満たすナンス値５２３を見つける端末が現れる。この端末は、見つけたナンス値５２３を管理サーバ経由で現在ブロック５２に書込み、さらに、当該所定の端末の秘密鍵で、ハッシュ値５２１と、その時点におけるハッシュ値５２２と、書込んだナンス値５２３の認証情報を生成し、この認証情報も現在ブロック５２に書込む（図示せず）。これにより、現在ブロック５２はクローズされ、次のブロックが作成される。この次のブロックには、直前ブロック５１のハッシュ値５２１と、閉じられた時点におけるハッシュ値５２２と、書込まれたナンス値５２３とを連結したデータのハッシュ値が書き込まれる。
【０００４】
上述した様に、ナンス値５２３を見つける作業は試行錯誤的に行われる。しかしながら、多数の端末が並行してこの作業を行うため、例えば１０分程度といった所定の条件に応じた時間でナンス値を見つける端末が現れる。なお、所定の条件、例えば、ハッシュ値の最初の連続する"０"となる数の条件を変更することで、ナンス値５２３が見つけられるまでの時間を調整することができる。取引内容を示す情報そのものは各端末に分散して配置されているが、ブロックチェーンには、取引のハッシ値が格納されている。したがって、ブロックチェーンが正しいものとすると、ブロックチェーンの各ブロックの内容と、各端末に分散配置されている取引を示す情報とを比較することで、各取引の正当性を確認することができる。
【０００５】
また、ナンス値５２３を見つける作業は、多数の端末が並行して行うためある程度の時間内に完了するが、一部の悪意のある端末がブロックチェーンを書き換えようとしても、少数の端末では、ナンス値５２３を見つける作業に非常に時間がかかり、その間に、正当に計算されたブロックが伸びていく。つまり、一部の悪意のある端末がブロックチェーンを書き換えることも困難であり、ブロックチェーンそのものの正当性も担保される。
【０００６】
図２は、図１にて説明したブロックチェーンの変形態様である。図１においては、現在ブロック５２に取引のハッシュ値５２２を書込みつつ、ナンス値５２３を見つける作業を各端末が行っていた。図２においては、ブロック５１がクローズされると、オープン状態のブロック５３が作成され、その後の取引のハッシュ値は、ブロック５３にハッシュ値５３２として書込まれる。つまり、オープン状態であるブロック５２に格納されたブロック５１のハッシュ値５２１と、取引のハッシュ値５２２の値は固定される。その状態で、各端末はブロック５２のナンス値５２３を見つける作業を行い、ナンス値５２３が見つかると、ブロック５２はクローズされ、ブロック５３の次のブロックが作成される。また、ブロック５２の内容が確定したことにより、ブロック５２のハッシュ値がブロック５３に書込まれ、各端末は、ブロック５３のナンス値を見つける作業を開始する。
【０００７】
非特許文献１に記載のブロックチェーンでは、取引量が巨大になるにつれスケーラビリティの問題が顕在化する。これは、非特許文献１のブロックチェーンは、ブロックが一列に繋がった構成であり、処理の並列化が困難であるからである。このため、非特許文献２は、木構造のブロックチェーンにより処理の並列化を行うことを開示しているが、十分に並列化されているとは言えない。また、非特許文献３は、有向グラフにより並列化を行う構成を開示しているが、処理のオーバヘッドが発生している。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】Ｓａｔｏｓｈｉ  Ｎａｋａｍｏｔｏ  "Ｂｉｔｃｏｉｎ：Ａ  ｐｅｅｒ−ｔｏ−ｐｅｅｒ  ｅｌｅｃｔｒｏｎｉｃ  ｃａｓｈ  ｓｙｓｔｅｍ"、２００８年
【非特許文献２】Ｓｏｍｐｏｌｉｎｓｋｙ, Ｙ.  ｅｔ  ａｌ．、"Ａｃｃｅｌｅｒａｔｉｎｇ  ｂｉｔｃｏｉｎ´ｓ  ｔｒａｎｓａｃｔｉｏｎ  ｐｒｏｃｅｓｓｉｎｇ．Ｆａｓｔ  ｍｏｎｅｙ  ｇｒｏｗｓ  ｏｎ  ｔｒｅｅｓ，ｎｏｔ  ｃｈａｉｎｓ"、ＩＡＣＲ  Ｃｒｙｐｔｏｌｏｇｙ  ｅＰｒｉｎｔ  Ａｒｃｈｉｖｅ  ２０１３
【非特許文献３】Ｌｅｗｅｎｂｅｒｇ，Ｙ.  , ｅｔ  ａｌ．、"Ｉｎｃｌｕｓｉｖｅ  ｂｌｏｃｋ  ｃｈａｉｎ  ｐｒｏｔｏｃｏｌｓ"、Ｉｎ：Ｆｉｎａｎｃｉａｌ  Ｃｒｙｐｔｏｇｒａｐｈｙ  ａｎｄ  Ｄａｔａ  Ｓｅｃｕｒｉｔｙ、１９ｔｈ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ，ＦＣ２０１５、２０１５年１月２６日〜３０日
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、並列した処理でブロックチェーンを作成するシステム及びプログラムを提供するものである。
【課題を解決するための手段】
【００１０】
本発明の一側面によると、ネットワークに接続する複数の端末の間における取引の正当性を保証するためブロックチェーンを作成するシステムであって、前記ネットワークには、第１〜第Ｎ（Ｎは２以上の整数）オーバレイネットワークが構築され、前記複数の端末の各端末はいずれかのオーバレイネットワークに参加し、前記ブロックチェーンは、上位チェーンと、第１〜第Ｎオーバレイネットワークそれぞれに対応する第１〜第Ｎ下位チェーンとに分けられ、前記システムは、前記上位チェーンのオープン状態である第１ブロックに対するナンス値を前記ネットワークに接続する複数の端末の何れかが見つけると、前記第１ブロックをクローズして、前記第１ブロックの次のオープン状態である第２ブロックに、前記第１ブロックの所定データのハッシュ値である第１ハッシュ値を設定する上位チェーン管理手段と、第ｋ(ｋは１からＮの整数)オーバレイネットワークに接続する端末が行う取引に関する情報を第ｋ下位チェーンのオープン状態であるブロックに記録し、当該第ｋ下位チェーンのオープン状態である第３ブロックに対するナンス値を前記複数の端末の何れかが見つけると、前記第３ブロックをクローズして、前記第３ブロックの次のオープン状態である第４ブロックに、前記第３ブロックの所定データのハッシュ値である第２ハッシュ値を設定する下位チェーン管理手段と、を備えており、前記上位チェーン管理手段は、前記第１ブロックをクローズすると前記第１ハッシュ値を前記下位チェーン管理手段に通知し、前記下位チェーン管理手段は、前記上位チェーン管理手段から前記第１ハッシュ値が通知されると、オープン状態である第ｋ下位チェーンのブロックに通知された前記第１ハッシュ値を設定し、前記上位チェーンのブロックに対するナンス値の数は、前記第ｋ下位チェーンのブロックに対するナンス値の数より少ないことを特徴とする。
【発明の効果】
【００１１】
本発明によると、並列した処理でブロックチェーンを作成することができる。
【図面の簡単な説明】
【００１２】
【図１】ブロックチェーンの説明図。
【図２】ブロックチェーンの説明図。
【図３】一実施形態によるシステムの構成図。
【図４】一実施形態によるブロックチェーンの作成方法の説明図。
【図５】一実施形態によるブロックチェーンの作成方法の説明図。
【図６】一実施形態によるブロックチェーンの作成方法の説明図。
【図７】一実施形態によるブロックチェーンの作成方法の説明図。
【図８】一実施形態によるブロックチェーンの作成方法の説明図。
【図９】一実施形態によるブロックチェーンの作成のシーケンス図。
【図１０】一実施形態によるシステムのブロック構成図。
【図１１】一実施形態によるブロックチェーンの作成方法の説明図。
【図１２】一実施形態によるブロックチェーンの作成方法の説明図。
【図１３】一実施形態によるブロックチェーンの作成方法の説明図。
【発明を実施するための形態】
【００１３】
＜第一実施形態＞
以下、本発明の例示的な実施形態について図面を参照して説明する。なお、以下の各図においては実施形態の説明に必要ではない構成要素については図から省略する。また、以下の実施形態は例示であり本発明を実施形態の内容に限定するものではない。まず、実施形態での用語について説明する。上述した様に、ブロックに記録される情報には、１つ前のブロックの所定データのハッシュ値と、取引のハッシュ値と、ナンス値と、ナンス値を見つけた端末の認証情報があるが、以下の説明では、１つ前のブロックのハッシュ値をブロック・ハッシュ値と呼び、取引のハッシュ値を取引ハッシュ値と呼ぶものとする。また、ナンス値は、ブロック・ハッシュ値と、取引ハッシュ値と、当該ナンス値とを連結したデータのハッシュ値が所定条件を満たすものであるが、この連結したデータのハッシュ値を連結ハッシュ値と呼ぶものとする。なお、図１及び図２に示す様に、あるブロックの連結ハッシュ値は、次のブロックのブロック・ハッシュ値となる。
【００１４】
また、図１及び図２を用いて説明した様に、ナンス値を見つける作業を行っているブロック、つまり、クローズ対象のブロックの取引ハッシュ値を取引に応じて更新する方法（図１）と、クローズ対象の次のブロックの取引ハッシュ値を取引に応じて更新する方法（図２）が存在するが、以下では、クローズ対象の取引ハッシュ値を取引に応じて更新する方法を用いて説明する。しかしながら、本発明は、クローズ対象のブロックの次のブロックの取引ハッシュ値を取引に応じて更新する方法にも適用できる。また、ブロックを閉じる際には、ナンス値を見つけた端末の認証情報が当該ブロックに格納されるが、本実施形態の説明には必要ないため、以下の説明においては当該認証情報を格納する処理については省略する。なお、本実施形態では、認証情報は、連結ハッシュ値やブロック・ハッシュ値の計算対象外とする。しかしながら、認証情報をブロック・ハッシュ値の計算対象としても良い。
【００１５】
図３は、本実施形態によるシステムの構成図である。本実施形態の取引記録システムは、ブロックチェーンを管理するため、上位サーバ１と、管理サーバ２１と、管理サーバ２２とを備えている。ピア・トゥ・ピア（Ｐ２Ｐ）ネットワーク３１及び３２は、例えば、インターネット上に構成されるオーバレイネットワークであり、Ｐ２Ｐネットワーク３１及び３２には、取引を行う複数の端末がそれぞれ参加している。例えば、１つのＰ２Ｐネットワーク３１、３２を、日本、米国といった地域毎に形成することができる。管理サーバ２１は、Ｐ２Ｐネットワーク３１に参加する端末が行う取引についてのブロックチェーンを管理する。同様に、管理サーバ２２は、Ｐ２Ｐネットワーク３２に参加する端末が行う取引についてのブロックチェーンを管理する。以下、管理サーバ２１及び管理サーバ２２が管理するブロックチェーンを下位チェーンと呼ぶ。特に、管理サーバ２１が管理するチェーンを第１下位チェーンと呼び、管理サーバ２２が管理するチェーンを第２下位チェーンと呼ぶものとする。そして、上位サーバ１は、管理サーバ２１及び管理サーバ２２が管理するブロックチェーンを統合する上位チェーンを管理する。なお、図１においては、２つのＰ２Ｐネットワークがあり、かつ、２つの管理サーバが対応するＰ２Ｐネットワークに参加する端末が行う取引についてのブロックチェーンを管理しているが、Ｐ２Ｐネットワークの数は２つに限定されず、３以上であっても良い。
【００１６】
以下、図４〜図８を参照して、本実施形態によるブロックチェーンの作成方法について説明する。図４において、ブロック６１は、上位サーバ１が管理する上位チェーンのブロックであり、図４は、ブロック６１がクローズされたときの処理の説明図である。なお、ブロック６１が形成される以前において、下位チェーンにはブロックが存在していなかったものとする。上位サーバ１は、ブロック６１がクローズされるとその旨を管理サーバ２１及び２２に通知する。このとき、上位サーバ１は、ブロック６１のブロック・ハッシュ値を管理サーバ２１及び２２に通知し、かつ、ブロック６２を作成する。図４に示す様に、上位サーバ１は、ブロック６２にブロック６１のブロック・ハッシュ値を設定する。
【００１７】
管理サーバ２１は、ブロック６１がクローズされたことを示す通知を上位サーバ１から受け取ると、第１下位チェーンのブロック７１を作成する。管理サーバ２１は、このブロック７１に上位サーバ１から通知されたブロック６１のブロック・ハッシュ値を設定する。同様に、管理サーバ２２は、ブロック６１が閉じられたことを示す通知を上位サーバ１から受け取ると、第２下位チェーンのブロック８１を作成する。管理サーバ２２は、このブロック８１に上位サーバ１から通知されたブロック６１のブロック・ハッシュ値を設定する。
【００１８】
管理サーバ２１は、ブロック７１がオープンの間、Ｐ２Ｐネットワーク３１に参加している端末に関する取引ハッシュ値をブロック７１に追加する。同様に、管理サーバ２２は、ブロック８１がオープンの間、Ｐ２Ｐネットワーク３２に参加している端末に関する取引ハッシュ値をブロック８１に追加する。Ｐ２Ｐネットワーク３１に参加している端末は、ブロック７１が作成されると、ブロック７１に追加するナンス値を見つける作業を開始する。なお、ブロック７１のナンス値を求めるのに必要な、ブロック７１のデータは、Ｐ２Ｐネットワーク３１に参加している端末が閲覧可能となっている。ブロック７１に追加するナンス値が見つかると、当該ナンス値を見つけた端末は、管理サーバ２１に当該ナンス値を通知し、これにより、管理サーバ２１は、通知されたナンス値をブロック７１に追加してブロック７１をクローズする。ブロック７１をクローズすると、管理サーバ２１は、図５に示す様に、ブロック７２を作成する。なお、管理サーバ２１は、ブロック７２にブロック７１のブロック・ハッシュ値を設定する。また、ブロック７１をクローズすると、管理サーバ２１は、ブロック７１のブロック・ハッシュ値を上位サーバ１に通知し、上位サーバ１は、ブロック７１のブロック・ハッシュ値をブロック６２に追加する。図５は、ブロック７１がクローズされたことによりブロック７２が作成されたが、ブロック８１は、オープン状態のままであるときを示している。なお、Ｐ２Ｐネットワーク３２に参加している端末も、ブロック８１が作成されたことにより、ブロック８１に追加するナンス値を見つける作業を行っている。
【００１９】
ブロック８１に追加するナンス値が見つかると、当該ナンス値を見つけた端末は、管理サーバ２２を介してそのナンス値をブロック８１に追加し、これによりブロック８１はクローズされる。ブロック８１がクローズされると、管理サーバ２２は、図６に示す様に、ブロック８２を作成する。管理サーバ２２は、ブロック８２にブロック８１のブロック・ハッシュ値を設定する。また、ブロック８１がクローズされると、管理サーバ２２は、ブロック８１のブロック・ハッシュ値を上位サーバ１に通知し、上位サーバ１は、ブロック８１のブロック・ハッシュ値をブロック６２に追加する。図６は、ブロック８１がクローズされたことによりブロック８２が作成され、ブロック７２及びブロック８２が共にオープン状態であるときを示している。なお、Ｐ２Ｐネットワーク３１に参加している端末は、ブロック７２に追加するナンス値を見つける作業を行っており、Ｐ２Ｐネットワーク３２に参加している端末は、ブロック８２に追加するナンス値を見つける作業を行っている。
【００２０】
図７は、ブロック７２に追加するナンス値が見つかり、ブロック７２がクローズされ、ブロック７３が作成された状態を示している。ブロック７３には、ブロック７２のブロック・ハッシュ値が設定される。また、ブロック７２がクローズされたたことにより、管理サーバ２１は、ブロック７２のハッシュ値を上位サーバ１に通知し、上位サーバ１は、ブロック７１のブロック・ハッシュ値を削除し、代わりに、ブロック７２のブロック・ハッシュ値をブロック６２に追加する。
【００２１】
なお、ブロック６２が作成されたことにより、Ｐ２Ｐネットワーク３１及び３２に参加している端末は、ブロック６２のナンス値を見つける作業を開始している。図８は、図７に示す、ブロック７３及びブロック８２がオープン状態であるときに、ブロック６２のナンス値が見つかった場合の処理の説明図である。なお、ブロック６２のナンス値は、当該ナンス値と、ブロック６１のブロック・ハッシュ値と、各下位チェーンの最後にクローズされたブロックそれぞれのブロック・ハッシュ値とを連結したデータのハッシュ値が所定の条件を満たすことになる値である。まず、上位サーバ１は、ブロック６２をクローズすると、ブロック６２のクローズと、ブロック６２のブロック・ハッシュ値を管理サーバ２１及び２２に通知する。管理サーバ２１は、これにより、オープン状態であるブロック７３に設定されたブロック７２のブロック・ハッシュ値を削除し、ブロック６２のブロック・ハッシュ値をブロック７３に設定する。なお、それまでにブロック７３に追加されていた取引ハッシュ値はそのままとする。同様に、管理サーバ２２は、オープン状態であるブロック８２に設定されたブロック８１のブロック・ハッシュ値を削除し、ブロック６２のブロック・ハッシュ値をブロック８２に追加する。なお、それまでにブロック８１に追加されていた取引ハッシュ値はそのままとする。これにより、ブロック７３及びブロック８２は、ブロック６２の下流側のブロックとなる。以後、同様に、上位チェーンと、下位チェーンが追加されてゆく。
【００２２】
ここで、本実施形態では上位チェーンのブロックをクローズするためのナンス値を見つけるために必要な時間が、下位チェーンのブロックをクローズするためのナンス値を見つけるために必要な時間より長くなる様に、ナンス値に対する条件を設定する。言い換えると、上位チェーンのブロックのナンス値の数が、下位チェーンのブロックのナンス値の数より少なくなる様に、ナンス値に対する条件を設定する。なお、ナンス値の桁数、つまり、ビット数は決まっており、ナンス値の数は有限とする。例えば、ナンス値の条件が、連結ハッシュ値の最初から所定数のビットが総て０である場合、上位チェーンで要求する０の連続数を、下位チェーンで要求する０の連続数より長くする。したがって、上位チェーンのブロックがクローズされるまでに、下位チェーンでは、複数のブロックが形成される。この様に、下位チェーンでは比較的緩い条件に基づきブロックを伸ばしておき、上位チェーンでは比較的厳しい条件でブロックをクローズすることで、処理を並列化しつつ、悪意のある端末がブロックチェーンを改竄することを防ぐことができる。
【００２３】
図９は、図４から図８で説明した例に対応するシーケンス図である。上位サーバ１は、ブロック６１がクローズされると、ブロック６１のブロック・ハッシュ値を管理サーバ２１及び２２に通知する。そして、上位サーバ１、管理サーバ２１及び２２は、それぞれ、ブロック６２、７１及び８１を作成する。ブロック６２、７１及び８１には、ブロック６１のブロック・ハッシュ値が設定される。また、管理サーバ２１及び２２は、それぞれ、対応するＰ２Ｐネットワークに参加している端末に関する取引の取引ハッシュ値をブロック７１及び８１に追加する。また、取引に参加している総ての端末は、ブロック６２のナンス値を見つける作業を開始する。また、Ｐ２Ｐネットワーク３１に参加している端末はブロック７１のナンス値を見つける作業を開始し、Ｐ２Ｐネットワーク３２に参加している端末はブロック８１のナンス値を見つける作業を開始する。
【００２４】
本例では、まず、ブロック７１がクローズされ、これにより管理サーバ２１は、ブロック７１のブロック・ハッシュ値を上位サーバ１に通知する。これにより、上位サーバ１は、ブロック７１のブロック・ハッシュ値をブロック６２に追加する。また、管理サーバ２１は、ブロック７２を作成する。管理サーバ２１は、ブロック７２にブロック７１のブロック・ハッシュ値を追加し、かつ、Ｐ２Ｐネットワーク３１に参加している端末に関する取引の取引ハッシュ値をブロック７２に追加する。また、Ｐ２Ｐネットワーク３１に参加している端末はブロック７２のナンス値を見つける作業を開始する。
【００２５】
その後、ブロック８１がクローズされ、管理サーバ２２は、ブロック８１のブロック・ハッシュ値を上位サーバ１に通知し、これにより、上位サーバ１は、ブロック８１のブロック・ハッシュ値をブロック６２に追加する。また、管理サーバ２２は、ブロック８２を作成する。管理サーバ２２は、ブロック８２にブロック８１のブロック・ハッシュ値を追加し、かつ、Ｐ２Ｐネットワーク３２に参加している端末に関する取引の取引ハッシュ値をブロック８２に追加する。また、Ｐ２Ｐネットワーク３２に参加している端末はブロック８２のナンス値を見つける作業を開始する。
【００２６】
その後、ブロック７２がクローズされ、これにより管理サーバ２１は、ブロック７２のブロック・ハッシュ値を上位サーバ１に通知する。上位サーバ１は、第１下位チェーンに関するブロック・ハッシュ値として、ブロック７１のブロック・ハッシュ値をブロック６２に設定していたが、ブロック７２のブロック・ハッシュ値が通知されたことにより、第１下位チェーンのブロック・ハッシュ値をブロック７２のブロック・ハッシュ値に更新する。また、管理サーバ２１は、ブロック７３を作成する。管理サーバ２１は、ブロック７３にブロック７２のブロック・ハッシュ値を追加し、かつ、Ｐ２Ｐネットワーク３１に参加している端末に関する取引の取引ハッシュ値をブロック７３に追加する。また、Ｐ２Ｐネットワーク３１に参加している端末はブロック７３のナンス値を見つける作業を開始する。
【００２７】
その後、ブロック６２がクローズされたことにより、上位サーバ１は、ブロック６２のブロック・ハッシュ値を管理サーバ２１及び２２に通知する。これにより管理サーバ２１及び２２は、その時点でオープン状態であるブロック７３及び８２の変更作業を行う。変更作業は、ブロック７３の１つ上流のブロックをブロック７２からブロック６２に移す作業と、ブロック８２の１つ上流のブロックをブロック８１からブロック６２に移す作業である。具体的には、ブロック７３及びブロック８２のブロック・ハッシュ値をブロック６２のブロック・ハッシュ値に変更する。
【００２８】
なお、本実施形態では、図３に示す様に上位サーバ１が上位チェーンを管理し、管理サーバ２１が第１下位チェーンを管理し、管理サーバ２２が第２下位チェーンを管理している。ここで、管理サーバ２１は、１つのサーバ装置に対応しても、複数のサーバ装置に対応しても良い。つまり、管理サーバ２１は、複数のサーバ装置で構成することもできる。管理サーバ２１を複数のサーバ装置、例えば、複数のコンピュータで構成する場合、これらコンピュータは分散配置することができる。この場合、複数のコンピュータはネットワークを介して相互接続され、各コンピュータが協働して上述した管理サーバ２１として機能する。なお、上位サーバ１や管理サーバ２２についても同様である。また、本実施形態では、第１下位チェーンのブロックのナンス値については、Ｐ２Ｐネットワーク３１に参加している端末が探索し、第２下位チェーンのブロックのナンス値については、Ｐ２Ｐネットワーク３２に参加している端末が探索するものとしたが、Ｐ２Ｐネットワーク３１に参加している端末とＰ２Ｐネットワーク３２に参加している端末の両方が各下位チェーンのナンス値を見つける構成であっても良い。また、Ｐ２Ｐネットワーク３１に参加している端末とＰ２Ｐネットワーク３２に参加している端末の総てがナンス値を見つける作業に参加するのではなく、その内の一部の端末がナンス値を見つける作業に参加する構成であっても良い。
【００２９】
＜第二実施形態＞
続いて、第二実施形態について第一実施形態との相違点を中心に説明する。第一実施形態では、予めＰ２Ｐネットワークと、当該Ｐ２Ｐネットワークに参加する端末が行う取引に関する下位チェーンを管理する管理サーバが設けられていた。しかしながら、ネットワークに参加する端末がＰ２Ｐネットワークを動的に構成できる様にすることが好ましい。本実施形態では、その様な構成について説明する。
【００３０】
図１０は、本実施形態によるシステム構成図である。ネットワーク９は、例えば、インターネットといった広域網であり、図示しない多数の端末が接続している。このネットワーク９に接続している端末の幾つかの端末により、ネットワーク９には、例えば、Ｐ２Ｐネットワークといった、Ｎ個（Ｎは2以上の整数）のオーバレイネットワーク（第１オーバレイネットワークから第Ｎオーバレイネットワーク）が構築されている。例えば、ネットワーク９に接続している端末が、新たなオーバレイネットワークを構築すると、新たなオーバレイネットワークを構築した端末は、管理システム４の下位チェーン管理部４２に新たなオーバレイネットワークの構築を通知する。なお、その際、下位チェーン管理部４２は、例えば、公知の認証アルゴリズム等により新たなオーバレイネットワークの構築を通知した端末の認証を行う。認証が成功すると、下位チェーン管理部４２は、この新たなオーバレイネットワーク（Ｎ＋１番目）の下位チェーンの管理を開始する。
【００３１】
以下では、現在、図１０に示す通り、Ｎ個のオーバレイネットワークが存在するものとして説明を行う。管理システム４の上位チェーン管理部１の動作は、第一実施形態の上位サーバ１と同様である。また、管理システム４の下位チェーン管理部４２の動作は、第一実施形態の管理サーバと同様である。つまり、下位チェーン管理部４２は、第ｋオーバレイネットワーク（ｋは１からＮの整数）に参加している取引の内容を保証するための第ｋ下位チェーン（ｋは１からＮの整数）それぞれの管理を行う。
【００３２】
具体的には、上位チェーンのオープン状態である第１ブロックに対するナンス値をネットワーク９に接続する複数の端末の何れかが見つけると、上位チェーン管理部１は、当該第１ブロックをクローズして、当該第１ブロックの次のオープン状態である第２ブロックに、当該第１ブロックの所定データのハッシュ値である第１ハッシュ値を設定する。なお、図１に示すブロックの伸ばし方の場合、第２ブロックは新たに生成される。一方、図２に示すブロックの伸ばし方の場合、第２ブロックは既に生成されている。上位チェーン管理部１は、第１ブロックをクローズすると、その第１ハッシュ値を下位チェーン管理部４２に通知する。
【００３３】
下位チェーン管理部４２は、第ｋオーバレイネットワークに接続する端末が行う取引に関する情報を第ｋ下位チェーンのオープン状態であるブロックに記録する。また、当該第ｋ下位チェーンのオープン状態である第３ブロックに対するナンス値を第ｋオーバレイネットワークに参加する端末のいずれかが見つけると、第３ブロックをクローズして、第３ブロックの次のオープン状態である第４ブロックに、第３ブロックの所定データのハッシュ値である第２ハッシュ値を設定する。なお、図１に示すブロックの伸ばし方の場合、第４ブロックは新たに生成される。一方、図２に示すブロックの伸ばし方の場合、第４ブロックは既に生成されている。そして、下位チェーン管理部４２は、上位チェーン管理部４１から第１ハッシュ値が通知されると、オープン状態である各下位チェーンのブロックに設定されている第２ハッシュ値を第１ハッシュ値に置換する。
【００３４】
また、下位チェーン管理部４２は、第ｋチェーンのオープン状態のブロックをクローズする度に当該ブロックの第２ハッシュ値を上位チェーン管理部１に通知する。上位チェーン管理部１は、下位チェーン管理部４２から、第ｋチェーンのブロックについての第２ハッシュ値を受け取ると、上位チェーンのオープン状態であるブロックに記録されている第ｋチェーンのハッシュ値を削除し、受け取った第ｋチェーンの第２ハッシュ値を上位チェーンのオープン状態であるブロックに記録する。
【００３５】
なお、第一実施形態と同様に、上位チェーンのブロックに対するナンス値の数は、各下位チェーンのブロックに対するナンス値の数より少なくなる様に、ナンス値に対する条件を設定する。つまり、比較的、短い周期で各下位チェーンを伸ばし、上位チェーンを各下位チェーンより長い周期で伸ばしていく。これは、各下位チェーンのナンス値に対する条件より、上位チェーンのナンス値に対する条件を厳しくすることで達成できる。各下位チェーンのナンス値に対する条件は比較的緩いため、悪意のある端末が下位チェーンを書き換える可能性が高くなるが、ある程度の周期でナンス値に対する条件が比較的厳しい上位ブロックをクローズするため、処理の並列化を行いつつ、ブロックチェーンの改竄を防ぐことができる。
【００３６】
＜第三実施形態＞
以下、第三実施形態について、第一実施形態及び第二実施形態との相違点を中心に説明する。図８に示す様に、第一実施形態及び第二実施形態において、ある上位チェーンのブロックから伸びる各下位チェーンの１連のブロックは、上位チェーンの当該ブロックの１つ下流側のブロックに繋がるものであった。例えば、図８においては、ブロック６１から伸びる第１下位チェーン及び第２下位チェーンのブロックは、ブロック６１の１つ下流側のブロック６２に繋がっている。本実施形態では、図１２に示す様に、ある上位チェーンのブロックから伸びる各下位チェーンのブロックは、上位チェーンの当該ブロックの２つ下流側のブロックに繋がる。なお、図１２と、以下に説明する図１１、図１３において、ブロック内の"ブロックｘｘ"との表示は、ブロックｘｘのブロック・ハッシュ値を示している。例えば、図１２においては、上位チェーンのブロック６１から伸びる第１下位チェーン及び第２下位チェーンのブロックは、ブロック６１の１つ下流側のブロック６２ではなく、２つ下流側のブロック６３に繋がっている。同様に、図では示されていないが、ブロック６２から伸びる第１下位チェーン及び第２下位チェーンのブロックは、最終的には、ブロック６３の１つ下流側のブロックに繋がることになる。以下、図１１〜図１３を用いて詳細に説明する。
【００３７】
図１１は、上位チェーンにおいて、ブロック６１がクローズされ、ブロック６２がオープン状態であるときを示している。ブロック６２には、ブロック６１のブロック・ハッシュ値と、ブロック６１がクローズされたときに、最後にクローズされていたブロック７０及びブロック８０のブロック・ハッシュ値が格納されている。なお、ブロック７０は、第１下位チェーンのブロックであり、ブロック８０は、第２下位チェーンのブロックである。なお、ブロック７１及びブロック８１には、ブロック６１のブロック・ハッシュ値が格納されている。図１１において、第１下位チェーンは、ブロック７１〜ブロック７３がクローズされ、ブロック７４がオープン状態である。また、第２下位チェーンは、ブロック８１がクローズされ、ブロック８２がオープン状態である。
【００３８】
図１２は、図１１の状態において、ブロック６２のナンス値が見つかり、これにより、ブロック６２がクローズされ、ブロック６３が作成されたときを示している。オープン状態で作成されるブロック６３には、上位チェーンの１つ上流側のブロック６２のブロック・ハッシュ値が格納される。さらに、ブロック６３には、各下位チェーンの最後にクローズされたブロックのブロック・ハッシュ値が格納される。図１２においては、第１下位チェーンにおいて最後にクローズされたブロック７３のブロック・ハッシュ値と、第２下位チェーンにおいて最後にクローズされたブロック８１のブロック・ハッシュ値が格納されている。また、第一実施形態と同様に、ブロック６２がクローズされたときに、オープン状態であった各下位チェーンのブロックは、その１つ上流側のブロックの変更が行われる。具体的には、ブロック６２がクローズされたときにオープン状態であった第１下位チェーンのブロック７４と、第２下位チェーンのブロック８２は、ブロック６２が１つ上流側の上位ブロックとなる様に変更されている。これは、ブロック７４のブロック・ハッシュ値を、ブロック７３のものからブロック６２のものに変更し、ブロック８２のブロック・ハッシュ値を、ブロック８１のものからブロック６２のものに変更することで行われる。
【００３９】
例えば、第二実施形態と同様に、下位チェーンを動的に追加したり削除したりする構成を考える。このとき、少数の悪意のあるユーザが下位チェーンを追加し、不正な取引をブロックチェーンに追加することが考えられる。したがって、本実施形態では、上位チェーンのブロックをクローズする際に、各下位チェーンについて、クローズする１つ前の上位ブロックから伸びるブロック数を判定し、このブロック数が閾値以下の下位チェーンを削除することができる。以下では、ある上位チェーンのブロックから伸びる各下位チェーンの部分を枝部分と呼ぶものとする。例えば、図１２の状態においては、ブロック７１〜７３は、第１下位チェーンの１つの枝部分である。同様に、ブロック７４は、第１下位チェーンのブロックであるが、ブロック７１〜７３とは異なる枝部分である。本実施形態では、上位チェーンのブロックをクローズする際に、オープン状態である下位チェーンを含む枝部分のブロック数が閾値以下である場合、当該枝部分を削除することができる。
【００４０】
図１３は、枝部分を削除する場合を示している。なお、ここでは閾値を２としている。図１１においてブロック６２がクローズされたものとする。このとき、第１下位チェーンのオープン状態のブロックはブロック７４である。オープン状態のブロック７４を含む第１下位チェーンの枝部分のブロック数は４（ブロック７１〜７４）であり、閾値より大きい。一方、第２下位チェーンのオープン状態のブロック８２を含む枝部分のブロック数は２であり、閾値以下である。よって、上位チェーン管理部４１は、図１３に示す様に、生成するブロック６３に、ブロック６２とブロック７３のブロック・ハッシュ値を格納するが、ブロック８１のブロック・ハッシュ値を設定しない。なお、下位チェーン管理部４２は下位チェーンのブロックをクローズすると、当該ブロックのブロック・ハッシュ値を上位チェーン管理部４１に通知するため、上位チェーン管理部４１は、各下位チェーンのブロック数を把握できる。また、上位チェーン管理部４１は、下位チェーン管理部４２にブロック６２がクローズされたことと、ブロック６２のブロック・ハッシュ値を通知する。このとき、下位チェーン管理部４２は、オープン状態のブロックを含む枝部分のブロック数が閾値以下である第２下位チェーンのブロック８２及び８１を削除する。一方、ブロック数が閾値より大きい第１下位チェーンについては図１２と同様の処理を行う。
【００４１】
上述した様に、ナンス値を見つける作業は試行錯誤的に行われるが、多くの端末が並行して行うためある程度の時間内にナンス値が見つけられてブロックはクローズされる。しかしながら、少数の悪意のあるユーザが少数の端末により下位チェーンを作成した場合、当該下位チェーンについては、ナンス値を見つけるのにかかる時間が、他の正当な下位チェーンより長くなる。したがって、上位ブロックをクローズするときに、前回上位ブロックをクローズしてから生成されたブロック数の短い下位チェーンは、不正な端末による不正な取引を記録したものである可能性が高く、当該下位チェーンのブロックをブロックチェーンから除くことで不正な取引が記録されることを防ぐことができる。
【００４２】
なお、本実施形態では、図１２に示す様に、上位チェーンのブロックがクローズされた際に、オープン状態である下位チェーンのブロックは、その１つ上流側のブロックを変更する作業を行っていた。しかしながら、オープン状態の下位チェーンのブロックについては、そのままとし、更なるオープン状態の下位チェーンのブロックを作成する形態であっても良い。例えば、図１１の状態でブロック６２がクローズされた際、ブロク７４、ブロック８２については、そのまま、ブロック７３、８１の１つ下流側のブロックとし、ブロック６２の下流側に、新たなオープン状態のブロックを作成する構成とすることができる。なお、この新たに作成する下位チェーンのブロックにはブロック６２のブロック・ハッシュ値を設定する。そして、新たな取引の取引ハッシュ値は、この新たに作成した下位チェーンのブロックに追加してゆく。そして、ブロック７４及びブロック８２のナンス値が見つかってクローズされると、それらブロックのブロック・ハッシュ値は、ブロック６３に設定される。
【００４３】
なお、本発明による管理システム４は、１つ以上のコンピュータを協働させて上記管理システム４として動作させるプログラムにより実現することができる。なお、１つ以上のコンピュータは分散配置でき、その場合には、ネットワークを介して互いに接続される。また、これらコンピュータプログラムは、コンピュータが読み取り可能な記憶媒体に記憶されて、又は、ネットワーク経由で配布が可能なものである。
【図１】
2018018348.tif 000003
【図２】
2018018348.tif 000004
【図３】
2018018348.tif 000005
【図４】
2018018348.tif 000006
【図５】
2018018348.tif 000007
【図６】
2018018348.tif 000008
【図７】
2018018348.tif 000009
【図８】
2018018348.tif 000010
【図９】
2018018348.tif 000011
【図１０】
2018018348.tif 000012
【図１１】
2018018348.tif 000013
【図１２】
2018018348.tif 000014
【図１３】
2018018348.tif 000015