(57)【要約】【課題】ブロックチェインシステムにおいて、正当なマイニングを行う主体が十分な規模の演算資源を容易に確保可能とする。【解決手段】サーバ装置１０は、一のブロックチェインシステムについて、前ブロックのハッシュ値と、現ブロックのデータ、探索範囲を含む情報をマイニングプールのクライアント装置５０に送信する。クライアント装置５０は、サーバ装置１０から送信された情報に基づいて、Ｎｏｎｃｅ値を算出し、算出したＮｏｎｃｅ値をサーバ装置１０に送信する。サーバ装置１０は、複数のブロックチェインシステムについての情報をクライアント装置５０に可能であり、所定の条件に基づいて一のブロックチェインシステムを決定し、決定したブロックチェインシステムに係る情報を、クライアント装置５０に送信してマイニングを行わせる。【選択図】図３
2019139691.tif 000002
【特許請求の範囲】
【請求項１】
複数の異なるデータソースからデータを取得可能なデータ取得手段と、
所定の条件に基づいて、前記複数のデータソースのうち一のデータソースを決定する決定手段と、
前記決定手段によって決定された前記データソースから取得された対象データと、該対象データに応じたデータ処理方法と、を少なくとも含む情報をクライアント装置に送信する送信手段と、
前記対象データ及び前記データ処理方法に基づいて生成された結果情報を前記クライアント装置から受信可能な受信手段と、
を備えたことを特徴とするサーバ装置。
【請求項２】
前記複数の異なるデータソースは、複数のブロックチェインシステムであり
前記決定手段は、前記複数のブロックチェインシステムから所定の条件に基づいて一のブロックチェインシステムを決定し、
前記送信手段は、前記一のブロックチェインシステムについて、前記対象データとなる新たなブロックデータと、前ブロックのハッシュ値と、探索対象となるＮｏｎｃｅ値の範囲と、前記データ処理方法としてのハッシュ関数を指定する情報と、を前記クライン装置に送信し、
前記ブロックデータ及び前記前ブロックのハッシュ値と合わせて前記ハッシュ関数を用いたハッシュ値を算出したときに当該ハッシュ値が所定条件を満たすＮｏｎｃｅ値を前記クライアント装置に探索させ、
前記受信手段は、前記結果情報としての前記所定条件を満たすＮｏｎｃｅ値を前記クライアント装置から受信可能である、
ことを特徴とするサーバ装置。
【請求項３】
請求項２に記載のサーバ装置において、
前記決定手段は、
前記複数のブロックチェインシステムの中から、少なくとも仮想通貨の換金レートと、ハッシュレートと、に基づく報酬の期待値が最も良いブロックチェインシステムを決定することを特徴とするサーバ装置。
【請求項４】
サーバ装置と、クライアント装置と、を備えたデータ処理システムであって、
前記サーバ装置は、
複数の異なるデータソースからデータを取得可能であり、
所定の条件に基づいて、前記複数のデータソースのうち一のデータソースを決定し
決定した前記一のデータソースから取得した対象データと、該対象データに応じたデータ処理方法と、を少なくとも含む情報をクライアント装置に送信し、
前記クライアント装置は、
前記対象データ及び前記データ処理方法に基づいてデータ処理を行うことを特徴とするデータ処理システム。
【請求項５】
請求項４に記載のデータ処理ステムにおいて、
前記複数の異なるデータソースは、複数のブロックチェインシステムであり
前記サーバ装置は、
前記複数のブロックチェインシステムから所定の条件に基づいて一のブロックチェインシステムを決定し、
前記一のブロックチェインシステムについて、前記対象データとなる新たなブロックデータと、前ブロックのハッシュ値と、探索対象となるＮｏｎｃｅ値の範囲と、前記データ処理方法としてのハッシュ関数を指定する情報と、を前記クライアント装置に送信し、
前記クライアント装置は、
前記探索対象となるＮｏｎｃｅ値の中から、前記新たなブロックデータ及び前記前ブロックのハッシュ値と合わせて前記ハッシュ関数を用いたハッシュ値を算出したときに当該ハッシュ値が所定条件を満たすＮｏｎｃｅ値の探索を行う、
ことを特徴とするデータ処理システム。
【請求項６】
サーバ装置と通信可能なクライアント装置であって、
前記サーバ装置から送信された、複数のデータソースから決定された一のデータソースから取得されたデータと、該データに応じたデータ処理方法と、を少なくとも含む情報を受信する受信手段と、
前記情報に基づいてデータ処理を行う処理手段と、
を備え、
前記処理手段は、
前記複数のデータソースのうち第１のデータソースからのデータに対応するデータ処理方法に基づいてデータ処理を行う第１処理手段と、前記第１のデータソースとは異なる第２のデータソースからのデータに対応するデータ処理方法に基づいてデータ処理を行う第２処理手段と、を備え、
前記受信手段が受信したデータに基づいて、前記第１処理手段又は前記第２処理手段による処理を切り替える、
ことを特徴とするクライアント装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの分散処理を行うデータ処理システム、サーバ装置、クライアント装置に関する。
【背景技術】
【０００２】
大規模データを処理する際に、一つの端末やサーバで処理を行うのではなく、処理すべきデータや情報を分割し、サーバに接続する多くのクライアント装置に分割データを処理させたうえで処理結果をサーバ上で共有する分散処理、あるいは並列処理と呼ばれる仕組みが知られている。
低廉且つ比較的低性能であっても多くのクライアント装置に処理を分散させて並列的に処理させることで、１台（少数）の高価且つ高性能なサーバで処理する場合に比べて、システムとしての信頼性を高めるとともに処理速度を大幅に向上することが可能である。
【０００３】
このような分散処理は、近年知られるブロックチェイン（特許文献１）と呼ばれる技術についても有用である。
ビットコイン（Ｂｉｔｃｏｉｎ）やモナコイン（ｍｏｎａｃｏｉｎ）など、ブロックチェインを取引の台帳として活用した仮想通貨は広く認知されており、特に仮想通貨に関連する「マイニング」と呼ばれる仕組みでも、計算機パワーを集結させ組織的にブロック生成を行う「マイニングプール」（特許文献２）と呼ばれる分散型の処理が行われている。
【０００４】
仮想通貨に活用されるブロックチェインでは、取引記録などのデータをブロック単位で扱いそれを所定の方法で時系列順に接続していく。
例えばビットコインや一部のオルトコインにおいて、ブロックチェインに対して新たなブロックを接続（生成）するためには、ブロックチェインにおける直前のブロックのハッシュ値と、新たなブロックの（トランザクション）データ、Ｎｏｎｃｅ値と呼ばれる数値（例えば３２ｂｉｔ固定長数値）とを接続したデータに対するハッシュ値（例えば、ＳＨＡ−２５６ハッシュ）を計算した時にその上位数ビットが連続して０となるようなＮｏｎｃｅ値を探索する。そして、探索された、条件を満たす（正解の）Ｎｏｎｃｅ値を（ネットワーク上の他装置に）報告することを「マイニング」と呼ぶ。
このような条件を満たすＮｏｎｃｅ値の探索は、ハッシュ関数の一方向性によって全てのＮｏｎｃｅ値について総当たりを行う以外に方法がなく、この処理は莫大な演算資源を要する。
【０００５】
そこで、Ｎｏｎｃｅ値探索の分散、並列処理を行うマイニングプールは、必要な演算資源を容易に確保することが出来るために非常に有用である。
マイニングプールでは、サーバ装置から複数のクライアント装置に対してマイニングに必要なデータ（直前のブロックのハッシュ値、接続すべき新たなブロックのデータ）と、各クライアント装置が担当するＮｏｎｃｅ値の探索範囲の情報を送信する。
そして、クライアント装置は、与えられた情報に基づいて、条件を満たすＮｏｎｃｅの探索作業（マイニング）を行う。一つのサーバで全てのＮｏｎｃｅ値について総当たりを行う場合に比べてより高速な処理が可能である。
また、このような分散、並列処理は、ブロックチェインにおけるマイニングのみならず、大量のデータ処理を行う需要がありながら予算上の制約などから高性能の演算資源を有し得ない大学や研究機関等におけるデータ処理にも好適に適用することが出来る。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１７−２０７８６０公報
【特許文献２】特開２０１７−０９１１４８公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
マイニングプールのような分散処理の仕組みは、立ち上げ直後でマイニングに参加するクライアント装置（演算資源）が少ないブロックチェインを用いた仮想通貨には、大きな助けとなる。
このようなブロックチェインのシステムは、以下の理由から、正当な演算資源の確保が急務となるからである。
【０００８】
すなわち、３２ｂｉｔ長の数値であるＮｏｎｃｅ値のうちで、上記条件を満たす（ハッシュ値の上位ビットを０とする）Ｎｏｎｃｅ値は複数あり得る。従って、同時にマイニングを行っている装置が複数あることを考慮すると、前ブロックに対して、複数のブロックが正しいブロックとして報告される可能性がある。
こうした場合、ブロックチェインのシステムとしては、一旦両方のチェインを正しいものと仮定した後、長く伸びたチェインを正しいものとし、短いチェインを分岐（フォーク）として切り捨てる。
不正なデータをブロックチェインに挿入することを意図する攻撃者は、不正なデータを先端に繋いだ後、さらにそこに繋がるブロックを次々につないでチェインを伸ばし続ける必要があるが、このような攻撃は、攻撃者の演算資源がマイニングを行っている演算資源全体の５１％を占めることで可能である（いわゆる「５１％問題」）。
【０００９】
このような問題に対して、例えばビットコインの場合では、マイニングに成功した参加者にビットコインを報酬として支払うことで、正当な（善意の参加者による）クライアント装置による演算資源を確保している。
その結果、ブロックチェインのシステムには正当なマイニングを行うクライアント装置が十分な数あり、これを上回る演算資源を用意して上記のような攻撃を行うことは現実的ではない。
しかしながら、新規にブロックチェインを用いた仮想通貨を立ち上げる場合や、仮想通貨の係るブロックチェインのシステムではないことから報酬を設定出来ず、正当な演算資源を十分に確保出来ない状況では、悪意をもった一組織（一主体）が比較的に簡単に５１％を超える演算資源を得てしまう可能性がある。
【００１０】
かかる状況において、マイニングプールは、必要な演算資源を確保するためには非常に有用であり、特に、既存のマイニングプールが有する演算資源を効果的に活用可能な仕組みが求められる。
上記の状況を鑑み、本発明は、演算資源を効果的に活用して、演算資源を必要とするサービスに対して演算能力を提供可能な分散処理システム及び当該システムを実現するサーバ装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記の課題を解決するために、本発明は、複数の異なるデータソースからデータを取得可能なデータ取得手段と、所定の条件に基づいて、前記複数のデータソースのうち一のデータソースを決定する決定手段と前記決定手段によって決定された前記データソースから取得された対象データと、該対象データに応じたデータ処理方法と、を少なくとも含む情報をクライアント装置に送信する送信手段と、前記対象データ及び前記データ処理方法に基づいて生成された結果情報を前記クライアント装置から受信可能な受信手段と、を備えたサーバ装置を特徴とする
【発明の効果】
【００１２】
上記のように構成したので、本発明によれば、演算資源を効果的に活用し、演算資源を必要とするシステムに対して演算能力を提供可能な分散・並列処理システム及び当該システムを実現するサーバ装置を実現することが出来る。
【図面の簡単な説明】
【００１３】
【図１】本実施形態に係る分散処理サーバが適用されるブロックチェインネットワークの概要を説明する図である。
【図２】マイニングプールを含むブロックチェインネットワークを説明する図である。
【図３】本実施の形態のシステムに係る分散処理サーバの特徴を説明する図である。
【図４】本実施形態に係る分散処理サーバの機能構成を示す図である。
【図５】本実施形態の分散処理サーバ（ブロックデータ受信処理部）が実行するブロックデータ受信処理を説明するフローチャートである。
【図６】本実施形態の分散処理サーバ（Ｎｏｎｃｅ受信処理部）が実行するＮｏｎｃｅ値受信処理を説明するフローチャートである。
【図７】本実施形態の分散処理サーバ（対象通貨選択処理部）が実行する対象通貨選択処理を説明する図である。
【図８】本実施形態の分散処理サーバ（探索指示送信処理部）が実行する探索指示送信処理を説明する図である。
【図９】本実施形態のシステムを構成するクライアント装置の機能構成を示す図である。
【図１０】本実施形態のクライアント装置（探索指示受信処理部）が実行する探索指示受信処理を説明するフローチャートである。
【図１１】本実施形態のクライアント装置（探索処理部）が実行する探索処理を説明するフローチャートである。
【図１２】本実施形態の分散処理サーバ（報酬支払処理部）が実行する報酬支払処理を説明するフローチャートである。
【図１３】本実施形態の分散処理サーバが適用される分散処理システムの他の例を示す図である。
【発明を実施するための形態】
【００１４】
以下に、図面を参照して本発明の実施の形態を詳細に説明する。
図１は、本実施形態に係る分散処理サーバが適用されるブロックチェインネットワークの概要を説明する図である。
図１（ａ）はブロックチェインネットワークの構成を示す概略図である。
図１（ａ）に示すように、ブロックチェインネットワークは、本実施形態に係る分散処理サーバ（マイニングサーバ）１０と、ブロックチェインネットワークに参加してマイニング（プルーフオブワーク）作業を行うマイナーが用いるマイナー装置３０と、ブロックチェインネットワークに直接参加（接続）せずマイニングプールに参加してマイニング作業を行うプール参加者が使用するクライアント装置５０と、上記マイニングプールを提供するプールサーバ４０と、インターネットに接続されている。
ブロックチェインには、仮想通貨に用いられるものを含め、多くのものが存在している。仮想通貨にも、代表的なビットコインの他に、オルトコインと呼ばれるものが知られている。オルトコインの代表的なものとして、Ethereum（イーサリアム）やMonacoin（モナコイン）などが知られている。
【００１５】
インターネット上においてはビットコインを運営、機能させるためのブロックチェインネットワークや、各種オルトコインの運営、機能させるためのブロックチェインネットワークが存在する。
各ブロックチェインネットワークには、それぞれマイナー装置３０や、プールサーバ４０が多く接続されて、プルーフオブワーク作業を行っている。
例えば、ブロックチェインネットワークＡには、マイナー装置３０Ａや、マイニングプールを形成するプールサーバ４０Ａ及びクライアント装置５０Ａ（５０Ａ−１、５０Ａ−２・・）が含まれる。
また、ブロックチェインネットワークＢには、マイナー装置３０Ｂや、マイニングプールを形成するプールサーバ４０Ｂ及びクライアント装置５０Ｂ（５０Ｂ−１、５０Ｂ−２・・）が含まれる。
ブロックチェインネットワークは、中央集権的なサーバを持たないＰ２Ｐ(Peer to Peer)ネットワークである。ブロックチェインは、ブロックチェインネットワークに属するそれぞれのマイナー装置が有するストレージやサーバ装置、プールサーバ４０に備えるストレージに、同じものが格納されている。ブロックチェインが、分散型取引台帳と呼ばれる所以である。
【００１６】
図１（ｂ）は、ブロックチェインネットワークに属する装置が有するブロックチェインを示す図である。
図１（ｂ）を用いて、ブロックチェインの概略を説明する。
ブロックチェインは、逐次発生する取引情報などをブロック単位で接続することにより成立する。
【００１７】
すなわち、ブロックチェイン技術では、取引記録や契約など、内容を保証したいデータをブロックという単位で扱う。このブロックを所定の方法で一繋ぎ（チェイン状）に接続したものがブロックチェインである。ブロックチェインの生成にあたってはハッシュ関数が用いられており、ハッシュ関数は任意長の任意データに対して固定長のハッシュ値を求めるための関数である。
ハッシュ関数には一方向性という特徴があり、任意データからハッシュ値を求めることは容易であるが、逆に、ハッシュ値から元のデータを復元することは現実的には不可能であるとされる。
【００１８】
ブロックチェインに対して新たなブロックを接続するためには、チェインにおける直前のブロックのハッシュ値と、接続すべき新たなブロックの（トランザクション）データ、Ｎｏｎｃｅ値と呼ばれる数値（例えば３２ｂｉｔ固定長数値）を接続したデータに対してハッシュ値（例えば、ＳＨＡ−２５６ハッシュ）を計算した時にその上位数ビット（例えば１０Ｂｉｔ）が０となるような、Ｎｏｎｃｅ値を求める。
ＳＨＡ−２５６ハッシュ値は、ほぼランダムな２５６ｂｉｔの値となるため、あるＮｏｎｃｅ値を選んだ時に上位１０ｂｉｔが０となる確率は１０２４分の１となるが、上記したハッシュ関数の一方向性によって、基本的に、総当たりをするより他に方法がない。この総当たりを行って、ハッシュ値の上位ビットが０となるＮｏｎｃｅ値を見つけ、報告することをマイニングと呼ぶ。
その結果、図１（ｂ）を示すように、ブロックチェインの各ブロックは、そのブロックのデータと、直前のブロックのハッシュ値と、Ｎｏｎｃｅ値と、を含んでいる。
【００１９】
このようなブロックチェインは、各ブロックが直前のブロックのハッシュ値を持っているため、先端の（起点となる最古の）ブロックから順に辿ることで、全てのブロックの正当性を確認することが出来る。
なお途中のブロックを改ざんしようとすると、そのブロック以降全てのブロックのＮｏｎｃｅ値を再計算する必要があるが、上記した総当たりを全てのブロックについて行うしかないため、計算量的に不可能である。
このような特徴を有することで、ブロックチェインの信頼性は担保されている。
なお、Ｎｏｎｃｅ値を求めること自体には、非常な困難が伴うが、一度見つけられたＮｏｎｃｅ値を用いれば、ブロックチェインに対して新たにブロックを追加する処理は非常に容易である。
【００２０】
とろこが、Ｎｏｎｃｅ値の自由度が３２ｂｉｔであるにも係わらず、当たりとなる確率が１０２４分の１であるため、ハッシュ値の上位ビットを０とするＮｏｎｃｅ値は複数あり得る。よって、同時にマイニングを行っているクライアント装置が複数あることを考慮すると、複数のブロックが正しいものとして報告される場合がある。
この場合、ブロックチェインのシステムとしては、一旦両方を正しいものと仮定した後、長く伸びたチェインを正しいものとし、短いチェインを分岐（フォーク）として切り捨てることを行う。
つまり、不正なデータをブロックチェインに挿入したい攻撃者は、不正なデータを先端に繋いだ後、さらにそこに繋がるブロックを次々につないでチェインを伸ばし続ける必要がある。
【００２１】
しかし、このような攻撃は、マイニングを行っている正当なクライアント装置全体の演算資源を上回る演算資源（全体の演算資源の５１％）があれば十分である。
逆に言えば、ブロックチェインの安全性を保つには、正当なクライアント装置による演算資源を十分に確保することが必要である。
そのため、例えばビットコインの場合には、マイニングに成功したクライアント装置にビットコインを報酬として支払うことで、マイニングを行うユーザを集め、正当なクライアント装置による演算資源を確保している。
ビットコイン等、すでに市場が十分に拡がっているブロックチェインのシステムであれば、マイニングを行う正当なクライアント装置が十分な数あり、これを上回る演算資源を用意することはもはや現実的ではない。
しかしながら、新規にブロックチェインを用いた仮想通貨を立ち上げる場合や、仮想通貨以外のブロックチェインのシステムであり報酬を設定できないことで、マイニングを行うクライアント装置が十分に確保出来ない状況では、悪意をもった一組織（一主体）が比較的簡単に５１％を超える演算資源を確保できてしまう可能性がある。
このような状況において、既存のマイニングプールを活用することで、必要な演算資源を容易に確保することができ、これは非常に有用である。
【００２２】
本実施形態に係る分散処理サーバ（マイニングサーバ）１０は、図１（ａ）に示したプールサーバ４０と同様にマイニングプールを構成する。
ただし、後述するが、本実施形態の分散処理サーバ（マイニングサーバ）１０は、単一のブロックチェインのみならず、複数のブロックチェインに対するプールサーバとして機能しうる。
分散処理サーバ（マイニングサーバ）１０は、複数の異なるブロックチェインのＰ２Ｐネットワークに参加し、それぞれのブロックチェインの情報を取得する。
その結果、分散処理サーバ（マイニングサーバ）１０に接続するクライアント装置は、複数の異なるブロックチェインに対するマイニングに参加することが出来る。
【００２３】
図２は、マイニングプールを含む本実施形態に係るブロックチェインネットワークを説明する図である。
図２を用いて、マイニングプールについて概説する。
ブロックチェインネットワークは、インターネットに接続されている複数のマイナー装置が相互に接続されてＰ２Ｐネットワークを形成することによって構成される。
また、本実施形態のブロックチェインネットワークは、マイニングプールを管理するプールサーバ４０を含んでいる。
ブロックチェイン（仮想通貨）の技術では、報酬を目的としたマイニングは、大規模な演算資源を有する主体によって組織的且つ大々的に行われている一方で、そのような大規模な演算資源を有さない個人のユーザを集め、ユーザ間で探索範囲を分担してマイニングを行い、得られた報酬を山分けするマイニングプールと呼ばれる仕組みが存在している。
プールサーバ４０は、各クライアント装置に対して、ブロックチェインにおける前ブロックのハッシュ値、現ブロックのデータ（トランザクションデータ）及び、各クライアント装置に割り振られたＮｏｎｃｅ値の探索範囲を送信する。
データを受け取ったクライアント装置では、探索範囲内のＮｏｎｃｅ値の中から正解となるＮｏｎｃｅ値を探索する。
正解となるＮｏｎｃｅ値が発見された場合には、発見したＮｏｎｃｅ値をプールサーバ４０に送信する。
【００２４】
このＮｏｎｃｅ値の発見が、ブロックチェインネットワーク内を通じて最初の発見であった場合には、プールサーバ４０の運営者に対して報酬の仮想通貨が支払われるが、マイニングプールの場合、得られた報酬は参加者で山分けされることが多い。
例えば、Ｎｏｎｃｅ値が３２ｂｉｔだとすると、この先頭のブロックのＮｏｎｃｅ値のうち、０〜９９をＡさん（のクライアント装置）、１００〜１９９をＢさん（のクライアント装置）、２００〜２９９をＣさん（のクライアント装置）のように分担して総当たりの探索を行わせる。
そして、マイニングプールの参加者のうち一人でもマイニングに成功すると（正解となるＮｏｎｃｅ値を発見すると）、マイニングプール全体に報酬が得られる。
マイニングプールは、このマイニングプール全体で得た報酬を、参加者全員で山分けすることで成立している。
【００２５】
図３は、本実施の形態のシステムに係る分散処理サーバの特徴を説明する図である。
上記したように、本実施形態の分散処理サーバ（マイニングサーバ）１０は、基本的に、図２に示したプールサーバ４０と同様の機能を有する。
分散処理サーバ（マイニングサーバ）１０は、各クライアント装置５０（５０−１、５０−２、５０−３）に対して、ブロックチェインにおける前ブロックのハッシュ値、現ブロックのデータ（トランザクションデータ）及び、各クライアント装置に割り振られたＮｏｎｃｅ値の探索範囲を送信する。さらに、そのブロックチェインで用いられるハッシュ関数の指定も行う。
データを受け取ったクライアント装置５０では、指定されたハッシュ関数とデータを用いて探索範囲内のＮｏｎｃｅ値の中から正解となるＮｏｎｃｅ値を探索する。
正解となるＮｏｎｃｅ値が発見された場合には、発見したＮｏｎｃｅ値をプールサーバ４０に送信し、仮想通貨の報酬を受け取って参加者に分配することを目的とする。
【００２６】
しかしながら、本実施形態の分散処理サーバ（マイニングサーバ）１０は、何れか特定のブロックチェインネットワークにのみ属するのはなく、図３に示すように、例えば、ブロックチェインネットワークＡ、ブロックチェインネットワークＢ、ブロックチェインネットワークＣに属し、これら全てのブロックチェインネットワークについてブロックチェインを格納し、また、新たなブロックを取得している。
そして、本実施形態の分散処理サーバ（マイニングサーバ）１０は、クライアント装置５０（５０−１、５０−２、５０−３）に対して、複数のブロックチェインに係るデータやハッシュ値を選択的に送付可能である。
本実施形態の分散処理サーバ（マイニングサーバ）１０は、本来独立して機能するこれらのブロックチェインネットワークを接続する装置であると言える。
なお、クライアント装置は、本実施形態の分散処理サーバ（マイニングサーバ）１０ではなく、他のブロックチェインネットワークに属するプールサーバ４０Ａ、４０Ｂに接続、参加することも可能であるが、本実施形態の分散処理サーバ（マイニングサーバ）１０に接続することで、複数のブロックチェインに間接的に参画して、そのメリットを享受することが出来る。
【００２７】
本実施形態の分散処理サーバ（マイニングサーバ）１０は、複数のブロックチェインネットワークから、所定の基準に基づいて、マイニングプールの参加者にとって有利な（望ましい）ブロックチェインを選択してマイニングを行わせる。
マイニングプールの参加者たちは、分散処理サーバ（マイニングサーバ）１０から与えられたデータやハッシュ値に基づいてマイニングを行い、誰か一人でもマイニングに成功した場合には（正解となるＮｏｎｃｅ値を発見した場合には）、それについてブロックチェインネットワークから得られる報酬（仮想通貨）を山分けすることが出来る。
【００２８】
また、後述するように、本実施形態においては、報酬としてマイニングを行ったブロックチェインに係る仮想通貨ではなく、異なる仮想通貨がマイニングプールの参加者に対して支払われてもよい。
つまり、マイニングプールの参加者たちは、ビットコインやその他の仮想通貨のマイニングを行い、誰か一人でもマイニングに成功した場合には、報酬として、マイニングしている通貨とは異なる例えばモナコインを山分けする。
【００２９】
このようなマイニングプールであれば、マイニングを行うユーザにとっては何を報酬とするかが問題であり、何をマイニングしているかはユーザが関知するものではないため、マイニングプールを管理するサーバで最も効率の良いブロックチェインを選択してクライアント装置に送信することで、効率のよいマイニングができることになる。
すなわち、複数のブロックチェインのシステムが存在していて、それぞれにマイニングについて報酬が設定されている場合、その中で最も効率が良いものを選択して採掘を行う。
どのブロックチェインについてマイニングを行うことが効率的であるかを決定するためには、例えば、後述するように発掘金額の期待値を考慮することが出来る。
【００３０】
ただし、本実施形態のマイニングシステムにおいて、マイニングの対象となるブロックチェインは、仮想通貨のためのものに限定されることはない。
例えば、ブロックチェインネットワークＣは、例えば、仮想通貨以外のためのブロックチェインであり、所謂仮想通貨による報酬が支払われることはない。
本実施形態のマイニングシステムは、このような報酬を伴わないブロックチェインについても、十分な演算資源を提供することを一つの目的としているからである。
また、ブロックチェインは、特定の管理者を持たないオープンなＰ２Ｐネットワークで実現される仕組みであるが、昨今では、企業が運営するクライアントサーバ型のブロックチェインも現れている。
【００３１】
ブロックチェインなどに用いられるブロックチェインが、誰でも参加可能なパブリックチェインであるのに対し、企業通貨は、登録したマイナーのみがマイニングを行えるプライベートチェインである。マイニングプールと同様に、全ブロックのハッシュ値と現ブロックのデータ、探索範囲を登録ユーザの端末に送付してＮｏｎｃｅを探索させることで成立しうる。マイニングの報酬は、企業によって決定される
本実施形態のマイニングシステムは、このような企業が運営する仮想通貨システムにも適用可能とし、このような仮想通貨システムに十分な演算資源を提供することを一つの目的としている。
また、仮想通貨をマイニングの対象とする場合でも、必ずしも発掘可能金額の期待値だけを基準に決定するのではない。
本実施形態のマイニングシステムは、立ち上げから間もなく、接続されたブロックの数が少ないことから悪意あるフォークのリスクがあるブロックチェインについて、十分な演算資源を提供することを一つの目的としているからである。
【００３２】
図４は、本実施形態に係る分散処理サーバの機能構成を示す図であり、（ａ）はハードウェアによる機能構成を示す図、（ｂ）はソフトウェアによる機能構成を示すブロック図である。
図４（ａ）に示すように、分散処理サーバとしてのマイニングサーバ１０は、装置全体の制御を行う汎用のオペレーティングシステムを実行するとともに分散処理サーバ（マイニングサーバ）１０の機能を実現するプログラムを実行するＣＰＵ（Central Processing Unit）１１と、ＣＰＵ１１による処理のために各種のプログラムや一時データ、変数が展開されるＲＡＭ（Random Access Memory）１２と、プログラムやデータが格納されるＨＤＤ（Hard Disk Drive）１３や不図示のＲＯＭ（Read Only Memory）と、分散処理サーバ（マイニングサーバ）１０をネットワークに接続するためのネットワークＩ／Ｆ１４と、を備えている。
【００３３】
また、図４（ｂ）に示すように、ＣＰＵ１１は、処理部として、ブロックデータ受信処理部２０と、通貨情報受信処理部２１と、対象通貨選択処理部２２と、探索指示送信処理部２３と、Ｎｏｎｃｅ受信処理部２４と、Ｎｏｎｃｅ送信処理部２５と、報酬支払処理部２６と、を実行する。
また、記憶部には、ブロックデータ記憶部２７、通貨情報記憶部２８、前ブロックハッシュ値記憶部２９がそれぞれ設定されており、上記の各処理部によって各記憶部に対してデータが格納され、あるいはデータが読み出される。
ブロックデータ記憶部２７には、本実施形態の分散処理サーバ（マイニングサーバ）１０が取り扱う仮想通貨の最新のブロックデータが格納される。
また、通貨情報記憶部２８には、本実施形態の分散処理サーバ（マイニングサーバ）１０が取り扱う仮想通貨についてのレート情報等が格納される。
前ブロックハッシュ値記憶部２９には、本実施形態の分散処理サーバ（マイニングサーバ）１０が取り扱う仮想通貨について、最新のブロックよりも前のブロックのハッシュ値が格納される。
ブロックデータ記憶部２７、通貨情報記憶部２８、前ブロックハッシュ値記憶部２９は、ＲＡＭ１２、ＨＤＤ１３の何れに設定されてもよい。
すなわち、ブロックチェインネットワークから取得される最新のブロックデータや、レート情報、前ブロックのハッシュ値などは、ＲＡＭ１２に保持される一時データとしてのみ扱われても良いし、ＨＤＤ１３にファイルとして格納された上でＲＡＭ上にロードされてもよい。
【００３４】
各処理部について概説する。
ブロックデータ受信処理部２０は、本実施形態の分散処理サーバ（マイニングサーバ）１０が取り扱う仮想通貨について、新たに発生したブロックデータ（トランザクションデータ）を、ネットワークＩ／Ｆ１４を介してブロックチェインネットワークから取得して、記憶部に設定されたブロックデータ記憶部２７に格納する。
通貨情報受信処理部２１は、ネットワークＩ／Ｆ１４を介して、インターネット上に存在する仮想通貨の取引所や販売所のサーバ装置から各仮想通貨のレート情報等を取得して通貨情報記憶部２８に格納する。
対象通貨選択処理部２２は、通貨情報記憶部２８に格納されているレート情報等に応じた所定条件に基づいて、マイニングプールによってマイニングを行う仮想通貨を選択する処理を行う。
【００３５】
探索指示送信処理部２３は、ネットワークＩ／Ｆ１４を介して、対象通貨選択処理部２２によって選択されたマイニング対象の仮想通貨について、最新のブロックデータ、前ブロックのハッシュ値、Ｎｏｎｃｅ値の探索範囲をマイニングプールの各クライアント装置５０に送信する。
Ｎｏｎｃｅ受信処理部２４は、ネットワークＩ／Ｆ１４を介して、マイニングプールのクライアント装置５０（探索に成功した場合）、あるいは、ブロックチェインネットワークに属する他のマイナー装置や他のプールサーバ４０から、正解とされるＮｏｎｃｅ値を受信する。
そして、そのＮｏｎｃｅ値を用いて、最新のブロックデータを分散処理サーバ（マイニングサーバ）１０が保持するブロックチェインに結合する処理を行う。
【００３６】
Ｎｏｎｃｅ送信処理部２５は、Ｎｏｎｃｅ受信処理部２４が、マイニングプールのクライアント装置５０から正解となるＮｏｎｃｅ値を受信した場合に、ネットワークＩ／Ｆ１４を介して、そのＮｏｎｃｅ値を、ブロックチェインネットワークに属する他のマイナー装置や他のプールサーバ４０に送信する処理を行う。
それをすることで、分散処理サーバ１０（マイニングサーバ）の運営者には報酬を受け取る権利が発生し、正解となるＮｏｎｃｅ値の送信がブロックチェインネットワークの中で最も早ければ、実際に報酬を受け取ることが出来る。
報酬支払処理部２６は、マイニングプールの参加者に対して報酬の支払い（山分け）を行う処理部であり、各仮想通貨について参加者が保有するウォレットに対して送金処理を行う。これは、各仮想通貨の取引所に対する送金依頼として行われる。
【００３７】
図５は、本実施形態の分散処理サーバ（ブロックデータ受信処理部）が実行するブロックデータ受信処理を説明するフローチャートである。
ブロックデータ受信処理部２０は、ステップＳ１０１において、ブロックデータを受信したか否かを判定する。
ブロックデータを受信したと判定した場合（ステップＳ１０１でＹｅｓ）、ブロックデータ受信処理部２０は、ステップＳ１０２において、ブロックチェインネットワークＡに係るブロックデータＡを受信したか否かを判定する。
【００３８】
ブロックデータＡを受信したと判定した場合（ステップＳ１０２でＹｅｓ）、ブロックデータ受信処理部２０は、ステップＳ１０３において、受信したブロックデータＡを、記憶部におけるブロックデータＡ用のブロックデータ記憶部２７Ａに格納する。
ブロックデータＡを受信したと判定しなかった場合（ステップＳ１０２でＮｏ）、ブロックデータ受信処理部２０は、ステップＳ１０４において、ブロックチェインネットワークＢに係るブロックデータＢを受信したか否かを判定する。
ブロックデータＢを受信したと判定した場合（ステップＳ１０４でＹｅｓ）、ブロックデータ受信処理部２０は、ステップＳ１０５において、受信したブロックデータＢを、記憶部におけるブロックデータＢ用のブロックデータ記憶部２７Ｂに格納する。
ブロックデータＢを受信したと判定しなかった場合（ステップＳ１０４でＮｏ）、ブロックデータ受信処理部２０は、ステップＳ１０６において、ブロックチェインネットワークＣに係るブロックデータＣを受信したか否かを判定する。
【００３９】
ブロックデータＣを受信したと判定した場合（ステップＳ１０６でＹｅｓ）、ブロックデータ受信処理部２０は、ステップＳ１０７において、受信したブロックデータＣを、記憶部におけるブロックデータＣ用のブロックデータ記憶部２７Ｃに格納する。
なお、分散処理サーバ（マイニングサーバ）１０が参加し、ブロックデータ（トランザクション）を受け取るブロックチェインネットワークは、ブロックチェインネットワークＡ〜Ｃの３つに限らず、これもよりも多くともよく、また２つのネットワークでもよい。ただし、本実施形態の趣旨からは、分散処理サーバ（マイニングサーバ）１０は少なくとも２つのブロックチェインネットワークに参加している必要がある。
【００４０】
図６は、本実施形態の分散処理サーバ（Ｎｏｎｃｅ受信処理部）が実行するＮｏｎｃｅ値（Ｎｏｎｃｅデータ）受信処理を説明するフローチャートである。
Ｎｏｎｃｅ受信処理部２４は、ステップＳ１１１において、Ｎｏｎｃｅ値（Ｎｏｎｃｅデータ）を受信したか否かを判定する。
Ｎｏｎｃｅ値を受信したと判定した場合（ステップＳ１１１でＹｅｓ）、Ｎｏｎｃｅ受信処理部２４は、ステップＳ１１２において、ブロックチェインネットワークＡに係るＮｏｎｃｅ値Ａを受信したか否かを判定する。
Ｎｏｎｃｅ値Ａを受信したと判定した場合（ステップＳ１１２でＹｅｓ）、Ｎｏｎｃｅ受信処理部２４は、ステップＳ１１３において、受信したＮｏｎｃｅ値Ａを用いて、ブロックデータ記憶部２７Ａに格納されているブロックデータＡを、ブロックチェインＡに結合する処理を行う。
Ｎｏｎｃｅ値Ａを受信したと判定しなかった場合（ステップＳ１１２でＮｏ）、Ｎｏｎｃｅ受信処理部２４は、ステップＳ１１４において、ブロックチェインネットワークＢに係るＮｏｎｃｅ値Ｂを受信したか否かを判定する。
【００４１】
Ｎｏｎｃｅ値Ｂを受信したと判定した場合（ステップＳ１１４でＹｅｓ）、Ｎｏｎｃｅ受信処理部２４は、ステップＳ１１５において、受信したＮｏｎｃｅ値Ｂを用いて、ブロックデータ記憶部２７Ｂに格納されているブロックデータＢを、ブロックチェインＢに結合する処理を行う。
Ｎｏｎｃｅ値Ｂを受信したと判定しなかった場合（ステップＳ１１４でＮｏ）、Ｎｏｎｃｅ受信処理部２４は、ステップＳ１１６において、ブロックチェインネットワークＣに係るＮｏｎｃｅ値Ｃを受信したか否かを判定する。
Ｎｏｎｃｅ値Ｃを受信したと判定した場合（ステップＳ１１６でＹｅｓ）、Ｎｏｎｃｅ受信処理部２４は、ステップＳ１１７において、受信したＮｏｎｃｅ値Ｃを用いて、ブロックデータ記憶部２７Ｃに格納されているブロックデータＣを、ブロックチェインＣに結合する処理を行う。
なお、受信されたＮｏｎｃｅ値は、Ｎｏｎｃｅ送信処理部２５によって、対応するブロックチェインネットワークに向けて送信される。
【００４２】
図７は、本実施形態の分散処理サーバ（対象通貨選択処理部）が実行する対象通貨選択処理を説明する図である。
図７（ａ）に示すフローチャートにおいて、マイニングサーバ１０（対象通貨選択処理部２２）は、常に変動する仮想通貨の換金レートを定期的に確認する。
対象通貨選択処理部２２は、ステップＳ１２１において、換金レートの確認タイミングとなったか否かを判定する。
確認タイミングとなったと判定した場合（ステップＳ１２１でＹｅｓ）、対象通貨選択処理部２２は、ステップＳ１２２において、換金レート情報をインターネット上に存在する各仮想通貨の取引所や販売所のサーバに対し、換金レート情報を要求する処理を行う。
【００４３】
確認タイミングとなったと判定しなかった場合（ステップＳ１２１でＮｏ）、対象通貨選択処理部２２は、ステップＳ１２３において、換金レートを上記取引所や販売所のサーバから受信したか否かを判定する。
受信したと判定した場合（ステップＳ１２３でＹｅｓ）、対象通貨選択処理部２２は、ステップＳ１２４において、受信した換金レートを、記憶部の通貨情報記憶部２８に格納する。
そして、対象通貨選択処理部２２はステップＳ１２５において、ハッシュレート、難易度、換金レートに基づいて、各仮想通貨の発掘可能金額の期待値を算出し、ステップＳ１２６において、算出した期待値に基づいてマイニングの対象通貨を決定する。
【００４４】
図７（ｂ）は、算出された発掘可能金額を例示する図である。
発掘金額期待値は、例えば、
（式）期待値＝ハッシュレート／（（２＾３２）＊難易度）＊換金レート
で表せられる。
ハッシュレートとは、単位時間当たり（例えば１秒）のハッシュ計算数であり、難易度は、１／２＾３２に対してどのくらい当たりが少ないかを示す係数である。
図７（ｂ）に示すように、仮想通貨Ａは、ハッシュ関数がＳＨＡ−２５６、ＧＰＵでのハッシュレート［ＭＨ／ｓ］が８６５、最近の難易度が１８７３１０５４７５２２１．６１、発掘期待度［ｃｏｉｎ／Ｈ］が１．２４３０１９３９６０４５１Ｅ−２２、発掘速度期待値［ｃｏｉｎ／ｈｏｕｒ］が、０．０００００００００３８７０７６２、換金レート［￥／ｃｏｉｎ］が１６２７０００としたときに、発掘金額期待値［￥／ｈｏｕｒ］が０．０００６２９７７３０である。
【００４５】
また仮想通貨Ｂは、ハッシュ関数がＬｙｒａ２ＲＥｖ２、ＧＰＵでのハッシュレート［ＭＨ／ｓ］が６０、最近の難易度が７４３３０．６９２７８８２９、発掘期待度［ｃｏｉｎ／Ｈ］が３．１３２３６２０８２４７１７−Ｅ１５、発掘速度期待値［ｃｏｉｎ／ｈｏｕｒ］が、０．０００６７６５９０２０９８１３８、換金レート［￥／ｃｏｉｎ］が１１８８としたときに、発掘金額期待値［￥／ｈｏｕｒ］が０．０００６２９７７３０］である。
この場合、１時間当たりの発掘金額期待値は、仮想通貨Ｂの方が高いといえ、対象通貨選択処理部２２は、仮想通貨Ｂを、マイニングの対象通貨に決定する。
【００４６】
図７（ａ）のフローチャートに戻り、対象通貨選択処理部２２は、ステップＳ１２７において、記憶部に格納されている対象通貨情報を更新する。
なお、上記のように、対象通貨情報に定義されるマイニングの対象は仮想通貨に限定されることはない。
例えば、時間帯に基づいてマイニング対象を決定することで、一定時間、仮想通貨ではなく報酬を伴わないブロックチェインのマイニングを行うようにしてもよい。
このようにすることで、報酬を伴わないブロックチェインに正当な演算資源を提供することが出来る。
【００４７】
また、仮想通貨に関するマイニングを行う場合であっても、発掘可能金額の期待値によってマイニング対象を決定するのではなく、予め定めた時間毎に、マイニング対象を交互に替えるようにしてもよい。
あるいは、発掘可能金額の期待値によるマイニング対象の決定を基本としつつ、同じ仮想通貨に対するマイニングが続く場合には、他の仮想通貨のマイニングを挟むようにしてもよい。
このようにすることで、参加者数が少なく、接続されたブロック数の少ない比較的新しい仮想通貨のブロックチェインに、正当な演算資源を提供することが出来る。
【００４８】
また、オープンな仕組みで行われるビットコインなどの仮想通貨とは異なり特定の企業が発行、運営するプライベートチェイン（クローズドな仕組みであり、マイニングを行うには登録が必要）による仮想通貨の場合、マイニングによる報酬は運営企業が設定する。
その場合、企業側が設定する報酬と、その他の仮想通貨（パブリックチェイン）の発掘期待額を考慮して、マイニングを行う仮想通貨を決定してもよい。
企業が発行、運営するプライベートチェインによる仮想通貨のマイニングを、所定の基準によって優先的に行うようにしてもよい。
【００４９】
しかし、企業が発行、運営するプライベートチェインにおいてトランザクションが発生しておらず、仮想通貨のマイニングが必要ない（マイニングの要請がない）場合には、発掘可能金額の期待値のみを考慮してマイニングを行うことが出来る。
企業が発行する仮想通貨のマイニングに参加する参加者にとって、企業からのマイニングの依頼がない場合、自身の計算機資源を有効に活用することが出来ない。
しかし、そのような参加者も、本実施形態のマイニングサーバ１０に接続することで、企業からのマイニングの依頼がない場合でも、その他のブロックチェイン（仮想通貨）についてマイニングを行うことで計算機資源の稼働率を高めるとことが出来る。
仮想通貨のマイニングでは必ず報酬を受け取ることが出来る保障はないが、並行して企業が発行する仮想通貨のマイニングに参加することでリスクを抑えることが出来る。
【００５０】
さらに、分散処理サーバ（マイニングサーバ）１０に接続する利用者端末に対して、一律にマイニング対象を指定して、前ブロックのハッシュ値、現ブロックのデータ、使用するハッシュ関数の指定を送信するのではなく、利用者端末それぞれのハードウェア的、ソフトウェア的特性に合わせ、各端末に最適なマイニング対象を指定するようにしてもよい。
【００５１】
図８は、本実施形態の分散処理サーバ（探索指示送信処理部）が実行する探索指示送信処理を説明する図である。
探索指示送信処理部２３は、ステップＳ１３１において、記憶部に格納されている対象通貨情報を確認する。
そして、探索指示送信処理部２３は、ステップＳ１３２において、ブロックデータ記憶部２７を参照し、対象通貨情報で指定されるマイニング対象の仮想通貨について新たなブロックが受信されているか否かを判定する。
【００５２】
新たなブロックが受信されていると判定した場合（ステップＳ１３２でＹｅｓ）、探索指示送信処理部２３は、ステップＳ１３３において、Ｎｏｎｃｅ値を、マイニングプールの参加者で分割した探索範囲を生成する。
そして、探索指示送信処理部２３は、ステップＳ１３２において、対象通貨について、現ブロックのデータ、前ブロックのハッシュ値、及び探索範囲を、各クライアント装置に対して送信する。
【００５３】
図９は、本実施形態のシステムを構成するクライアント装置の機能構成を示す図であり、（ａ）はハードウェア構成を示す図、（ｂ）はソフトウェアによる機能構成を示す図である。
図９（ａ）に示すように、クライアント装置５０は、装置全体の制御を行う汎用のオペレーティングシステムを実行するとともにクライアント装置５０の機能を実現するプログラムやマイニングツールを実行するＣＰＵ（Central Processing Unit）５１と、ＣＰＵ１１による処理のために各種のプログラムや一時データ、変数が展開されるＲＡＭ（Random Access Memory）５２と、プログラムやデータが格納されるＨＤＤ（Hard Disk Drive）５３や不図示のＲＯＭ（Read Only Memory）と、クライアント装置５０をネットワークに接続するためのネットワークＩ／Ｆ５４と、を備えている。
【００５４】
また、図９（ｂ）に示すように、ＣＰＵ５１は、処理部として、探索指示受信処理部６０と、探索処理部６１と、Ｎｏｎｃｅ送信処理部６２と、を実行する。
これらの処理部は、一般にマイニングツールと呼ばれるものに相当する。
探索指示受信処理部６０は、本実施形態の分散処理サーバ（マイニングサーバ）１０や他のプールサーバ４０から探索指示（新たなブロック(トランザクション)データ、前ブロックのハッシュ、探索範囲、ハッシュ関数の指定）を受信して、記憶部の探索指示記憶領域に格納する。
探索処理部６１は、探索指示記憶領域に格納された探索指示に基づいて、正解となるＮｏｎｃｅ値の探索処理を行う。
なお、探索処理部６１は、探索指示において指定されるブロックチェイン毎に異なるハッシュ関数によるハッシュ処理（探索処理）を実行可能であり、ブロックチェインＡで用いられるハッシュ関数Ａによる処理を実行するハッシュＡ処理部、ブロックチェインＢで用いられるハッシュ関数Ｂによる処理を実行するハッシュＢ処理部、ブロックチェインＣで用いられるハッシュ関数Ｃによる処理を実行するハッシュＣ処理部を含む。
Ｎｏｎｃｅ送信処理部６２は、探索処理部６１によって正解のＮｏｎｃｅ値が見つかった場合、そのＮｏｎｃｅ値を、本実施形態の分散処理サーバ（マイニングサーバ）１０や他のプールサーバ４０に送信する処理を行う。
【００５５】
図１０は、本実施形態のクライアント装置（探索指示受信処理部）が実行する探索指示受信処理を説明するフローチャートである。
探索指示受信処理部６０は、ステップＳ２０１において、探索指示を受信したか否かを判定する。
探索指示を受信したと判定した場合（ステップＳ２０１でＹｅｓ）、探索指示受信処理部６０は、ステップＳ２０２において、ブロックチェインネットワークＡに係る探索指示を受信したか否かを判定する。
ブロックチェインネットワークＡに係る探索指示を受信したと判定した場合（ステップＳ２０２でＹｅｓ）、探索指示受信処理部６０は、ステップＳ２０３において、受信した探索指示に基づいて、ハッシュ処理部Ａによる探索処理を開始させる。
ブロックチェインネットワークＡに係る探索指示を受信したと判定しなかった場合（ステップＳ２０２でＮｏ）、探索指示受信処理部６０は、ステップＳ２０４において、ブロックチェインネットワークＢに係る探索指示を受信したか否かを判定する。
【００５６】
ブロックチェインネットワークＢに係る探索指示を受信したと判定した場合（ステップＳ２０４でＹｅｓ）、探索指示受信処理部６０は、ステップＳ２０５において、受信した探索指示に基づいて、ハッシュ処理部Ｂによる探索処理を開始させる。
ブロックチェインネットワークＢに係る探索指示を受信したと判定しなかった場合（ステップＳ２０４でＮｏ）、探索指示受信処理部６０は、ステップＳ２０６において、ブロックチェインネットワークＣに係る探索指示を受信したか否かを判定する。
ブロックチェインネットワークＣに係る探索指示を受信したと判定した場合（ステップＳ２０６でＹｅｓ）、Ｎｏｎｃｅ受信処理部２４は、ステップＳ２０７において、受信した探索指示に基づいて、ハッシュ処理部Ｂによる探索処理を開始させる。
本実施形態のクライアント装置では、異なるハッシュ処理部による正解の探索処理を、分散処理サーバ（マイニングサーバ）１０から受信する探索指示に基づいて、動的に切り替えることが出来る。
従来マイニング用いられていた、ＰＣ等にインストールされるマイニングツールは、基本的には単一のハッシュ関数、それに対応した仮想通貨のマイニングのみに対応していたが、本実施形態のクライアント装置は、複数の仮想通貨のマイニングに対応することが出来る。
【００５７】
図１１は、本実施形態のクライアント装置が実行する探索処理を説明するフローチャートである。
探索処理部６１は、ステップＳ２１１において、ＲＡＭ５２にセットした変数Ｎに、探索指示で指定されている探索範囲内のＮｏｎｃｅ値の数を設定（代入）する。
次に、探索処理部６１は、ステップＳ２１２において、探索対象のＮｏｎｃｅ値が何番目であるかを示す、ＲＡＭ５２にセットした変数Ｍに１をセットする。
探索処理部６１は、ステップＳ２１３において、Ｍ番目（Ｍ＝１の場合は１番目）のＮｏｎｃｅ値（探索範囲として「０」〜「９９」が割り当てられている場合には「０」）、前ブロックのハッシュ値、現ブロックのデータを含むデータのハッシュ値を算出する。
【００５８】
探索処理部６１は、ステップＳ２１４において、算出されたハッシュ値が所定の条件（ビットコインの場合、上位１７ケタが０）を満たすか否かを判定する。
条件が満たされると判定した場合（ステップＳ２１４でＹｅｓ）、探索処理部６１は、ステップＳ２１５において、該当のＮｏｎｃｅ値を正解の値に決定する。
Ｎｏｎｃｅ送信処理部６２は、ステップＳ２１６において、正解のＮｏｎｃｅ値を分散処理サーバ（マイニングサーバ）１０又は他のプールサーバ４０、マイナー装置に送信する。
条件が満たされないと判定した場合（ステップＳ２１４でＮｏ）、探索処理部６１は、ステップＳ２１７において、Ｍ＝Ｎであるか否か、すなわち、割り立てられたすべてのＮｏｎｃｅ値について探索を行ったか否かを判定する。
Ｍ＝Ｎであると判定した場合（ステップＳ２１７でＹｅｓ）、探索処理部６１は、ステップＳ２１８において、割り当てられた探索範囲内に正解の値はないと判断し、処理を終了する。
Ｍ＝Ｎであると判定しなかった場合（ステップＳ２１７でＮｏ）、探索処理部６１は、ステップＳ２１９において、変数ＭにＭ＋１を代入し、ステップＳ２１３に処理を戻し、次のＮｏｎｃｅ値について探索処理を行う。
【００５９】
図１２は、本実施形態の分散処理サーバ（報酬支払処理部）が実行する報酬支払処理を説明するフローチャートである。
報酬支払処理部２６は、Ｓ１４１において、何れかのブロックチェイン（仮想通貨）について報酬を獲得したか否かを判定する。
これは、本実施形態の分散処理サーバ１０の運営者のウォレットに入金があったか否かの情報等から判断出来る。
報酬が獲得されたと判定した場合（ステップＳ１４１でＹｅｓ）、報酬支払処理部２６は、ステップＳ１４２において、獲得された報酬をプール参加者の人数で割り、参加者一人分の報酬額を決定する。
報酬支払処理部２６は、ステップＳ１４３において、一人分の報酬額を、参加者毎に予め定められた他の仮想通貨の相当額に変換する。
この処理には、通貨情報記憶部２８に格納されている、法定通貨（日本円、米ドル、人民元など）と仮想通貨の換金レートを活用することが出来る。
仮想通貨同士で価値の変換（両替）を行うことは出来ないが、法定通貨を基準とした割合で換算することは可能である。
換算が終了すると、報酬支払処理部２６は、ステップＳ１４４において、報酬として支払う仮想通貨の取引所に対し、各参加者のウォレットへの送金処理を依頼する処理を実行する。
【００６０】
以上のように構成したことにより、本実施形態のマイニングシステムによれば、サーバ装置（分散処理サーバ）に接続する参加者を、複数のブロックチェインに係るマイニング作業に参加させることが出来る。
この複数のブロックチェインには、既に十分に普及してマイナーの数も十分に確保されて報酬も支払われるビットコインなどの仮想通貨に係るチェイン、立ち上げから間もなく、マイナーの数も少ないことから悪意の攻撃者によるフォークのリスクがある仮想通貨に係るチェイン、さらには、仮想通貨ではなくマイニングよる報酬が支払われないチェインが含まれる。
【００６１】
参加者にはビットコインのマイニングよる報酬を分配しつつ、空き時間には無報酬のマイニング作業や新規な仮想通貨のマイニング作業参加してもらうことが可能である。
従って、本発明によれば、新規にブロックチェインを用いた仮想通貨を立ち上げる場合や、仮想通貨以外のブロックチェインについて、正当なマイニングを行うクライアント装置による十分な規模の演算資源を容易に確保することが出来る。
【００６２】
その一方で、仮想通貨のマイニングを行う場合には、複数のブロックチェインシステムの中から、最も報酬効率の良いブロックチェイン（仮想通貨）を決定して、ブロック情報等をクライアント装置に送信する。
このようにすることで、特定の仮想通貨のマイニングのみをマイニングする場合に比べて、参加者の利益を最大化することが出来るため、参加者のモチベーションを高め、正当なマイニングを行うクライアント装置による十分な規模の演算資源をより確保しやすくなる。
また、本実施形態の分散処理サーバに接続するクライアント装置が増加することで、新たにプライベートチェインを立ち上げたい事業者等に有用な演算リソースを提供し得る。
【００６３】
上記に説明したように、本実施形態において、分散処理サーバ（マイニングサーバ）１０は、複数の異なるデータソース（ブロックチェイン）からデータを取得可能であり、所定の条件に基づいて、複数のデータソース（ブロックチェイン）のうち一のデータソース（ブロックチェイン）を決定する。
そして、決定したデータソースから取得した対象データ（ブロックデータ）と、対象データに応じたデータ処理方法（ハッシュ関数の指定）と、を少なくとも含む情報を各クライアント装置５０に送信する。
クライアント装置５０は、上記の対象データ及びデータ処理方法に基づいてデータ処理を行う。そしえ、クライアント装置５０は、データ処理の結果情報を分散処理サーバ（マイニングサーバ）１０に送信し分散処理サーバ（マイニングサーバ）１０は、結果情報を受信する。
このような構成は、ブロックチェインシステムにおいて用いられるサーバ装置及びクライアント装置に限られることはなく、同様の仕組みを他の分散処理システムに適用することが出来る。
【００６４】
図１３は、本実施形態の分散処理サーバが適用される分散処理システムの他の例を示す図である。
図１３において、本実施形態の分散処理サーバ１０Ｚは、インターネットを通じて、複数の異なるネットワークに接続可能となっている。
例えば、分散処理サーバ１０Ｚは、Ｘ大学のネットワーク２００にルータを介して接続し、外部に公開されたデータベースサーバ２１０から解析用のデータを取得することが出来る。
また、分散処理サーバ１０Ｚは、Ｙ研究所のネットワーク２５０にルータを介して接続し、外部に公開されたデータベースサーバ２６０から解析用のデータを取得することが出来る。
分散処理サーバ１０Ｚは、複数のクライアント装置５０Ｚ（５０Ｚ―１、５０Ｚ−２、５０Ｚ−３）の接続を受容する。
【００６５】
それぞれのデータベースサーバ２１０、デーベースサーバ２６０から取得されるデータは、分散処理を前提とした分割データである。代表的な例としては、ガンや白血病などの疾病の原因となる物質と、その物質の働きを抑える可能性がある物質の相性を演算などによって確かめるものである。
当然、対象となる疾病や物質によってデータの内容や、演算手法も異なる。
【００６６】
参加者は、一般的には、自ら所有するクライアント装置に専用のクライアントソフトウェアをインストールし、クライアント装置を用いてそれぞれのデータベースサーバに個別にアクセスして分割データを取得し、解析に参加する。
それに対して、本実施形態においては、参加者のクライアント装置は、分散処理サーバ１０Ｚに接続する。
分散処理サーバ１０Ｚは、定期的にデータベースサーバ２１０、デーベースサーバ２６０から分割データを取得し、記憶部のデータ記憶部に格納する。
そして、分割処理サーバ１０Ａは、ＣＰＵ１１（対象データ選択処理部）によって、所定の条件に基づいてクライアント装置に送信するデータを決定し、ＣＰＵ１１（解析指示送信処理部）が決定したデータをクライアント装置に送信する処理を行う。
クライアント装置にインストールされるクライアントソフトウェアは、サーバから受信するデータに従って、解析ツールを切り替える機能を有する。
【００６７】
データを受け取ったクライアント装置では、指定された解析手法と分割データに基づいて解析を行い、解析結果情報を分割処理サーバ１０Ａに送信する。
対象データ選択処理部がクライアント装置に送信するデータを決定する基準は、例えば時間帯や、各システムにおける解析の状況などを様々に考慮することが出来る。
以上のように構成することによって、分散処理に参加するクライアント装置を、分割処理サーバ１０Ａに接続させることによって複数のプロジェクトに参加させることができ、演算資源の確保に苦しむプロジェクトにとっての大きな助けとすることが出来る。
【符号の説明】
【００６８】
１０  分散処理サーバ、１１  ＣＰＵ、１２  ＲＡＭ、１３  ＨＤＤ、１４  ネットワークＩ／Ｆ、２０  ブロックデータ受信処理部、２１  通貨情報受信処理部、２２  対象通貨選択処理部、２３  探索指示送信処理部、２４  Ｎｏｎｃｅ受信処理部、２５  Ｎｏｎｃｅ送信処理部、２６  報酬支払処理部、２７  ブロックデータ記憶部、２８  通貨情報記憶部、２７Ａ  ブロックデータ記憶部、２７Ｂ  ブロックデータ記憶部、２７Ｃ  ブロックデータ記憶部、２９  前ブロックハッシュ値記憶部、３０  マイナー装置、４０  プールサーバ、５０  クライアント装置、５１  ＣＰＵ、５２  ＲＡＭ、５３  ＨＤＤ、５４  ネットワークＩ／Ｆ、６０  探索指示受信処理部、６１  探索処理部、６２  Ｎｏｎｃｅ送信処理部
【図１】
2019139691.tif 000003
【図２】
2019139691.tif 000004
【図３】
2019139691.tif 000005
【図４】
2019139691.tif 000006
【図５】
2019139691.tif 000007
【図６】
2019139691.tif 000008
【図７】
2019139691.tif 000009
【図８】
2019139691.tif 000010
【図９】
2019139691.tif 000011
【図１０】
2019139691.tif 000012
【図１１】
2019139691.tif 000013
【図１２】
2019139691.tif 000014
【図１３】
2019139691.tif 000015