Mining Poolは複数のマイナーの作業を調整し、合意したルールで収益を分配するサービスです。自分の機械がブロックを見つける前でも収入を得られます。ただしBitcoinの難易度を下げたり、利益を保証したりはしません。主に変わるのは、作業量の測り方と報酬の受け取り方です。
アンナはマイニング用の機械を1台持っています。電気代は毎日かかりますが、単独で採掘すると、自分のブロックを見つけるまで非常に長く待つかもしれません。ネットワークが受け入れるブロックを見つければ、その報酬を受け取れます。それまでは、この採掘からの収入はありません。長く待ったからといって、成功が近づいたわけでもありません。条件が同じなら、次の試行の成功確率も同じです。 プールに入ると、アンナの機械はほかの機械と一緒に働きます。プールは貢献を測り、決めた報酬モデルを使うため、あるブロックを発見しなかったマイナーにも支払えます。アンナは、自分のブロックの全収益を独占する代わりに、小さくても通常はより安定した収入を選びます。ネットワークの難易度は下がらず、報酬が増えるわけでもありません。通常はプールの手数料もかかります。電気代や機械代を回収できるかどうかは、また別の問題です。 [6] [7]
プールには、アンナの機械が行うすべての計算は見えません。それでも、本当に働いているかを確認し、貢献度を見積もる必要があります。そこでBitcoinネットワークより満たしやすい条件を設定します。その条件を満たす結果がMining Share、略してshareです。ブロックを発見していなくても、機械は検証できる結果を定期的に送れます。 プールは受理したsharesとその難易度から、作業量を統計的に推定します。すべての試行を正確に数えているわけではありません。2台のshare難易度が異なれば、提出数だけを直接比較できません。普通のshareはBitcoinのブロックを作らず、支払いを承認することもありません。まれにネットワークの条件も満たす結果が出るとブロックを提出できますが、ほかの検証にも合格する必要があります。shareはプールに対する作業の証拠であり、機械が作った小さなビットコインではありません。 [7] [9]
同じ機械でも、接続するプールによって報酬の出方が異なることがあります。理由の一つは計算モデルです。PPS、Pay Per Shareは、受理したshareごとに、その難易度に応じて事前に決めた期待値を計上します。アンナはプールが幸運にもブロックを見つけるまで待つ必要がありません。発見数の偶然のばらつきは運営者が引き受けます。ただし、運営者の支払い能力や固定時給が保証されるわけではありません。shareの数や採掘条件は変わります。 FPPS、Full Pay Per Shareは通常、新規発行されるビットコインの期待持分に、推定した取引手数料を加えます。一方PPLNS、Pay Per Last N Sharesは、実際に見つかったブロックの収益を、決められた直近の範囲内の作業量に応じて分けます。そのため、報酬はプールの運により強く左右されます。この範囲はプールのルールで決まり、単純に直近1時間とは限りません。 略称だけでは比較できません。手数料、推定方法、対象範囲、主たる履歴に残らないStale Blockの扱いも重要です。報酬モデルは受け取る権利と金額の計算を決めます。ウォレットへ送金する時期は別のルールです。 [7] [8]
アンナのアカウント残高が増えていても、自分のウォレットへ届くまでは、正しく記帳して支払ってくれることをプールに頼っています。支払い時期、最低金額の有無、手数料、送金先アドレスを知っておく必要があります。サービスごとにルールは異なり、報酬の自動計上は即時送金を意味しません。 運用状況も確認します。受理・拒否されたshares、Share Difficultyと呼ばれる難易度、サーバーの稼働状況、予備の接続先などです。Firmwareはマイナーを制御するソフトウェアで、プールと連携できなければなりません。ある程度長い期間のプール記録を、自分の運転記録や実際の入金と比較すると、不一致を見つけやすくなります。発見したブロックはブロックチェーンで確認できますが、プールの内部会計すべてが見えるわけではありません。プールを変更できることや、誰が取引を選ぶのかを知ることも重要です。 [8] [9]
結果が届く前に作業が切り替われば、プールがその結果を計上しない場合があります。ここでいうレイテンシーは、機械とプールの通信の遅れです。 Share は古い(stale)、重複、不正な形式、割当ジョブとの不一致などを理由に拒否されます。マイナーとプール間の遅延、ジョブ更新の遅れ、ネットワーク障害は無駄になる作業を増やします。Stale shares の割合は接続の運用効率を示すもので、ブロックチェーンの Stale Block とは異なります。 [9]
ブロック報酬は Coinbase Transaction という特別な最初の取引に記録されます。その出力には金額と、後でその資金を使うための条件が記されています。報酬の受取先は一つとは限らず、複数に分けることもできます。 Block Templateは選択した取引を含むブロック案です。 従来型のプールでは通常、運営者が Block Template を構築し、coinbase 出力の受取先も決めます。マイナーは主に割り当てられた作業の中でさまざまな値を試し、ネットワークの条件を満たす結果を探します。プールはトランザクション選択に影響できますが、無効なブロックを強制的に受け入れさせることはできません。各 Full Node が独立にブロックを検証します。Full Node は、ビットコインのルールに従ってブロックと取引を検証するプログラムです。 [6] [10]
報酬額だけでなく、どの支払いをブロックに入れるかを誰が決めるのかも重要です。特定の取引を除外すると、承認が遅れることがあります。 プールの集中は、少数の調整者がトランザクションの取り込み、ソフトウェア導入、短期的な Hashrate 分布に影響し得る点で重要です。Hashrate は毎秒行う採掘計算の回数です。ただしプールの Hashrate は採掘機器の所有権と同義ではありません。採掘専用の機械である ASIC の運営者は、接続先を別のプールに変更できます。プールの切替費用、契約、ファームウェアがその能力を制限するとリスクが高まります。 [6] [10]
Stratumはマイナーとプールの通信ルールです。暗号化は送信中のメッセージを守り、認証は通信相手の確認に役立ちます。 Stratum V1 は採掘作業を割り当て、テンプレートの管理は通常プール側に残ります。Stratum V2 は役割を明確に分け、暗号化と認証を伴う通信をサポートします。任意の Job Declaration Protocol により、マイナーとプールの双方が必要なコンポーネントをサポートする場合、マイナーは自分で選んだトランザクションのテンプレートを提出できます。Stratum V2 の Mining Protocol はこの機能なしでも動作するため、Stratum V2 という表示だけでは独立した選択は保証されません。 [10]
仕組みを詳しく知りたい人向けに説明すると、Block Templateはブロック内容の案です。Workerは接続した機械、または作業を記録するアカウントを示し、ヘッダーはブロックの基本情報を短くまとめたものです。 採掘ジョブは Block Template または同等の候補ブロックの構築に基づきます。BIP22 は getblocktemplate、BIP23 はプール採掘向けの拡張を規定します。プールのプロトコルは必要なフィールド、coinbase トランザクションのデータ、探索空間をワーカーに渡します。ASIC Miner はさまざまなヘッダーを試し、その数値の指紋にあたるハッシュを計算します。計算の仕事を行った証拠である Proof of Work を満たすには、このハッシュがネットワークで定めた target という上限値以下でなければなりません。ブロックはビットコインのほかのルールにも従う必要があります。 [1] [2] [5]
技術的には、targetはハッシュ、つまり計算結果が超えてはいけない数値の上限です。同じ値でも条件を満たします。VarDiffはshareの難易度を変える仕組みです。 プールは測定に十分な頻度で結果を受け取るため、達成しやすい share ターゲットを設定します。Bitcoin ネットワークのターゲットははるかに厳しい条件です。プールのターゲットのみを満たした share は、受理されればプールの報酬ルールに従って計上されます。同じハッシュがネットワークのターゲットも満たせば、候補ブロックを提出できます。VarDiff が変えるのは share の難易度と頻度であり、Bitcoin のコンセンサス上の Difficulty ではありません。 [9]
理解を深めるには、この項目とあわせて次もお読みください マイニング, Hashrate, Braiins Pool, Stratum V2, Mining Share, Pay Per Share. 次の項目からも参照されています コインベース取引, ASIC Miner, Hashrate, Nonce.