本文へ移動

Bitcoinマイニング:ブロックテンプレート、プルーフ・オブ・ワーク、プール、採算

Bitcoinマイニングは候補ブロックを構築し、ネットワークターゲット以下のプルーフ・オブ・ワークを得るためSHA-256dヘッダー空間を探索する。テンプレート識別、取引とcoinbaseの有効性、nonceとextranonce探索、フルノード検証、伝播、ステールリスク、プールシェア、支払規則、難易度、エネルギー、採算を分けて分析する。

更新日

プロトコルとマイニングを学ぶための分析であり、投資または事業運営の助言ではありません。結果はランダムで、ネットワーク規則、難易度、手数料、プール条件、稼働率、機器、電力、資金調達、税務、市場価格に左右されます。予想収益やハッシュシェアは、ブロック、支払、利益を保証しません。

要点

Bitcoinマイニングとは、有効な候補ブロックを構築し、その80バイトヘッダーをSHA-256dで反復ハッシュして、数値がコンセンサスターゲット以下の結果を探す処理である。成功したマイナーはブロックを提案するだけである。無効な取引を有効にしたり、プロトコル外の真偽を決めたり、他人のコインを支配したりはできない。各フルノードが作業証明、ヘッダー、取引、スクリプト、使用済み出力、ブロック制限、許容coinbase額を独立検証する。

マイニングノードやプールは getblocktemplate などで候補データを得る。主なフィールドは versionpreviousblockhashtransactionscoinbasevaluetargetbitsheightweightlimitsigoplimit である。テンプレートはポリシーで選ばれた出発点であり、掲載取引の必須採用や、変更したブロックの受理を保証しない。コンセンサス有効性、ローカルmempoolポリシー、手数料選択、プール規則は別の層である。

ハードウェアはヘッダーの変種を探索する。32ビットnonceを使い切ると、ソフトウェアはcoinbaseのextranonceを変えてMerkle rootを再構築し、許される範囲で時刻やバージョンも更新して新しい探索空間を作る。各ハッシュは独立試行である。互換ハッシュレートが増えれば期待成功頻度は上がるが、特定ブロックを予定したり期限内の成功を保証したりはしない。

ソロマイニングは有効ブロックの許容coinbase出力を全て受け取る一方、支払変動が大きい。プールは作業を集約し、容易なシェアターゲットで貢献を推定する。ネットワークターゲットも満たしたシェアだけがブロックになり得る。プールは支払変動を下げても、ネットワーク全体の期待発行量を増やさない。カストディ、テンプレート制御、シェア検証、PPSやPPLNSなどの債務には、別の相手方・集中リスクがある。

マイニングの分析手順

  1. 識別情報と権限を固定する。 chainnetworkclient version、ルール集合、bestblockhash、テンプレート提供者、プール接続先、受取主体、観測時刻を記録する。ノード、構築者、運営者、ファームウェア、施設、機器所有者を分ける。
  2. 候補選択を再現する。 mempoolUTXO set をスナップショットし、取引有効性、依存関係、手数料、weight、署名演算、locktime、witness commitmentを検証する。候補を再構築し、fee rateをコンセンサスとみなさずポリシー選択を説明する。
  3. Coinbaseとヘッダーを照合する。 高さ別補助金、手数料合計、出力、commitment、前ブロックハッシュ、Merkle treeを検証する。可変の nonce、coinbase extranonceMerkle roottimeversion bits を追跡し、制限超過テンプレートを拒否する。
  4. 探索と提出を検証する。 compact targetを復号し、ネットワークのバイト順とハッシュ規則で block_hash <= target を検査する。解を得たら全ブロックを再構成し、submitblock または実運用プロトコルで提出して受理・拒否証拠を残す。
  5. 独立検証と伝播を追跡する。 複数フルノードでヘッダー、取引、スクリプト、coinbase、chainwork検証を比較する。伝播、競合先端、stale・orphan結果、reorg処理を測る。証明発見と正規チェーン残留は別である。
  6. 報酬とプール会計を照合する。 coinbasesubsidy + transaction fees、プール料、準備金、pool targetnetwork target、受理 share、stale share、支払方式、成熟、最低支払、カストディ、相手方エクスポージャーを分ける。
  7. 採算と安全性をストレステストする。 実効レート、稼働率、効率、電価、冷却、人件費、ホスティング、保守、減価償却、資金、税、出力抑制、補助金、手数料、価格、難易度を示す。出塊変動、故障、価格・fee shock、難易度遅延、プール不履行、検閲、集中、reorgを試す。

成果物はブロック提案と計算探索の証拠である。有効性はノードが、どの有効分岐を採るかはfork choiceが、ターゲット変更は所定境界のdifficulty ruleが、必要承認深度はアプリケーションが決める。マイニングはこれらに関与するが代替しない。

計算例

1. Nonceは探索空間の全てではない

80バイトのBitcoinヘッダーには32ビットnonceがあり、2^32 = 4,294,967,296 通りある。200 TH/s なら、この数のヘッダーを試す時間はおよそ次のとおり。

4,294,967,296 / 200,000,000,000,000 = 0.0000214748 seconds

ここで仕事は終わらない。coinbase extranonceを変え、新しいMerkle rootを導出し、許可された他のフィールドも更新して次のnonce空間を作る。ヘッダーnonceを機器の全探索容量とみなすのは誤りである。

2. ソロ変動と電力費

ネットワークが 600 EH/s、実効マイナーが 200 TH/s なら簡略シェアは 200 TH/s / 600 EH/s = 0.0000333333%。1日 144 ブロックとすると期待値は lambda = 144 * 0.000000333333 = 0.000048 blocks/day、平均待機は 1 / 0.000048 = 20,833.33 days。ポアソン近似の日次ゼロブロック確率は P(0) = exp(-0.000048) = 99.9952001152% である。

3.5 kWの機器を1 kWh当たり0.06米ドルで動かす直接電力費は 3.5 kW * 24 * USD 0.06/kWh = USD 5.04/day。冷却、ホスティング、停止、修理、減価償却、資金、税は含まない。期待値は入金時点ではなく、低確率のソロ成功を日次債権として示してはならない。

3. Coinbase会計と成熟

高さに対応する補助金が 3.125 BTC、有効に含めた取引手数料が 0.42 BTC とする。簡略例でcoinbaseが作れる最大価値は 3.125 + 0.42 = 3.545 BTC。超過請求は無効で、過少請求は許されても価値を失う。

Coinbase出力は使用前にコンセンサス上 100 blocks の成熟が必要である。成熟前にstaleになり、後からreorgされる可能性もある。プール画面残高、未成熟coinbase出力、最終外部支払は、カストディと決済リスクが異なる請求権である。

4. プールシェアと支払仮定

同一難易度の受理シェアを仮定し、プール合計が 2,000,000、一人のマイナーが 50,000 なら、記帳割合は 50,000 / 2,000,000 = 2.5%。ブロック価値が3.545 BTC、プール料が 2% なら、例示分配額は 3.545 * (1 - 0.02) = 3.4741 BTC、比例配分は 3.4741 * 2.5% = 0.0868525 BTC となる。

プールターゲットがネットワークより 1,000 倍容易なら、受理シェアがネットワークターゲットも満たす簡略確率は 1 / 1,000。実会計では可変シェア難易度を正規化し、重複・staleを排除し、明示されたPPS、FPPS、PPLNS等の契約を適用し、プール支払の期待値とブロック条件付き収益を分ける。

リスクとレビュー上の誤り

プロトコル・テンプレート上の誤り

  • マイナーが取引を有効にすると述べ、フルノードが候補を独立検証する点を外す。
  • chain、network、fork、tip、client、template provider、poolの識別を混ぜる。
  • mempoolやtemplateをコンセンサス状態、完全な取引集合、確定した将来ブロックとみなす。
  • ancestor、descendant、weight、signature operation、lock、commitmentを無視して個別fee rateだけで選ぶ。
  • subsidy height、included fee、coinbase output、witness commitment、Merkle rootを誤算する。
  • 新しいtip後も古いprevious hash、target、許可外のtimeやversion範囲を探索する。
  • encoding、endianness、algorithmを誤ってheader hashとtargetを比較する。

プール・運用上の誤り

  • 受理pool shareをnetwork-valid blockと同一視し、difficultyを正規化せずshare数を使う。
  • expected hash shareを保証されたblock、revenue、payment dateに変える。
  • pool block shareを恒久的hardware ownershipとし、templateとpayment集中を無視する。
  • stale・rejected share、latency、firmware、temperature、uptime、curtailment、failureを省く。
  • payout method、fee basis、reserve、minimum、maturity、custody、withdrawal、default条件を無視する。
  • 独立受理、伝播、正規選択、reorg確認前に発見ブロックをfinalとする。
  • 認証、変更管理、事故対応なしでcredential、受取address、remote firmwareを再利用する。

経済・安全性上の誤り

  • price、difficulty、fee、power、cooling、labor、depreciation、financing、taxなしでgross BTC期待値をfiat profitと呼ぶ。
  • device efficiency、utilization、cooling、location、time、energy mixなしでhashrateから電力や排出を推論する。
  • difficultyがhashrateへ即応する、または10分ブロックが時刻表どおり到着するとする。
  • halvingがprice上昇、miner capitulation、security spending維持を保証するとする。
  • majority hash powerが署名偽造、任意coin奪取、invalid inflationのnode受理を可能にするとする。
  • 高いaggregate hashrateをpool、manufacturer、firmware、geography、energy、network、software集中がない証拠とする。

よくある誤解

  • マイナーは好きな取引を有効として承認できる。 候補を選び並べるが、コンセンサス違反ブロックは誠実なフルノードが拒否する。
  • Nonceだけが変更可能である。 ExtranonceはcoinbaseとMerkle rootを変え、timeと許可されたversion fieldも探索空間を広げる。
  • プールシェアはブロックの一部分である。 容易なpool targetを満たす作業証拠であり、大半はnetwork targetを満たさずブロックにならない。
  • 期待日収は保証された支払である。 発見はランダムで、支払時期はpool contract、maturity、counterparty履行にもよる。
  • ハッシュレートが高ければ必ず儲かる。 share、difficulty、fee、price、efficiency、power、全費用が結果を決める。

関連トピック

出典

ナビゲーション

Wiki を検索...