(本発明の基礎となった知見)
本発明者は、「背景技術」の欄において記載した、ソフトウェアの開発に関し、以下の問題が生じることを見出した。
ソフトウェア開発をする際に、開発メーカなどだけでなく不特定多数の開発者が参加する形態である、アジャイル型開発が用いられている。この形態では、多数の開発者がソフトウェアを改良することによりさまざまなバージョン系列が発生し得る。
ソフトウェアを管理する管理システムでは、上記開発者により開発されたソフトウェアのバージョンを示すバージョン情報が、開発者の識別情報とともに管理される(例えば特許文献1参照)。
ここで、バージョン情報は、当該ソフトウェアのバージョンを一意に特定する役割を有する。また、開発者の識別情報は、ソフトウェアの新たなバージョンの開発に係る報酬であるトークンを開発者に提供するために用いられ得る。
しかしながら、従来の管理システムでは、開発者とユーザとの間でのソフトウェアの取引が安全になされないことがあるという問題がある。
そこで、本発明は、ソフトウェアの取引の安全性を向上させる管理方法などを提供する。
本発明の一態様に係る管理方法は、バージョン管理システムにより実行される、ソフトウェアのバージョンの管理方法であって、前記バージョン管理システムは、分散台帳を保有している複数の管理装置を備え、前記管理方法は、前記複数の管理装置のうちの第1の管理装置が、ユーザが要求する要求バージョンを示す要求情報を取得し、前記ユーザが前記要求バージョンを開発した開発者に所定のトークンを提供することを示す第一トランザクションデータを、前記複数の管理装置それぞれによるコンセンサスアルゴリズムの実行を経て前記分散台帳に格納する。
上記態様によれば、ユーザからソフトウェアの新たなバージョンの開発者へトークンが提供されたことが、分散台帳によって管理される。分散台帳は、保有している情報の改ざんが困難であり、また、システムダウンの影響を受けにくいという利点があるので、分散台帳によってトークンの授受を管理することで、トークンの授受の履歴が改ざんされたり、トークンの授受の履歴が欠落したりすることが抑制される。よって、ソフトウェアのバージョン管理方法において、ソフトウェアの取引の安全性を向上させることができる。
例えば、前記バージョン管理システムは、さらに、前記ソフトウェアの1以上のバージョンそれぞれの開発者の識別情報を保有しており、前記管理方法では、さらに、前記要求情報を含むデータであって、前記ユーザの識別情報を前記所定のトークンの提供元としてさらに含む第二トランザクションデータを、前記ユーザが使用するユーザ装置が前記第1の管理装置に送信し、前記第二トランザクションデータに含まれる前記要求情報により示される前記要求バージョンの開発者の識別情報を、前記第1の管理装置が取得し、前記第一トランザクションデータを前記分散台帳に格納する際には、前記第二トランザクションデータに含まれる前記提供元である前記ユーザの識別情報を、前記所定のトークンの提供元として含み、取得した前記識別情報を前記所定のトークンの提供先として含む前記第一トランザクションデータを生成し、前記複数の管理装置それぞれが、生成された前記第一トランザクションデータを前記分散台帳に格納してもよい。
上記態様によれば、ユーザ装置から第二トランザクションデータを用いて受信した要求バージョンの開発者の識別情報をバージョン管理装置から取得して、その開発者の識別情報をトークンの提供先として利用する。これにより、ユーザが要求バージョンの開発者を知らない、つまりユーザ装置が上記開発者の識別情報を保有していない場合であっても、ユーザから開発者にトークンが提供されたことが分散台帳によって管理される。よって、ユーザが要求バージョンの開発者を知らない場合であっても、ソフトウェアの取引の安全性を向上させることができる。
例えば、前記管理方法では、さらに、前記ユーザの識別情報を前記所定のトークンの提供元として含み、前記要求バージョンの開発者の識別情報を前記所定のトークンの提供先として含む、前記第一トランザクションデータを、ユーザ装置が前記第1の管理装置に送信し、前記第一トランザクションデータを前記分散台帳に格納する際には、前記ユーザ装置から受信した前記第一トランザクションデータを前記分散台帳に格納してもよい。
上記態様によれば、ユーザ装置から要求バージョンの開発者にトークンが提供されたことを示すトランザクションデータが、ユーザ装置から管理装置(言い換えればトークン管理装置)に送信される。よって、管理装置が他の装置などから要求バージョンの開発者に関する情報を得ることなく、ユーザから開発者にトークンが提供されたことが分散台帳によって管理される。よって、管理装置が他の装置などから要求バージョンの開発者に関する情報を得ることなく、ソフトウェアの取引の安全性を向上させることができる。
例えば、前記バージョン管理システムは、さらに、前記ソフトウェアの1以上のバージョンそれぞれの開発者の識別情報を保有しており、前記管理方法では、さらに、前記第一トランザクションデータに含まれる前記要求情報により示される前記要求バージョンの開発者の識別情報である第一識別情報を取得し、前記第一識別情報と、前記第一トランザクションデータに含まれる前記識別情報である第二識別情報とが一致するときに限り、前記第一トランザクションデータを前記分散台帳に格納してもよい。
上記態様によれば、ユーザ装置から第一トランザクションデータを用いて受信した要求バージョンの開発者の識別情報が、バージョン管理装置で管理している開発者の識別情報と一致する場合に限り、分散台帳に格納されて管理される。よって、仮にユーザ装置が保有している開発者の識別情報が正しくない(つまり、誤りがある、又は、不正である)場合には、ユーザから開発者へのトークンの提供がなされない。このようにして、正しくない開発者にトークンが提供されることが未然に回避される。よって、ユーザ装置が保有している情報が不正である場合に、不正な開発者にトークンが提供されることを回避することによって、ソフトウェアの取引の安全性を向上させることができる。
例えば、前記バージョン管理システムは、さらに、前記ソフトウェアの1以上のバージョンの格納場所を示す場所情報を保有しており、前記管理方法では、さらに、前記複数の管理装置それぞれが前記第一トランザクションデータを前記分散台帳に格納した後に、前記要求バージョンのソフトウェアの格納場所を示す場所情報を前記ユーザが使用するユーザ装置に提供し、前記ユーザ装置が、提供された前記場所情報を用いて前記要求バージョンのソフトウェアを取得してもよい。
上記態様によれば、ユーザから開発者へのトークンの提供が分散台帳によって管理された後に、要求バージョンのソフトウェアがユーザに提供される。よって、ユーザ装置がトークンを提供するのと引き換えに、ソフトウェアの提供を受けるという取引が、より安全になされる。よって、ソフトウェアの取引の安全性を、より一層向上させることができる。
例えば、前記第一トランザクションデータを前記分散台帳に格納する際には、前記要求バージョンの開発者が2以上存在する場合には、前記ユーザから2以上の前記開発者に、予め定められた配分比率で前記所定のトークンが提供されることを示す前記第一トランザクションデータを前記分散台帳に格納してもよい。
上記態様によれば、要求バージョンの開発に2以上の開発者が関わっている場合に、ユーザから2以上の開発者それぞれにトークンを配分して提供したことが、分散台帳によって管理される。よって、要求バージョンの開発に2以上の開発者が関わっている場合であっても、ソフトウェアの取引の安全性を向上させることができる。
例えば、前記予め定められた配分比率は、2以上の前記開発者に、前記要求バージョンより古いバージョンの開発者が含まれている場合には、前記要求バージョンの開発者、及び、前記古いバージョンの開発者それぞれに対して、より古いほどより低い配分とする配分比率であってもよい。
上記態様によれば、要求バージョンの開発に2以上の開発者が関わっている場合に、より古いほどより低い配分とし、言い換えれば、より新しいほどより高い配分とする配分比率でトークンを提供できる。一般に、要求バージョンにより近いバージョン、つまりより新しいバージョンの開発者の方が、要求バージョンの開発に対する貢献がより大きいと考えられる。そこで、このような貢献の大きさに応じたトークンの配分比率を実現することができる。よって、要求バージョンの開発に関わった2以上の開発者の貢献度に応じたトークンに配分により、ソフトウェアの取引の安全性をより一層向上させることができる。
例えば、前記管理方法に係る処理の一部又は全部は、前記複数の管理装置の分散台帳に格納されたスマートコントラクトコードを実行することでなされてもよい。
上記態様によれば、ユーザから開発者へのトークンの提供などの一連の処理が、分散台帳に格納されたスマートコントラクトコードに基づいて、他の人又は他のシステムを介在することなく、自動的に実行される。よって、スマートコントラクトにより、一連の処理が、より一層高い安全性をもって実現される。よって、ソフトウェアの取引の安全性をより一層向上させることができる。
例えば、前記バージョン管理システムは、さらに、バージョン管理装置を備え、前記バージョン管理装置は、前記ソフトウェアの1以上のバージョンそれぞれの開発者の識別情報を保有していてもよい。
上記態様によれば、バージョン管理装置を用いてソフトウェアの各バージョンの開発者の識別情報を管理する。よって、バージョン管理装置を用いて、より容易に、ソフトウェアのバージョン管理方法において、ソフトウェアの取引の安全性を向上させることができる。
例えば、前記バージョン管理装置は、分散台帳を保有している複数のバージョン管理装置を含み、前記複数のバージョン管理装置が保有している前記分散台帳には、前記ソフトウェアの1以上のバージョンそれぞれの開発者の識別情報を含むトランザクションデータが格納されていてもよい。
上記態様によれば、複数のバージョン管理装置が分散台帳によってソフトウェアのバージョンの開発者を管理していて、その開発者の情報がトークンの提供先として用いられる。分散台帳は、保有している情報の改ざんが困難であり、また、システムダウンの影響を受けにくいという利点がある。よって、バージョンの開発者の情報の改ざんなどが抑制され、ソフトウェアの取引の安全性をより一層向上させることができる。
例えば、前記分散台帳はブロックチェーンであり、前記ユーザが前記要求バージョンを開発した開発者に所定のトークンを提供することを示す第一トランザクションデータを、前記複数の管理装置それぞれによるコンセンサスアルゴリズムの実行を得て前記ブロックチェーンに格納してもよい。
上記態様によれば、複数の管理装置が、分散台帳としてブロックチェーンを用いることによって、より容易に、管理している情報の改ざんの発生を抑制することができる。
本発明の一態様に係る管理装置は、ソフトウェアのバージョンを管理するためのバージョン管理システムが備える、分散台帳を保有している複数の管理装置のうちの1つである管理装置であって、ユーザが要求する要求バージョンを示す要求情報を取得する取得部と、前記ユーザから、前記要求バージョンを開発した開発者に所定のトークンを提供することを示す第一トランザクションデータを、前記複数の管理装置それぞれによるコンセンサスアルゴリズムの実行を経て前記分散台帳に格納する台帳管理部とを備える。
これにより、上記管理方法と同様の効果を奏する。
本発明の一態様に係るプログラムは、ソフトウェアのバージョンを管理するためのバージョン管理システムが備える、分散台帳を保有している複数の管理装置のうちの1つである管理装置として、コンピュータを動作させるためのプログラムであって、ユーザが要求する要求バージョンを示す要求情報を取得し、前記ユーザから、前記要求バージョンを開発した開発者に所定のトークンを提供することを示す第一トランザクションデータを、前記複数の管理装置それぞれによるコンセンサスアルゴリズムの実行を経て前記分散台帳に格納する。
これにより、上記管理方法と同様の効果を奏する。
なお、これらの包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なCD-ROMなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムまたは記録媒体の任意な組み合わせで実現されてもよい。
以下、実施の形態について、図面を参照しながら具体的に説明する。
なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
(実施の形態1)
本実施の形態において、ソフトウェアのバージョン管理方法などについて説明する。ここで、ソフトウェアは、例えば家電機器(洗濯機、エアコン、冷蔵庫、テレビなど)に搭載されて、当該家電機器の動作を制御し、また、当該家電機器の機能を発揮させるソフトウェアである。
図1は、アジャイル型開発によるソフトウェアのバージョン系列を示す説明図である。
図1に示されるように、アジャイル型開発では、開発メーカであるZ社が最初のバージョンであるバージョン1(図において「Ver1」と記載、以下同様)を開発し、開発者のコミュニティに提供する。次に、提供されたバージョン1のソフトウェアを元にしてコミュニティに属する開発者による開発がなされ、さまざまなバージョン系列が生成される。各バージョン系列では、例えば、発揮する機能が互いに異なるソフトウェアが開発される。バージョン系列は、図1において系列1Aなどのように表現されている。バージョン系列には、1以上のバージョンが含まれる。
図1では、バージョン1のソフトウェアに基づいて、開発者Aによる開発によりバージョン1.A1が生成され、開発者Bによる開発によりバージョン1.B1が生成され、開発者Cによる開発によりバージョン1.C1が生成されたことが示されている。
そして、これらのバージョンを元にしてさらなる開発がなされ得る。例えば、バージョン1.A1を元にして、バージョン1.A2が開発され、バージョン1.A2を元にしてバージョン1.A3が開発される。また、バージョン1.B1を元にして、バージョン1.B2が開発される。また、バージョン1.C1を元にして、開発者D及びEにより、複数のバージョン系列としてバージョン1.C1.D1及びバージョン1.C1.E1が開発される。
ここで、バージョン1.A1以降のバージョン(つまり、バージョン1.A1と、バージョン1.A1に基づいて開発されたバージョンであるバージョン1.A2及びバージョン1.A3)を系列1Aという。同様に、バージョン1.B1以降のバージョンを系列1Bという。バージョン1.C1を系列1Cといい、バージョン1.C1.D1を系列1Dといい、バージョン1.C1.E1を系列1Eという。なお、バージョン1と、系列1A~1Eのすべてのバージョンとを含む系列を、系列1ともいう。
このようにして、アジャイル型開発では、開発メーカであるZ社が提供したソフトウェアを元にして、開発メーカとは異なる開発者によりソフトウェアが開発され、複数のバージョン系列が生成される。
そして、複数のバージョンのうちからユーザが望むバージョンがユーザに提供される。例えば、ユーザが望む機能を有するバージョン系列のうちの最新バージョンがユーザに提供される。
図2は、アジャイル型開発におけるトークンの授受を示す説明図である。ここでトークンとは、利益又は価値に相当する概念であり、人(自然人)又はメーカなどの法人が所有し、また、移転されうるものである。アジャイル型開発では、開発者、一般ユーザ及びメーカの間で適切にトークンをやりとりすることで、ソフトウェアの開発が進行する。
例えば、開発者が提供したソフトウェアを一般ユーザが受け取り、ユーザは、自身が保有している家電機器上でそのソフトウェアを動作させることにより家電機器を稼働させる。一般ユーザは、ソフトウェアの提供を受けたことの対価として開発者にトークンを提供する。
また、一般ユーザは、ソフトウェアを搭載した家電機器を稼働させたときの製品のデータをメーカに提供し、そのデータの対価としてトークンの提供を受ける。
ここで、一般ユーザと開発者とは、メーカを介さずに直接トークンをやりとりする。このようなトークンのやりとりが発生すると、不正に利益を得たり、他人の利益を害したりするなどの目的で、管理されている開発者の識別情報の改ざんがなされることがある。識別情報が改ざんされると、悪意者が開発者になりすましてトークンを受け取ったり、他人になりすまして悪意のソフトウェアを提供して評判を悪くしたりすることが可能となってしまうからである。
本実施の形態に係る管理システムは、管理している情報の改ざんの発生を抑制することを目的とする。
図3は、実施の形態1に係る管理システム1の構成を示す説明図である。
図3に示されるように管理システム1は、複数の管理装置10A、10B及び10Cと、複数の開発装置20A、20B及び20Cと、保管サーバ30とを備える。上記の装置は、ネットワークNによって、相互に通信可能に接続されている。
複数の管理装置10A、10B及び10C(10A等ともいう)は、ソフトウェアのバージョンに関する情報をコンピュータにより管理する管理装置である。複数の管理装置10A等の個数が3である場合を例として説明するが、2以上であればいくつであってもよい。複数の管理装置10A等は、互いに通信可能に接続されている。なお、以降では、複数の管理装置10A等を代表して、管理装置10Aを用いて説明することがあるが、他の管理装置10B及び10Cでも同様の説明が成立する。なお、複数の管理装置10A等は、ネットワークNを介して通信することもできる。
複数の管理装置10A等は、それぞれ、ソフトウェアのバージョンに関する情報を管理するための分散台帳を保有し、保有している分散台帳を、通信によって互いに同期をとりながら更新している。複数の管理装置10A等のいずれかが、開発装置20A等のいずれかから新たなバージョンに関する情報を取得すると、取得した情報の複製を複数の管理装置10A等それぞれが保有する。分散台帳は、一般に、保有している情報の改ざんが困難であり、また、システムダウンの影響を受けにくいという利点がある。
複数の開発装置20A、20B及び20C(20A等ともいう)は、ソフトウェアの開発者が使用するコンピュータであり、それぞれ独立に動作する。なお、複数の開発装置20A等の個数が3である場合を例として説明するが、1以上いくつであってもよい。なお、以降では、複数の開発装置20A等を代表して、開発装置20Aを用いて説明することがあるが、他の開発装置20B及び20Cでも同様の説明が成立する。
開発者は、開発装置20Aを使用してソフトウェアの新たなバージョンを開発し、開発した新たなバージョンのソフトウェアを保管サーバ30に送信して、保管させる。また、開発装置20Aは、開発者によって開発された新たなバージョンに関する情報をネットワークNを介して管理装置10A等のいずれかに送信する。
保管サーバ30は、ソフトウェアを保管しているコンピュータである。保管サーバ30は、ソフトウェアの1以上のバージョンを記憶装置により記憶している。
ネットワークNは、管理装置10A等、開発装置20Aおよび保管サーバ30を互いに通信可能に接続する通信回線である。通信回線の種別は特に限定されず、有線ネットワーク、無線ネットワークを任意に組み合わせたものであってよい。また、インターネットの一部がネットワークNに含まれてもよい。
以降において、保管サーバ30、開発装置20A等、及び、管理装置10A等についてさらに詳しく説明する。
図4は、本実施の形態に係る保管サーバ30の構成を示すブロック図である。
図4に示されるように、保管サーバ30は、通信部31と、保管部32と、発行部33と、記憶装置34とを備える。保管サーバ30が備える各機能は、プロセッサがメモリを用いて所定のプログラムを実行することで実現され得る。
通信部31は、ネットワークNに接続される通信インタフェース装置である。保管サーバ30は、通信部31を介して開発装置20Aと通信可能である。
保管部32は、記憶装置34を用いてソフトウェアを保管している処理部である。保管部32は、通信部31を介して開発装置20Aから新たなバージョンのソフトウェアを取得したら、取得したソフトウェアを記憶装置34に格納する。また、記憶装置34に格納されているソフトウェアを、ユーザからの要求に応じて読み出す。
発行部33は、ソフトウェアが格納されている場所を示す場所情報を発行する処理部である。発行部33は、保管部32がソフトウェアを記憶装置34に格納した場合に、そのソフトウェアが格納されている場所を示す情報を取得して、その場所を示す場所情報を生成することで、場所情報を発行する。発行部33は、生成した場所情報を開発装置20Aに通知する。
場所情報は、例えば、記憶装置34内でのソフトウェアに係る電子ファイルのインターネット上での位置を示すURL(Uniform Resource Locator)であり、以降では、この場合を例として説明する。URLは、例えば、記憶装置34内での所在を示すパス(Path)及びファイル名の情報と、保管サーバ30のホスト名とを含む。
記憶装置34は、ソフトウェアが格納されている記憶装置である。記憶装置34には、1以上のバージョンのソフトウェアが格納されている。記憶装置34には、保管部32によってソフトウェアが格納され、また、保管部32によってソフトウェアが読み出される。
図5は、本実施の形態に係る開発装置20Aの構成を示すブロック図である。なお、開発装置20B及び20Cも同様の構成を備え、それぞれ独立に動作する。
図5に示されるように、開発装置20Aは、通信部21と、開発部22と、トランザクション生成部23と、記憶装置24とを備える。開発装置20Aが備える各機能は、プロセッサがメモリを用いて所定のプログラムを実行することで実現され得る。
通信部21は、ネットワークNに接続される通信インタフェース装置である。開発装置20Aは、通信部21を介して保管サーバ30および管理装置10Aと通信可能である。
開発部22は、ユーザによる操作、又は、ソフトウェア開発のためのツールの機能に基づいて、開発者により開発されるソフトウェアの新たなバージョンを生成する処理部である。開発部22は、具体的には、ソフトウェアの開発の元になるバージョン(第一バージョンに相当)のソフトウェア(又は、プログラム若しくはプログラムコード)を保有しており、保有しているソフトウェアに基づいて新たなバージョン(第二バージョンに相当)のソフトウェアを生成する。このようにして、開発者は、開発装置20A(具体的には開発部22)を使用して、ソフトウェアの新たなバージョンを開発する。新たなバージョンを開発することをバージョンアップともいう。開発部22は、開発された新たなバージョンのソフトウェアを通信部21を介して保管サーバ30に送信し保管させる。このとき、開発部22は、保管サーバ30内で保管されているソフトウェアの格納場所を示すURLを保管サーバ30(具体的には発行部33)から通知される。
トランザクション生成部23は、ソフトウェアのバージョンに関する情報を含むトランザクションデータを生成する処理部である。トランザクションデータは、ソフトウェアの第一バージョンに関する情報(第一情報に相当)と、第一バージョンを元に開発者によってバージョンアップされた第二バージョンに関する情報(第二情報に相当)と、開発者の識別情報である開発者IDと、開発者の電子署名とを少なくとも含む。開発者の電子署名は、当該トランザクションデータに含まれる情報から、開発者の秘密鍵での暗号化により生成される。開発者の識別情報および秘密鍵は、トランザクション生成部23が記憶装置24から読み出すことで取得され得る。また、トランザクション生成部23は、生成したトランザクションデータを通信部21を介して管理装置10Aに送信する。
また、トランザクション生成部23は、新バージョン番号の発行依頼を生成し、管理装置10Aに送信し、その応答として、新バージョン番号の通知を受ける。
記憶装置24は、開発者に関する情報、および、ソフトウェアに関する情報を記憶している記憶装置である。開発者に関する情報は、開発者の識別情報である開発者IDと、開発者の鍵情報(秘密鍵を含む)を含む。開発者IDは、開発者を一意に識別し得る情報である。ソフトウェアに関する情報は、ソフトウェア本体、及び、ソフトウェアの保管サーバ30における格納場所を示すURLを含む。ここで、ソフトウェア本体とは、ソフトウェアのプログラムであり、図5において単に「ソフトウェア」と記載されている。記憶装置24に記憶されているソフトウェア本体は、開発部22によって読み出される。記憶装置24に記憶されている開発者ID、鍵情報およびURLは、トランザクション生成部23により読み出される。
図6は、本実施の形態に係る管理装置10Aの構成を示すブロック図である。
図6に示されるように、管理装置10Aは、通信部11と、番号管理部12と、トランザクション検証部13と、台帳管理部14と、トークン管理部16とを備える。管理装置10Aが備える各機能は、プロセッサがメモリを用いて所定のプログラムを実行することで実現され得る。
通信部11は、ネットワークNに接続される通信インタフェース装置である。管理装置10Aは、通信部11を介して開発装置20A、及び、他の管理装置10B及び10Cと通信可能である。
番号管理部12は、ソフトウェアのバージョンのバージョン番号を管理している処理部である。番号管理部12は、開発装置20Aからソフトウェアの新しいバージョン番号の発行依頼を受けると、その発行依頼に応じて新しいバージョン番号を発行し、開発装置20Aに通知する。番号管理部12は、現在保有しているバージョンのうち、最新のバージョンのバージョン番号より進んだバージョン番号を発行する。なお、バージョンに複数の系列がある場合には、番号管理部12は、系列ごとに新しいバージョン番号の発行依頼を受け、系列ごとにバージョン番号を発行する。
ここで、バージョン番号は、所定の規則に従って設定される。例えば、数値を用いて、バージョンが進むほど(つまりバージョンアップするほど)、より大きな数値を有するように設定される。このとき、数値とともに文字が使われてもよい。ここでは、文字によってバージョン系列を示す例を示す。すなわち、最初のバージョンであるバージョン1を元にして開発された系列1Aに含まれるバージョンを、バージョン1.A1、バージョン1.A2およびバージョン1.A3等という。また、バージョン1を元にして、系列1Aとは別に開発された系列1Bに含まれるバージョンをバージョン1.B1およびバージョン1.B2等という。
トランザクション検証部13は、トランザクションデータの正当性の検証をする処理部である。トランザクション検証部13は、通信部11を介して開発装置20Aからトランザクションデータを受信する。受信するトランザクションデータは、ソフトウェアの第一バージョンに関する第一情報と、第一バージョンを元に開発者によってバージョンアップされたソフトウェアの第二バージョンに関する第二情報と、開発者の識別情報と、開発者の電子署名とを含んでいる。トランザクション検証部13は、トランザクションデータを受信すると、受信したトランザクションデータに含まれる電子署名を用いて、当該トランザクションデータの正当性を検証をする。トランザクションデータの正当性の検証は、当該トランザクションデータに含まれる情報と、開発者の公開鍵とを用いてなされ、当該トランザクションデータが正当であるか否かが判定される。より具体的には、当該トランザクションデータが確かに開発装置20Aによって生成されたものであること、及び、当該トランザクションデータが生成されてから改ざんされていないことが判定される。なお、トランザクションデータの正当性の検証を、単に、トランザクションデータの検証ともいう。
なお、トランザクション検証部13が受信するトランザクションデータには、番号管理部12が通知した新しいバージョン番号が含まれ得る。
また、トランザクション検証部13が受信するトランザクションデータには、さらに新バージョンのソフトウェアの場所情報であるURLが含まれていてもよい。
台帳管理部14は、ソフトウェアのバージョンを管理するための分散台帳を管理している処理部である。ここでは分散台帳がブロックチェーン15である場合を例として説明するが、他の方式の分散台帳(例えば、IOTA又はハッシュグラフ等)を採用することも可能である。
台帳管理部14は、トランザクション検証部13がトランザクションデータを検証した場合に、他の管理装置10B及び10Cにトランザクションデータを送信することで、トランザクションデータの同期をとる。そして、台帳管理部14は、管理装置10Aと、他の管理装置10Bおよび10Cとの間でコンセンサスアルゴリズムを実行する。コンセンサスアルゴリズムにおいて合意形成がなされた場合には、当該トランザクションデータを含むブロックを生成し、生成したブロックをブロックチェーン15に格納する。
なお、コンセンサスアルゴリズムの一例は、PBFT(Practical Byzantine Fault Tolerance)であるが、これに限定されず、PoW(Proof of Work)又はPoS(Proof of Stake)なども用いられ得る。
トークン管理部16は、ユーザ及び開発者それぞれが保有しているトークンを管理している処理部である。トークン管理部16は、ブロックチェーン15に格納されているトランザクションデータを参照して、開発者にトークンを提供する。なお、トークン管理部16は、トークンの管理にブロックチェーンを使用してもよい。
次に、ソフトウェアの新バージョンを管理装置10A等に管理させるためのトランザクションデータの構成について3つの例を示す。
図7は、本実施の形態に係るトランザクションデータの第一例であるトランザクションデータ40を示す説明図である。トランザクションデータ40は、ソフトウェアの第一バージョンに関する第一情報が、ソフトウェアの第一バージョンのハッシュ値と、第一バージョンのバージョン番号とを含み、ソフトウェアの第二バージョンに関する第二情報が、第二バージョンのバージョン番号を含む場合の例である。
図7に示されるように、トランザクションデータ40は、開発者ID41と、URL42と、新バージョン番号43と、基バージョン番号44と、新バージョンのハッシュ値45と、署名46とを含む。
開発者ID41は、当該トランザクションデータ40により新たに管理させることになる新バージョンを開発した開発者の識別情報である。
URL42は、当該トランザクションデータ40により新たに管理させることになる新バージョンが格納されている場所を示すURLである。URL42は、保管サーバ30の記憶装置34内において、新バージョンのソフトウェアが格納されている場所を示している。
新バージョン番号43は、トランザクションデータ40により新たに管理させることになる新バージョンのバージョン番号である。
基バージョン番号44は、トランザクションデータ40により新たに管理させることになる新バージョンの開発の元になったバージョン(基バージョンともいう)のバージョン番号である。
新バージョンのハッシュ値45は、トランザクションデータ40により新たに管理させることになる新バージョンのプログラムの全部または所定の一部に対するハッシュ演算により得られたハッシュ値である。
署名46は、トランザクションデータ40に含まれる情報から、開発者の秘密鍵での暗号化により生成された電子署名である。具体的には、署名46は、開発者ID41、URL42、新バージョン番号43、基バージョン番号44、及び、新バージョンのハッシュ値45を含む情報に対するハッシュ演算により得られたハッシュ値を、開発者の秘密鍵で暗号化した値である。
図8は、本実施の形態に係るトランザクションデータの第二例であるトランザクションデータ50を示す説明図である。トランザクションデータ50は、ソフトウェアの第一バージョンに関する第一情報が、ソフトウェアの第一バージョンのハッシュ値を含み、ソフトウェアの第二バージョンに関する第二情報が、ソフトウェアの第二バージョンのハッシュ値を含む場合の例である。
図8に示されるように、トランザクションデータ50は、開発者ID51と、URL52と、新バージョンのハッシュ値53と、基バージョンのハッシュ値54と、署名55とを含む。
開発者ID51およびURL52は、トランザクションデータ40における同名の情報と同じである。
新バージョンのハッシュ値53は、トランザクションデータ50により新たに管理させることになる新バージョンのソフトウェアのプログラムの全部または所定の一部に対するハッシュ演算により得られたハッシュ値である。
基バージョンのハッシュ値54は、トランザクションデータ50により新たに管理させることになる新バージョンの開発の元になった基バージョンのソフトウェアのプログラムの全部または所定の一部に対するハッシュ演算により得られたハッシュ値である。
署名55は、トランザクションデータ50に含まれる情報から、開発者の秘密鍵での暗号化により生成された電子署名である。具体的には、開発者ID51、URL52、新バージョンのハッシュ値53、及び、基バージョンのハッシュ値54を含む情報に対するハッシュ演算により得られたハッシュ値を、開発者の秘密鍵で暗号化した値である。
図9は、本実施の形態に係るトランザクションデータの第三例であるトランザクションデータ60を示す説明図である。トランザクションデータ60は、ソフトウェアの第一バージョンに関する第一情報が、ソフトウェアの第一バージョンのハッシュ値を含み、ソフトウェアの第二バージョンに関する第二情報が、ソフトウェアの第一バージョンと第二バージョンとの差分のハッシュ値を含む場合の例である。
図9に示されるように、トランザクションデータ60は、開発者ID61と、URL62と、差分のハッシュ値63と、基バージョンのハッシュ値64と、署名65とを含む。
開発者ID61およびURL62は、トランザクションデータ40における同名の情報と同じである。
差分のハッシュ値63は、トランザクションデータ60により新たに管理させることになる新バージョンのプログラムと、新バージョンの開発の元になった基バージョンのプログラムとの差分のハッシュ値である。
基バージョンのハッシュ値64は、トランザクションデータ60により新たに管理させることになる新バージョンのソフトウェアのプログラムの全部または所定の一部に対するハッシュ演算により得られたハッシュ値である。
署名65は、トランザクションデータ60に含まれる情報から、開発者の秘密鍵での暗号化により生成された電子署名である。具体的には、開発者ID61、URL62、差分のハッシュ値63、及び、基バージョンのハッシュ値64を含む情報に対するハッシュ演算により得られたハッシュ値を、開発者の秘密鍵で暗号化した値である。
以降において、ブロックチェーン15に格納されているトランザクションデータについて説明する。
図10は、本実施の形態に係るブロックチェーン15に格納されているトランザクションデータの例を示す説明図である。図10は、具体的には、管理装置10A等がブロックチェーン15によって管理しているトランザクションデータである。図10に示される1つのエントリ(1行)が、1つのトランザクションデータに対応している。図10において紙面上の下にあるデータがより新しいトランザクションデータである。
図10に示されるように、各トランザクションデータは、ソフトウェアの各バージョンについてのURL、新バージョン番号、基バージョン番号及び開発者IDを含んでいる。なお、図10に示されるトランザクションデータは、図7に示されるトランザクションデータ40に含まれる各情報に相当している。
ブロックチェーン15には、図10のように、現時点以前のソフトウェアの各バージョンについての情報が格納されている。具体的には、バージョン1からバージョン1.A1、1.A2及び1.A3が開発されたこと、および、バージョン1からバージョン1.B1及び1.B2が開発されたことを示す情報が格納されている。
そして、現時点以前のソフトウェアの各バージョンについての情報は、改ざんが困難であるというブロックチェーンの特性により、改ざんがなされないように管理装置10Aによって管理されている。
以降において、管理システム1の処理を説明する。
図11及び図12は、本実施の形態に係る管理システム1における第一及び第二の処理を示すシーケンス図である。図11及び図12は、開発装置20Aによってソフトウェアの新たなバージョンが開発されてから、開発されたソフトウェアのバージョンが管理装置10A等によって管理されるまでの一連の処理を示している。
図11に示されるように、ステップS121において、開発装置20Aにより、ソフトウェアの新バージョンが完成する。
ステップS122において、開発装置20Aは、ステップS121で開発された新バージョンのソフトウェアを保管サーバ30に格納すべく、保管サーバ30に送信する。
ステップS131において、保管サーバ30は、開発装置20Aから送信された新バージョンのソフトウェアを受信して記憶装置34に格納する。
ステップS132において、保管サーバ30は、ステップS131で格納された新バージョンのソフトウェアの場所を示すURLを発行する。そして、保管サーバ30は、発行したURLを開発装置20Aに送信する。URLは、ステップS122で受信したソフトウェアに対する応答として送信され得る。
ステップS123において、開発装置20Aは、新バージョン番号(新番号ともいう)の発行依頼を生成し、管理装置10Aに送信する。ここで、発行依頼とは、ソフトウェアの新バージョンに付ける新たな番号、つまり新バージョン番号を発行することを管理装置10Aに依頼するための通信データであり、少なくとも基バージョン番号を含む。
ステップS111において、管理装置10Aは、ステップS123で送信された発行依頼を受信し、発行依頼に含まれている基バージョンが、管理装置10Aが管理しているブロックチェーン15に格納されているか否かを判定する。基バージョンがブロックチェーン15に格納されていると判定した場合(ステップS111でYes)、ステップS112に進む。
なお、基バージョンがブロックチェーン15に格納されていないと判定した場合(不図示)には、管理装置10Aは、所定のエラー処理(例えば、発行が失敗したことを示す通知を開発装置20Aに送信する処理)を実行し、処理を終える。ただし、この場合、管理装置10Aは、なんら処理をせずに処理を終えてもよい。このように、基バージョンがブロックチェーン15に格納されていないと判定されるのは、例えば、管理装置10A等で管理されていないバージョンのソフトウェアを管理装置10A等に管理させようとしたときである。
ステップS112において、管理装置10Aは、新バージョンのバージョン番号を発行する。
図12に移り、ステップS113において、管理装置10Aは、ステップS112で発行した新バージョンのバージョン番号を、開発装置20Aに通知する。新バージョンのバージョン番号の通知は、ステップS123の発行依頼に対する応答として送信され得る。
ステップS124において、新バージョンをブロックチェーン15に書き込むためのトランザクションデータを生成し、管理装置10Aに送信する。このトランザクションデータには、ステップS113で送信された新バージョン番号、又は、この新バージョン番号を用いて算出される情報が含められる。
ステップS114において、管理装置10Aは、ステップS124で開発装置20Aが送信したトランザクションデータを検証する。ここでは、トランザクションデータの検証の結果、トランザクションデータが正当であると判定されたとする。
ステップS115において、管理装置10Aは、トランザクションデータを管理装置10B及び10Cに送信する。そして、管理装置10A等によるコンセンサスアルゴリズムの実行により、トランザクションデータを含むブロックがブロックチェーン15に格納される。これにより、開発者が開発したソフトウェアの新バージョンに関する情報、より具体的には、開発者ID及びバージョン番号がブロックチェーン15に格納され、その格納時以降の改ざんが困難になる。
なお、ステップS114でトランザクションデータの検証に失敗した、つまり、トランザクションデータが正当でないと検証された場合には、その旨を開発装置20Aに通知するようにしてもよい。このようにすれば、開発者がそのことを認識し対処することができる。一方、上記通知はなされなくてもよい。
なお、ソフトウェアそのものを管理装置10Aがブロックチェーン15に格納して管理してもよい。このようにすれば、バージョンに関する情報だけでなく、ソフトウェアそのものの改ざんも抑制しながらソフトウェアを管理することができ、より有用となる。このようにするには、開発装置20Aが、ソフトウェアそのもの(つまりソフトウェアのプログラムコード)を含むトランザクションデータを生成して管理装置10Aに送信し、管理装置10Aが、受信した上記トランザクションデータをブロックチェーン15に格納すればよい。
以上のように、本実施の形態の管理方法によれば、ソフトウェアのバージョンアップをした開発者に関する情報が分散台帳によって管理される。分散台帳は、保有している情報の改ざんが困難であり、また、システムダウンの影響を受けにくいという利点がある。よって、上記管理方法によって、管理している情報の改ざんの発生を抑制することができる。
また、新しいバージョンのバージョン番号を発行し、その発行したバージョン番号と紐付けて新しいバージョンの開発者に関する情報が管理される。当該バージョン管理システムと異なる装置などによってバージョン番号を付すとすれば、バージョン番号の重複などの不備が生じ得る。本発明に係る管理方法によれば、バージョン番号の不備を未然に回避しながら、管理している情報の改ざんの発生を抑制することができる。
また、第一バージョンのハッシュ値と、第一バージョンのバージョン番号と、第二バージョンのバージョン番号とを用いて、より容易に、管理している情報の改ざんの発生を抑制することができる。
また、第一バージョンのハッシュ値と、第二バージョンのハッシュ値とを用いて、より容易に、管理している情報の改ざんの発生を抑制することができる。
また、第一バージョンのハッシュ値と、第一バージョンと第二バージョンとの差分のハッシュ値とを用いて、より容易に、管理している情報の改ざんの発生を抑制することができる。
また、第二バージョンのソフトウェアの格納場所を示す情報が、開発者に関する情報とともに分散台帳に格納される。よって、さらに第二バージョンが格納された場所情報の改ざんの発生をも抑制しながら、管理している情報の改ざんの発生を抑制することができる。
また、これまでのトランザクションデータに基づいて新しいバージョンの開発者にトークンが提供される。分散台帳に格納されたトランザクションデータの改ざんが困難であるので、開発者になりすます不適切な者へのトークンの提供を未然に回避することができる。このように、管理している情報の改ざんの発生を抑制し、不適切なトークンの提供を未然に回避することができる。
(実施の形態2)
本実施の形態において、ソフトウェアのバージョン管理方法であって、ソフトウェアの取引の安全性を向上させる管理方法などについて説明する。ここでは、実施の形態1に係るバージョン管理方法で管理されているソフトウェアがユーザに提供されるときの取引の安全性を向上させる管理方法などについて説明する。
図13は、本実施の形態に係る管理システム2の構成を示す説明図である。
図13に示されるように、本実施の形態に係る管理システム2は、複数の管理装置10A等と、複数の開発装置20A等と、保管サーバ30と、複数のトークン管理装置70A、70B及び70C(70A等ともいう)と、ユーザ装置80とを備える。なお、本実施の形態に係る複数の管理装置10A等それぞれを、バージョン管理装置ともいう。また、複数のトークン管理装置70A等それぞれを、単に管理装置ともいう。なお、トークン管理装置が、バージョン管理装置の機能をあわせもつ構成としてもよい。
複数の管理装置10A等と、複数の開発装置20A等と、保管サーバ30とは、実施の形態1における同名の構成要素と同じであるので説明を省略する。
複数のトークン管理装置70A等は、開発者とユーザとの間でのトークンの授受をコンピュータにより管理する管理装置である。複数のトークン管理装置70A等の個数が3である場合を例として説明するが、2以上であればいくつであってもよい。複数のトークン管理装置70A等は、互いに通信可能に接続されている。なお、以降では、複数のトークン管理装置70A等を代表して、トークン管理装置70Aを用いて説明することがあるが、他のトークン管理装置70B及び70Cでも同様の説明が成立する。なお、複数のトークン管理装置70A等は、ネットワークNを介して通信することもできる。
複数のトークン管理装置70A等は、それぞれ、トークンの授受に関する情報を管理するための分散台帳を保有し、保有している分散台帳を、通信によって互いに同期をとりながら更新している。複数のトークン管理装置70A等のいずれかが、ユーザ装置80からトークンの授受に関する情報を取得すると、取得した情報の複製を複数のトークン管理装置70A等それぞれが保有する。分散台帳は、一般に、保有している情報の改ざんが困難であり、また、システムダウンの影響を受けにくいという利点がある。
ユーザ装置80は、ソフトウェアを使用するユーザが使用する装置である。ユーザ装置80は、ユーザに対応付けられている。ユーザ装置80は、ネットワークNにアクセス可能である通信機能を有する。ユーザ装置80がコンピュータ、スマートフォン又はタブレットなどの情報端末である場合を例として説明するが、ネットワークNにアクセス可能である通信インタフェースを搭載した家電機器であってもよい。
ユーザ装置80は、ユーザによる操作などに基づいて、保管サーバ30に保管されているソフトウェアの提供を受ける。ユーザ装置80が提供されたソフトウェアは、家電機器に提供され、その後、家電機器がそのソフトウェアを用いて動作する。なお、ユーザ装置80が家電機器である場合には、ユーザ装置80は、ソフトウェアが提供された後、提供されたソフトウェアを用いて動作する。
また、ユーザ装置80は、ソフトウェアの提供を受ける際に、トークンを開発者に提供するためのトランザクションデータをトークン管理装置70Aに送信する。開発者に提供するトークンは、例えばソフトウェアの提供の対価に相当するトークンである。
以降において、ユーザ装置80およびトークン管理装置70A等についてさらに詳しく説明する。
図14は、本実施の形態に係るユーザ装置80の構成を示す説明図である。
図14に示されるように、ユーザ装置80は、通信部81と、トランザクション生成部82と、取得部83と、表示部84と、入力部85と、記憶装置86とを備える。
通信部81は、ネットワークNに接続される通信インタフェース装置である。ユーザ装置80は、通信部81を介して保管サーバ30と通信可能である。
トランザクション生成部82は、トークンの授受に関する情報を含むトランザクションデータを生成する処理部である。トランザクションデータは、ユーザIDと、バージョン番号と、トークン額と、ユーザの電子署名とを少なくとも含む。ユーザの電子署名は、当該トランザクションデータに含まれる情報から、ユーザの秘密鍵での暗号化により生成される。ユーザIDおよび秘密鍵は、トランザクション生成部82が記憶装置86から読み出すことで取得され得る。また、トランザクション生成部82は、生成したトランザクションデータを通信部81を介してトークン管理装置70Aに送信する。トークン額とは、当該トランザクションデータにより提供されるトークンの数量を示す。
取得部83は、ソフトウェアを取得する処理部である。取得部83は、例えば、ソフトウェアを取得するための取得要求を送信し、それに応じて送信されるソフトウェアを取得する。より具体的には、取得部83は、保管サーバ30が保管している1以上のバージョンのうち、取得したい一のバージョン(要求バージョンともいう)を決定し、その要求バージョンのソフトウェアの提供を受けるための取得要求を保管サーバ30に通信部81を介して送信する。そして、上記取得要求に応じて保管サーバ30が送信する要求バージョンのソフトウェアを通信部81を介して受信する。なお、取得部83によるソフトウェアの取得は、入力部85がユーザからソフトウェアを取得する指示の入力を受けたことに基づいてなされてもよいし、その他の契機(例えば、新バージョンがリリースされたことなど)に基づいてなされてもよい。また、要求バージョンは、例えば、入力部85が受け付けるユーザによる指定によって決定されてもよいし、当該ソフトウェアについて予め定められたバージョン(例えば最新バージョン、又は、安定動作が確認されている安定バージョンなど)に決定されてもよい。
表示部84は、画像を表示する表示画面である。表示部84は、ユーザ装置80に関する各種情報を示す画像を表示する。表示部84は、例えばソフトウェアを取得するか否かをユーザに問いかける画像を表示する。
入力部85は、ユーザによる入力を受け付ける入力インタフェースである。入力部85は、例えば表示部84上に重畳して配置され、ユーザによるタッチ操作による入力を受けるタッチパネルである。入力部85は、その他、キーボード、マウス、タッチパッドなどであってもよい。入力部85は、例えばソフトウェアを取得する指示の入力を受ける。
記憶装置86は、ユーザに関する情報を記憶している記憶装置である。ユーザに関する情報は、具体的には、ユーザの識別情報であるユーザIDと、ユーザの鍵情報(秘密鍵を含む)を含む。ユーザIDは、ユーザを一意に識別し得る情報である。記憶装置86に記憶されているユーザIDおよび鍵情報は、トランザクション生成部82により読み出される。
図15は、本実施の形態に係るトークン管理装置70Aの構成を示す説明図である。
図15に示されるように、トークン管理装置70Aは、通信部71と、トランザクション検証部72と、ID取得部73と、台帳管理部74とを備える。
通信部71は、ネットワークNに接続される通信インタフェース装置である。トークン管理装置70Aは、通信部71を介してユーザ装置80、保管サーバ30、並びに、他のトークン管理装置70B及び70Cと通信可能である。
トランザクション検証部72は、トランザクションデータの正当性の検証をする処理部である。トランザクション検証部72は、通信部71を介してユーザ装置80からトランザクションデータを受信する。受信するトランザクションデータは、ユーザIDと、バージョン番号と、トークン額と、ユーザの電子署名とを含んでいる。トランザクション検証部72は、トランザクションデータを受信すると、受信したトランザクションデータに含まれる電子署名を用いて、当該トランザクションデータの正当性を検証をする。トランザクションデータの正当性の検証は、当該トランザクションデータに含まれる情報と、ユーザの公開鍵とを用いてなされ、当該トランザクションデータが正当であるか否かが判定される。より具体的には、当該トランザクションデータが確かにユーザ装置80によって生成されたものであること、及び、当該トランザクションデータが生成されてから改ざんされていないことが判定される。なお、トランザクションデータの正当性の検証を、単に、トランザクションデータの検証ともいう。
トランザクション検証部72が取得したトランザクションデータに、要求バージョンの開発者の開発者IDが含まれていない場合には、上記開発者IDがID取得部73により取得される。
ID取得部73は、ソフトウェアの要求バージョンの開発者の開発者IDを取得する処理部である。ID取得部73は、トランザクション検証部72が取得したトランザクションデータに、要求バージョンの開発者の開発者IDが含まれているか否かを判定する。そして、トランザクションデータに開発者IDが含まれていない場合には、トランザクションデータに含まれている要求バージョンのバージョン番号を管理装置10Aに問い合わせる。管理装置10Aは、この問い合わせに応じて要求バージョンのバージョン番号をトークン管理装置70A(ID取得部73)に送信する。ID取得部73は、バージョン番号を受信すると、トランザクション検証部72が受信したトランザクションデータに含まれていたユーザIDと、バージョン番号と、トークン額とに加えて、管理装置10Aから取得した開発者IDを含めたトランザクションデータを生成する。
台帳管理部74は、トークンの授受を管理するための分散台帳を管理している処理部である。ここでは分散台帳がブロックチェーン75である場合を例として説明するが、他の方式の分散台帳(例えば、IOTA又はハッシュグラフ等)を採用することも可能である。
台帳管理部74は、トランザクション検証部72がトランザクションデータを検証した場合、トランザクションデータに要求バージョンの開発者の開発者IDが含まれていないときには、ID取得部73が生成したトランザクションデータをブロックチェーン75に格納する。一方、トランザクションデータに要求バージョンの開発者の開発者IDが含まれているときには、トランザクション検証部72が検証したトランザクションデータをブロックチェーン75に格納する。ブロックチェーン75に格納する際には、台帳管理部74は、他のトークン管理装置70B及び70Cにトランザクションデータを送信することで、トランザクションデータの同期をとる。そして、台帳管理部74は、トークン管理装置70Aと、他のトークン管理装置70Bおよび70Cとの間でコンセンサスアルゴリズムを実行する。コンセンサスアルゴリズムにおいて合意形成がなされた場合には、当該トランザクションデータを含むブロックを生成し、生成したブロックをブロックチェーン75に格納する。なお、台帳管理部74がブロックチェーン75に格納するトランザクションデータを第一トランザクションデータともいう。
なお、コンセンサスアルゴリズムの一例は、PBFT(Practical Byzantine Fault Tolerance)であるが、これに限定されず、PoW(Proof of Work)又はPoS(Proof of Stake)なども用いられ得る。
図16は、本実施の形態に係るトランザクションデータの第一例であるトランザクションデータ90を示す説明図である。トランザクションデータ90は、ユーザが要求するバージョンの開発者の開発者IDを含まないトランザクションデータの例である。トランザクションデータ90は、ユーザ装置80が上記開発者IDを保有していない場合に使用され得る。
図16に示されるように、トランザクションデータ90は、ユーザID91と、要求バージョン番号92と、トークン額93と、署名94とを含む。
ユーザID91は、トランザクションデータ90の送信元であるユーザ装置80に対応するユーザのユーザIDである。
要求バージョン番号92は、トランザクションデータ90によってユーザ装置80が新たに取得するバージョン、つまり要求バージョンのバージョン番号である。
トークン額93は、トランザクションデータ90によってユーザが開発者に提供するトークンの額である。
署名94は、トランザクションデータ90に含まれる情報から、ユーザの秘密鍵での暗号化により生成された電子署名である。具体的には、署名94は、ユーザID91、要求バージョン番号92、及び、トークン額93を含む情報に対するハッシュ演算により得られたハッシュ値を、ユーザの秘密鍵で暗号化した値である。
トークン管理装置70Aは、トランザクションデータ90を受信した場合には、トランザクションデータ90に含まれている要求バージョン番号92を参照して、要求バージョン番号92に係るバージョンの開発者の識別情報を管理装置10A等から取得して、ユーザからその開発者へのトークンの提供を制御する。
図17は、本実施の形態に係るトランザクションデータの第二例であるトランザクションデータ90Aを示す説明図である。トランザクションデータ90Aは、ユーザが要求するバージョンの開発者の開発者IDを含むトランザクションデータの例である。トランザクションデータ90Aは、ユーザ装置80が上記開発者IDを保有している場合に使用され得る。
図17に示されるように、トランザクションデータ90Aは、ユーザID91と、要求バージョン番号92と、トークン額93と、開発者ID93Aと、署名94とを含む。トランザクションデータ90Aは、トランザクションデータ90に対して開発者ID93Aが追加されたものである。
ユーザID91と、要求バージョン番号92と、トークン額93とは、トランザクションデータ90における同名の情報と同じである。
開発者ID93Aは、トランザクションデータ90Aによってユーザが新たに取得するバージョン、つまり要求バージョンの開発者の開発者IDである。
署名94は、トランザクションデータ90Aに含まれる情報から、ユーザの秘密鍵での暗号化により生成された電子署名である。具体的には、署名94は、ユーザID91、要求バージョン番号92、トークン額93、及び、開発者ID93Aを含む情報に対するハッシュ演算により得られたハッシュ値を、ユーザの秘密鍵で暗号化した値である。
トークン管理装置70Aは、トランザクションデータ90Aを受信した場合には、トランザクションデータ90Aに含まれている要求バージョン番号92と開発者ID93Aを参照して、要求バージョン番号92の開発者が確かに開発者ID93Aに示される開発者であると判定してから、トークンの授受を制御する。
なお、トークン管理装置70Aは、上記の判定をすることなくトークンの授受の制御をしてもよい。トランザクションデータ90Aに含まれている開発者ID93Aが正しいことが保証されている場合には、このような制御も可能である。
図18は、本実施の形態に係るブロックチェーン75に格納されているトランザクションデータを示す説明図である。図18は、具体的には、トークン管理装置70A等がブロックチェーン75によって管理しているトランザクションデータである。図18に示される1つのエントリ(1行)が、1つのトランザクションデータに対応している。図18において紙面上の下にあるデータがより新しいトランザクションデータである。
図18に示されるように、各トランザクションデータは、トークンの授受に関する情報として、トークン額、トークンの提供元、及び、トークンの提供先を示す情報を含んでいる。なお、図18に示されるトランザクションデータの提供元およびトークン額が、それぞれ、図16に示されるトランザクションデータ90に含まれるユーザID91およびトークン額93に対応している。また、図18に示されるトランザクションデータの提供元、提供先およびトークン額が、それぞれ、図17に示されるトランザクションデータ90Aに含まれるユーザID91、開発者ID93Aおよびトークン額93に対応している。
ブロックチェーン75には、図18のように、現時点以前のソフトウェアの提供の際のトークンの授受についての情報が格納されている。具体的には、ユーザAから開発者Xに50トークン(つまり、トークン額が50であるトークン)が提供されたことを示す情報などが格納されている。
そして、現時点以前のソフトウェアの提供の際のトークンの授受についての情報が、改ざんが困難であるというブロックチェーンの特性により、改ざんがなされないようにトークン管理装置70Aによって管理されている。
以降において、管理システム2の処理を説明する。管理システム2の処理について、ユーザ装置80が開発者IDを含まないトランザクションデータを送信する場合(下記(1))と、ユーザ装置80が開発者IDを含むトランザクションデータを送信する場合(下記(2))とを分けて説明する。
(1)ユーザが要求するバージョンの開発者の開発者IDを含まないトランザクションデータ(図16参照)をユーザ装置80が送信する場合の例を説明する。
この場合、要求情報を含むトランザクションデータ(第二トランザクションデータともいう)であって、ユーザの識別情報を所定のトークンの提供元としてさらに含む第二トランザクションデータを、ユーザ装置80がトークン管理装置70Aに送信する。第二トランザクションデータに含まれる要求情報により示される要求バージョンの開発者の識別情報を、トークン管理装置70Aが管理装置10Aから取得する。そして、第一トランザクションデータをブロックチェーン75に格納する際には、第二トランザクションデータに含まれる提供元であるユーザの識別情報を、所定のトークンの提供元として含み、管理装置10Aから取得した識別情報を所定のトークンの提供先として含む第一トランザクションデータを生成し、複数のトークン管理装置70A等それぞれが、生成された第一トランザクションデータをブロックチェーン75に格納する。
図19及び図20は、本実施の形態に係る管理システム2における処理を示すシーケンス図である。
図19に示されるように、ステップS281において、ユーザ装置80は、新たなバージョンのソフトウェアを取得する指示の入力をユーザから受ける。
ステップS282において、ユーザ装置80は、新たなバージョンのソフトウェアを取得するためのトランザクションデータを生成して、トークン管理装置70Aに送信する。このトランザクションデータには、ユーザが要求するバージョンの開発者の開発者IDが含まれていない。
ステップS271において、トークン管理装置70Aは、ステップS281でユーザ装置80が送信したトランザクションデータを受信し、受信したトランザクションデータの検証をする。ここでは、トランザクションデータの検証の結果、トランザクションデータが正当であると判定されたとする。また、トークン管理装置70Aは、トランザクションデータに開発者IDが含まれていないことを判定する。
ステップS272において、トークン管理装置70Aは、ユーザが要求するバージョンの開発者の開発者IDの問い合わせのための通信パケットを管理装置10Aに送信する。上記通信パケットには、要求バージョン番号が少なくとも含まれている。
ステップS211において、管理装置10Aは、ステップS272で送信された問い合わせのための通信パケットを受信し、台帳管理部14が管理しているブロックチェーン15を参照して、ユーザが要求するバージョンの開発者の開発者IDを特定する。また、管理装置10Aは、特定した開発者IDを含む通信パケットをトークン管理装置70Aに送信する。
ステップS273において、トークン管理装置70Aは、ステップS211で送信された通信パケットを受信し、受信したパケットに含まれている開発者IDを取得する。そして、トークン管理装置70Aは、ステップS271で受信したトランザクションデータのユーザID91、要求バージョン番号92及びトークン額93(図16参照)と、上記で取得した開発者IDとを含むトランザクションデータを生成する。生成されるトランザクションデータは、図17のトランザクションデータ90Aの形式を有する。
ステップS274において、トークン管理装置70Aは、ステップS273で生成したトランザクションデータをトークン管理装置70B及び70Cに送信する。そして、トークン管理装置70A等によるコンセンサスアルゴリズムの実行により、トランザクションデータを含むブロックがブロックチェーン75に格納される。これにより、ユーザが要求するバージョンに関する情報、より具体的には、ユーザID、要求バージョン番号、トークン額および開発者IDがブロックチェーン75に格納され、その格納時以降の改ざんが困難になる。
図20に移り、ステップS275において、トークン管理装置70Aは、上記ユーザへのソフトウェアの提供を許可することを示す通知(許可通知ともいう)を含む通信パケットを、保管サーバ30に送信する。
ステップS231において、保管サーバ30は、アクセス情報を発行し、アクセス情報を含む通信パケットをユーザ装置80に送信する。ここでアクセス情報とは、ユーザ装置80が保管サーバ30に記憶されているソフトウェアをダウンロードするために必要な情報であり、ソフトウェアの格納場所を示す場所情報(具体的にはURL)および認証情報を少なくとも含む。認証情報は、例えば、ユーザIDとパスワードとである。
ステップS283において、ユーザ装置80は、ステップS231で送信された通信パケットを受信し、受信した通信パケットに含まれているアクセス情報に基づいて、ソフトウェアをダウンロードする。具体的には、アクセス情報に含まれている場所情報に示される場所に、認証情報を用いてアクセスし、ソフトウェアをダウンロードする。
(2)ユーザが要求するバージョンの開発者の開発者IDを含むトランザクションデータ(図17参照)をユーザ装置80が送信する場合の例を説明する。
この場合、ユーザの識別情報を所定のトークンの提供元として含み、要求バージョンの開発者の識別情報を所定のトークンの提供先として含む、第一トランザクションデータを、ユーザ装置80がトークン管理装置70Aに送信する。そして、第一トランザクションデータをブロックチェーン75に格納する際には、ユーザ装置80から受信した第一トランザクションデータをブロックチェーン75に格納する。
図21は、本実施の形態に係る管理システム2における第三の処理を示すシーケンス図である。図21に示されるステップS281及びS282は、図19における同名の処理と同じである。
ステップS271Aにおいて、トークン管理装置70Aは、ステップS282でユーザ装置80が送信したトランザクションデータを受信し、受信したトランザクションデータの検証をする。ここでは、トランザクションデータの検証の結果、トランザクションデータが正当であると判定されたとする。また、トークン管理装置70Aは、トランザクションデータに開発者IDが含まれていることを判定する。
ステップS274において、トークン管理装置70Aは、ステップS271Aで受信したトランザクションデータをトークン管理装置70B及び70Cに送信する。そして、トークン管理装置70A等によるコンセンサスアルゴリズムの実行により、トランザクションデータを含むブロックがブロックチェーン75に格納される。これにより、ユーザが要求するバージョンに関する情報、より具体的には、ユーザID、要求バージョン番号、トークン額および開発者IDがブロックチェーン75に格納され、その格納時以降の改ざんが困難になる。
ステップS274の後には、図20に示される一連の処理が実行される。
なお、図21に示される一連の処理において、さらにユーザ装置80から取得したトランザクションデータに含まれる開発者IDが、確かに、トランザクションデータに含まれる要求バージョンの開発者の開発者IDであるか否かを判定してから、当該トランザクションデータをブロックチェーンに格納するようにしてもよい。
つまり、第一トランザクションデータに含まれる要求情報により示される要求バージョンの開発者の識別情報である第一識別情報を、管理装置10Aから取得し、第一識別情報と、第一トランザクションデータに含まれる識別情報である第二識別情報とが一致するときに限り、第一トランザクションデータをブロックチェーン75に格納するようにしてもよい。
この場合の処理のシーケンスを以降で説明する。
図22は、本実施の形態に係る管理システム2における第四の処理を示すシーケンス図である。図22に示されるステップのうち、ステップS271A及びステップS272A以外のステップは、図19又は図21における同名の処理と同じである。
図22に示される処理では、ステップS271Aでトランザクションデータに開発者IDが含まれていることを判定した場合において、トークン管理装置70Aは、開発者IDの問い合わせのための通信パケットを管理装置10Aに送信し(ステップS272)、開発者IDを取得する。
ステップS272Aにおいて、トークン管理装置70Aは、管理装置10Aから取得した開発者ID(第一識別情報に相当)と、ステップS271Aでユーザ装置80から受信したトランザクションデータに含まれる開発者ID(第二識別情報に相当)とが一致するか否かを判定する。そして、両開発者IDが一致するときに限り、ステップS271Aで受信したトランザクションデータを含むブロックをブロックチェーン75に格納する。
このようにすることで、ユーザ装置80から取得した開発者IDと、管理装置10Aで管理されている開発者IDと不一致となった場合、つまり、開発者IDに不備がある場合に、トランザクションデータをブロックチェーン75に格納することを防ぐことができる。
なお、トークン管理装置70A等の処理は、スマートコントラクトにより実現されてもよい。すなわち、トークン管理装置70Aの台帳管理部74に、上記スマートコントラクトのためのプログラムコードであるスマートコントラクトコードを含むトランザクションデータを含むブロックチェーンが格納されている。そして、ステップS282でユーザ装置80がトランザクションデータを送信する際に、スマートコントラクトの実行を要求するトランザクションデータを送信する。これにより、スマートコントラクトにより上記プログラムコードが実行されることで、図19又は図21、及び、図20に示されるトークン管理装置70A等の処理が実行される。
このようにすることで、ユーザ装置80によるトランザクションデータの送信を契機としてプログラムが実行され一連の処理がなされる。その結果、プログラムの実行結果がブロックチェーンに格納され、一連の処理の結果の改ざんが困難になる利点がある。
以上のように、本実施の形態の管理方法によれば、ユーザからソフトウェアの新たなバージョンの開発者へトークンが提供されたことが、分散台帳によって管理される。分散台帳は、保有している情報の改ざんが困難であり、また、システムダウンの影響を受けにくいという利点があるので、分散台帳によってトークンの授受を管理することで、トークンの授受の履歴が改ざんされたり、トークンの授受の履歴が欠落したりすることが抑制される。よって、ソフトウェアのバージョン管理方法において、ソフトウェアの取引の安全性を向上させることができる。
また、ユーザ装置から第二トランザクションデータを用いて受信した要求バージョンの開発者の識別情報をバージョン管理装置から取得して、その開発者の識別情報をトークンの提供先として利用する。これにより、ユーザが要求バージョンの開発者を知らない、つまりユーザ装置が上記開発者の識別情報を保有していない場合であっても、ユーザから開発者にトークンが提供されたことが分散台帳によって管理される。よって、ユーザが要求バージョンの開発者を知らない場合であっても、ソフトウェアの取引の安全性を向上させることができる。
また、ユーザ装置から要求バージョンの開発者にトークンが提供されたことを示すトランザクションデータが、ユーザ装置からトークン管理装置に送信される。よって、トークン管理装置が他の装置などから要求バージョンの開発者に関する情報を得ることなく、ユーザから開発者にトークンが提供されたことが分散台帳によって管理される。よって、トークン管理装置が他の装置などから要求バージョンの開発者に関する情報を得ることなく、ソフトウェアの取引の安全性を向上させることができる。
また、ユーザ装置から第一トランザクションデータを用いて受信した要求バージョンの開発者の識別情報が、バージョン管理装置で管理している開発者の識別情報と一致する場合に限り、分散台帳に格納されて管理される。よって、仮にユーザ装置が保有している開発者の識別情報が正しくない(つまり、誤りがある、又は、不正である)場合には、ユーザから開発者へのトークンの提供がなされない。このようにして、正しくない開発者にトークンが提供されることが未然に回避される。よって、ユーザ装置が保有している情報が不正である場合に、不正な開発者にトークンが提供されることを回避することによって、ソフトウェアの取引の安全性を向上させることができる。
また、ユーザから開発者へのトークンの提供が分散台帳によって管理された後に、要求バージョンのソフトウェアがユーザに提供される。よって、ユーザ装置がトークンを提供するのと引き換えに、ソフトウェアの提供を受けるという取引が、より安全になされる。よって、ソフトウェアの取引の安全性を、より一層向上させることができる。
また、ユーザから開発者へのトークンの提供などの一連の処理が、分散台帳に格納されたスマートコントラクトコードに基づいて、他の人又は他のシステムを介在することなく、自動的に実行される。よって、スマートコントラクトにより、一連の処理が、より一層高い安全性をもって実現される。よって、ソフトウェアの取引の安全性をより一層向上させることができる。
また、複数のバージョン管理装置が分散台帳によってソフトウェアのバージョンの開発者を管理していて、その開発者の情報がトークンの提供先として用いられる。分散台帳は、保有している情報の改ざんが困難であり、また、システムダウンの影響を受けにくいという利点がある。よって、バージョンの開発者の情報の改ざんなどが抑制され、ソフトウェアの取引の安全性をより一層向上させることができる。
(実施の形態3)
本実施の形態において、ソフトウェアのバージョン管理方法であって、ソフトウェアの取引の安全性を向上させる管理方法などについて説明する。特に、ソフトウェアの複数の開発者にトークンを配分して提供するときの取引の安全性の向上について説明する。
図23は、本実施の形態に係る管理システム2におけるトークンの提供方法を示す説明図である。
図23に示されるように、バージョン1を元にして、バージョン1.A1、1.A2及び1.A3がこの順に開発されたとする。ここで、バージョン1.A1、1.A2及び1.A3の開発者は、それぞれ、開発者X、Y及びZである。この場合、バージョン1.A3の開発に直接関わったのは開発者Zであるが、その開発の元になったバージョン1.A1及び1.A2の開発者X及びYもバージョン1.A3の開発に寄与したと考えられる。
このように考える場合、ユーザAがバージョン1.A3のソフトウェアの提供を受けるときには、開発者Zだけでなく、開発者X及びYにもトークンが渡るようにするのが妥当である。
例えば、図23に示されるように、ユーザAが、バージョン1.A3のソフトウェアを取得するのと引き換えに開発者Zに1000トークンを提供する場合、その1000トークンのうちの200トークンが開発者Yに提供され、さらにその200トークンのうちの50トークンが開発者Zに提供されるのが妥当である。
このようにトークンを提供する方法について説明する。
本実施の形態に係る管理システムの全体的な構成は、実施の形態2の管理システム2におけるものと同じである。
本実施の形態に係る管理システムは、実施の形態2の管理装置10A等に代えて管理装置10D、10E及び10F(10D等ともいう)を備え、また、実施の形態2のトークン管理装置70A等に代えてトークン管理装置70D、70E及び70F(70D等ともいう)を備える。これらの装置について以下で説明する。
図24は、本実施の形態に係る管理装置10Dの構成を示す説明図である。
図24に示されるように、管理装置10Dは、実施の形態2の管理装置10Aの構成要素に加えて、枝情報生成部17を備える。
枝情報生成部17は、バージョンの開発の履歴を示す枝情報を生成する処理部である。枝情報生成部17は、トークン管理装置70Dから通信部11を介して要求バージョンのバージョン番号を受信すると、台帳管理部14が管理しているブロックチェーン15を参照して、その要求バージョンの履歴を示す枝情報を生成する。そして、枝情報生成部17は、生成した枝情報をトークン管理装置70Dに送信する。
図25は、本実施の形態に係るトークン管理装置70Dの構成を示す説明図である。
図25に示されるように、トークン管理装置70Dは、実施の形態2のトークン管理装置70Aの構成要素に加えて、トークン配分部76を備える。
トークン配分部76は、ユーザから提供されるトークンを2以上の開発者に配分する処理を行う処理部である。トークン配分部76は、ユーザから開発者にトークンを提供することを示すトランザクションデータをユーザ装置80から受信すると、管理装置10Dから枝情報を取得し、取得した枝情報に基づいて、ユーザから提供されたトークンが2以上の開発者に配分されるように2以上のトランザクションデータを生成する。トークン配分部76は、管理装置10Dから枝情報を取得するために、要求バージョンを少なくとも含む通信パケットを管理装置10Dに送信するトークン配分部76が生成した2以上のトランザクションデータは、台帳管理部74によって、複数のトークン管理装置70D等によるコンセンサスアルゴリズムの実行を経て、ブロックチェーン75に格納される。
図26は、本実施の形態に係る枝情報の一例を示す説明図である。図26には、枝情報の一例として、枝情報をテーブル形式で示す枝情報テーブルT1が示されている。なお、枝情報テーブルT1では、例として要求バージョンの2つ前のバージョンまでの枝情報が示されているが、要求バージョンの1つ前のバージョンまでの枝情報だけであってもよいし、要求バージョンの3つ以上前のバージョンまでの枝情報をであってもよい。
枝情報テーブルT1では、要求バージョンと、その開発の元になったバージョンとしての要求バージョンの1つ前のバージョンと、要求バージョンの2つ前のバージョンとのそれぞれについて、バージョン番号と開発者とが示されている。
具体的には、要求バージョンであるバージョン1.A3の開発者が開発者Zであることが示されている。また、要求バージョンの1つ前、及び2つ前のバージョン(つまりバージョン1.A2及び1.A3)の開発者がそれぞれ開発者Y及びXであることが示されている。
図27は、本実施の形態に係るトークンを配分するための2以上のトランザクションデータの例を示す説明図である。図27は、具体的には、トークン管理装置70D等がブロックチェーン75によって管理しているトランザクションデータであって、ユーザAが提供したトークンが開発者X、Y及びZに配分されて提供されることを示すトランザクションデータである。なお、図27に示されるトランザクションデータの形式は、図18と同様であり、1つのエントリ(1行)が、1つのトランザクションデータに対応している。
具体的には、図27に示されるトランザクションデータ101は、ユーザAから開発者Zに1000トークンが提供されることを示している。トランザクションデータ102は、開発者Zから開発者Yに200トークンが提供されることを示している。トランザクションデータ103は、開発者Yから開発者Xに50トークンが提供されることを示している。上記3つのトランザクションデータにより、ユーザAが要求バージョンのソフトウェアを取得するのと引き換えに、ユーザAから開発者Zに1000トークンが提供され、開発者Zから開発者Yに200トークンが提供され、さらに、開発者Yから開発者Xに50トークンが提供されることが、トークン管理装置70D等によって管理される。
ここで、各開発者に配分して提供されるトークンの比率を配分比率ともいう。上記の例では、配分比率は、Z:Y:X=1000:200:50と表現される。なお、各開発者のトークンの取得額から提供額を差し引いて、配分比率をZ:Y:X=800:150:50と表現してもよい。
このように、2以上の開発者に、要求バージョンより古いバージョンの開発者が含まれている場合には、要求バージョンの開発者、及び、上記古いバージョンの開発者それぞれに対して、より古いほどより低い配分とする配分比率となるようにしてもよい。バージョンの開発に対する貢献の大きさに応じたトークンの配分比率とするのが妥当であるからである。
図27に示される3つのトランザクションデータがブロックチェーン75に格納されることにより、ユーザAから開発者X、Y及びZにトークンが配分して提供され、その後の改ざんが防止される。
図28は、本実施の形態に係る管理システムにおける処理を示すシーケンス図である。
図28に示されるように、ステップS381、S382及びS371は、それぞれ、図19のステップS281、S282及びS271と同じである。
ステップS372において、トークン管理装置70Dは、枝情報の問い合わせを含む通信パケットを管理装置10Dに送信する。この通信パケットには、要求バージョンのバージョン番号が少なくとも含まれている。
ステップS311において、管理装置10Dは、ステップS372で送信された通信パケットから、要求バージョンのバージョン番号を取得し、要求バージョンに至るまでのバージョン履歴を示す枝情報を作成し、トークン管理装置70Dに送信する。例えば、要求バージョンが図23に示されるバージョン1.A3である場合には、バージョン1.A1及び1.A2を含む枝情報を作成する。
ステップS373において、トークン管理装置70Dは、履歴情報に基づいてトークンの配分比率を決定する。
ステップS374において、トークン管理装置70Dは、ステップS373で決定したトークンの配分比率に従って、ユーザから開発者にトークンを提供する2以上のトランザクションデータを生成する。
ステップS375において、トークン管理装置70Dは、ステップS374で生成したトランザクションデータをトークン管理装置70E及び70Fに送信する。そして、トークン管理装置70D等によるコンセンサスアルゴリズムの実行により、トランザクションデータを含むブロックがブロックチェーン75に格納される。これにより、ユーザから複数の開発者へのトークンの提供に関する情報がブロックチェーン75に格納され、その格納時以降の改ざんが困難になる。
上記各実施の形態におけるブロックチェーンについて補足的に説明する。
図29は、ブロックチェーンのデータ構造を示す説明図である。
ブロックチェーンは、その記録単位であるブロックがチェーン(鎖)上に接続されたものである。それぞれのブロックは、複数のトランザクションデータと、直前のブロックのハッシュ値とを有している。具体的には、ブロックB2には、その前のブロックB1のハッシュ値が含まれている。そして、ブロックB2に含まれる複数のトランザクションデータと、ブロックB1のハッシュ値とから演算されたハッシュ値が、ブロックB2のハッシュ値として、ブロックB3に含められる。このように、前のブロックの内容をハッシュ値として含めながら、ブロックをチェーン状に接続することで、記録されたトランザクションデータの改ざんを有効に防止する。
仮に過去のトランザクションデータが変更されると、ブロックのハッシュ値が変更前と異なる値になり、改ざんしたブロックを正しいものとみせかけるには、それ以降のブロックすべてを作り直さなければならず、この作業は現実的には非常に困難である。この性質を使用して、ブロックチェーンに改ざん困難性が担保されている。
図30は、トランザクションデータのデータ構造を示す説明図である。
図30に示されるトランザクションデータは、トランザクション本体P1と、電子署名P2とを含む。トランザクション本体P1は、当該トランザクションデータに含まれるデータ本体である。電子署名P2は、トランザクション本体P1のハッシュ値に対して、当該トランザクションデータの作成者の署名鍵で署名する、より具体的には、作成者の秘密鍵で暗号化することで生成されたものである。
トランザクションデータは、電子署名P2を有するので、改ざんが実質的に不可能である。これにより、トランザクション本体の改ざんが防止される。
以上のように、本実施の形態の管理方法によれば、要求バージョンの開発に2以上の開発者が関わっている場合に、ユーザから2以上の開発者それぞれにトークンを配分して提供したことが、分散台帳によって管理される。よって、要求バージョンの開発に2以上の開発者が関わっている場合であっても、ソフトウェアの取引の安全性を向上させることができる。
また、要求バージョンの開発に2以上の開発者が関わっている場合に、より古いほどより低い配分とし、言い換えれば、より新しいほどより高い配分とする配分比率でトークンを提供できる。一般に、要求バージョンにより近いバージョン、つまりより新しいバージョンの開発者の方が、要求バージョンの開発に対する貢献がより大きいと考えられる。そこで、このような貢献の大きさに応じたトークンの配分比率を実現することができる。よって、要求バージョンの開発に関わった2以上の開発者の貢献度に応じたトークンに配分により、ソフトウェアの取引の安全性をより一層向上させることができる。
なお、上記各実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPUまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。ここで、上記各実施の形態の管理装置などを実現するソフトウェアは、次のようなプログラムである。
すなわち、このプログラムは、コンピュータに、バージョン管理システムにより実行される、ソフトウェアのバージョンの管理方法であって、前記バージョン管理システムは、分散台帳を保有している複数の管理装置を備え、前記管理方法は、前記複数の管理装置のうちの第1の管理装置が、ユーザが要求する要求バージョンを示す要求情報を取得し、前記ユーザが前記要求バージョンを開発した開発者に所定のトークンを提供することを示す第一トランザクションデータを、前記複数の管理装置それぞれによるコンセンサスアルゴリズムの実行を経て前記分散台帳に格納する管理方法を実行させるプログラムである。
以上、一つまたは複数の態様に係る管理方法などについて、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、一つまたは複数の態様の範囲内に含まれてもよい。