(57)【要約】      （修正有）【課題】複数のブロックチェーンを管理しやすくするブロックチェーン生成装置を提供する。【解決手段】ブロックチェーン生成装置１００は、ブロックチェーン１１０の最新のブロック１１２に設定された第１のハッシュ値を取得する。ブロックチェーン生成装置１００は、他装置が管理するブロックチェーン１２０の最新のブロック１２２に設定された第２のハッシュ値を、他装置から受信する。ブロックチェーン生成装置１００は、ブロックチェーン１１０について、取得した第１のハッシュ値と、受信した第２のハッシュ値とを有する中間ブロック１１３を追加する。ブロックチェーン生成装置１００は、所定の関数を用いて、ブロックチェーン１１０について、ブロックチェーン１１０，１２０で共通する第３のハッシュ値を有するブロック１１４を追加する。【選択図】図１
2019096987.tif 000002
【特許請求の範囲】
【請求項１】
１以上のブロックを連結する第１のブロックチェーンと第２のブロックチェーンのそれぞれに対して、前記第１のブロックチェーンの最新のブロックに対応する第１のハッシュ値と、前記第２のブロックチェーンの最新のブロックに対応する第２のハッシュ値とを有する中間ブロックを追加する第１追加部と、
前記第１および前記第２のブロックチェーンにそれぞれ追加された前記中間ブロックが有する前記第１のハッシュ値と前記第２のハッシュ値とに基づき、前記第１および前記第２のブロックチェーンに共通する第３のハッシュ値を算出可能な関数を用いて、前記第１および前記第２のブロックチェーンに対して、前記第３のハッシュ値を有するブロックを追加する第２追加部と、
を有することを特徴とするブロックチェーン生成システム。
【請求項２】
前記ブロックは、複数の項目を有し、
前記関数は、前記複数の項目の値に基づき、前記第３のハッシュ値を算出する関数であり、かつ、前記複数の項目のうち第１の項目の値と第２の項目の値とが入れ替わっても、算出される前記第３のハッシュ値が同一になる関数であり、
前記第１追加部は、
前記第１のブロックチェーンと前記第２のブロックチェーンのそれぞれについて、当該ブロックチェーンの最新のブロックに対応する第１のハッシュ値が前記第１の項目の値に設定され、かつ、当該ブロックチェーン以外の他のブロックチェーンの最新のブロックに対応する第２のハッシュ値が前記第２の項目の値に設定された前記中間ブロックを追加する、ことを特徴とする請求項１に記載のブロックチェーン生成システム。
【請求項３】
前記ブロックが有する前記第１の項目は、前記ブロックの直前に連結されたブロックを示すハッシュ値が設定される項目であり、
前記ブロックが有する前記第２の項目は、ナンスが設定される項目である、ことを特徴とする請求項２に記載のブロックチェーン生成システム。
【請求項４】
前記第１追加部は、
前記第１のブロックチェーンと前記第２のブロックチェーンのそれぞれについて、当該ブロックチェーンの最新のブロックに設定された第１のハッシュ値と、当該ブロックチェーン以外の他のブロックチェーンの最新のブロックに設定された第２のハッシュ値とを有する前記中間ブロックを追加する、ことを特徴とする請求項１〜３のいずれか一つに記載のブロックチェーン生成システム。
【請求項５】
前記第２追加部は、
前記第１のブロックチェーンと前記第２のブロックチェーンのそれぞれについて、前記第３のハッシュ値のほか、前記第１のブロックチェーンと前記第２のブロックチェーンのそれぞれに中間ブロックの直前に追加されたブロックを示す第４のハッシュ値をさらに有するブロックを追加する、ことを特徴とする請求項４に記載のブロックチェーン生成システム。
【請求項６】
前記第１追加部は、
前記第１のブロックチェーンと前記第２のブロックチェーンのそれぞれについて、当該ブロックチェーンの最新のブロックを示す第１のハッシュ値と、当該ブロックチェーン以外の他のブロックチェーンの最新のブロックを示す第２のハッシュ値とを有する前記中間ブロックを追加する、ことを特徴とする請求項１に記載のブロックチェーン生成システム。
【請求項７】
１以上のブロックを連結する第１のブロックチェーンと第２のブロックチェーンのそれぞれに対して、前記第１のブロックチェーンの最新のブロックに対応する第１のハッシュ値と、前記第２のブロックチェーンの最新のブロックに対応する第２のハッシュ値とを有する中間ブロックを追加し、
前記第１および前記第２のブロックチェーンにそれぞれ追加された前記中間ブロックが有する前記第１のハッシュ値と前記第２のハッシュ値とに基づき、前記第１および前記第２のブロックチェーンに共通する第３のハッシュ値を算出可能な関数を用いて、前記第１および前記第２のブロックチェーンに対して、前記第３のハッシュ値を有するブロックを追加する、
ことを特徴とするブロックチェーン生成方法。
【請求項８】
コンピュータに、
１以上のブロックを連結する第１のブロックチェーンと第２のブロックチェーンのうち前記第１のブロックチェーンに対して、前記第１のブロックチェーンの最新のブロックに対応する第１のハッシュ値と、前記第２のブロックチェーンの最新のブロックに対応する第２のハッシュ値とを有する中間ブロックを追加し、
前記第１のブロックチェーンに追加された中間ブロックが有する第１のハッシュ値と第２のハッシュ値とに基づき、前記第１および前記第２のブロックチェーンに共通する第３のハッシュ値を算出可能な関数を用いて、前記第１のブロックチェーンに対して、前記第３のハッシュ値を有するブロックを追加する、
処理を実行させることを特徴とするブロックチェーン生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロックチェーン生成システム、ブロックチェーン生成方法、およびブロックチェーン生成プログラムに関する。
【背景技術】
【０００２】
従来、ある時間間隔で、データをまとめたブロックを生成し、生成したブロックを連結していくことにより、データを管理するブロックチェーン（Ｂｌｏｃｋｃｈａｉｎ）と呼ばれるリストを作成する技術がある。ブロックチェーンは、例えば、何らかの組織ごとに生成され、何らかの組織内の１以上のノードは、同一のブロックチェーンを共通して記憶する。
【０００３】
先行技術としては、例えば、クライアント端末によりＰ２Ｐ仮想通貨ネットワークに投入された取引データから、コンテンツの利用に要する仮想通貨の価額の支払いを確認できた場合、クライアント端末のユーザに対してコンテンツの利用を許可するものがある。また、例えば、オンライン取引におけるトランザクションイベントを検出し、トランザクションイベントのそれぞれに関連する取引情報を記録する技術がある。また、例えば、仮想通貨を第１のユーザに送金する第１の取引により送金された金額の少なくとも一部を第１のユーザが送金する第２の取引の正当性を検証する技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−１６２４３１号公報
【特許文献２】特開２０１６−１５１８０２号公報
【特許文献３】特開２０１６−２００９５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、複数の組織が合併する際、合併した後の複数の組織の状態に合わせて、それぞれの組織で生成されたブロックチェーンを管理することが難しい。例えば、複数の組織が合併する際、それぞれの組織におけるブロックチェーンを所定のアプリケーションで一括して管理する場合が考えられるが、アプリケーションを導入するコストがかかり、アプリケーションがセキュリティ上の脆弱性になりうる。
【０００６】
１つの側面では、本発明は、複数のブロックチェーンを管理しやすくすることができるブロックチェーン生成システム、ブロックチェーン生成方法、およびブロックチェーン生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
１つの実施態様によれば、１以上のブロックを連結する第１のブロックチェーンと第２のブロックチェーンのうち前記第１のブロックチェーンに対して、前記第１のブロックチェーンの最新のブロックに対応する第１のハッシュ値と、前記第２のブロックチェーンの最新のブロックに対応する第２のハッシュ値とを有する中間ブロックを追加し、前記第１のブロックチェーンに追加された中間ブロックが有する第１のハッシュ値と第２のハッシュ値とに基づき、前記第１および前記第２のブロックチェーンに共通する第３のハッシュ値を算出可能な関数を用いて、前記第１のブロックチェーンに対して、前記第３のハッシュ値を有するブロックを追加するブロックチェーン生成システム、ブロックチェーン生成方法、およびブロックチェーン生成プログラムが提案される。
【発明の効果】
【０００８】
一態様によれば、複数のブロックチェーンを管理しやすくすることが可能になる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態にかかるブロックチェーン生成方法の一実施例を示す説明図である。
【図２】図２は、ブロックチェーン生成システム２００の一例を示す説明図である。
【図３】図３は、ブロックチェーン生成装置１００のハードウェア構成例を示すブロック図である。
【図４】図４は、ブロック４００の記憶内容の一例を示す説明図である。
【図５】図５は、ブロックチェーン生成装置１００の機能的構成例を示すブロック図である。
【図６】図６は、ブロックチェーン生成システム２００の機能的構成例を示すブロック図である。
【図７】図７は、ブロックチェーン生成装置１００の動作例１を示す説明図（その１）である。
【図８】図８は、ブロックチェーン生成装置１００の動作例１を示す説明図（その２）である。
【図９】図９は、ブロックチェーン生成装置１００の動作例１を示す説明図（その３）である。
【図１０】図１０は、ブロックチェーン生成装置１００の動作例１を示す説明図（その４）である。
【図１１】図１１は、ブロックチェーン生成装置１００の動作例１を示す説明図（その５）である。
【図１２】図１２は、ブロックチェーン生成装置１００の動作例１を示す説明図（その６）である。
【図１３】図１３は、ブロックチェーン生成装置１００の動作例１を示す説明図（その７）である。
【図１４】図１４は、ブロックチェーン生成装置１００の動作例１を示す説明図（その８）である。
【図１５】図１５は、ブロックチェーン生成装置１００の動作例１を示す説明図（その９）である。
【図１６】図１６は、ブロックチェーン生成装置１００の動作例１を示す説明図（その１０）である。
【図１７】図１７は、ブロックチェーン生成装置１００の動作例１を示す説明図（その１１）である。
【図１８】図１８は、ブロックチェーン生成装置１００の動作例１を示す説明図（その１２）である。
【図１９】図１９は、動作例１におけるブロックチェーン管理処理手順の一例を示すフローチャートである。
【図２０】図２０は、ブロックチェーン生成装置１００の動作例２を示す説明図である。
【図２１】図２１は、ブロックチェーン生成装置１００の動作例３を示す説明図（その１）である。
【図２２】図２２は、ブロックチェーン生成装置１００の動作例３を示す説明図（その２）である。
【図２３】図２３は、動作例３におけるブロックチェーン管理処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に、図面を参照して、本発明にかかるブロックチェーン生成システム、ブロックチェーン生成方法、および、ブロックチェーン生成プログラムの実施の形態を詳細に説明する。
【００１１】
（実施の形態にかかるブロックチェーン生成方法の一実施例）
図１は、実施の形態にかかるブロックチェーン生成方法の一実施例を示す説明図である。ブロックチェーン生成装置１００は、ブロックチェーンを管理するコンピュータである。
【００１２】
ブロックチェーンは、データを管理するためのリストである。ブロックチェーンは、１以上のブロックを連結させたリストである。ブロックチェーンは、例えば、何らかの組織において生成され、記憶される。何らかの組織内の１以上のノードは、同一のブロックチェーンを共通して記憶し、管理する。ブロックは、１以上のデータをまとめたデータ集合である。
【００１３】
ここで、複数の組織のそれぞれの組織においてブロックチェーンが記憶されている状況において、複数の組織を合併しようとする場合がある。この場合、合併した後の複数の組織の状態に合うように、それぞれの組織におけるブロックチェーンを管理することが望まれる。
【００１４】
例えば、複数の組織が合併した後では、それぞれの組織におけるブロックチェーンに、同一のブロックが追加されていくように、それぞれの組織において生成されているブロックチェーンを管理しようとする要望がある。換言すれば、複数の組織が合併した後では、それぞれの組織におけるブロックチェーンを、組織間で共通化しようとする要望がある。
【００１５】
一方で、複数の組織が合併する前に、いずれかの組織におけるブロックチェーンに追加されていたブロックについては、複数の組織が合併した後でも、他の組織から参照されないようにしようとする要望がある。しかしながら、合併した後の複数の組織の状態に合わせて、上述した要望を満たすように、それぞれの組織におけるブロックチェーンを管理することは難しい。
【００１６】
例えば、複数の組織が合併する際、それぞれの組織におけるブロックチェーンを、所定のアプリケーションで監視し、所定のアプリケーションで一括して管理する場合が考えられる。この場合、アプリケーションを導入し、運用するコストがかかり、アプリケーションがセキュリティ上の脆弱性になりうる。
【００１７】
具体的には、所定のアプリケーションが、複数の組織が合併する前にブロックチェーンに追加されたブロックについて、それぞれの組織からのアクセスの制限を管理することになる。また、所定のアプリケーションが、合併時のブロックの正当性を保証することになる。このため、所定のアプリケーションのセキュリティを強化することが好ましく、所定のアプリケーションの運用にかかるコストの増大化を招く。
【００１８】
そこで、本実施の形態では、ブロックチェーンの仕組みを利用し、所定のタイミング以降には、それぞれの組織におけるブロックチェーンに、同一のブロックが追加されていくようにすることができるブロックチェーン生成方法について説明する。これによれば、ブロックチェーン生成方法は、合併した後の複数の組織の状態に合わせて、それぞれの組織におけるブロックチェーンを管理しやすくすることができる。
【００１９】
図１の例では、２つの組織においてブロックチェーンが記憶されている。具体的には、組織Ａにおいては、ブロックチェーン１１０が記憶されている。ブロックチェーン１１０は、ブロック１１１，１１２を含む。組織Ｂにおいては、ブロックチェーン１２０が記憶されている。ブロックチェーン１２０は、ブロック１２１，１２２を含む。
【００２０】
ブロックチェーン生成装置１００は、組織ごとに１以上含まれる。ブロックチェーン生成装置１００は、いずれかの組織内のノードとして、いずれかの組織におけるブロックチェーンを管理する。以下の説明では、ブロックチェーン生成装置１００が、組織Ａ内のノードとして、組織Ａにおけるブロックチェーン１１０を管理する場合について説明する。
【００２１】
ブロックチェーン生成装置１００は、自装置が管理するブロックチェーンの最新のブロックに対応する第１のハッシュ値を取得する。最新のブロックに対応する第１のハッシュ値は、例えば、最新のブロックを所定の関数に代入することにより算出される、最新のブロックを示すハッシュ値である。最新のブロックに対応する第１のハッシュ値は、例えば、最新のブロックに設定されたハッシュ値をコピーしたハッシュ値であってもよい。ブロックチェーン生成装置１００は、例えば、ブロックチェーン１１０の最新のブロック１１２に設定された第１のハッシュ値を取得する。
【００２２】
また、ブロックチェーン生成装置１００は、自装置が管理するブロックチェーン以外の、他装置が管理するブロックチェーンの最新のブロックに対応する第２のハッシュ値を取得する。最新のブロックに対応する第２のハッシュ値は、例えば、最新のブロックを所定の関数に代入することにより算出される、最新のブロックを示すハッシュ値である。最新のブロックに対応する第２のハッシュ値は、例えば、最新のブロックに設定されたハッシュ値をコピーしたハッシュ値であってもよい。ブロックチェーン生成装置１００は、例えば、ブロックチェーン１２０の最新のブロック１２２に設定された第２のハッシュ値を、他装置から受信する。
【００２３】
そして、ブロックチェーン生成装置１００は、自装置が管理するブロックチェーンについて、第１のハッシュ値と、第２のハッシュ値とを有する中間ブロックを追加する。ブロックチェーン生成装置１００は、例えば、ブロックチェーン１１０について、取得した第１のハッシュ値と、受信した第２のハッシュ値とを有する中間ブロック１１３を追加する。一方で、他装置も、同様に、ブロックチェーン１２０について、中間ブロック１２３を追加する。
【００２４】
次に、ブロックチェーン生成装置１００は、自装置が管理するブロックチェーンに追加された中間ブロックが有する第１のハッシュ値と第２のハッシュ値とに基づき、所定の関数を用いて、第３のハッシュ値を算出する。所定の関数は、複数のブロックチェーンに共通する第３のハッシュ値を算出可能な関数である。
【００２５】
そして、ブロックチェーン生成装置１００は、自装置が管理するブロックチェーンについて、第３のハッシュ値を有するブロックを追加する。ブロックチェーン生成装置１００は、例えば、ブロックチェーン１１０について、ブロックチェーン１１０，１２０で共通する第３のハッシュ値を有するブロック１１４を追加する。一方で、他装置も、同様に、ブロックチェーン１２０について、ブロックチェーン１１０，１２０で共通する第３のハッシュ値を有するブロック１２４を追加する。
【００２６】
これにより、ブロックチェーン生成装置１００は、所定の関数により、複数のブロックチェーンに共通する第３のハッシュ値が算出されるように、自装置が管理するブロックチェーンに、中間ブロックを追加することができる。そして、ブロックチェーン生成装置１００は、自装置が管理するブロックチェーンに、複数のブロックチェーンに共通する第３のハッシュ値を有するブロックを追加することができる。結果として、それぞれのブロックチェーンに、中間ブロックの次に追加されるブロックが一致することになる。
【００２７】
このため、以降では、それぞれのブロックチェーンに、同一のブロックが追加されていくようになり、ブロックチェーン生成装置１００は、ブロックチェーンの仕組みを利用して、複数のブロックチェーンを組織間で共通化することができる。このように、ブロックチェーン生成装置１００は、自装置が管理するブロックチェーンを、合併した複数の組織の状態に合うように管理することができる。また、ブロックチェーン生成装置１００は、ブロックチェーンの仕組みを利用して、合併前後でのブロックの整合性を保証することができる。
【００２８】
ブロックチェーン生成装置１００は、自装置が管理するブロックチェーンについて、中間ブロック、および、中間ブロックに基づき生成された中間ブロックの次のブロックなどのような、特殊なブロックを残しておくことができる。このため、ブロックチェーン生成装置１００は、後々、自装置が管理するブロックチェーンを共通化したタイミングを判別可能にすることができる。
【００２９】
一方で、ブロックチェーン生成装置１００は、自装置が管理するブロックチェーンに、中間ブロックより前に追加されていたブロックについては、自装置で記憶しておけばよく、他装置に参照させなくてもよい。このため、ブロックチェーン生成装置１００は、自装置が管理するブロックチェーンに、中間ブロックより前に追加されていたブロックに含まれる取引情報や個人情報や社外秘情報などがあれば保護することができ、セキュリティの向上を図ることができる。
【００３０】
また、ブロックチェーン生成装置１００は、それぞれのブロックチェーンを管理するアプリケーションなどを導入しなくてもよく、アプリケーションの導入や運用による、人的または金銭的なコストの増大化を抑制することができる。また、ブロックチェーン生成装置１００は、アプリケーションがセキュリティ上の脆弱性になることがないため、セキュリティの向上を図ることができる。
【００３１】
（ブロックチェーン生成システム２００の一例）
次に、図２を用いて、図１に示したブロックチェーン生成装置１００を適用した、ブロックチェーン生成システム２００の一例について説明する。
【００３２】
図２は、ブロックチェーン生成システム２００の一例を示す説明図である。図２において、ブロックチェーン生成システム２００は、第１の組織における１以上のノード２０１と、第２の組織における１以上のノード２０２とを含む。
【００３３】
第１の組織において、１以上のノード２０１は、有線または無線のネットワーク２１１を介して接続される。ネットワーク２１１は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などである。
【００３４】
第２の組織において、１以上のノード２０２は、有線または無線のネットワーク２１２を介して接続される。ネットワーク２１２は、例えば、ＬＡＮやＷＡＮなどである。
【００３５】
ブロックチェーン生成システム２００において、第１の組織における１以上のノード２０１と、第２の組織における１以上のノード２０２とは、第１の組織と第２の組織が合併したことに応じて、有線または無線のネットワーク２１０を介して接続される。ネットワーク２１０は、例えば、インターネットなどである。
【００３６】
ノード２０１は、第１の組織におけるブロックチェーンを管理するコンピュータである。ノード２０１は、図１に示したブロックチェーン生成装置１００によって実現される。ノード２０１は、例えば、サーバ、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、タブレット端末、スマートフォン、ウェアラブル端末などである。
【００３７】
ノード２０２は、第２の組織におけるブロックチェーンを管理するコンピュータである。ノード２０２は、図１に示したブロックチェーン生成装置１００によって実現される。ノード２０２は、例えば、サーバ、ＰＣ、タブレット端末、スマートフォン、ウェアラブル端末などである。
【００３８】
（ブロックチェーン生成装置１００のハードウェア構成例）
次に、図３を用いて、ブロックチェーン生成装置１００のハードウェア構成例について説明する。
【００３９】
図３は、ブロックチェーン生成装置１００のハードウェア構成例を示すブロック図である。図３において、ブロックチェーン生成装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、メモリ３０２と、ネットワークＩ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０３と、記録媒体Ｉ／Ｆ３０４と、記録媒体３０５とを有する。また、各構成部は、バス３００によってそれぞれ接続される。
【００４０】
ここで、ＣＰＵ３０１は、ブロックチェーン生成装置１００の全体の制御を司る。メモリ３０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ３０１のワークエリアとして使用される。メモリ３０２に記憶されるプログラムは、ＣＰＵ３０１にロードされることで、コーディングされている処理をＣＰＵ３０１に実行させる。メモリ３０２は、例えば、ブロックチェーンを記憶する。
【００４１】
ネットワークＩ／Ｆ３０３は、通信回線を通じて、ネットワーク２１０，２１１，２１２などに接続され、ネットワーク２１０，２１１，２１２などを介して、他のコンピュータに接続される。そして、ネットワークＩ／Ｆ３０３は、ネットワーク２１０，２１１，２１２などと内部とのインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークＩ／Ｆ３０３には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００４２】
記録媒体Ｉ／Ｆ３０４は、ＣＰＵ３０１の制御に従って記録媒体３０５に対するデータのリード／ライトを制御する。記録媒体Ｉ／Ｆ３０４は、例えば、ディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポートなどである。記録媒体３０５は、記録媒体Ｉ／Ｆ３０４の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体３０５は、例えば、ディスク、半導体メモリ、ＵＳＢメモリなどである。記録媒体３０５は、ブロックチェーン生成装置１００から着脱可能であってもよい。
【００４３】
ブロックチェーン生成装置１００は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、ブロックチェーン生成装置１００は、記録媒体Ｉ／Ｆ３０４や記録媒体３０５を複数有していてもよい。また、ブロックチェーン生成装置１００は、記録媒体Ｉ／Ｆ３０４や記録媒体３０５を有していなくてもよい。
【００４４】
（ブロック４００の記憶内容）
次に、図４を用いてブロックチェーンに含まれるブロックの一例として、ブロック４００の記憶内容について説明する。ブロック４００は、例えば、図３に示したブロックチェーン生成装置１００のメモリ３０２や記録媒体３０５などの記憶領域により実現される。
【００４５】
図４は、ブロック４００の記憶内容の一例を示す説明図である。図４に示すように、ブロック４００は、直前ハッシュ値と、ナンス（Ｎｏｎｃｅ）と、取引ＩＤリストとのフィールドを有する。ブロック４００は、各フィールドに情報を設定することにより、生成される。
【００４６】
直前ハッシュ値のフィールドには、ブロック４００の直前にブロックチェーンに追加された直前ブロックに対応するハッシュ値が設定される。直前ブロックに対応するハッシュ値は、例えば、直前ブロックを所定の関数に代入することにより算出される、直前ブロックを示すハッシュ値である。ナンスのフィールドには、ナンスと呼ばれる、自由に設定可能な値が設定される。取引ＩＤリストのフィールドには、過去の取引（ｔｒａｎｓａｃｔｉｏｎ）に関する情報が設定される。取引に関する情報は、例えば、取引を特定するＩＤである。
【００４７】
（ブロックチェーン生成システム２００の機能的構成例）
次に、ブロックチェーン生成システム２００の機能的構成例について説明する。ブロックチェーン生成システム２００は、第１追加部と、第２追加部とを有する。
【００４８】
第１追加部は、複数のブロックチェーンそれぞれに中間ブロックを追加する。第１追加部は、例えば、第１の組織における１以上のノード２０１を実現するブロックチェーン生成装置１００の図５に示す各機能部と、第２の組織における１以上のノード２０２を実現するブロックチェーン生成装置１００の図５に示す各機能部とによって実現される。
【００４９】
第２追加部は、複数のブロックチェーンそれぞれに共通する第３のハッシュ値を有するブロックを、複数のブロックチェーンそれぞれに追加する。第２追加部は、例えば、第１の組織における１以上のノード２０１を実現するブロックチェーン生成装置１００の図５に示す各機能部と、第２の組織における１以上のノード２０２を実現するブロックチェーン生成装置１００の図５に示す各機能部とによって実現される。
【００５０】
（ブロックチェーン生成装置１００の機能的構成例）
次に、図５を用いて、ブロックチェーン生成装置１００の機能的構成例について説明する。
【００５１】
図５は、ブロックチェーン生成装置１００の機能的構成例を示すブロック図である。ブロックチェーン生成装置１００は、記憶部５００と、取得部５０１と、追加部５０２と、出力部５０３とを含む。
【００５２】
記憶部５００は、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域によって実現される。以下では、記憶部５００が、ブロックチェーン生成装置１００に含まれる場合について説明するが、これに限らない。例えば、記憶部５００が、ブロックチェーン生成装置１００とは異なる装置に含まれ、記憶部５００の記憶内容がブロックチェーン生成装置１００から参照可能である場合があってもよい。
【００５３】
取得部５０１〜出力部５０３は、制御部となる機能である。取得部５０１〜出力部５０３は、具体的には、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、ネットワークＩ／Ｆ３０３により、その機能を実現する。各機能部の処理結果は、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域に記憶される。
【００５４】
記憶部５００は、ブロックチェーンを記憶する。ブロックチェーンは、１以上のブロックを連結したリストである。ブロックは、データをまとめたデータ集合である。ブロックの一例は、図４に示したブロック４００である。ブロックは、複数の項目を有する。ブロックは、例えば、第１の項目と、第２の項目とを有する。ブロックが有する第１の項目は、例えば、ブロックの直前に連結されたブロックを示すハッシュ値が設定される、直前ハッシュ値の項目である。また、第１の項目は、ナンスの項目、または、取引ＩＤリストの項目であってもよい。ブロックが有する第２の項目は、例えば、ナンスの項目である。また、第２の項目は、直前ハッシュ値の項目、または、取引ＩＤリストの項目であってもよい。これにより、記憶部５００は、ブロックチェーンを参照可能にすることができる。
【００５５】
また、記憶部５００は、各機能部の処理に用いられる各種情報を記憶する。記憶部５００は、例えば、所定の関数を記憶する。所定の関数は、ブロックに基づき、ブロックを示すハッシュ値を算出するハッシュ関数である。所定の関数は、例えば、ブロックが有する複数の項目の値に基づき、第３のハッシュ値を算出する関数である。所定の関数は、具体的には、ブロックが有する複数の項目のうち第１の項目の値と第２の項目の値とが入れ替わっても、算出される第３のハッシュ値が同一になる関数である。これにより、記憶部５００は、各機能部の処理に用いられる各種情報を、各機能部に参照可能にすることができる。
【００５６】
取得部５０１は、自装置が管理するブロックチェーンの最新のブロックに対応するハッシュ値を取得する。最新のブロックに対応するハッシュ値は、例えば、最新のブロックに設定されたハッシュ値をコピーしたハッシュ値である。最新のブロックに対応するハッシュ値は、例えば、最新のブロックを所定の関数に代入することにより算出された、最新のブロックを示すハッシュ値である。取得部５０１は、例えば、自装置が管理するブロックチェーンの最新のブロックに対応するハッシュ値を自装置で算出しない場合に、自装置が管理するブロックチェーンの最新のブロックに対応するハッシュ値を、他装置から受信する。これにより、取得部５０１は、中間ブロックの生成に用いる情報を取得し、追加部５０２に提供することができる。
【００５７】
取得部５０１は、他装置が管理するブロックチェーンの最新のブロックに対応するハッシュ値を取得する。最新のブロックに対応するハッシュ値は、例えば、最新のブロックに設定されたハッシュ値をコピーしたハッシュ値である。最新のブロックに対応するハッシュ値は、例えば、最新のブロックを所定の関数に代入することにより算出された、最新のブロックを示すハッシュ値である。取得部５０１は、他装置が管理するブロックチェーンの最新のブロックに対応するハッシュ値を、他装置から受信する。これにより、取得部５０１は、中間ブロックの生成に用いる情報を取得し、追加部５０２に提供することができる。
【００５８】
追加部５０２は、自装置が管理するブロックチェーンについて、中間ブロックを追加する。ここで、複数のブロックチェーンのそれぞれのブロックチェーンに追加される中間ブロックは、同一でなくてもよいが、所定の関数に代入された場合には、所定の関数から算出される第３のハッシュ値を同一にすることができる。
【００５９】
自装置が管理するブロックチェーンに追加される中間ブロックは、例えば、自装置が管理するブロックチェーンの最新のブロックに対応する第１のハッシュ値と、他装置が管理するブロックチェーンの最新のブロックに対応する第２のハッシュ値とを有する。自装置が管理するブロックチェーンに追加される中間ブロックは、例えば、第１のハッシュ値が第１の項目の値に設定され、第２のハッシュ値が第２の項目の値に設定される。
【００６０】
中間ブロックは、具体的には、第１のハッシュ値が、直前ハッシュ値の項目の値に設定され、第２のハッシュ値が、ナンスの項目の値に設定される。また、中間ブロックは、具体的には、第１のハッシュ値が、直前ハッシュ値の項目の値に設定され、第２のハッシュ値が、取引ＩＤリストの項目の値に設定されてもよい。また、中間ブロックは、具体的には、第１のハッシュ値が、ナンスの項目の値に設定され、第２のハッシュ値が、取引ＩＤリストの項目の値に設定されてもよい。
【００６１】
追加部５０２は、具体的には、自装置が管理するブロックチェーンの最新のブロックに設定された第１のハッシュ値と、他装置が管理するブロックチェーンの最新のブロックに設定された第２のハッシュ値とを有する中間ブロックを追加する。追加部５０２は、図７〜図１８に後述する動作例１、または、図２０に後述する動作例２などのように、自装置が管理するブロックチェーンについて、中間ブロックを追加する。これにより、追加部５０２は、算出済みのハッシュ値を利用し、処理量の低減化を図ることができる。
【００６２】
追加部５０２は、具体的には、自装置が管理するブロックチェーンの最新のブロックを示す第１のハッシュ値と、他装置が管理するブロックチェーンの最新のブロックを示す第２のハッシュ値とを有する中間ブロックを追加してもよい。追加部５０２は、図２１および図２２に後述する動作例３などのように、自装置が管理するブロックチェーンについて、中間ブロックを追加する。これにより、追加部５０２は、第１のハッシュ値に基づいて、自装置が管理するブロックチェーンに中間ブロックの直前に追加されたブロックの改ざんの有無を判定可能にすることができる。また、追加部５０２は、第２のハッシュ値に基づいて、他装置が管理するブロックチェーンに中間ブロックの直前に追加されたブロックの改ざんの有無を判定可能にすることができる。
【００６３】
追加部５０２は、中間ブロックを追加した後、自装置が管理するブロックチェーンについて、共通ブロックを追加する。共通ブロックは、それぞれのブロックチェーンに共通して追加されるブロックである。共通ブロックは、第３のハッシュ値を有する。共通ブロックは、第３のハッシュ値を、第１の項目の値に設定される。第３のハッシュ値は、中間ブロックを示すハッシュ値である。
【００６４】
追加部５０２は、例えば、自装置が管理するブロックチェーンに追加された中間ブロックが有する第１のハッシュ値と第２のハッシュ値とに基づき、所定の関数を用いて、第３のハッシュ値を算出する。そして、追加部５０２は、自装置が管理するブロックチェーンについて、第３のハッシュ値を有する共通ブロックを追加する。これにより、追加部５０２は、以降、それぞれのブロックチェーンに同一のブロックが追加されていくようにすることができ、複数のブロックチェーンを共通化することができる。
【００６５】
追加部５０２は、例えば、第３のハッシュ値のほか、それぞれのブロックチェーンに中間ブロックの直前に追加されたブロックを示す第４のハッシュ値を算出してもよい。そして、追加部５０２は、自装置が管理するブロックチェーンについて、第３のハッシュ値のほか、第４のハッシュ値をさらに有する共通ブロックを追加する。これにより、追加部５０２は、第４のハッシュ値に基づいて、それぞれのブロックチェーンに中間ブロックの直前に追加されたブロックの改ざんの有無を判定可能にすることができる。
【００６６】
出力部５０３は、各機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークＩ／Ｆ３０３による外部装置への送信、または、メモリ３０２や記録媒体３０５などの記憶領域への記憶である。これにより、出力部５０３は、各機能部の処理結果を利用者に通知可能にし、ブロックチェーン生成装置１００の管理や運用、例えば、ブロックチェーン生成装置１００の設定値の更新などを支援することができる。そして、出力部５０３は、ブロックチェーン生成装置１００の利便性の向上を図ることができる。
【００６７】
ここでは、ブロックチェーン生成装置１００が、単独で、各機能部を実現する場合について説明したが、これに限らない。例えば、図６に後述するように、ブロックチェーン生成システム２００において、複数のブロックチェーン生成装置１００が、協働して、各機能部を実現する場合があってもよい。
【００６８】
（ブロックチェーン生成システム２００の機能的構成例）
次に、図６を用いて、ブロックチェーン生成システム２００の機能的構成例について説明する。
【００６９】
図６は、ブロックチェーン生成システム２００の機能的構成例を示すブロック図である。ブロックチェーン生成システム２００は、例えば、ハッシュ値算出部６０１とブロック生成部６０２とを含むブロックチェーン生成装置１００を有する。
【００７０】
また、ブロックチェーン生成システム２００は、例えば、統合準備部６０３を含むブロックチェーン生成装置１００を有する。また、ブロックチェーン生成システム２００は、例えば、統合部６０４を含むブロックチェーン生成装置１００を有する。
【００７１】
ハッシュ値算出部６０１は、自装置が管理するブロックチェーンに直前に追加されたブロックを示すハッシュ値を算出する。ブロック生成部６０２は、ハッシュ値算出部６０１が算出したハッシュ値がハッシュ値の項目の値として設定されたブロックを生成し、自装置が管理するブロックチェーンに追加する。
【００７２】
統合準備部６０３は、中間ブロックを生成する。統合準備部６０３は、自装置のメモリ３０２に記憶された、自装置が管理するブロックチェーンについて、生成した中間ブロックを追加する。統合準備部６０３は、追加部５０２の一部の動作を実現する。統合部６０４は、共通ブロックを生成する。統合部６０４は、自装置のメモリ３０２に記憶された、自装置が管理するブロックチェーンについて、生成した共通ブロックを追加する。統合部６０４は、追加部５０２の一部の動作を実現する。
【００７３】
（ブロックチェーン生成装置１００の動作例１）
次に、図７〜図１８を用いて、ブロックチェーン生成装置１００の動作例１について説明する。
【００７４】
図７〜図１８は、ブロックチェーン生成装置１００の動作例１を示す説明図である。図７は、具体的には、複数の組織のそれぞれの組織におけるブロックチェーンを、組織間で共通化しようとする状況の一例を示す。
【００７５】
図７に示すように、Ａ社においてＡ社ブロックチェーンが記憶されている。Ｂ社においてＢ社ブロックチェーンが記憶されている。ここで、Ａ社とＢ社とが、合併や提携する状況において、Ａ社ブロックチェーンとＢ社ブロックチェーンとを共通化し、ＡＢ社ブロックチェーンとして利用しようとする場合がある。
【００７６】
ここで、Ａ社ブロックチェーンとＢ社ブロックチェーンとを共通化した場合でも、Ａ社従業員が、Ａ社ブロックチェーンと、ＡＢ社ブロックチェーンとを参照可能であるが、Ｂ社ブロックチェーンを参照可能ではないようにすることが望まれる。一方で、Ｂ社従業員が、Ｂ社ブロックチェーンと、ＡＢ社ブロックチェーンとを参照可能であるが、Ａ社ブロックチェーンを参照可能ではないようにすることが望まれる。
【００７７】
以下の説明では、Ａ社ブロックチェーンを「チェーンＡ」と表記する場合がある。以下の説明では、Ｂ社ブロックチェーンを「チェーンＢ」と表記する場合がある。次に、図８の説明に移行し、Ａ社やＢ社における、ブロックチェーンに対するブロックの追加の流れについて説明する。
【００７８】
図８は、具体的には、ブロックチェーンに対するブロックの追加の流れを示す。図８に示すように、ブロックチェーン生成装置１００は、一定時間ごとに、ブロックチェーンに新たなブロックを追加していく。ここでは、ブロックチェーンに、ブロック１が追加された後における、ブロックチェーン生成装置１００の動作について説明する。
【００７９】
ブロックチェーン生成装置１００は、具体的には、ブロックチェーンの最新のブロック１をハッシュ関数に代入し、最新のブロック１を示すハッシュ値「ｈａｓｈ１」を算出する。次に、ブロックチェーン生成装置１００は、算出したハッシュ値「ｈａｓｈ１」を直前ハッシュ値の項目の値に設定した新たなブロック２を生成する。そして、ブロックチェーン生成装置１００は、ブロックチェーンに、生成したブロック２を追加する。
【００８０】
ハッシュ関数は、直前ハッシュ値の項目の値、ナンスの項目の値、取引ＩＤリストの項目の値が代入され、ハッシュ値を算出する。ハッシュ関数は、例えば、直前ハッシュ値の項目の値と、ナンスの項目の値とが入れ替わっても、同一のハッシュ値を算出する。ハッシュ関数は、例えば、下記式（１）または下記式（２）で表される。
【００８１】
ハッシュ値＝ｆ（直前ハッシュ値の項目の値＊ナンスの項目の値＊取引ＩＤリストの項目の値）                                                          ・・・（１）
【００８２】
ハッシュ値＝ｆ（直前ハッシュ値の項目の値）＊ｆ（ナンスの項目の値）−ｆ（取引ＩＤリストの項目の値）                                              ・・・（２）
【００８３】
ここで、ｆ（）は、ＳＨＡ−２５６ハッシュ関数である。＊は、乗算を示す。−は、減算を示す。上記式（１）および上記式（２）において、＊の代わりに、Ａ＠Ｂ＝Ｂ＠Ａを満たす任意の演算子＠が利用されてもよい。上記式（１）および上記式（２）において、例えば、＊の代わりに＋が利用されてもよい。上記式（２）において、−の代わりに、任意の演算子＠が利用されてもよい。
【００８４】
同様に、ブロックチェーン生成装置１００は、ブロックチェーンの最新のブロック２をハッシュ関数に代入してハッシュ値「ｈａｓｈ２」を算出し、算出したハッシュ値「ｈａｓｈ２」を直前ハッシュ値の項目の値に設定した新たなブロック３を生成する。ブロックチェーン生成装置１００は、ブロックチェーンに、生成したブロック３を追加する。
【００８５】
このように、ブロックチェーン生成装置１００は、ブロックチェーンに新たなブロックを追加していく。ブロックチェーン生成装置１００は、ブロックを追加する際、直前ブロックを示すハッシュ値を算出し、追加するブロックに含めることにより、ブロックチェーンの連結を実現する。次に、図９の説明に移行し、ブロックが追加されるブロックチェーンの共通化の流れについて説明する。
【００８６】
図９は、ブロックチェーンの共通化の流れを示す。図９に示すように、Ａ社とＢ社とが合併するタイミングで、チェーンＡとチェーンＢとを共通化し、Ａ社とＢ社とが合併するタイミング以降は、チェーンＡにもチェーンＢにも同一のブロックが追加されるようにする。これにより、Ａ社とＢ社とが合併するタイミング以降は、Ａ社においてもＢ社においても、同一のブロックを記憶していくことになる。
【００８７】
図９の例では、具体的には、チェーンＡには、ブロック９１１〜９１３以降、ブロック９３１，９３２が追加されていくようにする。一方で、チェーンＢには、ブロック９２１〜９２３以降、チェーンＡと同じブロック９３１，９３２が追加されていくようにする。次に、図１０の説明に移行し、ブロックチェーンの共通化の具体例について説明する。
【００８８】
図１０は、ブロックチェーンの共通化の具体例を示す。図１０の例では、Ａ社とＢ社とが合併する前、Ａ社におけるチェーンＡには、ブロック１０１１，１０１２が含まれている。ここで、図１１の説明に移行し、チェーンＡにおける最新のブロック１０１２の具体例について説明する。
【００８９】
図１１は、チェーンＡにおける最新のブロック１０１２の具体例を示す。図１１に示すように、ブロック１０１２は、直前ハッシュ値の項目に「Ａ１１．．１１」が設定される。ブロック１０１２は、ナンスの項目に「Ａ２２．．２２」が設定される。ブロック１０１２は、取引ＩＤリストの項目に「Ａ３３．．３３，  Ａ４４．．４４，  ．．．」が設定される。直前ハッシュ値と、ナンスとは、例えば、２５６ビットである。
【００９０】
図１０の説明に戻り、Ａ社とＢ社とが合併する前、Ｂ社におけるチェーンＢには、ブロック１０２１，１０２２が含まれている。ここで、図１２の説明に移行し、チェーンＢにおける最新のブロック１０２２の具体例について説明する。
【００９１】
図１２は、チェーンＢにおける最新のブロック１０２２の具体例を示す。図１２に示すように、ブロック１０２２は、直前ハッシュ値の項目に「Ｂ５５．．５５」が設定される。ブロック１０２２は、ナンスの項目に「Ｂ６６．．６６」が設定される。ブロック１０２２は、取引ＩＤリストの項目に「Ｂ７７．．７７，  Ｂ８８．．８８，  ．．．」が設定される。直前ハッシュ値と、ナンスとは、例えば、２５６ビットである。
【００９２】
図１０の説明に戻り、Ａ社側のブロックチェーン生成装置１００は、例えば、Ａ社とＢ社とが合併したことに応じて、中間ブロックとなるブロック１０１３を生成する。以下の説明では、Ａ社側のブロックチェーン生成装置１００を「ブロックチェーン生成装置１００Ａ」と表記する場合がある。
【００９３】
ブロックチェーン生成装置１００Ａは、ブロック１０１３の直前ハッシュ値の項目の値に、直前のブロック１０１２に設定されたハッシュ値「ｈａｓｈＡ」を設定する。また、ブロックチェーン生成装置１００Ａは、ブロック１０１３のナンスの項目の値に、チェーンＢのブロック１０２２に設定されたハッシュ値「ｈａｓｈＢ」を設定する。ブロック１０１３の取引ＩＤリストの項目は空である。
【００９４】
ここでは、ブロックチェーン生成装置１００Ａが、ブロック１０１３のナンスの項目の値に、チェーンＢのブロック１０２２に設定されたハッシュ値「ｈａｓｈＢ」を設定する場合について説明したが、これに限らない。例えば、ブロックチェーン生成装置１００Ａが、ブロック１０１３の取引ＩＤリストの項目の値に、チェーンＢのブロック１０２２に設定されたハッシュ値「ｈａｓｈＢ」を設定する場合があってもよい。
【００９５】
ブロックチェーン生成装置１００Ａは、生成したブロック１０１３を、チェーンＡに追加する。ここで、図１３の説明に移行し、ブロック１０１３の具体例について説明する。
【００９６】
図１３は、ブロック１０１３の具体例を示す。図１３に示すように、ブロック１０１３は、直前ハッシュ値の項目に、ブロック１０１２からコピーした「Ａ１１．．１１」が設定される。ブロック１０１３は、ナンスの項目に、ブロック１０２２からコピーした「Ｂ５５．．５５」が設定される。ブロック１０１３は、取引ＩＤリストの項目に「０」が設定される。直前ハッシュ値と、ナンスとは、例えば、２５６ビットである。
【００９７】
図１０の説明に戻り、Ｂ社側のブロックチェーン生成装置１００は、例えば、Ａ社とＢ社とが合併したことに応じて、中間ブロックとなるブロック１０２３を生成する。以下の説明では、Ｂ社側のブロックチェーン生成装置１００を「ブロックチェーン生成装置１００Ｂ」と表記する場合がある。
【００９８】
ブロックチェーン生成装置１００Ｂは、ブロック１０２３の直前ハッシュ値の項目の値に、直前のブロック１０２２に設定されたハッシュ値「ｈａｓｈＢ」を設定する。また、ブロックチェーン生成装置１００Ｂは、ブロック１０２３のナンスの項目の値に、チェーンＡのブロック１０１２に設定されたハッシュ値「ｈａｓｈＡ」を設定する。ブロック１０２３の取引ＩＤリストの項目は空である。
【００９９】
ここでは、ブロックチェーン生成装置１００Ｂが、ブロック１０２３のナンスの項目の値に、チェーンＡのブロック１０１２に設定されたハッシュ値「ｈａｓｈＡ」を設定する場合について説明したが、これに限らない。例えば、ブロックチェーン生成装置１００Ｂが、ブロック１０２３の取引ＩＤリストの項目の値に、チェーンＡのブロック１０１２に設定されたハッシュ値「ｈａｓｈＡ」を設定する場合があってもよい。
【０１００】
ブロックチェーン生成装置１００Ｂは、生成したブロック１０２３を、チェーンＢに追加する。ここで、図１４の説明に移行し、ブロック１０２３の具体例について説明する。
【０１０１】
図１４は、ブロック１０２３の具体例を示す。図１４に示すように、ブロック１０２３は、直前ハッシュ値の項目に、ブロック１０２２からコピーした「Ｂ５５．．５５」が設定される。ブロック１０２３は、ナンスの項目に、ブロック１０１２からコピーした「Ａ１１．．１１」が設定される。ブロック１０２３は、取引ＩＤリストの項目に「０」が設定される。直前ハッシュ値と、ナンスとは、例えば、２５６ビットである。
【０１０２】
このように、ブロックチェーン生成装置１００Ａと、ブロックチェーン生成装置１００Ｂとは、ハッシュ関数に代入した場合に、同一のハッシュ値が算出されるような、ブロック１０１３と、ブロック１０２３とを生成することができる。これにより、ブロックチェーン生成装置１００Ａと、ブロックチェーン生成装置１００Ｂとは、次に、チェーンＡと、チェーンＢとに追加されるブロックが、同一になるようにすることができる。次に、図１５の説明に移行する。
【０１０３】
図１５に示すように、ブロックチェーン生成装置１００Ａは、例えば、チェーンＡにブロック１０１３を追加すると、ブロック１０１３に基づいて、新たなブロック１５１１を生成する。
【０１０４】
ブロックチェーン生成装置１００Ａは、ブロック１５１１の直前ハッシュ値の項目の値に、直前のブロック１０１３をハッシュ関数に代入することにより算出されたハッシュ値「ｈａｓｈＡＢ」を設定する。また、ブロックチェーン生成装置１００Ａは、ブロック１５１１のナンスの項目の値に「ｎｏｎｃｅＡＢ」を設定する。ブロック１５１１の取引ＩＤリストの項目は空である。
【０１０５】
ハッシュ関数は、直前ハッシュ値の項目の値、ナンスの項目の値、取引ＩＤリストの項目の値が代入され、ハッシュ値を算出する。ハッシュ関数は、例えば、直前ハッシュ値の項目の値と、ナンスの項目の値とが入れ替わっても、同一のハッシュ値を算出する。ハッシュ関数は、例えば、上記式（１）または上記式（２）で表される。
【０１０６】
ブロックチェーン生成装置１００Ａは、生成したブロック１５１１を、チェーンＡに追加する。ここで、図１６の説明に移行し、ブロック１５１１の具体例について説明する。
【０１０７】
図１６は、ブロック１５１１の具体例を示す。図１６に示すように、ブロック１５１１は、直前ハッシュ値の項目に、ブロック１０１３から算出したハッシュ値「ｈ（Ａ１１．．１１，Ｂ５５．．５５，０）」が設定される。ｈ（ｐ，ｎ，ｔ）は、直前ハッシュ値ｐと、ナンスｎと、取引ＩＤリストｔとに基づいて算出されるハッシュ値を示す。ブロック１５１１は、ナンスの項目に「ＡＢ９９．．９９」が設定される。ブロック１５１１は、取引ＩＤリストの項目に「０」が設定される。直前ハッシュ値と、ナンスとは、例えば、２５６ビットである。
【０１０８】
図１５の説明に戻り、ブロックチェーン生成装置１００Ｂは、例えば、チェーンＢにブロック１０２３を追加すると、ブロック１０２３に基づいて、新たなブロック１５２１を生成する。
【０１０９】
ブロックチェーン生成装置１００Ｂは、ブロック１５２１の直前ハッシュ値の項目の値に、直前のブロック１０２３をハッシュ関数に代入することにより算出されたハッシュ値「ｈａｓｈＡＢ」を設定する。また、ブロックチェーン生成装置１００Ｂは、ブロック１５２１のナンスの項目の値に「ｎｏｎｃｅＡＢ」を設定する。ブロック１５２１の取引ＩＤリストの項目は空である。
【０１１０】
ハッシュ関数は、直前ハッシュ値の項目の値、ナンスの項目の値、取引ＩＤリストの項目の値が代入され、ハッシュ値を算出する。ハッシュ関数は、例えば、直前ハッシュ値の項目の値と、ナンスの項目の値とが入れ替わっても、同一のハッシュ値を算出する。ハッシュ関数は、例えば、上記式（１）または上記式（２）で表される。
【０１１１】
ブロックチェーン生成装置１００Ｂは、生成したブロック１５２１を、チェーンＢに追加する。ここで、図１７の説明に移行し、ブロック１５２１の具体例について説明する。
【０１１２】
図１７は、ブロック１５２１の具体例を示す。図１７に示すように、ブロック１５２１は、直前ハッシュ値の項目に、ブロック１０２３から算出したハッシュ値「ｈ（Ｂ５５．．５５，Ａ１１．．１１，０）」が設定される。ブロック１５２１は、ナンスの項目に「ＡＢ９９．．９９」が設定される。ブロック１５２１は、取引ＩＤリストの項目に「０」が設定される。直前ハッシュ値と、ナンスとは、例えば、２５６ビットである。
【０１１３】
ここで、上述したように、ハッシュ関数は、例えば、直前ハッシュ値の項目の値と、ナンスの項目の値とが入れ替わっても、同一のハッシュ値を算出する。このため、ｈ（Ａ１１．．１１，Ｂ５５．．５５，０）＝ｈ（Ｂ５５．．５５，Ａ１１．．１１，０）である。結果として、ブロック１５１１と、ブロック１５２１とが同一になる。これにより、以降は、ブロックチェーン生成装置１００Ａと、ブロックチェーン生成装置１００Ｂとは、チェーンＡと、チェーンＢとを共通化することができる。次に、図１８の説明に移行する。
【０１１４】
図１８に示すように、チェーンＡにブロック１５１１が追加され、かつ、チェーンＢにブロック１５２１が追加された後、ブロックチェーン生成装置１００Ａと、ブロックチェーン生成装置１００Ｂとが、ネットワーク２１０を介して接続される。そして、ブロックチェーン生成装置１００Ａと、ブロックチェーン生成装置１００Ｂとが、ネットワーク２１０を介して、取引に関する情報などを共有する。
【０１１５】
これにより、以降では、チェーンＡと、チェーンＢとに、同一のブロックが追加されていくようになり、チェーンＡと、チェーンＢとは、チェーンＡＢとして共通化され、利用される。また、チェーンＡと、チェーンＢとを共通化した形跡が、チェーンＡと、チェーンＢとに残っているため、後々に、チェーンＡと、チェーンＢとが共通化されたタイミングが判別可能になる。
【０１１６】
ここで、チェーンＡに追加されたブロック１５１１と、チェーンＢに追加されたブロック１５２１とは、さらに、ブロック１０１２を示すハッシュ値と、ブロック１０２２を示すハッシュ値とを有するようにしてもよい。これにより、後々、ブロック１０１２と、ブロック１０２２とについて、改ざんの有無が判定可能になる。
【０１１７】
（動作例１におけるブロックチェーン管理処理手順の一例）
次に、図１９を用いて、動作例１におけるブロックチェーン管理処理手順の一例について説明する。
【０１１８】
図１９は、動作例１におけるブロックチェーン管理処理手順の一例を示すフローチャートである。ブロックチェーン生成装置１００は、自装置が管理するブロックチェーンにおける直前ブロックのハッシュ値の項目の値に設定されたハッシュ値を取得する（ステップＳ１９０１）。
【０１１９】
次に、ブロックチェーン生成装置１００は、他装置が管理するブロックチェーンにおける直前ブロックのハッシュ値の項目の値に設定されたハッシュ値を、他装置から受信する（ステップＳ１９０２）。そして、ブロックチェーン生成装置１００は、ハッシュ値の項目に、取得したハッシュ値を設定し、かつ、ナンスの項目に、受信したハッシュ値を設定した新たなブロックを生成し、自装置が管理するブロックチェーンに追加する（ステップＳ１９０３）。
【０１２０】
次に、ブロックチェーン生成装置１００は、追加したブロックを示すハッシュ値を算出する（ステップＳ１９０４）。そして、ブロックチェーン生成装置１００は、ハッシュ値の項目に、算出したハッシュ値を設定した新たなブロックを生成し、自装置が管理するブロックチェーンに追加する（ステップＳ１９０５）。
【０１２１】
次に、ブロックチェーン生成装置１００は、他装置との協調動作を開始する（ステップＳ１９０６）。そして、ブロックチェーン生成装置１００は、ブロックチェーン管理処理を終了する。これにより、ブロックチェーン生成装置１００は、複数のブロックチェーンを共通化することができる。
【０１２２】
（ブロックチェーン生成装置１００の動作例２）
次に、図２０を用いて、ブロックチェーン生成装置１００の動作例２について説明する。動作例１は、ブロックチェーン生成システムにおいて、２つのブロックチェーンを共通化する場合についての動作例である。これに対し、動作例２は、ブロックチェーン生成システムにおいて、３以上のブロックチェーンを共通化する場合についての動作例である。
【０１２３】
図２０は、ブロックチェーン生成装置１００の動作例２を示す説明図である。図２０の例は、Ａ社とＢ社とＣ社とが合併する際、Ａ社におけるチェーンＡと、Ｂ社におけるチェーンＢと、Ｃ社におけるチェーンＣとが共通化される場合についての一例である。
【０１２４】
合併前では、Ａ社におけるチェーンＡには、ブロック２０１１，２０１２が含まれている。合併前では、Ｂ社におけるチェーンＢには、ブロック２０２１，２０２２が含まれている。合併前では、Ｃ社におけるチェーンＣには、ブロック２０３１，２０３２が含まれている。
【０１２５】
Ａ社側のブロックチェーン生成装置１００は、例えば、合併に応じて、ブロック２０１３を生成する。以下の説明では、Ａ社側のブロックチェーン生成装置１００を「ブロックチェーン生成装置１００Ａ」と表記する場合がある。ブロックチェーン生成装置１００Ａは、ブロック２０１３の直前ハッシュ値の項目の値に、直前のブロック２０１２に設定されたハッシュ値「ｈａｓｈＡ」を設定する。
【０１２６】
また、ブロックチェーン生成装置１００Ａは、チェーンＢのブロック２０２２に設定されたハッシュ値「ｈａｓｈＢ」と、チェーンＣのブロック２０３２に設定されたハッシュ値「ｈａｓｈＣ」を乗算する。ブロックチェーン生成装置１００Ａは、ブロック２０１３のナンスの項目の値に、乗算結果「ｈａｓｈＢ＊ｈａｓｈＣ」を設定する。ブロック２０１３の取引ＩＤリストの項目は空である。ブロックチェーン生成装置１００Ａは、生成したブロック２０１３を、チェーンＡに追加する。
【０１２７】
Ｂ社側のブロックチェーン生成装置１００は、例えば、合併に応じて、ブロック２０２３を生成する。以下の説明では、Ｂ社側のブロックチェーン生成装置１００を「ブロックチェーン生成装置１００Ｂ」と表記する場合がある。ブロックチェーン生成装置１００Ｂは、ブロック２０２３の直前ハッシュ値の項目の値に、直前のブロック２０２２に設定されたハッシュ値「ｈａｓｈＢ」を設定する。
【０１２８】
また、ブロックチェーン生成装置１００Ｂは、チェーンＡのブロック２０１２に設定されたハッシュ値「ｈａｓｈＡ」と、チェーンＣのブロック２０３２に設定されたハッシュ値「ｈａｓｈＣ」とを乗算する。ブロックチェーン生成装置１００Ｂは、ブロック２０２３のナンスの項目の値に、乗算結果「ｈａｓｈＡ＊ｈａｓｈＣ」を設定する。ブロック２０２３の取引ＩＤリストの項目は空である。ブロックチェーン生成装置１００Ｂは、生成したブロック２０２３を、チェーンＢに追加する。
【０１２９】
Ｃ社側のブロックチェーン生成装置１００は、例えば、合併に応じて、ブロック２０３３を生成する。以下の説明では、Ｃ社側のブロックチェーン生成装置１００を「ブロックチェーン生成装置１００Ｃ」と表記する場合がある。ブロックチェーン生成装置１００Ｃは、ブロック２０３３の直前ハッシュ値の項目の値に、直前のブロック２０３２に設定されたハッシュ値「ｈａｓｈＣ」を設定する。
【０１３０】
また、ブロックチェーン生成装置１００Ｃは、チェーンＡのブロック２０１２に設定されたハッシュ値「ｈａｓｈＡ」と、チェーンＢのブロック２０２２に設定されたハッシュ値「ｈａｓｈＢ」とを乗算する。ブロックチェーン生成装置１００Ｃは、ブロック２０３３のナンスの項目の値に、乗算結果「ｈａｓｈＡ＊ｈａｓｈＢ」を設定する。ブロック２０３３の取引ＩＤリストの項目は空である。ブロックチェーン生成装置１００Ｃは、生成したブロック２０３３を、チェーンＣに追加する。
【０１３１】
このように、ブロックチェーン生成装置１００Ａ〜１００Ｃは、ハッシュ関数に代入した場合に、同一のハッシュ値が算出されるような、ブロック２０１３と、ブロック２０２３と、ブロック２０３３とを生成することができる。これにより、ブロックチェーン生成装置１００Ａと、ブロックチェーン生成装置１００Ｂと、ブロックチェーン生成装置１００Ｃとは、次に、チェーンＡと、チェーンＢと、チェーンＣとに追加されるブロックが、同一になるようにすることができる。
【０１３２】
ブロックチェーン生成装置１００Ａは、例えば、チェーンＡにブロック２０１３を追加すると、ブロック２０１３に基づいて、新たなブロック２０１４を生成する。ブロックチェーン生成装置１００Ａは、ブロック２０１４の直前ハッシュ値の項目の値に、直前のブロック２０１３をハッシュ関数に代入することにより算出されたハッシュ値「ｈａｓｈＡＢＣ」を設定する。
【０１３３】
また、ブロックチェーン生成装置１００Ａは、ブロック２０１４のナンスの項目の値に「ｎｏｎｃｅＡＢＣ」を設定する。ブロック２０１４の取引ＩＤリストの項目は空である。ハッシュ関数は、例えば、上記式（１）で表される。ブロックチェーン生成装置１００Ａは、生成したブロック２０１４を、チェーンＡに追加する。
【０１３４】
ブロックチェーン生成装置１００Ｂは、例えば、チェーンＢにブロック２０２３を追加すると、ブロック２０２３に基づいて、新たなブロック２０２４を生成する。ブロックチェーン生成装置１００Ｂは、ブロック２０２４の直前ハッシュ値の項目の値に、直前のブロック２０２３をハッシュ関数に代入することにより算出されたハッシュ値「ｈａｓｈＡＢＣ」を設定する。
【０１３５】
また、ブロックチェーン生成装置１００Ｂは、ブロック２０２４のナンスの項目の値に「ｎｏｎｃｅＡＢＣ」を設定する。ブロック２０２４の取引ＩＤリストの項目は空である。ハッシュ関数は、例えば、上記式（１）で表される。ブロックチェーン生成装置１００Ｂは、生成したブロック２０２４を、チェーンＢに追加する。
【０１３６】
ブロックチェーン生成装置１００Ｃは、例えば、チェーンＣにブロック２０３３を追加すると、ブロック２０３３に基づいて、新たなブロック２０３４を生成する。ブロックチェーン生成装置１００Ｃは、ブロック２０３４の直前ハッシュ値の項目の値に、直前のブロック２０３３をハッシュ関数に代入することにより算出されたハッシュ値「ｈａｓｈＡＢＣ」を設定する。
【０１３７】
また、ブロックチェーン生成装置１００Ｃは、ブロック２０３４のナンスの項目の値に「ｎｏｎｃｅＡＢＣ」を設定する。ブロック２０３４の取引ＩＤリストの項目は空である。ハッシュ関数は、例えば、上記式（１）で表される。ブロックチェーン生成装置１００Ｃは、生成したブロック２０３４を、チェーンＣに追加する。
【０１３８】
ここで、上記式（１）で表されるハッシュ関数は、例えば、直前ハッシュ値の項目の値と、ナンスの項目の値とに設定される、ｈａｓｈＡとｈａｓｈＢとｈａｓｈＣとが入れ替わっても、同一のハッシュ値を算出することができる。結果として、ブロック２０１４と、ブロック２０２４と、ブロック２０３４とが同一になる。これにより、以降は、ブロックチェーン生成装置１００Ａと、ブロックチェーン生成装置１００Ｂと、ブロックチェーン生成装置１００Ｃとは、チェーンＡと、チェーンＢと、チェーンＣとを共通化することができる。
【０１３９】
（動作例２におけるブロックチェーン管理処理手順の一例）
動作例２におけるブロックチェーン管理処理手順の一例は、図１９に示した動作例１におけるブロックチェーン管理処理手順の一例と同様であるため、説明を省略する。
【０１４０】
（ブロックチェーン生成装置１００の動作例３）
次に、図２１および図２２を用いて、ブロックチェーン生成装置１００の動作例３について説明する。動作例１は、ブロックチェーン生成装置１００が、中間ブロックを生成する際、直前ブロックのハッシュ値を中間ブロックにコピーする場合についての動作例である。これに対し、動作例３は、ブロックチェーン生成装置１００が、中間ブロックを生成する際、直前ブロックを示すハッシュ値を算出して、中間ブロックに含める場合についての動作例である。
【０１４１】
図２１および図２２は、ブロックチェーン生成装置１００の動作例３を示す説明図である。図２１の例は、Ａ社とＢ社とが合併する際、Ａ社におけるチェーンＡと、Ｂ社におけるチェーンＢとが共通化される場合についての一例である。
【０１４２】
合併前では、Ａ社におけるチェーンＡには、ブロック２１１１，２１１２が含まれている。合併前では、Ｂ社におけるチェーンＢには、ブロック２１２１，２１２２が含まれている。
【０１４３】
Ａ社側のブロックチェーン生成装置１００は、例えば、合併に応じて、ブロック２１１３を生成する。以下の説明では、Ａ社側のブロックチェーン生成装置１００を「ブロックチェーン生成装置１００Ａ」と表記する場合がある。
【０１４４】
ブロックチェーン生成装置１００Ａは、ハッシュ関数を用いて直前のブロック２１１２を示すハッシュ値「ｈａｓｈＡ’」を算出する。ハッシュ関数は、例えば、上記式（１）または上記式（２）で表される。ブロックチェーン生成装置１００Ａは、算出したハッシュ値「ｈａｓｈＡ’」を、ブロック２１１３の直前ハッシュ値の項目の値に設定する。
【０１４５】
ブロックチェーン生成装置１００Ａは、ブロックチェーン生成装置１００Ｂがハッシュ関数を用いて算出した、チェーンＢのブロック２１２２を示すハッシュ値「ｈａｓｈＢ’」を、ブロックチェーン生成装置１００Ｂから受信する。ブロックチェーン生成装置１００Ａは、受信したハッシュ値「ｈａｓｈＢ’」を、ブロック２１１３のナンスの項目の値に設定する。ブロック２１１３の取引ＩＤリストの項目は空である。ブロックチェーン生成装置１００Ａは、生成したブロック２１１３を、チェーンＡに追加する。
【０１４６】
Ｂ社側のブロックチェーン生成装置１００は、例えば、合併に応じて、ブロック２１２３を生成する。以下の説明では、Ｂ社側のブロックチェーン生成装置１００を「ブロックチェーン生成装置１００Ｂ」と表記する場合がある。
【０１４７】
ブロックチェーン生成装置１００Ｂは、ハッシュ関数を用いて直前のブロック２１２２を示すハッシュ値「ｈａｓｈＢ’」を算出する。ハッシュ関数は、例えば、上記式（１）または上記式（２）で表される。ブロックチェーン生成装置１００Ｂは、算出したハッシュ値「ｈａｓｈＢ’」を、ブロック２１２３の直前ハッシュ値の項目の値に設定する。
【０１４８】
ブロックチェーン生成装置１００Ｂは、ブロックチェーン生成装置１００Ａがハッシュ関数を用いて算出した、チェーンＡのブロック２１１２を示すハッシュ値「ｈａｓｈＡ’」を、ブロックチェーン生成装置１００Ａから受信する。ブロックチェーン生成装置１００Ｂは、受信したハッシュ値「ｈａｓｈＡ’」を、ブロック２１２３のナンスの項目の値に設定する。ブロック２１２３の取引ＩＤリストの項目は空である。ブロックチェーン生成装置１００Ｂは、生成したブロック２１２３を、チェーンＢに追加する。
【０１４９】
このように、ブロックチェーン生成装置１００Ａと、ブロックチェーン生成装置１００Ｂとは、ハッシュ関数に代入した場合に、同一のハッシュ値が算出されるような、ブロック２１１３と、ブロック２１２３とを生成することができる。これにより、ブロックチェーン生成装置１００Ａと、ブロックチェーン生成装置１００Ｂとは、次に、チェーンＡと、チェーンＢとに追加されるブロックが、同一になるようにすることができる。
【０１５０】
ブロックチェーン生成装置１００Ａは、例えば、チェーンＡにブロック２１１３を追加すると、ブロック２１１３に基づいて、新たなブロック２２１１を生成する。ブロックチェーン生成装置１００Ａは、ブロック２２１１の直前ハッシュ値の項目の値に、直前のブロック２１１３をハッシュ関数に代入することにより算出されたハッシュ値「ｈａｓｈＡＢ」を設定する。
【０１５１】
また、ブロックチェーン生成装置１００Ａは、ブロック２２１１のナンスの項目の値に「ｎｏｎｃｅＡＢ」を設定する。ブロック２２１１の取引ＩＤリストの項目は空である。ハッシュ関数は、例えば、上記式（１）または上記式（２）で表される。ブロックチェーン生成装置１００Ａは、生成したブロック２２１１を、チェーンＡに追加する。
【０１５２】
ブロックチェーン生成装置１００Ｂは、例えば、チェーンＢにブロック２１２３を追加すると、ブロック２１２３に基づいて、新たなブロック２２２１を生成する。ブロックチェーン生成装置１００Ｂは、ブロック２２２１の直前ハッシュ値の項目の値に、直前のブロック２１２３をハッシュ関数に代入することにより算出されたハッシュ値「ｈａｓｈＡＢ」を設定する。
【０１５３】
また、ブロックチェーン生成装置１００Ｂは、ブロック２２２１のナンスの項目の値に「ｎｏｎｃｅＡＢ」を設定する。ブロック２２２１の取引ＩＤリストの項目は空である。ハッシュ関数は、例えば、上記式（１）または上記式（２）で表される。ブロックチェーン生成装置１００Ｂは、生成したブロック２２２１を、チェーンＢに追加する。
【０１５４】
ここで、ハッシュ関数は、例えば、直前ハッシュ値の項目の値と、ナンスの項目の値が入れ替わっても、同一のハッシュ値を算出することができる。結果として、ブロック２２１１と、ブロック２２２１とが同一になる。これにより、以降は、ブロックチェーン生成装置１００Ａと、ブロックチェーン生成装置１００Ｂとは、チェーンＡと、チェーンＢとを共通化することができる。
【０１５５】
（動作例３におけるブロックチェーン管理処理手順の一例）
次に、図２３を用いて、動作例３におけるブロックチェーン管理処理手順の一例について説明する。
【０１５６】
図２３は、動作例３におけるブロックチェーン管理処理手順の一例を示すフローチャートである。ブロックチェーン生成装置１００は、自装置が管理するブロックチェーンにおける直前ブロックを示すハッシュ値を算出する（ステップＳ２３０１）。
【０１５７】
次に、ブロックチェーン生成装置１００は、他装置が管理するブロックチェーンにおける直前ブロックを示すハッシュ値を、他装置から受信する（ステップＳ２３０２）。そして、ブロックチェーン生成装置１００は、ハッシュ値の項目に、算出したハッシュ値を設定し、かつ、ナンスの項目に、受信したハッシュ値を設定した新たなブロックを生成し、自装置が管理するブロックチェーンに追加する（ステップＳ２３０３）。
【０１５８】
次に、ブロックチェーン生成装置１００は、追加したブロックを示すハッシュ値を算出する（ステップＳ２３０４）。そして、ブロックチェーン生成装置１００は、ハッシュ値の項目に、算出したハッシュ値を設定した新たなブロックを生成し、自装置が管理するブロックチェーンに追加する（ステップＳ２３０５）。
【０１５９】
次に、ブロックチェーン生成装置１００は、他装置との協調動作を開始する（ステップＳ２３０６）。そして、ブロックチェーン生成装置１００は、ブロックチェーン管理処理を終了する。これにより、ブロックチェーン生成装置１００は、複数のブロックチェーンを共通化することができる。
【０１６０】
以上説明したように、ブロックチェーン生成装置１００によれば、自装置が管理するブロックチェーンの最新のブロックに対応する第１のハッシュ値と、他装置が管理するブロックチェーンの最新のブロックに対応する第２のハッシュ値とを取得することができる。ブロックチェーン生成装置１００によれば、自装置が管理するブロックチェーンに、第１のハッシュ値と第２のハッシュ値とを有する中間ブロックを追加することができる。ブロックチェーン生成装置１００によれば、所定の関数を用いて、自装置が管理するブロックチェーンに、複数のブロックチェーンで共通するハッシュ値を有するブロックを追加することができる。これにより、ブロックチェーン生成装置１００は、自装置が管理するブロックチェーンに、複数のブロックチェーンに共通する第３のハッシュ値を有するブロックを追加することができ、それぞれのブロックチェーンを組織間で共通化することができる。
【０１６１】
ブロックチェーン生成装置１００によれば、所定の関数として、ブロックが有する複数の項目のうち第１の項目の値と第２の項目の値とが入れ替わっても、算出されるハッシュ値が同一になる関数を用いることができる。ブロックチェーン生成装置１００によれば、第１のハッシュ値が第１の項目の値に設定され、かつ、第２のハッシュ値が第２の項目の値に設定された中間ブロックを生成することができる。これにより、ブロックチェーン生成装置１００は、それぞれのブロックチェーンに追加された中間ブロックから算出される第３のハッシュ値が同一になるようにすることができる。
【０１６２】
ブロックチェーン生成装置１００によれば、第１のハッシュ値を、ブロックの直前に連結されたブロックを示すハッシュ値が設定される第１の項目の値に設定し、第２のハッシュ値を、ナンスが設定される第２の項目の値に設定することができる。これにより、ブロックチェーン生成装置１００は、それぞれのブロックチェーンに追加された中間ブロックから算出される第３のハッシュ値が同一になるようにすることができる。
【０１６３】
ブロックチェーン生成装置１００によれば、第１のハッシュ値として、自装置が管理するブロックチェーンに中間ブロックの直前に追加されたブロックに設定されたハッシュ値をコピーしたハッシュ値を用いることができる。ブロックチェーン生成装置１００によれば、第２のハッシュ値として、他装置が管理するブロックチェーンに中間ブロックの直前に追加されたブロックに設定されたハッシュ値をコピーしたハッシュ値を用いることができる。これにより、ブロックチェーン生成装置１００は、算出済みのハッシュ値をコピーし、処理量の低減化を図ることができる。
【０１６４】
ブロックチェーン生成装置１００によれば、自装置が管理するブロックチェーンに、第３のハッシュ値のほか、それぞれのブロックチェーンに中間ブロックの直前に追加されたブロックを示す第４のハッシュ値をさらに有するブロックを追加することができる。これにより、ブロックチェーン生成装置１００は、第４のハッシュ値に基づいて、それぞれのブロックチェーンに中間ブロックの直前に追加されたブロックの改ざんの有無を判定可能にすることができる。このため、ブロックチェーン生成装置１００は、ブロックチェーン生成システム２００におけるセキュリティの向上を図ることができる。
【０１６５】
ブロックチェーン生成装置１００によれば、第１のハッシュ値として、自装置が管理するブロックチェーンに中間ブロックの直前に追加されたブロックを示すハッシュ値を用いることができる。ブロックチェーン生成装置１００によれば、第２のハッシュ値として、他装置が管理するブロックチェーンに中間ブロックの直前に追加されたブロックを示すハッシュ値を用いることができる。これにより、ブロックチェーン生成装置１００は、第１のハッシュ値に基づいて、自装置が管理するブロックチェーンに中間ブロックの直前に追加されたブロックの改ざんの有無を判定可能にすることができる。また、ブロックチェーン生成装置１００は、第２のハッシュ値に基づいて、他装置が管理するブロックチェーンに中間ブロックの直前に追加されたブロックの改ざんの有無を判定可能にすることができる。このため、ブロックチェーン生成装置１００は、ブロックチェーン生成システム２００におけるセキュリティの向上を図ることができる。
【０１６６】
ブロックチェーン生成装置１００によれば、第３のハッシュ値として、中間ブロックを示すハッシュ値を用いることができる。これにより、ブロックチェーン生成装置１００は、第３のハッシュ値に基づいて、中間ブロックの改ざんの有無を判定可能にすることができる。このため、ブロックチェーン生成装置１００は、ブロックチェーン生成システム２００におけるセキュリティの向上を図ることができる。
【０１６７】
なお、本実施の形態で説明したブロックチェーン生成方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本実施の形態で説明したブロックチェーン生成プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本実施の形態で説明したブロックチェーン生成プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１６８】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１６９】
（付記１）１以上のブロックを連結する第１のブロックチェーンと第２のブロックチェーンのそれぞれに対して、前記第１のブロックチェーンの最新のブロックに対応する第１のハッシュ値と、前記第２のブロックチェーンの最新のブロックに対応する第２のハッシュ値とを有する中間ブロックを追加する第１追加部と、
前記第１および前記第２のブロックチェーンにそれぞれ追加された前記中間ブロックが有する前記第１のハッシュ値と前記第２のハッシュ値とに基づき、前記第１および前記第２のブロックチェーンに共通する第３のハッシュ値を算出可能な関数を用いて、前記第１および前記第２のブロックチェーンに対して、前記第３のハッシュ値を有するブロックを追加する第２追加部と、
を有することを特徴とするブロックチェーン生成システム。
【０１７０】
（付記２）前記ブロックは、複数の項目を有し、
前記関数は、前記複数の項目の値に基づき、前記第３のハッシュ値を算出する関数であり、かつ、前記複数の項目のうち第１の項目の値と第２の項目の値とが入れ替わっても、算出される前記第３のハッシュ値が同一になる関数であり、
前記第１追加部は、
前記第１のブロックチェーンと前記第２のブロックチェーンのそれぞれについて、当該ブロックチェーンの最新のブロックに対応する第１のハッシュ値が前記第１の項目の値に設定され、かつ、当該ブロックチェーン以外の他のブロックチェーンの最新のブロックに対応する第２のハッシュ値が前記第２の項目の値に設定された前記中間ブロックを追加する、ことを特徴とする付記１に記載のブロックチェーン生成システム。
【０１７１】
（付記３）前記ブロックが有する前記第１の項目は、前記ブロックの直前に連結されたブロックを示すハッシュ値が設定される項目であり、
前記ブロックが有する前記第２の項目は、ナンスが設定される項目である、ことを特徴とする付記２に記載のブロックチェーン生成システム。
【０１７２】
（付記４）前記第１追加部は、
前記第１のブロックチェーンと前記第２のブロックチェーンのそれぞれについて、当該ブロックチェーンの最新のブロックに設定された第１のハッシュ値と、当該ブロックチェーン以外の他のブロックチェーンの最新のブロックに設定された第２のハッシュ値とを有する前記中間ブロックを追加する、ことを特徴とする付記１〜３のいずれか一つに記載のブロックチェーン生成システム。
【０１７３】
（付記５）前記第２追加部は、
前記第１のブロックチェーンと前記第２のブロックチェーンのそれぞれについて、前記第３のハッシュ値のほか、前記第１のブロックチェーンと前記第２のブロックチェーンのそれぞれに中間ブロックの直前に追加されたブロックを示す第４のハッシュ値をさらに有するブロックを追加する、ことを特徴とする付記４に記載のブロックチェーン生成システム。
【０１７４】
（付記６）前記第１追加部は、
前記第１のブロックチェーンと前記第２のブロックチェーンのそれぞれについて、当該ブロックチェーンの最新のブロックを示す第１のハッシュ値と、当該ブロックチェーン以外の他のブロックチェーンの最新のブロックを示す第２のハッシュ値とを有する前記中間ブロックを追加する、ことを特徴とする付記１に記載のブロックチェーン生成システム。
【０１７５】
（付記７）前記第３のハッシュ値は、前記中間ブロックを示すハッシュ値である、ことを特徴とする付記１〜６のいずれか一つに記載のブロックチェーン生成システム。
【０１７６】
（付記８）１以上のブロックを連結する第１のブロックチェーンと第２のブロックチェーンのそれぞれに対して、前記第１のブロックチェーンの最新のブロックに対応する第１のハッシュ値と、前記第２のブロックチェーンの最新のブロックに対応する第２のハッシュ値とを有する中間ブロックを追加し、
前記第１および前記第２のブロックチェーンにそれぞれ追加された前記中間ブロックが有する前記第１のハッシュ値と前記第２のハッシュ値とに基づき、前記第１および前記第２のブロックチェーンに共通する第３のハッシュ値を算出可能な関数を用いて、前記第１および前記第２のブロックチェーンに対して、前記第３のハッシュ値を有するブロックを追加する、
ことを特徴とするブロックチェーン生成方法。
【０１７７】
（付記９）コンピュータに、
１以上のブロックを連結する第１のブロックチェーンと第２のブロックチェーンのうち前記第１のブロックチェーンに対して、前記第１のブロックチェーンの最新のブロックに対応する第１のハッシュ値と、前記第２のブロックチェーンの最新のブロックに対応する第２のハッシュ値とを有する中間ブロックを追加し、
前記第１のブロックチェーンに追加された中間ブロックが有する第１のハッシュ値と第２のハッシュ値とに基づき、前記第１および前記第２のブロックチェーンに共通する第３のハッシュ値を算出可能な関数を用いて、前記第１のブロックチェーンに対して、前記第３のハッシュ値を有するブロックを追加する、
処理を実行させることを特徴とするブロックチェーン生成プログラム。
【符号の説明】
【０１７８】
１００  ブロックチェーン生成装置
１１０，１２０  ブロックチェーン
１１１，１１２，１１４，１２１，１２２，１２４，４００，９１１〜９１３，９２１〜９２３，９３１，９３２，１０１１〜１０１３，１０２１〜１０２３，１５１１，１５２１，２０１１〜２０１４，２０２１〜２０２４，２０３１〜２０３４，２１１１〜２１１３，２１２１〜２１２３，２２１１，２２２１  ブロック
１１３，１２３  中間ブロック
２００  ブロックチェーン生成システム
２０１，２０２  ノード
２１０〜２１２  ネットワーク
３００  バス
３０１  ＣＰＵ
３０２  メモリ
３０３  ネットワークＩ／Ｆ
３０４  記録媒体Ｉ／Ｆ
３０５  記録媒体
５００  記憶部
５０１  取得部
５０２  追加部
５０３  出力部
６０１  ハッシュ値算出部
６０２  ブロック生成部
６０３  統合準備部
６０４  統合部
【図１】
2019096987.tif 000003
【図２】
2019096987.tif 000004
【図３】
2019096987.tif 000005
【図４】
2019096987.tif 000006
【図５】
2019096987.tif 000007
【図６】
2019096987.tif 000008
【図７】
2019096987.tif 000009
【図８】
2019096987.tif 000010
【図９】
2019096987.tif 000011
【図１０】
2019096987.tif 000012
【図１１】
2019096987.tif 000013
【図１２】
2019096987.tif 000014
【図１３】
2019096987.tif 000015
【図１４】
2019096987.tif 000016
【図１５】
2019096987.tif 000017
【図１６】
2019096987.tif 000018
【図１７】
2019096987.tif 000019
【図１８】
2019096987.tif 000020
【図１９】
2019096987.tif 000021
【図２０】
2019096987.tif 000022
【図２１】
2019096987.tif 000023
【図２２】
2019096987.tif 000024
【図２３】
2019096987.tif 000025