(57)【特許請求の範囲】
【請求項１】
コンピュータを、
仮想通貨を送金する第１の取引における第１の送金金額及び第１の送金日時を含む第１の取引情報と、前記第１の送金金額の少なくとも一部を送金する第２の取引における第２の送金金額及び第２の送金日時を含む、前記第１の取引情報とは異なる第２の取引情報と、を記憶する記憶手段、
前記第２の取引情報の正当性を検証する手段、
前記第１の送金日時と前記第２の送金日時との差分と、前記第１の送金金額とに基づいて、前記第１の送金金額の前記第２の送金日時における減価額を計算する手段、及び
前記減価額に基づいて、前記第２の取引情報の検証者への報酬額を決定する手段
として機能させる仮想通貨管理プログラム。
【請求項２】
前記仮想通貨管理プログラムは、前記コンピュータを、さらに、
前記正当性の検証者に前記報酬額の仮想通貨を送金する第３の取引のために、前記報酬額である第３の送金金額と第３の送金日時とを含む第３の取引情報を送信する手段、
として機能させる請求項１に記載の仮想通貨管理プログラム。
【請求項３】
前記第２の取引情報は、
前記第１の送金金額から前記第２の送金金額と前記減価額とを差し引いた第４の送金金額を含むことを特徴とする請求項１又は２記載の仮想通貨管理プログラム。
【請求項４】
前記第２の取引情報は、デジタル署名が付与されており、
前記正当性を検証する手段は、
前記第２の取引情報に付与された前記デジタル署名を検証することで、当該第２の取引情報の正当性を検証することを特徴とする請求項１〜３いずれか一項に記載の仮想通貨管理プログラム。
【請求項５】
コンピュータが、
仮想通貨を送金する第１の取引における第１の送金金額及び第１の送金日時を含む第１の取引情報と、前記第１の送金金額の少なくとも一部を送金する第２の取引における第２の送金金額及び第２の送金日時を含む、前記第１の取引情報とは異なる第２の取引情報と、を記憶するステップと、
前記第２の取引情報の正当性を検証するステップと、
前記第１の送金日時と前記第２の送金日時との差分と、前記第１の送金金額とに基づいて、前記第１の送金金額の前記第２の送金日時における減価額を計算するステップと、
前記減価額に基づいて、前記第２の取引情報の検証者への報酬額を決定するステップとを実行する仮想通貨管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想通貨管理プログラム、及び仮想通貨管理方法等に関する。
【背景技術】
【０００２】
近年、円やドルといった現実の貨幣による物品の取引だけでなく、電子マネー等の仮想通貨を用いた商取引が行われている。非特許文献１には、ビットコインと呼ばれる仮想通貨を用いて取引を行う技術について開示されている。
ビットコインによる取引では、ハッシュ関数と公開鍵暗号方式とを用いて、取引データの完全性が担保されている。暗号化を用いて行われた取引（以下、ビットコインの取引を「トランザクション」とも呼ぶ）は、ビットコインを利用する全端末に対してブロードキャストで配信される。配信されたトランザクションは、マイナー（発掘者）と呼ばれる端末ソフトウェアによって正当性が検証され、承認されると発掘されたブロックにまとめられ、ブロックチェーンと呼ばれる台帳に記録される。
【０００３】
非特許文献１には、マイナーがブロックを発掘した際に、当該マイナーに対して報酬を支払う方法について開示されている。非特許文献１に記載の方法によれば、ブロックを発掘したマイナーは、報酬として新たなビットコインを獲得できる。具体的には、ブロックに格納する先頭のトランザクションを、「無」から自分に宛てられたトランザクションとして格納することで、報酬とすることができる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】斉藤賢爾著、「これでわかった  ビットコイン  [生き残る通貨の条件]」、初版、太郎次郎社エディタス、２０１４年５月５日、ｐ．８７−８９
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ビットコインの総量はあらかじめ定められている。そのため、非特許文献１に記載の方法の場合、マイナーが受け取る報酬は、４年ごとに半分となり、すべてのブロックが発掘されると、マイナーが受け取れる報酬は取引手数料のみとなってしまう。報酬が取引手数料だけでは、マイニングのコストに見合わず、マイニングを行うマイナーがいなくなってしまうおそれがある。
また、ビットコインは現実の貨幣と相互に交換可能であるため、投資の対象となり、その価値が安定しない。
【０００６】
そこで、本発明は、上記事情に鑑み、マイナーに対して報酬を支払い続けることが可能であり、価値の変動の少ない仮想通貨を提供する、仮想通貨管理プログラム、及び仮想通貨管理方法を提供することを目的とするものである。
【課題を解決するための手段】
【０００７】
本発明による仮想通貨管理プログラムは、コンピュータを、仮想通貨を送金する第１の取引における第１の送金金額及び第１の送金日時を含む第１の取引情報と、第１の送金金額の少なくとも一部を送金する第２の取引における第２の送金金額及び第２の送金日時を含む第２の取引情報と、を記憶する記憶手段、第２の取引情報の正当性を検証する手段、第１の送金日時と第２の送金日時との差分と、第１の送金金額とに基づいて、第１の送金金額の前記第２の送金日時における減価額を計算する手段、及び減価額に基づいて、第２の取引情報の検証者への報酬額を決定する手段として機能させるものを含む。
【０００８】
また、本発明による仮想通貨管理方法は、コンピュータが、仮想通貨を送金する第１の取引における第１の送金金額及び第１の送金日時を含む第１の取引情報と、第１の送金金額の少なくとも一部を送金する第２の取引における第２の送金金額及び第２の送金日時を含む第２の取引情報と、を記憶するステップと、第２の取引情報の正当性を検証するステップと、第１の送金日時と第２の送金日時との差分と、第１の送金金額とに基づいて、第１の送金金額の第２の送金日時における減価額を計算するステップと、減価額に基づいて、第２の取引情報の検証者への報酬額を決定するステップとを実行する方法を含む。
【０００９】
本発明のプログラムは、ＣＤ−ＲＯＭ等の光学ディスク、磁気ディスク、半導体メモリなどの各種の記録媒体を通じて、又は通信ネットワークなどを介してダウンロードすることにより、コンピュータにインストール又はロードすることができる。
【００１０】
また、本明細書等において、「部」とは、単に物理的構成を意味するものではなく、その構成が有する機能をソフトウェアによって実現する場合も含む。また、１つの構成が有する機能が２つ以上の物理的構成により実現されても、２つ以上の構成の機能が１つの物理的構成により実現されてもよい。
【発明の効果】
【００１１】
本発明によれば、マイナーに対して報酬を支払い続けることが可能であり、価値の変動の少ない仮想通貨を提供する、仮想通貨管理プログラム、及び仮想通貨管理方法を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態における仮想通貨システムの構成図である。
【図２】本発明の実施形態における端末の機能ブロックの一例を示す図である。
【図３】本発明の実施形態における仮想通貨の、経過時間と減価額との対応関係の一例を示す図である。
【図４】本発明の実施形態におけるトランザクションの一例を示す図である。
【図５】本発明の実施形態におけるマイニング処理の流れの一例を示す図である。
【図６】本発明の実施形態における端末のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１３】
［第１の実施形態］
以下、本発明の実施の形態の１つについて詳細に説明する。なお、以下の実施の形態は、本発明を説明するための例示であり、本発明をその実施の形態のみに限定する趣旨ではない。また、本発明は、その要旨を逸脱しない限り、さまざまな変形が可能である。さらに、当業者であれば、以下に述べる各要素を均等なものに置換した実施の形態を採用することが可能であり、かかる実施の形態も本発明の範囲に含まれる。またさらに、必要に応じて示す上下左右等の位置関係は、特に断らない限り、図示の表示に基づくものとする。さらにまた、図面における各種の寸法比率は、その図示の比率に限定されるものではない。
【００１４】
＜１．システム構成の概要＞
図１は、仮想通貨システム１０の構成の一例を示している。図１に示すように、仮想通貨システム１０は、本発明に係る仮想通貨管理プログラムをインストールした、複数のクライアント装置同士が互いに通信を行う、Ｐ２Ｐの構成となっている。図１の例では、仮想通貨を用いて取引を行うユーザのクライアント端末を端末１００Ａ〜Ｃ（以下、端末１００Ａ〜Ｃをまとめて「端末１００」とも呼ぶ。）、トランザクションの検証や承認を行うユーザのクライアント端末を端末２００Ａ〜Ｃ（以下、端末２００Ａ〜Ｃをまとめて「端末２００」とも呼ぶ。）として説明する。
【００１５】
端末１００及び端末２００は、インターネットや専用線等のネットワーク４００に接続されたコンピュータである。具体的には、携帯電話やスマートフォン、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）、タブレット、ウェアラブル（Ｗｅａｒａｂｌｅ）端末等が挙げられるが、これに限られない。ネットワーク４００に有線又は無線で接続された装置１００及び２００が、互いに通信可能に設定されることにより、仮想通貨システム１０を構成する。なお、本実施形態において、仮想通貨システム１０は、Ｐ２Ｐ型のシステムであるとして説明するが、これに限定されるものではない。例えば、仮想通貨システム１０は、クラウドコンピューティング形式のシステムとして構成されてもよい。この場合、ユーザは、仮想通貨システム１０のコンピュータ処理をネットワーク経由でサービスとして利用する。また、仮想通貨システム１０は、ＡＳＰ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ）のサーバを含むシステムとして構成されてもよい。
【００１６】
＜２．仮想通貨の概要＞
まず、仮想通貨システム１０によって提供される仮想通貨（以下、仮想通貨システム１０によって提供される仮想通貨を「オーブ」とも呼ぶ。）の概要について説明する。オーブは既存のビットコインと同様に、インターネットを用いたＰ２Ｐデジタル通貨であり、公開鍵暗号方式とハッシュ関数を用いたデジタル署名によって取引情報の完全性が担保されている。また、オーブの取引に関する情報や履歴は、仮想通貨システム１０全体で分散して管理される。なお、本実施形態においてオーブは最小単位が「１Ｏｒｂ」である通貨として説明する。
【００１７】
オーブを利用するユーザは、まず仮想通貨管理プログラムをインストールする必要がある。仮想通貨管理プログラムには、ウォレットツールとマイニングツールとが含まれていることが望ましい。ウォレットツールは、オーブの購入やオーブを用いた取引を行うために必要なツールをいう。一方で、マイニングツールは、オーブを用いた取引の完全性や整合性を検証し、取引を承認するために必要なツールをいう。
【００１８】
ウォレットツールをクライアント端末にインストールしたユーザには、ネットワーク４００に一意なアドレスが割り当てられる（以下、「口座アドレス」とも呼ぶ。）。口座アドレスを取得したユーザは、オーブを購入することができるようになる。「オーブを購入する」とは、仮想通貨システム１０に新たなオーブを発生させることをいう。具体的には、ユーザによって、任意の金額の現実の通貨からオーブへと換金されることを指す。
【００１９】
さらにユーザは、購入したオーブを他のユーザに送金することができる。「オーブを送金する」とは、元の所有者から新たな所有者へとオーブの受け渡しが行われることをいう。
【００２０】
オーブの購入や送金に関するデータ（以下、オーブの購入や送金に関するデータを「トランザクション」とも呼ぶ。特に、オーブの購入に関するデータを「通貨発生トランザクション」とも呼ぶ。）は、後述するブロックチェーンと呼ばれる構造体によって管理される。ブロックチェーンは、ブロックと呼ばれるデータが時系列に並べられたものであり、オーブの送金を記した台帳としての役割を有している。マイニングツールをウォレットツールに加えてクライアント端末にインストールしたユーザ（以下、ウォレットツールのみをインストールしたユーザを単に「ユーザ」と呼び、ウォレットツールとマイニングツールとをインストールしたユーザを「マイナー」と呼ぶ。）は、トランザクションの正当性を検証し、正当なトランザクションを承認することができる。さらにマイナーは、承認済みのトランザクションから構成されるブロックを生成（以下、ブロックを生成することを「ブロックを発掘する」とも呼ぶ。）して、ブロックチェーンにつなぐことができる。
【００２１】
なお、オーブは、購入時から時間の経過とともに、減価するように構成されている。そのため、オーブを購入したユーザは、オーブが減価によって消滅してしまう前に消費する必要がある。オーブが減価するように構成されることで、ユーザは投資の対象とせず、結果として、オーブの価値を安定させることが可能になる。
【００２２】
＜３．機能構成＞
次に、図２を用いて、本実施形態に係る仮想通貨管理プログラムをインストールした端末１００及び２００の機能構成について説明する。
＜３−１．ウォレットツールの機能＞
図２（Ａ）は、ウォレットツールをインストールした、端末１００の機能ブロック図の一例を示す図である。ウォレットツールをインストールした端末１００には、トランザクションＤＢ１３１と、ブロック情報ＤＢ１３２と、公開鍵情報ＤＢ１３３と、口座情報ＤＢ１３４と、送金受付部１０１と、インプットデータ作成部１０２と、アウトプットデータ作成部１０３と、トランザクション配信部１０４とが構築されることが望ましい。
【００２３】
トランザクション情報ＤＢ１３１には、端末１００又は２００がネットワーク４００にブロードキャストで配信したトランザクションの履歴が保存されている。１つのトランザクションには、通常、インプットデータ、アウトプットデータ、トランザクションが発生した時刻、トランザクションが後述するブロックチェーンに追加された時刻が含まれることが望ましい。なお、オーブの購入時に配信される通貨発生トランザクションには、インプットデータは含まれないとしてもよい。
【００２４】
アウトプットデータには、送金されるオーブの金額と、送金先の口座アドレスとが含まれていることが望ましい。なお、アウトプットデータは、送金先の口座アドレスの代わりに、送金先のユーザを特定できる情報を含めばよく、たとえば、送金先ユーザの公開鍵を含んでも良い。
【００２５】
インプットデータには、今回送金するオーブを送金元ユーザが受け取ったトランザクションのアウトプットデータへのポインタと、後述する電子署名作成処理によって作成される送金元ユーザの電子署名とが含まれていることが望ましい。
【００２６】
オーブを用いた取引では、過去に受け取った、又は購入したオーブを送金対象として指定し、別のユーザへと送金する。そのため、送金を行う際には、過去のトランザクションから、送金元ユーザが送金先ユーザとなったアウトプットデータを今回の送金対象として指定する必要がある。このように、オーブのトランザクションは、インプットデータが１つ前のアウトプットデータへのポインタを有する構造をしている。その結果、すべてのトランザクションは、通貨発生トランザクションまでポインタを介して数珠つなぎとなるデータ構造となっている。
【００２７】
ブロック情報ＤＢ１３２には、生成されたブロックに関する情報が保存されている。ブロックには、マイナーが正当性を検証して承認した複数のトランザクションが格納されている。オーブの購入や送金は、ブロックチェーンと呼ばれる構造体によって管理されている。ブロックチェーンは、ブロックと呼ばれるデータが時系列に並べられたものをいう。ブロックチェーンは仮想通貨システム１０の全端末が共有するが、ユーザはブロックチェーンのうち自己が関心をもつ部分のみを所持していればよい。マイナーはブロックチェーンの全体を所持していることが望ましい。
ブロックには、１つ前のブロックのハッシュ、及び複数のトランザクションが含まれている。
【００２８】
公開鍵情報ＤＢ１３３には、仮想通貨システム１０に含まれる全ユーザの口座アドレスと、公開鍵とが対応付けられて保存されている。
【００２９】
口座情報ＤＢ１３４には、上述した口座アドレスが割り当てられていて、端末１００を利用するユーザの秘密鍵が保存されている。
【００３０】
送金受付部１０１は、ユーザから送金先のユーザと送金する金額との指定を受け付ける。送金受付部１０１は、送金受付画面を端末１００のディスプレイに提示することが望ましい。また、送金受付部１０１は通貨購入画面をディスプレイに提示して、ユーザからオーブの購入を受け付けてもよい。
【００３１】
インプットデータ作成部１０２は、送金受付部１０１が受け付けた送金金額に応じてインプットデータを作成する。インプットデータ作成部１０２は、インプットデータを作成するために、以下の４つの処理を行う。
・送金対象検索処理
・減価額計算処理
・ポインタ指定処理
・電子署名作成処理
【００３２】
（送金対象検索処理）
インプットデータ作成部１０２は、送金対象検索処理として、まず、送金対象として用いることができるアウトプットデータを有するトランザクションをトランザクション情報ＤＢ１３１から検索することができる。たとえば、インプットデータ作成部１０２は、トランザクション情報ＤＢ１３１から、送金元ユーザの口座アドレスが、送金先アドレスとして指定されているアウトプットを有するトランザクションであって、他のトランザクションのインプットデータのポインタとして指定されていないアウトプットデータを有するトランザクションを抽出することが望ましい。
【００３３】
（減価額計算処理）
次に、インプットデータ作成部１０２は、抽出したトランザクションのアウトプットデータに含まれる送金金額を参照し、現在までに減額した金額（減価額）を計算する。まず、インプットデータ作成部１０２は、抽出したトランザクションのインプットデータに含まれるポインタを順次参照していき、通貨発生トランザクションを抽出する。そして、インプットデータ作成部１０２は、通貨発生トランザクションのトランザクション発生時刻を参照し、現在時刻との差分に基づいて減価率を計算する。
【００３４】
図３は、時間の経過とオーブの残高率との対応関係の一例を示す図である。図３の例では、オーブが購入されてから１０日経過するごとに現在の金額から１０％減価する様子を示している。オーブの減価率が図３の表のように定義されている場合には、インプットデータ作成部１０２は、たとえば購入から２２日経過したオーブに対しては、現在の残高は購入時の残高の８１％であり、減価率は１９％であると算出する。なお、オーブの減価の態様は図３の例に限定されず、たとえば、時間の経過ごとに一定金額が減額されるとしてもよいし、時間の経過につれて減価率が変化してもよい。
インプットデータ作成部１０２は、抽出したトランザクションのアウトプットデータの金額と計算した現在の減価率を用いて、当該金額の減価額を計算することができる。
【００３５】
（ポインタ指定処理）
次に、インプットデータ作成部１０２は、送金受付部１０１が受け付けた送金金額に基づいて、抽出したトランザクションの中から、ポインタを指定するのに適したアウトプットデータを選択する。具体的には、インプットデータ作成部１０２は、抽出したアウトプットデータの金額と、計算した減価率とに基づいて、各アウトプットデータの残高を計算する。そして、計算した残高が、送金受付部１０１が受け付けた送金金額を上回っているアウトプットデータへのポインタを、今回のインプットデータとして指定することができる。
なお、計算した残高が、送金受付部１０１が受け付けた送金金額を上回っているアウトプットデータが存在しない場合には、本実施形態では、インプットデータ作成部１０２は、送金金額をいくつかの金額へ分割したうえで、再度、計算した残高が分割した金額を上回っているアウトプットデータを検索することが望ましい。なお、これに限定されず、今回の送金金額よりも大きな金額のアウトプットデータを有するトランザクションが存在しない場合には、インプットデータ作成部１０２は、複数のアウトプットデータのポインタを指定するために複数のインプットデータを作成するとしてもよい。
【００３６】
インプットデータ作成部１０２は、送金受付部１０１が複数のユーザへの送金を受け付けた場合には、受け付けた送金金額の合計金額に基づいてポインタを選択することが望ましい。
【００３７】
（電子署名作成処理）
さらに、インプットデータ作成部１０２は、送金元ユーザの電子署名を作成する。たとえば、インプットデータ作成部１０２は、電子署名を格納する部分を除く、作成中のトランザクションのデータ全体から、ハッシュ関数を使ってダイジェストを生成する。そして、インプットデータ作成部１０２は、生成したダイジェストを送金元ユーザの秘密鍵で暗号化することで電子署名を作成することができる。
【００３８】
図２（Ａ）に戻り、各機能ブロックの機能の続きについて説明する。
アウトプットデータ作成部１０３は、送金受付部１０１が受け付けた、送金先のユーザと送金する金額とに基づいて、アウトプットデータを作成する。たとえば、アウトプットデータ作成部１０３は、公開鍵情報ＤＢ１３３を参照して、送信先ユーザに対応する口座アドレスをアウトプットデータに指定することができる。
また、アウトプットデータ作成部１０３は、インプットデータ作成部１０２がポインタを指定したアウトプットデータの残高から、今回の送金金額の合計金額を減算し、差額を、送金元ユーザ宛の送金としてアウトプットデータを作成することが望ましい。
【００３９】
なお、アウトプットデータ作成部１０３は、送金受付部１０１が、ユーザからオーブの購入を受け付けた場合には、オーブの購入を入力したユーザを送金先ユーザとして、アウトプットデータを作成することが望ましい。
【００４０】
トランザクション配信部１０４は、今回の送金に関するトランザクションを作成し、ネットワーク４００へと配信する。トランザクション配信部１０４は、以下の２種類のトランザクションを作成する処理を行う。
・通常トランザクション（以下、通常トランザクションのことを単に「トランザクション」とも呼ぶ。）
・通貨発生トランザクション
【００４１】
（通常トランザクション）
通常トランザクションは、オーブの送金が行われた場合に、トランザクション配信部１０４が配信するトランザクションをいう。通常トランザクションには、インプットデータと、アウトプットデータと、トランザクションが発生した時刻と、トランザクションがブロックチェーンに追加された時刻とが含まれる。
トランザクション配信部１０４は、インプットデータ作成部１０２が作成したインプットデータと、アウトプットデータ作成部１０３が作成したアウトプットデータと、を通常トランザクションに格納し、さらに現在時刻をトランザクション発生時刻に指定して、通常トランザクションをネットワーク４００へブロードキャストで配信することができる。
【００４２】
（通貨発生トランザクション）
通貨発生トランザクションは、オーブが購入された場合にトランザクション配信部１０４が配信するトランザクションをいう。すべてのトランザクションは、インプットデータのポインタを参照していくと通貨発生トランザクションに収束する。
通貨発生トランザクションには、インプットデータは含まれないことが望ましい。トランザクション配信部１０４は、アウトプットデータ作成部１０３が作成した、オーブの購入を入力したユーザを送金先ユーザとするアウトプットデータを通貨発生トランザクションに格納し、さらに現在時刻をトランザクション発生時刻に指定して、通貨発生トランザクションをネットワーク４００にブロードキャストで配信することができる。
【００４３】
＜３−２．オーブ送金処理フロー＞
次に図４を用いて、ユーザＡがユーザＢへオーブを送金する際の処理フローについて説明する。図４は、ユーザＡが端末１００Ａを用いて、購入したオーブをユーザＢへ送金する場合のトランザクションを模式的に示した図である。
この例では、オーブの送金元ユーザであるユーザＡが利用する端末を端末１００Ａ、オーブの送金先ユーザであるユーザＢが利用する端末をそれぞれ端末１００Ｂとして説明する。また、図４の例においても、経過時間とオーブの減価率とは図３に示した対応関係にあるとして説明する。
【００４４】
図４において、ブロックＢ０２は、ブロックチェーンの末尾のブロックであり、ブロックＢ０１はブロックＢ０２の１つ前のブロックであるとする。また、トランザクションＴ１１は通貨発生トランザクションであり、トランザクションＴ１２は、ユーザＡからユーザＢへのオーブの送金に関する通常トランザクションである。さらに、Ｏ１１〜Ｏ１３はそれぞれアウトプットデータを表し、Ｉ１１はインプットデータを表している。
【００４５】
まず、ユーザＡがオーブを１００００Ｏｒｂ購入するとする。この場合、送金受付部１０１によって、通貨購入画面が端末１００Ａのディスプレイに提示される。ユーザＡは提示された通貨購入画面から、購入するオーブの金額を１００００Ｏｒｂとして指定する。このとき、アウトプットデータ作成部１０３は、送金金額を１００００Ｏｒｂ、送金先をユーザＡの口座アドレスとするアウトプットデータＯ１１を作成する。
【００４６】
次に、トランザクション配信部１０４が、アウトプットデータＯ１１をトランザクションＴ１１に格納し、現在時刻をトランザクション発生時刻に指定して、通貨発生トランザクションを作成し、ネットワーク４００に配信する。配信した通貨発生トランザクションが、後述するマイナーの発掘処理によって、承認され、ブロックチェーンにつながれると、ユーザＡは購入したオーブを取引に使えるようになる。
【００４７】
ユーザＡは、たとえばオーブの購入から１１日後に、購入したオーブの一部（７０００Ｏｒｂ）をユーザＢに対して送金するとする。この場合、インプットデータ作成部１０２が、まず送金対象検索処理を実行し、これまでにユーザＡが送金先ユーザとして指定されているアウトプットデータを有するトランザクションを検索する。図４の例では、該当するトランザクションがトランザクションＴ１１だけであるため、インプットデータ作成部１０２はトランザクションＴ１１を抽出する。
【００４８】
次に、インプットデータ作成部１０２は、減価額計算処理を実行し、アウトプットデータＯ１１の減価額を計算する。今回の送金は、オーブの購入から１１日後に行われているため、減価率は１０％である。そのため、インプットデータ作成部１０２は、アウトプットデータＯ１１の減価額は、１０００Ｏｒｂであると算出する。インプットデータ作成部１０２は、算出した減価額（１０００Ｏｒｂ）をアウトプットデータＯ１１の送金金額（１００００Ｏｒｂ）から減算し、アウトプットデータＯ１１の残高を９０００Ｏｒｂであると算出する。これは、今回の送金金額である７０００Ｏｒｂを上回っているため、インプットデータ作成部１０２は、アウトプットデータＯ１１のポインタを、今回のインプットデータＩ１１に指定する。さらにインプットデータ作成部１０２は、電子署名作成処理を実行する。具体的には、電子署名を格納する部分を除く、作成中のトランザクションのデータ全体にハッシュ関数を用いてダイジェストを作成する。そして、口座情報ＤＢ１３４に保存されたユーザＡの秘密鍵を用いてインプットデータ作成部１０２は、生成したダイジェストを暗号化して電子署名を作成する。
【００４９】
次に、アウトプットデータ作成部１０３は、送金金額を７０００Ｏｒｂ、送金先をユーザＢの口座アドレスとして、アウトプットデータＯ１２を作成する。さらに、アウトプットデータ作成部１０３は、アウトプットデータＯ１１の残高９０００Ｏｒｂから今回のアウトプットデータＯ１２の送金金額である７０００Ｏｒｂを減算し、差分である２０００Ｏｒｂを、ユーザＡの口座アドレスを送金先とするアウトプットデータＯ１３を作成する。
【００５０】
トランザクション配信部１０４は、インプットデータＩ１１と、アウトプットデータＯ１２と、アウトプットデータＯ１３とをトランザクションＴ１２に格納し、現在時刻をトランザクション発生時刻に指定して、トランザクションＴ１２を配信する。
【００５１】
なお、上述の例で、送金金額がたとえば９５００Ｏｒｂである場合、送金金額がアウトプットデータＯ１１の残高である９０００Ｏｒｂを上回っているため、インプットデータ作成部１０２は、アウトプットデータＯ１１のポインタを指定することができない。この場合、インプットデータ作成部１０２は、送金金額をたとえば９０００Ｏｒｂと５００Ｏｒｂとの２つの金額に分割することができる。このとき、インプットデータ作成部１０２は、それぞれの送金金額に対応するインプットデータを作成し、ポインタで参照するアウトプットデータを検索することが望ましい。さらにこの場合、アウトプットデータ作成部１０３は、送金金額が９０００Ｏｒｂのアウトプットデータと、５００Ｏｒｂのアウトプットデータとをそれぞれ作成するとしてもよい。
【００５２】
このように本実施形態に係るウォレットツールが、オーブが時間の経過とともに減額するように、端末１００を機能させることで、オーブは投資の対象とされにくくなり、通貨価値の変動を抑えることが可能となる。
【００５３】
図２に戻り、端末２００の機能について説明する。
＜３−３．マイニングツールの機能＞
図２（Ｂ）は、ウォレットツールに加えて、マイニングツールをインストールした、端末２００の機能ブロック図の一例を示す図である。マイニングツールをインストールした端末２００には、上述したウォレットツールによって作成される機能ブロックに加えて、検証部２０１と、発掘部２０２と、報酬計算部２０３とが構築されることが望ましい。
【００５４】
検証部２０１は、受信したトランザクションの正当性を検証するために、以下の２つの処理を実行する。
・完全性検証処理
・整合性検証処理
検証部２０１は上記２つの検証処理の結果、完全性と整合性とが認められたトランザクションを正当なトランザクションであると承認することができるとしてもよい。
【００５５】
（完全性検証処理）
検証部２０１は、完全性検証処理として、受信したトランザクションに対して改ざんが行われていないかを検証する。具体的には、検証部２０１は、まず公開鍵情報ＤＢ１３３を参照して、受信したトランザクションのインプットデータに含まれる電子署名を、もとの所有者の公開鍵で復号して、インプットデータ作成部１０２が作成したダイジェストを取り出す。さらに検証部２０１は受信したトランザクションのデータ全体のうち電子署名を格納する部分を除いたデータから、ハッシュ関数を用いてダイジェストを生成する。検証部２０１は、復号したダイジェストと生成したダイジェストとが一致するか否かを検証し、一致する場合にはトランザクションデータの完全性を承認することができる。検証部２０１は、トランザクションに含まれるすべてのインプットデータの電子署名を検証できた場合に、当該トランザクションの完全性を承認することができるとしてもよい。
【００５６】
（整合性検証処理）
検証部２０１は、整合性検証処理として、受信したトランザクションがブロックチェーン全体として整合性がとれた取引であるか否かを検証する。具体的には、検証部２０１は、上述した減価額計算処理と同様の処理を実行して、インプットデータの残高を計算して、計算した残高がアウトプットデータの金額より上回っているか検証する。
また、検証部２０１は、整合性検証処理として、検証対象のトランザクションのインプットデータと同じアウトプットデータを参照しているトランザクションがすでに承認されていないかを確認して二重取引の検証を行うとしてもよい。具体的には、検証部２０１は、ブロック情報ＤＢ１３２を参照して、ブロックチェーンにつながれたブロックに含まれるトランザクションのインプットデータのポインタが参照するアウトプットデータを抽出する。さらに検証部２０１は、今回の検証対象のトランザクションのインプットデータとして指定されたポインタが参照するアウトプットデータが、すでに参照されているものか否かを検証する。今回の検証対象のトランザクションのインプットデータとして指定されたポインタが参照するアウトプットデータが、過去のトランザクションのインプットデータからポインタを指定されていない場合、検証部２０１は、今回の検証対象のトランザクションのインプットデータの整合性を承認することができる。
検証部２０１は、トランザクションに含まれるすべてのインプットデータの整合性が承認できた場合に、当該トランザクションの整合性を承認することができるとしてもよい。
【００５７】
発掘部２０２は、検証部２０１の処理によって完全性と整合性が認められた正当なトランザクションを格納するブロックを生成するために、マイニングの処理を行う。具体的には、発掘部２０２は、現在のブロックチェーンの末尾のハッシュ値を、ハッシュ関数を用いて計算する。計算したハッシュ値と、生成するブロックに所定の値とを合わせたデータに対して、発掘部２０２は、ハッシュ関数を用いてハッシュ値を計算する。このデータには、ブロックの生成時刻を含めてもよい。このハッシュ値が所定の値以下になる場合、本実施形態では「ブロックが発掘された」という。ブロックを発掘すると、発掘部２０２は、当該ブロックを、ブロックチェーンの末尾につなぐことができる。
発掘部２０２は、ブロックをブロックチェーンにつなぐ際に、現在時刻を、当該ブロックに格納されているトランザクションのブロックチェーン追加時刻として指定することが望ましい。
【００５８】
報酬計算部２０３は、ブロックに格納した正当なトランザクションの減価額に基づいて、マイナーの報酬を計算する。たとえば、報酬計算部２０３は、インプットデータのポインタとして指定されたアウトプットデータの金額の、減価額の合計をマイナーの報酬として計算してもよい。具体的には、報酬計算部２０３は、インプットデータに含まれるポインタを順次参照していき、通貨発生トランザクションを抽出する。そして、報酬計算部２０３は、通貨発生トランザクションのトランザクション発生時刻を参照し、現在時刻との差分に基づいて減価率を計算する。この処理は、インプットデータ作成部１０２の減価額計算処理と同様の処理であってもよい。報酬計算部２０３は、発掘部２０２が生成したブロックに格納される各トランザクションの減価額の合計をマイナーの報酬として計算することができる。
さらに報酬計算部２０３は、送金金額を計算した報酬の金額、送信先を端末２００を利用するマイナーに指定して、アウトプットデータを作成して、当該アウトプットデータに基づいて通貨発生トランザクションを作成することが望ましい。報酬計算部２０３は作成した通貨発生トランザクションを、ネットワーク４００にブロードキャストで配信する。この通貨発生トランザクションは生成するブロックに含めることでブロードキャストすることが望ましい。この通貨発生トランザクションがネットワーク４００に接続しているいずれかのマイナーの端末によって承認されることで、端末２００を利用するマイナーは、報酬を受け取ることができる。
【００５９】
＜３−４．マイニング処理フロー＞
図５を用いて、マイニングツールをインストールした端末２００のマイニング処理の処理フローについて説明する。
まず、検証部２０１は、トランザクションＤＢ１３１を参照して、受信したトランザクションのうち、検証が行われていない未検証トランザクションが残っているか否か確認する（Ｓ１０１）。未検証トランザクションが残っている場合（Ｓ１０１：ＹＥＳ）には、検証部２０１は、当該未検証トランザクションを、検証を行うために取得する（Ｓ１０２）。
【００６０】
次に検証部２０１は、取得した検証対象のトランザクションに含まれるインプットデータのうち、未検証のインプットデータがある場合（Ｓ１０３：ＹＥＳ）、当該未検証のインプットを取得して（Ｓ１０４）、インプットデータの検証を行う。まず、検証部２０１は、取得したインプットデータのポインタから、当該インプットデータに用いられているオーブの通貨発生トランザクションを抽出する（Ｓ１０５）。さらに、検証部２０１は通貨発生トランザクションのトランザクション発生時刻と現在時刻との差分から、減価額とインプットデータの残高とを計算する（Ｓ１０６）。
【００６１】
次に、検証部２０１は、検証対象トランザクションに含まれるアウトプットデータの送金金額の合計金額が、計算した残高を上回っていないか確認して、当該インプットデータの正当性を検証する（Ｓ１０７）。送金金額の合計金額が、計算した残高を上回っている場合（Ｓ１０７：ＮＯ）には、検証部２０１は、検証対象のトランザクションは不正なトランザクションであるとして、ブロックには格納しない（Ｓ１５１）。一方で、検証対象トランザクションに含まれるアウトプットデータの送金金額の合計金額が、計算した残高を上回っていない場合（Ｓ１０７：ＹＥＳ）には、検証対象トランザクションは、正当なインプットデータであるとして、当該インプットデータを承認する。検証部２０１は、このＳ１０３〜１０７までの処理をトランザクションに含まれるすべてのインプットデータの検証が完了するまで繰り返し実行する。トランザクションに含まれるすべてのインプットデータが正当であると承認した場合には、検証は当該トランザクションを正当なトランザクションとしてブロックに格納する。
【００６２】
検証部２０１は、Ｓ１０１〜Ｓ１０７までの処理を未検証トランザクションがなくなるまで繰り返し実行する。端末２００が受信したトランザクションに未検証トランザクションがなくなると（Ｓ１０１：ＮＯ）、報酬計算部２０３は、ブロックに格納したトランザクションの減価額の合計金額に基づいて、マイナーの報酬を計算する。さらに報酬計算部２０３は、送金金額を計算した合計金額とし、送金先を当該マイナーに指定して、通貨発生トランザクションを作成し、ネットワーク４００にブロードキャストで配信する（Ｓ１０８）。配信した通貨発生トランザクションが他のマイナーに承認されると、報酬金が、通貨発生トランザクションを配信したマイナーに与えられる（Ｓ１０９）。
【００６３】
このように本実施形態に係るマイニングツールが、マイナーが獲得する報酬が承認したブロックに含まれるトランザクションの減価額に基づいて決定するように端末２００を機能させることで、マイナーに対する報酬を枯渇させないようにすることが可能となる。
【００６４】
（４  ハードウェア構成）
以下、図６を参照しながら、上述してきた端末１００及び端末２００をコンピュータ８００により実現する場合のハードウェア構成の一例を説明する。なお、それぞれの装置の機能は、複数台の装置に分けて実現することもできる。
【００６５】
図６に示すように、コンピュータ８００は、プロセッサ８０１、メモリ８０３、記憶装置８０５、入力Ｉ／Ｆ部８０７、データＩ／Ｆ部８０９、通信Ｉ／Ｆ部８１１、及び表示装置８１３を含む。
【００６６】
プロセッサ８０１は、メモリ８０３に記憶されているプログラムを実行することによりコンピュータ８００における様々な処理を制御する。例えば、端末１００の送金受付部１０１やインプットデータ作成部１０２、アウトプットデータ作成部１０３、トランザクション配信部１０４、端末２００の検証部２０１や発掘部２０２、報酬計算などは、メモリ８０３に一時記憶された上で、主にプロセッサ８０１上で動作するプログラムとして実現可能である。
【００６７】
メモリ８０３は、例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の記憶媒体である。メモリ８０３は、プロセッサ８０１によって実行されるプログラムのプログラムコードや、プログラムの実行時に必要となるデータを一時的に記憶する。
【００６８】
記憶装置８０５は、例えばハードディスクドライブ（ＨＤＤ）やフラッシュメモリ等の不揮発性の記憶媒体である。記憶装置８０５は、オペレーティングシステムや、上記各構成を実現するための各種プログラムを記憶する。この他、記憶装置８０５は、トランザクション情報ＤＢ１３１や、ブロック情報ＤＢ１３２、公開鍵情報ＤＢ１３３、口座情報ＤＢ１３４を記憶することも可能である。このようなプログラムやデータは、必要に応じてメモリ８０３にロードされることにより、プロセッサ８０１から参照される。
【００６９】
入力Ｉ／Ｆ部８０７は、ユーザからの入力を受け付けるためのデバイスである。入力Ｉ／Ｆ部８０７の具体例としては、キーボードやマウス、タッチパネル、各種センサ、ウェアラブル・デバイス等が挙げられる。入力Ｉ／Ｆ部８０７は、例えばＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）等のインタフェースを介してコンピュータ８００に接続されても良い。
【００７０】
データＩ／Ｆ部８０９は、コンピュータ８００の外部からデータを入力するためのデバイスである。データＩ／Ｆ部８０９の具体例としては、各種記憶媒体に記憶されているデータを読み取るためのドライブ装置等がある。データＩ／Ｆ部８０９は、コンピュータ８００の外部に設けられることも考えられる。その場合、データＩ／Ｆ部８０９は、例えばＵＳＢ等のインタフェースを介してコンピュータ８００へと接続される。
【００７１】
通信Ｉ／Ｆ部８１１は、コンピュータ８００の外部の装置と有線又は無線により、インターネットＮを介したデータ通信を行うためのデバイスである。通信Ｉ／Ｆ部８１１は、コンピュータ８００の外部に設けられることも考えられる。その場合、通信Ｉ／Ｆ部８１１は、例えばＵＳＢ等のインタフェースを介してコンピュータ８００に接続される。
【００７２】
表示装置８１３は、各種情報を表示するためのデバイスである。表示装置８１３の具体例としては、例えば液晶ディスプレイや有機ＥＬ（Ｅｌｅｃｔｒｏ−Ｌｕｍｉｎｅｓｃｅｎｃｅ）ディスプレイ、ウェアラブル・デバイスのディスプレイ等が挙げられる。表示装置８１３は、コンピュータ８００の外部に設けられても良い。その場合、表示装置８１３は、例えばディスプレイケーブル等を介してコンピュータ８００に接続される。
【００７３】
[その他の実施形態]
以上、本発明の実施形態について述べたが、本発明は既述の実施形態に限定されるものではなく、本発明の技術的思想に基づいて各種の変形及び変更が可能である。
【００７４】
例えば、既述の実施形態において、マイニングツールは、ウォレットツールと合わせてインストールされる構成として説明したが、これに限定されない。たとえば、端末２００はマイニングツールだけをインストールする構成としてもよい。この場合、端末２００には、検証部２０１、発掘部２０２、及び報酬計算部２０３とあわせて、トランザクション情報ＤＢ１３１、ブロック情報ＤＢ１３２、及び公開鍵情報ＤＢ１３３がインストールされることが望ましい。
【符号の説明】
【００７５】
１０          仮想通貨システム
１００        端末
１０１        送金受付部
１０２        インプットデータ作成部
１０３        アウトプットデータ作成部
１０４        トランザクション配信部
１３１        トランザクション情報ＤＢ
１３２        ブロック情報ＤＢ
１３３        公開鍵情報ＤＢ
１３４        口座情報ＤＢ
２００        端末
２０１        検証部
２０２        発掘部
２０３        報酬計算部
４００        ネットワーク
【要約】
【課題】マイナーに対して報酬を無限に支払い続けることが可能であり、価値の変動の少ない仮想通貨を提供する、仮想通貨管理プログラム、及び仮想通貨管理方法を提供する。
【解決手段】コンピュータを、仮想通貨を送金する第１の取引における第１の送金金額及び第１の送金日時を含む第１の取引情報と、第１の送金金額の少なくとも一部を送金する第２の取引における第２の送金金額及び第２の送金日時を含む第２の取引情報と、を記憶する記憶手段、第２の取引情報の正当性を検証する手段、第１の送金日時と第２の送金日時との差分と、第１の送金金額とに基づいて、第１の送金金額の前記第２の送金日時における減価額を計算する手段、及び減価額に基づいて、第２の取引情報の検証者への報酬額を決定する手段として機能させる。
【選択図】図１【図３】
0005871347.tif 000002
【図１】
0005871347.tif 000003
【図２】
0005871347.tif 000004
【図４】
0005871347.tif 000005
【図５】
0005871347.tif 000006
【図６】
0005871347.tif 000007