Bitcoin の Proof of Work は、ブロックヘッダーの二重 SHA-256 ハッシュが目標条件を満たすことを示します。難易度は試行回数の期待値を表し、正確な消費電力や取引の有効性ではありません。
Proof of Work は電気代の支払い証明でも、ブロックの有効性証明でもありません。ノードはヘッダーハッシュの数値が nBits に符号化された目標を超えないことを確認します。検証は安価ですが探索は確率的で、目標が低いほど平均試行回数が増えます。 [Bitcoin whitepaper] [Bitcoin Core v29.0: Proof of Work]
ASIC はヘッダーの4バイトの nonce を使い切っても成功しないことがあります。その場合、ソフトウェアは coinbase 取引の extra nonce などを変更します。これにより Merkle Root と次に探索するヘッダーが変わります。採掘は一つの数値を無限に増やすだけではありません。 [Bitcoin Developer Guide: Mining]
nBits は目標のコンパクトな表現です。小さい目標ほど受理可能なハッシュが少なく、難易度は上がります。演算能力の割合、ゼロの個数、ジュール数を直接表す値ではありません。各試行は独立なので、高い hashrate でも次の発見者は保証されません。 [Bitcoin Core v29.0: Proof of Work] [Bitcoin whitepaper]
ノードは作業量に加え、構造、署名、未使用の入力、coinbase 規則を検証します。実装上の順序について、すべてがハッシュ検証より前だという意味ではありません。目標以下のハッシュでも無効な署名や二重支払いは修復できず、有効な候補でも作業量不足なら活動中のチェーンには入りません。 [Bitcoin whitepaper] [Bitcoin Core v29.0: block validation]
有効な分岐が競合すると、ノードは長さだけでなく各目標から算出する累積作業量を比較します。確認済み履歴の改変には別の有効なブロックを作り、増え続ける正直な分岐の作業量に追いついて超える必要があります。これは経済的・確率的な障壁で、即時の不可逆性ではありません。 [Bitcoin whitepaper] [Bitcoin Core v29.0: chainwork]
mainnet では Bitcoin Core が難易度期間の境界で目標を変更します。観測期間を予定期間と比較し、計算に使う観測期間を予定の4分の1から4倍に制限し、新目標にも mainnet の上限を適用します。BTC 価格、ノード数、採掘者の投票で決まる計算ではありません。 [Bitcoin Core v29.0: Proof of Work]
プールは貢献度の推定用に、より容易な内部 share 目標を設定できます。通常の share はネットワーク目標を満たさず、ブロックチェーンには入りません。ネットワーク目標を満たす場合は別で、プールが完全な候補ブロックを配信し、独立したノードが受理を判断します。 [Bitcoin Developer Guide: Mining]
自分のノードや公開データでヘッダーハッシュ、bits、目標、高さ、chainwork を比較できます。ただし成功したハッシュだけでは正確な消費エネルギー、実際の採掘者の身元、所在地は分かりません。安全性の主張には支払額、確認数、正直な作業量が優勢という前提が必要です。 [Bitcoin Core v29.0: Proof of Work] [Bitcoin whitepaper]
理解を深めるには、この項目とあわせて次もお読みください ビットコイン・マイニング, 難易度調整, Timechain / Blockchain, Full Node, ブロック報酬の新規発行分. 次の項目からも参照されています Bitcoin, Satoshi Nakamoto, Bitcoin Whitepaper, Timechain / Blockchain.
01Bitcoin に Proof of Work が必要なのはなぜですか?+
Proof of Work は、独立したノードが競合する有効な履歴を客観的に比較する方法を提供します。履歴を置き換えるには、その作業をやり直し、競合する分岐に追いつく必要があります。累積作業量による選択には、中央の時計も投票者名簿も不要です。