(57)【要約】【課題】計算リソースのユーザに特段意識させることなくユーザの計算リソースでブロックチェーンの整合性の検証を行うことで、マイニングプール全体として効率よく報酬を受領することが可能な暗号通貨のマイニングシステムを提供すること。【解決手段】  ネットワーク２上にブロードキャストされた暗号通貨による取引情報を取得するサーバ４と、サーバ４から取引情報の少なくとも一部を取得して、この少なくとも一部の取引情報に基づいて分散台帳としてのブロックチェーンの整合性を検証する計算リソース５とを備え、計算リソース５は、所定のアプリケーションプログラムを実行する第１演算部３０と、ブロックチェーンの整合性を検証するマイニングプログラムを実行する第２演算部３１とを備え、第２演算部３１は、第１演算部３０が所定のアプリケーションプログラムを実行している期間においてマイニングを実行する。【選択図】図２
2019106612.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続されて、前記ネットワーク上にブロードキャストされた暗号通貨による取引情報を取得するサーバと、
前記サーバから前記取引情報の少なくとも一部を取得して、この少なくとも一部の取引情報に基づいて分散台帳としてのブロックチェーンの整合性を検証する計算リソースと
を備え、
前記計算リソースは、
所定のアプリケーションプログラムを実行する第１演算部と、
前記ブロックチェーンの整合性を検証するマイニングプログラムを実行する第２演算部と
を備え、
前記第２演算部は、前記第１演算部が前記所定のアプリケーションプログラムを実行している期間において、前記マイニングプログラムを実行することを特徴とする暗号通貨のマイニングシステム。
【請求項２】
前記サーバにおいて、前記ネットワーク上にブロードキャストされた暗号通貨による取引情報に含まれるデジタル署名の完全性を検証し、前記計算リソースにおいて、前記ブロックチェーンの整合性を検証することを特徴とする請求項１に記載の暗号通貨のマイニングシステム。
【請求項３】
前記第２演算部は、前記ブロックチェーンの整合性の検証が成功した場合に、前記第１演算部に対して新たなブロックのハッシュ値の生成に用いたパラメータを出力し、
前記第１演算部は、入力された前記パラメータを前記サーバに送信し、前記サーバは、受信した前記パラメータに基づいて新たなブロックを生成し、このブロックが第三者に認定されることで報酬を受領することを特徴とする請求項１または請求項２に記載の暗号通貨のマイニングシステム。
【請求項４】
前記第１演算部をＣＰＵで構成し、前記第２演算部をＧＰＵまたはＡＳＩＣで構成したことを特徴とする請求項１乃至請求項３のいずれか一項に記載の暗号通貨のマイニングシステム。
【請求項５】
前記計算リソースは、更に稼働時間計測部を備え、
前記稼働時間計測部は、前記第２演算部が前記マイニングプログラムを実行していた時間を計測することを特徴とする請求項１乃至請求項４のいずれか一項に記載の暗号通貨のマイニングシステム。
【請求項６】
前記計算リソースは、前記第１演算部が前記所定のアプリケーションプログラムの実行を停止した後に、前記第２演算部が前記マイニングプログラムを実行した時間を前記サーバに送信することを特徴とする請求項５に記載の暗号通貨のマイニングシステム。
【請求項７】
前記サーバは、
前記計算リソースに対して前記所定のアプリケーションプログラムを提供するアプリケーション提供部と、
前記計算リソースに対して前記アプリケーションプログラムの提供に係る対価を課金する課金部と
を更に備え、
前記課金部は、
前記サーバに対して通知された、前記第２演算部が前記マイニングプログラムを実行した時間に基づいて、前記計算リソースの報酬額を決定し、前記所定のアプリケーションプログラムの提供に係る対価から前記報酬額を減算して、前記計算リソースに対して課金することを特徴とする請求項６に記載の暗号通貨のマイニングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号通貨による取引で用いられるデジタル署名の完全性を検証するとともに、取引に基づき生成される分散台帳としてのブロックチェーンの整合性を検証して報酬を受領する暗号通貨のマイニングシステムに関し、特に、マイニングプール等のコミュニティにおける計算リソースを有効に活用する暗号通貨のマイニングシステムに関する。
【背景技術】
【０００２】
近年、ビットコイン等に代表される暗号通貨が普及しつつある。暗号通貨においては、中央銀行や政府の信用に基づく中央集権的な管理に依存することなく取引に係る情報の信頼性を担保することが可能なブロックチェーンなる機構が導入される。
【０００３】
ブロックチェーンにおいては、取引に係る情報に対する暗号化やデジタル署名等の技術を導入することで取引情報の改ざんが防止される。
【０００４】
また、ブロックチェーンは、暗号通貨の取引情報がブロックと称される単位で連鎖（チェーン）する構造を持ち、ブロックチェーンの生成に際しては、ネットワークに接続された一つのノード（コンピュータ、サーバ等の計算リソース）が当該ネットワークにブロードキャストされた取引情報に不正がないことを検証し、その取引情報を含んだブロックを生成するとともに、検証結果を他のノードに通知し、この検証結果がブロックを生成したノード以外の複数のノードで承認されることで二重譲渡等の不正が防止される。即ち、暗号通貨を用いた取引において当事者間でやり取りされる取引情報の完全性及びブロックチェーンの整合性は、ネットワークに接続された複数のノードによる合意形成によって担保されている。
【０００５】
このように、ブロックチェーンは分散台帳を実現する技術であり、Peer to Peerネットワークにおいて取引に参加する者が共有する台帳として機能する。
【０００６】
暗号通貨を金のような鉱物になぞらえて、ブロックを生成するプロセスは「採掘（マイニング）」、採掘を行う者（ノード）は「採掘者（マイナ）」のように称される。ブロックを生成するプロセスは、いわゆる「くじ引き」に見立てられる全探索・総当たり的な数学的演算処理に基づいており、一般に大きな計算コストを要するものの、取引情報の完全性とブロックチェーンの整合性を検証したマイナとしてのノードは報酬を受領することができる。
【０００７】
具体的には、マイニングによって報酬を受領するノードは、ブロックに格納する先頭の取引を、「無」から自己のノード（アドレス）に宛てられた取引（通貨の生成取引）とすることが許されている。この報酬を受領するためにノード間では激しい競争が行われる。このように、計算コストによって悪用を防ぐ方法は、一般にＰｏＷ（Proof of Work：作業証明）と称される。（非特許文献１，非特許文献２）
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】斉藤賢爾、「これでわかった  ビットコイン  [生き残る通貨の条件]」、初版、太郎次郎社エディタス、２０１４年５月５日、ｐ．８７−８９
【非特許文献２】斉藤賢爾、ビットコイン−人間不在のデジタル巨石貨幣、WIDEテクニカルレポート
【発明の開示】
【発明が解決しようとする課題】
【０００９】
さて、マイニングでは大きな計算能力を有するノードが圧倒的に有利であり、例えばＡＳＩＣ（Application Specific Integrated Circuit）を備える専用ハードウェアを用いたとしても、個人のマイナがマイニングに成功する可能性は極めて低くなっている。そこで、複数のマイナが協力してマイニングを行うマイニングプールと呼ばれるコミュニティが知られている。マイニングプールでは、コミュニティの参加者にマイニングの結果得られた報酬がその貢献度に応じて分配される。
【００１０】
しかしながら、マイニングのためのみに自己が所有する計算リソースの全てを割り当てる（即ち、計算リソースにおいて、いわゆるマイニングツールと称されるアプリケーションプログラムのみを専ら稼働させる）ことに抵抗を覚える者も多い。潜在的には、マイニングツールを自らの意思で稼働させる積極的な参加者よりも、マイニングを特段意識することなくコミュニティへの参加を希望する消極的な参加者が多数存在すると考えられる。
【００１１】
このような潜在的な参加者を増加させることで、マイニングプール全体としてみたときの計算能力を大幅に増大させることが可能となるが、従来技術ではマイニングプールにおいて、消極的な参加者の計算リソースを最大限に活用する技術や手法については示唆されていない。
【００１２】
本発明は、このような従来技術の課題を解決するべく案出されたものであり、その主な目的は、計算リソースのユーザに特段意識させることなくユーザの計算リソースでマイニング、特にブロックチェーンの整合性の検証を行うことで、マイニングプール全体として効率よく報酬を受領することが可能な暗号通貨のマイニングシステムを提供することにある。
【課題を解決するための手段】
【００１３】
前記課題を解決するためになされた本発明は、ネットワークに接続されて、前記ネットワーク上にブロードキャストされた暗号通貨による取引情報を取得するサーバと、前記サーバから前記取引情報の少なくとも一部を取得して、この少なくとも一部の取引情報に基づいて分散台帳としてのブロックチェーンの整合性を検証する計算リソースとを備え、前記計算リソースは、所定のアプリケーションプログラムを実行する第１演算部と、前記ブロックチェーンの整合性を検証するマイニングプログラムを実行する第２演算部とを備え、前記第２演算部は、前記第１演算部が前記所定のアプリケーションプログラムを実行している期間において、前記マイニングプログラムを実行する暗号通貨のマイニングシステムである。
【００１４】
これによって、計算リソースのユーザが所定のアプリケーションプログラムを実行している際に、アプリケーションプログラムを実行するリソースとは異なるリソースにてマイニングプログラムが実行され、計算リソースのユーザに特段意識させることなくマイニングを行わせることが可能となり、結果的にマイニングプール全体として効率よく報酬を受領することが可能となる。
【００１５】
また、本発明は、前記サーバにおいて、前記ネットワーク上にブロードキャストされた暗号通貨による取引情報に含まれるデジタル署名の完全性を検証し、前記計算リソースにおいて、前記ブロックチェーンの整合性を検証するようにしたものである。
【００１６】
これによって、サーバと計算リソースとの間で機能分担を図り、計算リソースをブロックチェーンの整合性の検証にのみ特化させることで、計算リソースのメモリの記憶容量が少なくともマイニングシステム全体として効率よくマイニングを行うことができる。
【００１７】
また、本発明は、前記第２演算部は、前記ブロックチェーンの整合性の検証が成功した場合に、前記第１演算部に対して新たなブロックのハッシュ値の生成に用いたパラメータを出力し、前記第１演算部は、入力された前記パラメータを前記サーバに送信し、前記サーバは、受信した前記パラメータに基づいて新たなブロックを生成し、このブロックが第三者に認定されることで報酬を受領するようにしたものである。
【００１８】
これによって、暗号通貨のマイニングシステムは報酬を得ることが可能となる。
【００１９】
また、本発明は、前記第１演算部をＣＰＵで構成し、前記第２演算部をＧＰＵまたはＡＳＩＣで構成したものである。
【００２０】
これによって、アプリケーションプログラムを実行する際に使用されていないリソースを有効に活用してマイニングを行うことが可能となる。
【００２１】
また、本発明は、前記計算リソースは、更に稼働時間計測部を備え、前記稼働時間計測部は、前記第２演算部が前記マイニングプログラムを実行していた時間を計測するようにしたものである。
【００２２】
これによって、計算リソースがマイニングに貢献した度合を計測することが可能となる。
【００２３】
また、本発明は、前記計算リソースは、前記第１演算部が前記所定のアプリケーションプログラムの実行を停止した後に、前記第２演算部が前記マイニングプログラムを実行した時間を前記サーバに送信するようにしたものである。
【００２４】
これによって、サーバは計算リソースの貢献に応じて、計算リソースに報酬を配分することが可能となる。
【００２５】
また、本発明は、前記サーバは、前記計算リソースに対して前記所定のアプリケーションプログラムを提供するアプリケーション提供部と、前記計算リソースに対して前記アプリケーションプログラムの提供に係る対価を課金する課金部とを更に備え、前記課金部は、前記サーバに対して通知された、前記第２演算部が前記マイニングプログラムを実行した時間に基づいて、前記計算リソースの報酬額を決定し、前記所定のアプリケーションプログラムの提供に係る対価から前記報酬額を減算して、前記計算リソースに対して課金するようにしたものである。
【００２６】
これによって、サーバは受領した報酬を、計算リソースの貢献度に応じて、アプリケーションプログラムの提供の対価に還元させ、計算リソースのユーザの費用負担を軽減することが可能となる。
【発明の効果】
【００２７】
このように本発明によれば、計算リソースのユーザが所定のアプリケーションプログラムを実行している際に、アプリケーションプログラムを実行するリソースとは異なるリソースにてマイニングプログラムが実行され、計算リソースのユーザに特段意識させることなくマイニングを行わせることが可能となり、結果的にマイニングプール全体として効率よく報酬を受領することが可能となる。
【図面の簡単な説明】
【００２８】
【図１】本発明の第１実施形態に係る暗号通貨のマイニングシステムＳ１と他の構成要素との関係を示す説明図
【図２】本発明の第１実施形態に係るマイニングシステムＳ１の構成を示すブロック構成図
【図３】本発明の第１実施形態に係るマイニングシステムＳ１が検証対象とするブロックチェーン５０の構成を示す説明図
【図４】本発明の第１実施形態におけるマイニングシステムＳ１の処理、特にサーバ４における処理の概要を示すフローチャート
【図５】本発明の第１実施形態において、計算リソース５の第１演算部３０の処理を示すフローチャート
【図６】本発明の第１実施形態において、計算リソース５の第２演算部３１の処理を示すフローチャート
【図７】本発明の第２実施形態に係るマイニングシステムＳ２の構成を示すブロック構成図
【図８】本発明の第３実施形態に係るマイニングシステムＳ３の構成を示すブロック構成図
【発明を実施するための形態】
【００２９】
（第１実施形態）
以下、本発明の第１実施形態について図面を参照して説明する。図１は、本発明の第１実施形態に係る暗号通貨のマイニングシステムＳ１と他の構成要素との関係を示す説明図である。
【００３０】
図１において、１は例えばインターネット等のネットワーク２ａに接続されて暗号通貨のマイニングを実行するノードであり、本発明に係る暗号通貨のマイニングシステムＳ１（以降、単に「マイニングシステムＳ１」と称することがある。）も、ノード１の一つとしてネットワーク２ａに接続されている。ネットワーク２ａには、スマートフォン等の情報端末で構成され暗号通貨を用いて取引を行う決済端末３が接続されている。決済端末３としてのスマートフォンは暗号通貨の利用者に携帯され、例えばＷｉＦｉ（Wireless Fidelity）等の無線技術によってネットワーク２ａに接続される。もちろん決済端末３は、パーソナルコンピュータやタブレット端末等であっても構わない。なお、以降の説明においてマイニングシステムＳ１以外のノード１を「第三者ノード６」と称することがある。
【００３１】
暗号通貨を用いた取引が行われると、決済端末３から取引情報がネットワーク２に配信（ブロードキャスト）される。各ノード１はネットワーク２ａを介して取引情報（以降、「トランザクション」と称することがある。）を取得し、取引情報の完全性とブロックチェーンの整合性を検証する。そして最初にこれらの検証に成功してブロックチェーンに新たなブロックを追加したノード１が報酬を受領する。この検証によって報酬を得る行為は、上述したように発掘（マイニング）と称され、マイニングを行う者は採掘者（マイナ）と称される。なお、以降、取引情報の完全性とブロックチェーンの整合性を検証して報酬を得られる状況を、「マイニングに成功した」のように称することがある。
【００３２】
ネットワーク２ａに接続されたノード１の一つであるマイニングシステムＳ１は、サーバ４と計算リソース５とを含み、いわゆるマイニングプールを構成する。サーバ４と計算リソース５はインターネット等のネットワーク２ｂに接続されており、相互にデータをやりとりし、計算リソース５では少なくともブロックチェーンの整合性を検証するマイニングプログラムが実行される。ここで計算リソース５は例えばパーソナルコンピュータのような計算機で構成され、後述するようにＣＰＵ（Central Processing Unit）とＧＰＵ（Graphics Processing Unit）とを実装している。
【００３３】
なお、上述のごとくマイニングシステムＳ１を構成するサーバ４と計算リソース５とはネットワーク２ａとは独立したネットワーク２ｂで接続されているものと説明したが、実際はネットワーク２ｂとネットワーク２ａとを区別する必要はなく、これらのネットワーク２ａ，２ｂは同一であってもよい（以降、ネットワーク２ａとネットワーク２ｂをまとめて「ネットワーク２」と称することがある）。
【００３４】
マイニングシステムＳ１も、ネットワーク２ａ上にブロードキャストされたトランザクションを受信して、マイニングを試みる。
【００３５】
図２は、本発明の第１実施形態に係るマイニングシステムＳ１の構成を示すブロック構成図である。図２において、サーバ４は、ＣＰＵ等で構成された第３演算部１０と、第３演算部１０で実行されるプラグロムを記憶するとともにワークエリアとして機能するＲＡＭ（Random Access Memory）やフラッシュメモリ等の不揮発性メモリで構成された第２記憶部１１と、ネットワーク２を介して計算リソース５との間でデータを送受信する第２送受信部１２と、ネットワーク２にブロードキャストされたトランザクションのうち、取引で使用されるデジタル署名におけるハッシュ値を復号する送信者（一般に複数）の公開鍵を格納した公開鍵データベース１３（以降、「公開鍵ＤＢ１３」と称することがある）と、サーバ４が利用するアプリケーションプログラム、ＯＳ（Operating System）及び計算リソース５に有償貸与（利用に係るライセンス許諾）するアプリケーションプログラムを格納したアプリケーションデータベース１４（以降、「アプリケーションＤＢ１４」と称することがある。）を備える。公開鍵ＤＢ１３及びアプリケーションＤＢ１４は、ＨＤＤ（Hard Disc Drive）やフラッシュメモリ等の不揮発性メモリで構成される。
【００３６】
第３演算部１０と第２記憶部１１と第２送受信部１２と公開鍵ＤＢ１３とアプリケーションＤＢ１４とは、第２バス１５で接続され、相互にデータをやりとりする。
【００３７】
なお、計算リソース５に貸与されるアプリケーションプログラムは、アプリケーションＤＢ１４に格納されずに、図示しない第２サーバに格納しておき、計算リソース５は当該第２サーバにアクセスしてアプリケーションプログラムをダウンロードしてもよい。
【００３８】
図３は、本発明の第１実施形態に係るマイニングシステムＳ１が検証対象とするブロックチェーン５０の構成を示す説明図である。図示するように、ブロックチェーン５０は複数のブロック５１で構成され、各ブロック５１には多数の取引情報としてのトランザクション（図３には、単に「取引」と記載している）と、前ブロックのハッシュ値と、マイニングに際して使用するパラメータであるＮｏｎｃｅ（ナンス）とが含まれる。以降、図２に図３を併用して説明を続ける。
【００３９】
第３演算部１０は、受信したトランザクションに含まれるデジタル署名を、公開鍵ＤＢ１３に記憶された送信者の公開鍵で復号し、デジタル署名が改ざん等されていないか（完全性）を検証する完全性検証部２１と、Ｎｏｎｃｅの範囲を計算リソース５に指定するＮｏｎｃｅ指定部２２と、計算リソース５がマイニングを行ってブロックチェーン５０の整合性を検証した場合に報酬を発生させる報酬発生部２３と、計算リソース５の要求に応じて計算リソース５が利用するアプリケーションプログラムを提供するアプリケーション提供部２４と、計算リソース５に対して貸与したアプリケーションプログラムの利用料金を課金する課金部２５とを備える。
【００４０】
図２では、第３演算部１０を機能ブロックの集合として記載しているが、実際は第３演算部１０の構成要素としてのＣＰＵが、第２記憶部１１に記憶されたプログラムを実行することで、これらの機能が発揮される。
【００４１】
計算リソース５は、ＣＰＵで構成された第１演算部３０と、ＧＰＵで構成された第２演算部３１と、第１演算部３０及び第２演算部３１で実行されるプラグロムを記憶するとともにワークエリアとして機能するＲＡＭ等で構成された第１記憶部３２と、ネットワーク２ｂを介してサーバ４との間でデータを送受信する第１送受信部３３と、サーバ４から提供を受け（貸与されて）第１演算部３０で実行されるアプリケーションプログラムや、ＯＳを格納したアプリケーション記憶部３４を備える。アプリケーション記憶部３４は、ＨＤＤ（Hard Disc Drive）やフラッシュメモリ等の不揮発性メモリで構成される。
【００４２】
もちろん、第２演算部３１が実行するマイニング（特にブロックチェーンの整合性の検証）の用に供されるプログラム（以降、「マイニングプログラム」と称することがある。）はアプリケーション記憶部３４に記憶されていてもよい。
【００４３】
なお、ブロックチェーンの整合性の検証に際してはハッシュ関数で用いられ、ハッシュ関数における浮動小数点演算ではＧＰＵが圧倒的に高い演算能力を持つことから、第１実施形態においては、第２演算部３１をＧＰＵで構成しているが、もちろん、第２演算部３１としてＡＳＩＣを採用してもよい。
【００４４】
第１演算部３０と第１記憶部３２と第２演算部３１とアプリケーション記憶部３４と第１送受信部３３とは、第１バス３６で接続され、相互にデータをやりとりする。
【００４５】
第１演算部３０は、アプリケーション記憶部３４から第１記憶部３２に転送され、第１記憶部３２に一時的に記憶されたアプリケーションプログラムを実行するアプリケーション実行部３５を備える。
【００４６】
なお、ここではアプリケーションプログラムとは、計算リソース５においてユーザによって実行される例えば文書作成プログラムや、表計算プログラムや、画像処理プログラム等を指すが、アプリケーションプログラムは特に限定されるものではない。
【００４７】
図２では、第１演算部３０を機能ブロックとして記載しているが、実際は第１演算部３０を構成するＣＰＵが、第１記憶部３２に記憶されたプログラムを実行することで、これらの機能が発揮される。
【００４８】
第２演算部３１は、アプリケーション記憶部３４から第１記憶部３２に転送され、第１記憶部３２に一時的に記憶されたマイニングプログラムを実行するマイニング部３７と、所定のクロック信号に同期してカウントを行うタイマで構成されマイニング部３７が実際に稼働した時間を計測する稼働時間計測部３８とを備える。
【００４９】
図２では、第１演算部３０を機能ブロックの集合として記載しているが、実際は第２演算部３１を構成するＧＰＵが、第１記憶部３２に記憶されたプログラムを実行することで、これらの機能が発揮される。
【００５０】
なお、独立したデータバス／アドレスバスを介してＧＰＵと接続された記憶部（図示せず）を第２演算部３１に別途設けて、この記憶部にマイニングプログラムを記憶させＧＰＵによって実行させるようにしてもよい。このように構成することで、マイニングを高速化することが可能となる。
【００５１】
図４は、本発明の第１実施形態におけるマイニングシステムＳ１の処理、特にサーバ４における処理の概要を示すフローチャートである。以降、図４に図２を併用して本発明に係るマイニングシステムＳ１で実行される処理について説明する。
【００５２】
サーバ４は、第２送受信部１２を介してネットワーク２上にブロードキャストされたトランザクションを受信する（ＳＴ００１）。受信したトランザクションは第２記憶部１１に記憶される。サーバ４は受信したトランザクションに未検証のトランザクションがないか判定し（ＳＴ００２）、未検証のトランザクションが存在する場合（ＳＴ００２でＹｅｓ）、当該トランザクションを第２記憶部１１から取得する（ＳＴ００３）。
【００５３】
次に完全性検証部２１は、トランザクションの完全性、即ち受信したトランザクションに改ざん等が行われていないかを検証する（ＳＴ００４）。具体的には、公開鍵ＤＢ１３を参照して、受信したトランザクションに含まれるデジタル署名を、送信元の公開鍵で復号して第１ダイジェストを取り出し、更に受信したトランザクションのデータ全体のうちデジタル署名を除いたデータから、ハッシュ関数を用いて第２ダイジェストを生成する。両者が一致していれば、トランザクションの送信者が正当（なりすましが行われていない）であり、かつトランザクションに改ざんが行われていないことが検証される。もちろん、完全性検証部２１が複数のトランザクションに含まれるデジタル署名を全て検証した場合に、完全性が検証されたと判定するようにしてもよい。
【００５４】
完全性検証部２１は、第１ダイジェストと第２ダイジェストが一致して完全性が満たされるか否かを判定し（ＳＴ００５）、完全性が満たされる場合は（ＳＴ００５でＹｅｓ）、複数の計算リソース５に対してＮｏｎｃｅ以外のブロックヘッダ（以降、単に「ブロックヘッダ」と称することがある。）をブロードキャストする（ＳＴ００６）。ここで、ブロックヘッダとは、トランザクションのデータのうちマークル・ルート（根ノード）のハッシュ値（ルートハッシュとも称される）のみを含み、ハッシュ木（全てのノードがハッシュを持った二分木）で繋がれた個々のトランザクションのハッシュ値は含まない。即ちブロックヘッダにはブロック全体としてのハッシュ値のみが含まれる。
【００５５】
他方、完全性が満たされない場合（ＳＴ００５でＮｏ）、処理はＳＴ００２に戻る。ブロードキャストされたブロックヘッダは計算リソース５によって受信され、マイニング（ここでは、ブロックチェーン５０の整合性）が検証される（ＳＴ００７。詳細は後述する）。
【００５６】
なお、ＳＴ００６において、計算リソース５に対してブロックヘッダをブロードキャストするにあたって、Ｎｏｎｃｅ指定部２２でＮｏｎｃｅの数値範囲を、例えばマイニングに参加する計算リソース５の演算能力として想定されるランク別に複数定めてリスト化（以降、「Ｎｏｎｃｅリスト」と称することがある。）しておき、別途Ｎｏｎｃｅリストをブロードキャストしてもよい。
【００５７】
このとき、ブロックヘッダを受信した計算リソース５は、自己の演算能力に応じてマイニングに際して使用するＮｏｎｃｅの数値範囲をＮｏｎｃｅリストから選択する。そして計算リソース５は自己が選択したＮｏｎｃｅリストの番号をサーバ４に通知（宣言）し、Ｎｏｎｃｅ指定部２２は、特定の計算リソース５が使用する旨を宣言した番号を削除したＮｏｎｃｅリストを再度ブローキャストしてもよい。これによって、個々の計算リソース５が同一のＮｏｎｃｅを重複して使用することを防止して、マイニングシステムＳ１全体としての効率が向上する。
【００５８】
次にサーバ４は、ブロックヘッダを受信した計算リソース５からマイニングに成功した旨の報告を待ち受ける（ＳＴ００８）。サーバ４が計算リソース５からマイニングに成功した旨の報告を受信した場合（ＳＴ００８でＹｅｓ）、第３演算部１０は、計算リソース５から受信したＮｏｎｃｅ（パラメータ）に基づいて新たなブロックを生成し、その後報酬発生部２３は報酬を受領する（ＳＴ００９）。報酬を受領した後、処理はＳＴ００１に移る。
【００５９】
さて、報酬の受領は、具体的には報酬発生部２３がコインベースと称されるトランザクションを発生させることによって実現される。コインベースは取引ではなくマイニングによって獲得した通貨の生成を行うトランザクション（通貨発生トランザクション）であり、マイニングの成功により新たに生成されたブロックの情報を含む。報酬発生部２３は作成した通貨発生トランザクションを、ネットワーク２にブロードキャストする。当該通貨発生トランザクションがネットワーク２に接続された第三者ノード６によって承認されることで、サーバ４は報酬を受領することができる。
【００６０】
このように、報酬の受領者はブロックチェーン５０において新しくブロックを生成したノード１となる。通貨発生トランザクションによって、新たにブロックを生成したノード１が所定の通貨を報酬として受領する。マイニングシステムＳ１が報酬を受領した場合、サーバ４の第２記憶部１１を構成する不揮発性メモリ（図示せず）に通貨が記憶される。もちろん図示しないＨＤＤ等の記憶手段に記憶してもよい。
【００６１】
サーバ４が計算リソース５からマイニングに成功した旨の報告を受信していない場合（ＳＴ００８でＮｏ）、サーバ４は、第三者ノード６がマイニングに成功しているか否かを判定する（ＳＴ０１０）。具体的にはマイニングに参加するノード１は、マイニングに成功して新たに生成したブロックを他のノード１にブロードキャストするため、マイニングシステムＳ１を構成するサーバ４も、第三者ノード６がマイニングに成功したか否かを判定することができる。
【００６２】
第三者ノード６がマイニングに成功した場合（ＳＴ０１０でＹｅｓ）、処理はＳＴ００１に戻る。他方、第三者ノード６がマイニングに成功していない場合（ＳＴ０１０でＮｏ）、処理はＳＴ００８に戻る。
【００６３】
さて、上述したＳＴ００２で未検証のトランザクションが存在しなかった場合（ＳＴ００２でＮｏ）、サーバ４は計算リソース５からマイニングを実行した稼働時間を得る（ＳＴ０１１）。そしてサーバ４は受信した稼働時間に基づいて各計算リソース５の貢献度を決定し（ＳＴ０１２）、この貢献度に応じて、受領した報酬の配分額を決定する（ＳＴ０１３）。この配分額は、計算リソース５毎に第２記憶部１１を構成する不揮発性メモリ（図示せず）に記憶される。もちろん図示しないＨＤＤ等の記憶手段に記憶してもよい。
【００６４】
ここで、第１実施形態においては、上述のごとくサーバ４のアプリケーションＤＢ１４には、計算リソース５に対して有償貸与されるアプリケーションプログラムが記憶されており、また、計算リソース５のアプリケーション記憶部３４には、サーバ４から貸与されたアプリケーションプログラムが記憶されている。このアプリケーションプログラムの貸与に係る対価は例えば月額料金として定められている。課金部２５は当該対価から報酬の配分額を減じて計算リソース５毎の請求額を更新し（ＳＴ０１４）、対価が月額料金として定められている場合は、月に一度、計算リソース５の所有者に対して決済処理を実行する。ＳＴ０１４を終了すると処理はＳＴ００１に移る。
【００６５】
なお、ＳＴ０１２〜ＳＴ０１４の処理は、実際に課金部２５が課金を実行する際に実行されてもよい。即ち、サーバ４は計算リソース５から送信された稼働時間を第２記憶部１１等に都度記憶しておき、例えば月に一度、稼働時間を合計し、これに基づいて各計算リソース５の貢献度を決定して、報酬の配分額及び貸与に係る対価からの減額処理を実行してもよい。
【００６６】
図５は、本発明の第１実施形態において、計算リソース５の第１演算部３０の処理を示すフローチャートである。以降、図５に図２を併用して、マイニングを実行する計算リソース５の処理、特に第１演算部３０の処理について詳細に説明する。
【００６７】
まず、計算リソース５のユーザは、貸与されたアプリケーションプログラムを起動する。これに伴いアプリケーションプログラムは、第１演算部３０のアプリケーション実行部３５で実行される（ＳＴ１０１）。第１演算部３０は、第１送受信部３３を介してサーバ４によってブロックヘッダがブロードキャストされているか否かを確認する（ＳＴ１０２）。
【００６８】
ブロックヘッダがブロードキャストされている場合（ＳＴ１０２でＹｅｓ）、第１演算部３０はブロックヘッダを受信する（ＳＴ１０３）。他方、ブロックヘッダがブロードキャストされていない場合（ＳＴ１０２でＮｏ）、アプリケーションプログラムが実行を停止したか（即ち、計算リソース５のユーザがプログラムを終了したか否か）が判定され（ＳＴ１０４）、アプリケーションプログラムの実行が停止している場合（ＳＴ１０４でＹｅｓ）は、処理を終了する。アプリケーションプログラムの実行が継続されている場合（ＳＴ１０４でＮｏ）、処理はＳＴ１０２に戻る。
【００６９】
ＳＴ１０３を実行した後、第１演算部３０は、計算リソース５に第２演算部３１が実装されているか否かを判定する（ＳＴ１０５）。実装されている場合（ＳＴ１０５でＹｅｓ）、第１演算部３０は、第２演算部３１に対してサーバ４から受信したブロックヘッダを転送する。ここで上述したＮｏｎｃｅリストを選択している場合、Ｎｏｎｃｅの数値範囲もまた第２演算部３１に転送される。
【００７０】
ブロックヘッダを転送した後、第１演算部３０は第２演算部３１に対して稼動指示信号をＯＮに制御する（ＳＴ１０６）。ここでは、第１演算部３０と第２演算部３１とは信号線４０で直接接続されている。具体的には、第１演算部３０の所定の出力ポートが第２演算部３１の所定の入力ポートに接続されており、第１演算部３０は信号線４０を介してステート信号としての稼働指示信号をＯＮにする。稼働指示信号をＯＮにすることで、第１演算部３０がアプリケーションプログラムを実行していることを前提として、第２演算部３１でマイニングが開始される。
【００７１】
なお、計算リソース５に第２演算部３１が実装されていない場合（ＳＴ１０５でＮｏ）の処理（図５において、ＳＴ２として示す部分の処理）については、第２実施形態で説明する。
【００７２】
ＳＴ１０６を実行した後、第１演算部３０は第１バス３６を介して第２演算部３１からマイニングに成功した旨の通知を待ち受ける（ＳＴ１０７）。マイニングに成功した旨の通知を受け取ると、第１演算部３０は第２演算部３１に対してマイニングに成功した際のＮｏｎｃｅの値と、ブロックヘッダに対するハッシュ値の送信要求を出力し、これらを取得すると、サーバ４に対してネットワーク２を介して送信するとともにマイニングに成功した旨を報告する（ＳＴ１０８）。
【００７３】
ＳＴ１０８を実行した後、第１演算部３０は、一旦稼動指示信号をＯＦＦに制御し（ＳＴ１０９）、処理はＳＴ１０２に戻る。
【００７４】
マイニングに成功した旨の通知を受けてない場合（ＳＴ１０７でＮｏ）、第１演算部３０はアプリケーション実行部３５でのアプリケーションプログラムの実行が停止しているか否かを判定する（ＳＴ１１０）。アプリケーションプログラムの実行が停止されている場合（ＳＴ１１０でＹｅｓ）、第１演算部３０は、第２演算部３１からマイニングプログラムを実行した稼働時間を得るとともに、第２演算部３１に対する稼動指示信号をＯＦＦに制御する（ＳＴ１１２）。そして、第１演算部３０は、サーバ４に対してネットワーク２を介して第２演算部３１が稼動した時間を報告し（ＳＴ１１３）、処理を終了する。
【００７５】
即ち、計算リソース５は、第１演算部３０が所定のアプリケーションプログラムの実行を停止した後に、第２演算部３１がマイニングプログラムを実行した時間をサーバ４に送信する。
【００７６】
図６は、本発明の第１実施形態において、計算リソース５の第２演算部３１の処理を示すフローチャートである。以降、図６に図２を併用して、マイニングを実行する計算リソース５の処理、特に第２演算部３１の処理について詳細に説明する。
【００７７】
ユーザによって計算リソース５の電源が投入されると、アプリケーション記憶部３４から第１記憶部３２または第２演算部３１の図示しない記憶手段にマイニングプログラムが転送されるとともに、第２演算部３１は第１演算部３０から信号線４０を介して稼働指示信号がＯＮになっているか否かを判定する（ＳＴ２０１）。
【００７８】
第１演算部３０でアプリケーションプログラムが実行され（ＳＴ１０１を参照）、稼動指示信号がＯＮになっている場合（ＳＴ２０１でＹｅｓ）、マイニング部３７はマイニングプログラムを実行してマイニングを開始する（ＳＴ２０２）。マイニングプログラムを実行することで、マイニング部３７は、第１演算部３０から転送されたブロックヘッダに対する整合性検証処理を施す。
【００７９】
具体的には、マイニング部３７は、整合性検証処理としてＰｏＷ（Proof of Work）と称される処理を実行する。ＰｏＷではＳＨＡ−２５６アルゴリズムに基づいて、ブロックヘッダに対してＮｏｎｃｅの値を変化させてハッシュ値を計算する。このハッシュ値の先頭に、一定の数以上の０が並んでいるという条件を満たす場合、正当なブロックとして認定される。即ち、「マイニング（発掘）に成功した」とは、上述した条件を満たすハッシュ値を探し当てたことにより、ブロックチェーン５０の終端に付加される新しいブロックを生成し得た状況、ということもできる。
【００８０】
このように第１実施形態では、サーバ４で個々のトランザクションの完全性の検証し、計算リソース５でブロックヘッダとＮｏｎｃｅを用いてブロックチェーン５０の整合性の検証が行われる。即ち、サーバ４と計算リソース５との間で機能分担が図られている。計算リソース５を整合性の検証にのみ特化させることで、計算リソース５の第１記憶部３２の容量が少なくともマイニングシステムＳ１全体として効率よくマイニングを行うことができる。
【００８１】
次に、稼働時間計測部３８では、マイニング部３７がマイニングを行った稼動時間の計測を開始する（ＳＴ２０３）。具体的には第２演算部３１に設けられた図示しないタイマをリセットするとともに、第２演算部３１に入力されるクロック信号に基づいて計時を行う。
【００８２】
第２演算部３１は、マイニング部３７がマイニングに成功したか否かを判定し（ＳＴ２０４）、マイニングに成功したときは（ＳＴ２０４でＹｅｓ）、第１演算部３０に成功した旨の通知を行う（ＳＴ２０５）とともに、ＰｏＷで得られた新たなブロックのハッシュ値及びＮｏｎｃｅの値（即ち、新たなブロックのハッシュ値の生成に用いたパラメータ）を通知して、処理をＳＴ２０１に戻す。上述したように、第２演算部３１からマイニングに成功した旨の通知を受けた第１演算部３０は、稼動指示信号を一旦ＯＦＦに制御するから（ＳＴ１０９参照）、第２演算部３１はマイニングに成功した後は、次に稼動指示信号がＯＮになるのを待ち受ける（ＳＴ２０１参照）。
【００８３】
上述したように、このハッシュ値は第１演算部３０からネットワーク２を介してサーバ４に報告され、サーバ４は第三者ノード６による検証を経て通貨発生トランザクションを生成して報酬を受領する。
【００８４】
他方、マイニングに成功していないとき（ＳＴ２０４でＮｏ）は、稼動指示信号がＯＦＦか否かを判定し（ＳＴ２０６）、稼動指示信号がＯＦＦである場合（ＳＴ２０６でＹｅｓ）は、稼働時間計測部３８で計測した稼働時間を第１演算部３０に通知し（ＳＴ２０７）、その後処理を終了する。他方、稼動指示信号がＯＮである場合（ＳＴ２０６でＮｏ）は、ＳＴ２０４に処理を移す。
【００８５】
このように、第１実施形態のマイニングシステムＳ１は、ネットワーク２に接続されて、ネットワーク２上にブロードキャストされた暗号通貨による取引情報（トランザクション）を取得するサーバ４と、サーバ４から取引情報の少なくとも一部（Ｎｏｎｃｅ以外のブロックヘッダ）を取得して、この少なくとも一部の取引情報に基づいて分散台帳としてのブロックチェーン５０の整合性を検証する計算リソース５とを備え、計算リソース５は、所定のアプリケーションプログラムを実行する第１演算部３０と、ブロックチェーンの整合性を検証するマイニングプログラムを実行する第２演算部３１とを備え、第２演算部３１は、第１演算部３０が所定のアプリケーションプログラムを実行している期間においてマイニングプログラムを実行する。逆に、第２演算部３１は、第１演算部３０が所定のアプリケーションプログラムを実行していない期間は、マイニングプログラムを実行しない。
【００８６】
また、第１実施形態のマイニングシステムＳ１は、第２演算部３１は、ブロックチェーン５０の整合性の検証が成功した場合に、第１演算部３０に対して新たなブロックのハッシュ値の生成に用いたパラメータ（Ｎｏｎｃｅ）を出力し、第１演算部３０は、入力されたパラメータをサーバ４に送信し、サーバ４は、受信したパラメータに基づいて新たなブロック５１を生成し、このブロック５１が第三者ノード６に認定されることで、報酬を受領する。
【００８７】
（第２実施形態）
図７は、本発明の第２実施形態に係るマイニングシステムＳ２の構成を示すブロック構成図である。第１実施形態では、計算リソース５は第２演算部３１としてのＧＰＵを具備していたが（図２参照）、第２実施形態では、計算リソース５には第２演算部３１が具備されておらず、第１演算部３０によってマイニングが実行される。
【００８８】
即ち、第２実施形態のマイニングシステムＳ２は、図示するように、計算リソース５は、第１演算部３０と、第１記憶部３２と、アプリケーション記憶部３４と、第１送受信部３３とを含み、第１演算部３０は、アプリケーション実行部３５と、マイニング部３７と、稼働時間計測部３８とを含む。第１演算部３０の各構成要素の機能は第１実施形態と同等であるので、ここでの説明は省略する。
【００８９】
なお、第２実施形態は第２演算部３１を具備しないことから、図７に示す構成は、図５のＳＴ１０５でＮｏと判断されたケースに対応する構成であり、図５にＳＴ２として示すフローを実行することから、以降、図５に図７を併用して説明を続ける。
【００９０】
計算リソース５のユーザがアプリケーションソフトを実行していることを前提として、第１演算部３０はサーバ４がブロードキャストしたブロックヘッダを受信すると（ＳＴ１０３）、ここでは第２演算部３１が実装されていないことから（ＳＴ１０５でＮｏ）、第１演算部３０は、第１記憶部３２の空き容量が十分であるかを判定する（ＳＴ１１４）。空き容量が十分である場合（ＳＴ１１４でＹｅｓ）、第１演算部３０でマイニング（ここでは、ブロックチェーン５０の整合性の検証）を開始する（ＳＴ１１５）とともに、稼働時間計測部３８による計時を開始する（ＳＴ１１６）。
【００９１】
第１演算部３０は、マイニング部３７がマイニングに成功したか否かを判定し（ＳＴ１１７）、マイニングに成功していれば（ＳＴ１１７でＹｅｓ）サーバ４に対して成功した旨と要件を満たすＮｏｎｃｅの値及び新たなブロックのハッシュ値を通知する（ＳＴ１１８）。その後、処理をＳＴ１０２に移す。
【００９２】
他方、マイニングに成功していなければ（ＳＴ１１７でＮｏ）、第１演算部３０は、アプリケーション実行部３５においてアプリケーションプログラムの実行が停止されたか否かを判定し（ＳＴ１１９）、アプリケーションプログラムの実行が停止されている場合（ＳＴ１１９でＹｅｓ）は、それまでマイニングに要した稼働時間をサーバ４に報告する（ＳＴ１１３）。他方、アプリケーションプログラムが実行されている場合（ＳＴ１１９でＮｏ）は、処理をＳＴ１１７に移す。
【００９３】
ここで、第１記憶部３２の空き容量が十分でない場合（ＳＴ１１４でＮｏ）、第１演算部３０は、計算リソース５のユーザに対して、表示手段（図示せず）等を介して第１記憶部３２の容量が不足しておりマイニングの実行ができない旨、及び貸与の対象ではないプログラムを終了して第１記憶部３２を開放するよう通知を行って、ユーザが空き容量を確保するよう促す（ＳＴ１２０）。
【００９４】
次に第１演算部３０は、貸与の対象となっているアプリケーションプログラムが実行を停止したか否かを判定し（ＳＴ１２１）、実行を停止している場合（ＳＴ１２１でＹｅｓ）は、処理を終了する。他方、実行を停止していない場合（ＳＴ１２１でＮｏ）は、処理をＳＴ１１４に移す。
【００９５】
（第３実施形態）
図８は、本発明の第３実施形態に係るマイニングシステムＳ３の構成を示すブロック構成図である。上述した第１実施形態では、サーバ４の第３演算部１０に設けられた完全性検証部２１で、個々のトランザクションの完全性を検証しているが、第３実施形態においては、完全性の検証を計算リソース５において行う点が第１実施形態とは異なっている。
【００９６】
第３実施形態のマイニングシステムＳ３では、図示するように、計算リソース５の第２演算部３１のマイニング部３７は、完全性検証部２１と整合性検証部４２とを備えている。第３実施形態では、サーバ４が受信したトランザクションのデータは全て計算リソース５に対してブロードキャストされ、計算リソース５では受信したトランザクションに対して完全性と整合性を検証する。即ち、第２演算部３１で実行されるマイニングプログラムは、デジタル署名の完全性及びブロックチェーンの整合性の両方を検証する。
【００９７】
このように、第３実施形態のマイニングシステムＳ３は、ネットワーク２に接続されて、ネットワーク２上にブロードキャストされた暗号通貨による取引情報を取得するサーバ４と、サーバ４から取引情報（トランザクション）を取得して、この取引情報に基づいてトランザクションの完全性と分散台帳としてのブロックチェーン５０の整合性とを検証する計算リソース５とを備え、計算リソース５は、所定のアプリケーションプログラムを実行する第１演算部３０と、トランザクションの完全性及びブロックチェーン５０の整合性を検証するマイニングプログラムを実行する第２演算部３１とを備え、第２演算部３１は、第１演算部３０が所定のアプリケーションプログラムを実行している期間においてマイニングプログラムを実行する。
【００９８】
以上、本発明に係る暗号通貨のマイニングシステムＳ１，Ｓ２，Ｓ３について特定の実施形態に基づいて詳細に説明したが、これらの実施形態はあくまでも例示であって、本発明はこれらの実施形態によって限定されるものではない。例えば、第３実施形態において、完全性検証部２１及び整合性検証部４２はいずれもマイニング部３７に設けられているが、完全性検証部２１を第１演算部３０に含ませてもよい。また、第１実施形態及び第３実施形態において、稼働時間計測部３８は第２演算部３１に設けられているが、稼働時間計測部３８を第１演算部３０に含ませてもよい。
【産業上の利用可能性】
【００９９】
本発明に係る暗号通貨のマイニングシステムは、計算リソースのユーザが意識することなくマイニングに参加することが可能であるから、マイニングに複数のユーザが参加するいわゆるマイニングプール等で用いる暗号通貨のマイニングシステムとして好適に応用することができる。
【符号の説明】
【０１００】
１    ノード
２，２ａ，２ｂ  ネートワーク
３    決済端末
４    サーバ
５    計算リソース
６    第三者ノード
１０  第３演算部
１１  第２記憶部
１２  第２送受信部
１３  公開鍵データベース（公開鍵ＤＢ）
１４  アプリケーションデータベース（アプリケーションＤＢ）
１５  第２バス
２１  完全性検証部
２２  Ｎｏｎｃｅ指定部
２３  報酬発生部
２４  アプリケーション提供部
２５  課金部
３０  第１演算部
３１  第２演算部
３２  第１記憶部
３３  第１送受信部
３４  アプリケーション記憶部
３５  アプリケーション実行部
３６  第１バス
３７  マイニング部
３８  稼働時間計測部
４０  信号線
４２  整合性検証部
５０    ブロックチェーン
５１    ブロック
【図１】
2019106612.tif 000003
【図２】
2019106612.tif 000004
【図３】
2019106612.tif 000005
【図４】
2019106612.tif 000006
【図５】
2019106612.tif 000007
【図６】
2019106612.tif 000008
【図７】
2019106612.tif 000009
【図８】
2019106612.tif 000010