マイニングプールの概要

Bitcoinでは、コンセンサスメカニズムに参加するためには暗号パズルを解くことが必要とされる。このパズルを解いたマイナーはリーダーになりブロックを生成することができる。

PoW難易度(Difficulty)は10分になるようにおよそ2週間ごとに変動するため、コストの影響を回避するために、ソロマイナーは供託してマイニングプールを形成し、貢献度に基づいて報酬を分配することが最適戦略とされている。つまりマイニングプールとは、Bitcoinブロック生成作業を複数のノードで分担する分散コンピューティングといえる。

現在、ソロマイナーに生成されたブロック割合はほぼ無視できるほどに減少した。一方、Bitcoinのマイニングプールでは、BTC.com, ViaBTC, AntPoolが過半数のハッシュレートを占めている。マイニングプール間による競争激化により、サービス妨害攻撃、Block withholding、スパイマイニングなどのいくつかの攻撃も考えられた。

マイニングプールにおける貢献度を可視化するために、まずマイニングプールオペレータがネクストブロックのためのテンプレートをマイナーに配布し、PoWソリューションを提出させる。その部分的ソリューションを「シェア」としてマイナーの貢献度の尺度に用いる。

コンピューティングタスクの分担

マイナーの貢献度を計測するために、プール管理者は簡単なパズルを解かせる。このパズルの解をpartial solutionという。マイナーがpartial solutionを提出すると、自分のシェアを入手できる。

計算タスク分配は以下のステップで行われる。

  1. プール管理者はブロックヘッダを作成する。
  2. プール管理者は、マイナーごとに特定範囲のnonceを割り当てたハッシュ生成タスクを作成する。
  3. マイナーがnonceを発見した場合、その結果をpartial solutionとしてプールに送信する。プールサーバーは提出されたsolutionが有効かチェックする。
  4. solutionがブロックヘッダのチェックもパスした場合、full solutionとしてブロックを提案する。

スクリーンショット 2024-04-18 13.32.35.png

基本的に、一度partial solutionを提出したら終わりでなく、別範囲のnonceに設定された計算が新たに依頼され、同様に計算を繰り返す。

報酬分配メカニズム

マイナーのシェアに基づいて報酬を分配するが、シェアの計算アルゴリズムにはいくつかの種類が挙げられる。このアルゴリズムの調整により、ゲーム理論的にマイナーがpartial solutionを早期かつ継続的に提出する傾向にあるか決まる。

報酬分配パターン