(57)【要約】      （修正有）【課題】ファイルシステム全体で管理する１ファイルあたりの平均ファイル容量を削減する更新装置、更新方法、更新プログラム及びデータ構造を提供する。【解決手段】元ファイルを更新した更新後のファイルを分散ファイル管理システムに登録する際、更新者端末２において、差分作成部２２２が元ファイルと更新後のファイルの差分ファイルを生成し、ルートオブジェクト作成部２２３が元ファイルのＩＤと差分ファイルのＩＤを含むルートオブジェクトを生成する。作成者端末１において、分散ファイル管理クライアント１１が差分ファイルとルートオブジェクトを分散ファイル管理システムに登録させる。【選択図】図５
2020194385.tif 000002
【特許請求の範囲】
【請求項１】
分散ファイル管理システムに登録された元ファイルを更新した更新ファイルを前記分散ファイル管理システムに登録する更新装置であって、
前記元ファイルと前記更新ファイルとの差分データを生成する差分生成部と、
前記元ファイルへのリンクと前記差分データへのリンクを含むルートオブジェクトを生成するルートオブジェクト生成部と、
前記差分データと前記ルートオブジェクトを前記分散ファイル管理システムに登録するファイル管理制御部と、を備える
ことを特徴とする更新装置。
【請求項２】
請求項１に記載の更新装置であって、
前記元ファイルへのリンクは、別の更新ファイルのルートオブジェクトへのリンクである
ことを特徴とする更新装置。
【請求項３】
請求項１または２に記載の更新装置であって、
前記ルートオブジェクトは前記差分データの生成に使用したアルゴリズムの情報を含む
ことを特徴とする更新装置。
【請求項４】
請求項１ないし３のいずれかに記載の更新装置であって、
前記更新装置は分散台帳システムに属し、
前記ルートオブジェクトは、前記更新ファイルに関する情報と前記分散台帳システムにおいて実行されるコントラクトの識別子とを含み、
前記コントラクトに前記更新ファイルに関する情報と前記ルートオブジェクトへのリンクを登録する登録部と、を備える
ことを特徴とする更新装置。
【請求項５】
分散ファイル管理システムに登録された元ファイルを更新した更新ファイルを前記分散ファイル管理システムに登録する更新装置による更新方法であって、
前記元ファイルと前記更新ファイルとの差分データを生成するステップと、
前記元ファイルへのリンクと前記差分データへのリンクを含むルートオブジェクトを生成するステップと、
前記差分データと前記ルートオブジェクトを前記分散ファイル管理システムに登録するステップと、を有する
ことを特徴とする更新方法。
【請求項６】
請求項１ないし４のいずれかに記載の更新装置の各部としてコンピュータを動作させる更新プログラム。
【請求項７】
元ファイルを更新した更新ファイルのデータ構造であって、
前記元ファイルへのリンクと、
前記元ファイルと前記更新ファイルとの差分データへのリンクと、を含み、
前記元ファイルが別の更新ファイルであった場合は、前記元ファイルへのリンクは当該別の更新ファイルのデータ構造へのリンクであり、
コンピュータが、前記元ファイルへのリンクから前記元ファイルを取得し、前記差分データへのリンクから前記差分データを取得し、前記元ファイルに前記差分データを適用して前記更新ファイルを取得する処理に用いられ、前記元ファイルへのリンクが前記別の更新ファイルへのデータ構造へのリンクであった場合、前記コンピュータは、当該別の更新ファイルのデータ構造を再帰的に処理する
ことを特徴とするデータ構造。
【請求項８】
請求項７に記載のデータ構造であって、
前記更新ファイルに関する情報と、
分散台帳システムにおいて実行されるコントラクトの識別子と、を含み、
前記分散台帳システムに属する前記コンピュータが、前記コントラクトに前記更新ファイルに関する情報と当該データ構造へのリンクが登録されているか否かを調べる処理に用いられる
ことを特徴とするデータ構造。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散ファイル管理システムで管理されるファイルを更新する技術に関する。
【背景技術】
【０００２】
非中央集権型の分散ファイル管理システムとして、ＩＰＦＳ（ＩｎｔｅｒＰｌａｎｅｔａｒｙ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）が知られている（非特許文献１）。ＩＰＦＳでは、ファイルは一定の大きさのチャンクに分割されて、ＩＰＦＳに属する端末で管理される。各チャンクには、ハッシュ値から生成されるＩＤがつけられる。同じファイルを構成するチャンクはツリー状にまとめられる。ルートとなるチャンクには、ファイルを構成する各チャンクへのリンクが記載される。ルートとなるチャンクのＩＤがファイルを示すＩＤとなる。チャンクの設定サイズとファイルサイズにより分割数が決まる。チャンクサイズがファイルサイズに比べて大きい場合には、ファイルは分割されない。ここでは、分割されない場合も含めてチャンクと表現する。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Juan Benet, "IPFS - Content Addressed, Versioned, P2P File System (DRAFT3)", [online], インターネット〈 URL：https://ipfs.io/ipfs/QmR7GSQM93Cx5eAg6a6yRzNde1FQv7uL6X1o4k7zrJa3LX/ipfs.draft3.pdf 〉
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ブロックチェーンは改ざんに対する極めて強固な耐性がある。この点に着目し、ブロックチェーンと分散ファイル管理システムとを連携されることが考えられる。ブロックチェーンと分散ファイル管理システムとを連携させる場合、分散ファイル管理システムは、更新後のファイルだけでなく、更新前のファイルも記録として保持し続ける必要がある。
【０００５】
しかしながら、更新後のファイルを分散ファイル管理システムに新規に登録する方法では、系全体で管理するファイル容量が大きくなるという問題があった。
【０００６】
本発明は、上記に鑑みてなされたものであり、ファイルシステム全体で管理する１ファイルあたりの平均ファイル容量を削減することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る更新装置は、分散ファイル管理システムに登録された元ファイルを更新した更新ファイルを前記分散ファイル管理システムに登録する更新装置であって、前記元ファイルと前記更新ファイルとの差分データを生成する差分生成部と、前記元ファイルへのリンクと前記差分データへのリンクを含むルートオブジェクトを生成するルートオブジェクト生成部と、前記差分データと前記ルートオブジェクトを前記分散ファイル管理システムに登録するファイル管理制御部と、を備えることを特徴とする。
【０００８】
本発明に係る更新方法は、分散ファイル管理システムに登録された元ファイルを更新した更新ファイルを前記分散ファイル管理システムに登録する更新装置による更新方法であって、前記元ファイルと前記更新ファイルとの差分データを生成するステップと、前記元ファイルへのリンクと前記差分データへのリンクを含むルートオブジェクトを生成するステップと、前記差分データと前記ルートオブジェクトを前記分散ファイル管理システムに登録するステップと、を有することを特徴とする。
【０００９】
本発明に係るデータ構造は、元ファイルを更新した更新ファイルのデータ構造であって、前記元ファイルへのリンクと、前記元ファイルと前記更新ファイルとの差分データへのリンクと、を含み、前記元ファイルが別の更新ファイルであった場合は、前記元ファイルへのリンクは当該別の更新ファイルのデータ構造へのリンクであり、コンピュータが、前記元ファイルへのリンクから前記元ファイルを取得し、前記差分データへのリンクから前記差分データを取得し、前記元ファイルに前記差分データを適用して前記更新ファイルを取得する処理に用いられ、前記元ファイルへのリンクが前記別の更新ファイルへのデータ構造へのリンクであった場合、前記コンピュータは、当該別の更新ファイルのデータ構造を再帰的に処理することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、ファイルシステム全体で管理する１ファイルあたりの平均ファイル容量を削減することができる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施形態の分散ファイル管理システムの全体構成を示す図である。
【図２】第１の実施形態の分散ファイル管理システムで管理されるファイルの構成を説明するための図である。
【図３】ルートオブジェクトのデータ構造の一例を示す図である。
【図４】第１の実施形態の分散ファイル管理システムで管理されるデータ構造の一例を示す図である。
【図５】第１の実施形態の分散ファイル管理システムの作成者端末および更新者端末の構成を示す図である。
【図６】第１の実施形態において生成したファイルを登録する処理の流れを示すシーケンス図である。
【図７】第１の実施形態において更新したファイルを登録する処理の流れを示すシーケンス図である。
【図８】第２の実施形態の分散ファイル管理システムおよびブロックチェーンシステムの全体構成を示す図である。
【図９】第２の実施形態の分散ファイル管理システムで管理されるデータ構造の一例を示す図である。
【図１０】ルートオブジェクトのデータ構造の一例を示す図である。
【図１１】第２の実施形態の分散ファイル管理システムで管理されるデータ構造の一例を示す図である。
【図１２】第２の実施形態の分散ファイル管理システムの作成者端末および更新者端末の構成を示す図である。
【図１３】第２の実施形態において生成したファイルを登録する処理の流れを示すシーケンス図である。
【図１４】第２の実施形態において更新したファイルを登録する処理の流れを示すシーケンス図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について図面を用いて説明する。
【００１３】
［第１の実施形態］
図１に示す第１の実施形態の分散ファイル管理システム１００は、分散ファイル管理システム１００に属する各端末が分散してファイルを管理する非中央集権型の分散ファイル管理システムである。分散ファイル管理システム１００は、ファイルを一定の大きさで分割し、分割後の塊（チャンク）の有向非巡回グラフ（ＤＡＧ）としてファイルを管理する。ＤＡＧのルートのハッシュ値がファイルのＩＤとなる。ファイルのＩＤを用いてファイルを要求することで、ファイルのロケーションを意識せずにファイルを取得できる。分散ファイル管理システム１００も非特許文献１と同様の方法でファイルを分散管理してよい。
【００１４】
図１の分散ファイル管理システム１００は、作成者端末１、更新者端末２、およびファイル管理制御端末３を備える。分散ファイル管理システム１００は、複数のファイル管理制御端末３を備えてもよい。分散ファイル管理システム１００に属する端末（作成者端末１、更新者端末２、およびファイル管理制御端末３）は、分散ファイル管理ネットワークを介してＰ２Ｐ（Ｐｅｅｒ  ｔｏ  Ｐｅｅｒ）接続し、各端末で分散してファイルを管理する。ここでは、ファイルを作成する作成者の使用する端末を作成者端末１とし、ファイルを更新する更新者の使用する端末を更新者端末２とした。作成者端末１がファイルを更新してもよいし、更新者端末２がファイルを作成してもよい。他の端末が作成者端末１または更新者端末２として動作してもよい。
【００１５】
（ファイル管理データ）
図２および図３を参照し、第１の実施形態の分散ファイル管理システム１００におけるファイル管理について説明する。
【００１６】
図２の例では、分散ファイル管理システム１００に登録されたファイルＦ１を更新したファイルＦ２を分散ファイル管理システム１００に登録した。
【００１７】
更新者端末２は、ファイルＦ２を分散ファイル管理システム１００に登録する際、ファイルＦ１とファイルＦ２の差分を取って差分ファイルＤ２を生成し、変更前の元ファイルＦ１と差分ファイルＤ２とを紐付けて管理するルートオブジェクトＲ２を生成する。更新者端末２は、差分ファイルＤ２およびルートオブジェクトＲ２を分散ファイル管理システム１００に登録する。
【００１８】
ルートオブジェクトＲ２は、ファイルＦ２を取得するためのオブジェクトであり、元ファイルＦ１へのリンクと差分ファイルＤ２へのリンクを保持する。具体的には、例えば、図３に示すように、ルートオブジェクトは、元ファイルと差分ファイルのそれぞれについて、リンク先のファイルの種別、分散ファイル管理システム１００上でのファイルのＩＤ（例えばファイルのハッシュ値を用いる）、およびファイルのサイズを含む。ルートオブジェクトは、差分ファイルに関して、差分ファイルの生成に用いた差分アルゴリズムの情報を含む。分散ファイル管理システム１００では、ファイルのＩＤを用いてファイルの実体を取得できる。ルートオブジェクトは、ファイルのＩＤをファイルへのリンクとして保持する。
【００１９】
本実施形態では、分散ファイル管理システム１００に登録されたルートオブジェクトＲ２のＩＤを更新後のファイルＦ２のＩＤとして扱う。ルートオブジェクトＲ２のＩＤが分かればファイルＦ２を取得できる。分散ファイル管理システム１００に属する端末（作成者端末１、更新者端末２、あるいはファイル管理制御端末３のいずれでもよい）がファイルＦ２を取得する場合、ルートオブジェクトＲ２のＩＤを用いて分散ファイル管理システム１００からルートオブジェクトＲ２を取得する。端末は、ルートオブジェクトＲ２が保持する元ファイルのＩＤおよび差分ファイルのＩＤを用いて分散ファイル管理システム１００から元ファイルＦ１および差分ファイルＤ２を取得する。端末は、元ファイルＦ１に差分ファイルＤ２を適用することで、ファイルＦ２を得る。
【００２０】
なお、元ファイルＦ１についても、元ファイルＦ１へのリンクを保持するルートオブジェクトＲ１を分散ファイル管理システム１００に登録し、ルートオブジェクトＲ１のＩＤを元ファイルＦ１のＩＤとして扱ってもよい。
【００２１】
図４に、更新を繰り返した場合に、分散ファイル管理システム１００に登録された各種ファイルの例を示す。図４の例では、分散ファイル管理システム１００には、元ファイルＦ１、元ファイルＦ１を更新したファイルＦ２のルートオブジェクトＲ２と差分ファイルＤ２、ファイルＦ２を更新したファイルＦ３のルートオブジェクトＲ３と差分ファイルＤ３、ファイルＦ３を更新したファイルＦ４のルートオブジェクトＲ４と差分ファイルＤ４、およびファイルＦ２を更新したファイルＦ５のルートオブジェクトＲ５と差分ファイルＤ５が登録されている。
【００２２】
ファイルＦ２を更新したファイルＦ３を分散ファイル管理システム１００に登録する場合、更新者端末２は、ファイルＦ２とファイルＦ３の差分ファイルＤ３およびファイルＦ２と差分ファイルＤ３とを紐付けるルートオブジェクトＲ３を分散ファイル管理システム１００に登録する。ルートオブジェクトＲ３の元ファイルのリンク先はファイルＦ２のルートオブジェクトＲ２である。
【００２３】
ファイルＦ３を取得したい場合、端末は、ファイルＦ３のルートオブジェクトＲ３のＩＤを用いて分散ファイル管理システム１００からルートオブジェクトＲ３を取得する。ルートオブジェクトＲ３には元ファイルとしてルートオブジェクトＲ２がリンクされており、差分ファイルとして差分ファイルＤ３がリンクされている。端末は、ルートオブジェクトＲ３が保持する情報を用いて、分散ファイル管理システム１００からルートオブジェクトＲ２と差分ファイルＤ３を取得する。端末は、ファイルＦ２を取得するために、ルートオブジェクトＲ２を再帰的に処理し、ルートオブジェクトＲ２が保持する情報を用いて、分散ファイル管理システム１００からファイルＦ１と差分ファイルＤ２を取得する。端末は、ファイルＦ１に差分ファイルＤ２を適用してファイルＦ２を得る。そして、端末は、ファイルＦ２に差分ファイルＤ３を適用してファイルＦ３を得る。
【００２４】
分散ファイル管理システム１００は、あるファイルを更新した更新後のファイルの有無を確認する機能を提供してもよい。この機能は分散ファイル管理システムでファイルの所在を管理するために使われる分散ハッシュテーブルを利用することで容易に実現できる。更新者は、更新前のルートオブジェクトをキーに更新後のルートオブジェクトの値を分散ハッシュテーブルに登録する。更新の有無を確認したい人は、自身が持っているルートオブジェクトのＩＤをキーに分散ハッシュテーブルに問い合わせを行い、更新後のルートオブジェクトのＩＤを取得することができる。ルートオブジェクトを取得し、そのリンクを確認することで、そのオブジェクトがたしかに問い合わせキーで使用したルートオブジェクトからの更新オブジェクトであることを確認する事ができる。
【００２５】
（端末の構成）
図５を参照し、第１の実施形態の作成者端末１および更新者端末２の構成について説明する。
【００２６】
まず、作成者端末１について説明する。図５に示す作成者端末１は、分散ファイル管理クライアント１１およびファイル作成部１２１を備える。
【００２７】
分散ファイル管理クライアント１１は、分散ファイル記憶部１１１と分散ファイル管理制御部１１２を備える。
【００２８】
分散ファイル記憶部１１１には、分散ファイル管理システム１００で分散管理されるファイルおよび分散管理のために必要な情報が記憶される。例えば、分散ファイル記憶部１１１には、ファイルを所定サイズに分割したチャンク、ファイルのＩＤとそのファイルを有する端末の識別子を対応づけたルーティング情報が記憶される。ルーティング情報は分散ファイル管理システム１００に属する各端末に分散して保持される。端末は、ファイルのＩＤを用いて分散ファイル管理システム１００にファイルを要求することで、そのＩＤに対応するファイルを保持する端末を特定し、その端末からファイルを取得できる。
【００２９】
分散ファイル管理制御部１１２は、分散ファイル管理システム１００にファイルを登録したり、分散ファイル管理システム１００からファイルを取得したり、分散ファイル記憶部１１１に記憶された情報を管理したりする。例えば、ファイル作成部１２１の作成したファイルを分散ファイル管理システム１００に登録する際、分散ファイル管理制御部１１２は、ファイルを所定のサイズのチャンクに分割してＤＡＧにまとめ、ファイルのＩＤを取得する。分散ファイル管理制御部１１２は、チャンクを分散ファイル記憶部１１１に記憶させるとともに、ファイルのＩＤと端末自身の識別子を分散ファイル管理システム１００に通知する。これにより、分散ファイル管理システム１００は、ファイルのＩＤで特定されるファイルの実体を保持する端末がわかる。分散ファイル管理制御部１１２は、ファイルのＩＤとなるルートのチャンクのＩＤだけでなく、ファイルを構成するすべてのチャンクのＩＤを分散ファイル管理システム１００に通知してもよい。
【００３０】
ファイル作成部１２１は、ファイルを作成する。ファイル作成部１２１は、ファイルを作成する市販のアプリケーションで構成できる。作成されるファイルは、例えば文書ファイル、画像ファイル、音楽ファイル、あるいは映像ファイルなど種類を問わない。
【００３１】
続いて、更新者端末２について説明する。図５に示す更新者端末２は、分散ファイル管理クライアント２１、ファイル更新部２２１、差分作成部２２２、およびルートオブジェクト作成部２２３を備える。
【００３２】
分散ファイル管理クライアント２１は、分散ファイル記憶部２１１と分散ファイル管理制御部２１２を備える。分散ファイル記憶部２１１と分散ファイル管理制御部２１２は、作成者端末１の分散ファイル記憶部１１１と分散ファイル管理制御部１１２と同様である。
【００３３】
ファイル更新部２２１は、分散ファイル管理システム１００から取得したファイルを更新する。ファイル更新部２２１は、作成者端末１のファイル作成部１２１と同じアプリケーションで構成できる。
【００３４】
差分作成部２２２は、更新前の元ファイルとファイル更新部２２１が更新した更新後のファイルと差分ファイルを生成する。元ファイルに差分ファイルを適用することで更新後のファイルを再構成できるならば、差分ファイルはどのような形式であってもよい。差分作成部２２２は、更新ファイル、元ファイルの形式に応じて複数あるアルゴリズムから最適なものを選択する。事前に拡張子と紐づけしたアルゴリズムを設定しておき、その設定に従い選択してもよいし、複数あるアルゴリズムで実際に差分ファイルを作成し、もっとも差分ファイルが小さくなるアルゴリズムを採用してもよい。差分ファイルと更新ファイルの差が小さい場合には、分散ファイル管理クライアント２１は更新ファイルそのものを登録してもよい。差分ファイルは、分散ファイル管理クライアント２１によって、分散ファイル管理システム１００に登録される。
【００３５】
ルートオブジェクト作成部２２３は、分散ファイル管理システム１００に登録された元ファイルと差分ファイルを紐付けるルートオブジェクトを生成する。具体的には、ルートオブジェクト作成部２２３は、元ファイルのＩＤと差分ファイルのＩＤを含むルートオブジェクトを生成する。差分ファイルに関して、ルートオブジェクト作成部２２３は、使用した差分アルゴリズムの情報をルートオブジェクトに記録する。差分ファイルが更新ファイルそのものである場合、ルートオブジェクト作成部２２３は、ルートオブジェクトに紐づくファイルが更新ファイルであることをルートオブジェクトに記録する。例えば、差分アルゴリズムの記載がない場合、紐づくファイルは差分ファイルではなく、更新ファイルであると判断してもよい。ルートオブジェクトは、分散ファイル管理クライアント２１によって、分散ファイル管理システム１００に登録される。
【００３６】
ファイル管理制御端末３は、分散ファイル管理クライアント１１，２１と同様の機能を有する。
【００３７】
作成者端末１および更新者端末２が備える各部は、演算処理装置、記憶装置等を備えたコンピュータにより構成して、各部の処理がプログラムによって実行されるものとしてもよい。このプログラムは作成者端末１および更新者端末２が備える記憶装置に記憶されており、磁気ディスク、光ディスク、半導体メモリ等の記録媒体に記録することも、ネットワークを通して提供することも可能である。
【００３８】
（ファイルの生成）
図６を参照し、作成者端末１がファイルを生成し、分散ファイル管理システム１００に登録する処理について説明する。
【００３９】
ステップＳ１０１において、作成者端末１は、ファイルを作成する。
【００４０】
ステップＳ１０２において、作成者端末１は、ファイルを分散ファイル管理システム１００に登録する。具体的には、作成者端末１は、ファイルをチャンクに分割してＤＡＧを構成し、ルートのチャンクのＩＤをファイルのＩＤとして取得する。分散ファイル記憶部１１１は、分割されたチャンクとそれらチャンクのＩＤを記録する。作成者端末１は、ファイルのＩＤと作成者端末１の識別子を分散ファイル管理システム１００に属する端末に通知する。
【００４１】
ステップＳ１０３において、更新者端末２はステップＳ１０２の通知を受ける。分散ファイル管理システム１００に属する他の端末もステップＳ１０２の通知を受けてもよい。
【００４２】
ステップＳ１０４において、更新者端末２は、通知された内容に基づき、更新者端末２が保持すべきルーティング情報があれば、分散ファイル記憶部２１１にルーティング情報を記憶させる。
【００４３】
以上の処理により、作成者端末１の作成したファイルが分散ファイル管理システム１００に登録される。分散ファイル管理システム１００に属する端末は、ファイルのＩＤを用いて、分散ファイル管理システム１００からファイルを取得できる。
【００４４】
（ファイルの更新）
図７を参照し、更新者端末２がファイルを更新し、分散ファイル管理システム１００に登録する処理について説明する。更新者端末２は、分散ファイル管理システム１００から更新対象の元ファイルを取得しているものとする。
【００４５】
ステップＳ２０１において、更新者端末２は、元ファイルを更新する。
【００４６】
ステップＳ２０２において、更新者端末２は、元ファイルと更新後のファイルの差分ファイルを生成する。
【００４７】
ステップＳ２０３において、更新者端末２は、元ファイルと差分ファイルとを紐付けるルートオブジェクトを作成する。例えば、更新者端末２は、元ファイルのＩＤおよび差分ファイルのＩＤを保持するルートオブジェクトを作成する。なお、差分ファイルを取得した際、差分ファイルが更新ファイルとほぼ同じサイズになるようなときは、差分ファイルではなく、更新ファイルを元ファイルと一緒にルートオブジェクトに紐付ける。
【００４８】
ステップＳ２０４において、更新者端末２は、差分ファイルとルートオブジェクトを分散ファイル管理システム１００に登録する。具体的には、更新者端末２は、差分ファイルのハッシュ値を求めて差分ファイルのＩＤとし、ルートオブジェクトのハッシュ値を求めてルートオブジェクトのＩＤとする。更新者端末２は、必要であればチャンクに分割し、差分ファイルとルートオブジェクトを分散ファイル記憶部２１１に記憶させる。更新者端末２は、差分ファイルのＩＤ、ルートオブジェクトのＩＤ、および更新者端末２の識別子を分散ファイル管理システム１００に属する端末に通知する。
【００４９】
ステップＳ２０５において、作成者端末１はステップＳ２０４の通知を受ける。分散ファイル管理システム１００に属する他の端末もステップＳ２０４の通知を受けてもよい。
【００５０】
ステップＳ２０６において、作成者端末１は、通知された内容に基づき、作成者端末１が保持すべきルーティング情報があれば、分散ファイル記憶部１１１にルーティング情報を記憶させる。
【００５１】
以上の処理により、更新者端末２の更新したファイルが分散ファイル管理システム１００に登録される。分散ファイル管理システム１００に属する端末は、ルートオブジェクトのＩＤを用いて、分散ファイル管理システム１００から更新後のファイルを取得できる。
【００５２】
以上説明したように、本実施形態によれば、元ファイルを更新した更新後のファイルを分散ファイル管理システム１００に登録する際、差分作成部２２２が元ファイルと更新後のファイルの差分ファイルを生成し、ルートオブジェクト作成部２２３が元ファイルのＩＤと差分ファイルのＩＤを含むルートオブジェクトを生成し、分散ファイル管理クライアント１１が差分ファイルとルートオブジェクトを分散ファイル管理システム１００に登録することにより、更新後のファイル全体ではなく差分ファイルが分散ファイル管理システム１００に登録されるので、分散ファイル管理システム１００全体で管理する１ファイルあたりの平均ファイル容量を削減できる。
【００５３】
［第２の実施形態］
図８に示す第２の実施形態の作成者端末１および更新者端末２は、分散ファイル管理システム１００およびブロックチェーンシステム２００に属する。分散ファイル管理システム１００は、第１の実施形態と同様である。
【００５４】
図８のブロックチェーンシステム２００は、作成者端末１、更新者端末２、およびブロックチェーン制御端末４を備える。ブロックチェーンシステム２００は、複数のブロックチェーン制御端末４を備えてもよい。ブロックチェーンシステム２００に属する端末（作成者端末１、更新者端末２、およびブロックチェーン制御端末４）は、ブロックチェーンネットワークを介してＰ２Ｐ接続し、端末間でブロックチェーンデータ（分散台帳）を共有する。ブロックチェーンデータは、ブロックチェーンシステム２００に属する端末が発行したトランザクションを含むブロックがつながったデータである。
【００５５】
本実施形態では、分散ファイル管理システム１００に登録されたファイルを得るためのルートオブジェクトのＩＤとファイルの作成者または更新者のＩＤとを管理するコントラクトをブロックチェーンシステム２００に登録する。コントラクトは、ブロックチェーン上でトランザクションを介してプログラムを実行する機構である。コントラクトを実行させるトランザクションが発行されると、ブロックチェーンシステム２００においてトランザクションがブロックにまとめられる際にプログラムが実行される。本実施形態では、ルートオブジェクトのＩＤと当該ルートオブジェクトから取得できるファイルの作成者または更新者の情報とをブロックチェーンシステム２００に登録することで、作成者および更新者の真正性を担保する。
【００５６】
（ファイル管理データ）
図９および図１０を参照し、第２の実施形態の分散ファイル管理システム１００におけるファイル管理について説明する。
【００５７】
第２の実施形態では、ルートオブジェクトＲ１〜Ｒ５は、情報ファイルＩ１〜Ｉ５へのリンクと、ブロックチェーンシステム２００に登録されたコントラクトの識別子を含む。情報ファイルＩ１は、ファイルに関する情報を保持するファイルである。ファイルに関する情報としては、例えば、ファイルの作成者および更新者など、ファイルの作成、更新、および権利に関する情報である。ブロックチェーンシステム２００に属する端末は、コントラクトの識別子を用いて、コントラクトに登録された情報にアクセスできる。
【００５８】
作成者端末１は、ファイルＦ１を分散ファイル管理システム１００に登録する際、ファイルＦ１へのリンクと、ファイルＦ１に関する情報（例えばファイルＦ１の作成者のＩＤ）を保持する情報ファイルＩ１へのリンクと、コントラクトの識別子とを含むルートオブジェクトＲ１を分散ファイル管理システム１００に登録する。ルートオブジェクトＲ１のＩＤはファイルＦ１のＩＤとして扱われる。
【００５９】
図１０の例に示すように、ルートオブジェクトは、元ファイル、差分ファイル、および情報ファイルのそれぞれについて、リンク先のファイルの種別、分散ファイル管理システム１００上でのファイルのＩＤ、およびファイルのサイズを含む。さらに、ルートオブジェクトは、データとしてコントラクトの識別子を含む。
【００６０】
なお、図１１に示すように、情報ファイルＩ１〜Ｉ５の内容をルートオブジェクトのデータに含めても良い。
【００６１】
（端末の構成）
図１２を参照し、第２の実施形態の作成者端末１および更新者端末２の構成について説明する。
【００６２】
まず、作成者端末１について説明する。図１２に示す作成者端末１は、分散ファイル管理クライアント１１、ファイル作成部１２１、ルートオブジェクト作成部１２３、およびブロックチェーンクライアント１３を備える。
【００６３】
分散ファイル管理クライアント１１とファイル作成部１２１は、第１の実施形態と同じである。ファイル作成部１２１によって作成されたファイルは、分散ファイル管理クライアント１１によって分散ファイル管理システム１００に登録される。
【００６４】
ルートオブジェクト作成部１２３は、分散ファイル管理システム１００に登録されたファイルへのリンクと、ファイルに関する情報と、コントラクトの識別子とを保持するルートオブジェクトを生成する。ルートオブジェクトは、分散ファイル管理クライアント１１によって、分散ファイル管理システム１００に登録される。
【００６５】
ルートオブジェクト作成部１２３がファイルに関する情報を保持する情報ファイルを作成し、ルートオブジェクトが情報ファイルへのリンクを保持し、分散ファイル管理クライアント１１が情報ファイルを分散ファイル管理システム１００に登録してもよい。
【００６６】
ブロックチェーンクライアント１３は、ブロックチェーン記憶部１３１およびブロックチェーン制御部１３２を備える。ブロックチェーン記憶部１３１には、ブロックチェーンシステム２００に属する全ての端末と緩やかに同期したブロックチェーンデータが記憶される。ブロックチェーン制御部１３２は、ブロックチェーンシステム２００に属する端末と自律分散的に協調し、ブロックチェーンの系を維持する。本実施形態では、ブロックチェーンクライアント１３は、ブロックチェーンシステム２００にルートオブジェクトのＩＤと作成者のＩＤを登録する。
【００６７】
続いて、更新者端末２について説明する。図１２に示す更新者端末２は、分散ファイル管理クライアント２１、ファイル更新部２２１、差分作成部２２２、ルートオブジェクト作成部２２３、およびブロックチェーンクライアント２３を備える。
【００６８】
分散ファイル管理クライアント２１、ファイル更新部２２１、および差分作成部２２２は、第１の実施形態と同じである。ファイル更新部２２１によって更新されたファイルおよび差分作成部２２２によって生成された差分ファイルは、分散ファイル管理クライアント２１によって分散ファイル管理システム１００に登録される。
【００６９】
ルートオブジェクト作成部２２３は、元ファイルへのリンクと、差分ファイルへのリンクと、更新後のファイルに関する情報と、コントラクトの識別子とを保持するルートオブジェクトを生成する。ルートオブジェクトは、分散ファイル管理クライアント２１によって、分散ファイル管理システム１００に登録される。
【００７０】
ルートオブジェクト作成部２２３が更新後のファイルに関する情報を保持する情報ファイルを作成し、ルートオブジェクトが情報ファイルへのリンクを保持し、分散ファイル管理クライアント２１が情報ファイルを分散ファイル管理システム１００に登録してもよい。
【００７１】
ブロックチェーンクライアント２３は、ブロックチェーン記憶部２３１とブロックチェーン制御部２３２を備える。ブロックチェーン記憶部２３１とブロックチェーン制御部２３２は、作成者端末１のブロックチェーン記憶部１３１とブロックチェーン制御部と同様である。本実施形態では、ブロックチェーンクライアント２３は、ブロックチェーンシステム２００にルートオブジェクトのＩＤと更新者のＩＤを登録する。ブロックチェーンクライアント２３は、分散ファイル管理システム１００から取得したファイルのルートオブジェクトのＩＤとファイルの作成者または更新者のＩＤがブロックチェーンシステム２００に登録されているか否かを調べて、ファイルの作成者または更新者の真正性を確認してもよい。
【００７２】
ブロックチェーン制御端末４は、ブロックチェーンクライアント１３，２３と同様の機能を有する。
【００７３】
作成者端末１および更新者端末２が備える各部は、演算処理装置、記憶装置等を備えたコンピュータにより構成して、各部の処理がプログラムによって実行されるものとしてもよい。このプログラムは作成者端末１および更新者端末２が備える記憶装置に記憶されており、磁気ディスク、光ディスク、半導体メモリ等の記録媒体に記録することも、ネットワークを通して提供することも可能である。
【００７４】
（ファイルの生成）
図１３を参照し、作成者端末１がファイルを生成し、分散ファイル管理システム１００に登録する処理について説明する。
【００７５】
ステップＳ３０１において、作成者端末１は、ファイルを作成する。
【００７６】
ステップＳ３０２において、作成者端末１は、ファイルのＩＤ、ファイルに関する情報、およびコントラクトの識別子を含むルートオブジェクトを作成する。コントラクトはブロックチェーンシステム２００に登録済であり、コントラクトの識別子は既知であるとする。ファイルに関する情報は、作成者のＩＤを含む。作成者端末１は、ファイルに関する情報を含む情報ファイルを作成し、ルートオブジェクトに情報ファイルのＩＤを含めてもよい。
【００７７】
ステップＳ３０３において、作成者端末１は、コントラクトへ作成したファイルのルートオブジェクトのＩＤと作成者のＩＤを付与して登録する。作成者端末１は、さらに、コントラクトへファイルの更新を許可する更新者のＩＤを付与して登録してもよい。
【００７８】
ステップＳ３０４において、作成者端末１は、ファイルとルートオブジェクトを分散ファイル管理システム１００に登録する。具体的には、作成者端末１は、必要であればチャンクに分割し、ファイルとルートオブジェクトを分散ファイル記憶部１１１に記憶させて、ファイルのＩＤ、ルートオブジェクトのＩＤ、および作成者端末１の識別子を分散ファイル管理システム１００に属する端末に通知する。
【００７９】
ステップＳ３０５において、更新者端末２はステップＳ３０４の通知を受ける。
【００８０】
ステップＳ３０６において、更新者端末２は、通知された内容に基づき、更新者端末２が保持すべきルーティング情報があれば、分散ファイル記憶部２１１にルーティング情報を記憶させる。
【００８１】
以上の処理により、作成者端末１の作成したファイルが分散ファイル管理システム１００に登録される。分散ファイル管理システム１００に属する端末は、ファイルのルートオブジェクトのＩＤを用いて、分散ファイル管理システム１００からファイルを取得できる。ブロックチェーンシステム２００にルートオブジェクトのＩＤと作成者のＩＤが登録されていることを調べることで、作成者の真正性を確認できる
（ファイルの更新）
図１４を参照し、更新者端末２がファイルを更新し、分散ファイル管理システム１００に登録する処理について説明する。更新者端末２は、分散ファイル管理システム１００から更新対象の元ファイルを取得しているものとする。
【００８２】
ステップＳ４０１において、更新者端末２は、元ファイルを更新する。
【００８３】
ステップＳ４０２において、更新者端末２は、元ファイルと更新後のファイルの差分ファイルを生成する。
【００８４】
ステップＳ４０３において、更新者端末２は、元ファイルのＩＤ、差分ファイルのＩＤ、更新後のファイルに関する情報、およびコントラクトの識別子を含むルートオブジェクトを作成する。コントラクトの識別子は、元ファイルのルートオブジェクトから知ることができる。ファイルに関する情報は、更新者のＩＤを含む。更新者端末２は、更新後のファイルに関する情報を含む情報ファイルを作成し、ルートオブジェクトに情報ファイルのＩＤを含めてもよい。
【００８５】
ステップＳ４０４において、更新者端末２は、コントラクトへ更新後のファイルのルートオブジェクトのＩＤと更新者のＩＤを付与して登録する。ここで、コントラクトの処理により、ルートオブジェクトのＩＤと更新者のＩＤが登録できなかった場合、ステップＳ４０５以降の処理を中止してもよい。例えば、更新者端末２が元ファイルを更新する権利を持たない場合に、コントラクトの処理でルートオブジェクトのＩＤと更新者のＩＤの登録が拒否される。
【００８６】
ステップＳ４０５において、更新者端末２は、差分ファイルとルートオブジェクトを分散ファイル管理システム１００に登録する。具体的には、更新者端末２は、必要であればチャンクに分割し、差分ファイルとルートオブジェクトを分散ファイル記憶部１１１に記憶させて、差分ファイルのＩＤ、ルートオブジェクトのＩＤ、および更新者端末２の識別子を分散ファイル管理システム１００に属する端末に通知する。
【００８７】
ステップＳ４０６において、作成者端末１はステップＳ４０５の通知を受ける。
【００８８】
ステップＳ４０７において、作成者端末１は、通知された内容に基づき、作成者端末１が保持すべきルーティング情報があれば、分散ファイル記憶部１１１にルーティング情報を記憶させる。
【００８９】
以上の処理により、更新者端末２の更新したファイルが分散ファイル管理システム１００に登録される。分散ファイル管理システム１００に属する端末は、更新後のファイルのルートオブジェクトのＩＤを用いて、分散ファイル管理システム１００から更新後のファイルを取得できる。
【００９０】
分散ファイル管理システム１００とブロックチェーンシステム２００の両方に属する端末は、分散ファイル管理システム１００から取得したルートオブジェクトから更新者のＩＤとコントラクトの識別子を得て、コントラクトに更新者のＩＤとルートオブジェクトのＩＤが登録されているか否かを調べることで、更新者の真正性を確認できる。
【００９１】
以上説明したように、本実施の形態によれば、ルートオブジェクト作成部２２３が更新者のＩＤとコントラクトの識別子とを保持するルートオブジェクトを生成し、ブロックチェーンクライアント２３がコントラクトにルートオブジェクトのＩＤと更新者のＩＤとを登録することにより、ブロックチェーンシステム２００にルートオブジェクトのＩＤと更新者のＩＤが登録されていることを調べることで、更新者の真正性を確認できる。
【符号の説明】
【００９２】
１…作成者端末
１１…分散ファイル管理クライアント
１１１…分散ファイル記憶部
１１２…分散ファイル管理制御部
１２１…ファイル作成部
１２３…ルートオブジェクト作成部
１３…ブロックチェーンクライアント
１３１…ブロックチェーン記憶部
１３２…ブロックチェーン制御部
２…更新者端末
２１…分散ファイル管理クライアント
２１１…分散ファイル記憶部
２１２…分散ファイル管理制御部
２２１…ファイル更新部
２２２…差分作成部
２２３…ルートオブジェクト作成部
２３…ブロックチェーンクライアント
２３１…ブロックチェーン記憶部
２３２…ブロックチェーン制御部
３…ファイル管理制御端末
４…ブロックチェーン制御端末
１００…分散ファイル管理システム
２００…ブロックチェーンシステム
【図１】
2020194385.tif 000003
【図２】
2020194385.tif 000004
【図３】
2020194385.tif 000005
【図４】
2020194385.tif 000006
【図５】
2020194385.tif 000007
【図６】
2020194385.tif 000008
【図７】
2020194385.tif 000009
【図８】
2020194385.tif 000010
【図９】
2020194385.tif 000011
【図１０】
2020194385.tif 000012
【図１１】
2020194385.tif 000013
【図１２】
2020194385.tif 000014
【図１３】
2020194385.tif 000015
【図１４】
2020194385.tif 000016