DMMエンジニアによるブロックチェーン講座
マイニングプールとは
基本の仕組みとブロックチェーンとの関わりについて解説
2018年11月23日 00:00
現在、暗号通貨の報酬(コイン)を得る手段として「マイニングプール」という仕組みが利用されています。マイニングプールの仕組みは、ディフィカルティを維持しつつ、より多くの人にコインを配布する仕組みであり、コインの価値を高める一助となっています。
本稿では、Proof of Work(PoW)、マイニングプール、プロトコルの仕組みについてそれぞれ解説します。
はじめに
昨今、暗号通貨が広く知られたことによって、計算機上で特定のマイニングソフトウェアを動かしておくだけで、報酬のコインを獲得することができるということも知られるようになりました。
その報酬のコインを得る手段として「マイニングプール」という仕組みが広く利用されているということをご存じでしょうか。今では採掘難易度の高騰によりマイニング報酬のほとんどは、マイニングプールを通じて得られていると言っても過言ではありません。
この連載では、DMMクリプトマイニング事業部のエンジニアでもある筆者が、マイニングプールの仕組みや問題点、運用方法などについて余すことなく解説します。
本稿では、暗号通貨やブロックチェーン、マイニングなどに興味があり、ある程度ブロックチェーンの概要を理解されている方を対象にマイニングプールの仕組みと、ブロックチェーンとの関わりについて説明したいと思います。
前回は、マイニングプールの仕組みとブロックチェーンにおける役割について説明をしました。今回は、実際にマイニングプールを選び、接続してから報酬を得るまでのプロセスを紹介しながら、その仕組みについて解説します。
マイニングやProof of Work(PoW)の仕組みとブロックチェーンとの関わりついては、前回の記事を参照してください。
リグを選ぶ
マイニング、およびマイニングプールに参加するためには、マイニングを行う計算機が必要になります。通常の計算機(いわゆるパソコン)でもマイニングを行うことはできますが、非常に効率が悪いため、通常マイニングを行う場合は、専用の計算機を使用します。この専用の計算機は、実際にマイニングによって金を掘る掘削機になぞらえて「リグ」(掘削機の先端にとりつける櫓)と呼ばれています。
マイニングのリグに必要な能力は、ハッシュをいかに短い時間で大量に生成することが出来るかというただ1点に絞られます。この能力に特化したリグはASIC(Application-Specific Integrated Circuit)と呼ばれています。ちなみに、BitcoinではSHA-256ハッシュ(ハッシュ関数のアルゴリズム)を計算する能力を指します。暗号通貨によっては、SHA-256よりも複雑な計算を必要とするハッシュアルゴリズムを採用し、単純な計算を得意とするASICではマイニングできないようにしている暗号通貨もあります。このような特性は「ASIC耐性」と呼ばれています。
代表的なASICには、Bitmain社が開発、販売しているAntminerなどが挙げられます。
リグにより対応するハッシュアルゴリズムが異なるため、リグを用意する時点でどの暗号通貨をマイニングの対象にするか決めておく必要があります。
マイニングプールを選ぶ
マイニングプールの選定でもっとも重要な指標に「ハッシュパワー」があります。
ハッシュパワーとは、その一定の範囲(ブロックチェーン全体、マイニングプール、単体のリグなど)において、一定時間内にどれだけのハッシュが生成することができるかを示す数値です。
マイニングでは、より多くのハッシュを生成すればするほど、報酬のコインを採掘できる確率が高くなります。
つまり、マイニングプールにおいては、プール全体のハッシュパワーが大きければ大きいほどそのマイニングプールで採掘できるコインは多くなります。後述しますが、基本的にはどの報酬計算方式においてもマイニングプールが採掘できるコインが多ければ多いほど、プールに接続するリグが報酬を得る機会は多くなります。
つまり、マイニングプールにおいても、プール全体のハッシュパワーが高いマイニングプールに接続するのが多くの報酬を得るために最適な選択肢なのです。
マイニングプールに接続する
マイニングプールへの接続には、マイニングの報酬を受け取るためのウォレットアドレスが必要になります(さらに、マイニングプールによっては接続するためのアカウントの作成が必要になる場合があります)。
リグのウォレットアドレスや、プールの接続情報は通常リグの管理画面を通して設定します。
マイニングプールのサイトには、プールに接続するためのURLが記載されています。例えば、「btc.com」などでは、下記のURLに記載があります。
https://pool.btc.com/helpCenter?id=miner
ここに書かれている「stratum」のスキームで始まるURLを、リグの管理画面に入力します(このURLにある「stratum」は前回説明した「Stratum protocol」を使用していることを示しています)。
設定を保存し、リグを再起動すると自動的にマイニングプールへの接続とマイニングを開始します。
マイニングプールからの報酬
マイニングプールの報酬の計算方法は数多くありますが、ここでは、代表的なPPS・FPPSとPPLNSについて説明します。
PPSはPay Per Shareの略であり、その名の通りシェア毎にマイニングプールの運営者から各リグに報酬を支払うという計算方式です。「シェア」とは、ある特定のブロックに対して生成した一定量のハッシュの量、つまり、リグがブロックチェーンの承認作業に対して行った仕事の量を指します。
PPSは簡易的には次のような式で計算されます。fはマイニングプールによる手数料、Bはブロックリワード、pはブロックチェーンのディフィカルティ分の1を表します。
PPSでは、報酬はマイナーがシェアを送るたびに計算され、ブロックチェーンの全体のディフィカルティをもとに算出されます。各マイナー(リグ)への報酬はマイニングプールが採掘したコインやマイニングプールの運営者から支払われます。
つまり、マイニングプールの運営者にとってPPSは、マイニングプールから何も採掘されない場合でも、接続してシェアを送り続けているリグがいる限り、報酬は支払い続けなければならないというリスクのある報酬の支払い方法です。
そのため、PPSは大きなハッシュパワーを持ち、コインの採掘量や資金に余裕のある規模の大きいマイニングプールでしか採用できない報酬の支払い方法なのです。
FPPSはPPSに加えて、トランザクション手数料も報酬として各リグに支払う計算方式です。
PPLNSはPay Per Last N Sharesの略であり、Proportional(均等払い形式。ブロックに対するプールに送られたシェアの割合で均等に支払う)に近い報酬の計算方法なのですが、ラウンドの最後からN個のシェアのみを報酬の算定範囲にすることがProportionalと異なっています。
「ラウンド」とは、マイニングプールにおいてブロックがジョブとして各リグに配信されてから、ブロックが(マイニングプールによって)承認されるまでの期間のことを指します。
PPLNSは簡易的には次のような式で計算されます。fはマイニングプールによる手数料、aはブロックリワードにラウンド数を乗算したもの、u0はマイナーが提供した算定範囲におけるシェア、後は、N個のシェアにおけるマイナーが提供したシェアの割合をラウンドのシェアの合計で除算し、さらにラウンドの平均ウインドーサイズ(X)で除算したものです。
PPLNSでは、報酬はラウンドが終了した時点で計算され、そのラウンドに対するシェアをもとに算出されます。
なぜProportionalではなくこのような計算方法が必要なのでしょうか。
Proportionalの場合、接続を一定時間行っていれば必ず報酬がもらえるので、マイニングプールのハッシュパワーの上下によって、次々とよりハッシュパワーの高い別のプールへ接続を切り替えるPool Hoppingを行ったほうがより多くの報酬を得られる確率が高くなります。
マイニングプールの運営者にとっては、自分のプールに長く接続してもらい、継続してシェアをプールに提供してもらいたいので、PPLNSのような方式を採用しPool Hoppingを防ぐ仕組みが必要なのです。
また、先程のPPSとは違い、PPLNSはラウンドを報酬を計算する単位としているため、報酬を計算する前にはマイニングプールによってブロックが承認されていること、つまり、マイニングプールがブロックリワードを受け取っていることが前提となります。
よって、マイニングプールの運営者はブロックリワードが発生しない間は報酬を支払う必要がないため、比較的資金やハッシュパワーに余裕のない規模の小さなマイニングプールでも採用しやすい報酬の支払い方法です。
報酬の計算方法についてさらに知りたい場合は、下記のURLを参照してください。文中の式もこの資料から参照しています。
おわりに
2回にわたりマイニングプールの仕組みについて説明をしてきました。
マイニングプールがブロックチェーンの仕組みの鍵を握る重要な部分として存在していることが理解いただけたかと思います。
マイニングプール、ブロックチェーンは、これまで説明した通り、暗号通貨が価値を持つことによってその均衡が保たれています。そして、その均衡を保つために多くの人々が参加するよう、エコシステムからプロトコルの仕様まで設計された、送金というただ1つの目的のための分散システムです。
この分散システムは、ただ1つの強大な権威によって占有されていても、ごく小さなコミュニティで運営されていても意味を持ちません。ブロックチェーンの仕組みは、プロトコルや承認形式に関わらず、決して永久的なものでも非中央集権的なものでもなく、人々の「動機」を利用し、それによって支えられているシステムなのです。