(57)【要約】【課題】ソフトウェアの取引の安全性を向上させる、ソフトウェアのバージョン管理方法を提供する。【解決手段】管理方法は、複数の管理装置のうちの第１のトークン管理装置が、ユーザが要求する要求バージョンを示す要求情報を取得し（Ｓ２７１）、ユーザが要求バージョンを開発した開発者に所定のトークンを提供することを示す第一トランザクションデータを、複数の管理装置それぞれによるコンセンサスアルゴリズムの実行を経て分散台帳に格納する（Ｓ２７４）。【選択図】図１９
2019220148.tif 000002
【特許請求の範囲】
【請求項１】
バージョン管理システムにより実行される、ソフトウェアのバージョンの管理方法であって、
前記バージョン管理システムは、分散台帳を保有している複数の管理装置を備え、
前記管理方法は、
前記複数の管理装置のうちの第１の管理装置が、ユーザが要求する要求バージョンを示す要求情報を取得し、
前記ユーザが前記要求バージョンを開発した開発者に所定のトークンを提供することを示す第一トランザクションデータを、前記複数の管理装置それぞれによるコンセンサスアルゴリズムの実行を経て前記分散台帳に格納する
管理方法。
【請求項２】
前記バージョン管理システムは、さらに、前記ソフトウェアの１以上のバージョンそれぞれの開発者の識別情報を保有しており、
前記管理方法では、さらに、
前記要求情報を含むデータであって、前記ユーザの識別情報を前記所定のトークンの提供元としてさらに含む第二トランザクションデータを、前記ユーザが使用するユーザ装置が前記第１の管理装置に送信し、
前記第二トランザクションデータに含まれる前記要求情報により示される前記要求バージョンの開発者の識別情報を、前記第１の管理装置が取得し、
前記第一トランザクションデータを前記分散台帳に格納する際には、
前記第二トランザクションデータに含まれる前記提供元である前記ユーザの識別情報を、前記所定のトークンの提供元として含み、取得した前記識別情報を前記所定のトークンの提供先として含む前記第一トランザクションデータを生成し、
前記複数の管理装置それぞれが、生成された前記第一トランザクションデータを前記分散台帳に格納する
請求項１に記載の管理方法。
【請求項３】
前記管理方法では、さらに、
前記ユーザの識別情報を前記所定のトークンの提供元として含み、前記要求バージョンの開発者の識別情報を前記所定のトークンの提供先として含む、前記第一トランザクションデータを、ユーザ装置が前記第１の管理装置に送信し、
前記第一トランザクションデータを前記分散台帳に格納する際には、
前記ユーザ装置から受信した前記第一トランザクションデータを前記分散台帳に格納する
請求項１に記載の管理方法。
【請求項４】
前記バージョン管理システムは、さらに、前記ソフトウェアの１以上のバージョンそれぞれの開発者の識別情報を保有しており、
前記管理方法では、さらに、
前記第一トランザクションデータに含まれる前記要求情報により示される前記要求バージョンの開発者の識別情報である第一識別情報を取得し、
前記第一識別情報と、前記第一トランザクションデータに含まれる前記識別情報である第二識別情報とが一致するときに限り、前記第一トランザクションデータを前記分散台帳に格納する
請求項３に記載の管理方法。
【請求項５】
前記バージョン管理システムは、さらに、前記ソフトウェアの１以上のバージョンの格納場所を示す場所情報を保有しており、
前記管理方法では、さらに、
前記複数の管理装置それぞれが前記第一トランザクションデータを前記分散台帳に格納した後に、前記要求バージョンのソフトウェアの格納場所を示す場所情報を前記ユーザが使用するユーザ装置に提供し、
前記ユーザ装置が、提供された前記場所情報を用いて前記要求バージョンのソフトウェアを取得する
請求項１〜４のいずれか１項に記載の管理方法。
【請求項６】
前記第一トランザクションデータを前記分散台帳に格納する際には、
前記要求バージョンの開発者が２以上存在する場合には、前記ユーザから２以上の前記開発者に、予め定められた配分比率で前記所定のトークンが提供されることを示す前記第一トランザクションデータを前記分散台帳に格納する
請求項１〜５のいずれか１項に記載の管理方法。
【請求項７】
前記予め定められた配分比率は、２以上の前記開発者に、前記要求バージョンより古いバージョンの開発者が含まれている場合には、前記要求バージョンの開発者、及び、前記古いバージョンの開発者それぞれに対して、より古いほどより低い配分とする配分比率である
請求項６に記載の管理方法。
【請求項８】
前記管理方法に係る処理の一部又は全部は、前記複数の管理装置の分散台帳に格納されたスマートコントラクトコードを実行することでなされる
請求項１〜７のいずれか１項に記載の管理方法。
【請求項９】
前記バージョン管理システムは、さらに、バージョン管理装置を備え、
前記バージョン管理装置は、前記ソフトウェアの１以上のバージョンそれぞれの開発者の識別情報を保有している、
請求項２又は４に記載の管理方法。
【請求項１０】
前記バージョン管理装置は、分散台帳を保有している複数のバージョン管理装置を含み、
前記複数のバージョン管理装置が保有している前記分散台帳には、前記ソフトウェアの１以上のバージョンそれぞれの開発者の識別情報を含むトランザクションデータが格納されている
請求項９に記載の管理方法。
【請求項１１】
前記分散台帳はブロックチェーンであり、
前記ユーザが前記要求バージョンを開発した開発者に所定のトークンを提供することを示す第一トランザクションデータを、前記複数の管理装置それぞれによるコンセンサスアルゴリズムの実行を得て前記ブロックチェーンに格納する、
請求項１〜１０のいずれか１項に記載の管理方法。
【請求項１２】
ソフトウェアのバージョンを管理するためのバージョン管理システムが備える、分散台帳を保有している複数の管理装置のうちの１つである管理装置であって、
ユーザが要求する要求バージョンを示す要求情報を取得する取得部と、
前記ユーザから、前記要求バージョンを開発した開発者に所定のトークンを提供することを示す第一トランザクションデータを、前記複数の管理装置それぞれによるコンセンサスアルゴリズムの実行を経て前記分散台帳に格納する台帳管理部とを備える
管理装置。
【請求項１３】
ソフトウェアのバージョンを管理するためのバージョン管理システムが備える、分散台帳を保有している複数の管理装置のうちの１つである管理装置として、コンピュータを動作させるためのプログラムであって、
ユーザが要求する要求バージョンを示す要求情報を取得し、
前記ユーザから、前記要求バージョンを開発した開発者に所定のトークンを提供することを示す第一トランザクションデータを、前記複数の管理装置それぞれによるコンセンサスアルゴリズムの実行を経て前記分散台帳に格納する
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、管理方法、管理装置、及び、プログラムに関する。
【背景技術】
【０００２】
ソフトウェアを管理する管理システムでは、開発者により開発されたソフトウェアのバージョンを示すバージョン情報が開発者の識別情報とともに管理される（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−２０３３５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の管理システムでは、開発者とユーザとの間でのソフトウェアの取引が安全になされないことがあるという問題がある。
【０００５】
そこで、本発明は、ソフトウェアのバージョン管理方法であって、ソフトウェアの取引の安全性を向上させる管理方法などを提供する。
【課題を解決するための手段】
【０００６】
本発明の一態様に係る管理方法は、バージョン管理システムにより実行される、ソフトウェアのバージョンの管理方法であって、前記バージョン管理システムは、分散台帳を保有している複数の管理装置を備え、前記管理方法は、前記複数の管理装置のうちの第１の管理装置が、ユーザが要求する要求バージョンを示す要求情報を取得し、前記ユーザが前記要求バージョンを開発した開発者に所定のトークンを提供することを示す第一トランザクションデータを、前記複数の管理装置それぞれによるコンセンサスアルゴリズムの実行を経て前記分散台帳に格納する。
【０００７】
なお、これらの包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なＣＤ−ＲＯＭなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムおよび記録媒体の任意な組み合わせで実現されてもよい。
【発明の効果】
【０００８】
本発明によれば、ソフトウェアのバージョン管理方法であって、ソフトウェアの取引の安全性を向上させる管理方法を提供できる。
【図面の簡単な説明】
【０００９】
【図１】図１は、アジャイル型開発によるソフトウェアのバージョン系列を示す説明図である。
【図２】図２は、アジャイル型開発におけるトークンの授受を示す説明図である。
【図３】図３は、実施の形態１に係る管理システムの構成を示す説明図である。
【図４】図４は、実施の形態１に係る保管サーバの構成を示すブロック図である。
【図５】図５は、実施の形態１に係る開発装置の構成を示すブロック図である。
【図６】図６は、実施の形態１に係る管理装置の構成を示すブロック図である。
【図７】図７は、実施の形態１に係るトランザクションデータの第一例を示す説明図である。
【図８】図８は、実施の形態１に係るトランザクションデータの第二例を示す説明図である。
【図９】図９は、実施の形態１に係るトランザクションデータの第三例を示す説明図である。
【図１０】図１０は、実施の形態１に係るブロックチェーンに格納されているトランザクションデータの例を示す説明図である。
【図１１】図１１は、実施の形態１に係る管理システムにおける第一の処理を示すシーケンス図である。
【図１２】図１２は、実施の形態１に係る管理システムにおける第二の処理を示すシーケンス図である。
【図１３】図１３は、実施の形態２に係る管理システムの構成を示す説明図である。
【図１４】図１４は、実施の形態２に係るユーザ装置の構成を示す説明図である。
【図１５】図１５は、実施の形態２に係るトークン管理装置の構成を示す説明図である。
【図１６】図１６は、実施の形態２に係るトランザクションデータの第一例を示す説明図である。
【図１７】図１７は、実施の形態２に係るトランザクションデータの第二例を示す説明図である。
【図１８】図１８は、実施の形態２に係るブロックチェーンに格納されているトランザクションデータを示す説明図である。
【図１９】図１９は、実施の形態２に係る管理システムにおける第一の処理を示すシーケンス図である。
【図２０】図２０は、実施の形態２に係る管理システムにおける第二の処理を示すシーケンス図である。
【図２１】図２１は、実施の形態２に係る管理システムにおける第三の処理を示すシーケンス図である。
【図２２】図２２は、実施の形態２に係る管理システムにおける第四の処理を示すシーケンス図である。
【図２３】図２３は、実施の形態３に係る管理システムにおけるトークンの提供方法を示す説明図である。
【図２４】図２４は、実施の形態３に係る管理装置の構成を示す説明図である。
【図２５】図２５は、実施の形態３に係るトークン管理装置の構成を示す説明図である。
【図２６】図２６は、実施の形態３に係る枝情報の一例を示す説明図である。
【図２７】図２７は、実施の形態３に係るトークンを配分するためのトランザクションデータの例を示す説明図である。
【図２８】図２８は、実施の形態３に係る管理システムにおける処理を示すシーケンス図である。
【図２９】図２９は、ブロックチェーンのデータ構造を示す説明図である。
【図３０】図３０は、トランザクションデータのデータ構造を示すの説明図である。
【発明を実施するための形態】
【００１０】
（本発明の基礎となった知見）
本発明者は、「背景技術」の欄において記載した、ソフトウェアの開発に関し、以下の問題が生じることを見出した。
【００１１】
ソフトウェア開発をする際に、開発メーカなどだけでなく不特定多数の開発者が参加する形態である、アジャイル型開発が用いられている。この形態では、多数の開発者がソフトウェアを改良することによりさまざまなバージョン系列が発生し得る。
【００１２】
ソフトウェアを管理する管理システムでは、上記開発者により開発されたソフトウェアのバージョンを示すバージョン情報が、開発者の識別情報とともに管理される（例えば特許文献１参照）。
【００１３】
ここで、バージョン情報は、当該ソフトウェアのバージョンを一意に特定する役割を有する。また、開発者の識別情報は、ソフトウェアの新たなバージョンの開発に係る報酬であるトークンを開発者に提供するために用いられ得る。
【００１４】
しかしながら、従来の管理システムでは、開発者とユーザとの間でのソフトウェアの取引が安全になされないことがあるという問題がある。
【００１５】
そこで、本発明は、ソフトウェアの取引の安全性を向上させる管理方法などを提供する。
【００１６】
本発明の一態様に係る管理方法は、バージョン管理システムにより実行される、ソフトウェアのバージョンの管理方法であって、前記バージョン管理システムは、分散台帳を保有している複数の管理装置を備え、前記管理方法は、前記複数の管理装置のうちの第１の管理装置が、ユーザが要求する要求バージョンを示す要求情報を取得し、前記ユーザが前記要求バージョンを開発した開発者に所定のトークンを提供することを示す第一トランザクションデータを、前記複数の管理装置それぞれによるコンセンサスアルゴリズムの実行を経て前記分散台帳に格納する。
【００１７】
上記態様によれば、ユーザからソフトウェアの新たなバージョンの開発者へトークンが提供されたことが、分散台帳によって管理される。分散台帳は、保有している情報の改ざんが困難であり、また、システムダウンの影響を受けにくいという利点があるので、分散台帳によってトークンの授受を管理することで、トークンの授受の履歴が改ざんされたり、トークンの授受の履歴が欠落したりすることが抑制される。よって、ソフトウェアのバージョン管理方法において、ソフトウェアの取引の安全性を向上させることができる。
【００１８】
例えば、前記バージョン管理システムは、さらに、前記ソフトウェアの１以上のバージョンそれぞれの開発者の識別情報を保有しており、前記管理方法では、さらに、前記要求情報を含むデータであって、前記ユーザの識別情報を前記所定のトークンの提供元としてさらに含む第二トランザクションデータを、前記ユーザが使用するユーザ装置が前記第１の管理装置に送信し、前記第二トランザクションデータに含まれる前記要求情報により示される前記要求バージョンの開発者の識別情報を、前記第１の管理装置が取得し、前記第一トランザクションデータを前記分散台帳に格納する際には、前記第二トランザクションデータに含まれる前記提供元である前記ユーザの識別情報を、前記所定のトークンの提供元として含み、取得した前記識別情報を前記所定のトークンの提供先として含む前記第一トランザクションデータを生成し、前記複数の管理装置それぞれが、生成された前記第一トランザクションデータを前記分散台帳に格納してもよい。
【００１９】
上記態様によれば、ユーザ装置から第二トランザクションデータを用いて受信した要求バージョンの開発者の識別情報をバージョン管理装置から取得して、その開発者の識別情報をトークンの提供先として利用する。これにより、ユーザが要求バージョンの開発者を知らない、つまりユーザ装置が上記開発者の識別情報を保有していない場合であっても、ユーザから開発者にトークンが提供されたことが分散台帳によって管理される。よって、ユーザが要求バージョンの開発者を知らない場合であっても、ソフトウェアの取引の安全性を向上させることができる。
【００２０】
例えば、前記管理方法では、さらに、前記ユーザの識別情報を前記所定のトークンの提供元として含み、前記要求バージョンの開発者の識別情報を前記所定のトークンの提供先として含む、前記第一トランザクションデータを、ユーザ装置が前記第１の管理装置に送信し、前記第一トランザクションデータを前記分散台帳に格納する際には、前記ユーザ装置から受信した前記第一トランザクションデータを前記分散台帳に格納してもよい。
【００２１】
上記態様によれば、ユーザ装置から要求バージョンの開発者にトークンが提供されたことを示すトランザクションデータが、ユーザ装置から管理装置（言い換えればトークン管理装置）に送信される。よって、管理装置が他の装置などから要求バージョンの開発者に関する情報を得ることなく、ユーザから開発者にトークンが提供されたことが分散台帳によって管理される。よって、管理装置が他の装置などから要求バージョンの開発者に関する情報を得ることなく、ソフトウェアの取引の安全性を向上させることができる。
【００２２】
例えば、前記バージョン管理システムは、さらに、前記ソフトウェアの１以上のバージョンそれぞれの開発者の識別情報を保有しており、前記管理方法では、さらに、前記第一トランザクションデータに含まれる前記要求情報により示される前記要求バージョンの開発者の識別情報である第一識別情報を取得し、前記第一識別情報と、前記第一トランザクションデータに含まれる前記識別情報である第二識別情報とが一致するときに限り、前記第一トランザクションデータを前記分散台帳に格納してもよい。
【００２３】
上記態様によれば、ユーザ装置から第一トランザクションデータを用いて受信した要求バージョンの開発者の識別情報が、バージョン管理装置で管理している開発者の識別情報と一致する場合に限り、分散台帳に格納されて管理される。よって、仮にユーザ装置が保有している開発者の識別情報が正しくない（つまり、誤りがある、又は、不正である）場合には、ユーザから開発者へのトークンの提供がなされない。このようにして、正しくない開発者にトークンが提供されることが未然に回避される。よって、ユーザ装置が保有している情報が不正である場合に、不正な開発者にトークンが提供されることを回避することによって、ソフトウェアの取引の安全性を向上させることができる。
【００２４】
例えば、前記バージョン管理システムは、さらに、前記ソフトウェアの１以上のバージョンの格納場所を示す場所情報を保有しており、前記管理方法では、さらに、前記複数の管理装置それぞれが前記第一トランザクションデータを前記分散台帳に格納した後に、前記要求バージョンのソフトウェアの格納場所を示す場所情報を前記ユーザが使用するユーザ装置に提供し、前記ユーザ装置が、提供された前記場所情報を用いて前記要求バージョンのソフトウェアを取得してもよい。
【００２５】
上記態様によれば、ユーザから開発者へのトークンの提供が分散台帳によって管理された後に、要求バージョンのソフトウェアがユーザに提供される。よって、ユーザ装置がトークンを提供するのと引き換えに、ソフトウェアの提供を受けるという取引が、より安全になされる。よって、ソフトウェアの取引の安全性を、より一層向上させることができる。
【００２６】
例えば、前記第一トランザクションデータを前記分散台帳に格納する際には、前記要求バージョンの開発者が２以上存在する場合には、前記ユーザから２以上の前記開発者に、予め定められた配分比率で前記所定のトークンが提供されることを示す前記第一トランザクションデータを前記分散台帳に格納してもよい。
【００２７】
上記態様によれば、要求バージョンの開発に２以上の開発者が関わっている場合に、ユーザから２以上の開発者それぞれにトークンを配分して提供したことが、分散台帳によって管理される。よって、要求バージョンの開発に２以上の開発者が関わっている場合であっても、ソフトウェアの取引の安全性を向上させることができる。
【００２８】
例えば、前記予め定められた配分比率は、２以上の前記開発者に、前記要求バージョンより古いバージョンの開発者が含まれている場合には、前記要求バージョンの開発者、及び、前記古いバージョンの開発者それぞれに対して、より古いほどより低い配分とする配分比率であってもよい。
【００２９】
上記態様によれば、要求バージョンの開発に２以上の開発者が関わっている場合に、より古いほどより低い配分とし、言い換えれば、より新しいほどより高い配分とする配分比率でトークンを提供できる。一般に、要求バージョンにより近いバージョン、つまりより新しいバージョンの開発者の方が、要求バージョンの開発に対する貢献がより大きいと考えられる。そこで、このような貢献の大きさに応じたトークンの配分比率を実現することができる。よって、要求バージョンの開発に関わった２以上の開発者の貢献度に応じたトークンに配分により、ソフトウェアの取引の安全性をより一層向上させることができる。
【００３０】
例えば、前記管理方法に係る処理の一部又は全部は、前記複数の管理装置の分散台帳に格納されたスマートコントラクトコードを実行することでなされてもよい。
【００３１】
上記態様によれば、ユーザから開発者へのトークンの提供などの一連の処理が、分散台帳に格納されたスマートコントラクトコードに基づいて、他の人又は他のシステムを介在することなく、自動的に実行される。よって、スマートコントラクトにより、一連の処理が、より一層高い安全性をもって実現される。よって、ソフトウェアの取引の安全性をより一層向上させることができる。
【００３２】
例えば、前記バージョン管理システムは、さらに、バージョン管理装置を備え、前記バージョン管理装置は、前記ソフトウェアの１以上のバージョンそれぞれの開発者の識別情報を保有していてもよい。
【００３３】
上記態様によれば、バージョン管理装置を用いてソフトウェアの各バージョンの開発者の識別情報を管理する。よって、バージョン管理装置を用いて、より容易に、ソフトウェアのバージョン管理方法において、ソフトウェアの取引の安全性を向上させることができる。
【００３４】
例えば、前記バージョン管理装置は、分散台帳を保有している複数のバージョン管理装置を含み、前記複数のバージョン管理装置が保有している前記分散台帳には、前記ソフトウェアの１以上のバージョンそれぞれの開発者の識別情報を含むトランザクションデータが格納されていてもよい。
【００３５】
上記態様によれば、複数のバージョン管理装置が分散台帳によってソフトウェアのバージョンの開発者を管理していて、その開発者の情報がトークンの提供先として用いられる。分散台帳は、保有している情報の改ざんが困難であり、また、システムダウンの影響を受けにくいという利点がある。よって、バージョンの開発者の情報の改ざんなどが抑制され、ソフトウェアの取引の安全性をより一層向上させることができる。
【００３６】
例えば、前記分散台帳はブロックチェーンであり、前記ユーザが前記要求バージョンを開発した開発者に所定のトークンを提供することを示す第一トランザクションデータを、前記複数の管理装置それぞれによるコンセンサスアルゴリズムの実行を得て前記ブロックチェーンに格納してもよい。
【００３７】
上記態様によれば、複数の管理装置が、分散台帳としてブロックチェーンを用いることによって、より容易に、管理している情報の改ざんの発生を抑制することができる。
【００３８】
本発明の一態様に係る管理装置は、ソフトウェアのバージョンを管理するためのバージョン管理システムが備える、分散台帳を保有している複数の管理装置のうちの１つである管理装置であって、ユーザが要求する要求バージョンを示す要求情報を取得する取得部と、前記ユーザから、前記要求バージョンを開発した開発者に所定のトークンを提供することを示す第一トランザクションデータを、前記複数の管理装置それぞれによるコンセンサスアルゴリズムの実行を経て前記分散台帳に格納する台帳管理部とを備える。
【００３９】
これにより、上記管理方法と同様の効果を奏する。
【００４０】
本発明の一態様に係るプログラムは、ソフトウェアのバージョンを管理するためのバージョン管理システムが備える、分散台帳を保有している複数の管理装置のうちの１つである管理装置として、コンピュータを動作させるためのプログラムであって、ユーザが要求する要求バージョンを示す要求情報を取得し、前記ユーザから、前記要求バージョンを開発した開発者に所定のトークンを提供することを示す第一トランザクションデータを、前記複数の管理装置それぞれによるコンセンサスアルゴリズムの実行を経て前記分散台帳に格納する。
【００４１】
これにより、上記管理方法と同様の効果を奏する。
【００４２】
なお、これらの包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なＣＤ−ＲＯＭなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムまたは記録媒体の任意な組み合わせで実現されてもよい。
【００４３】
以下、実施の形態について、図面を参照しながら具体的に説明する。
【００４４】
なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
【００４５】
（実施の形態１）
本実施の形態において、ソフトウェアのバージョン管理方法などについて説明する。ここで、ソフトウェアは、例えば家電機器（洗濯機、エアコン、冷蔵庫、テレビなど）に搭載されて、当該家電機器の動作を制御し、また、当該家電機器の機能を発揮させるソフトウェアである。
【００４６】
図１は、アジャイル型開発によるソフトウェアのバージョン系列を示す説明図である。
【００４７】
図１に示されるように、アジャイル型開発では、開発メーカであるＺ社が最初のバージョンであるバージョン１（図において「Ｖｅｒ１」と記載、以下同様）を開発し、開発者のコミュニティに提供する。次に、提供されたバージョン１のソフトウェアを元にしてコミュニティに属する開発者による開発がなされ、さまざまなバージョン系列が生成される。各バージョン系列では、例えば、発揮する機能が互いに異なるソフトウェアが開発される。バージョン系列は、図１において系列１Ａなどのように表現されている。バージョン系列には、１以上のバージョンが含まれる。
【００４８】
図１では、バージョン１のソフトウェアに基づいて、開発者Ａによる開発によりバージョン１．Ａ１が生成され、開発者Ｂによる開発によりバージョン１．Ｂ１が生成され、開発者Ｃによる開発によりバージョン１．Ｃ１が生成されたことが示されている。
【００４９】
そして、これらのバージョンを元にしてさらなる開発がなされ得る。例えば、バージョン１．Ａ１を元にして、バージョン１．Ａ２が開発され、バージョン１．Ａ２を元にしてバージョン１．Ａ３が開発される。また、バージョン１．Ｂ１を元にして、バージョン１．Ｂ２が開発される。また、バージョン１．Ｃ１を元にして、開発者Ｄ及びＥにより、複数のバージョン系列としてバージョン１．Ｃ１．Ｄ１及びバージョン１．Ｃ１．Ｅ１が開発される。
【００５０】
ここで、バージョン１．Ａ１以降のバージョン（つまり、バージョン１．Ａ１と、バージョン１．Ａ１に基づいて開発されたバージョンであるバージョン１．Ａ２及びバージョン１．Ａ３）を系列１Ａという。同様に、バージョン１．Ｂ１以降のバージョンを系列１Ｂという。バージョン１．Ｃ１を系列１Ｃといい、バージョン１．Ｃ１．Ｄ１を系列１Ｄといい、バージョン１．Ｃ１．Ｅ１を系列１Ｅという。なお、バージョン１と、系列１Ａ〜１Ｅのすべてのバージョンとを含む系列を、系列１ともいう。
【００５１】
このようにして、アジャイル型開発では、開発メーカであるＺ社が提供したソフトウェアを元にして、開発メーカとは異なる開発者によりソフトウェアが開発され、複数のバージョン系列が生成される。
【００５２】
そして、複数のバージョンのうちからユーザが望むバージョンがユーザに提供される。例えば、ユーザが望む機能を有するバージョン系列のうちの最新バージョンがユーザに提供される。
【００５３】
図２は、アジャイル型開発におけるトークンの授受を示す説明図である。ここでトークンとは、利益又は価値に相当する概念であり、人（自然人）又はメーカなどの法人が所有し、また、移転されうるものである。アジャイル型開発では、開発者、一般ユーザ及びメーカの間で適切にトークンをやりとりすることで、ソフトウェアの開発が進行する。
【００５４】
例えば、開発者が提供したソフトウェアを一般ユーザが受け取り、ユーザは、自身が保有している家電機器上でそのソフトウェアを動作させることにより家電機器を稼働させる。一般ユーザは、ソフトウェアの提供を受けたことの対価として開発者にトークンを提供する。
【００５５】
また、一般ユーザは、ソフトウェアを搭載した家電機器を稼働させたときの製品のデータをメーカに提供し、そのデータの対価としてトークンの提供を受ける。
【００５６】
ここで、一般ユーザと開発者とは、メーカを介さずに直接トークンをやりとりする。このようなトークンのやりとりが発生すると、不正に利益を得たり、他人の利益を害したりするなどの目的で、管理されている開発者の識別情報の改ざんがなされることがある。識別情報が改ざんされると、悪意者が開発者になりすましてトークンを受け取ったり、他人になりすまして悪意のソフトウェアを提供して評判を悪くしたりすることが可能となってしまうからである。
【００５７】
本実施の形態に係る管理システムは、管理している情報の改ざんの発生を抑制することを目的とする。
【００５８】
図３は、実施の形態１に係る管理システム１の構成を示す説明図である。
【００５９】
図３に示されるように管理システム１は、複数の管理装置１０Ａ、１０Ｂ及び１０Ｃと、複数の開発装置２０Ａ、２０Ｂ及び２０Ｃと、保管サーバ３０とを備える。上記の装置は、ネットワークＮによって、相互に通信可能に接続されている。
【００６０】
複数の管理装置１０Ａ、１０Ｂ及び１０Ｃ（１０Ａ等ともいう）は、ソフトウェアのバージョンに関する情報をコンピュータにより管理する管理装置である。複数の管理装置１０Ａ等の個数が３である場合を例として説明するが、２以上であればいくつであってもよい。複数の管理装置１０Ａ等は、互いに通信可能に接続されている。なお、以降では、複数の管理装置１０Ａ等を代表して、管理装置１０Ａを用いて説明することがあるが、他の管理装置１０Ｂ及び１０Ｃでも同様の説明が成立する。なお、複数の管理装置１０Ａ等は、ネットワークＮを介して通信することもできる。
【００６１】
複数の管理装置１０Ａ等は、それぞれ、ソフトウェアのバージョンに関する情報を管理するための分散台帳を保有し、保有している分散台帳を、通信によって互いに同期をとりながら更新している。複数の管理装置１０Ａ等のいずれかが、開発装置２０Ａ等のいずれかから新たなバージョンに関する情報を取得すると、取得した情報の複製を複数の管理装置１０Ａ等それぞれが保有する。分散台帳は、一般に、保有している情報の改ざんが困難であり、また、システムダウンの影響を受けにくいという利点がある。
【００６２】
複数の開発装置２０Ａ、２０Ｂ及び２０Ｃ（２０Ａ等ともいう）は、ソフトウェアの開発者が使用するコンピュータであり、それぞれ独立に動作する。なお、複数の開発装置２０Ａ等の個数が３である場合を例として説明するが、１以上いくつであってもよい。なお、以降では、複数の開発装置２０Ａ等を代表して、開発装置２０Ａを用いて説明することがあるが、他の開発装置２０Ｂ及び２０Ｃでも同様の説明が成立する。
【００６３】
開発者は、開発装置２０Ａを使用してソフトウェアの新たなバージョンを開発し、開発した新たなバージョンのソフトウェアを保管サーバ３０に送信して、保管させる。また、開発装置２０Ａは、開発者によって開発された新たなバージョンに関する情報をネットワークＮを介して管理装置１０Ａ等のいずれかに送信する。
【００６４】
保管サーバ３０は、ソフトウェアを保管しているコンピュータである。保管サーバ３０は、ソフトウェアの１以上のバージョンを記憶装置により記憶している。
【００６５】
ネットワークＮは、管理装置１０Ａ等、開発装置２０Ａおよび保管サーバ３０を互いに通信可能に接続する通信回線である。通信回線の種別は特に限定されず、有線ネットワーク、無線ネットワークを任意に組み合わせたものであってよい。また、インターネットの一部がネットワークＮに含まれてもよい。
【００６６】
以降において、保管サーバ３０、開発装置２０Ａ等、及び、管理装置１０Ａ等についてさらに詳しく説明する。
【００６７】
図４は、本実施の形態に係る保管サーバ３０の構成を示すブロック図である。
【００６８】
図４に示されるように、保管サーバ３０は、通信部３１と、保管部３２と、発行部３３と、記憶装置３４とを備える。保管サーバ３０が備える各機能は、プロセッサがメモリを用いて所定のプログラムを実行することで実現され得る。
【００６９】
通信部３１は、ネットワークＮに接続される通信インタフェース装置である。保管サーバ３０は、通信部３１を介して開発装置２０Ａと通信可能である。
【００７０】
保管部３２は、記憶装置３４を用いてソフトウェアを保管している処理部である。保管部３２は、通信部３１を介して開発装置２０Ａから新たなバージョンのソフトウェアを取得したら、取得したソフトウェアを記憶装置３４に格納する。また、記憶装置３４に格納されているソフトウェアを、ユーザからの要求に応じて読み出す。
【００７１】
発行部３３は、ソフトウェアが格納されている場所を示す場所情報を発行する処理部である。発行部３３は、保管部３２がソフトウェアを記憶装置３４に格納した場合に、そのソフトウェアが格納されている場所を示す情報を取得して、その場所を示す場所情報を生成することで、場所情報を発行する。発行部３３は、生成した場所情報を開発装置２０Ａに通知する。
【００７２】
場所情報は、例えば、記憶装置３４内でのソフトウェアに係る電子ファイルのインターネット上での位置を示すＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）であり、以降では、この場合を例として説明する。ＵＲＬは、例えば、記憶装置３４内での所在を示すパス（Ｐａｔｈ）及びファイル名の情報と、保管サーバ３０のホスト名とを含む。
【００７３】
記憶装置３４は、ソフトウェアが格納されている記憶装置である。記憶装置３４には、１以上のバージョンのソフトウェアが格納されている。記憶装置３４には、保管部３２によってソフトウェアが格納され、また、保管部３２によってソフトウェアが読み出される。
【００７４】
図５は、本実施の形態に係る開発装置２０Ａの構成を示すブロック図である。なお、開発装置２０Ｂ及び２０Ｃも同様の構成を備え、それぞれ独立に動作する。
【００７５】
図５に示されるように、開発装置２０Ａは、通信部２１と、開発部２２と、トランザクション生成部２３と、記憶装置２４とを備える。開発装置２０Ａが備える各機能は、プロセッサがメモリを用いて所定のプログラムを実行することで実現され得る。
【００７６】
通信部２１は、ネットワークＮに接続される通信インタフェース装置である。開発装置２０Ａは、通信部２１を介して保管サーバ３０および管理装置１０Ａと通信可能である。
【００７７】
開発部２２は、ユーザによる操作、又は、ソフトウェア開発のためのツールの機能に基づいて、開発者により開発されるソフトウェアの新たなバージョンを生成する処理部である。開発部２２は、具体的には、ソフトウェアの開発の元になるバージョン（第一バージョンに相当）のソフトウェア（又は、プログラム若しくはプログラムコード）を保有しており、保有しているソフトウェアに基づいて新たなバージョン（第二バージョンに相当）のソフトウェアを生成する。このようにして、開発者は、開発装置２０Ａ（具体的には開発部２２）を使用して、ソフトウェアの新たなバージョンを開発する。新たなバージョンを開発することをバージョンアップともいう。開発部２２は、開発された新たなバージョンのソフトウェアを通信部２１を介して保管サーバ３０に送信し保管させる。このとき、開発部２２は、保管サーバ３０内で保管されているソフトウェアの格納場所を示すＵＲＬを保管サーバ３０（具体的には発行部３３）から通知される。
【００７８】
トランザクション生成部２３は、ソフトウェアのバージョンに関する情報を含むトランザクションデータを生成する処理部である。トランザクションデータは、ソフトウェアの第一バージョンに関する情報（第一情報に相当）と、第一バージョンを元に開発者によってバージョンアップされた第二バージョンに関する情報（第二情報に相当）と、開発者の識別情報である開発者ＩＤと、開発者の電子署名とを少なくとも含む。開発者の電子署名は、当該トランザクションデータに含まれる情報から、開発者の秘密鍵での暗号化により生成される。開発者の識別情報および秘密鍵は、トランザクション生成部２３が記憶装置２４から読み出すことで取得され得る。また、トランザクション生成部２３は、生成したトランザクションデータを通信部２１を介して管理装置１０Ａに送信する。
【００７９】
また、トランザクション生成部２３は、新バージョン番号の発行依頼を生成し、管理装置１０Ａに送信し、その応答として、新バージョン番号の通知を受ける。
【００８０】
記憶装置２４は、開発者に関する情報、および、ソフトウェアに関する情報を記憶している記憶装置である。開発者に関する情報は、開発者の識別情報である開発者ＩＤと、開発者の鍵情報（秘密鍵を含む）を含む。開発者ＩＤは、開発者を一意に識別し得る情報である。ソフトウェアに関する情報は、ソフトウェア本体、及び、ソフトウェアの保管サーバ３０における格納場所を示すＵＲＬを含む。ここで、ソフトウェア本体とは、ソフトウェアのプログラムであり、図５において単に「ソフトウェア」と記載されている。記憶装置２４に記憶されているソフトウェア本体は、開発部２２によって読み出される。記憶装置２４に記憶されている開発者ＩＤ、鍵情報およびＵＲＬは、トランザクション生成部２３により読み出される。
【００８１】
図６は、本実施の形態に係る管理装置１０Ａの構成を示すブロック図である。
【００８２】
図６に示されるように、管理装置１０Ａは、通信部１１と、番号管理部１２と、トランザクション検証部１３と、台帳管理部１４と、トークン管理部１６とを備える。管理装置１０Ａが備える各機能は、プロセッサがメモリを用いて所定のプログラムを実行することで実現され得る。
【００８３】
通信部１１は、ネットワークＮに接続される通信インタフェース装置である。管理装置１０Ａは、通信部１１を介して開発装置２０Ａ、及び、他の管理装置１０Ｂ及び１０Ｃと通信可能である。
【００８４】
番号管理部１２は、ソフトウェアのバージョンのバージョン番号を管理している処理部である。番号管理部１２は、開発装置２０Ａからソフトウェアの新しいバージョン番号の発行依頼を受けると、その発行依頼に応じて新しいバージョン番号を発行し、開発装置２０Ａに通知する。番号管理部１２は、現在保有しているバージョンのうち、最新のバージョンのバージョン番号より進んだバージョン番号を発行する。なお、バージョンに複数の系列がある場合には、番号管理部１２は、系列ごとに新しいバージョン番号の発行依頼を受け、系列ごとにバージョン番号を発行する。
【００８５】
ここで、バージョン番号は、所定の規則に従って設定される。例えば、数値を用いて、バージョンが進むほど（つまりバージョンアップするほど）、より大きな数値を有するように設定される。このとき、数値とともに文字が使われてもよい。ここでは、文字によってバージョン系列を示す例を示す。すなわち、最初のバージョンであるバージョン１を元にして開発された系列１Ａに含まれるバージョンを、バージョン１．Ａ１、バージョン１．Ａ２およびバージョン１．Ａ３等という。また、バージョン１を元にして、系列１Ａとは別に開発された系列１Ｂに含まれるバージョンをバージョン１．Ｂ１およびバージョン１．Ｂ２等という。
【００８６】
トランザクション検証部１３は、トランザクションデータの正当性の検証をする処理部である。トランザクション検証部１３は、通信部１１を介して開発装置２０Ａからトランザクションデータを受信する。受信するトランザクションデータは、ソフトウェアの第一バージョンに関する第一情報と、第一バージョンを元に開発者によってバージョンアップされたソフトウェアの第二バージョンに関する第二情報と、開発者の識別情報と、開発者の電子署名とを含んでいる。トランザクション検証部１３は、トランザクションデータを受信すると、受信したトランザクションデータに含まれる電子署名を用いて、当該トランザクションデータの正当性を検証をする。トランザクションデータの正当性の検証は、当該トランザクションデータに含まれる情報と、開発者の公開鍵とを用いてなされ、当該トランザクションデータが正当であるか否かが判定される。より具体的には、当該トランザクションデータが確かに開発装置２０Ａによって生成されたものであること、及び、当該トランザクションデータが生成されてから改ざんされていないことが判定される。なお、トランザクションデータの正当性の検証を、単に、トランザクションデータの検証ともいう。
【００８７】
なお、トランザクション検証部１３が受信するトランザクションデータには、番号管理部１２が通知した新しいバージョン番号が含まれ得る。
【００８８】
また、トランザクション検証部１３が受信するトランザクションデータには、さらに新バージョンのソフトウェアの場所情報であるＵＲＬが含まれていてもよい。
【００８９】
台帳管理部１４は、ソフトウェアのバージョンを管理するための分散台帳を管理している処理部である。ここでは分散台帳がブロックチェーン１５である場合を例として説明するが、他の方式の分散台帳（例えば、ＩＯＴＡ又はハッシュグラフ等）を採用することも可能である。
【００９０】
台帳管理部１４は、トランザクション検証部１３がトランザクションデータを検証した場合に、他の管理装置１０Ｂ及び１０Ｃにトランザクションデータを送信することで、トランザクションデータの同期をとる。そして、台帳管理部１４は、管理装置１０Ａと、他の管理装置１０Ｂおよび１０Ｃとの間でコンセンサスアルゴリズムを実行する。コンセンサスアルゴリズムにおいて合意形成がなされた場合には、当該トランザクションデータを含むブロックを生成し、生成したブロックをブロックチェーン１５に格納する。
【００９１】
なお、コンセンサスアルゴリズムの一例は、ＰＢＦＴ（Ｐｒａｃｔｉｃａｌ  Ｂｙｚａｎｔｉｎｅ  Ｆａｕｌｔ  Ｔｏｌｅｒａｎｃｅ）であるが、これに限定されず、ＰｏＷ（Ｐｒｏｏｆ  ｏｆ  Ｗｏｒｋ）又はＰｏＳ（Ｐｒｏｏｆ  ｏｆ  Ｓｔａｋｅ）なども用いられ得る。
【００９２】
トークン管理部１６は、ユーザ及び開発者それぞれが保有しているトークンを管理している処理部である。トークン管理部１６は、ブロックチェーン１５に格納されているトランザクションデータを参照して、開発者にトークンを提供する。なお、トークン管理部１６は、トークンの管理にブロックチェーンを使用してもよい。
【００９３】
次に、ソフトウェアの新バージョンを管理装置１０Ａ等に管理させるためのトランザクションデータの構成について３つの例を示す。
【００９４】
図７は、本実施の形態に係るトランザクションデータの第一例であるトランザクションデータ４０を示す説明図である。トランザクションデータ４０は、ソフトウェアの第一バージョンに関する第一情報が、ソフトウェアの第一バージョンのハッシュ値と、第一バージョンのバージョン番号とを含み、ソフトウェアの第二バージョンに関する第二情報が、第二バージョンのバージョン番号を含む場合の例である。
【００９５】
図７に示されるように、トランザクションデータ４０は、開発者ＩＤ４１と、ＵＲＬ４２と、新バージョン番号４３と、基バージョン番号４４と、新バージョンのハッシュ値４５と、署名４６とを含む。
【００９６】
開発者ＩＤ４１は、当該トランザクションデータ４０により新たに管理させることになる新バージョンを開発した開発者の識別情報である。
【００９７】
ＵＲＬ４２は、当該トランザクションデータ４０により新たに管理させることになる新バージョンが格納されている場所を示すＵＲＬである。ＵＲＬ４２は、保管サーバ３０の記憶装置３４内において、新バージョンのソフトウェアが格納されている場所を示している。
【００９８】
新バージョン番号４３は、トランザクションデータ４０により新たに管理させることになる新バージョンのバージョン番号である。
【００９９】
基バージョン番号４４は、トランザクションデータ４０により新たに管理させることになる新バージョンの開発の元になったバージョン（基バージョンともいう）のバージョン番号である。
【０１００】
新バージョンのハッシュ値４５は、トランザクションデータ４０により新たに管理させることになる新バージョンのプログラムの全部または所定の一部に対するハッシュ演算により得られたハッシュ値である。
【０１０１】
署名４６は、トランザクションデータ４０に含まれる情報から、開発者の秘密鍵での暗号化により生成された電子署名である。具体的には、署名４６は、開発者ＩＤ４１、ＵＲＬ４２、新バージョン番号４３、基バージョン番号４４、及び、新バージョンのハッシュ値４５を含む情報に対するハッシュ演算により得られたハッシュ値を、開発者の秘密鍵で暗号化した値である。
【０１０２】
図８は、本実施の形態に係るトランザクションデータの第二例であるトランザクションデータ５０を示す説明図である。トランザクションデータ５０は、ソフトウェアの第一バージョンに関する第一情報が、ソフトウェアの第一バージョンのハッシュ値を含み、ソフトウェアの第二バージョンに関する第二情報が、ソフトウェアの第二バージョンのハッシュ値を含む場合の例である。
【０１０３】
図８に示されるように、トランザクションデータ５０は、開発者ＩＤ５１と、ＵＲＬ５２と、新バージョンのハッシュ値５３と、基バージョンのハッシュ値５４と、署名５５とを含む。
【０１０４】
開発者ＩＤ５１およびＵＲＬ５２は、トランザクションデータ４０における同名の情報と同じである。
【０１０５】
新バージョンのハッシュ値５３は、トランザクションデータ５０により新たに管理させることになる新バージョンのソフトウェアのプログラムの全部または所定の一部に対するハッシュ演算により得られたハッシュ値である。
【０１０６】
基バージョンのハッシュ値５４は、トランザクションデータ５０により新たに管理させることになる新バージョンの開発の元になった基バージョンのソフトウェアのプログラムの全部または所定の一部に対するハッシュ演算により得られたハッシュ値である。
【０１０７】
署名５５は、トランザクションデータ５０に含まれる情報から、開発者の秘密鍵での暗号化により生成された電子署名である。具体的には、開発者ＩＤ５１、ＵＲＬ５２、新バージョンのハッシュ値５３、及び、基バージョンのハッシュ値５４を含む情報に対するハッシュ演算により得られたハッシュ値を、開発者の秘密鍵で暗号化した値である。
【０１０８】
図９は、本実施の形態に係るトランザクションデータの第三例であるトランザクションデータ６０を示す説明図である。トランザクションデータ６０は、ソフトウェアの第一バージョンに関する第一情報が、ソフトウェアの第一バージョンのハッシュ値を含み、ソフトウェアの第二バージョンに関する第二情報が、ソフトウェアの第一バージョンと第二バージョンとの差分のハッシュ値を含む場合の例である。
【０１０９】
図９に示されるように、トランザクションデータ６０は、開発者ＩＤ６１と、ＵＲＬ６２と、差分のハッシュ値６３と、基バージョンのハッシュ値６４と、署名６５とを含む。
【０１１０】
開発者ＩＤ６１およびＵＲＬ６２は、トランザクションデータ４０における同名の情報と同じである。
【０１１１】
差分のハッシュ値６３は、トランザクションデータ６０により新たに管理させることになる新バージョンのプログラムと、新バージョンの開発の元になった基バージョンのプログラムとの差分のハッシュ値である。
【０１１２】
基バージョンのハッシュ値６４は、トランザクションデータ６０により新たに管理させることになる新バージョンのソフトウェアのプログラムの全部または所定の一部に対するハッシュ演算により得られたハッシュ値である。
【０１１３】
署名６５は、トランザクションデータ６０に含まれる情報から、開発者の秘密鍵での暗号化により生成された電子署名である。具体的には、開発者ＩＤ６１、ＵＲＬ６２、差分のハッシュ値６３、及び、基バージョンのハッシュ値６４を含む情報に対するハッシュ演算により得られたハッシュ値を、開発者の秘密鍵で暗号化した値である。
【０１１４】
以降において、ブロックチェーン１５に格納されているトランザクションデータについて説明する。
【０１１５】
図１０は、本実施の形態に係るブロックチェーン１５に格納されているトランザクションデータの例を示す説明図である。図１０は、具体的には、管理装置１０Ａ等がブロックチェーン１５によって管理しているトランザクションデータである。図１０に示される１つのエントリ（１行）が、１つのトランザクションデータに対応している。図１０において紙面上の下にあるデータがより新しいトランザクションデータである。
【０１１６】
図１０に示されるように、各トランザクションデータは、ソフトウェアの各バージョンについてのＵＲＬ、新バージョン番号、基バージョン番号及び開発者ＩＤを含んでいる。なお、図１０に示されるトランザクションデータは、図７に示されるトランザクションデータ４０に含まれる各情報に相当している。
【０１１７】
ブロックチェーン１５には、図１０のように、現時点以前のソフトウェアの各バージョンについての情報が格納されている。具体的には、バージョン１からバージョン１．Ａ１、１．Ａ２及び１．Ａ３が開発されたこと、および、バージョン１からバージョン１．Ｂ１及び１．Ｂ２が開発されたことを示す情報が格納されている。
【０１１８】
そして、現時点以前のソフトウェアの各バージョンについての情報は、改ざんが困難であるというブロックチェーンの特性により、改ざんがなされないように管理装置１０Ａによって管理されている。
【０１１９】
以降において、管理システム１の処理を説明する。
【０１２０】
図１１及び図１２は、本実施の形態に係る管理システム１における第一及び第二の処理を示すシーケンス図である。図１１及び図１２は、開発装置２０Ａによってソフトウェアの新たなバージョンが開発されてから、開発されたソフトウェアのバージョンが管理装置１０Ａ等によって管理されるまでの一連の処理を示している。
【０１２１】
図１１に示されるように、ステップＳ１２１において、開発装置２０Ａにより、ソフトウェアの新バージョンが完成する。
【０１２２】
ステップＳ１２２において、開発装置２０Ａは、ステップＳ１２１で開発された新バージョンのソフトウェアを保管サーバ３０に格納すべく、保管サーバ３０に送信する。
【０１２３】
ステップＳ１３１において、保管サーバ３０は、開発装置２０Ａから送信された新バージョンのソフトウェアを受信して記憶装置３４に格納する。
【０１２４】
ステップＳ１３２において、保管サーバ３０は、ステップＳ１３１で格納された新バージョンのソフトウェアの場所を示すＵＲＬを発行する。そして、保管サーバ３０は、発行したＵＲＬを開発装置２０Ａに送信する。ＵＲＬは、ステップＳ１２２で受信したソフトウェアに対する応答として送信され得る。
【０１２５】
ステップＳ１２３において、開発装置２０Ａは、新バージョン番号（新番号ともいう）の発行依頼を生成し、管理装置１０Ａに送信する。ここで、発行依頼とは、ソフトウェアの新バージョンに付ける新たな番号、つまり新バージョン番号を発行することを管理装置１０Ａに依頼するための通信データであり、少なくとも基バージョン番号を含む。
【０１２６】
ステップＳ１１１において、管理装置１０Ａは、ステップＳ１２３で送信された発行依頼を受信し、発行依頼に含まれている基バージョンが、管理装置１０Ａが管理しているブロックチェーン１５に格納されているか否かを判定する。基バージョンがブロックチェーン１５に格納されていると判定した場合（ステップＳ１１１でＹｅｓ）、ステップＳ１１２に進む。
【０１２７】
なお、基バージョンがブロックチェーン１５に格納されていないと判定した場合（不図示）には、管理装置１０Ａは、所定のエラー処理（例えば、発行が失敗したことを示す通知を開発装置２０Ａに送信する処理）を実行し、処理を終える。ただし、この場合、管理装置１０Ａは、なんら処理をせずに処理を終えてもよい。このように、基バージョンがブロックチェーン１５に格納されていないと判定されるのは、例えば、管理装置１０Ａ等で管理されていないバージョンのソフトウェアを管理装置１０Ａ等に管理させようとしたときである。
【０１２８】
ステップＳ１１２において、管理装置１０Ａは、新バージョンのバージョン番号を発行する。
【０１２９】
図１２に移り、ステップＳ１１３において、管理装置１０Ａは、ステップＳ１１２で発行した新バージョンのバージョン番号を、開発装置２０Ａに通知する。新バージョンのバージョン番号の通知は、ステップＳ１２３の発行依頼に対する応答として送信され得る。
【０１３０】
ステップＳ１２４において、新バージョンをブロックチェーン１５に書き込むためのトランザクションデータを生成し、管理装置１０Ａに送信する。このトランザクションデータには、ステップＳ１１３で送信された新バージョン番号、又は、この新バージョン番号を用いて算出される情報が含められる。
【０１３１】
ステップＳ１１４において、管理装置１０Ａは、ステップＳ１２４で開発装置２０Ａが送信したトランザクションデータを検証する。ここでは、トランザクションデータの検証の結果、トランザクションデータが正当であると判定されたとする。
【０１３２】
ステップＳ１１５において、管理装置１０Ａは、トランザクションデータを管理装置１０Ｂ及び１０Ｃに送信する。そして、管理装置１０Ａ等によるコンセンサスアルゴリズムの実行により、トランザクションデータを含むブロックがブロックチェーン１５に格納される。これにより、開発者が開発したソフトウェアの新バージョンに関する情報、より具体的には、開発者ＩＤ及びバージョン番号がブロックチェーン１５に格納され、その格納時以降の改ざんが困難になる。
【０１３３】
なお、ステップＳ１１４でトランザクションデータの検証に失敗した、つまり、トランザクションデータが正当でないと検証された場合には、その旨を開発装置２０Ａに通知するようにしてもよい。このようにすれば、開発者がそのことを認識し対処することができる。一方、上記通知はなされなくてもよい。
【０１３４】
なお、ソフトウェアそのものを管理装置１０Ａがブロックチェーン１５に格納して管理してもよい。このようにすれば、バージョンに関する情報だけでなく、ソフトウェアそのものの改ざんも抑制しながらソフトウェアを管理することができ、より有用となる。このようにするには、開発装置２０Ａが、ソフトウェアそのもの（つまりソフトウェアのプログラムコード）を含むトランザクションデータを生成して管理装置１０Ａに送信し、管理装置１０Ａが、受信した上記トランザクションデータをブロックチェーン１５に格納すればよい。
【０１３５】
以上のように、本実施の形態の管理方法によれば、ソフトウェアのバージョンアップをした開発者に関する情報が分散台帳によって管理される。分散台帳は、保有している情報の改ざんが困難であり、また、システムダウンの影響を受けにくいという利点がある。よって、上記管理方法によって、管理している情報の改ざんの発生を抑制することができる。
【０１３６】
また、新しいバージョンのバージョン番号を発行し、その発行したバージョン番号と紐付けて新しいバージョンの開発者に関する情報が管理される。当該バージョン管理システムと異なる装置などによってバージョン番号を付すとすれば、バージョン番号の重複などの不備が生じ得る。本発明に係る管理方法によれば、バージョン番号の不備を未然に回避しながら、管理している情報の改ざんの発生を抑制することができる。
【０１３７】
また、第一バージョンのハッシュ値と、第一バージョンのバージョン番号と、第二バージョンのバージョン番号とを用いて、より容易に、管理している情報の改ざんの発生を抑制することができる。
【０１３８】
また、第一バージョンのハッシュ値と、第二バージョンのハッシュ値とを用いて、より容易に、管理している情報の改ざんの発生を抑制することができる。
【０１３９】
また、第一バージョンのハッシュ値と、第一バージョンと第二バージョンとの差分のハッシュ値とを用いて、より容易に、管理している情報の改ざんの発生を抑制することができる。
【０１４０】
また、第二バージョンのソフトウェアの格納場所を示す情報が、開発者に関する情報とともに分散台帳に格納される。よって、さらに第二バージョンが格納された場所情報の改ざんの発生をも抑制しながら、管理している情報の改ざんの発生を抑制することができる。
【０１４１】
また、これまでのトランザクションデータに基づいて新しいバージョンの開発者にトークンが提供される。分散台帳に格納されたトランザクションデータの改ざんが困難であるので、開発者になりすます不適切な者へのトークンの提供を未然に回避することができる。このように、管理している情報の改ざんの発生を抑制し、不適切なトークンの提供を未然に回避することができる。
【０１４２】
（実施の形態２）
本実施の形態において、ソフトウェアのバージョン管理方法であって、ソフトウェアの取引の安全性を向上させる管理方法などについて説明する。ここでは、実施の形態１に係るバージョン管理方法で管理されているソフトウェアがユーザに提供されるときの取引の安全性を向上させる管理方法などについて説明する。
【０１４３】
図１３は、本実施の形態に係る管理システム２の構成を示す説明図である。
【０１４４】
図１３に示されるように、本実施の形態に係る管理システム２は、複数の管理装置１０Ａ等と、複数の開発装置２０Ａ等と、保管サーバ３０と、複数のトークン管理装置７０Ａ、７０Ｂ及び７０Ｃ（７０Ａ等ともいう）と、ユーザ装置８０とを備える。なお、本実施の形態に係る複数の管理装置１０Ａ等それぞれを、バージョン管理装置ともいう。また、複数のトークン管理装置７０Ａ等それぞれを、単に管理装置ともいう。なお、トークン管理装置が、バージョン管理装置の機能をあわせもつ構成としてもよい。
【０１４５】
複数の管理装置１０Ａ等と、複数の開発装置２０Ａ等と、保管サーバ３０とは、実施の形態１における同名の構成要素と同じであるので説明を省略する。
【０１４６】
複数のトークン管理装置７０Ａ等は、開発者とユーザとの間でのトークンの授受をコンピュータにより管理する管理装置である。複数のトークン管理装置７０Ａ等の個数が３である場合を例として説明するが、２以上であればいくつであってもよい。複数のトークン管理装置７０Ａ等は、互いに通信可能に接続されている。なお、以降では、複数のトークン管理装置７０Ａ等を代表して、トークン管理装置７０Ａを用いて説明することがあるが、他のトークン管理装置７０Ｂ及び７０Ｃでも同様の説明が成立する。なお、複数のトークン管理装置７０Ａ等は、ネットワークＮを介して通信することもできる。
【０１４７】
複数のトークン管理装置７０Ａ等は、それぞれ、トークンの授受に関する情報を管理するための分散台帳を保有し、保有している分散台帳を、通信によって互いに同期をとりながら更新している。複数のトークン管理装置７０Ａ等のいずれかが、ユーザ装置８０からトークンの授受に関する情報を取得すると、取得した情報の複製を複数のトークン管理装置７０Ａ等それぞれが保有する。分散台帳は、一般に、保有している情報の改ざんが困難であり、また、システムダウンの影響を受けにくいという利点がある。
【０１４８】
ユーザ装置８０は、ソフトウェアを使用するユーザが使用する装置である。ユーザ装置８０は、ユーザに対応付けられている。ユーザ装置８０は、ネットワークＮにアクセス可能である通信機能を有する。ユーザ装置８０がコンピュータ、スマートフォン又はタブレットなどの情報端末である場合を例として説明するが、ネットワークＮにアクセス可能である通信インタフェースを搭載した家電機器であってもよい。
【０１４９】
ユーザ装置８０は、ユーザによる操作などに基づいて、保管サーバ３０に保管されているソフトウェアの提供を受ける。ユーザ装置８０が提供されたソフトウェアは、家電機器に提供され、その後、家電機器がそのソフトウェアを用いて動作する。なお、ユーザ装置８０が家電機器である場合には、ユーザ装置８０は、ソフトウェアが提供された後、提供されたソフトウェアを用いて動作する。
【０１５０】
また、ユーザ装置８０は、ソフトウェアの提供を受ける際に、トークンを開発者に提供するためのトランザクションデータをトークン管理装置７０Ａに送信する。開発者に提供するトークンは、例えばソフトウェアの提供の対価に相当するトークンである。
【０１５１】
以降において、ユーザ装置８０およびトークン管理装置７０Ａ等についてさらに詳しく説明する。
【０１５２】
図１４は、本実施の形態に係るユーザ装置８０の構成を示す説明図である。
【０１５３】
図１４に示されるように、ユーザ装置８０は、通信部８１と、トランザクション生成部８２と、取得部８３と、表示部８４と、入力部８５と、記憶装置８６とを備える。
【０１５４】
通信部８１は、ネットワークＮに接続される通信インタフェース装置である。ユーザ装置８０は、通信部８１を介して保管サーバ３０と通信可能である。
【０１５５】
トランザクション生成部８２は、トークンの授受に関する情報を含むトランザクションデータを生成する処理部である。トランザクションデータは、ユーザＩＤと、バージョン番号と、トークン額と、ユーザの電子署名とを少なくとも含む。ユーザの電子署名は、当該トランザクションデータに含まれる情報から、ユーザの秘密鍵での暗号化により生成される。ユーザＩＤおよび秘密鍵は、トランザクション生成部８２が記憶装置８６から読み出すことで取得され得る。また、トランザクション生成部８２は、生成したトランザクションデータを通信部８１を介してトークン管理装置７０Ａに送信する。トークン額とは、当該トランザクションデータにより提供されるトークンの数量を示す。
【０１５６】
取得部８３は、ソフトウェアを取得する処理部である。取得部８３は、例えば、ソフトウェアを取得するための取得要求を送信し、それに応じて送信されるソフトウェアを取得する。より具体的には、取得部８３は、保管サーバ３０が保管している１以上のバージョンのうち、取得したい一のバージョン（要求バージョンともいう）を決定し、その要求バージョンのソフトウェアの提供を受けるための取得要求を保管サーバ３０に通信部８１を介して送信する。そして、上記取得要求に応じて保管サーバ３０が送信する要求バージョンのソフトウェアを通信部８１を介して受信する。なお、取得部８３によるソフトウェアの取得は、入力部８５がユーザからソフトウェアを取得する指示の入力を受けたことに基づいてなされてもよいし、その他の契機（例えば、新バージョンがリリースされたことなど）に基づいてなされてもよい。また、要求バージョンは、例えば、入力部８５が受け付けるユーザによる指定によって決定されてもよいし、当該ソフトウェアについて予め定められたバージョン（例えば最新バージョン、又は、安定動作が確認されている安定バージョンなど）に決定されてもよい。
【０１５７】
表示部８４は、画像を表示する表示画面である。表示部８４は、ユーザ装置８０に関する各種情報を示す画像を表示する。表示部８４は、例えばソフトウェアを取得するか否かをユーザに問いかける画像を表示する。
【０１５８】
入力部８５は、ユーザによる入力を受け付ける入力インタフェースである。入力部８５は、例えば表示部８４上に重畳して配置され、ユーザによるタッチ操作による入力を受けるタッチパネルである。入力部８５は、その他、キーボード、マウス、タッチパッドなどであってもよい。入力部８５は、例えばソフトウェアを取得する指示の入力を受ける。
【０１５９】
記憶装置８６は、ユーザに関する情報を記憶している記憶装置である。ユーザに関する情報は、具体的には、ユーザの識別情報であるユーザＩＤと、ユーザの鍵情報（秘密鍵を含む）を含む。ユーザＩＤは、ユーザを一意に識別し得る情報である。記憶装置８６に記憶されているユーザＩＤおよび鍵情報は、トランザクション生成部８２により読み出される。
【０１６０】
図１５は、本実施の形態に係るトークン管理装置７０Ａの構成を示す説明図である。
【０１６１】
図１５に示されるように、トークン管理装置７０Ａは、通信部７１と、トランザクション検証部７２と、ＩＤ取得部７３と、台帳管理部７４とを備える。
【０１６２】
通信部７１は、ネットワークＮに接続される通信インタフェース装置である。トークン管理装置７０Ａは、通信部７１を介してユーザ装置８０、保管サーバ３０、並びに、他のトークン管理装置７０Ｂ及び７０Ｃと通信可能である。
【０１６３】
トランザクション検証部７２は、トランザクションデータの正当性の検証をする処理部である。トランザクション検証部７２は、通信部７１を介してユーザ装置８０からトランザクションデータを受信する。受信するトランザクションデータは、ユーザＩＤと、バージョン番号と、トークン額と、ユーザの電子署名とを含んでいる。トランザクション検証部７２は、トランザクションデータを受信すると、受信したトランザクションデータに含まれる電子署名を用いて、当該トランザクションデータの正当性を検証をする。トランザクションデータの正当性の検証は、当該トランザクションデータに含まれる情報と、ユーザの公開鍵とを用いてなされ、当該トランザクションデータが正当であるか否かが判定される。より具体的には、当該トランザクションデータが確かにユーザ装置８０によって生成されたものであること、及び、当該トランザクションデータが生成されてから改ざんされていないことが判定される。なお、トランザクションデータの正当性の検証を、単に、トランザクションデータの検証ともいう。
【０１６４】
トランザクション検証部７２が取得したトランザクションデータに、要求バージョンの開発者の開発者ＩＤが含まれていない場合には、上記開発者ＩＤがＩＤ取得部７３により取得される。
【０１６５】
ＩＤ取得部７３は、ソフトウェアの要求バージョンの開発者の開発者ＩＤを取得する処理部である。ＩＤ取得部７３は、トランザクション検証部７２が取得したトランザクションデータに、要求バージョンの開発者の開発者ＩＤが含まれているか否かを判定する。そして、トランザクションデータに開発者ＩＤが含まれていない場合には、トランザクションデータに含まれている要求バージョンのバージョン番号を管理装置１０Ａに問い合わせる。管理装置１０Ａは、この問い合わせに応じて要求バージョンのバージョン番号をトークン管理装置７０Ａ（ＩＤ取得部７３）に送信する。ＩＤ取得部７３は、バージョン番号を受信すると、トランザクション検証部７２が受信したトランザクションデータに含まれていたユーザＩＤと、バージョン番号と、トークン額とに加えて、管理装置１０Ａから取得した開発者ＩＤを含めたトランザクションデータを生成する。
【０１６６】
台帳管理部７４は、トークンの授受を管理するための分散台帳を管理している処理部である。ここでは分散台帳がブロックチェーン７５である場合を例として説明するが、他の方式の分散台帳（例えば、ＩＯＴＡ又はハッシュグラフ等）を採用することも可能である。
【０１６７】
台帳管理部７４は、トランザクション検証部７２がトランザクションデータを検証した場合、トランザクションデータに要求バージョンの開発者の開発者ＩＤが含まれていないときには、ＩＤ取得部７３が生成したトランザクションデータをブロックチェーン７５に格納する。一方、トランザクションデータに要求バージョンの開発者の開発者ＩＤが含まれているときには、トランザクション検証部７２が検証したトランザクションデータをブロックチェーン７５に格納する。ブロックチェーン７５に格納する際には、台帳管理部７４は、他のトークン管理装置７０Ｂ及び７０Ｃにトランザクションデータを送信することで、トランザクションデータの同期をとる。そして、台帳管理部７４は、トークン管理装置７０Ａと、他のトークン管理装置７０Ｂおよび７０Ｃとの間でコンセンサスアルゴリズムを実行する。コンセンサスアルゴリズムにおいて合意形成がなされた場合には、当該トランザクションデータを含むブロックを生成し、生成したブロックをブロックチェーン７５に格納する。なお、台帳管理部７４がブロックチェーン７５に格納するトランザクションデータを第一トランザクションデータともいう。
【０１６８】
なお、コンセンサスアルゴリズムの一例は、ＰＢＦＴ（Ｐｒａｃｔｉｃａｌ  Ｂｙｚａｎｔｉｎｅ  Ｆａｕｌｔ  Ｔｏｌｅｒａｎｃｅ）であるが、これに限定されず、ＰｏＷ（Ｐｒｏｏｆ  ｏｆ  Ｗｏｒｋ）又はＰｏＳ（Ｐｒｏｏｆ  ｏｆ  Ｓｔａｋｅ）なども用いられ得る。
【０１６９】
図１６は、本実施の形態に係るトランザクションデータの第一例であるトランザクションデータ９０を示す説明図である。トランザクションデータ９０は、ユーザが要求するバージョンの開発者の開発者ＩＤを含まないトランザクションデータの例である。トランザクションデータ９０は、ユーザ装置８０が上記開発者ＩＤを保有していない場合に使用され得る。
【０１７０】
図１６に示されるように、トランザクションデータ９０は、ユーザＩＤ９１と、要求バージョン番号９２と、トークン額９３と、署名９４とを含む。
【０１７１】
ユーザＩＤ９１は、トランザクションデータ９０の送信元であるユーザ装置８０に対応するユーザのユーザＩＤである。
【０１７２】
要求バージョン番号９２は、トランザクションデータ９０によってユーザ装置８０が新たに取得するバージョン、つまり要求バージョンのバージョン番号である。
【０１７３】
トークン額９３は、トランザクションデータ９０によってユーザが開発者に提供するトークンの額である。
【０１７４】
署名９４は、トランザクションデータ９０に含まれる情報から、ユーザの秘密鍵での暗号化により生成された電子署名である。具体的には、署名９４は、ユーザＩＤ９１、要求バージョン番号９２、及び、トークン額９３を含む情報に対するハッシュ演算により得られたハッシュ値を、ユーザの秘密鍵で暗号化した値である。
【０１７５】
トークン管理装置７０Ａは、トランザクションデータ９０を受信した場合には、トランザクションデータ９０に含まれている要求バージョン番号９２を参照して、要求バージョン番号９２に係るバージョンの開発者の識別情報を管理装置１０Ａ等から取得して、ユーザからその開発者へのトークンの提供を制御する。
【０１７６】
図１７は、本実施の形態に係るトランザクションデータの第二例であるトランザクションデータ９０Ａを示す説明図である。トランザクションデータ９０Ａは、ユーザが要求するバージョンの開発者の開発者ＩＤを含むトランザクションデータの例である。トランザクションデータ９０Ａは、ユーザ装置８０が上記開発者ＩＤを保有している場合に使用され得る。
【０１７７】
図１７に示されるように、トランザクションデータ９０Ａは、ユーザＩＤ９１と、要求バージョン番号９２と、トークン額９３と、開発者ＩＤ９３Ａと、署名９４とを含む。トランザクションデータ９０Ａは、トランザクションデータ９０に対して開発者ＩＤ９３Ａが追加されたものである。
【０１７８】
ユーザＩＤ９１と、要求バージョン番号９２と、トークン額９３とは、トランザクションデータ９０における同名の情報と同じである。
【０１７９】
開発者ＩＤ９３Ａは、トランザクションデータ９０Ａによってユーザが新たに取得するバージョン、つまり要求バージョンの開発者の開発者ＩＤである。
【０１８０】
署名９４は、トランザクションデータ９０Ａに含まれる情報から、ユーザの秘密鍵での暗号化により生成された電子署名である。具体的には、署名９４は、ユーザＩＤ９１、要求バージョン番号９２、トークン額９３、及び、開発者ＩＤ９３Ａを含む情報に対するハッシュ演算により得られたハッシュ値を、ユーザの秘密鍵で暗号化した値である。
【０１８１】
トークン管理装置７０Ａは、トランザクションデータ９０Ａを受信した場合には、トランザクションデータ９０Ａに含まれている要求バージョン番号９２と開発者ＩＤ９３Ａを参照して、要求バージョン番号９２の開発者が確かに開発者ＩＤ９３Ａに示される開発者であると判定してから、トークンの授受を制御する。
【０１８２】
なお、トークン管理装置７０Ａは、上記の判定をすることなくトークンの授受の制御をしてもよい。トランザクションデータ９０Ａに含まれている開発者ＩＤ９３Ａが正しいことが保証されている場合には、このような制御も可能である。
【０１８３】
図１８は、本実施の形態に係るブロックチェーン７５に格納されているトランザクションデータを示す説明図である。図１８は、具体的には、トークン管理装置７０Ａ等がブロックチェーン７５によって管理しているトランザクションデータである。図１８に示される１つのエントリ（１行）が、１つのトランザクションデータに対応している。図１８において紙面上の下にあるデータがより新しいトランザクションデータである。
【０１８４】
図１８に示されるように、各トランザクションデータは、トークンの授受に関する情報として、トークン額、トークンの提供元、及び、トークンの提供先を示す情報を含んでいる。なお、図１８に示されるトランザクションデータの提供元およびトークン額が、それぞれ、図１６に示されるトランザクションデータ９０に含まれるユーザＩＤ９１およびトークン額９３に対応している。また、図１８に示されるトランザクションデータの提供元、提供先およびトークン額が、それぞれ、図１７に示されるトランザクションデータ９０Ａに含まれるユーザＩＤ９１、開発者ＩＤ９３Ａおよびトークン額９３に対応している。
【０１８５】
ブロックチェーン７５には、図１８のように、現時点以前のソフトウェアの提供の際のトークンの授受についての情報が格納されている。具体的には、ユーザＡから開発者Ｘに５０トークン（つまり、トークン額が５０であるトークン）が提供されたことを示す情報などが格納されている。
【０１８６】
そして、現時点以前のソフトウェアの提供の際のトークンの授受についての情報が、改ざんが困難であるというブロックチェーンの特性により、改ざんがなされないようにトークン管理装置７０Ａによって管理されている。
【０１８７】
以降において、管理システム２の処理を説明する。管理システム２の処理について、ユーザ装置８０が開発者ＩＤを含まないトランザクションデータを送信する場合（下記（１））と、ユーザ装置８０が開発者ＩＤを含むトランザクションデータを送信する場合（下記（２））とを分けて説明する。
【０１８８】
（１）ユーザが要求するバージョンの開発者の開発者ＩＤを含まないトランザクションデータ（図１６参照）をユーザ装置８０が送信する場合の例を説明する。
【０１８９】
この場合、要求情報を含むトランザクションデータ（第二トランザクションデータともいう）であって、ユーザの識別情報を所定のトークンの提供元としてさらに含む第二トランザクションデータを、ユーザ装置８０がトークン管理装置７０Ａに送信する。第二トランザクションデータに含まれる要求情報により示される要求バージョンの開発者の識別情報を、トークン管理装置７０Ａが管理装置１０Ａから取得する。そして、第一トランザクションデータをブロックチェーン７５に格納する際には、第二トランザクションデータに含まれる提供元であるユーザの識別情報を、所定のトークンの提供元として含み、管理装置１０Ａから取得した識別情報を所定のトークンの提供先として含む第一トランザクションデータを生成し、複数のトークン管理装置７０Ａ等それぞれが、生成された第一トランザクションデータをブロックチェーン７５に格納する。
【０１９０】
図１９及び図２０は、本実施の形態に係る管理システム２における処理を示すシーケンス図である。
【０１９１】
図１９に示されるように、ステップＳ２８１において、ユーザ装置８０は、新たなバージョンのソフトウェアを取得する指示の入力をユーザから受ける。
【０１９２】
ステップＳ２８２において、ユーザ装置８０は、新たなバージョンのソフトウェアを取得するためのトランザクションデータを生成して、トークン管理装置７０Ａに送信する。このトランザクションデータには、ユーザが要求するバージョンの開発者の開発者ＩＤが含まれていない。
【０１９３】
ステップＳ２７１において、トークン管理装置７０Ａは、ステップＳ２８１でユーザ装置８０が送信したトランザクションデータを受信し、受信したトランザクションデータの検証をする。ここでは、トランザクションデータの検証の結果、トランザクションデータが正当であると判定されたとする。また、トークン管理装置７０Ａは、トランザクションデータに開発者ＩＤが含まれていないことを判定する。
【０１９４】
ステップＳ２７２において、トークン管理装置７０Ａは、ユーザが要求するバージョンの開発者の開発者ＩＤの問い合わせのための通信パケットを管理装置１０Ａに送信する。上記通信パケットには、要求バージョン番号が少なくとも含まれている。
【０１９５】
ステップＳ２１１において、管理装置１０Ａは、ステップＳ２７２で送信された問い合わせのための通信パケットを受信し、台帳管理部１４が管理しているブロックチェーン１５を参照して、ユーザが要求するバージョンの開発者の開発者ＩＤを特定する。また、管理装置１０Ａは、特定した開発者ＩＤを含む通信パケットをトークン管理装置７０Ａに送信する。
【０１９６】
ステップＳ２７３において、トークン管理装置７０Ａは、ステップＳ２１１で送信された通信パケットを受信し、受信したパケットに含まれている開発者ＩＤを取得する。そして、トークン管理装置７０Ａは、ステップＳ２７１で受信したトランザクションデータのユーザＩＤ９１、要求バージョン番号９２及びトークン額９３（図１６参照）と、上記で取得した開発者ＩＤとを含むトランザクションデータを生成する。生成されるトランザクションデータは、図１７のトランザクションデータ９０Ａの形式を有する。
【０１９７】
ステップＳ２７４において、トークン管理装置７０Ａは、ステップＳ２７３で生成したトランザクションデータをトークン管理装置７０Ｂ及び７０Ｃに送信する。そして、トークン管理装置７０Ａ等によるコンセンサスアルゴリズムの実行により、トランザクションデータを含むブロックがブロックチェーン７５に格納される。これにより、ユーザが要求するバージョンに関する情報、より具体的には、ユーザＩＤ、要求バージョン番号、トークン額および開発者ＩＤがブロックチェーン７５に格納され、その格納時以降の改ざんが困難になる。
【０１９８】
図２０に移り、ステップＳ２７５において、トークン管理装置７０Ａは、上記ユーザへのソフトウェアの提供を許可することを示す通知（許可通知ともいう）を含む通信パケットを、保管サーバ３０に送信する。
【０１９９】
ステップＳ２３１において、保管サーバ３０は、アクセス情報を発行し、アクセス情報を含む通信パケットをユーザ装置８０に送信する。ここでアクセス情報とは、ユーザ装置８０が保管サーバ３０に記憶されているソフトウェアをダウンロードするために必要な情報であり、ソフトウェアの格納場所を示す場所情報（具体的にはＵＲＬ）および認証情報を少なくとも含む。認証情報は、例えば、ユーザＩＤとパスワードとである。
【０２００】
ステップＳ２８３において、ユーザ装置８０は、ステップＳ２３１で送信された通信パケットを受信し、受信した通信パケットに含まれているアクセス情報に基づいて、ソフトウェアをダウンロードする。具体的には、アクセス情報に含まれている場所情報に示される場所に、認証情報を用いてアクセスし、ソフトウェアをダウンロードする。
【０２０１】
（２）ユーザが要求するバージョンの開発者の開発者ＩＤを含むトランザクションデータ（図１７参照）をユーザ装置８０が送信する場合の例を説明する。
【０２０２】
この場合、ユーザの識別情報を所定のトークンの提供元として含み、要求バージョンの開発者の識別情報を所定のトークンの提供先として含む、第一トランザクションデータを、ユーザ装置８０がトークン管理装置７０Ａに送信する。そして、第一トランザクションデータをブロックチェーン７５に格納する際には、ユーザ装置８０から受信した第一トランザクションデータをブロックチェーン７５に格納する。
【０２０３】
図２１は、本実施の形態に係る管理システム２における第三の処理を示すシーケンス図である。図２１に示されるステップＳ２８１及びＳ２８２は、図１９における同名の処理と同じである。
【０２０４】
ステップＳ２７１Ａにおいて、トークン管理装置７０Ａは、ステップＳ２８２でユーザ装置８０が送信したトランザクションデータを受信し、受信したトランザクションデータの検証をする。ここでは、トランザクションデータの検証の結果、トランザクションデータが正当であると判定されたとする。また、トークン管理装置７０Ａは、トランザクションデータに開発者ＩＤが含まれていることを判定する。
【０２０５】
ステップＳ２７４において、トークン管理装置７０Ａは、ステップＳ２７１Ａで受信したトランザクションデータをトークン管理装置７０Ｂ及び７０Ｃに送信する。そして、トークン管理装置７０Ａ等によるコンセンサスアルゴリズムの実行により、トランザクションデータを含むブロックがブロックチェーン７５に格納される。これにより、ユーザが要求するバージョンに関する情報、より具体的には、ユーザＩＤ、要求バージョン番号、トークン額および開発者ＩＤがブロックチェーン７５に格納され、その格納時以降の改ざんが困難になる。
【０２０６】
ステップＳ２７４の後には、図２０に示される一連の処理が実行される。
【０２０７】
なお、図２１に示される一連の処理において、さらにユーザ装置８０から取得したトランザクションデータに含まれる開発者ＩＤが、確かに、トランザクションデータに含まれる要求バージョンの開発者の開発者ＩＤであるか否かを判定してから、当該トランザクションデータをブロックチェーンに格納するようにしてもよい。
【０２０８】
つまり、第一トランザクションデータに含まれる要求情報により示される要求バージョンの開発者の識別情報である第一識別情報を、管理装置１０Ａから取得し、第一識別情報と、第一トランザクションデータに含まれる識別情報である第二識別情報とが一致するときに限り、第一トランザクションデータをブロックチェーン７５に格納するようにしてもよい。
【０２０９】
この場合の処理のシーケンスを以降で説明する。
【０２１０】
図２２は、本実施の形態に係る管理システム２における第四の処理を示すシーケンス図である。図２２に示されるステップのうち、ステップＳ２７１Ａ及びステップＳ２７２Ａ以外のステップは、図１９又は図２１における同名の処理と同じである。
【０２１１】
図２２に示される処理では、ステップＳ２７１Ａでトランザクションデータに開発者ＩＤが含まれていることを判定した場合において、トークン管理装置７０Ａは、開発者ＩＤの問い合わせのための通信パケットを管理装置１０Ａに送信し（ステップＳ２７２）、開発者ＩＤを取得する。
【０２１２】
ステップＳ２７２Ａにおいて、トークン管理装置７０Ａは、管理装置１０Ａから取得した開発者ＩＤ（第一識別情報に相当）と、ステップＳ２７１Ａでユーザ装置８０から受信したトランザクションデータに含まれる開発者ＩＤ（第二識別情報に相当）とが一致するか否かを判定する。そして、両開発者ＩＤが一致するときに限り、ステップＳ２７１Ａで受信したトランザクションデータを含むブロックをブロックチェーン７５に格納する。
【０２１３】
このようにすることで、ユーザ装置８０から取得した開発者ＩＤと、管理装置１０Ａで管理されている開発者ＩＤと不一致となった場合、つまり、開発者ＩＤに不備がある場合に、トランザクションデータをブロックチェーン７５に格納することを防ぐことができる。
【０２１４】
なお、トークン管理装置７０Ａ等の処理は、スマートコントラクトにより実現されてもよい。すなわち、トークン管理装置７０Ａの台帳管理部７４に、上記スマートコントラクトのためのプログラムコードであるスマートコントラクトコードを含むトランザクションデータを含むブロックチェーンが格納されている。そして、ステップＳ２８２でユーザ装置８０がトランザクションデータを送信する際に、スマートコントラクトの実行を要求するトランザクションデータを送信する。これにより、スマートコントラクトにより上記プログラムコードが実行されることで、図１９又は図２１、及び、図２０に示されるトークン管理装置７０Ａ等の処理が実行される。
【０２１５】
このようにすることで、ユーザ装置８０によるトランザクションデータの送信を契機としてプログラムが実行され一連の処理がなされる。その結果、プログラムの実行結果がブロックチェーンに格納され、一連の処理の結果の改ざんが困難になる利点がある。
【０２１６】
以上のように、本実施の形態の管理方法によれば、ユーザからソフトウェアの新たなバージョンの開発者へトークンが提供されたことが、分散台帳によって管理される。分散台帳は、保有している情報の改ざんが困難であり、また、システムダウンの影響を受けにくいという利点があるので、分散台帳によってトークンの授受を管理することで、トークンの授受の履歴が改ざんされたり、トークンの授受の履歴が欠落したりすることが抑制される。よって、ソフトウェアのバージョン管理方法において、ソフトウェアの取引の安全性を向上させることができる。
【０２１７】
また、ユーザ装置から第二トランザクションデータを用いて受信した要求バージョンの開発者の識別情報をバージョン管理装置から取得して、その開発者の識別情報をトークンの提供先として利用する。これにより、ユーザが要求バージョンの開発者を知らない、つまりユーザ装置が上記開発者の識別情報を保有していない場合であっても、ユーザから開発者にトークンが提供されたことが分散台帳によって管理される。よって、ユーザが要求バージョンの開発者を知らない場合であっても、ソフトウェアの取引の安全性を向上させることができる。
【０２１８】
また、ユーザ装置から要求バージョンの開発者にトークンが提供されたことを示すトランザクションデータが、ユーザ装置からトークン管理装置に送信される。よって、トークン管理装置が他の装置などから要求バージョンの開発者に関する情報を得ることなく、ユーザから開発者にトークンが提供されたことが分散台帳によって管理される。よって、トークン管理装置が他の装置などから要求バージョンの開発者に関する情報を得ることなく、ソフトウェアの取引の安全性を向上させることができる。
【０２１９】
また、ユーザ装置から第一トランザクションデータを用いて受信した要求バージョンの開発者の識別情報が、バージョン管理装置で管理している開発者の識別情報と一致する場合に限り、分散台帳に格納されて管理される。よって、仮にユーザ装置が保有している開発者の識別情報が正しくない（つまり、誤りがある、又は、不正である）場合には、ユーザから開発者へのトークンの提供がなされない。このようにして、正しくない開発者にトークンが提供されることが未然に回避される。よって、ユーザ装置が保有している情報が不正である場合に、不正な開発者にトークンが提供されることを回避することによって、ソフトウェアの取引の安全性を向上させることができる。
【０２２０】
また、ユーザから開発者へのトークンの提供が分散台帳によって管理された後に、要求バージョンのソフトウェアがユーザに提供される。よって、ユーザ装置がトークンを提供するのと引き換えに、ソフトウェアの提供を受けるという取引が、より安全になされる。よって、ソフトウェアの取引の安全性を、より一層向上させることができる。
【０２２１】
また、ユーザから開発者へのトークンの提供などの一連の処理が、分散台帳に格納されたスマートコントラクトコードに基づいて、他の人又は他のシステムを介在することなく、自動的に実行される。よって、スマートコントラクトにより、一連の処理が、より一層高い安全性をもって実現される。よって、ソフトウェアの取引の安全性をより一層向上させることができる。
【０２２２】
また、複数のバージョン管理装置が分散台帳によってソフトウェアのバージョンの開発者を管理していて、その開発者の情報がトークンの提供先として用いられる。分散台帳は、保有している情報の改ざんが困難であり、また、システムダウンの影響を受けにくいという利点がある。よって、バージョンの開発者の情報の改ざんなどが抑制され、ソフトウェアの取引の安全性をより一層向上させることができる。
【０２２３】
（実施の形態３）
本実施の形態において、ソフトウェアのバージョン管理方法であって、ソフトウェアの取引の安全性を向上させる管理方法などについて説明する。特に、ソフトウェアの複数の開発者にトークンを配分して提供するときの取引の安全性の向上について説明する。
【０２２４】
図２３は、本実施の形態に係る管理システム２におけるトークンの提供方法を示す説明図である。
【０２２５】
図２３に示されるように、バージョン１を元にして、バージョン１．Ａ１、１．Ａ２及び１．Ａ３がこの順に開発されたとする。ここで、バージョン１．Ａ１、１．Ａ２及び１．Ａ３の開発者は、それぞれ、開発者Ｘ、Ｙ及びＺである。この場合、バージョン１．Ａ３の開発に直接関わったのは開発者Ｚであるが、その開発の元になったバージョン１．Ａ１及び１．Ａ２の開発者Ｘ及びＹもバージョン１．Ａ３の開発に寄与したと考えられる。
【０２２６】
このように考える場合、ユーザＡがバージョン１．Ａ３のソフトウェアの提供を受けるときには、開発者Ｚだけでなく、開発者Ｘ及びＹにもトークンが渡るようにするのが妥当である。
【０２２７】
例えば、図２３に示されるように、ユーザＡが、バージョン１．Ａ３のソフトウェアを取得するのと引き換えに開発者Ｚに１０００トークンを提供する場合、その１０００トークンのうちの２００トークンが開発者Ｙに提供され、さらにその２００トークンのうちの５０トークンが開発者Ｚに提供されるのが妥当である。
【０２２８】
このようにトークンを提供する方法について説明する。
【０２２９】
本実施の形態に係る管理システムの全体的な構成は、実施の形態２の管理システム２におけるものと同じである。
【０２３０】
本実施の形態に係る管理システムは、実施の形態２の管理装置１０Ａ等に代えて管理装置１０Ｄ、１０Ｅ及び１０Ｆ（１０Ｄ等ともいう）を備え、また、実施の形態２のトークン管理装置７０Ａ等に代えてトークン管理装置７０Ｄ、７０Ｅ及び７０Ｆ（７０Ｄ等ともいう）を備える。これらの装置について以下で説明する。
【０２３１】
図２４は、本実施の形態に係る管理装置１０Ｄの構成を示す説明図である。
【０２３２】
図２４に示されるように、管理装置１０Ｄは、実施の形態２の管理装置１０Ａの構成要素に加えて、枝情報生成部１７を備える。
【０２３３】
枝情報生成部１７は、バージョンの開発の履歴を示す枝情報を生成する処理部である。枝情報生成部１７は、トークン管理装置７０Ｄから通信部１１を介して要求バージョンのバージョン番号を受信すると、台帳管理部１４が管理しているブロックチェーン１５を参照して、その要求バージョンの履歴を示す枝情報を生成する。そして、枝情報生成部１７は、生成した枝情報をトークン管理装置７０Ｄに送信する。
【０２３４】
図２５は、本実施の形態に係るトークン管理装置７０Ｄの構成を示す説明図である。
【０２３５】
図２５に示されるように、トークン管理装置７０Ｄは、実施の形態２のトークン管理装置７０Ａの構成要素に加えて、トークン配分部７６を備える。
【０２３６】
トークン配分部７６は、ユーザから提供されるトークンを２以上の開発者に配分する処理を行う処理部である。トークン配分部７６は、ユーザから開発者にトークンを提供することを示すトランザクションデータをユーザ装置８０から受信すると、管理装置１０Ｄから枝情報を取得し、取得した枝情報に基づいて、ユーザから提供されたトークンが２以上の開発者に配分されるように２以上のトランザクションデータを生成する。トークン配分部７６は、管理装置１０Ｄから枝情報を取得するために、要求バージョンを少なくとも含む通信パケットを管理装置１０Ｄに送信するトークン配分部７６が生成した２以上のトランザクションデータは、台帳管理部７４によって、複数のトークン管理装置７０Ｄ等によるコンセンサスアルゴリズムの実行を経て、ブロックチェーン７５に格納される。
【０２３７】
図２６は、本実施の形態に係る枝情報の一例を示す説明図である。図２６には、枝情報の一例として、枝情報をテーブル形式で示す枝情報テーブルＴ１が示されている。なお、枝情報テーブルＴ１では、例として要求バージョンの２つ前のバージョンまでの枝情報が示されているが、要求バージョンの１つ前のバージョンまでの枝情報だけであってもよいし、要求バージョンの３つ以上前のバージョンまでの枝情報をであってもよい。
【０２３８】
枝情報テーブルＴ１では、要求バージョンと、その開発の元になったバージョンとしての要求バージョンの１つ前のバージョンと、要求バージョンの２つ前のバージョンとのそれぞれについて、バージョン番号と開発者とが示されている。
【０２３９】
具体的には、要求バージョンであるバージョン１．Ａ３の開発者が開発者Ｚであることが示されている。また、要求バージョンの１つ前、及び２つ前のバージョン（つまりバージョン１．Ａ２及び１．Ａ３）の開発者がそれぞれ開発者Ｙ及びＸであることが示されている。
【０２４０】
図２７は、本実施の形態に係るトークンを配分するための２以上のトランザクションデータの例を示す説明図である。図２７は、具体的には、トークン管理装置７０Ｄ等がブロックチェーン７５によって管理しているトランザクションデータであって、ユーザＡが提供したトークンが開発者Ｘ、Ｙ及びＺに配分されて提供されることを示すトランザクションデータである。なお、図２７に示されるトランザクションデータの形式は、図１８と同様であり、１つのエントリ（１行）が、１つのトランザクションデータに対応している。
【０２４１】
具体的には、図２７に示されるトランザクションデータ１０１は、ユーザＡから開発者Ｚに１０００トークンが提供されることを示している。トランザクションデータ１０２は、開発者Ｚから開発者Ｙに２００トークンが提供されることを示している。トランザクションデータ１０３は、開発者Ｙから開発者Ｘに５０トークンが提供されることを示している。上記３つのトランザクションデータにより、ユーザＡが要求バージョンのソフトウェアを取得するのと引き換えに、ユーザＡから開発者Ｚに１０００トークンが提供され、開発者Ｚから開発者Ｙに２００トークンが提供され、さらに、開発者Ｙから開発者Ｘに５０トークンが提供されることが、トークン管理装置７０Ｄ等によって管理される。
【０２４２】
ここで、各開発者に配分して提供されるトークンの比率を配分比率ともいう。上記の例では、配分比率は、Ｚ：Ｙ：Ｘ＝１０００：２００：５０と表現される。なお、各開発者のトークンの取得額から提供額を差し引いて、配分比率をＺ：Ｙ：Ｘ＝８００：１５０：５０と表現してもよい。
【０２４３】
このように、２以上の開発者に、要求バージョンより古いバージョンの開発者が含まれている場合には、要求バージョンの開発者、及び、上記古いバージョンの開発者それぞれに対して、より古いほどより低い配分とする配分比率となるようにしてもよい。バージョンの開発に対する貢献の大きさに応じたトークンの配分比率とするのが妥当であるからである。
【０２４４】
図２７に示される３つのトランザクションデータがブロックチェーン７５に格納されることにより、ユーザＡから開発者Ｘ、Ｙ及びＺにトークンが配分して提供され、その後の改ざんが防止される。
【０２４５】
図２８は、本実施の形態に係る管理システムにおける処理を示すシーケンス図である。
【０２４６】
図２８に示されるように、ステップＳ３８１、Ｓ３８２及びＳ３７１は、それぞれ、図１９のステップＳ２８１、Ｓ２８２及びＳ２７１と同じである。
【０２４７】
ステップＳ３７２において、トークン管理装置７０Ｄは、枝情報の問い合わせを含む通信パケットを管理装置１０Ｄに送信する。この通信パケットには、要求バージョンのバージョン番号が少なくとも含まれている。
【０２４８】
ステップＳ３１１において、管理装置１０Ｄは、ステップＳ３７２で送信された通信パケットから、要求バージョンのバージョン番号を取得し、要求バージョンに至るまでのバージョン履歴を示す枝情報を作成し、トークン管理装置７０Ｄに送信する。例えば、要求バージョンが図２３に示されるバージョン１．Ａ３である場合には、バージョン１．Ａ１及び１．Ａ２を含む枝情報を作成する。
【０２４９】
ステップＳ３７３において、トークン管理装置７０Ｄは、履歴情報に基づいてトークンの配分比率を決定する。
【０２５０】
ステップＳ３７４において、トークン管理装置７０Ｄは、ステップＳ３７３で決定したトークンの配分比率に従って、ユーザから開発者にトークンを提供する２以上のトランザクションデータを生成する。
【０２５１】
ステップＳ３７５において、トークン管理装置７０Ｄは、ステップＳ３７４で生成したトランザクションデータをトークン管理装置７０Ｅ及び７０Ｆに送信する。そして、トークン管理装置７０Ｄ等によるコンセンサスアルゴリズムの実行により、トランザクションデータを含むブロックがブロックチェーン７５に格納される。これにより、ユーザから複数の開発者へのトークンの提供に関する情報がブロックチェーン７５に格納され、その格納時以降の改ざんが困難になる。
【０２５２】
上記各実施の形態におけるブロックチェーンについて補足的に説明する。
【０２５３】
図２９は、ブロックチェーンのデータ構造を示す説明図である。
【０２５４】
ブロックチェーンは、その記録単位であるブロックがチェーン（鎖）上に接続されたものである。それぞれのブロックは、複数のトランザクションデータと、直前のブロックのハッシュ値とを有している。具体的には、ブロックＢ２には、その前のブロックＢ１のハッシュ値が含まれている。そして、ブロックＢ２に含まれる複数のトランザクションデータと、ブロックＢ１のハッシュ値とから演算されたハッシュ値が、ブロックＢ２のハッシュ値として、ブロックＢ３に含められる。このように、前のブロックの内容をハッシュ値として含めながら、ブロックをチェーン状に接続することで、記録されたトランザクションデータの改ざんを有効に防止する。
【０２５５】
仮に過去のトランザクションデータが変更されると、ブロックのハッシュ値が変更前と異なる値になり、改ざんしたブロックを正しいものとみせかけるには、それ以降のブロックすべてを作り直さなければならず、この作業は現実的には非常に困難である。この性質を使用して、ブロックチェーンに改ざん困難性が担保されている。
【０２５６】
図３０は、トランザクションデータのデータ構造を示す説明図である。
【０２５７】
図３０に示されるトランザクションデータは、トランザクション本体Ｐ１と、電子署名Ｐ２とを含む。トランザクション本体Ｐ１は、当該トランザクションデータに含まれるデータ本体である。電子署名Ｐ２は、トランザクション本体Ｐ１のハッシュ値に対して、当該トランザクションデータの作成者の署名鍵で署名する、より具体的には、作成者の秘密鍵で暗号化することで生成されたものである。
【０２５８】
トランザクションデータは、電子署名Ｐ２を有するので、改ざんが実質的に不可能である。これにより、トランザクション本体の改ざんが防止される。
【０２５９】
以上のように、本実施の形態の管理方法によれば、要求バージョンの開発に２以上の開発者が関わっている場合に、ユーザから２以上の開発者それぞれにトークンを配分して提供したことが、分散台帳によって管理される。よって、要求バージョンの開発に２以上の開発者が関わっている場合であっても、ソフトウェアの取引の安全性を向上させることができる。
【０２６０】
また、要求バージョンの開発に２以上の開発者が関わっている場合に、より古いほどより低い配分とし、言い換えれば、より新しいほどより高い配分とする配分比率でトークンを提供できる。一般に、要求バージョンにより近いバージョン、つまりより新しいバージョンの開発者の方が、要求バージョンの開発に対する貢献がより大きいと考えられる。そこで、このような貢献の大きさに応じたトークンの配分比率を実現することができる。よって、要求バージョンの開発に関わった２以上の開発者の貢献度に応じたトークンに配分により、ソフトウェアの取引の安全性をより一層向上させることができる。
【０２６１】
なお、上記各実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、ＣＰＵまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。ここで、上記各実施の形態の管理装置などを実現するソフトウェアは、次のようなプログラムである。
【０２６２】
すなわち、このプログラムは、コンピュータに、バージョン管理システムにより実行される、ソフトウェアのバージョンの管理方法であって、前記バージョン管理システムは、分散台帳を保有している複数の管理装置を備え、前記管理方法は、前記複数の管理装置のうちの第１の管理装置が、ユーザが要求する要求バージョンを示す要求情報を取得し、前記ユーザが前記要求バージョンを開発した開発者に所定のトークンを提供することを示す第一トランザクションデータを、前記複数の管理装置それぞれによるコンセンサスアルゴリズムの実行を経て前記分散台帳に格納する管理方法を実行させるプログラムである。
【０２６３】
以上、一つまたは複数の態様に係る管理方法などについて、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、一つまたは複数の態様の範囲内に含まれてもよい。
【産業上の利用可能性】
【０２６４】
本発明は、ソフトウェアのバージョン管理方法であって、管理している情報の改ざんの発生を抑制する管理システムなどに利用可能である。
【符号の説明】
【０２６５】
１、２    管理システム
１０Ａ、１０Ｂ、１０Ｃ、１０Ｄ、１０Ｅ、１０Ｆ    管理装置
１１、２１、３１、７１、８１    通信部
１２    番号管理部
１３、７２    トランザクション検証部
１４、７４    台帳管理部
１５、７５    ブロックチェーン
１６    トークン管理部
１７    枝情報生成部
２０Ａ、２０Ｂ、２０Ｃ    開発装置
２２    開発部
２３、８２    トランザクション生成部
２４、３４、８６    記憶装置
３０    保管サーバ
３２    保管部
３３    発行部
４０、５０、６０、９０、９０Ａ、１０１、１０２、１０３    トランザクションデータ
４１、５１、６１、９３Ａ    開発者ＩＤ
４２、５２、６２    ＵＲＬ
４３    新バージョン番号
４４    基バージョン番号
４５、５３    新バージョンのハッシュ値
４６、５５、６５、９４    署名
５４、６４    基バージョンのハッシュ値
６３    差分のハッシュ値
７０Ａ、７０Ｂ、７０Ｃ、７０Ｄ、７０Ｅ、７０Ｆ    トークン管理装置
７３    ＩＤ取得部
７６    トークン配分部
８０    ユーザ装置
８３    取得部
８４    表示部
８５    入力部
９１    ユーザＩＤ
９２    要求バージョン番号
９３    トークン額
Ａ    ユーザ
Ｂ１、Ｂ２、Ｂ３    ブロック
Ｎ    ネットワーク
Ｐ１    トランザクション本体
Ｐ２    電子署名
Ｘ、Ｙ、Ｚ    開発者
【図１】
2019220148.tif 000003
【図２】
2019220148.tif 000004
【図３】
2019220148.tif 000005
【図４】
2019220148.tif 000006
【図５】
2019220148.tif 000007
【図６】
2019220148.tif 000008
【図７】
2019220148.tif 000009
【図８】
2019220148.tif 000010
【図９】
2019220148.tif 000011
【図１０】
2019220148.tif 000012
【図１１】
2019220148.tif 000013
【図１２】
2019220148.tif 000014
【図１３】
2019220148.tif 000015
【図１４】
2019220148.tif 000016
【図１５】
2019220148.tif 000017
【図１６】
2019220148.tif 000018
【図１７】
2019220148.tif 000019
【図１８】
2019220148.tif 000020
【図１９】
2019220148.tif 000021
【図２０】
2019220148.tif 000022
【図２１】
2019220148.tif 000023
【図２２】
2019220148.tif 000024
【図２３】
2019220148.tif 000025
【図２４】
2019220148.tif 000026
【図２５】
2019220148.tif 000027
【図２６】
2019220148.tif 000028
【図２７】
2019220148.tif 000029
【図２８】
2019220148.tif 000030
【図２９】
2019220148.tif 000031
【図３０】
2019220148.tif 000032