(57)【要約】【課題】データの一部を変更した際に変更箇所以外は改ざんされていないことを判別できるブロックチェーン管理方法を提供する。【解決手段】ブロックチェーン管理方法は、データの変更が禁止された第１領域とデータの変更が許容された第２領域を含む第１ブロックから第２領域を除いた部分ブロックに含まれるデータの第１ハッシュを生成し、第１ブロックに含まれるデータの第２ハッシュを生成し、第１ブロックの次に追加される、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第２ブロックに第１ハッシュと第２ハッシュを追加する、処理をコンピュータが実行する。【選択図】図５
2018116509.tif 000002
【特許請求の範囲】
【請求項１】
データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第１ブロックから前記第２領域を除いた部分ブロックに含まれるデータの第１ハッシュを生成し、
前記第１ブロックに含まれるデータの第２ハッシュを生成し、
前記第１ブロックの次に追加される、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第２ブロックに前記第１ハッシュと前記第２ハッシュを追加する、
処理をコンピュータが実行するブロックチェーン管理方法。
【請求項２】
受信したリクエストがデータの登録リクエストである場合に、前記登録リクエストのデータを、変更が禁止されたデータと変更が許容されたデータに分割して前記第２ブロックにおける前記第１領域と前記第２領域のそれぞれに格納する、
処理を含むことを特徴とする請求項１に記載のブロックチェーン管理方法。
【請求項３】
受信したリクエストがデータの変更リクエストである場合に、前記第１ブロックの前記第２領域に格納されたデータを前記変更リクエストのデータに変更する、
処理を含むことを特徴とする請求項１又は２に記載のブロックチェーン管理方法。
【請求項４】
前記第１ブロックにおける前記第２領域のデータを変更した場合に、変更後のデータを含む前記第１ブロックに含まれるデータの第３ハッシュを生成し、
前記変更後のデータを含む前記第１ブロックの次に追加される、前記第２ブロックに前記第１ハッシュと前記第３ハッシュを追加する、
処理を含むことを特徴とする請求項１から３のいずれか１項に記載のブロックチェーン管理方法。
【請求項５】
データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第１ブロックに含まれるデータの第１ハッシュと、前記第１ブロックの次に追加され、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第２ブロックに含まれるデータの第２ハッシュが一致するか否かを判断し、
前記第１ハッシュと前記第２ハッシュが一致しない場合に、前記第１ブロックから前記第２領域を除いた第１部分ブロックに含まれるデータの第３ハッシュを生成し、
前記第２ブロックから前記第２領域を除いた第２部分ブロックに含まれるデータの第４ハッシュを取得し、
前記第３ハッシュと前記第４ハッシュが一致する場合に、前記第１ブロックの前記第１領域に格納されたデータが変更されていないと判断する、
処理をコンピュータが実行するブロックチェーン管理方法。
【請求項６】
前記第１ブロックの前記第１領域に格納されたデータが変更されていないと判断した場合に、前記第１ブロックを、前記第１ブロックの前記第２領域に格納されたデータが変更された第３ブロックに変更する、
処理を含むことを特徴とする請求項５に記載のブロックチェーン管理方法。
【請求項７】
データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第１ブロックから前記第２領域を除いた部分ブロックに含まれるデータの第１ハッシュを生成し、
前記第１ブロックに含まれるデータの第２ハッシュを生成し、
前記第１ブロックの次に追加される、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第２ブロックに前記第１ハッシュと前記第２ハッシュを追加する、
処理をコンピュータに実行させるブロックチェーン管理プログラム。
【請求項８】
データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第１ブロックに含まれるデータの第１ハッシュと、前記第１ブロックの次に追加され、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第２ブロックに含まれるデータの第２ハッシュが一致するか否かを判断し、
前記第１ハッシュと前記第２ハッシュが一致しない場合に、前記第１ブロックから前記第２領域を除いた第１部分ブロックに含まれるデータの第３ハッシュを生成し、
前記第２ブロックから前記第２領域を除いた第２部分ブロックに含まれるデータの第４ハッシュを取得し、
前記第３ハッシュと前記第４ハッシュが一致する場合に、前記第１ブロックの前記第１領域に格納されたデータが変更されていないと判断する、
処理をコンピュータに実行させるブロックチェーン管理プログラム。
【請求項９】
データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第１ブロックから前記第２領域を除いた部分ブロックに含まれるデータの第１ハッシュを生成し、
前記第１ブロックに含まれるデータの第２ハッシュを生成し、
前記第１ブロックの次に追加される、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第２ブロックに前記第１ハッシュと前記第２ハッシュを追加する、
処理を実行する処理部を有するブロックチェーン管理装置。
【請求項１０】
データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第１ブロックに含まれるデータの第１ハッシュと、前記第１ブロックの次に追加され、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第２ブロックに含まれるデータの第２ハッシュが一致するか否かを判断し、
前記第１ハッシュと前記第２ハッシュが一致しない場合に、前記第１ブロックから前記第２領域を除いた第１部分ブロックに含まれるデータの第３ハッシュを生成し、
前記第２ブロックから前記第２領域を除いた第２部分ブロックに含まれるデータの第４ハッシュを取得し、
前記第３ハッシュと前記第４ハッシュが一致する場合に、前記第１ブロックの前記第１領域に格納されたデータが変更されていないと判断する、
処理を実行する処理部を有するブロックチェーン管理装置。
【請求項１１】
複数のノードを含むブロックチェーン管理システムであって、
データの登録リクエストを送信する第１のノードと、
前記登録リクエストを受信した場合に、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第１ブロックから前記第２領域を除いた部分ブロックに含まれるデータの第１ハッシュを生成し、前記第１ブロックに含まれるデータの第２ハッシュを生成し、前記第１ブロックの次に追加される、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第２ブロックに前記第１ハッシュと前記第２ハッシュを追加し、前記登録リクエストのデータを、変更が禁止されたデータと変更が許容されたデータに分割して前記第２ブロックにおける前記第１領域と前記第２領域のそれぞれに格納する第２のノードと、
を有するブロックチェーン管理システム。
【請求項１２】
複数のノードを含むブロックチェーン管理システムであって、
データの変更リクエストを送信する第１のノードと、
前記変更リクエストを受信した場合に、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第１ブロックに含まれるデータの第１ハッシュと、前記第１ブロックの次に追加され、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第２ブロックに含まれるデータの第２ハッシュが一致するか否かを判断し、前記第１ハッシュと前記第２ハッシュが一致しない場合に、前記第１ブロックから前記第２領域を除いた第１部分ブロックに含まれるデータの第３ハッシュを生成し、前記第２ブロックから前記第２領域を除いた第２部分ブロックに含まれるデータの第４ハッシュを取得し、前記第３ハッシュと前記第４ハッシュが一致する場合に、前記第１ブロックの前記第１領域に格納されたデータが変更されていないと判断し、前記第１ブロックの前記第２領域に格納されたデータを前記変更リクエストのデータに変更する第２のノードと、
を有するブロックチェーン管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、ブロックチェーン管理方法、ブロックチェーン管理プログラム、ブロックチェーン管理装置、及びブロックチェーン管理システムに関する。
【背景技術】
【０００２】
ブロックチェーンと呼ばれる技術が知られている（例えば特許文献１参照）。ブロックチェーンでは複数のブロックが時系列に並べられており、各ブロックには１つ前のブロックのハッシュ値（以下、単にハッシュという）とトランザクションと呼ばれる取引に関するデータが格納されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５８５８５０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、ブロックチェーンにおいて過去のデータに個人情報や企業情報といったプライバシーに関するデータが含まれていた場合、プライバシー保護の観点から、データの一部を後から変更したいときがある。
【０００５】
そこで、１つの側面では、データの一部を変更した際に変更箇所以外は改ざんされていないことを判別できるブロックチェーン管理方法、ブロックチェーン管理プログラム、ブロックチェーン管理装置、及びブロックチェーン管理システムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
１つの実施態様では、ブロックチェーン管理方法は、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第１ブロックから前記第２領域を除いた部分ブロックに含まれるデータの第１ハッシュを生成し、前記第１ブロックに含まれるデータの第２ハッシュを生成し、前記第１ブロックの次に追加される、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第２ブロックに前記第１ハッシュと前記第２ハッシュを追加する、処理をコンピュータが実行するブロックチェーン管理方法である。
【０００７】
１つの実施態様では、ブロックチェーン管理方法は、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第１ブロックに含まれるデータの第１ハッシュと、前記第１ブロックの次に追加され、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第２ブロックに含まれるデータの第２ハッシュが一致するか否かを判断し、前記第１ハッシュと前記第２ハッシュが一致しない場合に、前記第１ブロックから前記第２領域を除いた第１部分ブロックに含まれるデータの第３ハッシュを生成し、前記第２ブロックから前記第２領域を除いた第２部分ブロックに含まれるデータの第４ハッシュを取得し、前記第３ハッシュと前記第４ハッシュが一致する場合に、前記第１ブロックの前記第１領域に格納されたデータが変更されていないと判断する、処理をコンピュータが実行するブロックチェーン管理方法である。
【発明の効果】
【０００８】
データの一部を変更した際に変更箇所以外は改ざんされていないことを判別することができる。
【図面の簡単な説明】
【０００９】
【図１】図１はブロックチェーン管理システムの一例を説明するための図である。
【図２】図２はノードのハードウェア構成の一例である。
【図３】図３はノードの機能ブロック図の一例である。
【図４】図４は比較例に係るブロックチェーンの一例を説明する図である。
【図５】図５は本実施形態に係るブロックチェーンの一例を説明する図である。
【図６】図６はユーザの動作の一例を示すフローチャートである。
【図７】図７はマイナーのブロック生成に関する動作の一例を示すフローチャートである。
【図８】図８はブロック処理の一例を示すフローチャートである。
【図９】図９は新たなブロックの生成例について説明する図である。
【図１０】図１０はブロックに含まれるデータの変更例について説明する図である。
【図１１】図１１はマイナーのブロック検証及びブロック更新に関する動作の一例を示すフローチャートである。
【図１２】図１２は第２検証処理の一例を示すフローチャートである。
【図１３】図１３はブロックの検証例について説明する図である。
【図１４】図１４はｎ番目のブロックのデータ構造の例を示す図である。
【発明を実施するための形態】
【００１０】
以下、本件を実施するための形態について図面を参照して説明する。
【００１１】
図１はブロックチェーン管理システムＳの一例を説明するための図である。ブロックチェーン管理システムＳはいずれも端末装置としての複数のノード１００，１５０，２００，２５０を含んでいる。図１では、ノード１００の一例としてスマートフォンが示されている。ノード１５０の一例としてラップトップ型のPersonal Computer（ＰＣ）が示されている。尚、ノード１００，１５０はスマートフォンやＰＣに限定されず、例えばタブレット端末やウェアラブル端末であってもよい。ウェアラブル端末としては例えばスマートウォッチなどがある。一方、ノード２００，２５０の例としてデスクトップ型のＰＣやサーバが示されている。
【００１２】
ノード１００，１５０，２００，２５０は互いに通信ネットワークＮＷを介して接続されている。具体的には、ノード１００，１５０，２００，２５０はいわゆるPeer to Peer（Ｐ２Ｐ）ネットワークを利用して互いに接続されている。通信ネットワークＮＷとしては例えばLocal Area Network（ＬＡＮ）やインターネットといった有線ネットワークがある。また、ノード１００，１５０，２００，２５０間の通信の一部に無線が利用されていてもよい。例えば、図１に示すように、ノード１００とノード１５０，２００，２５０との通信に無線が利用されていてもよい。この場合、無線通信可能な領域ＡＲ内にノード１００が含まれていれば、ノード１００は携帯基地局ＢＳを介してノード１５０，２００，２５０と通信することができる。
【００１３】
次に、図２を参照して、ノード２００のハードウェア構成について説明する。尚、上述したノード１００，１５０，２５０については基本的にノード２００と同様のハードウェア構成であるため説明を省略する。
【００１４】
図２はノード２００のハードウェア構成の一例である。図２に示すように、ノード２００は、少なくともCentral Processing Unit（ＣＰＵ）２００Ａ、Random Access Memory（ＲＡＭ）２００Ｂ、Read Only Memory（ＲＯＭ）２００Ｃ及びネットワークＩ／Ｆ（インタフェース）２００Ｄを含んでいる。ノード２００は、必要に応じて、Hard Disk Drive（ＨＤＤ）２００Ｅ、入力Ｉ／Ｆ２００Ｆ、出力Ｉ／Ｆ２００Ｇ、入出力Ｉ／Ｆ２００Ｈ、ドライブ装置２００Ｉの少なくとも１つを含んでいてもよい。ＣＰＵ２００Ａからドライブ装置２００Ｉまでは、内部バス２００Ｊによって互いに接続されている。少なくともＣＰＵ２００ＡとＲＡＭ２００Ｂとが協働することによってコンピュータが実現される。
【００１５】
入力Ｉ／Ｆ２００Ｆには、入力装置７１０が接続される。入力装置７１０としては、例えばキーボードやマウスなどがある。
出力Ｉ／Ｆ２００Ｇには、表示装置７２０が接続される。表示装置７２０としては、例えば液晶ディスプレイがある。
入出力Ｉ／Ｆ２００Ｈには、半導体メモリ７３０が接続される。半導体メモリ７３０としては、例えばUniversal Serial Bus（ＵＳＢ）メモリやフラッシュメモリなどがある。入出力Ｉ／Ｆ２００Ｈは、半導体メモリ７３０に記憶されたプログラムやデータを読み取る。
入力Ｉ／Ｆ２００Ｆ及び入出力Ｉ／Ｆ２００Ｈは、例えばＵＳＢポートを備えている。出力Ｉ／Ｆ２００Ｇは、例えばディスプレイポートを備えている。
【００１６】
ドライブ装置２００Ｉには、可搬型記録媒体７４０が挿入される。可搬型記録媒体７４０としては、例えばCompact Disc（ＣＤ）−ＲＯＭ、Digital Versatile Disc（ＤＶＤ）といったリムーバブルディスクがある。ドライブ装置２００Ｉは、可搬型記録媒体７４０に記録されたプログラムやデータを読み込む。
ネットワークＩ／Ｆ２００Ｄは、例えばＬＡＮポートを備えている。ネットワークＩ／Ｆ２００Ｄは通信ネットワークＮＷと接続される。
【００１７】
上述したＲＡＭ２００Ｂには、ＲＯＭ２００ＣやＨＤＤ２００Ｅに記憶されたプログラムがＣＰＵ２００Ａによって格納される。ＲＡＭ２００Ｂには、可搬型記録媒体７４０に記録されたプログラムがＣＰＵ２００Ａによって格納される。格納されたプログラムをＣＰＵ２００Ａが実行することにより、後述する各種の機能が実現され、また、後述する各種の処理が実行される。尚、プログラムは後述するフローチャートに応じたものとすればよい。
【００１８】
次に、図３を参照して、ノード１００，１５０，２００，２５０の各機能について説明する。
【００１９】
図３はノード１００，２００の機能ブロック図の一例である。尚、ノード１５０については基本的にノード１００と同様の機能を備え、ノード２５０については基本的にノード２００と同様の機能を備えるため説明を省略する。
【００２０】
図３に示すように、ノード１００はウォレットツールＷＴを備えており、ノード２００はウォレットツールＷＴとマイニングツールＭＴを備えている。ここで、ウォレットツールＷＴはブロックチェーン（具体的にはビットコイン（登録商標）など）を用いた取引を行うために要するツールをいう。一方、マイニングツールＭＴはブロックチェーンを用いた取引の完全性や整合性を検証し、取引を承認するために要するツールをいう。
【００２１】
ここで、マイニングツールＭＴを備えずにウォレットツールＷＴを備えたノード１００はユーザと呼ばれることがある。このため、以下の説明では、ノード１００，１５０をユーザ１００，１５０と言い換えて説明する。一方、ウォレットツールＷＴとマイニングツールＭＴの両方を備えたノード２００はマイナー（発掘者）と呼ばれることがある。このため、以下の説明では、ノード２００，２５０をマイナー２００，２５０と言い換えて説明する。
【００２２】
ユーザ１００及びマイナー２００の各ウォレットツールＷＴはいずれも依頼受付部ＷＴ１と依頼送信部ＷＴ２とを備えている。例えば、データ登録依頼がユーザ１００に入力されると、ユーザ１００の依頼受付部ＷＴ１は入力されたデータ登録依頼を受け付ける。データ登録依頼は取引のデータの登録を依頼（リクエスト）する情報であり、登録対象のデータを備えている。例えば、データ変更依頼がユーザ１００に入力されると、ユーザ１００の依頼受付部ＷＴ１は入力されたデータ変更依頼を受け付ける。データ変更依頼は取引のデータの変更を依頼（リクエスト）する情報であり、変更対象のデータを特定する情報と変更後の情報（例えば、プライバシーに関する部分を秘匿する情報）を備えている。また、依頼受付部ＷＴ１がデータ登録依頼やデータ変更依頼を受け付けると、依頼送信部ＷＴ２は依頼受付部ＷＴ１が受け付けたデータ登録依頼やデータ変更依頼をＰ２Ｐで送信する。すなわち、本実施形態ではＰ２Ｐネットワークが利用されているため、ユーザ１００の依頼送信部ＷＴ２がデータ登録依頼やデータ変更依頼を送信すると、データ登録依頼やデータ変更依頼はユーザ１５０,マイナー２００，マイナー２５０に送信される。
【００２３】
次いで、マイナー２００のマイニングツールＭＴはブロック生成部ＭＴ１、ブロック検証部ＭＴ２、及びブロック更新部ＭＴ３を備えている。例えば、ユーザ１００の依頼送信部ＷＴ２がデータ登録依頼を送信すると、マイナー２００のブロック生成部ＭＴ１はデータ登録依頼を受信する。ブロック生成部ＭＴ１はデータ登録依頼を受信すると、ブロックを生成してデータ登録依頼が有するデータをそのブロックに格納する。例えば、ユーザ１００の依頼送信部ＷＴ２がデータ変更依頼を送信すると、マイナー２００のブロック生成部ＭＴ１はデータ変更依頼を受信する。ブロック生成部ＭＴ１はデータ変更依頼を受信すると、ブロックチェーンが管理するブロックの中の特定のブロックに含まれるデータの一部をデータ変更依頼が有するデータに変更する。尚、ブロックを生成することを、ブロックを発掘するということもある。
【００２４】
ブロック検証部ＭＴ２はブロック生成部ＭＴ１が生成又は変更したブロックの正当性を検証する。より詳しくは、ブロック検証部ＭＴ２はブロック生成部ＭＴ１が生成又は変更したブロックに含まれるデータの正当性を検証する。尚、ブロック検証部ＭＴ２が実行する検証処理の詳細については後述する。
【００２５】
ブロック更新部ＭＴ３はブロック検証部ＭＴ２による検証が肯定的である場合、ブロックチェーンの最後尾にブロックを追加したり、ブロックチェーンが管理する変更対象のブロックを、データを変更した後のブロックに変更したりする。尚、ブロックチェーンはユーザ１００，１５０及びマイナー２００，２５０のそれぞれに分散して共有される。ユーザ１００，１５０はブロックチェーンの中で自己が関心をもつ部分を記憶していればよいが、マイナー２００，２５０はブロックチェーンの全体を記憶していることが望ましい。尚、このような分散共有に代えて、１つのDatabase（ＤＢ）がブロックチェーンを集中管理する形式であってもよい。
【００２６】
次に、図４、図５及び図１４を参照して、本実施形態に係るブロックチェーンを比較例に係るブロックチェーンと対比して説明する。
図４は比較例に係るブロックチェーン１０の一例を説明する図である。図５は本実施形態に係るブロックチェーン２０の一例を説明する図である。図１４はｎ番目のブロックのデータ構造の例を示す図である。
【００２７】
まず、図４に示すように、ブロックチェーン１０はｎ−１番目のブロック１１と、ｎ番目のブロック１２と、ｎ＋１番目のブロック１３を含んでいる。ｎ−１番目のブロック１１は、直前に並べられたｎ−２番目のブロック（不図示）のハッシュｈ（ｎ−２）とデータｄ０を含む領域と、データｄ１を含む領域とを含んでいる。同様に、ｎ番目のブロック１２は、直前に並べられたｎ−１番目のブロック１１のハッシュｈ（ｎ−１）とデータｄ２を含む領域とデータｄ３を含む領域とを含んでいる。ｎ＋１番目のブロック１３は、直前に並べられたｎ番目のブロック１２のハッシュｈ（ｎ）とデータｄ４を含む領域と，データｄ５を含む領域とを含んでいる。尚、データｄ０〜ｄ５を含む各領域はいずれもデータの変更が禁止されている。
【００２８】
また、ブロック１１の下側に示すように、ハッシュｈ（ｎ−１）はｎ−１番目のブロック１１に含まれるハッシュｈ（ｎ−２）とデータｄ０，ｄ１と関数Ｈ（）とに基づいて生成される。同様に、ハッシュｈ（ｎ）はｎ番目のブロック１２に含まれるハッシュｈ（ｎ−１）とデータｄ２，ｄ３と関数Ｈ（）とに基づいて生成される。関数Ｈ（）はブロックに含まれる要素からハッシュを生成するハッシュ関数である。例えばハッシュｈ（ｎ）であれば、ｎ番目のブロック１２の全要素であるハッシュｈ（ｎ−１）とデータｄ２，ｄ３に対し関数Ｈ（）を利用することでハッシュｈ（ｎ）が生成される。ハッシュｈ（ｎ−１）についてもハッシュｈ（ｎ）の生成と同じである。
【００２９】
ここで、図４に示すブロックチェーン１０において、例えばブロック１１に含まれるデータｄ１を削除してハッシュｈ（ｎ−１）を新たに生成すると、ハッシュｈ（ｎ−１）はデータｄ１を除外したハッシュｈ（ｎ−２）とデータｄ０と関数Ｈ（）とに基づいて生成される。一方、ｎ番目のブロック１２には既に生成されたハッシュｈ（ｎ−１）が含まれている。データｄ１を削除した後に生成されたハッシュｈ（ｎ−１）とデータｄ１を削除する前に生成されたブロック１２のハッシュｈ（ｎ−１）とを比較すると、両者は一致しない。このように、２つのハッシュｈ（ｎ−１）が相違することによりブロック１１に対して何等かの変更が加えられたと判断することができる。言い換えれば、２つの（ｎ−１）ハッシュが相違しなければ、ブロック１１に対して何の変更も加えられていないと判断することができる。すなわち、ブロック１１の正当性を検証することができる。
【００３０】
このように、比較例に係るブロックチェーン１０では仮にデータが変更されると変更されたデータを含むブロック１１が検出される仕組みが採用されている。したがって、仮にデータに対して改ざんといった不正な変更があっても、そのデータを含むブロック１１が容易に検出される。このため、データを不正に変更する利点はほとんどなく、データの変更が抑止される。しかしながら、データに対して正当な変更が求められる場合には、変更されたデータを含むブロックが検出される必要はなく、この比較例の仕組みを採用することはできない。
【００３１】
そこで、本実施形態に係るブロックチェーン２０は、図５に示すように、ｎ−１番目のブロック２１と、ｎ番目のブロック２２と、ｎ＋１番目のブロック２３を含んでいる。ｎ−１番目のブロック２１は、直前に並べられたｎ−２番目のブロック（不図示）が含む全要素のハッシュｈ（ｎ−２）とｎ−２番目のブロックが含む一部要素のハッシュｈ（ｎ−２）´と変更禁止領域ＡＲ０と変更許容領域ＡＲ１とを含んでいる。同様に、ｎ番目のブロック２２は、直前に並べられたｎ−１番目のブロック２１が含む全要素のハッシュｈ（ｎ−１）とｎ−１番目のブロック２１が含む一部要素のハッシュｈ（ｎ−１）´と変更禁止領域ＡＲ２と変更許容領域ＡＲ３とを含んでいる。ｎ＋１番目のブロック２３は、直前に並べられたｎ番目のブロック２２が含む全要素のハッシュｈ（ｎ）とｎ番目のブロック２２が含む一部要素のハッシュｈ（ｎ）´と変更禁止領域ＡＲ４と変更許容領域ＡＲ５とを含んでいる。
【００３２】
ここで、全要素とは例えばｎ番目のブロック２２であれば、ハッシュｈ（ｎ−１）とハッシュｈ（ｎ−１）´と変更禁止領域ＡＲ２に格納されたデータと変更許容領域ＡＲ３に格納されたデータとをいう。一部要素とは全要素から変更許容領域ＡＲ３に格納されたデータを除いた要素をいう。ｎ−１番目のブロック２１及びｎ＋１番目のブロック２３についてもｎ番目のブロック２２と同じである。また、上述した変更禁止領域ＡＲ０，ＡＲ２，ＡＲ４は変更を禁止するデータを格納する領域であり、変更許容領域ＡＲ１，ＡＲ３，ＡＲ５は変更を許容するデータを格納する領域である。例えば、変更禁止領域ＡＲ０，ＡＲ２，ＡＲ４にはプライバシーに関しない非プライバシーデータが格納され、変更許容領域ＡＲ１，ＡＲ３，ＡＲ５にはプライバシーに関するプライバシーデータが格納される。一例としてｎ番目のブロック２２について図１４を参照して説明すると、変更禁止領域ＡＲ２としての変更禁止フィールドには非プライバシーデータが格納され、変更許容領域ＡＲ３としての変更許容フィールドにはプライバシーデータが格納される。一方で、上述した２つのハッシュｈ（ｎ−１）及びハッシュｈ（ｎ−１）´はハッシュフィールドに格納される。ｎ−１番目のブロック２１及びｎ＋１番目のブロック２３についてもｎ番目のブロック２２と同じである。尚、変更許容領域ＡＲ１，ＡＲ３，ＡＲ５はそれぞれブロック２１，２２，２３内に予め設けておく。
【００３３】
ハッシュｈ（ｎ−１）はｎ−１番目のブロック２１に含まれるハッシュｈ（ｎ−２）とブロック２１に含まれるハッシュｈ（ｎ−２）´と変更禁止領域ＡＲ０に格納されたデータと変更許容領域ＡＲ１に格納されたデータと関数Ｈ（）とに基づいて生成される。すなわち、ハッシュｈ（ｎ−１）はｎ−１番目のブロック２１の全要素と関数Ｈ（）とに基づいて生成される。一方、ハッシュｈ（ｎ−１）´はｎ−１番目のブロック２１に含まれるハッシュｈ（ｎ−２）とブロック２１に含まれるハッシュｈ（ｎ−２）´と変更禁止領域ＡＲ０に格納されたデータと関数Ｈ（）とに基づいて生成される。すなわち、ハッシュｈ（ｎ−１）´はｎ−１番目のブロック２１の全要素から変更許容領域ＡＲ１に格納されたデータを除いた一部要素と関数Ｈ（）とに基づいて生成される。同様に、ハッシュｈ（ｎ）はｎ番目のブロック２２に含まれるハッシュｈ（ｎ−１）とブロック２２に含まれるハッシュｈ（ｎ−１）´と変更禁止領域ＡＲ２に格納されたデータと変更許容領域ＡＲ３に格納されたデータと関数Ｈ（）とに基づいて生成される。すなわち、ハッシュｈ（ｎ）はｎ番目のブロック２２の全要素と関数Ｈ（）とに基づいて生成される。ハッシュｈ（ｎ）´はｎ−１番目のブロック２２に含まれるハッシュｈ（ｎ−１）とブロック２２に含まれるハッシュｈ（ｎ−１）´と変更禁止領域ＡＲ２に格納されたデータと関数Ｈ（）とに基づいて生成される。すなわち、ハッシュｈ（ｎ）´はｎ番目のブロック２２の全要素から変更許容領域ＡＲ３に格納されたデータを除いた一部要素と関数Ｈ（）とに基づいて生成される。
【００３４】
本実施形態の仕組みによれば、データが変更されなければ比較例と同様の手法によりデータが変更されていないことを検証することができる。一方、正当な変更によりデータが変更された場合には、変更されたデータを含むブロックの全要素から、変更されたデータを除いた一部の要素を利用してハッシュ（例えばｈ（ｎ−１）´やｈ（ｎ）´）が生成される。したがって、一部の要素を利用して生成されたハッシュと変更されたデータを含むブロックの直後に並べられたブロックが含む対応するハッシュが一致すれば、変更されたデータ以外のデータが変更されていないことを検証することができる。すなわち、データの一部を変更しても、ブロックの正当性を確保することができ、正当なブロックチェーンが維持される。
【００３５】
以下、図６から図１２までを参照して、本実施形態に係るブロックチェーン２０を利用した処理の詳細を説明する。
【００３６】
まず、図６を参照して、ユーザ１００の動作について説明する。尚、ユーザ１５０の動作はユーザ１００の動作と基本的に同じであるため、その説明を省略する。図６はユーザ１００の動作の一例を示すフローチャートである。まず、依頼受付部ＷＴ１は依頼があるまで待機する（ステップＳ１０１：ＮＯ）。より詳しくは、依頼受付部ＷＴ１はデータ登録依頼やデータ変更依頼があるまで待機する。依頼受付部ＷＴ１は依頼があると（ステップＳ１０１：ＹＥＳ）、依頼を受け付け（ステップＳ１０２）、依頼送信部ＷＴ２は依頼受付部ＷＴ１が受け付けた依頼を通信ネットワークＮＷに送信する（ステップＳ１０３）。依頼送信部ＷＴ２は依頼を送信すると、処理を終える。
【００３７】
次に、図７を参照して、マイナー２００のブロック生成に関する動作について説明する。尚、マイナー２５０の動作はマイナー２００の動作と基本的に同じであるため、その説明を省略する。図７はマイナー２００のブロック生成に関する動作の一例を示すフローチャートである。まず、ブロック生成部ＭＴ１は依頼を受信するまで待機する（ステップＳ２０１：ＮＯ）。ブロック生成部ＭＴ１は依頼を受信すると（ステップＳ２０１：ＹＥＳ）、ブロック処理を実行する（ステップＳ２０２）。ここで、ブロック処理はブロックに対し依頼の種別に応じて行われる処理である。詳細は後述するが、ブロック生成部ＭＴ１がデータ登録依頼を受信した場合には、ブロック生成部ＭＴ１は新たなブロックを生成してそのブロックにデータを追加する。ブロック生成部ＭＴ１がデータ変更依頼を受信した場合には、変更対象のブロックの変更許容領域に格納されたデータをデータ変更依頼のデータに変更する。
【００３８】
また、ステップＳ２０２の処理と並行して、ブロック生成部ＭＴ１はマイナー２００とは異なる他のマイナー２５０から所定の通知があるかを監視する（ステップＳ２０３）。ここで、所定の通知とは他のマイナー２５０がブロックを生成した旨の通知やブロックを変更した旨の通知をいう。本実施形態ではＰ２Ｐネットワークが利用されているため、依頼送信部ＷＴ２が送信するデータ登録依頼やデータ変更依頼はマイナー２００だけでなくマイナー２５０にも到達する。したがって、マイナー２５０がデータ登録依頼やデータ変更依頼に基づいて、ブロックを生成したりブロックを変更したりすれば、マイナー２５０は所定の通知を送信する。これにより、マイナー２００には所定の通知が到達する。
【００３９】
ここで、所定の通知がなかった場合（ステップＳ２０３：ＮＯ）、ブロック生成部ＭＴ１は生成又は変更したブロックを送信する（ステップＳ２０４）。より詳しくは、ブロック生成部ＭＴ１は生成又は変更したブロックをブロードキャストする。これにより、ブロック生成部ＭＴ１が生成又は変更したブロックはユーザ１００，１５０及びマイナー２５０に到達する。
【００４０】
一方、所定の通知があった場合（ステップＳ２０３：ＹＥＳ）、ブロック生成部ＭＴ１はマイナー２５０が生成又は変更したブロックを受信する（ステップＳ２０５）。ステップＳ２０４又はステップＳ２０５の処理が完了すると、ブロック生成部ＭＴ１は処理を終える。
【００４１】
次に、図８から図１０までを参照して、上述したブロック処理について説明する。
図８はブロック処理の一例を示すフローチャートである。図９は新たなブロックの生成例について説明する図である。図１０はブロックに含まれるデータの変更例について説明する図である。
【００４２】
まず、上述したステップＳ２０１の処理において、ブロック生成部ＭＴ１が依頼を受信すると、図８に示すように、依頼がデータ変更依頼であるか否かを判断する（ステップＳ３０１）。依頼がデータ変更依頼でない場合（ステップＳ３０１：ＮＯ）、ブロック生成部ＭＴ１はハッシュｈ（ｎ）´を生成する（ステップＳ３０２）。言い換えれば、依頼がデータ登録依頼である場合、ブロック生成部ＭＴ１はハッシュｈ（ｎ）´を生成する。
【００４３】
具体的には、図９に示すように、まず、ブロック生成部ＭＴ１はブロックチェーンの最後尾に並べられたｎ番目のブロック３２を特定する。次に、ブロック生成部ＭＴ１は特定したブロック３２からハッシュｈ（ｎ−１）´とハッシュｈ（ｎ−１）と変更禁止領域ＡＲ２に格納された送金日を表すデータ「２０１６／３／６」と送金額を表すデータ「５００」を抽出する。さらに、ブロック生成部ＭＴ１は文字列を結合する関数ｃｏｍｂｉｎｅ（）を利用して、ハッシュｈ（ｎ−１）´とハッシュｈ（ｎ−１）と２つのデータ「２０１６／３／６」、「５００」とを結合して結合文字列を生成する。そして、ブロック生成部ＭＴ１はハッシュ関数の１つである関数ｓｈａ５１２を利用して、結合文字列からハッシュｈ（ｎ）´を生成する。
【００４４】
図８に戻り、ステップＳ３０２の処理が完了すると、次いで、ブロック生成部ＭＴ１はハッシュｈ（ｎ）を生成する（ステップＳ３０３）。具体的には、図９に示すように、ブロック生成部ＭＴ１はブロック３２からハッシュｈ（ｎ−１）´とハッシュｈ（ｎ−１）と変更禁止領域ＡＲ２に格納された送金日を表すデータ「２０１６／３／６」と送金額を表すデータ「５００」と変更許容領域ＡＲ３に格納された送金元口座を表すデータ「Ａ」と送金先口座を表すデータ「Ｃ」を抽出する。さらに、ブロック生成部ＭＴ１は関数ｃｏｍｂｉｎｅ（）を利用して、ハッシュｈ（ｎ−１）´とハッシュｈ（ｎ−１）と４つのデータ「Ａ」、「Ｃ」、「２０１６／３／６」、「５００」とを結合して結合文字列を生成する。そして、ブロック生成部ＭＴ１は関数ｓｈａ５１２を利用して、結合文字列からハッシュｈ（ｎ）を生成する。尚、ステップＳ３０２とＳ３０３の処理順序は逆であってもよい。
【００４５】
図８に戻り、ステップＳ３０３の処理が完了すると、次いで、ブロック生成部ＭＴ１はハッシュｈ（ｎ）´とハッシュｈ（ｎ）とをｎ＋１番目のブロックに追加する（ステップＳ３０４）。具体的には、図９に示すように、ブロック生成部ＭＴ１はブロックチェーンの最後尾に並べられたｎ番目のブロック３２に繋げるｎ＋１番目のブロック３３を生成し、ハッシュｈ（ｎ）´とハッシュｈ（ｎ）をｎ＋１番目のブロック３３に追加する。尚、生成されたｎ＋１番目のブロック３３は予め変更禁止領域ＡＲ４と変更許容領域ＡＲ５を備えているが、ｎ＋１番目のブロック３３の生成直後には変更禁止領域ＡＲ４と変更許容領域ＡＲ５のいずれにもまだデータ登録依頼のデータが格納されていない。また、ｎ＋１番目のブロック３３の生成については例えばステップＳ３０１のＳ３０２の間で行われてもよい。
【００４６】
図８に戻り、ステップＳ３０４の処理が完了すると、次いで、ブロック生成部ＭＴ１はデータを分割する（ステップＳ３０５）。より詳しくは、ブロック生成部ＭＴ１はデータ登録依頼が有するデータを非プライバシーデータとプライバシーデータとに分割する。尚、データ登録依頼はデータを非プライバシーデータとプライバシーデータに分割するための情報を有しており、ブロック生成部ＭＴ１は当該情報に基づいてデータを分割する。
【００４７】
ステップＳ３０５の処理が完了すると、次いで、ブロック生成部ＭＴ１は変更禁止領域ＡＲ４に非プライバシーデータを追加する（ステップＳ３０６）。例えば、データ登録依頼が有するデータ「Ａ」、「Ｄ」、「２０１６／３／９」、「３００」の中で送金日及び送金額に関する部分が非プライバシーデータに相当する場合、図９に示すように、ブロック生成部ＭＴ１は変更禁止領域ＡＲ４に送金日のデータ「２０１６／３／９」及び送金額のデータ「３００」を追加する。
【００４８】
ステップＳ３０６の処理が完了すると、次いで、ブロック生成部ＭＴ１は変更許容領域ＡＲ５にプライバシーデータを追加する（ステップＳ３０７）。例えば、データ登録依頼が有するデータ「Ａ」、「Ｄ」、「２０１６／３／９」、「３００」の中で送金元口座及び送金先口座に関する部分がプライバシーデータに相当する場合、図９に示すように、ブロック生成部ＭＴ１は変更許容領域ＡＲ５に送金元口座のデータ「Ａ」及び送金先口座のデータ「Ｄ」を追加する。ステップＳ３０７の処理が完了すると、ブロック生成部ＭＴ１は処理を終える。尚、ステップＳ３０６とＳ３０７の処理順序は逆であってもよい。
【００４９】
一方、ステップＳ３０１の処理において、依頼がデータ変更依頼である場合（ステップＳ３０１：ＹＥＳ）、ブロック生成部ＭＴ１は変更対象ブロックを取得する（ステップＳ３０８）。尚、データ変更依頼は変更対象のデータを有するため、ブロック生成部ＭＴ１は変更対象のデータに基づいて、そのデータを含むブロックを特定し、特定したブロックを変更対象ブロックとして取得する。
【００５０】
ステップＳ３０８の処理が完了すると、次いで、ブロック生成部ＭＴ１は変更許容領域ＡＲ５のデータを変更する（ステップＳ３０９）データ変更依頼が変更対象のデータを特定する情報を備えているため、ブロック生成部ＭＴ１は当該情報に基づいて変更対象のデータを特定し、プライバシーデータに相当する部分（具体的には送金元口座及び送金先口座）のデータを特定の記号（例えば「＊」など）に変更する。したがって、図１０に示すように、ブロック生成部ＭＴ１がｎ番目のブロック３２を取得した場合、ブロック３２における変更許容領域ＡＲ５の送金元口座のデータ及び送金先口座のデータを特定の記号に変更する。これにより、プライバシーに関する部分が秘匿され、プライバシーが確保される。ステップＳ３０９の処理が完了すると、ブロック生成部ＭＴ１は変更後のデータを含むブロック３２に含まれる全要素のハッシュを生成し、変更後のデータを含むブロック３２の次に追加される、ブロック３３に一部要素のハッシュと生成した全要素のハッシュを追加して処理を終える。
【００５１】
次に、図１１を参照して、マイナー２００のブロック検証及びブロック更新に関する動作について説明する。尚、マイナー２５０の動作はマイナー２００の動作と基本的に同じであるため、その説明を省略する。図１１はマイナー２００のブロック検証及びブロック更新に関する動作の一例を示すフローチャートである。
【００５２】
ブロック生成部ＭＴ１が処理を終えると、ブロック検証部ＭＴ２は検証対象のブロックがデータ変更に関するブロックであるか否かを判断する（ステップＳ４０１）。図７のステップＳ２０４及びＳ２０５を参照して説明したように、ブロック生成部ＭＴ１自身がブロックを生成したり変更したりする一方で、ブロック生成部ＭＴ１はマイナー２５０が生成したブロックを受信したり、マイナー２５０が変更したブロックを受信したりする。ブロック検証部ＭＴ２はブロック生成部ＭＴ１から入力されたブロックの処理過程を特定し、検証対象のブロックがデータ変更に関するブロックであるか否かを判断する。
【００５３】
検証対象のブロックがデータ変更に関するブロックでない場合（ステップＳ４０１：ＮＯ）、ブロック検証部ＭＴ２は第１検証処理を実行する（ステップＳ４０２）。第１検証処理は生成されたブロックの正当性を検証する処理である。特に、第１検証処理は、検証対象のブロックの直前に連鎖したブロックから計算されるハッシュと、検証対象のブロックに記録された、検証対象のブロックの直前に連鎖したブロックのハッシュとが一致するか否かを確認することにより行われる。
【００５４】
ステップＳ４０２の処理が完了すると、次いで、ブロック検証部ＭＴ２は検証ＯＫであるか否かを判断する（ステップＳ４０３）。すなわち、ブロック検証部ＭＴ２は検証が肯定的であるか否かを判断する。例えば、ブロック検証部ＭＴ２は検証対象のブロックの直前に連鎖したブロックから計算されるハッシュと、検証対象のブロックに記録された、検証対象のブロックの直前に連鎖したブロックのハッシュとを比較し、一致した場合は、ブロック検証部ＭＴ２は検証ＯＫであると判断する。逆に、検証対象のブロックの直前に連鎖したブロックから計算されるハッシュと、検証対象のブロックに記録された、検証対象のブロックの直前に連鎖したブロックのハッシュとを比較し、一致しない場合は、ブロック検証部ＭＴ２は検証ＮＧであると判断する。
【００５５】
ここで、検証ＯＫである場合（ステップＳ４０３：ＹＥＳ）、ブロック更新部ＭＴ３はブロックチェーンにブロックを追加し（ステップＳ４０４）、ステップＳ４０１の処理に戻って待機する。一方、検証ＮＧである場合（ステップＳ４０３：ＮＯ）、ブロック更新部ＭＴ３はステップＳ４０４の処理をスキップし、ステップＳ４０１の処理に戻って待機する。これにより、データ登録依頼が有するデータを含む新たなブロックが既存のブロックチェーンの最後尾に追加されて、新たなブロックチェーンに更新される。
【００５６】
一方、検証対象のブロックがデータ変更に関するブロックである場合（ステップＳ４０１：ＹＥＳ）、ブロック検証部ＭＴ２は第２検証処理を実行する（ステップＳ４０５）。具体的には、検証対象のブロックがブロック生成部ＭＴ１によって変更されたブロックであったり、マイナー２５０によって変更されたブロックであったりする場合、ブロック検証部ＭＴ２は第２検証処理を実行する。すなわち、第２検証処理は変更されたブロックの正当性を検証する処理である。尚、第２検証処理の詳細については後述する。
【００５７】
ステップＳ４０５の処理が完了すると、次いで、ブロック検証部ＭＴ２は検証ＯＫであるか否かを判断する（ステップＳ４０６）。すなわち、ブロック検証部ＭＴ２は検証が肯定的であるか否かを判断する。ここで、検証ＯＫである場合（ステップＳ４０６：ＹＥＳ）、ブロック更新部ＭＴ３はブロックチェーンのブロックを変更し（ステップＳ４０７）、ステップＳ４０１の処理に戻って待機する。これにより、変更前のデータを含むブロックが、変更後のデータを含むブロックに更新される。一方、検証ＮＧである場合（ステップＳ４０６：ＮＯ）、ブロック更新部ＭＴ３はステップＳ４０７の処理をスキップし、ステップＳ４０１の処理に戻って待機する。
【００５８】
次に、図１２及び図１３を参照して、上述した第２検証処理について説明する。
図１２は第２検証処理の一例を示すフローチャートである。図１３はブロックの検証例について説明する図である。
【００５９】
まず、上述したステップＳ４０１の処理において、検証対象のブロックがデータ変更に関するブロックである場合、図１２に示すように、ブロック検証部ＭＴ２はハッシュｈ＾（ｎ）を生成する（ステップＳ５０１）。具体的には、図１３の下側に示すように、まず、ブロック検証部ＭＴ２は変更対象であるｎ番目のブロック３２を特定する。次に、ブロック検証部ＭＴ２は特定したブロック３２からハッシュｈ（ｎ−１）´とハッシュｈ（ｎ−１）と変更禁止領域ＡＲ２に格納された送金日を表すデータ「２０１６／３／６」と送金額を表すデータ「５００」と変更許容領域ＡＲ３に格納された変更後の２つのデータ「＊＊＊＊」、「＊＊＊＊」を抽出する。さらに、ブロック検証部ＭＴ２は関数ｃｏｍｂｉｎｅ（）を利用して、ハッシュｈ（ｎ−１）´とハッシュｈ（ｎ−１）と４つのデータ「２０１６／３／６」、「５００」、「＊＊＊＊」、「＊＊＊＊」とを結合して結合文字列を生成する。そして、ブロック検証部ＭＴ２は関数ｓｈａ５１２を利用して、結合文字列からハッシュｈ＾（ｎ）を生成する。
【００６０】
ステップＳ５０１の処理が完了すると、次いで、ブロック検証部ＭＴ２はｎ＋１番目のブロックからハッシュｈ（ｎ）を取得し（ステップＳ５０２）、ハッシュｈ＾（ｎ）とハッシュｈ（ｎ）を比較して一致するか否かを判断する（ステップＳ５０３）。本実施形態では、ハッシュｈ＾（ｎ）は変更後のデータを利用して生成されている一方、ハッシュｈ（ｎ）は変更前のデータを利用して生成されているため、ハッシュｈ＾（ｎ）とハッシュｈ（ｎ）は相違する。例えば、変更前のデータと変更後のデータが同じである場合、すなわち、単に同じデータに更新されたにすぎない場合には、ハッシュｈ＾（ｎ）とハッシュｈ（ｎ）は一致する。
【００６１】
ここで、ハッシュｈ＾（ｎ）とハッシュｈ（ｎ）が一致しない場合（ステップＳ５０３：ＮＯ）、ブロック検証部ＭＴ２はハッシュｈ＾（ｎ）´を生成する（ステップＳ５０４）。具体的には、図１３の上側に示すように、まず、ブロック検証部ＭＴ２は変更対象であるｎ番目のブロック３２を特定する。次に、ブロック検証部ＭＴ２は特定したブロック３２からハッシュｈ（ｎ−１）´とハッシュｈ（ｎ−１）と変更禁止領域ＡＲ２に格納された送金日を表すデータ「２０１６／３／６」と送金額を表すデータ「５００」を抽出する。さらに、ブロック検証部ＭＴ２は関数ｃｏｍｂｉｎｅ（）を利用して、ハッシュｈ（ｎ−１）´とハッシュｈ（ｎ−１）と２つのデータ「２０１６／３／６」、「５００」とを結合して結合文字列を生成する。そして、ブロック検証部ＭＴ２は関数ｓｈａ５１２を利用して、結合文字列からハッシュｈ＾（ｎ）´を生成する。
【００６２】
ステップＳ５０４の処理が完了すると、次いで、ブロック検証部ＭＴ２はｎ＋１番目のブロックからハッシュｈ（ｎ）´を取得し（ステップＳ５０５）、ハッシュｈ＾（ｎ）´とハッシュｈ（ｎ）´を比較して一致するか否かを判断する（ステップＳ５０６）。本実施形態では、ハッシュｈ＾（ｎ）´は変更されていないデータを利用して生成されているため、ハッシュｈ＾（ｎ）´とハッシュｈ（ｎ）´は一致する。例えば、変更禁止領域ＡＲ２に格納されたデータが改ざんなどにより変更されていると、ハッシュｈ＾（ｎ）´とハッシュｈ（ｎ）´は相違する。
【００６３】
ここで、ハッシュｈ＾（ｎ）´とハッシュｈ（ｎ）´が一致する場合（ステップＳ５０６：ＹＥＳ）、ブロック検証部ＭＴ２は変更禁止領域ＡＲ２に格納されたデータが変更されていないと判断し、検証結果に検証ＯＫを格納する（ステップＳ５０７）。尚、上述したステップＳ５０３の処理において、ハッシュｈ＾（ｎ）とハッシュｈ（ｎ）が一致する場合（ステップＳ５０３：ＹＥＳ）も同様に、ブロック検証部ＭＴ２はステップＳ５０７の処理を実行する。一方、ハッシュｈ＾（ｎ）´とハッシュｈ（ｎ）´が一致しない場合（ステップＳ５０６：ＮＯ）、ブロック検証部ＭＴ２は変更禁止領域ＡＲ２に格納されたデータが変更されていると判断し、検証結果に検証ＮＧを格納する（ステップＳ５０８）。これにより、後続するステップＳ４０６の処理（図１１参照）において、ブロック検証部ＭＴ２は検証ＯＫであるか否かを判断することができる。
【００６４】
以上、本実施形態によれば、ブロックチェーン管理装置としてのマイナー２００はブロック生成部ＭＴ１とブロック検証部ＭＴ２とブロック更新部ＭＴ３を備えている。ブロック生成部ＭＴ１は、変更禁止領域ＡＲ２と変更許容領域ＡＲ３を含むｎ番目のブロック３２から変更許容領域ＡＲ３を除いた部分に含まれるデータのハッシュｈ（ｎ）´と、ブロック３２に含まれるデータのハッシュｈ（ｎ）を生成する。さらに、ブロック生成部ＭＴ１は、ブロック３２の次に追加される、変更禁止領域ＡＲ４と変更許容領域ＡＲ５を含むｎ＋１番目のブロック３３にハッシュｈ（ｎ）´とハッシュｈ（ｎ）を追加する。例えば、ブロック生成部ＭＴ１は、ブロック３２直後に連鎖する、変更禁止領域ＡＲ４と変更許容領域ＡＲ５を含むｎ＋１番目のブロック３３にハッシュｈ（ｎ）´とハッシュｈ（ｎ）を追加する。ハッシュｈ（ｎ）´とハッシュｈ（ｎ）が追加されたブロック３３をマイナー２００が管理することによりデータの一部を正当な理由で変更することができる。
【００６５】
また、ブロック検証部ＭＴ２はブロック３２に含まれるデータのハッシュｈ＾（ｎ）と、ブロック３２の次に追加され、変更禁止領域ＡＲ４と変更許容領域ＡＲ５をブロック３３に含まれるデータのハッシュｈ（ｎ）が一致するか否かを判断する。例えば、ブロック検証部ＭＴ２はブロック３２に含まれるデータのハッシュｈ＾（ｎ）と、ブロック３２直後に連鎖し、変更禁止領域ＡＲ４と変更許容領域ＡＲ５をブロック３３に含まれるデータのハッシュｈ（ｎ）が一致するか否かを判断する。また、ブロック検証部ＭＴ２はハッシュｈ＾（ｎ）とハッシュｈ（ｎ）が一致しない場合、ブロック３２から変更許容領域ＡＲ３を除いた部分に含まれるデータのハッシュｈ＾（ｎ）´を生成し、ブロック３３から変更許容領域ＡＲ５を除いた部分に含まれるデータのハッシュｈ（ｎ）´を取得する。そして、ブロック検証部ＭＴ２はハッシュｈ＾（ｎ）´とハッシュｈ（ｎ）´が一致する場合に、ブロック３２の変更禁止領域ＡＲ４に格納されたデータが変更されていないと判断する。ブロック更新部ＭＴ３はブロック３２の変更禁止領域ＡＲ４に格納されたデータが変更されていないと判断した場合に、ブロック３２を、ブロック３２の変更許容領域ＡＲ３に格納されたデータが変更されたブロックに変更する。これにより、変更禁止領域ＡＲ２に格納されたデータが変更されていないことを検証することができる。
【００６６】
以上、本発明の好ましい実施形態について詳述したが、本発明に係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【００６７】
特に、本実施形態では１つの変更禁止領域に２つのデータを格納し、１つの変更許容領域に２つのデータを格納した実施形態を説明したが、このような実施形態に特に限定されない。例えば格納するデータ毎に複数の変更禁止領域と複数の変更許容領域を１つのブロックに設けるようにしてもよい。この場合、ブロックの全要素のハッシュを生成するとともに、ブロックの全要素から複数の変更許容領域のそれぞれに格納されたデータを除いた一部の要素のハッシュを生成することにより、本実施形態の効果と同様の効果を得ることができる。尚、複数の変更許容領域については例えばプライバシーの重要度を関連付けるようにしてもよい。
【００６８】
なお、以上の説明に関して更に以下の付記を開示する。
（付記１）データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第１ブロックから前記第２領域を除いた部分ブロックに含まれるデータの第１ハッシュを生成し、前記第１ブロックに含まれるデータの第２ハッシュを生成し、前記第１ブロックの次に追加される、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第２ブロックに前記第１ハッシュと前記第２ハッシュを追加する、処理をコンピュータが実行するブロックチェーン管理方法。
（付記２）受信したリクエストがデータの登録リクエストである場合に、前記登録リクエストのデータを、変更が禁止されたデータと変更が許容されたデータに分割して前記第２ブロックにおける前記第１領域と前記第２領域のそれぞれに格納する、処理を含むことを特徴とする付記１に記載のブロックチェーン管理方法。
（付記３）受信したリクエストがデータの変更リクエストである場合に、前記第１ブロックの前記第２領域に格納されたデータを前記変更リクエストのデータに変更する、処理を含むことを特徴とする付記１又は２に記載のブロックチェーン管理方法。
（付記４）前記第１ブロックにおける前記第２領域のデータを変更した場合に、変更後のデータを含む前記第１ブロックに含まれるデータの第３ハッシュを生成し、前記変更後のデータを含む前記第１ブロックの次に追加される、前記第２ブロックに前記第１ハッシュと前記第３ハッシュを追加する、処理を含むことを特徴とする付記１から３のいずれか１項に記載のブロックチェーン管理方法。
（付記５）データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第１ブロックに含まれるデータの第１ハッシュと、前記第１ブロックの次に追加され、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第２ブロックに含まれるデータの第２ハッシュが一致するか否かを判断し、前記第１ハッシュと前記第２ハッシュが一致しない場合に、前記第１ブロックから前記第２領域を除いた第１部分ブロックに含まれるデータの第３ハッシュを生成し、前記第２ブロックから前記第２領域を除いた第２部分ブロックに含まれるデータの第４ハッシュを取得し、前記第３ハッシュと前記第４ハッシュが一致する場合に、前記第１ブロックの前記第１領域に格納されたデータが変更されていないと判断する、処理をコンピュータが実行するブロックチェーン管理方法。
（付記６）前記第１ブロックの前記第１領域に格納されたデータが変更されていないと判断した場合に、前記第１ブロックを、前記第１ブロックの前記第２領域に格納されたデータが変更された第３ブロックに変更する、処理を含むことを特徴とする付記５に記載のブロックチェーン管理方法。
（付記７）データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第１ブロックから前記第２領域を除いた部分ブロックに含まれるデータの第１ハッシュを生成し、前記第１ブロックに含まれるデータの第２ハッシュを生成し、前記第１ブロックの次に追加される、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第２ブロックに前記第１ハッシュと前記第２ハッシュを追加する、処理をコンピュータに実行させるブロックチェーン管理プログラム。
（付記８）データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第１ブロックに含まれるデータの第１ハッシュと、前記第１ブロックの次に追加され、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第２ブロックに含まれるデータの第２ハッシュが一致するか否かを判断し、前記第１ハッシュと前記第２ハッシュが一致しない場合に、前記第１ブロックから前記第２領域を除いた第１部分ブロックに含まれるデータの第３ハッシュを生成し、前記第２ブロックから前記第２領域を除いた第２部分ブロックに含まれるデータの第４ハッシュを取得し、前記第３ハッシュと前記第４ハッシュが一致する場合に、前記第１ブロックの前記第１領域に格納されたデータが変更されていないと判断する、処理をコンピュータに実行させるブロックチェーン管理プログラム。
（付記９）データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第１ブロックから前記第２領域を除いた部分ブロックに含まれるデータの第１ハッシュを生成し、前記第１ブロックに含まれるデータの第２ハッシュを生成し、前記第１ブロックの次に追加される、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第２ブロックに前記第１ハッシュと前記第２ハッシュを追加する、処理を実行する処理部を有するブロックチェーン管理装置。
（付記１０）前記処理部は、受信したリクエストがデータの登録リクエストである場合に、前記登録リクエストのデータを、変更が禁止されたデータと変更が許容されたデータに分割して前記第２ブロックにおける前記第１領域と前記第２領域のそれぞれに格納する、ことを特徴とする付記８に記載のブロックチェーン管理装置。
（付記１１）前記処理部は、受信したリクエストがデータの変更リクエストである場合に、前記第１ブロックの前記第２領域に格納されたデータを前記変更リクエストのデータに変更する、ことを特徴とする付記８又は９に記載のブロックチェーン管理装置。
（付記１２）前記処理部は、前記第１ブロックにおける前記第２領域のデータを変更した場合に、変更後のデータを含む前記第１ブロックに含まれるデータの第３ハッシュを生成し、前記変更後のデータを含む前記第１ブロックの次に追加される、前記第２ブロックに前記第１ハッシュと前記第３ハッシュを追加する、ことを特徴とする付記９から１１のいずれか１項に記載のブロックチェーン管理装置。
（付記１３）データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第１ブロックに含まれるデータの第１ハッシュと、前記第１ブロックの次に追加され、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第２ブロックに含まれるデータの第２ハッシュが一致するか否かを判断し、前記第１ハッシュと前記第２ハッシュが一致しない場合に、前記第１ブロックから前記第２領域を除いた第１部分ブロックに含まれるデータの第３ハッシュを生成し、前記第２ブロックから前記第２領域を除いた第２部分ブロックに含まれるデータの第４ハッシュを取得し、前記第３ハッシュと前記第４ハッシュが一致する場合に、前記第１ブロックの前記第１領域に格納されたデータが変更されていないと判断する、処理を実行する処理部を有するブロックチェーン管理装置。
（付記１４）前記処理部は、前記第１ブロックの前記第１領域に格納されたデータが変更されていないと判断した場合に、前記第１ブロックを、前記第１ブロックの前記第２領域に格納されたデータが変更された第３ブロックに変更する、ことを特徴とする付記１３に記載のブロックチェーン管理装置。
（付記１５）複数のノードを含むブロックチェーン管理システムであって、データの登録リクエストを送信する第１のノードと、前記登録リクエストを受信した場合に、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第１ブロックから前記第１領域を除いた部分ブロックに含まれるデータの第１ハッシュを生成し、前記第１ブロックに含まれるデータの第２ハッシュを生成し、前記第１ブロックの次に追加される、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第２ブロックに前記第１ハッシュと前記第２ハッシュを追加し、前記登録リクエストのデータを、変更が禁止されたデータと変更が許容されたデータに分割して前記第２ブロックにおける前記第１領域と前記第２領域のそれぞれに格納する第２のノードと、を有するブロックチェーン管理システム。
（付記１６）複数のノードを含むブロックチェーン管理システムであって、データの変更リクエストを送信する第１のノードと、前記変更リクエストを受信した場合に、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第１ブロックに含まれるデータの第１ハッシュと、前記第１ブロックの次に追加され、データの変更を禁止する第１領域とデータの変更を許容する第２領域を含む第２ブロックに含まれるデータの第２ハッシュが一致するか否かを判断し、前記第１ハッシュと前記第２ハッシュが一致しない場合に、前記第１ブロックから前記第２領域を除いた第１部分ブロックに含まれるデータの第３ハッシュを生成し、前記第２ブロックから前記第２領域を除いた第２部分ブロックに含まれるデータの第４ハッシュを取得し、前記第３ハッシュと前記第４ハッシュが一致する場合に、前記第１ブロックの前記第１領域に格納されたデータが変更されていないと判断し、前記第１ブロックの前記第２領域に格納されたデータを前記変更リクエストのデータに変更する第２のノードと、を有するブロックチェーン管理システム。
【符号の説明】
【００６９】
Ｓ  ブロックチェーン管理システム
１００，１５０  ノード（ユーザ）
ＷＴ  ウォレットツール
ＷＴ１  依頼受付部
ＷＴ２  依頼送信部
２００，２５０  ノード（マイナー）
ＭＴ  マイニングツール
ＭＴ１  ブロック生成部
ＭＴ２  ブロック検証部
ＭＴ３  ブロック更新部
【図１】
2018116509.tif 000003
【図２】
2018116509.tif 000004
【図３】
2018116509.tif 000005
【図４】
2018116509.tif 000006
【図５】
2018116509.tif 000007
【図６】
2018116509.tif 000008
【図７】
2018116509.tif 000009
【図８】
2018116509.tif 000010
【図９】
2018116509.tif 000011
【図１０】
2018116509.tif 000012
【図１１】
2018116509.tif 000013
【図１２】
2018116509.tif 000014
【図１３】
2018116509.tif 000015
【図１４】
2018116509.tif 000016